আমি একটি প্রক্রিয়াটির মেমরির ব্যবহার নিরীক্ষণ করতে চাই এবং আমি এই ডেটা লগ হতে চাই। এ জাতীয় সরঞ্জাম কি বিদ্যমান?
আমি একটি প্রক্রিয়াটির মেমরির ব্যবহার নিরীক্ষণ করতে চাই এবং আমি এই ডেটা লগ হতে চাই। এ জাতীয় সরঞ্জাম কি বিদ্যমান?
উত্তর:
এটি করার জন্য আমি একটি স্ক্রিপ্ট লিখেছি । এটি ps
একটি নির্দিষ্ট প্রক্রিয়াটির প্রোফাইল তৈরির জন্য মূলত নির্দিষ্ট বিরতিতে নমুনা দেয়। প্রক্রিয়াটি নিজেই পর্যবেক্ষণ সরঞ্জাম দ্বারা চালু করা যেতে পারে, বা এটি একটি স্বাধীন প্রক্রিয়া হতে পারে (পিড বা কমান্ড প্যাটার্ন দ্বারা নির্দিষ্ট)।
কখনও কখনও যখন প্রয়োজন দেখা দেয় তখন আমি কেবল এটি করি:
$ top -d 1 -b |grep <process> >>somefile
এটি একটি মার্জিত সমাধান নয়, তবে যদি আপনি আপনার অনুমানটি যাচাই করার জন্য দ্রুত অশোধিত মান চান তবে কাজটি সম্পন্ন করে gets
grep --line-buffered <process> >>somefile
বাফারিং ছাড়াই প্রতিটি লাইনে আউটপুট
sar
সিস্টেস্ট প্যাকেজটির ( সিস্টেম অ্যাক্টিভিটি রিপোর্টার ) এর মতো ক্ষেত্রে আপনার বন্ধু।
আর একটি উপায় হ'ল historicalতিহাসিক তথ্যগুলির সাথে মিলিত পর্যবেক্ষণ করা হবে, যেমন মুনিন, পিএনপিওএনজিওস, আরডটোলস, ...
sar
কেবল একটি প্রক্রিয়াতে কেন্দ্রীভূত করা যায়? বেশিরভাগ ক্ষেত্রে এটি পুরো সিস্টেমটিকে পর্যবেক্ষণ করে বলে মনে হচ্ছে
pidstat
Sysstat প্যাকেজ থেকে কমান্ড এছাড়াও একক প্রক্রিয়া পরিসংখ্যান রিপোর্ট করার জন্য একটি মোটামুটি চমৎকার ইন্টারফেস প্রদান করে।
আপনি ভালগ্রাইন্ড চেষ্টা করতে পারেন ।
গতিশীল বিশ্লেষণ সরঞ্জাম তৈরির জন্য ভ্যালগ্রাইন্ড একটি উপকরণ কাঠামো। ভ্যালগ্রাইন্ড সরঞ্জামগুলি রয়েছে যা স্বয়ংক্রিয়ভাবে অনেকগুলি মেমরি পরিচালনা এবং থ্রেডিং বাগগুলি সনাক্ত করতে পারে এবং আপনার প্রোগ্রামগুলিকে বিশদভাবে প্রোফাইল করতে পারে। আপনি নতুন সরঞ্জাম তৈরি করতে ভালগ্র্যান্ড ব্যবহার করতে পারেন।
ভালগ্র্যান্ড বিতরণে বর্তমানে ছয়টি উত্পাদন-মানের সরঞ্জাম রয়েছে: একটি মেমরি ত্রুটি সনাক্তকারী , দুটি থ্রেড ত্রুটি সনাক্তকারী, একটি ক্যাশে এবং শাখা-পূর্বাভাস প্রোফাইলার, একটি কল-গ্রাফ উত্পন্নকারী ক্যাশে এবং শাখা-ভবিষ্যদ্বাণীকারী প্রোফাইলার এবং একটি হিপ প্রোফাইলার ।
আমি শ্রীধরের সহজ উত্তরটি পছন্দ করি তবে তার চেষ্টা করার আগে আমি আমার নিজের ঘূর্ণিত:
import json, psutil, datetime, time
with open('log.txt', 'w') as f:
while True:
json.dump((datetime.datetime.now().isoformat(),
psutil.Process(7274).memory_info()._asdict()), f)
f.write('\n')
f.flush()
time.sleep(1)
এটি কাঠামোগত আউটপুট চাইলে এটি মূলত কার্যকর। উপযুক্ত হিসাবে 7274 পরিবর্তন করুন। পাইথন 3.5। কিছু কিছু ভেঙে গেছে _asdict()
, তাই পাইথন 2 ব্যবহার করুন।
আউটপুট ফাইলটি দেখে মনে হচ্ছে:
["2019-03-19T11:21:53.784670", {"rss": 220389376, "vms": 538984448, "shared": 15724544, "text": 303104, "lib": 0, "data": 221364224, "dirty": 0}]
["2019-03-19T11:21:54.786136", {"rss": 220438528, "vms": 539119616, "shared": 15724544, "text": 303104, "lib": 0, "data": 221499392, "dirty": 0}]
["2019-03-19T11:21:55.787555", {"rss": 220495872, "vms": 539119616, "shared": 15724544, "text": 303104, "lib": 0, "data": 221499392, "dirty": 0}]
["2019-03-19T11:21:56.788754", {"rss": 220528640, "vms": 539119616, "shared": 15724544, "text": 303104, "lib": 0, "data": 221499392, "dirty": 0}]