এমন কোনও সরঞ্জাম আছে যা মেমরির ব্যবহার লগ করতে দেয়?


18

আমি একটি প্রক্রিয়াটির মেমরির ব্যবহার নিরীক্ষণ করতে চাই এবং আমি এই ডেটা লগ হতে চাই। এ জাতীয় সরঞ্জাম কি বিদ্যমান?


1
আমি মনে করি যে কোনও প্রক্রিয়া মেমরির ব্যবহারের জন্য প্রোগ্রামগতভাবে নিরীক্ষণ সম্পর্কে এই লিঙ্কটি আপনার প্রয়োজনীয়তা সমাধানের জন্য কার্যকর হবে।
সেন

উত্তর:


8

এটি করার জন্য আমি একটি স্ক্রিপ্ট লিখেছি । এটি psএকটি নির্দিষ্ট প্রক্রিয়াটির প্রোফাইল তৈরির জন্য মূলত নির্দিষ্ট বিরতিতে নমুনা দেয়। প্রক্রিয়াটি নিজেই পর্যবেক্ষণ সরঞ্জাম দ্বারা চালু করা যেতে পারে, বা এটি একটি স্বাধীন প্রক্রিয়া হতে পারে (পিড বা কমান্ড প্যাটার্ন দ্বারা নির্দিষ্ট)।


1
সিরাপি আপাতদৃষ্টিতে github.com/jeetsukumaran/Syrupy এ চলে গেছে
ফ্রেমেস্টার

12

কখনও কখনও যখন প্রয়োজন দেখা দেয় তখন আমি কেবল এটি করি:

$ top -d 1 -b |grep <process> >>somefile

এটি একটি মার্জিত সমাধান নয়, তবে যদি আপনি আপনার অনুমানটি যাচাই করার জন্য দ্রুত অশোধিত মান চান তবে কাজটি সম্পন্ন করে gets


আমার মনে হয় এটা হল এটা সরলতা মধ্যে মার্জিত। আপনি grep --line-buffered <process> >>somefileবাফারিং ছাড়াই প্রতিটি লাইনে আউটপুট
দেওয়ার জন্য গ্রেপকে

7

sarসিস্টেস্ট প্যাকেজটির ( সিস্টেম অ্যাক্টিভিটি রিপোর্টার ) এর মতো ক্ষেত্রে আপনার বন্ধু।

আর একটি উপায় হ'ল historicalতিহাসিক তথ্যগুলির সাথে মিলিত পর্যবেক্ষণ করা হবে, যেমন মুনিন, পিএনপিওএনজিওস, আরডটোলস, ...


1
তবে sarকেবল একটি প্রক্রিয়াতে কেন্দ্রীভূত করা যায়? বেশিরভাগ ক্ষেত্রে এটি পুরো সিস্টেমটিকে পর্যবেক্ষণ করে বলে মনে হচ্ছে
xenoterracide

3
pidstatSysstat প্যাকেজ থেকে কমান্ড এছাড়াও একক প্রক্রিয়া পরিসংখ্যান রিপোর্ট করার জন্য একটি মোটামুটি চমৎকার ইন্টারফেস প্রদান করে।
স্টিভেন ডি

@ এক্সেনোটেরাসাইড স্টিভেন ডি এর উত্তর ছিল। আমি এই আদেশ আগে জানতাম না।
খ্রিস্টান

4

উপরে বর্ণিত সর ছাড়াও, আমি উপরে প্রস্তাব দেব । এটি একটি বাইনারি লগ সংরক্ষণ করে যা আপনি পরে অনুধাবন করতে পারেন, এবং স্মৃতি ছাড়াও অন্যান্য অনেক তথ্য সংরক্ষণ করে।


3

আপনি ভালগ্রাইন্ড চেষ্টা করতে পারেন ।

গতিশীল বিশ্লেষণ সরঞ্জাম তৈরির জন্য ভ্যালগ্রাইন্ড একটি উপকরণ কাঠামো। ভ্যালগ্রাইন্ড সরঞ্জামগুলি রয়েছে যা স্বয়ংক্রিয়ভাবে অনেকগুলি মেমরি পরিচালনা এবং থ্রেডিং বাগগুলি সনাক্ত করতে পারে এবং আপনার প্রোগ্রামগুলিকে বিশদভাবে প্রোফাইল করতে পারে। আপনি নতুন সরঞ্জাম তৈরি করতে ভালগ্র্যান্ড ব্যবহার করতে পারেন।

ভালগ্র্যান্ড বিতরণে বর্তমানে ছয়টি উত্পাদন-মানের সরঞ্জাম রয়েছে: একটি মেমরি ত্রুটি সনাক্তকারী , দুটি থ্রেড ত্রুটি সনাক্তকারী, একটি ক্যাশে এবং শাখা-পূর্বাভাস প্রোফাইলার, একটি কল-গ্রাফ উত্পন্নকারী ক্যাশে এবং শাখা-ভবিষ্যদ্বাণীকারী প্রোফাইলার এবং একটি হিপ প্রোফাইলার


যতক্ষণ এই তাত্ত্বিক প্রশ্নের উত্তর হতে পারে, এটা বাঞ্ছনীয় হবে উত্তর অপরিহার্য অংশের এখানে অন্তর্ভুক্ত করা, এবং রেফারেন্স এর জন্য লিঙ্ক প্রদান।
saji89

এই নথিটি বৃহত্তরভাবে বিশদভাবে ব্যাখ্যা করে।
শন Xie

0

আমি শ্রীধরের সহজ উত্তরটি পছন্দ করি তবে তার চেষ্টা করার আগে আমি আমার নিজের ঘূর্ণিত:

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