Perché l'utilizzo della memoria in "top" non si somma?


28

Ho notato che a volte quando eseguo top , l'utilizzo della memoria di ciascun processo nella tabella dei processi non sembra sommarsi al totale.

Ad esempio, nel dump in basso, top dice che sto usando 16 GB di memoria. Tuttavia, la tabella dei processi mostra solo due processi che utilizzano poco più di 520 Mb. Come posso scoprire cosa sta consumando gli altri 15,5 Gb? (Sto usando CentOS.)

$ top

in alto - 12:16:34 fino a 45 giorni, 2:28, 3 utenti, caricamento media: 0,24, 0,65, 0,71
Compiti: 274 totali, 1 corsa, 273 dormienti, 0 fermati, 0 zombi
Cpu (s): 2,3% us, 0,2% sy, 0,0% ni, 97,5% id, 0,0% wa, 0,0% hi, 0,0% si, 0,0% st
Mem: 16432032k totali, 16340144k usati, 91888k liberi, 21736k buffer
Swap: 18481144k totali, 1112k usati, 18480032k gratuiti, 15624488k memorizzati nella cache

  PID UTENTE PR NI VIRT RES SHR S% CPU% MEM TIME + COMANDO
18159 fabbro 15 0 260m 31m 4560 S 16.6 0.2 53: 35.64 pitone
 4795 26 15 0 260m 6608 4220 S 2.0 0,0 0: 00.06 direttore delle poste
    1 radice 15 0 10344 680 568 S 0,0 0,0 0: 39,36 init
    2 radice RT -5 0 0 0 S 0,0 0,0 0: 00,53 migrazione / 0
    3 radice 34 19 0 0 0 S 0,0 0,0 0: 00,62 ksoftirqd / 0
    4 radice RT -5 0 0 0 S 0,0 0,0 0: 00,00 cane da guardia / 0
    5 radice RT -5 0 0 0 S 0,0 0,0 0: 02,09 migrazione / 1
    6 radice 34 19 0 0 0 S 0,0 0,0 0: 01,32 ksoftirqd / 1
    7 radice RT -5 0 0 0 S 0,0 0,0 0: 00,00 watchdog / 1
    8 radice RT -5 0 0 0 S 0,0 0,0 0: 00,99 migrazione / 2
    9 radice 34 19 0 0 0 S 0,0 0,0 0: 01,74 ksoftirqd / 2
   10 radice RT -5 0 0 0 S 0,0 0,0 0: 00,00 watchdog / 2
   11 radice RT -5 0 0 0 S 0,0 0,0 0: 02,16 migrazione / 3
   12 radice 34 19 0 0 0 S 0,0 0,0 0: 01,30 ksoftirqd / 3
   13 radice RT -5 0 0 0 S 0,0 0,0 0: 00,00 watchdog / 3
   14 radice RT -5 0 0 0 S 0,0 0,0 0: 01,94 migrazione / 4
   15 radice 34 19 0 0 0 S 0,0 0,0 0: 01,78 ksoftirqd / 4
   16 radice RT -5 0 0 0 S 0,0 0,0 0: 00,00 watchdog / 4
   17 radice RT -5 0 0 0 S 0,0 0,0 0: 01,92 migrazione / 5
   18 radice 34 19 0 0 0 S 0.0 0.0 0: 01.30 ksoftirqd / 5
   19 radice RT -5 0 0 0 S 0,0 0,0 0: 00,00 watchdog / 5
   20 radice RT -5 0 0 0 S 0,0 0,0 0: 02,06 migrazione / 6
   21 radice 34 19 0 0 0 S 0,0 0,0 0: 01,83 ksoftirqd / 6
   22 radice RT -5 0 0 0 S 0,0 0,0 0: 00,00 watchdog / 6
   23 radice RT -5 0 0 0 S 0,0 0,0 0: 02,31 migrazione / 7
   24 radice 34 19 0 0 0 S 0,0 0,0 0: 01,50 ksoftirqd / 7
   25 radice RT -5 0 0 0 S 0,0 0,0 0: 00,00 watchdog / 7
   26 radice 10 -5 0 0 0 S 0,0 0,0 0: 00,42 eventi / 0
   27 radice 10 -5 0 0 0 S 0,0 0,0 0: 00,28 eventi / 1
   28 radice 10 -5 0 0 0 S 0,0 0,0 0: 00,37 eventi / 2
   29 radice 10 -5 0 0 0 S 0,0 0,0 0: 00,21 eventi / 3
   30 radice 10 -5 0 0 0 S 0,0 0,0 0: 00,38 eventi / 4
   31 radice 10 -5 0 0 0 S 0,0 0,0 0: 00,27 eventi / 5
   32 radice 10 -5 0 0 0 S 0,0 0,0 0: 00,52 eventi / 6
   33 radice 10 -5 0 0 0 S 0,0 0,0 0: 00,64 eventi / 7
   34 radice 10 -5 0 0 0 S 0,0 0,0 0: 00,00 khelper

Risposte:


26

Dalle righe relative all'uso della memoria in alto:

Mem: 16432032k total, 16340144k used, 91888k free, 21736k buffers
Swap: 18481144k total, 1112k used, 18480032k free, 15624488k cached

Ignoriamo lo scambio. La memoria totale è uguale alla somma della memoria usata e libera. Usato, d'altra parte, è la somma di "realmente utilizzato dalle applicazioni" e cache e buffer. Quindi, nel tuo caso va così:

  • Mem = 16432032k = 16340144k + 91888k;
  • "Davvero utilizzato dalle applicazioni" = Usato - (memorizzato nella cache + buffer) = 16340144k - (15624488k + 21736k) = 693920k.

Gli altri 15,5 GB sono memorizzati nella cache. Questo migliora le prestazioni. Tuttavia, nel momento in cui un'applicazione richiede parte della memoria cache, le viene immediatamente assegnata. Lo noterai se esegui applicazioni e monitor affamati di memoria top.


1

Quell'elenco non mi sembra un 274 totalprocesso. Top di solito mostra solo ciò che si adatta al tuo terminale / schermo. Usa ps auxinvece e aggiungi il rssvalore (o qualsiasi colonna di memoria residente visualizzata dalla tua versione).

Inoltre, non vuoi sommare la dimensione della memoria virtuale, sembra che tu sia effettivamente interessato alla REScolonna resident ( ).

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.