প্রতিবার সিপিইউ ব্যবহার একই রকম হচ্ছে।


13

আমি যখন সিপিইউ ব্যবহারের জন্য নিম্নলিখিত কমান্ডটি কার্যকর করি তখন আমি ভাল + ব্যবহারকারী সিপিইউ ব্যবহার পাই।

top -b -n1 | grep "Cpu(s)" | awk '{print $2 + $4}' 

আউটপুট:

14.5

এখানে আমার সমস্যা হচ্ছে যে আউটপুট শীর্ষ কমান্ডের উপর নির্ভর করে সুতরাং এটি তত্ক্ষণাত্ শীর্ষ কমান্ড হিসাবে পরিবর্তিত হয় না। তাই আমি তাত্ক্ষণিকভাবে সঠিক সিপিইউ পাচ্ছি না। এটি একই আউটপুট দেয় এবং পরিবর্তন করে না।

আমি আউটপুটে রিয়েলটাইম সিপিউজ পেতে চাই। আমার আদেশটি উন্নত করতে দয়া করে আমাকে সহায়তা করুন।


1
আর প্রশ্ন হচ্ছে?
ডেনিস কারসেমেকার

কমান্ডটি প্রিপেন্ড করা চালানোর চেষ্টা করুন time। আমার সিস্টেমে এটি কেবল 0.165s লাগে।
ছাড়ুন

আমাকে সম্পাদিত আদেশ দিন।
কেতন প্যাটেল

চেষ্টা করুন:time (top -b -n1 | grep "Cpu(s)" | awk '{print $2 + $4}' )
depquid

বিভিন্ন সিস্টেমে পরীক্ষার পরে আউটপুটটিতে কোনও ভিন্নতা নেই
কেতান প্যাটেল

উত্তর:


13

আপনি ঠিক বলেছেন, topপ্রথম পুনরাবৃত্তির সময় ভুল সিপিইউ ব্যবহার দেখা যাচ্ছে। আপনি এই ইস্যুটি সম্পর্কে এইভাবে কাজ করতে পারেন:

top -b -n2 | grep "Cpu(s)"|tail -n 1 | awk '{print $2 + $4}'

এটি অবশ্যই দ্বিগুণ সময় নেবে তবে এটি যেভাবেই চলবে।

আপনি যদি এখনও এটি দ্রুত কাজ করতে চান তবে আপনি -dবিকল্পটি ব্যবহার করতে পারেন , উদাহরণস্বরূপ 1-দ্বিতীয় মোট পরিমাপের জন্য এটি অর্ধেক ব্যবহার করুন:

top -d 0.5 -b -n2 | grep "Cpu(s)"|tail -n 1 | awk '{print $2 + $4}'

serverfault.com/a/436499/134517 এছাড়াও দ্বিগুণের চেয়ে অনেক বেশি সময় লাগবে কারণ এটি প্রায় কোনওটির পরিবর্তে প্রায় এক সেকেন্ড নেবে।
altendky

অ্যালেন্ডেস্কির মন্তব্য ছাড়াও, কেন সমস্যাটি প্রথম স্থানে রয়েছে তা ব্যাখ্যা করার জন্য টেরডনের উত্তরও দেখুন ।
রুসলান

6

প্রযুক্তিগতভাবে প্রথমটি topসর্বদা একই মানের আউটপুট দেয় না; এটি শেষ বুট হওয়ার পর থেকে গড় সিপিইউ লোডকে আউটপুট করে। যেহেতু সিপিইউ লোড গণনা করার topজন্য /proc/statপরিসংখ্যানের ডেল্টা ব্যবহার করে , শূন্যের সাথে তুলনা করার সময় প্রথম মানটি গণনা করা হয়, ভুল (তবে ডাব্লুএইডি) ফলাফল দেয় yield

আপনি যদি ব্যবহার করতে না চান তবে আপনি topসরাসরি বিশ্লেষণ করতে পারেন /proc/stat:

cat <(grep 'cpu ' /proc/stat) <(sleep 1 && grep 'cpu ' /proc/stat) | awk -v RS="" '{print ($13-$2+$15-$4)*100/($13-$2+$15-$4+$16-$5) "%"}'

এটি আরও দ্রুত এবং আরও সঠিকভাবে।

আপনি এটি দিয়ে পরীক্ষা করতে পারেন stress:

stress -c 1 -q &

এবং কর

killall stress

পরে।


খুশী হলাম। এবং যদি আপনার কমান্ডটি 'সিপিইউ' নামক কোনও ফাইলে রাখা হয়, তবে watchএটি চালানো যেতে পারে:watch -n1 "bash ./cpu"
ব্রেন্ট ফাউস্ট

পার্স করার জন্য আপনার awk স্ক্রিপ্টটি /proc/statদুর্দান্ত but
পাইওরসি

5

