Por que os valores de% MEM no topo não somam a memória total usada?

18

No momento, estou depurando problemas de desempenho com meu VPS e, por isso, estou tentando entender quais dos processos consomem mais memória. Reading top, aqui está o que eu recebo:

Mem:    366544k total,   321396k used,    45148k free,      380k buffers
Swap:  1048572k total,   592388k used,   456184k free,     7756k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                  
12339 ruby      20   0  844m  74m 2440 S    0 20.8   0:24.84 ruby                                                                                     
12363 ruby      20   0  844m  73m 1576 S    0 20.6   0:00.26 ruby                                                                                     
21117 ruby      20   0  171m  33m 1792 S    0  9.3   2:03.98 ruby                                                                                     
11846 ruby      20   0  858m  21m 1820 S    0  6.0   0:09.15 ruby                                                                                     
21277 ruby      20   0  219m  11m 1648 S    0  3.2   2:00.98 ruby                                                                                     
  792 root      20   0  266m  10m 1024 S    0  3.0   1:40.06 ruby                                                                                     
  532 mysql     20   0  234m 4760 1040 S    0  1.3   0:41.58 mysqld                                                                                   
  793 root      20   0  250m 4616  984 S    0  1.3   1:20.55 ruby                                                                                     
  586 root      20   0  156m 4532  848 S    0  1.2   6:17.10 god                                                                                      
12315 ruby      20   0  175m 2412 1900 S    0  0.7   0:07.55 ruby                                                                                     
 3844 root      20   0 44036 2132 1028 S    0  0.6   1:08.22 ruby                                                                                     
10939 ruby      20   0  179m 1884 1724 S    0  0.5   0:08.33 ruby                                                                                     
 4660 ruby      20   0  229m 1592 1440 S    0  0.4   2:55.46 ruby                                                                                     
 3879 nobody    20   0 37428  964  520 S    0  0.3   0:01.99 nginx 

Como você pode ver, minha memória é usada cerca de 90% (que é o meu problema), mas quando você soma os valores de% MEM, ele passa para cerca de 50-60%. A mesma coisa, o RES não chega a ~ 350mb. Por quê? Estou entendendo mal o significado deles?

obrigado

ben
fonte
Eu acho que o top ajusta o número de linhas mostradas com o tamanho da tela, para que todos os processos não fiquem visíveis.
Samik

Respostas:

6

Estou tentando entender qual dos processos consome mais memória.

Isso é simples: rubi !

quando você soma os valores de% MEM, ele chega a cerca de 50-60% apenas

Na verdade, somar as colunas como mostrado gera 69,2% .

  • Como Samik observou, isso certamente não inclui todos os processos em seu sistema - tente colar a saída de top -b -n 1para obter a saída completa em um arquivo e compartilhá-la conosco, para que possamos ajudá-lo melhor.

  • Além disso, o kernel ocupa uma certa quantidade de memória e alguns tipos de VPS (por exemplo, Xen, KVM) reservam alguma memória adicional na inicialização para uso interno. Cole também a saída dmesg.

Para melhores métricas e facilidade de uso, recomendo que você use htop emInstalar htop vez de top, com a opção "Ocultar threads da terra do usuário" ativada:

insira a descrição da imagem aqui

Veja também memtop:

insira a descrição da imagem aqui

ish
fonte
Aqui está a saída principal: paste.ubuntu.com/1055673 e dmesg: paste.ubuntu.com/1055674 O uso do htop me dá uma saída diferente! Eu vejo três dos 22,4% processos MEM, de fato, muitos dos processos são duplicados (mysqld também, muitas vezes). Em qualquer caso, eu como a saída, mais limpa caminho ... legal de Memtop também, eu sou capaz de entender melhor quais dos meus aplicativos Ruby é comer mais memória;)
ben
0

O topcomando linux mostra toda a rammemória usada, não apenas para você, mas também para o sistema. Linux em cachesalgumas áreas do seu disco rígido, a fim de expandir o seu computador. qualquer outro monitor de memória é recomendado.

Alberto Garea
fonte