Anda bisa mendapatkan penggunaan memori puncak dari proses tertentu, di:
grep VmPeak /proc/$PID/status
(Ubah $ PID ke id proses aktual yang Anda cari).
VmPeak adalah jumlah maksimum memori yang telah digunakan proses sejak dimulai.
Untuk melacak penggunaan memori dari suatu proses dari waktu ke waktu, Anda dapat menggunakan alat yang disebut munin untuk melacak, dan menunjukkan kepada Anda grafik penggunaan memori dari waktu ke waktu.
Munin hadir dengan banyak plugin default untuk melacak sumber daya sistem, namun ia tidak dilengkapi dengan plugin untuk melacak penggunaan memori Peak - sayangnya, sangat mudah untuk menulis sebuah plugin untuknya.
Berikut adalah contoh plugin munin untuk melacak penggunaan memori VmPeak, VmRSS dan VmSize, untuk proses apache. Anda dapat mengubah ini sesuai dengan kebutuhan Anda (cukup arahkan ke file PID yang tepat dan ubah nama komponen sesuai kebutuhan).
Grafik yang dihasilkannya terlihat seperti ini (VmPeak dan VmSize sama dalam contoh ini, jadi Anda hanya melihat salah satunya):
Catatan: ini hanya memonitor proses apache utama, dan tidak menunjukkan penggunaan memori dari proses anak itu.
#!/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