gens!
Je veux vérifier mes journaux de processeur en permanence. J'ai utilisé les commandes top et htop. Mais je viens de les vérifier lors des simulations.
Maintenant, je veux faire tourner un vrai ROBOT pendant environ 2 heures (mon ordinateur portable serait sous ROBOT lors du déplacement).
Deuxièmement, j'ai également vérifié les performances du GPU (carte graphique AMD). Mais comment puis-je créer un fichier journal?
Vous pouvez choisir différentes statistiques pour vous connecter:
Par souci de simplicité, je vais fonder cette réponse en utilisant un facteur de charge moyen similaire à la réponse dans: Comment enregistrer la charge du processeur?
Vous aurez besoin d’un script bash pour effectuer une boucle de 7 200 secondes (2 heures) qui ressemblerait à ceci:
#!/bin/bash
for ((i=0; i<7200; i++))
do
uptime >> /home/user/cpuload.log
sleep 1
done
Pour regarder votre sortie, utilisez la commande:
$ cat cpuload.log
20:04:06 up 2 days, 14 min, 1 user, load average: 1.39, 1.12, 0.95
La charge moyenne indique trois variables: la dernière minute, les cinq dernières minutes et les quinze dernières minutes. Par souci de simplicité, ne tenez compte que de la charge moyenne de dernière minute qui est indiquée toutes les secondes dans notre boucle.
Vous pouvez importer le fichier cpuload.log
dans une feuille de calcul et représenter graphiquement les points de données sur les deux heures ou simplement faire défiler les données. J'utilise Libre Office Calc mais toutes les feuilles de calcul modernes peuvent importer le fichier.
Dans l'exemple ci-dessus, la charge moyenne sur une minute correspond à 1.39
. Cela semble dangereusement élevé, car tout ce qui se passe sur .70
mérite une enquête et 1.00
signifie qu'il existe un goulet d'étranglement et que les processus ne sont pas servis et doivent attendre.
Cependant, dans votre feuille de calcul, vous devrez diviser la charge moyenne par le nombre de processeurs dont vous disposez. Pour le découvrir rapidement, utilisez la commande:
$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
2074968
2133093
2094750
1863843
1728562
1855875
1849125
1778156
Cela montre qu'il y a 8 processeurs (il s'agit d'un processeur pour ordinateur portable Intel i-7 3630QM quad-core hyper-threadé fonctionnant entre 1200 Mhz et 3400 Mhz). Dans cet instantané, la CPU n ° 1 (appelée en interne CPU0) est exécutée à 2,0749.68 Mhz
et la CPU n ° 8 à 1,7781.56 Mhz
. Mais je m'éloigne du sujet, l'important est de compter combien de processeurs il y a 8.
Divisez donc la charge moyenne 1.39
par 8 et la charge TRUE moyenne est 0.17
, ce qui est très respectable. Une fois encore, toute valeur dépassant 0.70
mérite une investigation et lorsqu'elle atteint 1.00
votre système est en panne. Vous pouvez lire plus loin ici
top
pour afficher les 10 principaux processusPour utiliser la commande top
pour afficher les 10 processus les plus gourmands en ressources, utilisez cette commande à la place de la commande uptime
:
top -n 1 -b | head -n 17 | tail -n 10 >> /home/user/top10.log
Le fichier /home/user/top10.log
ressemblera à ceci (répété toutes les secondes pendant deux heures):
$ top -n 1 -b | head -n 17 | tail -n 10
6170 rick 20 0 1437432 537000 126060 S 62.5 6.7 8:50.24 chrome
2466 rick 20 0 1210040 140568 61864 S 6.2 1.8 22:16.88 compiz
4111 rick 20 0 742396 248724 185820 S 6.2 3.1 36:26.68 chrome
6280 rick 20 0 41800 3668 3124 R 6.2 0.0 0:00.01 top
10096 root 20 0 0 0 0 S 6.2 0.0 0:00.47 kworker/0:2
1 root 20 0 120064 6244 4000 S 0.0 0.1 0:02.23 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.05 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:01.31 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:+
7 root 20 0 0 0 0 S 0.0 0.0 1:39.28 rcu_sched
REMARQUE: remplacez user
par votre nom d'utilisateur actuel.
top
pour obtenir us , sy , id et si valeurs de la CPUSemblable à la première section, créez un script bash pour une boucle de 7 200 secondes:
#!/bin/bash
# NAME: ~/bin/cpu-top-summary
# DATE: June 13, 2017
# DESC: Call `top` command every second to obtain CPU(s) stats for
# us, sy, ni, id, wa, hi, si, and st. Log to /tmp/top-cpu-summary.log
# with time stamp in hh:mm:ss 24 hour format.
# PARM: $1 number of seconds to run, ie 2 hours = 7200
now="$(date +'%d/%m/%Y')"
printf "top CPU(s) summary for %s\n" "$now" > /tmp/top-cpu-summary.log
for ((i=0; i<$1; i++))
do
TimeStamp=`date +"%H:%M:%S"`
printf "$TimeStamp - " >> /tmp/top-cpu-summary.log
top -n 1 -b | head -n 3 | tail -n 1 >> /tmp/top-cpu-summary.log
sleep 1
done
Lorsque vous appelez le script bash à l'aide de top-cpu-summary 10
, vous pouvez afficher le résultat pendant 10 secondes à l'aide de:
$ cat /tmp/top*
top CPU(s) summary for 13/06/2017
19:17:34 - %Cpu(s): 25.0 us, 9.2 sy, 0.0 ni, 65.4 id, 0.2 wa, 0.0 hi, 0.2 si, 0.0 st
19:17:35 - %Cpu(s): 25.0 us, 9.2 sy, 0.0 ni, 65.4 id, 0.2 wa, 0.0 hi, 0.2 si, 0.0 st
19:17:36 - %Cpu(s): 25.0 us, 9.2 sy, 0.0 ni, 65.4 id, 0.2 wa, 0.0 hi, 0.2 si, 0.0 st
19:17:37 - %Cpu(s): 25.0 us, 9.2 sy, 0.0 ni, 65.4 id, 0.2 wa, 0.0 hi, 0.2 si, 0.0 st
19:17:38 - %Cpu(s): 25.0 us, 9.2 sy, 0.0 ni, 65.4 id, 0.2 wa, 0.0 hi, 0.2 si, 0.0 st
19:17:39 - %Cpu(s): 25.0 us, 9.2 sy, 0.0 ni, 65.4 id, 0.2 wa, 0.0 hi, 0.2 si, 0.0 st
19:17:41 - %Cpu(s): 25.0 us, 9.2 sy, 0.0 ni, 65.4 id, 0.2 wa, 0.0 hi, 0.2 si, 0.0 st
19:17:42 - %Cpu(s): 24.9 us, 9.2 sy, 0.0 ni, 65.4 id, 0.2 wa, 0.0 hi, 0.2 si, 0.0 st
19:17:43 - %Cpu(s): 24.9 us, 9.2 sy, 0.0 ni, 65.4 id, 0.2 wa, 0.0 hi, 0.2 si, 0.0 st
19:17:44 - %Cpu(s): 24.9 us, 9.2 sy, 0.0 ni, 65.4 id, 0.2 wa, 0.0 hi, 0.2 si, 0.0 st
Plutôt que d'écrire vous-même des scripts, vous pouvez utiliser collectl et peut-être combiner cela avec graphite et grafana pour visualiser les résultats.
Sur le site collectl:
Vous avez parfois besoin de données de performance. Celles-ci peuvent inclure des analyses comparatives, la surveillance de l'état général d'un système ou la détermination de ce que votre système faisait par le passé. Selon ce que vous faites, vous finissez souvent par utiliser différents outils, chacun étant conçu pour cette situation spécifique.
Contrairement à la plupart des outils de surveillance qui se concentrent sur un petit ensemble de statistiques, formate leur sortie d'une seule manière, s'exécutant de manière interactive ou en tant que démon, mais pas les deux, collectl essaie de tout faire. Vous pouvez choisir de surveiller n’importe quel grand ensemble de sous-systèmes qui incluent actuellement buddyinfo, cpu, disque, inodes, infiniband, lustre, mémoire, réseau, nfs, processus, quadriques, slabs, sockets et tcp.
Les résultats de collecte peuvent également être enregistrés dans un ensemble continu de journaux pour une lecture ultérieure ou affichés de manière interactive dans divers formats. Si tout cela ne suffit pas, il existe des plug-ins qui vous permettent de rapporter des données dans d'autres formats, voire de les envoyer via un socket à des outils distants tels que ganglia ou graphite. Vous pouvez même créer des fichiers au format séparé par des espaces pour les tracer avec des paquetages externes tels que gnuplot.