Qual è la differenza tra il rapporto sull'utilizzo della memoria in System Monitor e quello gratuito?


14

Sto usando System Monitor 2.28.0. Quando guardo nella scheda Risorse, vedo un bel grafico con memoria e scambio. La memoria è di circa il 60% 2,3 GiB di 3,8. Quando digito il comando gratuitamente, ottengo:

             total       used       free     shared    buffers     cached
Mem:       3994908    3962396      32512          0     100852    1477032
-/+ buffers/cache:    2384512    1610396
Swap:      8000328      28468    7971860

cat / proc / meminfo | grep MemFree dare

MemFree:           34536 kB

La situazione è rimasta in salvo per diversi minuti. Ho iniziato molto con uno script e lo script sta aspettando che la memoria libera si riduca. Secondo quanto sto vedendo nella scheda Processo (o in alto), il numero in System Monitor sembra molto chiuso al totale della memoria del processo che quello riportato gratuitamente.

Grazie

Risposte:


15

La differenza è se i "buffer" e la memoria "cache" sono o meno inclusi nel conteggio "usato".

Generalmente, la memoria di sistema Linux viene utilizzata dal kernel per due scopi: processi e file / cache di rete / buffer. Se osservi attentamente l'output di free, è già mostrato:


             total       used       free     shared    buffers     cached
Mem:       3994908    3962396      32512          0     100852    1477032
-/+ buffers/cache:    2384512    1610396
Swap:      8000328      28468    7971860

Se aggiungi "buffer" e "cache" e quindi sottrali dalla colonna "usato", otterrai la seconda riga sotto "usato" (la riga che inizia con -/+ buffers/cache), che mostra circa 2.3G (2384512) in use, che corrisponde alla memoria segnalata in uso che System Monitor sta segnalando (sta ignorando i buffer / cache perché quelli andranno via per fare spazio a più processi).

Il tuo grep contro /proc/meminfocorrisponde effettivamente alla colonna "libera" della prima riga (32512 è abbastanza vicino a 34536 - probabilmente è cambiato tra i due output di comando).


Grazie, mi chiedo perché il sistema avesse bisogno di 1,5 Gig in cache, ma questo lo chiarisce.
Guillaume Coté,

1
È meno una questione di "bisogno" che di "usato". A quel punto, aveva letto almeno così tanto dal disco rigido e lo aveva tenuto nella memoria di riserva nel caso fosse necessario riutilizzarlo.
Kees Cook,

0

Quando ho messo le mani sul monitor di sistema, l'utilizzo della memoria riportato nella scheda "Risorse" era lo stesso della freecolonna in /usr/bin/free.

Il problema è che la memoria fisica libera è quasi 0, presto o tardi: Linux memorizza nella cache in modo aggressivo, quindi i soldi spesi per l'acquisto di RAM vengono utilizzati in modo efficiente. Ciò significava che il grafico mostrava costantemente> 98% dell'utilizzo della memoria, il che era inutile.

Quindi ho deciso di fare proprio come la -/+ buffers/cache:linea di /usr/bin/free. In questo modo, il grafico è significativo e consente all'utente di guardare l'utilizzo della memoria ~ application / userland anziché lo stato fisico della memoria.

Lo so, questo è un po 'fuorviante, perché la maggior parte (l) utenti non capisce che la memoria fisica libera è uno spreco di denaro e prestazioni. Ho affrontato lo stesso problema sul lavoro: ogni lunedì i server si riavviavano e nella 24h successiva ogni server attivava un avviso di "memoria piena". Quindi ho avuto il calcolo della memoria libera riparato nel software di supervisione proprio come nel monitor di sistema.

L'attuale Solaris ha lo stesso problema: la cache ZFS (ARC) non è inclusa nella memoria libera segnalata da strumenti come i vmstatquali gli amministratori di database stupidi lamentano che "ZFS è male" :)

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.