Ubuntu: fuite de mémoire


0

J'ai du mal à trouver d'où cette fuite de mémoire se produit. J'utilise Ubuntu 8.04 LTS sur un Dell XPS M1530. J'ai 3 Go de RAM et je trouve après environ une heure d'utilisation que me montre 2 Go + utilisés. Ce qui est étrange, c’est que lorsque j’additionne les pourcentages de mémoire par PID (top ou ps aux), j’aperçois que je ne devrais utiliser que 20 à 25% de mon RAM disponible.

Cela a attiré mon attention sur le fait que j'ai recommencé à exécuter vmware server. Maintenant, évidemment, l'utilisation de la mémoire vive augmente lorsque je charge une machine virtuelle, mais la mémoire utilisée par VMware ne rend pas compte de l'utilisation de la mémoire que je vois via top ou free. L'arrêt du serveur vmware libère la mémoire qui lui a été allouée, mais je ne parviens toujours pas à localiser l'utilisation de cette RAM. Après un redémarrage complet, bien sûr, la mémoire est correcte, mais très rapidement, elle atteint 60 à 80% d'utilisation, les processus ne semblant en représenter qu'un tiers. Des idées où je devrais chercher plus d'informations sur ce que cela pourrait être?

Réponses:


3

Utilisez-vous votre échange du tout?

Sinon je ne m'inquiéterais pas. Linux aime utiliser la mémoire de réserve pour mettre en cache les blocs de disque.

Si vous êtes convaincu que vous avez réellement une fuite de mémoire, j'examinerai les pilotes que vous utilisez. Les pilotes uniquement binaires sont difficiles à déboguer, je suppose donc qu’ils ont peut-être des fuites.


Eh bien, voici la partie étrange. Il n’utilise pas l’espace de swap, mais il devient extrêmement léthargique, refusant même parfois de charger de nouveaux programmes lorsque la mémoire utilisée est extrêmement importante, sans pour autant basculer dans l’échange. Cela n'a pas beaucoup de sens pour moi, mais merci pour le tuyau.
Keener

On dirait que je n'ai pas pu trouver une véritable fuite de mémoire, alors ce doit être simplement la mise en cache du disque. Merci pour l'aide!
Keener

1

Félicitations, c’est le même "bogue" qui "blesse" les utilisateurs de Windows 7 :) Linux utilise (et le fait depuis au moins 10 ans) la mémoire RAM inutilisée pour mettre en cache des disques et mettre en tampon diverses données. Microsoft a récemment compris que c'était une très bonne idée, et beaucoup de personnes se sont plaintes de cela récemment. Rechercher "windows 7 memory leak" for fun :)


2
Windows Vista, en fait.
Sathyajith Bhat

1

Vérifiez votre "vraie" utilisation de la mémoire avec la commande "free". Notez que linux garde les choses en mémoire le plus longtemps possible, car vous pourriez les utiliser à nouveau. Cela crée une grande utilisation de la mémoire cache / tampon.

Modifier en réponse au commentaire de Keeners:

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

Avez-vous vérifié la ligne "- / + buffers / cache" (dont je doute que vous puissiez le voir clairement en haut), aviez-vous encore très peu d’espace libre dans cette ligne? Parce que, comme vous pouvez le voir dans mon exemple, il s’agit de la "vraie" mémoire libre, alors qu’en première ligne ou en haut, vous ne voyez qu’une valeur inutile et gratuite. Maintenant, je veux juste m'assurer que vous comprenez le résultat, parce que si vous aviez déjà regardé free comme vous l'avez dit, vous auriez vu que vous n'aviez pas de fuite et que votre machine est en cache, comme vous le dites dans votre dernier commentaire sur la solution. .


Free renvoie les mêmes résultats que top comme je le disais plus haut.
Keener

@Keener - avez-vous utilisé l'outil "free" et regardé la ligne "- / + buffers / cache" comme décrit dans l'édition de mon message ci-dessus?
Snies

Oui, j'ai regardé l'outil "gratuit". Le problème était que je ne savais pas que * nix mettait tant de mémoire cache en mémoire cache. J'ai donc supposé qu'il s'agissait d'une fuite de mémoire et je vois maintenant l'erreur de mes hypothèses. Merci pour l'aide!
Keener

1

Vous pouvez essayer la commande ci-dessous pour libérer le cache sans redémarrer le serveur. Vérifiez topavant et après la commande.

echo 1 > /proc/sys/vm/drop_caches
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.