GNU/Linux >> Tutoriels Linux >  >> Linux

Utilisation maximale de la mémoire d'un processus

Solution 1 :

Vous pouvez obtenir le pic d'utilisation de la mémoire d'un certain processus, à :

grep VmPeak /proc/$PID/status  

(Remplacez $PID par l'ID de processus réel que vous recherchez).

VmPeak est la quantité maximale de mémoire utilisée par le processus depuis son démarrage.

Afin de suivre l'utilisation de la mémoire d'un processus au fil du temps, vous pouvez utiliser un outil appelé munin pour suivre et afficher un joli graphique de l'utilisation de la mémoire au fil du temps.

Munin est livré avec de nombreux plugins par défaut pour suivre les ressources système, mais il n'est pas livré avec un plugin pour suivre l'utilisation maximale de la mémoire - heureusement, il est extrêmement facile d'écrire un plugin pour cela.

Voici un exemple de plugin munin pour suivre l'utilisation de la mémoire VmPeak, VmRSS et VmSize, pour le processus apache. Vous pouvez modifier cela en fonction de vos besoins (il suffit de pointer vers le bon fichier PID et de modifier le nom du composant si nécessaire).

Le graphique qu'il génère ressemble à ceci (VmPeak et VmSize sont identiques dans cet exemple, vous n'en voyez donc qu'un) :

Remarque : cela ne surveille que le processus apache principal et ne montre pas l'utilisation de la mémoire de ses processus enfants.

#!/bin/bash
#
# Parameters:
#
#       config   (required)
#       autoconf (optional - used by munin-config)
#

COMPONENT_NAME="Apache"
COMPONENT_PID_FILE="/var/run/apache2.pid"

if [ "$1" = "autoconf" ]; then
        if [ -r /proc/stat ]; then
                echo yes
                exit 0
        else
                echo "no (/proc/stat not readable)"
                exit 1
        fi
fi

if [ "$1" = "config" ]; then   
        echo "graph_title $COMPONENT_NAME memory usage"
        echo 'graph_vlabel'
        echo "graph_category Processes"
        echo "graph_info This graph shows the amount of memory used by the $COMPONENT_NAME processes"
        echo "${COMPONENT_NAME}_vmpeak.label $COMPONENT_NAME VmPeak"
        echo "${COMPONENT_NAME}_vmsize.label $COMPONENT_NAME VmSize"
        echo "${COMPONENT_NAME}_vmrss.label $COMPONENT_NAME VmRSS"
        echo 'graph_args --base 1024'
        exit 0
fi

check_memory ()
# $1 - PID location
# $2 - process_label
{
        pid_location=$1
        process_label=$2
        read pid < $pid_location
        procpath="/proc/$pid/status"
        if [ ! -e $procpath ]  || [ -z $pid ]
        then
                echo "${process_label}_vmpeak.value 0"
                echo "${process_label}_vmsize.value 0"
                echo "${process_label}_vmrss.value 0"
                exit 0
        fi

        VmPeak=`grep VmPeak /proc/$pid/status|awk '{print $2}'`
        VmSize=`grep VmSize /proc/$pid/status|awk '{print $2}'`
        VmRSS=`grep VmRSS /proc/$pid/status|awk '{print $2}'`

        echo "${process_label}_vmpeak.value $(( $VmPeak * 1024 ))"
        echo "${process_label}_vmsize.value $(( $VmSize * 1024 ))"
        echo "${process_label}_vmrss.value $(( $VmRSS * 1024 ))"
}

check_memory $COMPONENT_PID_FILE $COMPONENT_NAME

Solution 2 :

Il existe des outils que vous pouvez utiliser lors du démarrage d'un processus qui vous donnent un résumé de l'utilisation de la mémoire une fois le processus terminé :

  • memtime
  • c'est l'heure

L'heure GNU donne également le pic d'utilisation de la mémoire lorsqu'il est exécuté avec l'option -v. Notez que bash a également une commande intégrée appelée time, vous devrez donc peut-être spécifier le chemin complet vers l'heure GNU lors de son invocation, par exemple, /usr/bin/time -v command . De plus, méfiez-vous que les anciennes versions de l'heure GNU ont un bogue où les résultats sont incorrectement multipliés par 4, par exemple, vérifiez le lien suivant :https://bugzilla.redhat.com/show_bug.cgi?id=702826


Linux
  1. Utilisation de la mémoire Linux

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

  3. Linux - Limiter l'utilisation de la mémoire pour un seul processus Linux ?

  4. Linux - Utilisation réelle de la mémoire ?

  5. Utilisation maximale de la mémoire d'un processus Linux/Unix

Mesurer l'utilisation de RAM d'un programme ?

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

Récupérer l'utilisation du processeur et l'utilisation de la mémoire d'un seul processus sous Linux ?

Limitation de l'utilisation de la mémoire de processus/du processeur sous Linux

Utilisation de la mémoire de la commande TOP

Invoquer et suivre l'utilisation de la mémoire d'un processus