free
indique que 1,5G a été utilisé RAM (8G RAM, Ubuntu 12.04 avec lightdm et le bureau plasma, une fenêtre konsole étant ouverte). Ayant les applications en cours d'exécution que j'utilise, il ne consomme toujours pas plus de 2G. Cependant, si le système fonctionne pendant quelques jours, de plus en plus de mon RAM libre disparaît - sans apparaître dans la liste des applications utilisées: alors que smem --pie=name
rapporte moins de 20% d’utilisations (et 80% d’entre elles étant disponibles), ), tout le reste dit différemment. free -m
, par exemple, indique le jour 7 environ:
total used free shared buffers cached
Mem: 7459 7013 446 0 178 997
-/+ buffers/cache: 5836 1623
Swap: 9536 296 9240
(pour que vous puissiez voir, ce ne sont pas les tampons ou le cache). Aujourd'hui, cela s'est finalement terminé avec le crash complet du système: le gestionnaire de fenêtres avait disparu, des applications "suspendues dans les airs" (sans cadre) et une fenêtre contextuelle m'avertissant de "trop de fichiers ouverts". Rapports Syslog:
kernel: [856738.020829] VFS: file-max limit 752838 reached
J'ai donc fermé les applications que je pouvais fermer et j'ai tué X à l'aide de Ctrl-Alt-backspace. X a ensuite essayé de revenir avec failSafeX, mais n'a pas réussi à le faire car il ne pouvait plus détecter sa configuration. Alors je suis passé à une console en utilisant Ctrl-Alt-F2, j'ai capturé toutes les informations auxquelles je pouvais penser (vmstat, free, smem, proc/meminfo
, lsof, ps aux
) et j'ai finalement redémarré. X est encore venu avec failSafeX; cette fois, je lui ai dit de "récupérer de ma configuration sauvegardée", puis je suis passé à une console et utilisé avec succès startx
pour faire apparaître l'environnement graphique.
Je n'ai aucune idée réelle de la cause de ce problème - bien que cela doive avoir à voir soit avec X lui-même, soit avec certains processus utilisateur exécutés sous X - car après la suppression de X, la sortie free -m
ressemblait à ceci:
total used free shared buffers cached
Mem: 7459 2677 4781 0 62 419
-/+ buffers/cache: 2195 5263
Swap: 9536 59 9477
(~ 3,5 Go en cours de libération) - à comparer avec la sortie après un nouveau départ:
total used free shared buffers cached
Mem: 7459 1483 5975 0 63 730
-/+ buffers/cache: 689 6769
Swap: 9536 0 9536
memstat -u
fournit deux autres sorties utiles. Peu avant l'accident:
User Count Swap USS PSS RSS
mail 1 0 200 207 616
whoopsie 1 764 740 817 2300
colord 1 3200 836 894 2156
root 62 70404 352996 382260 569920
izzy 80 177508 1465416 1519266 1851840
Après avoir tué X:
User Count Swap USS PSS RSS
mail 1 0 184 188 356
izzy 1 1400 708 739 1080
whoopsie 1 848 668 826 1772
colord 1 3204 804 888 1728
root 62 54876 131708 149950 267860
Et après un redémarrage, de retour dans X:
User Count Swap USS PSS RSS
mail 1 0 212 217 628
whoopsie 1 0 1536 1880 5096
colord 1 0 3740 4217 7936
root 54 0 148668 180911 345132
izzy 47 0 370928 437562 915056
Edit: Je viens d'ajouter deux graphiques de mon système de surveillance. Intéressant à voir: chaque fois qu’il y a un "saut" dans la consommation de mémoire, les pics de processeur aussi. Je viens juste de le trouver maintenant - et cela me rappelle un autre indicateur pointant vers X lui-même: Souvent, lorsque je retournais sur ma machine pour déverrouiller l’écran, je trouvais que quelque chose s’avérait très lourd sur mon processeur. En vérifiant avec top
name__, il s’est toujours avéré être /usr/bin/X :0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch -background none
.
Donc, après cette longue explication, enfin mes questions:
J'utilisais la version 8.04 (Hardy) pendant environ 5 ans sur mon ancienne machine, je n'avais jamais expérimenté la même chose (toujours plus de 100 jours de disponibilité, avant de redémarrer, par exemple, pour les mises à jour du noyau). C'est maintenant une nouvelle machine complète avec une nouvelle installation de 12.04 . Au cas où cela serait important, quelques spécifications:
AMD A4-3400 APU avec Radeon (tm) HD Graphics, à l'aide du pilote ATI/radeon à code source ouvert (de sorte qu'aucun fglrx n'est installé), 8 Go de RAM, WDC WD1002FAEX-0 disque dur (1 To), Asus F1A75-V Evo carte mère. Ubuntu 12.04 64 bits avec KDE4/Plasma. Les applications généralement ouvertes de manière plus ou moins permanente incluent Evolution, Firefox, konsole (environ 4 onglets dans Midnight Commander), et LibreOffice - plus occasionnellement Caliber, Gimp et Moneyplex (logiciel bancaire que j'utilise depuis près de 20 ans maintenant, dans une version qui a bien fonctionné sur Hardy).
Edit: Aujourd'hui, j'ai trouvé l'un des "méchants": le KDE4s plasma-desktop. La mémoire utilisée était à nouveau jusqu’à 5 Go, lorsque j’ai fait un killall plasma-desktop && plasma-desktop
. Cela a libéré 1,3 Go de RAM! ps
dit:
RSS SIZE VSZ
plasma usage before restart 120988 526472 1300816
plasma usage after restart 92352 495972 1263632
Alors, où sont passés ces 1,3 Go? La différence entre ces valeurs, si additionnées, s'élève à 96 Mo - et non à 1,3 Go.
Et cela ne peut être qu'une partie, car 3,7 Go sont encore utilisés (ils devraient être inférieurs à 2 Go). J'ai surveillé cela au cours des 6 derniers jours à l'aide de plusieurs outils: la mémoire utilisée (sans parler de cache ni de mémoire tampon) augmente lentement mais régulièrement. Même si je ne suis pas à mon bureau pour exécuter quoi que ce soit ...
En ce qui concerne la surveillance des processus avec des fichiers ouverts, j’utilise actuellement le 1-liner suivant (j’adore Shell et surtout le bash) pour obtenir le top 5:
echo "$(for pid in $(ls -a /proc|egrep '^([0-9])*$'|sort -n 2>/dev/null); do \
if [ -e /proc/$pid/fd ]; then FHC=$(ls -l /proc/$pid/fd|wc -l); \
if [ $FHC -gt 0 ]; then PNAME="$(cat /proc/$pid/comm)"; \
echo "$FHC files opened by $pid ($PNAME)"; fi; fi; done)"|sort -r -n|head -n5
Commandez ici en 4 lignes pour une meilleure lisibilité. Rien d’autre pour le moment - sauf que Skype n’aime pas avoir la connexion Internet rompue. Chaque déconnexion provoque une légère augmentation de ses fichiers ouverts, mais rien d’exceptionnel. D'autre part, il semble que le plasma en soit également responsable:
Voir la chute des poignées de fichier à la fin? C'était le redémarrage du plasma.
Le grand nombre de fichiers ouverts est un bon indice que quelque chose ne va pas. Je pense que ce serait un démon système KDE.
Ouvrez une console et lancez "top". Puis utilisez <et> pour changer la colonne de tri en VIRT ou RES et voir quels programmes utilisent le plus de mémoire. Une fuite de mémoire apparaîtra comme une utilisation de mémoire virtuelle considérablement gonflée, car une fois que le pointeur sur la mémoire perdue sera perdu, il ne sera plus utilisé et sera échangé. Lancez également "lsof" et recherchez un processus avec beaucoup de fichiers ouverts, car cela semble vraiment être une fuite de descripteur de fichier.
Repérez le programme et signalez un bogue.
Je pense que c'est normal système Behaivor. Très probablement, tout va bien.
Vous pouvez lire ce brillant article (Linux mange mon bélier) pour comprendre comment Linux gère votre bélier et pourquoi il n’ya pas lieu de s’inquiéter: