Você pode obter o pico de uso de memória de um determinado processo em:
grep VmPeak /proc/$PID/status
(Altere o $ PID para o ID do processo real que você está procurando).
VmPeak é a quantidade máxima de memória que o processo usou desde que foi iniciado.
Para rastrear o uso de memória de um processo ao longo do tempo, você pode usar uma ferramenta chamada munin para rastrear e mostra um bom gráfico do uso da memória ao longo do tempo.
O Munin vem com muitos plugins padrão para rastrear recursos do sistema, no entanto, ele não vem com um plugin para rastrear o uso de memória Peak - felizmente, é extremamente fácil escrever um plugin para ele.
Aqui está um exemplo de um plugin munin para rastrear o uso de memória VmPeak, VmRSS e VmSize, para o processo apache. Você pode alterar isso para atender às suas necessidades (basta apontar para o arquivo PID correto e alterar o nome do componente conforme necessário).
O gráfico que ele produz se parece com isso (VmPeak e VmSize são os mesmos neste exemplo, então você só vê um deles):
Observação:issomonitoraapenasoprocessoprincipaldoapacheenãomostraousodememóriadeseusprocessosfilhos.
#!/bin/bash##Parameters:##config(required)#autoconf(optional-usedbymunin-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