2009-06-15 6 views
4

J'ai essayé d'utiliser la commande time/usr/bin/time pour mesurer la consommation de mémoire de pointe d'un programme sur un système Linux. Indépendamment de ce que l'expérience exécutable I avec, je reçois la bonne réponse pour ce qui concerne le temps en cours d'exécution, mais les chiffres d'utilisation de la mémoire sont toujours 0.problème avec la commande GNU "time" pour mesurer l'utilisation de la mémoire

la sortie typique de temps est quelque chose comme:

8.68user 0,04 système 0: 08.73elapsed 99% CPU (0avgtext + 0avgdata 0maxresident) k 0inputs + 16outputs (+ 0major 20366minor) pagefaults 0swaps

les zéros que je ne suis pas comprendre sont:

0avgtext + 0avgdata 0maxresident

Je googled autour, et je rassemblerai que le temps GNU est en fait pas en mesure de calculer les données d'utilisation de la mémoire qui sont désignés dans sa page de manuel. Ai-je raison? Quelle est une commande alternative que je pourrais utiliser pour le même effet? (sans avoir à exercer de valgrind)

Répondre

4

L'utilisation maximale de la mémoire n'est pas implémentée sous Linux autant que je sache, donc le temps ne le signale pas. La plupart des gens utilisent le nombre d'erreurs de page mineures (1 == 4Kb block) comme indication de la quantité de mémoire utilisée.

Voir par exemple here comment Linus Torvalds l'utilise pour rechercher des performances git.

La seule façon que je ne saurais mesurer ce serait autrement en utilisant « ulimit » et en utilisant la recherche binaire pour trouver la moindre quantité de mémoire dont il a besoin :)

2

Il est vrai que le temps ne supporte pas universellement tous les fonctionnalités étendues.

Il existe des alternatives à valgrind telles que le mempatrol et les clôtures électriques, qui n'ont pas le même overhead (mais ont moins de fonctionnalités de fantaisie). Valgrind est en fait ridiculement maîtrisé pour cela, et vous payez pour cela dans l'exécution.

Vous pouvez également utiliser les scripts systemtap pour obtenir des résultats similaires.

top est également très utile.

Questions connexes