Cosa significano i diversi contatori di memoria in FreeBSD?


20

top mi dice:

last pid: 64807;  load averages:  0.99,  0.97,  0.92                                          up 189+04:47:22 09:16:17
45 processes:  1 running, 44 sleeping
CPU:  0.4% user,  0.0% nice,  0.2% system,  6.4% interrupt, 93.0% idle
Mem: 222M Active, 2151M Inact, 2008M Wired, 823M Buf, 3499M Free
Swap: 8192M Total, 8192M Free

Munin mostra questo un po 'più chiaramente:

utilizzo della memoria annuale rtr1

Come puoi vedere, il server ha circa 8 GB di RAM. Mi chiedo se posso stipare questa bestia in un server da 2 GB più modesto . Ora so cosa significano attivo e buffer, penso. Ma sono davvero preoccupato per le chiazze di memoria "cablate" e "inattive". Per quanto ne so, quelli non corrispondono a nessun processo esistente.

Nota come la linea verde "attiva" è salita a dicembre: è allora che abbiamo iniziato a usare un demone BGP su questo router. Non capisco esattamente cosa sia successo ad aprile e maggio, ma ricordo di aver fatto un aggiornamento del sistema e di passare a pkgng in quel periodo.

Ecco il router di riserva per il primo, con meno RAM (4 GB):

rtr0 utilizzo della memoria annuale

Sembra che questo vada perfettamente bene con metà della RAM e lasci ancora circa 2 GB gratuiti, il che mi porta a credere che potrei passare a una scatola da 2 GB per questo server, riducendo i costi e la manutenzione ...

Eventuali suggerimenti? Cosa significano i vari contatori di memoria mostrati in alto? Più specificamente, cosa fa:

  • Attivo
  • Inattivo
  • nascondiglio
  • buffer
  • Cablata
  • Gratuito

...veramente meschino? Ho trovato alcuni post che spiegano alcuni aspetti del sottosistema VM e ricordo di avere un "ah-ah!" momento in cui ho capito tutto circa 12 anni fa, ma ho dimenticato. :) Anche il fedele manuale di FreeBSD non ha risposto alla mia domanda ...

Posso effettuare il downgrade a 2 GB?


Ecco la versione Linux di questa domanda (che spiega il freecomando da procps ): linux - utilizzo della memoria reale
Adam Katz

Risposte:


25
  • Active: Memoria attualmente utilizzata da un processo
  • Inactive: Memoria che è stata liberata ma è ancora memorizzata nella cache poiché può essere riutilizzata. Se Freeè necessaria più memoria, questa memoria può essere cancellata e liberata. Questa memoria non viene cancellata prima che sia necessaria, poiché "la memoria libera è memoria sprecata", non costa nulla per mantenere i vecchi dati nel caso in cui siano necessari di nuovo.
  • Wired: Memoria utilizzata dal kernel. Questa memoria non può essere sostituita
  • Cache: La memoria utilizzata per memorizzare nella cache i dati, può essere liberata immediatamente se necessario
  • Buffers: Cache del disco
  • Free: Memoria completamente libera e pronta per l'uso. Inactive, CacheE Bufferspuò diventare libero se sono puliti.

Quindi, puoi semplicemente aggiungere Inactiveal tuo Freeconteggio e considerarlo inutilizzato. Wiredè la memoria utilizzata dal kernel, che include lo stack di rete. in esecuzione netstat -mfornirà un riepilogo dell'utilizzo della memoria da parte dello stack di rete.

Sulla base dei tuoi grafici, a parte il relativo salto di wiredmemoria all'inizio di marzo, sì, dovresti essere in grado di eseguire quel carico di lavoro su 2 GB di RAM. Se lo fai, considera di eseguire i386 invece di amd64, poiché ogni allocazione di memoria richiederà meno spazio, poiché i puntatori saranno 32 bit anziché 64 bit.


1
Memoria "inattiva" "Non può essere riassegnata ad altri processi", quindi non deve essere considerata "inutilizzata". Vedi wiki.freebsd.org/Memory
humbads

1
Il contatore 'Inattivo' è stato diviso in 2 oggetti separati nel nuovo FreeBSD. 'Inattivo' e 'Lavanderia' (memoria che deve ancora essere scaricata per scambiare o disco prima di poter essere liberata). Spiegazione aggiuntiva qui: lists.freebsd.org/pipermail/freebsd-arch/2016-November/…
Allan Jude
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.