উত্তর:
আপনি এখানে একটি নির্দিষ্ট প্রক্রিয়ার শিখর মেমরির ব্যবহার পেতে পারেন:
grep VmPeak /proc/$PID/status
(আপনি যে প্রকৃত প্রক্রিয়া আইডিটি সন্ধান করছেন তাতে পিআইডি পরিবর্তন করুন)।
প্রক্রিয়াটি শুরু হওয়ার পর থেকে সর্বাধিক পরিমাণ মেমরি ব্যবহার করা ভিএমপিক।
সময়ের সাথে সাথে কোনও প্রক্রিয়ার মেমোরির ব্যবহার ট্র্যাক করার জন্য, আপনি ট্র্যাক করার জন্য মুনিন নামে একটি সরঞ্জাম ব্যবহার করতে পারেন এবং আপনাকে সময়ের সাথে সাথে মেমরির ব্যবহারের একটি দুর্দান্ত গ্রাফ প্রদর্শন করতে পারে।
মুনিন সিস্টেম রিসোর্সগুলি ট্র্যাক করার জন্য অনেকগুলি ডিফল্ট প্লাগইন নিয়ে আসে, তবে এটি পিক মেমরির ব্যবহার ট্র্যাক করার জন্য একটি প্লাগইন আসে না - ভাগ্যক্রমে, এটির জন্য একটি প্লাগইন লেখা অত্যন্ত সহজ।
অ্যাপাচি প্রক্রিয়াটির জন্য ভিএমপিক, ভিএমআরএসএস এবং ভিএম সাইজ মেমরির ব্যবহার ট্র্যাক করার জন্য মুনিন প্লাগইনের একটি উদাহরণ এখানে রয়েছে। আপনি আপনার প্রয়োজন অনুসারে এটি পরিবর্তন করতে পারেন (কেবলমাত্র সঠিক পিআইডি ফাইলের দিকে নির্দেশ করুন এবং প্রয়োজন অনুসারে উপাদানটির নাম পরিবর্তন করুন)।
যে গ্রাফটি এটির ফলাফল দেয় তা দেখতে এই রূপটি দেখায় (ভিএমপিক এবং ভিএমসাইজ এই উদাহরণে একই, সুতরাং আপনি কেবল তার মধ্যে একটি দেখতে পান):
দ্রষ্টব্য: এটি কেবলমাত্র প্রধান অ্যাপাচি প্রক্রিয়া পর্যবেক্ষণ করে এবং এটির শিশু প্রক্রিয়াগুলির মেমরির ব্যবহার দেখায় না।
#!/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
প্রক্রিয়া শুরু করার সময় আপনি ব্যবহার করতে পারেন এমন সরঞ্জামগুলি রয়েছে যা প্রক্রিয়া শেষ হয়ে গেলে আপনাকে মেমরির ব্যবহারের সংক্ষিপ্তসার দেয়:
জিএনইউ সময় -v বিকল্পের সাথে চালিত হয়ে পিক মেমরির ব্যবহার করে। নোট করুন যে বাশের একটি বিল্ট-ইন কমান্ডও নামক সময় রয়েছে, সুতরাং আপনাকে জিএনইউ সময়ের পুরো পথটি নির্দিষ্ট করার প্রয়োজন হতে পারে, যেমন, / usr / bin / সময় -v কমান্ড । তদুপরি, সাবধান হন যে জিএনইউ সময়ের পুরানো সংস্করণগুলিতে একটি বাগ রয়েছে যেখানে ফলাফলগুলি ভুলভাবে 4 দ্বারা গুণিত হয়, উদাহরণস্বরূপ, নীচের লিঙ্কটি দেখুন: https://bugzilla.redhat.com/show_bug.cgi?id=702826
যদি আপনি মন্থরতা মোকাবেলা করতে পারেন তবে এই উদ্দেশ্যটির জন্য আপনি valgrind
ম্যাসিফ সরঞ্জামটি দেখতে পাবেন কারণ এটি সময়ের সাথে সাথে হিপ (এবং সাধারণ স্মৃতি ব্যবহার --pages-as-heap=yes
করার সময়) কে বরাদ্দ দিতে পারে।