web-dev-qa-db-fra.com

Comment enregistrer la charge du processeur?

Comment enregistrer la charge du processeur dans un fichier afin d’enquêter sur un problème?

27
tommyk

Cela fonctionne très bien:

 while true; do uptime >> uptime.log; sleep 1; done
  • Ceci enregistrera votre charge de processeur toutes les secondes et l’ajoutera à un fichier uptime.log.

    Vous pouvez ensuite importer ce fichier dans Gnumeric ou la feuille de calcul OpenOffice pour créer un graphique de Nice (sélectionnez "séparé par des espaces" lors de l'importation).

Comme Scaine l’a remarqué, cela ne sera pas suffisant pour diagnostiquer le problème. Donc, en plus, lancez ceci (ou utilisez sa réponse pour cette partie):

while true; do (echo "%CPU %MEM ARGS $(date)" && ps -e -o pcpu,pmem,args --sort=pcpu | cut -d" " -f1-5 | tail) >> ps.log; sleep 5; done
  • Cela ajoutera les 10 processus les plus gourmands en processeur à un fichier ps.log toutes les cinq secondes.

    Notez que ce n'est pas le bateau complet d'informations que top vous donnerait. Ceci est juste le top 10, et juste leur utilisation du processeur, utilisation de la mémoire et le premier argument (c'est-à-dire leur commande sans arguments supplémentaires, comme dans /usr/bin/firefox)

Une fois que vous avez utilisé une feuille de calcul pour créer un graphique indiquant le moment où la charge de votre processeur a explosé, vous pouvez rechercher dans ce fichier l'heure la plus proche pour déterminer le processus qui l'a provoqué.

Voici à quoi ressembleront ces fichiers:

temps de disponibilité.log

~$ cat uptime.log 
 22:57:42 up 1 day,  4:38,  4 users,  load average: 1.00, 1.26, 1.21
 22:57:43 up 1 day,  4:38,  4 users,  load average: 0.92, 1.24, 1.21
 22:57:44 up 1 day,  4:38,  4 users,  load average: 0.92, 1.24, 1.21
 22:57:45 up 1 day,  4:38,  4 users,  load average: 0.92, 1.24, 1.21
 ...

ps.log

%CPU %MEM ARGS Mo 17. Jan 23:09:47 CET 2011
 0.7  0.9 /usr/bin/compiz
 0.8  0.5 /usr/lib/gnome-panel/clock-applet
 1.1  1.7 /opt/google/chrome/chrome
 1.2  0.3 /usr/bin/pulseaudio
 1.8  4.0 /opt/google/chrome/chrome
 2.6  1.5 /opt/google/chrome/chrome
 2.6  3.2 /usr/bin/google-chrome
 3.6  2.6 /opt/google/chrome/chrome
 4.9  1.5 /usr/bin/X
 5.7  1.6 /opt/google/chrome/chrome
%CPU %MEM ARGS Mo 17. Jan 23:09:48 CET 2011
 0.7  0.9 /usr/bin/compiz
 0.8  0.5 /usr/lib/gnome-panel/clock-applet
 1.0  1.7 /opt/google/chrome/chrome
 1.2  0.3 /usr/bin/pulseaudio
 1.8  4.0 /opt/google/chrome/chrome
 2.6  1.5 /opt/google/chrome/chrome
 2.6  3.2 /usr/bin/google-chrome
 3.6  2.6 /opt/google/chrome/chrome
 4.9  1.5 /usr/bin/X
 5.7  1.6 /opt/google/chrome/chrome
 ...
39
Stefano Palazzo

Vous pouvez exécuter la commande top en mode de traitement par lots à l'aide de l'option -b, puis la transférer dans un fichier.

Au démarrage de votre PC, ouvrez un terminal, lancez

top -b > ~/cpu.txt

Ensuite, lorsque votre PC se bloque, ouvrez simplement le fichier texte (probablement énorme) et vérifiez la dernière entrée pour plus de détails sur ce qui se passait juste avant le crash. Dans la mesure où le fichier sera si bêtement volumineux qu'il vaut mieux utiliser un tail -250 ~/cpu.txt à la place.

Vérifiez également votre /var/log/kern.log si votre problème est lié au matériel (peu probable si cela se produit uniquement après une mise à niveau, mais cela vaut la peine de le vérifier).

10
Scaine