Je veux exécuter un programme consommateur de mémoire et suivre son utilisation de la mémoire au fil du temps. Le programme se termine en quelques secondes après avoir été appelé.
Cette question précédente suggérait le paquet sysstat . Bien que son pidstat
utilitaire fasse en partie ce que je veux, il ne répond pas à mes 2 besoins:
- Il accepte un intervalle minimal de
1s
, mais je veux mesurer à une granularité plus courte. (0.1s
ça devrait aller) - Il ne fait que suivre un processus existant, alors que je ne peux pas toujours être présent pour copier et coller le pid.
Existe-t-il des scripts / utilitaires alternatifs pour mieux effectuer le travail d'invocation et de mesure?
/proc/$PID/statm
), puis dormir pendant 100 ms et répéter. Pourquoi ne pouvez - vous garder juste jeter associé de la PIDstatm
parcat
, peut - être utiliser certains regex pour filtrer les valeurs supplémentaires / non nécessaires, et faire juste unsleep 0.01
? Certains systèmes d'exploitation n'autorisent pas lessleep
valeurs inférieures à une seconde , dans ce cas, vous devrez emprunter la route Python (et utiliser latime
bibliothèque intégrée de Python pour dormir à la place).Réponses:
Cela devrait faire ce dont vous avez besoin. Il obtient les informations
/proc/$PID/statm
et imprime (deman procfs
):Le script:
Vous pouvez ensuite appeler le script en lui donnant un nom de processus en entrée. Par exemple:
REMARQUES:
la source
man
là-bas, je ne sais pas pourquoi votre montage a été rejeté.Après des années, j'ai trouvé que valgrind avait (également) un outil pour cela:
Remarque: valgrind fait plus qu'observer: il doit injecter du code et prendre un instantané de la mémoire. Cela peut nuire à la précision des statistiques.
la source