একটি প্রক্রিয়াটির পিক মেমরির ব্যবহার


12

শীর্ষ এবং পিএস এর মতো সরঞ্জামগুলি আমাকে বর্তমানে কোনও প্রক্রিয়াতে বরাদ্দকৃত মেমরির পরিমাণ দিতে পারে, তবে আমি কোনও প্রক্রিয়া তৈরির পরে বা নির্দিষ্ট সময়ের ব্যবধানে বরাদ্দ হওয়া মেমরির সর্বাধিক পরিমাণ পরিমাপ করতে আগ্রহী। কীভাবে সন্ধান করবেন সে সম্পর্কে কোনও পরামর্শ?

উত্তর:


22

আপনি এখানে একটি নির্দিষ্ট প্রক্রিয়ার শিখর মেমরির ব্যবহার পেতে পারেন:

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

3

প্রক্রিয়া শুরু করার সময় আপনি ব্যবহার করতে পারেন এমন সরঞ্জামগুলি রয়েছে যা প্রক্রিয়া শেষ হয়ে গেলে আপনাকে মেমরির ব্যবহারের সংক্ষিপ্তসার দেয়:

জিএনইউ সময় -v বিকল্পের সাথে চালিত হয়ে পিক মেমরির ব্যবহার করে। নোট করুন যে বাশের একটি বিল্ট-ইন কমান্ডও নামক সময় রয়েছে, সুতরাং আপনাকে জিএনইউ সময়ের পুরো পথটি নির্দিষ্ট করার প্রয়োজন হতে পারে, যেমন, / usr / bin / সময় -v কমান্ড । তদুপরি, সাবধান হন যে জিএনইউ সময়ের পুরানো সংস্করণগুলিতে একটি বাগ রয়েছে যেখানে ফলাফলগুলি ভুলভাবে 4 দ্বারা গুণিত হয়, উদাহরণস্বরূপ, নীচের লিঙ্কটি দেখুন: https://bugzilla.redhat.com/show_bug.cgi?id=702826


0

যদি আপনি মন্থরতা মোকাবেলা করতে পারেন তবে এই উদ্দেশ্যটির জন্য আপনি valgrindম্যাসিফ সরঞ্জামটি দেখতে পাবেন কারণ এটি সময়ের সাথে সাথে হিপ (এবং সাধারণ স্মৃতি ব্যবহার --pages-as-heap=yesকরার সময়) কে বরাদ্দ দিতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.