Por que o uso de memória em "top" não aumenta?

28

Percebi que, às vezes, quando executo a parte superior , o uso de memória de cada processo na tabela de processos parece não somar o total.

Por exemplo, no despejo abaixo, top diz que estou usando 16 Gb de memória. No entanto, a tabela de processos mostra apenas dois processos usando pouco mais de 520 Mb. Como posso descobrir o que está consumindo os outros 15,5 Gb? (Estou usando o CentOS.)

$ top

top - 12:16:34 até 45 dias, 2:28, 3 usuários, média de carga: 0,24, 0,65, 0,71
Tarefas: 274 total, 1 em execução, 273 em sono, 0 parado, 0 zumbi
Processador (es): 2,3% nos, 0,2% sy, 0,0% ni, 97,5% id, 0,0% wa, 0,0% hi, 0,0% si, 0,0% st
Mem: 16432032k total, 16340144k usado, 91888k grátis, 21736k buffers
Troca: 18481144k total, 1112k usado, 18480032k grátis, 15624488k em cache

  PID USER PR NI VIRT RES SHR% CPU% MEM TIME + COMMAND
18159 jsmith 15 0 260m 31m 4560 S 16,6 0,2 53: 35,64 python
 4795 26 15 0 260m 6608 4220 S 2.0 0.0 0: 00.06 postmaster
    1 raiz 15 0 10344 680 568 S 0,0 0,0 0: 39,36 init
    RT raiz 2 -5 0 0 0 S 0.0 0.0 0: 00.53 migração / 0
    3 raiz 34 19 0 0 0 S 0,0 0,0 0: 00,62 ksoftirqd / 0
    4 raiz RT -5 0 0 0 S 0.0 0.0 0: 00.00 watchdog / 0
    5 raiz RT -5 0 0 0 S 0.0 0.0 0: 02.09 migração / 1
    6 raiz 34 19 0 0 0 S 0,0 0,0 0: 01,32 ksoftirqd / 1
    7 raiz RT -5 0 0 0 S 0.0 0.0 0: 00.00 watchdog / 1
    RT 8 raiz -5 0 0 0 S 0.0 0.0 0: 00.99 migração / 2
    9 raiz 34 19 0 0 0 S 0,0 0,0 0: 01,74 ksoftirqd / 2
   10 root RT -5 0 0 0 S 0.0 0.0 0: 00.00 watchdog / 2
   11 raiz RT -5 0 0 0 S 0.0 0.0 0: 02.16 migração / 3
   12 raiz 34 19 0 0 0 S 0,0 0,0 0: 01,30 ksoftirqd / 3
   13 raiz RT -5 0 0 0 S 0.0 0.0 0: 00.00 watchdog / 3
   14 root RT -5 0 0 0 S 0.0 0.0 0: 01.94 migração / 4
   15 raiz 34 19 0 0 0 S 0,0 0,0 0: 01,78 ksoftirqd / 4
   16 root RT -5 0 0 0 S 0.0 0.0 0: 00.00 watchdog / 4
   17 raiz RT -5 0 0 0 S 0.0 0.0 0: 01.92 migração / 5
   18 raiz 34 19 0 0 0 S 0,0 0,0 0: 01,30 ksoftirqd / 5
   19 root RT -5 0 0 0 S 0.0 0.0 0: 00.00 watchdog / 5
   20 root RT -5 0 0 0 S 0.0 0.0 0: 02.06 migração / 6
   21 raiz 34 19 0 0 0 S 0,0 0,0 0: 01,83 ksoftirqd / 6
   22 root RT -5 0 0 0 S 0.0 0.0 0: 00.00 watchdog / 6
   23 root RT -5 0 0 0 S 0.0 0.0 0: 02.31 migração / 7
   24 raiz 34 19 0 0 0 S 0.0 0.0 0: 01.50 ksoftirqd / 7
   25 root RT -5 0 0 0 S 0.0 0.0 0: 00.00 watchdog / 7
   26 raiz 10 -5 0 0 0 S 0,0 0,0 0: 00,42 eventos / 0
   27 raiz 10 -5 0 0 0 S 0,0 0,0 0: 00,28 eventos / 1
   28 raiz 10 -5 0 0 0 S 0,0 0,0 0: 00,37 eventos / 2
   29 raiz 10 -5 0 0 0 S 0,0 0,0 0: 00,21 eventos / 3
   30 raiz 10 -5 0 0 0 S 0,0 0,0 0: 00,38 eventos / 4
   31 raiz 10 -5 0 0 0 S 0,0 0,0 0: 00,27 eventos / 5
   32 raiz 10 -5 0 0 0 S 0,0 0,0 0: 00,52 eventos / 6
   33 raiz 10 -5 0 0 0 S 0,0 0,0 0: 00,64 eventos / 7
   34 raiz 10 -5 0 0 0 S 0,0 0,0 0: 00,00 khelper
del
fonte

Respostas:

26

Nas linhas relacionadas ao uso de memória na parte superior:

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

Vamos ignorar a troca. A memória total é igual à soma da memória usada e livre. Usado, por outro lado, é a soma de "realmente usado por aplicativos" e em cache e buffers. Então, no seu caso, é assim:

  • Mem = 16432032k = 16340144k + 91888k;
  • "Realmente usado por aplicativos" = Usado - (em cache + buffers) = 16340144k - (15624488k + 21736k) = 693920k.

Os outros 15,5 GB são armazenados em cache. Isso melhora o desempenho. No entanto, no momento exato em que um aplicativo requer parte da memória em cache, ele é imediatamente entregue a ele. Você notará isso se executar algum aplicativo e monitor com fome de memória top.

grs
fonte
1

Essa lista não parece 274 totalprocessos para mim. Top geralmente exibe apenas o que se encaixa no seu terminal / tela. Use em ps auxvez disso e adicione o rssvalor (ou qualquer coluna de memória residente exibida por sua versão).

Você também não deseja adicionar o tamanho da memória virtual, parece que realmente está interessado na REScoluna resident ( ).

Daniel Beck
fonte