7 votes

Comptabilité des processus Linux - Différence entre les champs 'cp' et 'cpu' ?

J'ai envisagé d'utiliser la comptabilité des processus pour garder la trace des divers utilisateurs et sites exécutant des scripts qui posent problème dans notre environnement au lieu d'essayer de faire quelque chose comme le scraping top à intervalles réguliers.

La question qui n'est pas particulièrement claire est de savoir quels champs vraiment indique les secondes/minutes de processeur utilisées. Les pages de manuel que j'ai lues disent que la colonne 'cpu' est pour les secondes brûlées, cependant il y a aussi la colonne 'cp' affichée avec -m - et ils peuvent montrer des totaux différents. Par exemple :

Quand j'utilise le drapeau -m, j'obtiens

 $sa -m | grep username
 username 14944      65.53re      29.90cp     5308k

Lorsque j'utilise le drapeau -u et que je totalise la colonne 'cpu', j'obtiens le résultat suivant :

 sa -u |grep username|awk 'BEGIN{TOTAL=0}{TOTAL=TOTAL+$2}END{print TOTAL}'
 1032.86

Quelqu'un peut-il m'aider à comprendre la différence entre les colonnes 'cp' et 'cpu' dans ces deux modes différents ?

Merci !

6voto

Doug Wilson Points 1435

Laissez-moi utiliser un exemple pour vous aider à expliquer ce que vos résultats ci-dessus montrent :

Premièrement : j'ai créé un bash script que j'ai exécuté en tant qu'utilisateur patrickr et qui était censé mettre suffisamment de charge sur le système pour être perceptible.

#!/bin/bash
#this file is named loop_script.sh
for i in {1..5000}
do
   echo "Welcome $i times"
done

Deuxièmement : j'ai désinstallé puis réinstallé acct pour que mes fichiers dans /var/log/acct soient frais. Créez une copie du fichier /var/log/acct/pacct afin de pouvoir, à l'avenir, facilement tronquer le fichier avec un fichier correctement formaté (vous ne pouvez pas simplement supprimer et recréer le fichier - sa cessera de fonctionner si vous faites cela). Notez que ce fichier est un journal de toutes les commandes sur le système et pour autant que je sache, il n'y a aucun moyen d'extraire des parties du journal basées sur des périodes de temps.

Troisièmement : j'ai ensuite exécuté ce script deux fois en tant que patrickr.

patrickr@hostname:~$ bash loop_script.sh

Je vais vous donner les résultats et ensuite je les expliquerai :

Exécuté en tant que root (ou tout autre utilisateur que patrickr) Après la première boucle en tant que patrickr :

**sa -m**
                            24       0.09re       0.03cp         0avio       894k
root                        22       0.07re       0.02cp         0avio       853k
patrickr                    2       0.02re       0.01cp         0avio      1336k

**sa -u |grep patrickr**

patrickr   0.38 cpu     1336k mem      0 io bash             

Après la deuxième boucle comme patrickr :

**sa -m**
                            30       0.09re       0.03cp         0avio       850k
root                        27       0.07re       0.02cp         0avio       814k
patrickr                    3       0.02re       0.01cp         0avio      1178k

**sa -u |grep patrickr**

patrickr   0.38 cpu     1336k mem      0 io bash            
patrickr   0.35 cpu     1336k mem      0 io bash            
patrickr   0.00 cpu      863k mem      0 io ls  (I happened to also run ls at patrickr)

**sa -u**

The results returned 106 results for a total of 2.86cpu that averaged to 0.03cp

Voici ce que vous voyez :

sa -m montre les moyennes de toute l'activité de ce serveur au fil du temps. Ce fichier s'agrandit au fur et à mesure de l'exécution des commandes.

sa -u | grep patrickr montre la somme du temps système et utilisateur en minutes cpu pour des commandes spécifiques.

En cours d'exécution : sa -u |grep patrickr|awk 'BEGIN{TOTAL=0}{TOTAL=TOTAL+$2}END{imprime TOTAL}''

Cela vous donnera un total combiné pour l'utilisateur patrick mais la commande sa -m vous donne en fait des moyennes. Jetez un coup d'oeil aux valeurs de la mémoire si vous avez besoin d'un deuxième exemple. Elles sont aussi moyennées.

Si j'additionne les trois résultats indiqués ci-dessus pour patrickr, .35 + .37 + .0 et que je divise par 106 et arrondis au centième le plus proche, j'obtiendrai 0.01cp.

Le résultat de 0.01cp est la charge moyenne de l'utilisateur patrickr sur le système par rapport à la charge totale du système depuis l'installation de l'application acct (c'est-à-dire depuis que le fichier /var/log/acct/pacct a commencé à en tenir compte).

Output Fields
cpu   -  sum of system and user time in cpu minutes
re    -  actual time in minutes
k     -  cpu-time averaged core usage, in 1k units
k*sec -  cpu storage integral (kilo-core seconds)
u     -  user cpu time in cpu minutes
s     -  system time in cpu minutes

Une bonne ressource qui vous aidera est le site beginlinux.com (lien original trouvé aquí ).

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