O que está usando toda a memória na minha VM? Não é o cache de disco

1

Eu tenho um problema em que quando tento construir um projeto realmente grande, minha máquina começa a trocar (vários GB) mesmo que haja muita memória (14 GB, na verdade). Quando executo free , isso mostra que não é o cache de disco:

$ free -m
             total       used       free     shared    buffers     cached
Mem:         12900       6350       6549          0          7         77
-/+ buffers/cache:       6266       6633
Swap:         9211        233       8978

Portanto, 6,3 GB de memória está realmente em uso, mas se eu olhar no topo, classificado por% de uso de memória, nada está usando qualquer memória:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                               
38669 blong     20   0 1282m 378m  42m S    2  2.9   0:50.79 firefox                                               
 1327 root      20   0  365m 126m 4056 S    4  1.0  40:23.94 Xorg                                                  
 2540 blong     20   0 1578m  67m  10m S    2  0.5  21:33.35 gnome-shell                                           
13943 blong     20   0  579m  12m 5604 S    2  0.1   1:07.01 gnome-terminal                                        
30093 blong     20   0  540m 8664 5572 S    0  0.1   0:03.96 icemon                                                
 2558 blong     20   0  362m 5964 1808 S    0  0.0   5:17.44 vmtoolsd                                              
 2526 blong     20   0  672m 5056 2000 S    0  0.0   0:26.81 gnome-settings-                                       
 2546 blong     20   0  354m 3484 2244 S    0  0.0   5:08.96 pulseaudio

Estou sentindo falta de algo?

Reiniciar a VM corrige isso, mas prefiro descobrir o que realmente está acontecendo.

    
por Brendan Long 10.04.2013 / 00:07

1 resposta

1

Trocar não é uma coisa ruim. Neste caso, é provável que seja uma coisa boa. Existe um parâmetro do kernel ( vm.swappiness ) que controla a tendência do kernel de trocar páginas inativas da memória. Ele faz isso para que a RAM possa ser melhor usada para coisas como o cache do sistema de arquivos.

Embora eu geralmente desencoraje ajustar os parâmetros do kernel sem saber o que está acontecendo, você pode desabilitar esse comportamento adicionando vm.swappiness = 0 a /etc/sysctl.conf e executando sysctl -p .

Quanto ao que está usando sua memória, essa não é uma resposta fácil. Há muitas outras coisas além da memória privada do aplicativo e do cache que usarão a memória do sistema. Há outras coisas, como memória compartilhada, memória mapeada e a laje do kernel.

Você pode obter uma grande quantidade de informações sobre o uso de memória do seu sistema olhando /proc/meminfo . Mas não é para os fracos de coração. O sistema VM do Linux é incrivelmente complexo.

    
por 10.04.2013 / 00:37