Question

J'exécute un script shell pour exécuter une application c ++, qui mesure les performances d'une API. Je peux capturer la latence (temps nécessaire pour retourner une valeur pour un ensemble de paramètres donné) de l'API, mais je souhaite également capturer l'utilisation du processeur et de la mémoire à des intervalles de 5 à 10 secondes, par exemple.

existe-t-il un moyen de le faire sans trop affecter les performances du système et cela aussi dans le même script? J'ai trouvé de nombreux exemples où l'on peut faire en dehors (indépendamment) du script que nous exécutons; mais pas celui où nous pouvons faire dans le même script.

Était-ce utile?

La solution

Je suggérerais d'utiliser la commande time et également la commande vmstat . La première utilisera l’exécution de l’exécutable par la CPU et la seconde, une sauvegarde périodique (c’est-à-dire une fois par seconde) de la CPU / mémoire / E / S du système.

Exemple:

time dd if=/dev/zero bs=1K of=/dev/null count=1024000
1024000+0 records in
1024000+0 records out
1048576000 bytes (1.0 GB) copied, 0.738194 seconds, 1.4 GB/s
0.218u 0.519s 0:00.73 98.6%     0+0k 0+0io 0pf+0w <== that's time result

Autres conseils

Si vous souhaitez capturer l'utilisation du processeur et des mémoires de manière dynamique pour l'ensemble d'une boîte Linux, la commande suivante peut également vous aider:

CPU

vmstat -n 15 10| awk '{now=strftime("%Y-%m-%d %T "); print now 
free -m -s 10 10 | awk '{now=strftime("%Y-%m-%d %T "); print now <*>}'> DataDumpMemoryfile.csv &
}'> CPUDataDump.csv &

vmstat est utilisé pour la collecte des compteurs de la CPU

-n pour la valeur de délai. Dans ce cas, il s'agit de 15, cela signifie que toutes les 15 secondes, les statistiques seront collectées.

then 10 est le nombre d'intervalles, il y aurait 10 itérations dans cet exemple

awk '{now = strftime ("% Y-% m-% d% T"); print now $ 0} ' ceci videra l'horodatage de chaque itération

à la fin, le fichier de vidage avec & amp; pour la suite

Mémoire

<*>

free est destiné à la collecte des statistiques de mem

-m c'est pour les unités de mémoire (vous pouvez utiliser -b pour les octets, -k pour les kilo-octets, - g pour les gigaoctets)

then 10 est le nombre d'intervalles (il y aurait 10 itérations dans cet exemple)

awk '{now = strftime ("% Y-% m-% d% T"); print now $ 0} ' ceci videra l'horodatage de chaque itération

à la fin, le dump & amp; pour la suite

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top