GNU/Linux >> Tutoriels Linux >  >> Linux

Comment puis-je mesurer l'utilisation réelle de la mémoire d'une application ou d'un processus ?

Avec ps ou des outils similaires, vous n'obtiendrez que la quantité de pages mémoire allouées par ce processus. Ce numéro est correct, mais :

  • ne reflète pas la quantité réelle de mémoire utilisée par l'application, uniquement la quantité de mémoire qui lui est réservée

  • peut être trompeur si les pages sont partagées, par exemple par plusieurs threads ou en utilisant des bibliothèques liées dynamiquement

Si vous voulez vraiment savoir quelle quantité de mémoire votre application utilise réellement, vous devez l'exécuter dans un profileur. Par exemple, Valgrind peut vous donner des informations sur la quantité de mémoire utilisée et, plus important encore, sur les éventuelles fuites de mémoire dans votre programme. L'outil de profilage de tas de Valgrind s'appelle 'massif' :

Massif est un profileur de tas. Il effectue un profilage détaillé du tas en prenant des instantanés réguliers du tas d'un programme. Il produit un graphique montrant l'utilisation du tas au fil du temps, y compris des informations sur les parties du programme qui sont responsables de la plupart des allocations de mémoire. Le graphique est complété par un fichier texte ou HTML qui inclut plus d'informations pour déterminer où la plus grande quantité de mémoire est allouée. Massif exécute les programmes environ 20 fois plus lentement que la normale.

Comme expliqué dans la documentation de Valgrind, vous devez exécuter le programme via Valgrind :

valgrind --tool=massif <executable> <arguments>

Massif écrit un vidage des instantanés d'utilisation de la mémoire (par exemple, massif.out.12345 ). Ceux-ci fournissent, (1) une chronologie de l'utilisation de la mémoire, (2) pour chaque instantané, un enregistrement de l'endroit où la mémoire de votre programme a été allouée. Un excellent outil graphique pour analyser ces fichiers est massif-visualizer. Mais j'ai trouvé ms_print , un simple outil textuel livré avec Valgrind, déjà d'une grande aide.

Pour trouver des fuites de mémoire, utilisez le (par défaut) memcheck outil de valgrind.


Essayez la commande pmap :

sudo pmap -x <process pid>

Linux
  1. Comment vérifier l'utilisation de la mémoire du processus avec la commande Linux pmap

  2. Comment libérer des pages énormes de l'application en panne

  3. Comment pouvez-vous voir le lien physique réel par ls ?

  4. Comment surveiller l'utilisation de la mémoire dédiée au noyau ?

  5. Comment définir l'affinité processeur d'un processus sous Linux ?

Comment profiler l'utilisation de la mémoire ?

Si je connais le numéro PID d'un processus, comment puis-je obtenir son nom ?

Comment réduire l'utilisation de la mémoire ClamAV ?

Comment puis-je obtenir l'heure de l'horloge murale d'un processus en cours d'exécution ?

Comment l'utilisation de la mémoire est-elle signalée sous Linux ?

Comment limiter l'utilisation de la mémoire par application sous Linux ?