Comment enregistrer la charge CPU?

30

Comment enregistrer la charge CPU dans un fichier afin d'enquêter sur un problème?

tommyk
la source

Réponses:

42

Cela fonctionne très bien:

 while true; do uptime >> uptime.log; sleep 1; done
  • Cela enregistrera votre charge CPU chaque seconde 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 joli graphique (sélectionnez «séparé par des espaces» lors de l'importation).

Comme Scaine l'a remarqué, ce 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 CPU à un fichier ps.logtoutes les cinq secondes.

    Notez que ce n'est pas la pleine quantité d'informations topque vous fourniriez. Ce n'est que le top 10, et juste leur utilisation du processeur, l'utilisation de la mémoire et le premier argument (c'est-à-dire leur commande sans autres arguments, comme dans /usr/bin/firefox)

Après avoir utilisé une feuille de calcul pour créer un graphique pour voir quand votre charge CPU a traversé le toit, vous pouvez ensuite rechercher dans ce fichier l'heure la plus proche pour voir quel processus l'a provoqué.

Voici à quoi ressembleront ces fichiers:

uptime.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
 ...
Stefano Palazzo
la source
3
Est-ce que cela imprime réellement l'utilisation correcte du processeur ?? J'ai essayé cela sur centos et seule l'utilisation de la mémoire était correcte :(
Menelaos Bakopoulos
Comment puis-je faire en sorte que cette commande continue de s'exécuter sur mon VPS même après avoir fermé la connexion Putty?
Lucas Bustamante
1
Si l'utilisation du processeur signalée par psest absurde, essayez de l'exécuter en tant que root.
Stefano Palazzo
Comment puis-je faire en sorte que cette commande continue de s'exécuter sur mon VPS même après avoir fermé la connexion Putty ????
Mostafa
10

Vous pouvez exécuter la topcommande en mode batch en utilisant l' -boption, puis la vider dans un fichier.

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

top -b > ~/cpu.txt

Ensuite, lorsque votre PC se fige, ouvrez simplement le fichier texte (probablement énorme) et vérifiez la dernière entrée pour plus de détails sur ce qui fonctionnait juste avant le crash. En fait, le fichier sera si stupidement volumineux que vous feriez mieux d'exécuter un à la tail -250 ~/cpu.txtplace.

Vérifiez également votre /var/log/kern.log au cas où votre problème est lié au matériel (peu probable si cela ne se produit qu'après une mise à niveau, mais mérite néanmoins d'être vérifié).

Scaine
la source
0

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)

Mostafa
la source