যেমন আপনি নিজে বলেছেন, আপনি Hব্যবহারকারীর থ্রেডগুলি প্রদর্শন করতে পারেন ।
কেবলমাত্র ভবিষ্যতের রেফারেন্সের জন্য (এবং মজাদার জন্য), আসুন সিপিইউ ব্যবহারের গণনা করি!
কিছুটা পটভূমি:
একটি আধুনিক অপারেটিং সিস্টেমে একটি শিডিয়ুলার রয়েছে। এটির সমস্ত প্রক্রিয়া এবং তাদের থ্রেডগুলি কম্পিউটিং সময়ের ন্যায্য অংশ পেতে পারে তা নিশ্চিত করা। আমি বেশি সময়সূচিতে যাব না (এটি সত্যিই জটিল)। তবে শেষ পর্যন্ত রান কিউ বলে কিছু আছে । এই স্থানে সমস্ত প্রক্রিয়া সমস্ত নির্দেশাবলী তাদের পালা কার্যকর হওয়ার জন্য অপেক্ষা করতে লাইন আপ।
যে কোনও প্রক্রিয়া এটি "টাস্কগুলি" রান কাতারে রাখে এবং প্রসেসরের প্রস্তুত হয়ে গেলে এটি তাদের পপ করে দেয় এবং কার্যকর করে দেয়। যখন কোনও প্রোগ্রাম ঘুমাতে যায়, উদাহরণস্বরূপ, এটি রান রান থেকে নিজেকে সরিয়ে ফেলে এবং আবার চালানোর জন্য প্রস্তুত হয়ে গেলে "লাইনের শেষে" ফিরে আসে।
এই সারিতে উপর বাছাই প্রক্রিয়া 'কি আছে অগ্রাধিকার (- অর্থাত একটি প্রক্রিয়া এছাড়াও "চমৎকার মান" নামক চমৎকার সিস্টেম সংস্থান সম্পর্কে)।
সারিটির দৈর্ঘ্য সিস্টেমের লোড নির্ধারণ করে । উদাহরণস্বরূপ 2.5 লোডের অর্থ সিপিইউ রিয়েল টাইমে মোকাবেলা করতে পারে এমন প্রতিটি নির্দেশের জন্য 2.5 টি নির্দেশনা রয়েছে ।
লিনাক্সে, যাইহোক, এই লোডটি 10 মিমি ব্যবধানে (ডিফল্টরূপে) গণনা করা হয়।
এখন সিপিইউ ব্যবহারের শতকরা মানগুলিতে:
আপনার দুটি ঘড়ি আছে তা কল্পনা করুন, একটি বলা হয় t
এবং এটি রিয়েল টাইম উপস্থাপন করে । এটি প্রতি সেকেন্ডের জন্য একটি সেকেন্ড পরিমাপ করে। অন্য ঘড়ি আমরা কল c
। এটি করার প্রক্রিয়া থাকলেই এটি চলে। তার অর্থ, যখন কোনও প্রক্রিয়া কোনও কিছু গণনা করে কেবল তখনই ঘড়িটি চলে। একে সিপিইউ টাইমও বলা হয়। সিস্টেমের প্রতিটি প্রক্রিয়া তাদের মধ্যে একটি 'পেয়েছে'।
প্রসেসরের ব্যবহার এখন একক প্রক্রিয়ার জন্য গণনা করা যেতে পারে:
বা সমস্ত প্রক্রিয়া জন্য:
একটি মাল্টি কোর মেশিনে, এর ফলস্বরূপ অবশ্যই 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 সংস্থান ব্যবহারের গণনাও করতে পারেন।
এটি মূল প্রশ্নটি সম্পর্কে সহায়ক নাও হতে পারে তবে আমি আশা করি এটি আকর্ষণীয়। :)