Ubuntu: vazamento de memória

0

Estou tendo problemas para descobrir de onde está ocorrendo esse vazamento de memória. Estou executando o Ubuntu 8.04 LTS em um Dell XPS M1530. Eu tenho 3GB de ram e eu estou achando depois de cerca de uma hora ou mais de uso top me mostra 2GBs + usado. O estranho é quando eu adiciono as porcentagens de memória por PID, seja de cima ou de ps aux, acho que devo usar apenas cerca de 20-25% da minha memória RAM disponível.

O que me chamou a atenção foi que comecei a executar o servidor VMware novamente. Agora, obviamente, o uso da memória RAM aumenta quando eu carrego uma máquina virtual, mas a memória que a VMware está usando não leva em conta o uso de memória que estou vendo no topo ou livre. Parar o servidor vmware libera a memória que foi alocada para ele, mas ainda não consigo encontrar onde essa RAM está sendo usada. Depois de uma reinicialização completa, é claro, a memória é boa, mas muito rapidamente sobe para 60-80% de uso, com os processos aparecendo apenas para responder por um terço disso. Alguma idéia de onde eu deveria procurar mais informações sobre o que isso poderia ser?

    
por Keener 24.03.2010 / 18:59

4 respostas

3

Você está usando seu swap?

Se não, eu não me preocuparia. O Linux gosta de usar memória sobressalente para armazenar em cache os blocos de disco.

Se você está convencido de que você realmente tem um vazamento de memória, eu investigaria os drivers que você está usando. Drivers apenas binários são difíceis de depurar, então eu esperaria que eles tivessem vazamentos.

    
por 24.03.2010 / 19:03
1

Parabéns, é o mesmo "bug" que "magoou" os usuários do Windows 7 :) O Linux usa (e fez isso pelo menos nos últimos dez anos) a RAM não utilizada para armazenar em cache os discos e armazenar vários dados em buffer. A Microsoft recentemente percebeu que é uma ótima idéia, e muitas pessoas reclamaram disso recentemente. Procure por "windows 7 memory leak" para se divertir:)

    
por 24.03.2010 / 19:12
1

Verifique seu uso de memória "real" com o comando "free". Note que o linux mantém coisas na memória o maior tempo possível, já que você pode usá-las novamente. Desse modo, ele cria um grande uso de memória cache / buffer.

Editar em resposta ao comentário dos Keeners:

             total     used     free   shared  buffers   cached
Mem:       4058084  3974976    83108        0    89152  3520952
-/+ buffers/cache:   364872  3693212
Swap:      2040212   157048  1883164

Você verificou a linha "- / + buffers / cache" (que eu duvido que você possa ver isso claro no topo), você ainda tem muito pouco espaço livre nessa linha? Porque, como você pode ver no meu exemplo, essa é a memória livre "real", enquanto na primeira linha ou no topo você vê apenas um valor bastante inútil de graça. Agora eu só quero ter certeza que você entende a saída, porque se você já olhou de graça como você disse, você teria visto que você não tem um vazamento e sua máquina está apenas fazendo cache como você diz no seu comentário final para a solução .

    
por 24.03.2010 / 19:03
1

Você pode tentar o comando abaixo para liberar o cache sem reiniciar o servidor. Verifique com top antes e depois do comando.

echo 1 > /proc/sys/vm/drop_caches
    
por 26.07.2011 / 22:20