O que está usando toda a minha memória RAM? Entendendo a saída do topo

2

Eu li um número de top de perguntas de uso de memória, mas não acho que elas respondam isso.

Aqui está a parte mais significativa de uma execução top :

top - 01:11:41 up 4 days,  1:06,  3 users,  load average: 0.00, 0.03, 0.26
Tasks:  86 total,   1 running,  84 sleeping,   0 stopped,   1 zombie
Cpu(s):  0.4%us,  0.4%sy,  0.0%ni, 99.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1022816k total,   986704k used,    36112k free,    11200k buffers
Swap:  1048572k total,   419088k used,   629484k free,   408172k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                         
 2022 django    20   0  463m  87m  688 S  0.4  8.7   0:44.06 redis-server                                    
 6047 django    20   0  106m  25m 3900 S  0.4  2.6   0:16.57 python                                          
 6046 django    20   0 40892  13m 2852 S  0.0  1.4   0:00.14 python                                          
 6887 postgres  20   0 98752 5240 4100 S  0.0  0.5   0:00.60 postgres                                        
 6512 root      20   0 70820 2528 1776 S  0.0  0.2   0:00.03 sshd                                            
 3614 root      20   0 70820 2452 1696 S  0.0  0.2   0:00.03 sshd                                            
 6892 postgres  20   0 99028 2044  720 S  0.0  0.2   0:00.53 postgres                                        
12983 django    20   0 18332 1968 1156 S  0.0  0.2   0:00.06 bash                                            
 3627 joe       20   0 71148 1660  632 S  0.0  0.2   0:00.84 sshd                                            
 6890 postgres  20   0 98752 1640  500 S  0.0  0.2   0:02.59 postgres                                        
 3628 joe       20   0 18056 1588 1056 S  0.0  0.2   0:00.10 bash                                            
 6537 postgres  20   0 18000 1580 1100 S  0.0  0.2   0:00.04 bash                                            
 6893 postgres  20   0 70296 1564  296 S  0.0  0.2   0:00.38 postgres                                        
  708 mysql     20   0  166m 1560  408 S  0.0  0.2   3:08.15 mysqld                                          
 9221 root      20   0 31724 1456 1148 S  0.0  0.1   0:00.01 sudo

Isso indica que 986704k de 1022816k é usado (eu faço isso em cerca de 96%). No entanto, os percentuais dos 3 principais processos somam 12,7%. Algo está usando quase toda a minha memória RAM e não posso dizer o que é. free mostra números semelhantes.

Alguma sugestão de tentar descobrir o que está usando tudo isso?

(Eu noto que há 1 processo zumbi. Poderia ser isso?)

    
por Joe 03.01.2012 / 02:20

2 respostas

7

A resposta curta é que o resto de sua memória é usado para armazenar seus aplicativos em cache.

A resposta longa pode ser encontrada aqui .

    
por 03.01.2012 / 02:22
0

É apenas o que acontece de estar lá, provavelmente os dados são lidos ou gravados no disco. Tornar essa memória livre é uma proposta perdida em muitos níveis:

1) Se os dados forem necessários novamente, e o sistema liberar a memória, ele terá que lê-lo do disco.

2) Tornar a memória livre requer esforço e, se a memória for necessária para outra coisa, o sistema terá que usá-la novamente, duplicando o desperdício. É mais eficiente fazer a transição da memória diretamente de um uso para outro em vez de um passo.

3) A demanda por memória é baixa. Portanto, há pouca necessidade de memória livre.

Portanto, os sistemas operacionais modernos só liberam a memória se não houver absolutamente nada de útil que possa conter nessa memória ou se houver demanda por memória livre. Caso contrário, a memória livre é perdida na memória. Não é como se você usa menos hoje você pode usar mais amanhã.

    
por 03.01.2012 / 05:07