web-dev-qa-db-fra.com

comment enregistrer les journaux du processeur ou les valeurs d'utilisation du processeur graphique?

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).

Alors, comment puis-je sauvegarder tous les enregistrements dans un fichier journal afin de pouvoir y accéder ultérieurement?

Deuxièmement, j'ai également vérifié les performances du GPU (carte graphique AMD). Mais comment puis-je créer un fichier journal?

2

Commencez par décider des statistiques de processeur que vous souhaitez enregistrer.

Vous pouvez choisir différentes statistiques pour vous connecter:

  • Vitesse du processeur (fréquence en Mhz ou Ghz)
  • Pourcentage d'utilisation du processeur
  • Température du processeur
  • Facteur de charge moyen du processeur
  • De plus, ces statistiques peuvent être segmentées pour chaque processeur, c'est-à-dire de n ° 1 à n ° 8 pour un processeur hyper-threadé à quatre cœurs.

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?

Créez une boucle pendant deux heures en vous connectant chaque seconde

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

Analyser les données dans un tableur

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.

Quelques points sur la charge moyenne

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


Utilisation de la commande top pour afficher les 10 principaux processus

Pour 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.


En utilisant la commande top pour obtenir us , sy , id et si valeurs de la CPU

Semblable à 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
2
WinEunuuchs2Unix

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.

1
nickcrabtree