44 votes

Comment enregistrer la charge CPU?

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

59voto

andybee Points 497

Cela fonctionne très bien:

 while true; do uptime >> uptime.log; sleep 1; done
  • Cela enregistrera votre charge cpu toutes les secondes et l'ajoutera à un fichier uptime.log.

    Ensuite, vous pouvez importer ce fichier dans Gnumeric ou dans la feuille de calcul OpenOffice pour créer un joli graphique (sélectionnez 'séparé par des espaces' lors de l'importation).

Comme Scaine l'a remarqué, cela ne suffira pas pour diagnostiquer le problème. Donc, en plus, exécutez 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 CPU à un fichier ps.log toutes les cinq secondes.

    Remarquez que ce n'est pas l'ensemble complet d'informations que top vous donnerait. Il s'agit simplement des 10 premiers, et simplement leur utilisation CPU, utilisation mémoire et le premier argument (c'est-à-dire leur commande sans autres arguments, comme /usr/bin/firefox)

Après avoir utilisé une feuille de calcul pour créer un graphique afin de voir quand votre charge cpu a atteint des sommets, vous pouvez ensuite rechercher ce fichier pour trouver l'heure la plus proche et voir quel processus l'a causé.

Voici à quoi ressembleront ces fichiers :

uptime.log

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

ps.log

%CPU %MEM ARGS Lun 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 Lun 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
 ...

14voto

Camilo Díaz Repka Points 2682

Vous pouvez exécuter la commande top en mode lot en utilisant l'option -b, puis enregistrer le résultat dans un fichier.

Au démarrage de votre PC, ouvrez un terminal, puis exécutez

top -b > ~/cpu.txt

Ensuite, lorsque votre PC se fige, il vous suffit d'ouvrir le fichier texte (probablement énorme) et de vérifier la dernière entrée pour obtenir des détails sur ce qui s'exécutait juste avant le plantage. En fait, le fichier sera si ridicule que vous feriez mieux d'exécuter tail -250 ~/cpu.txt à la place.

Vérifiez également le fichier /var/log/kern.log au cas où votre problème serait lié au matériel (peu probable si cela se produit seulement après une mise à jour, mais cela vaut la peine de vérifier quand même).

4voto

Luay Points 41

J'ai trouvé une excellente réponse de Christopher à cette question sur Unix et Linux qui utilise top:

top -n 1 -b > top.out

Cela vous donnera une itération de top puis s'arrêtera, et ensuite le poussera vers un fichier.

1voto

Mostafa Points 111

Pour ceux qui ont besoin d'exécuter cette commande après la fin de votre session Putty (client SSH), vous pouvez utiliser la commande screen (ou l'installer en utilisant apt-get).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X