8 votes

Écrire dans un fichier un journal de l'utilisation du CPU/RAM sur une période de temps sous CentOS

Je cherche une application ou une ligne de code qui me permettrait d'observer un processus, d'enregistrer les informations dans un certain nombre de variables, puis de placer les informations recueillies dans un fichier.

J'ai essayé des variantes de top mais sans succès. Je fais tourner plusieurs serveurs virtuels CentOS, la VM est un 2GB RAM, 2 processeurs.

Un script qui fonctionne pendant une durée déterminée tout en écrivant des lignes avec les informations dans un fichier texte afin qu'à la fin je puisse avoir une sorte de tableau avec les données fonctionnerait.

Je vais soumettre le serveur à un test de stress et j'aimerais disposer des données nécessaires pour établir des statistiques.

11voto

VolkA Points 10297

La norme ps suffit.

while true; do ps o pcpu,rsz -p $pid | tail -n1 >>usage.log; sleep $interval; done

résultat :

0.0  3352
0.3 31640
0.4 36924
0.5 36052
...

Le premier champ correspond à l'utilisation du CPU en %, le second à l'utilisation de la mémoire physique en kbytes.

2voto

the-m1 Points 31

Si vous tenez à un timing précis et que vous souhaitez que l'unité centrale soit exprimée en pourcentage :

watch --precise -n 1 'top -b -n 1 -p [PID] | tail -n 1 | awk "{print \$9}" >> [PID].log'

1voto

Damian Powell Points 315

Je suggère sadc / sar .

0voto

Danny Henderson Points 71

Vous essayez d'observer le temps d'utilisation du processeur par un processus particulier.

J'allais suggérer Outil de statistiques CPU pour CentOS ? mais cela s'applique à l'ensemble du système, et non à un seul processus.

Tout processus affichera le temps CPU dans la sortie de ps :

$ ps -ef | egrep blah
root     13988 11152  0 Dec16 ?        00:00:05 sshd: xxx [priv]
xxx      14024 13988  0 Dec16 ?        00:06:00 sshd: xxx@pts/0
xxx      14032 14024  0 Dec16 pts/0    07:00:00 -bash
root      1194   679  0 Apr24 ?        2-05:15:14 [kswapd0]
root      1195   679  0 Apr24 ?        2-06:35:49 [kswapd1]
  • 00:00:00 correspond à des heures/minutes/secondes de cpu. Il s'accumulera.
  • Si l'utilisateur n'est pas vous-même, vous devez disposer d'autorisations pour voir ces informations.
  • Dès que cette valeur dépasse un jour, le format change ; au-dessus, c'est 2 jours. Votre routine d'analyse devra s'en charger.

À ce stade, vous pouvez analyser la sortie avec Python, effectuer quelques calculs de date, et le tour est joué.

0voto

Celik Points 111

La commande suivante permet d'obtenir la moyenne de l'utilisation du CPU et de la mémoire toutes les 40 secondes pour un processus spécifique (pid)

pidstat 40 -ru -p <pid>

Sortie pour mon cas (les deux premières lignes pour l'utilisation du CPU, les deux autres pour la mémoire) :

02:15:07 PM       PID    %usr %system  %guest    %CPU   CPU  Command
02:15:47 PM     24563    0.65    0.07    0.00    0.73     3  java

02:15:07 PM       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
02:15:47 PM     24563      6.95      0.00 13047972 2123268   6.52  java

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