आप एक निश्चित प्रक्रिया का चरम मेमोरी उपयोग प्राप्त कर सकते हैं:
grep VmPeak /proc/$PID/status
(उस वास्तविक प्रक्रिया आईडी में $ PID बदलें जो आप खोज रहे हैं)।
VmPeak स्मृति की अधिकतम मात्रा है जो इस प्रक्रिया का उपयोग करती है क्योंकि इसे शुरू किया गया था।
समय के साथ किसी प्रक्रिया के मेमोरी उपयोग को ट्रैक करने के लिए, आप ट्रैक करने के लिए मुनिन नामक टूल का उपयोग कर सकते हैं , और आपको समय के साथ मेमोरी उपयोग का एक अच्छा ग्राफ दिखा सकते हैं।
सिस्टम संसाधनों को ट्रैक करने के लिए मुनिन कई डिफ़ॉल्ट प्लगइन्स के साथ आता है, हालांकि यह पीक मेमोरी उपयोग को ट्रैक करने के लिए एक प्लगइन के साथ नहीं आता है - सौभाग्य से, इसके लिए एक प्लगइन लिखना बेहद आसान है।
Apache प्रक्रिया के लिए VmPeak, VmRSS और VmSize मेमोरी उपयोग को ट्रैक करने के लिए एक मुनिन प्लगइन का उदाहरण दिया गया है। आप अपनी आवश्यकताओं के अनुरूप इसे बदल सकते हैं (केवल सही PID फ़ाइल को इंगित करें और आवश्यकतानुसार घटक नाम बदलें)।
यह जो आउटपुट देता है वह इस तरह दिखता है (VmPeak और VmSize इस उदाहरण में समान हैं, इसलिए आप केवल उनमें से एक को देखते हैं):
नोट: यह केवल मुख्य अपाचे प्रक्रिया पर नज़र रखता है, और यह बच्चे की प्रक्रियाओं की स्मृति उपयोग नहीं दिखाता है।
#!/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