@ রুসলানের উত্তরের প্রসারিত topকরতে, ব্যবহারকারী, সিস্টেম প্রক্রিয়া এবং niceপ্রক্রিয়াগুলির মধ্যে সিপিইউর ব্যবহারকে বিভক্ত করে, আমরা তিনটির যোগফল চাই। সুতরাং, আমরা চালাতে পারেন topমধ্যে batch মোড যা আমাদের তার আউটপুট পার্স করতে পারেন। তবে, এখানে যেমন বর্ণনা করা হয়েছে , top -bবুটের পর থেকে 1 ম পুনরাবৃত্তি শতাংশের হার ফেরৎ দেয়, সুতরাং -n 2বর্তমান শতাংশটি পেতে আমাদের কমপক্ষে দুটি পুনরাবৃত্তি প্রয়োজন ( )। জিনিসগুলি গতি বাড়ানোর জন্য, আপনি dপুনরাবৃত্তির মধ্যে ইলে সেট করতে পারেন এতে 0.01:

top -bn 2 -d 0.01 | grep '^%Cpu' | tail -n 1 | gawk '{print $2+$4+$6}'

4

psআউটপুট ভিত্তিক এটি ব্যবহার করুন :

ps aux  | awk 'BEGIN { sum = 0 }  { sum += $3 }; END { print sum }


0

আপনি কেন সিপিইউ ব্যবহার সম্পর্কে যত্নশীল? লোড গড় অনেক ভালো সূচক:

cat /proc/loadavg

আপনার যদি সত্যই সিপিইউ ব্যবহারের প্রয়োজন হয় তবে পার্সিং /proc/statকরা সম্ভবত উপায়।


1
লোড গড় মূলত সিপিইউ ব্যবহারের একটি সময় অবিচ্ছেদ্য (সময় দ্বারা বিভক্ত)। আপনি কেন বলবেন যে অবিচ্ছেদ্য বৈশিষ্ট্যগুলি সম্পূর্ণরূপে পৃথক ব্যবহারের ক্ষেত্রে দেখা যায় তার চেয়ে আলাদা পার্থক্যের চেয়ে [সমস্ত কিছুর চেয়ে ভাল) সূচক? এছাড়াও, /proc/statসিপিইউ ব্যবহারটি যেমন হয় তেমন দেয় না , সিপিইউ ব্যবহারের জন্য একজনকে কিছু সময়ের সাথে কিছু সময় পড়তে হয় এবং কিছু গণনা করতে হয়। এটি ঠিক তাই topকরে।
রুসলান

আমি গণিত করতে পারি না, সুতরাং আমাকে স্বীকার করতে হবে যে আমি অবিচ্ছেদ্য এবং ডিফারেনশিয়ালের মধ্যে পার্থক্যটি সত্যই বুঝতে পারি না: / "লোড গড় মূলত সিপিইউ ব্যবহারের একটি সময়ের অবিচ্ছেদ্য" - এটি কি সত্য? আফাইক একটি প্রক্রিয়া যা ডি অবস্থায় স্থির থাকে তার ফলে লোড বৃদ্ধি ঘটে তবে সিপিইউ ব্যবহার হয় না। "আপনি কেন বলবেন ..." - ওপি সত্যই যা অর্জন করতে চায় তা বলে না , তাই সত্য বলতে আমি কেবল ধরে নিই যে সে তার সিস্টেমের বোঝা পরিমাপ করতে চায় এবং ভেবেছিল যে সিপিইউ ব্যবহারটি এটির জন্য সেরা সূচক হবে be , তাই আমি তাকে સરેરાશ লোড করার নির্দেশ দিয়েছিলাম।
মার্টিন ভন উইট্টিচ

আপনার লিঙ্কটি থেকে: "সিস্টেমগুলি লোড সংখ্যার তাত্পর্যপূর্ণ স্যাঁতসেঁতে / ওজনযুক্ত চলমান গড় হিসাবে লোডের গড় গণনা করে।" এবং "সিস্টেম লোড গণনা কাজের পরিমাণের একটি পরিমাপ"। ডি স্টেট কোনও গণনার কাজ নিচ্ছে না। যা গ্রহণ করছে তা হ'ল সিপিইউ সময় ব্যবহার করার প্রক্রিয়াগুলি। সুতরাং গড় লোড মূলত শতাংশের শতাংশ শতাংশ সিপিইউ কিছু সময়ের জন্য অলস ছিল না (বলুন, কয়েক মিনিট থেকে দশেক মিনিট)। এবং সিপিইউ ব্যবহারের সময় শতাংশ শতাংশ হ'ল সিপিইউ টাইম স্কেলে মিলি সেকেন্ডে নিষ্ক্রিয় নয় - অর্থ প্রতিবার পড়ার সময় এবং বর্তমান অবস্থাকে প্রতিফলিত করে প্রতিবার আপডেট করা হয় ।
Ruslan

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