GNU/Linux >> Tutoriales Linux >  >> Linux

Uso máximo de memoria de un proceso

Solución 1:

Puede obtener el uso máximo de memoria de un determinado proceso en:

grep VmPeak /proc/$PID/status  

(Cambie $PID a la identificación del proceso real que está buscando).

VmPeak es la cantidad máxima de memoria que ha utilizado el proceso desde que se inició.

Para rastrear el uso de la memoria de un proceso a lo largo del tiempo, puede usar una herramienta llamada munin para rastrear y mostrarle un gráfico agradable del uso de la memoria a lo largo del tiempo.

Munin viene con muchos complementos predeterminados para rastrear los recursos del sistema, sin embargo, no viene con un complemento para rastrear el uso máximo de memoria; afortunadamente, es extremadamente fácil escribir un complemento para él.

Aquí hay un ejemplo de un complemento munin para rastrear el uso de memoria VmPeak, VmRSS y VmSize, para el proceso de apache. Puede cambiar esto para adaptarlo a sus necesidades (simplemente señale el archivo PID correcto y cambie el nombre del componente según sea necesario).

El gráfico que genera se ve así (VmPeak y VmSize son iguales en este ejemplo, por lo que solo verá uno de ellos):

Nota: esto solo monitorea el proceso principal de apache y no muestra el uso de memoria de sus procesos secundarios.

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

Solución 2:

Hay herramientas que puede usar al iniciar un proceso que le brindan un resumen del uso de la memoria una vez que finaliza el proceso:

  • tiempo de memoria
  • hora

Tiempo de GNU también proporciona el uso máximo de memoria cuando se ejecuta con la opción -v. Tenga en cuenta que bash también tiene un comando incorporado llamado tiempo, por lo que es posible que deba especificar la ruta completa al tiempo de GNU cuando lo invoque, por ejemplo, /usr/bin/time -v comando . Además, tenga en cuenta que las versiones anteriores de GNU time tienen un error en el que los resultados se multiplican incorrectamente por 4, por ejemplo, consulte el siguiente enlace:https://bugzilla.redhat.com/show_bug.cgi?id=702826


Linux
  1. Uso de memoria de Linux

  2. Cómo verificar el uso de memoria del proceso con el comando pmap de Linux

  3. Linux:¿limitar el uso de memoria para un solo proceso de Linux?

  4. Linux – ¿Uso de memoria real?

  5. Uso máximo de memoria de un proceso Linux/Unix

Uso de memoria de comandos TOP

Invocar y rastrear el uso de memoria de un proceso

Limite el uso de memoria para un solo proceso de Linux

¿Cómo se informa el uso de la memoria en Linux?

Graficando el uso de la memoria del proceso en Linux

Ubuntu Linux:procesamiento de memoria de intercambio y uso de memoria