Sur un système de frais a commencé, des free
rapports sur 1.5G utilisés RAM (RAM 8G alltogether, Ubuntu 12.04 avec lightdm et de bureau à écran plasma, une fenêtre Konsole a commencé). Ayant les applications en cours d'exécution que j'utilise, il ne consomme toujours pas plus de 2G. Cependant, ayant le système en cours d' exécution pendant quelques jours, de plus en plus de mes disparait libres de RAM - sans apparaître dans la liste des applications utilisées: alors que des smem --pie=name
rapports moins de 20% utilisé (et 80% étant disponible), dit tout le monde différemment. free -m
par exemple, des rapports sur le jour 7:
total used free shared buffers cached
Mem: 7459 7013 446 0 178 997
-/+ buffers/cache: 5836 1623
Swap: 9536 296 9240
(Vous pouvez le voir, ce ne sont pas les tampons ou le cache). Aujourd'hui, cela a finalement pris fin avec le crash complet du système: le gestionnaire de fenêtres disparu, les applications "suspendues en l'air" (sans cadre) - et une fenêtre contextuelle m'informant de "trop de fichiers ouverts". rapports Syslog:
kernel: [856738.020829] VFS: file-max limit 752838 reached
Je fermai donc ces applications que je suis en mesure de fermer, et X à l' aide tuais Ctrl-Alt-Backspace. X a essayé de trouver à nouveau après avec failsafeX, mais n'a pas pu le faire car il ne pouvait plus détecter sa configuration. Donc , je suis passé à une console en utilisant les touches Ctrl-Alt-F2, capturé toutes les informations que je pouvais penser (vmstat, libre, smem, proc/meminfo
, lsof, ps aux
), et enfin redémarré. X nouveau venu avec failsafeX; cette fois , je dit à « remettre de ma configuration sauvegardée », puis passer à une console et utilisé avec succès startx
pour afficher l'environnement graphique.
Je n'ai aucune idée de ce qui cause ce problème - bien que cela doive être lié à X lui-même ou à certains processus utilisateur exécutés sur X - car après avoir tué X, la free -m
sortie 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 libérés) - pour 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
Deux autres sorties utiles sont fournies par memstat -u
. Peu de temps avant le crash:
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 en 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: vient 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 CPU aussi. Je viens de le trouver en ce moment - et cela me rappelle un autre indicateur pointant vers X lui-même: souvent en revenant à ma machine et en déverrouillant l'écran, j'ai trouvé quelque chose qui faisait un travail lourd sur mon processeur. En vérifiant avec top
, cela 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:
- Quelles pourraient être les causes possibles?
- Comment mieux identifier les processus / applications impliqués?
- Quelles mesures pourraient être prises pour éviter ce comportement - à moins de redémarrer la machine tous les X jours?
J'exécutais 8.04 (Hardy) depuis environ 5 ans sur mon ancienne machine, n'ayant jamais connu la même chose (toujours plus de 100 jours de disponibilité, avant de redémarrer par exemple pour les mises à jour du noyau). Il s'agit maintenant d'une nouvelle machine complète avec une nouvelle installation de 12.04 . Au cas où cela compte, quelques spécifications:
APU AMD A4-3400 avec carte graphique Radeon (tm) HD, utilisant le pilote open-source ati / radeon (donc pas de fglrx installé), 8 Go de RAM, WDC WD1002FAEX-0 hdd (1 To), carte mère Asus F1A75-V Evo. Ubuntu 12.04 64 bits avec KDE4 / Plasma. Les applications ouvertes généralement de manière plus ou moins permanente incluent Evolution, Firefox, konsole (avec Midnight Commander à l'intérieur, environ 4 onglets) et LibreOffice - plus occasionnellement Calibre, Gimp et Moneyplex (logiciel bancaire que j'utilise déjà 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": KDE4s plasma-desktop. La mémoire utilisée était à nouveau jusqu'à 5 Go, quand 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ù étaient ces 1,3 Go? La différence entre ces valeurs, si elles sont 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 toujours utilisés (devraient être inférieurs à 2 Go). Je surveillais ce au cours des 6 derniers jours à l'aide de plusieurs outils: la mémoire utilisée (ne parle pas de cache et tampons) augmente lentement mais de façon constante. Même si je ne suis pas à mon bureau pour faire quoi que ce soit ...
En ce qui concerne les processus de suivi avec les fichiers ouverts, j'utilise actuellement le 1-liner suivant (shell amour I et en particulier 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é. Pas grand-chose encore de là - sauf que Skype ne aime pas avoir la mauvaise connexion Internet. Chaque déconnexion provoque une légère augmentation de ses fichiers ouverts, mais rien de dramatique. D'autre part, il semble que le plasma est également responsable de ce qui suit:
Vous voyez la goutte de poignées de fichiers à la fin? Ce fut le redémarrage du plasma.
la source
sudo bash -c 'sync; echo 3 > /proc/sys/vm/drop_caches'
le bélier supplémentaire? Vous pouvez afficher les fichiers ouverts des programmes à l'aide delsof
free
. Passer à un autre DE, j'ai en fait envisagé; si KDE3.5 avait été disponible, je ne me serais pas retrouvé avec Plasma. Cela ne peut être que temporaire pour voir si le plasma est impliqué.Réponses:
Le grand nombre de fichiers ouverts est un bon indice que quelque chose ne va pas. Je suppose que ce serait un démon système KDE.
Ouvrez une console et exécutez "top". Utilisez ensuite <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 vers la mémoire perdue sera perdu, il ne sera pas utilisé et sera échangé. Exécutez également "lsof" et recherchez un processus avec beaucoup de fichiers ouverts, car cela semble vraiment être une fuite de descripteur de fichier.
Suivez le programme et signalez un bug.
la source
apt-get update && apt-get upgrade
il y avait une mise à jour pour plasma-desktop; ces gars sont rapides X) Maintenant, je le regarde juste un moment pour voir si le problème est résolu, avant de le déclarer tel. Jusqu'à présent, les choses semblent assez prometteuses.lsof
nitop
pointé sur le "processus diabolique", votre supposition concernant le démon KDE m'a dirigé vers le fauteur de troubles. Alors merci encore - la disponibilité de ma machine est maintenant d'environ 14d, et tout semble toujours stable, même si j'ai même exécuté des choses comme VirtualBox, compilé, etc. en parallèle. Je considère donc que cela est résolu et je marque le match le plus proche :)Je pense que c'est un comportement normal du système. Très probablement, tout va bien.
Vous pouvez lire ce brillant article (Linux a mangé mon RAM) pour comprendre comment Linux gère votre RAM et pourquoi il n'y a pas lieu de s'inquiéter:
http://www.linuxatemyram.com/
la source