'htop' সঠিক সিপিইউ% দেখায় না, তবে 'শীর্ষ' করে does


12

mencoderথ্রেড = 4 নিয়ে চলার সময় (একটি কোয়াড-কোর সিপুতে)। আমি লক্ষ্য করেছি যে htopএটির আসল সিপিইউ ব্যবহারটি দেখায় না , তবে topতা করে।

মনে হচ্ছে যে htop শুধুমাত্র একটি প্রতিবেদনের হয় কোর । এটি কি বাগের / হটোপের সীমাবদ্ধতা ? এখানে কি হচ্ছে?

অন্য কোন এন্ট্রি জন্য হয় mencoder দেখা psবা htopবা top। আমি ধরে নিলাম যে 100% এর অর্থ হল 1 কোরটি সর্বাধিক আউট হয়েছে তবে এটি আমার কাছেও অদ্ভুত বলে মনে হয়; অন্যান্য কোর সম্পর্কে কি?

আপডেট: যোগ করা হয়েছে "সিস্টেম মনিটর" আউটপুট

                  PID   %CPU   COMMAND                    
           "top"  1869   220   mencoder                 
          "htop"  1869    95   mencoder -noodml /media/...  
"System Monitor"  1869   220   mencoder

আপনি হটোপের জন্য কোন পতাকা ব্যবহার করছেন?
sep332

সে।
পিটার.ও

বিঙ্গো! sep332 .. এর বাইরে একটি উত্তর দিন এবং আমি এটি সমাধান করেছি বলে চিহ্নিত করলাম .. আপনি আমাকে আমার ডিফল্টগুলি দেখছিলেন .... "এইচ" "ব্যবহারকারী থ্রেডগুলি লুকান" এর একটি টগল কী ... অন্য সমস্ত ব্যর্থ হলে " তথ্য সহায়তা "পড়ুন, তবে কখনও কখনও ডাইরেক্ট ডিরেক্টনে একটি সহজ ইঙ্গিতটি আরও সাহায্য করে .. ধন্যবাদ।
পিটার.ও

@ পিটার.ও: দুর্ঘটনাক্রমে ডাউনভোটেড (মাউস টাচপ্যাড!)। আপনি যদি আপনার পোস্ট সম্পাদনা করেন তবে আমি এটি বাতিল করব।
সাব্রেভল্ফি

উত্তর:


24

যেমন আপনি নিজে বলেছেন, আপনি Hব্যবহারকারীর থ্রেডগুলি প্রদর্শন করতে পারেন ।

কেবলমাত্র ভবিষ্যতের রেফারেন্সের জন্য (এবং মজাদার জন্য), আসুন সিপিইউ ব্যবহারের গণনা করি!

কিছুটা পটভূমি:

একটি আধুনিক অপারেটিং সিস্টেমে একটি শিডিয়ুলার রয়েছে। এটির সমস্ত প্রক্রিয়া এবং তাদের থ্রেডগুলি কম্পিউটিং সময়ের ন্যায্য অংশ পেতে পারে তা নিশ্চিত করা। আমি বেশি সময়সূচিতে যাব না (এটি সত্যিই জটিল)। তবে শেষ পর্যন্ত রান কিউ বলে কিছু আছে । এই স্থানে সমস্ত প্রক্রিয়া সমস্ত নির্দেশাবলী তাদের পালা কার্যকর হওয়ার জন্য অপেক্ষা করতে লাইন আপ।

যে কোনও প্রক্রিয়া এটি "টাস্কগুলি" রান কাতারে রাখে এবং প্রসেসরের প্রস্তুত হয়ে গেলে এটি তাদের পপ করে দেয় এবং কার্যকর করে দেয়। যখন কোনও প্রোগ্রাম ঘুমাতে যায়, উদাহরণস্বরূপ, এটি রান রান থেকে নিজেকে সরিয়ে ফেলে এবং আবার চালানোর জন্য প্রস্তুত হয়ে গেলে "লাইনের শেষে" ফিরে আসে।

এই সারিতে উপর বাছাই প্রক্রিয়া 'কি আছে অগ্রাধিকার (- অর্থাত একটি প্রক্রিয়া এছাড়াও "চমৎকার মান" নামক চমৎকার সিস্টেম সংস্থান সম্পর্কে)।

সারিটির দৈর্ঘ্য সিস্টেমের লোড নির্ধারণ করে । উদাহরণস্বরূপ 2.5 লোডের অর্থ সিপিইউ রিয়েল টাইমে মোকাবেলা করতে পারে এমন প্রতিটি নির্দেশের জন্য 2.5 টি নির্দেশনা রয়েছে ।

