man ps
মধ্যে NOTES
অধ্যায়।
CPU usage is currently expressed as the percentage of time spent running
during the entire lifetime of a process. This is not ideal, and it does not
conform to the standards that ps otherwise conforms to. CPU usage is
unlikely to add up to exactly 100%.
এবং, অনুমান আপনি জানেন, কিন্তু আপনি এটি করতে পারেন:
top -p <PID>
সম্পাদনা করুন : অন্য উত্তরে আপনার মন্তব্য হিসাবে;
" হুম হ্যাঁ আমি ভাবছি কিভাবে পিএস থেকে এটি (তাত্ক্ষণিক সিপিইউ শতাংশ) পাবেন? "
সংক্ষিপ্ত উত্তর: আপনি পারবেন না।
এটা এমন কেন?
এটি কাউকে ছবি থেকে গাড়ির গতি গণনা করতে বলার মতো।
যদিও top
একটি নিরীক্ষণ সরঞ্জাম, ps
এটি একটি স্ন্যাপশট সরঞ্জাম। এটি এরকমভাবে ভাবুন: যে কোনও মুহুর্তে একটি প্রক্রিয়া হয় সিপিইউ ব্যবহার করে না হয়। সুতরাং আপনার সেই সঠিক মুহুর্তে 0% বা 100% লোড রয়েছে।
প্রদান: যদি ps
দিতে হবে তাত্ক্ষণিক CPU ব্যবহারের এটা হয় 0% বা 100% হতে হবে।
top
অন্যদিকে ভোটদানের সংখ্যা রাখুন এবং সময়ের সাথে সাথে লোড গণনা করুন।
ps
বর্তমান ব্যবহার করতে পারে - তবে এর জন্য একাধিকবার ডেটা পড়তে হবে এবং প্রতিটি পঠনের মধ্যে ঘুমানো দরকার। এটা হয় না।
পিএস% সিপিইউর জন্য গণনা
ps
নিম্নলিখিত পদ্ধতিতে সিপিইউ ব্যবহার গণনা করে:
আপটাইম = মোট সময় সিস্টেম চলছে।
পিএস_টাইম = প্রক্রিয়া শুরু করার সময়টি বুট থেকে সেকেন্ডে পরিমাপ করা হয়।
পু_টাইম = মোট সময় প্রক্রিয়া সিপিইউ ব্যবহার করে চলেছে।
;; দ্বিতীয় প্রক্রিয়া চলছে:
সেকেন্ড = আপটাইম - পিএস_টাইম
;; ব্যবহার:
সিপিইউ_সেজ = পু_টাইম * 1000 / সেকেন্ড
মুদ্রণ: cpu_usage / 10 "। cpu_usage% 10
উদাহরণ:
আপটাইম = 344,545
পিএস_টাইম = 322,462
পু_টাইম = 3,383
সেকেন্ড = 344,545 - 322,462 = 22,083
সিপিইউ_উসেজ = 3,383 * 1,000 / 22,083 = 153
মুদ্রণ: 153/10 "। 153% 10 => 15.3
সুতরাং মুদ্রিত নম্বরটি হ'ল: প্রক্রিয়াটি তার জীবদ্দশায় সিপিইউ ব্যবহার করে চলেছে। উপরের উদাহরণ হিসাবে। এটি তার জীবদ্দশার 15.3% সালে এটি করেছে। 84,7% সময়ের মধ্যে এটি সিপিইউতে বাগ লাগছিল না।
তথ্য পুনরুদ্ধার
ps
পাশাপাশি সেইসাথে top
সঞ্চিত ফাইলগুলি /proc/
- বা প্রক্রিয়া সম্পর্কিত তথ্য সিউডো-ফাইল সিস্টেমের ডেটা ব্যবহার করে ।
এর মূলে আপনার কয়েকটি ফাইল /proc/
রয়েছে যা সিস্টেমের সামগ্রিক অবস্থা সম্পর্কে বিভিন্ন তথ্য রয়েছে। এছাড়াও প্রতিটি প্রক্রিয়াটির নিজস্ব সাব ফোল্ডার রয়েছে /proc/<PID>/
যেখানে প্রক্রিয়া নির্দিষ্ট ডেটা সংরক্ষণ করা হয়। সুতরাং, উদাহরণস্বরূপ আপনার প্রশ্ন থেকে প্রক্রিয়াটিতে একটি ফোল্ডার ছিল /proc/3038/
।
ps
সিপিইউ ব্যবহারের গণনা করা হলে এটি দুটি ফাইল ব্যবহার করে:
/ প্রকল্প / আপটাইম সিস্টেমের আপটাইম (সেকেন্ড) এবং অলস প্রক্রিয়াতে (সেকেন্ড) সময় ব্যয়।
/ proc / [PID] / প্রক্রিয়া সম্পর্কিত স্থিতির তথ্য।
uptime
এটি থেকে প্রথম মান ( আপটাইম ) ব্যবহার করে ।
[PID]/stat
এটি থেকে নিম্নলিখিতটি ব্যবহার করে:
# নাম বর্ণনা
জিফিতে পরিমাপকৃত ইউজার কোডে 14 ইউটাইম সিপিইউ সময় ব্যয় করেছে
জিফিতে পরিমাপ করা, কর্নেল কোডে ব্যয় করা 15 স্টিমি সিপিইউ সময়
বাচ্চাদের সময় সহ ইউজার কোডে 16 কিউটাইম সিপিইউ সময় ব্যয় করেছে
বাচ্চাদের সময় সহ কর্নেল কোডে 17 সিএসটাইম সিপিইউ সময় ব্যয় করেছে
22 প্রারম্ভকালীন সময় যখন প্রক্রিয়া শুরু হয়, জিফিতে পরিমাপ করা হয়
একটি জিফি হ'ল ক্লক টিক। সুতরাং এটির পাশাপাশি sysconf(_SC_CLK_TCK)
সিস্টেমের হার্টজ (প্রতি সেকেন্ডে টিক্সের সংখ্যা) পেতে বিভিন্ন পদ্ধতি ব্যবহার করা হয় - শেষ পর্যন্ত অন্যান্য বিকল্পগুলি ক্লান্ত করার পরে ১০০ টি ফল-ব্যাক হিসাবে ব্যবহার করা হয়।
সুতরাং যদি utime
1234 হয় এবং হার্টজ 100 হয় তবে:
seconds = utime / Hertz = 1234 / 100 = 12.34
আসল গণনাটি দ্বারা করা হয়:
total_time = utime + stime
IF include_dead_children
total_time = total_time + cutime + cstime
ENDIF
seconds = uptime - starttime / Hertz
pcpu = (total_time * 1000 / Hertz) / seconds
print: "%CPU" pcpu / 10 "." pcpu % 10
উদাহরণ (একটি কাস্টম বাশ স্ক্রিপ্ট থেকে আউটপুট):
$ ./psw2 30894
System information
uptime : 353,512 seconds
idle : 0
Process information
PID : 30894
filename : plugin-containe
utime : 421,951 jiffies 4,219 seconds
stime : 63,334 jiffies 633 seconds
cutime : 0 jiffies 0 seconds
cstime : 1 jiffies 0 seconds
starttime : 32,246,240 jiffies 322,462 seconds
Process run time : 31,050
Process CPU time : 485,286 jiffies 4,852 seconds
CPU usage since birth: 15.6%
পিএস দিয়ে "বর্তমান" লোড গণনা করা হচ্ছে
এটি একটি (বিট?) ছায়াময় প্রচেষ্টা কিন্তু ঠিক আছে। যেতে দাও।
কেউ এর দ্বারা প্রদত্ত সময়গুলি ব্যবহার করতে পারে ps
এবং এ থেকে সিপিইউ ব্যবহার গণনা করতে পারে । এটি সম্পর্কে চিন্তা করার সময় এটি কিছুটা সীমাবদ্ধতার সাথে বরং বরং কার্যকর হতে পারে।
এটি দীর্ঘ সময়ের জন্য সিপিইউ ব্যবহার গণনা করতে দরকারী হতে পারে। অর্থাৎ আপনি plugin-container
ফায়ারফক্স সম্পর্কিত কিছু কাজ করার সময় ফায়ারফক্সে গড় সিপিইউ লোড নিরীক্ষণ করতে চান ।
এর থেকে আউটপুট ব্যবহার করে:
$ পিএস-পি-সিপিটাইম, ইটাইমস
CODE HEADER DESCRIPTION
cputime TIME cumulative CPU time, "[DD-]hh:mm:ss" format. (alias time).
etime ELAPSED elapsed time since the process was started, [DD-]hh:]mm:ss.
etimes ELAPSED elapsed time since the process was started, in seconds.
আমি ব্যবহার etime
উপর etimes
এই নমুনা এ, গণনার উপর, শুধুমাত্র একটি বিট আরো স্পষ্ট করা। এছাড়াও "মজাদার" জন্য আমি% সিপিইউ যুক্ত করি। অর্থাত্ একটি বাশ স্ক্রিপ্টটিতে অবশ্যই স্পষ্টভাবে ব্যবহার করা হবে etimes
- বা আরও ভাল থেকে পড়া /proc/<PID>/
etc.
Start:
$ ps -p 30894 -o %cpu,cputime,etime,etimes
%CPU TIME ELAPSED ELAPSED
5.9 00:13:55 03:53:56 14036
End:
%CPU TIME ELAPSED ELAPSED
6.2 00:14:45 03:56:07 14167
Calculate times:
13 * 60 + 55 = 835 (cputime this far)
3 * 3,600 + 53 * 60 + 56 = 14,036 (time running this far)
14 * 60 + 45 = 885 (cputime at end)
3 * 3,600 + 56 * 60 + 7 = 14,167 (time running at end)
Calculate percent load:
((885 - 835) / (14,167 - 14,036)) * 100 = 38
প্রক্রিয়াটি এই সময়ের মধ্যে 38% সময় সিপিইউ ব্যবহার করে।
কোড দেখুন
আপনি যদি ps
এটি জানতে চান এবং একটি সামান্য সি জানেন, তাহলে (মনে হয় আপনি জ্নোম দেবাইন ডেরাইভেন্ট চালাচ্ছেন) - মন্তব্য সম্পর্কিত কোডে সুন্দর আচরণ .:
apt-get source procps
cd procps*/ps
vim HACKING
top
এবং অবিচ্ছিন্ন মনিটরিং - বাps
বর্তমান সিপিইউ লোডের সাথে দেরি ওরফে ওরফে স্ন্যাপ দিয়ে আপডেট করতে পারি ।