GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Maximale Speicherauslastung eines Prozesses

Lösung 1:

Sie können die maximale Speicherauslastung eines bestimmten Prozesses abrufen unter:

grep VmPeak /proc/$PID/status  

(Ändern Sie $PID in die tatsächliche Prozess-ID, nach der Sie suchen).

VmPeak ist die maximale Speichermenge, die der Prozess seit seinem Start verwendet hat.

Um die Speichernutzung eines Prozesses im Laufe der Zeit zu verfolgen, können Sie ein Tool namens munin verwenden, um die Speichernutzung im Laufe der Zeit zu verfolgen und Ihnen ein schönes Diagramm der Speichernutzung zu zeigen.

Munin wird mit vielen Standard-Plugins geliefert, um Systemressourcen zu verfolgen, jedoch nicht mit einem Plugin, um die maximale Speichernutzung zu verfolgen - glücklicherweise ist es extrem einfach, ein Plugin dafür zu schreiben.

Hier ist ein Beispiel für ein Munin-Plugin zum Verfolgen der VmPeak-, VmRSS- und VmSize-Speichernutzung für den Apache-Prozess. Sie können dies an Ihre Bedürfnisse anpassen (zeigen Sie einfach auf die richtige PID-Datei und ändern Sie den Komponentennamen nach Bedarf).

Das ausgegebene Diagramm sieht folgendermaßen aus (VmPeak und VmSize sind in diesem Beispiel gleich, sodass Sie nur eines davon sehen):

Hinweis: dies überwacht nur den Apache-Hauptprozess und zeigt nicht die Speichernutzung seiner untergeordneten Prozesse.

#!/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

Lösung 2:

Es gibt Tools, die Sie beim Starten eines Prozesses verwenden können, die Ihnen nach Abschluss des Prozesses eine Zusammenfassung der Speichernutzung liefern:

  • Erinnerungszeit
  • Zeit

GNU-Zeit gibt auch die maximale Speicherauslastung an, wenn es mit der Option -v ausgeführt wird. Beachten Sie, dass Bash auch einen eingebauten Befehl namens time hat, daher müssen Sie möglicherweise den vollständigen Pfad zu GNU time angeben, wenn Sie es aufrufen, z. B. /usr/bin/time -v command . Beachten Sie außerdem, dass ältere Versionen von GNU Time einen Fehler haben, bei dem die Ergebnisse fälschlicherweise mit 4 multipliziert werden, überprüfen Sie z. B. den folgenden Link:https://bugzilla.redhat.com/show_bug.cgi?id=702826


Linux
  1. So überprüfen Sie die Speichernutzung des Prozesses mit dem Linux-pmap-Befehl

  2. Linux – Speichernutzung für einen einzelnen Linux-Prozess begrenzen?

  3. Wie kann ich die tatsächliche Speichernutzung einer Anwendung oder eines Prozesses messen?

  4. Maximale Speicherauslastung eines Linux/Unix-Prozesses

  5. CPU-Auslastung und Speicherauslastung eines einzelnen Prozesses unter Linux abrufen?

Begrenzung der Prozessspeicher-/CPU-Nutzung unter Linux

Speicherauslastung des TOP-Befehls

Aufrufen und Verfolgen der Speichernutzung eines Prozesses

Begrenzen Sie die Speichernutzung für einen einzelnen Linux-Prozess

Grafische Darstellung der Prozessspeichernutzung unter Linux

Ubuntu Linux:Auslagerungsspeicher und Speichernutzung verarbeiten