লিনাক্সে, যাইহোক, এই লোডটি 10 ​​মিমি ব্যবধানে (ডিফল্টরূপে) গণনা করা হয়।

এখন সিপিইউ ব্যবহারের শতকরা মানগুলিতে:

আপনার দুটি ঘড়ি আছে তা কল্পনা করুন, একটি বলা হয় tএবং এটি রিয়েল টাইম উপস্থাপন করে । এটি প্রতি সেকেন্ডের জন্য একটি সেকেন্ড পরিমাপ করে। অন্য ঘড়ি আমরা কল c। এটি করার প্রক্রিয়া থাকলেই এটি চলে। তার অর্থ, যখন কোনও প্রক্রিয়া কোনও কিছু গণনা করে কেবল তখনই ঘড়িটি চলে। একে সিপিইউ টাইমও বলা হয়। সিস্টেমের প্রতিটি প্রক্রিয়া তাদের মধ্যে একটি 'পেয়েছে'।

প্রসেসরের ব্যবহার এখন একক প্রক্রিয়ার জন্য গণনা করা যেতে পারে:

U = c / t = 0.5s / 1s = 0.5

বা সমস্ত প্রক্রিয়া জন্য:

বিকল্প পাঠ

একটি মাল্টি কোর মেশিনে, এর ফলস্বরূপ অবশ্যই 3.9 এর মান হতে পারে, কারণ সিপিইউ প্রতি সেকেন্ডে চার সেকেন্ডের গণনার উপযুক্ত গণনা করতে পারে, যদি পুরোপুরি ব্যবহার করা হয়।

উইকিপিডিয়া এই উদাহরণ দেয়:

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

এটি একটি ছোট অজগর স্নিপেট এখানে এটি করে

>>> import time
>>> t = time.time()
>>> c = time.clock()
>>> # the next line will take a while to compute
>>> tuple(tuple(i**0.2 for i in range(600)) for i in range(6000))
>>> print (time.clock() / (time.time() - t)) * 100, "%"
66.9384021612 %

নিখুঁত বিশ্বে আপনি এটি থেকে অনুমান করতে পারেন যে সিস্টেমের ভারটি 100 - 66.93 = 33,1%। (তবে বাস্তবে যে I / O অপেক্ষা, সময়সূচী অদক্ষতা ইত্যাদির মতো জটিল জিনিসের কারণে ভুল হবে)

লোডের বিপরীতে , এই গণনাগুলির ফলাফল সর্বদা 0 এবং প্রসেসরের সংখ্যার মধ্যে হয়, যেমন 0 এবং 1 বা 0 থেকে 100% এর মধ্যে। তিনটি কাজ চালাচ্ছে এমন একটি মেশিন, ১০০% সিপিইউ ব্যবহার করে, এবং একটি মেশিন একটি মিলিয়ন টাস্ক চালাচ্ছে, তার মধ্যে একটিতেও সবেমাত্র কোনও কাজ করা হচ্ছে, তাতে ১০০% পার্থক্য করার উপায় নেই। উদাহরণস্বরূপ, যদি আপনি অনেক কম্পিউটারে প্রচুর প্রক্রিয়াগুলিকে ভারসাম্য বজায় রাখার চেষ্টা করছেন তবে সিপিইউ ব্যবহারটি অকেজো হওয়ার পাশে রয়েছে। আপনি সেখানে চান লোড।

এখন বাস্তবে, প্রসেসিং টাইম ক্লকগুলির মধ্যে একাধিক রয়েছে। উদাহরণস্বরূপ I / O এর জন্য অপেক্ষা করার জন্য একটি আছে। সুতরাং আপনি I / O সংস্থান ব্যবহারের গণনাও করতে পারেন।

এটি মূল প্রশ্নটি সম্পর্কে সহায়ক নাও হতে পারে তবে আমি আশা করি এটি আকর্ষণীয়। :)


আমার সত্যই অনিশ্চয়তা মানগুলি অন্তর্ভুক্ত করা উচিত ছিল, কারণ এই সহজ পদ্ধতিটি ব্যবহার করে, গণনাটি সম্ভবত ± 1% দ্বারা বন্ধ হয়ে যাবে, তবে আমি সবাইকে খুব বেশি বিরক্ত করতে চাইনি ।
স্টেফানো প্যালাজো

পাঠের জন্য ধন্যবাদ। আমি এর বেশিরভাগটিই জানতাম তবে আমি যা শিখেছি তার চেয়ে কয়েকটি বিষয় সুনির্দিষ্ট ছিল।
নাইটউইশফ্যান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.