উত্তর:
এখানে একটি ওলাইনার রয়েছে যাতে কোনও বাহ্যিক স্ক্রিপ্ট বা ইউটিলিটিগুলির প্রয়োজন হয় না এবং আপনাকে ভালগ্রাইন্ড বা সময়ের মতো অন্য প্রোগ্রামের মাধ্যমে প্রক্রিয়া শুরু করার প্রয়োজন হয় না, তাই আপনি ইতিমধ্যে চলমান যে কোনও প্রক্রিয়ার জন্য এটি ব্যবহার করতে পারেন:
grep VmPeak /proc/$PID/status
( $PID
আপনার আগ্রহী প্রক্রিয়ার পিআইডি দিয়ে প্রতিস্থাপন করুন )
[ সম্পাদনা করুন : উবুন্টু 14.04 এ কাজ করে: /usr/bin/time -v command
পুরো পথটি ব্যবহার নিশ্চিত করে নিন]]
দেখে মনে হচ্ছে /usr/bin/time
যেন আপনি পাস করেন তবে সেই তথ্য আপনাকে দেয় -v
(এটি উবুন্টু 8.10 তে রয়েছে)। উদাহরণস্বরূপ, Maximum resident set size
নীচে দেখুন:
/ ইউএসআর / বিন / সময় -ভিএস এলএস / .... কমান্ড সময় নির্ধারণ করা হচ্ছে: "এলএস /" ব্যবহারকারীর সময় (সেকেন্ড): 0.00 সিস্টেম সময় (সেকেন্ড): 0.01 সিপিইউর শতাংশ এই কাজটি পেয়েছে: 250% অতিবাহিত (প্রাচীরের ঘড়ি) সময় (এইচ: মিমি: এসএস বা এম: এস): 0: 00.00 গড় ভাগ করে নেওয়া পাঠ্যের আকার (কেবিটাইটস): 0 গড় না ভাগ করা ডেটা আকার (কেবিটাইটস): 0 গড় স্ট্যাক আকার (কেবিটাইটস): 0 গড় মোট আকার (কেবিটস): 0 সর্বাধিক আবাসিক সেট আকার (কেবিটাইটস): 0 গড় আবাসিক সেট আকার (কেবিটাইটস): 0 মেজর (আই / ও প্রয়োজন) পৃষ্ঠার ত্রুটি: 0 মাইনর (একটি ফ্রেম পুনরায় দাবি করা) পৃষ্ঠা ত্রুটি: 315 স্বেচ্ছাসেবী প্রসঙ্গে সুইচ: 2 অচ্ছল প্রসঙ্গটি পরিবর্তন করে: 0 অদলবদল: 0 ফাইল সিস্টেম ইনপুট: 0 ফাইল সিস্টেম আউটপুট: 0 সকেট বার্তা প্রেরণ: 0 সকেট বার্তা প্রাপ্ত: 0 সিগন্যাল বিতরণ: 0 পৃষ্ঠার আকার (বাইট): 4096 প্রস্থান স্থিতি: 0
/bin/time -v
এটি সমাধান করে।
time -l
ম্যাকওএসে চেষ্টা করুন, অনুরূপ আউটপুট দেয়।
(এটি ইতিমধ্যে উত্তর, পুরানো প্রশ্ন .. তবে কেবল রেকর্ডের জন্য :)
আমি ইয়াংয়ের স্ক্রিপ্ট দ্বারা অনুপ্রাণিত হয়ে মেমাসগ নামের এই ছোট সরঞ্জামটি নিয়ে এসেছি । আমি খুব সংক্ষিপ্ত জীবনযাত্রার প্রক্রিয়া পরিচালনা করতে কেবল নমুনার হারকে 0.1 তে বাড়িয়েছি। একটি একক প্রক্রিয়া পর্যবেক্ষণের পরিবর্তে, আমি এটিকে প্রক্রিয়া গোষ্ঠীর আরএসএস যোগ পরিমাপ করেছি। (হ্যাঁ, আমি একসঙ্গে কাজ করে এমন অনেকগুলি পৃথক প্রোগ্রাম লিখি) এটি বর্তমানে ম্যাক ওএস এক্স এবং লিনাক্সে কাজ করে। ব্যবহারের মতো হতে হবে time
:
memusg ls -alR /> / dev / নাল
এটি কেবল মুহুর্তের শীর্ষটি দেখায় তবে আমি অন্যান্য (রুক্ষ) পরিসংখ্যান রেকর্ড করার জন্য সামান্য বর্ধনে আগ্রহী।
আমরা কোনও গুরুতর প্রোফাইলিং শুরু করার আগে কেবল একবার দেখার জন্য এমন সাধারণ সরঞ্জামটি রাখা ভাল।
ps -o rss=
যেখানে দেখানো মানগুলি দেখে ।
ভালগ্রাইন্ড ওয়ান-লাইনার:
valgrind --tool=massif --pages-as-heap=yes --massif-out-file=massif.out ./test.sh; grep mem_heap_B massif.out | sed -e 's/mem_heap_B=\(.*\)/\1/' | sort -g | tail -n 1
কোনও প্রক্রিয়াতে সমস্ত স্মৃতি মাপতে --pages-as-heap ব্যবহারের নোট করুন। এখানে আরও তথ্য: http://valgrind.org/docs/manual/ms-manual.html
time
, আমি তোমাকে ত্যাগ করতেছি.
valgrind --massif
। আপনি ms_print
সহজেই আউটপুট (সময়ের সাথে সাথে
time
যদিও এর চেয়ে অনেক বেশি ওভারহেড রাখে , কমপক্ষে কমপক্ষে 10 গুণ বেশি সময় নেয় ls
।
লিনাক্সে:
/usr/bin/time -v <program> <args>
" সর্বাধিক আবাসিক সেট আকার " ব্যবহার করুন এবং দেখুন ।
(বাশ time
অন্তর্নির্মিত কমান্ডের সাথে বিভ্রান্ত হওয়ার দরকার নেই ! সুতরাং পুরো পথটি ব্যবহার করুন , /usr/bin/time
)
উদাহরণ স্বরূপ:
> /usr/bin/time -v ./myapp
User time (seconds): 0.00
. . .
Maximum resident set size (kbytes): 2792
. . .
বিএসডি, ম্যাকোজে:
/usr/bin/time -l <program> <args>
" সর্বাধিক বাসিন্দার সেট আকার " খুঁজছেন ব্যবহার করুন :
>/usr/bin/time -l ./myapp
0.01 real 0.00 user 0.00 sys
1440 maximum resident set size
. . .
sudo apt-get install time
সম্ভবত (gnu) সময় (1) ইতিমধ্যে আপনি যা চান তা করে। এই ক্ষেত্রে:
$ /usr/bin/time -f "%P %M" command
43% 821248
তবে অন্যান্য প্রোফাইলিং সরঞ্জামগুলি আপনি যা খুঁজছেন তার উপর নির্ভর করে আরও সঠিক ফলাফল দিতে পারে।
time
ব্যবহার করার সময় একটি বিল্ট ইন কমান্ড csh
। আপনি যদি সঠিক পথটি ব্যবহার করেন তবে এটি আপনাকে বাহ্যিক কমান্ড চালানোর অনুমতি দেবে। আমি যতদূর জানি, কেবল জিএনইউ সংস্করণ বিন্যাস বিকল্পটি সমর্থন করে।
/ usr / বিন / সময় সম্ভবত আপনি যা চান তা করতে পারে। কিছুটা এইরকম.
/ usr / বিন / সময় - ফর্ম্যাট = '(% এক্সটেক্সট +% ডিডাটা% এমএমএক্স)'
বিশদ জন্য সময় (1) দেখুন ...
ম্যাকওএস সিয়েরায় ব্যবহার করুন:
/usr/bin/time -l commandToMeasure
আপনি grep
যা চান তা নিতে আপনি ব্যবহার করতে পারেন।
command time -l
পরিবর্তে ব্যবহার করতে পারেন /usr/bin/time -l
যার ফলে আপনার শেলটি time
বিল্টিন ফাংশনের পরিবর্তে আসলে একটি বাইনারি কল করতে পারে। (হ্যাঁ, command
কোনও স্থানধারক নয়, command time
ন্যায় বিচারের চেয়ে আলাদা time
))
যদি প্রক্রিয়াটি কমপক্ষে কয়েক সেকেন্ডের জন্য চলতে থাকে তবে আপনি নিম্নলিখিত বাশ স্ক্রিপ্টটি ব্যবহার করতে পারেন যা প্রদত্ত কমান্ড লাইনটি চালাবে তারপরে শীর্ষস্থানীয় আরএসএসকে স্ট্রার্ড করতে মুদ্রণ করুন ( rss
আপনার আগ্রহী অন্য কোনও বৈশিষ্ট্যের বিকল্প )। এটি কিছুটা হালকা ওজনের, এবং এটি ps
উবুন্টু 9.04 এর অন্তর্ভুক্ত (যা আমি বলতে পারি না time
) সাথে কাজ করে।
#!/usr/bin/env bash
"$@" & # Run the given command line in the background.
pid=$! peak=0
while true; do
sleep 1
sample="$(ps -o rss= $pid 2> /dev/null)" || break
let peak='sample > peak ? sample : peak'
done
echo "Peak: $peak" 1>&2
ঠিক আছে, আপনি যদি সত্যিই মেমরির শিখর এবং আরও কিছু গভীর-পরিসংখ্যান প্রদর্শন করতে চান তবে আমি ভালগ্রাইন্ডের মতো কোনও প্রোফাইলার ব্যবহার করার পরামর্শ দিই । একটি ভাল ভালগ্রাইন্ড ফ্রন্ট-এন্ড হ'ল এলিওপ ।
এটি করার জন্য আপনি ভালগ্রাইন্ডের মতো একটি সরঞ্জাম ব্যবহার করতে পারেন ।
এখানে (অন্যান্য উত্তরের উপর ভিত্তি করে) একটি খুব সহজ স্ক্রিপ্ট যা ইতিমধ্যে চলমান প্রক্রিয়াটি দেখে। আপনি যে প্রক্রিয়াটি তর্ক হিসাবে দেখতে চান তা কেবলমাত্র এটির পিড দিয়ে চালান:
#!/usr/bin/env bash
pid=$1
while ps $pid >/dev/null
do
ps -o vsz= ${pid}
sleep 1
done | sort -n | tail -n1
ব্যবহারের উদাহরণ:
max_mem_usage.sh 23423
ম্যাসিফ ব্যবহার করুন: http://valgrind.org/docs/manual/ms-manual.html
Heaptrack হল সরঞ্জাম যা একটি জিইউআই এবং পাঠ্য ইন্টারফেস করে। কোনও প্রক্রিয়ার মেমরির ব্যবহার বোঝার জন্য আমি ভালগ্রাইন্ডের চেয়ে বেশি উপযুক্ত বলে মনে করি কারণ এটি আরও বিশদ এবং ফ্লেগ্রাফিক্স সরবরাহ করে। এটি আরও দ্রুত কারণ এটি যে ভালগ্রাইন্ডটি পরীক্ষা করে কম করে। এবং এটি আপনাকে পিক মেমরির ব্যবহার দেয়।
যাইহোক, আরএসএস এবং ভিএসএস ট্র্যাকিং বিভ্রান্তিমূলক কারণ পৃষ্ঠাগুলি ভাগ করা যায়, এজন্যই memusg
। আপনি কি সত্যিই কি করা উচিত এর সমষ্টি ট্র্যাক হয় Pss
মধ্যে /proc/[pid]/smaps
বা ব্যবহারের pmap
। জিনোম সিস্টেম-মনিটর এটি করত তবে এটি খুব ব্যয়বহুল।
চাকাটি পুনরায় উদ্ভাবন করা, হাতে তৈরি বাশ স্ক্রিপ্ট সহ। দ্রুত এবং পরিষ্কার।
আমার ব্যবহারের ক্ষেত্রে: আমি এমন লিনাক্স মেশিনটি পর্যবেক্ষণ করতে চেয়েছিলাম যার র্যাম কম থাকে এবং ভারী ব্যবহারের অধীনে চলার সময় প্রতি ধারক ব্যবহারের স্ন্যাপশট নিতে চেয়েছিলাম।
#!/usr/bin/env bash
threshold=$1
echo "$(date '+%Y-%m-%d %H:%M:%S'): Running free memory monitor with threshold $threshold%.."
while(true)
freePercent=`free -m | grep Mem: | awk '{print ($7/$2)*100}'`
do
if (( $(awk 'BEGIN {print ("'$freePercent'" < "'$threshold'")}') ))
then
echo "$(date '+%Y-%m-%d %H:%M:%S'): Free memory $freePercent% is less than $threshold%"
free -m
docker stats --no-stream
sleep 60
echo ""
else
echo "$(date '+%Y-%m-%d %H:%M:%S'): Sufficient free memory available: $freePercent%"
fi
sleep 30
done
নমুনা আউটপুট:
2017-10-12 13:29:33: 30% থ্রেশহোল্ড সহ বিনামূল্যে মেমরি মনিটর চালনা করা হচ্ছে ..
2017-10-12 13:29:33: পর্যাপ্ত ফ্রি মেমরি উপলব্ধ: 69.4567%
2017-10-12 13:30:03: পর্যাপ্ত ফ্রি মেমরি উপলব্ধ: 69.4567%
2017-10-12 16:47:02: ফ্রি মেমরি 18.9387% 30% এর চেয়ে কম
আপনার কাস্টম কমান্ড আউটপুট
ম্যাকোজে, আপনি পরিবর্তে ডিট্রেস ব্যবহার করতে পারেন। "ইনস্ট্রুমেন্টস" অ্যাপটি তার জন্য একটি দুর্দান্ত জিইউআই, এটি এক্সকোড আফাইক নিয়ে আসে।
কোন প্রক্রিয়া কতটা র্যাম ব্যবহার করছে তা দেখার জন্য 'হটোপ' সেরা কমান্ড .....
আরো বিস্তারিত জন্য http://manpages.ubuntu.com/manpages/precise/man1/htop.1.html
প্রশ্নের উত্তর দিতে ভুলবেন না দয়া করে। বিশদ সরবরাহ করুন এবং আপনার গবেষণা ভাগ করুন!
দুঃখিত, আমি এখানে প্রথমবার এসেছি এবং কেবলমাত্র প্রশ্ন জিজ্ঞাসা করতে পারি ...
ব্যবহৃত প্রস্তাবিত:
valgrind --tool=massif --pages-as-heap=yes --massif-out-file=massif.out ./test.sh; grep mem_heap_B massif.out | sed -e 's/mem_heap_B=\(.*\)/\1/' | sort -g | tail -n 1
তারপর:
grep mem_heap_B massif.out
...
mem_heap_B=1150976
mem_heap_B=1150976
...
top
কমান্ড একই মুহুর্তে যা দেখায় তার থেকে এটি খুব আলাদা :
14673 gu27mox 20 0 3280404 468380 19176 R 100.0 2.9 6:08.84 pwanew_3pic_com
ভালগ্রাইন্ড থেকে পরিমাপক ইউনিটগুলি কী কী ??
/usr/bin/time -v ./test.sh
এর উত্তরে কখনো - আপনি সরাসরি এক্সিকিউটেবল ভোজন আবশ্যক /usr/bin/time
মত:
/usr/bin/time -v pwanew_3pic_compass_2008florian3_dfunc.static card_0.100-0.141_31212_resubmit1.dat_1.140_1.180 1.140 1.180 31212
Command being timed: "pwanew_3pic_compass_2008florian3_dfunc.static card_0.100-0.141_31212_resubmit1.dat_1.140_1.180 1.140 1.180 31212"
User time (seconds): 1468.44
System time (seconds): 7.37
Percent of CPU this job got: 99%
Elapsed (wall clock) time (h:mm:ss or m:ss): 24:37.14
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 574844
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 74
Minor (reclaiming a frame) page faults: 468880
Voluntary context switches: 1190
Involuntary context switches: 20534
Swaps: 0
File system inputs: 81128
File system outputs: 1264
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0