আমি একটি প্রক্রিয়া দ্বারা আমার সিপিইউ শতাংশ ব্যবহার দেখছি। একটি প্রক্রিয়া কীভাবে কেবল 50% সিপিইউ ব্যবহার করে? একটি প্রক্রিয়া 100% তারপর 0%, তারপর 100% ব্যবহার করে না? এটি প্রতিটি অন্যান্য নির্দেশের মতো নয় একটি আলাদা প্রোগ্রাম।
আমি একটি প্রক্রিয়া দ্বারা আমার সিপিইউ শতাংশ ব্যবহার দেখছি। একটি প্রক্রিয়া কীভাবে কেবল 50% সিপিইউ ব্যবহার করে? একটি প্রক্রিয়া 100% তারপর 0%, তারপর 100% ব্যবহার করে না? এটি প্রতিটি অন্যান্য নির্দেশের মতো নয় একটি আলাদা প্রোগ্রাম।
উত্তর:
এটি প্রতি সেকেন্ডে মোট একবারে পোল করে। আপনি এটি শেষ সেকেন্ডের কত ব্যবহার করেছেন তা দেখছেন।
আপনি যদি দেখেন যে কোনও সিপিইউ কিছুক্ষণের জন্য 50% এ বসে আছে তবে সম্ভবত এটি কী ঘটছে তা হ'ল এটি দ্বৈত সিপিইউ সিস্টেমে 100% সিপিইউ ব্যবহার করছে।
প্রযুক্তিগতভাবে আপনি সঠিক। যে কোনও সময়, সিপিইউ হয় ব্যবহৃত হচ্ছে, বা ব্যবহৃত হচ্ছে না। তবে কোনও গ্রাফের মধ্যে প্রদর্শিত খুব সহায়ক হবে না, তাই গ্রাফটি কিছু সময়ের জন্য সম্ভবত প্রতিটি সেকেন্ডের মধ্যে সিপিইউ ব্যবহারের গড় গড় করে।
ওএস নির্দিষ্ট সময়ের জন্য প্রক্রিয়াটি নির্ধারণ করে। সুতরাং যদি প্রক্রিয়াটি 10 মিমের মধ্যে 1 মিমি জন্য নির্ধারিত হয় (তবে), তবে এটি 10% সিপিইউ ব্যবহার করবে।
এটি সামান্য বিপরীতমুখী, যেহেতু (একক থ্রেডযুক্ত, একক-সিপিইউ সিস্টেমে), প্রক্রিয়াটি হয় চলছে, না চলছে। অর্থাৎ এটি 100% বা 0% ব্যবহার করছে। আপনি যে শতাংশটি দেখেন তা সময় উইন্ডোতে পরিমাপ করা হয় এবং আপনার প্রক্রিয়াটি চালানোর জন্য ওএস বরাদ্দকারী সময় স্লটগুলির একটি পরিমাপ।
মনে রাখবেন যে আপনি I / O অ্যাক্সেস করতে পারলে আপনার প্রক্রিয়া এতে অবদান রাখবে না। সুতরাং আপনি যদি একটি বিশাল গণনা করছেন, আপনি 100% নিবন্ধভুক্ত করবেন (ধরে নিবেন যে আর কিছুই চালায় না)। এরপরে যদি আপনি কোনও নেটওয়ার্ক প্যাকেট / ডিস্ক অ্যাক্সেস ইত্যাদির জন্য অপেক্ষা করেন তবে আপনার প্রসেসটি এখনও চলছে তা সত্ত্বেও আপনার সিপিইউ চিত্রটি হ্রাস পাবে।
খুব নিম্ন স্তরে, আপনি মূলত সঠিক right যে কোনও তাত্ক্ষণিকভাবে, প্রসেসর হয় প্রদত্ত প্রক্রিয়াটির জন্য কোনও নির্দেশনা কার্যকর করছে বা তা হয় না।
তবে আপনার ওএস আপনার প্রসেস এবং প্রসেসরের মধ্যে বসে তাদের সময় ভাগ করে নিচ্ছে। আপনি যে শতাংশটি দেখছেন তা হ'ল ওএস যে প্রক্রিয়াটি মঞ্জুর করেছে তা সাম্প্রতিক প্রক্রিয়াকরণের সময়ের শতাংশ।
এটি গড় সময়ের উপর ভিত্তি করে। সমস্ত থ্রেডে সিপিইউ সময়ের একই পার্সেল থাকতে পারে (অগ্রাধিকারের ভিত্তিতে), থ্রেডগুলি কেবল "ধন্যবাদ তবে আমি নিষ্ক্রিয়" বলতে পারি এবং এটি পরবর্তী থ্রেডে পরিণত হয়। প্রোগ্রামগুলি সর্বদা একই% সময় ব্যবহার করে না কেন এবং বেশিরভাগ প্রোগ্রাম 0% সিপিইউ গ্রহণ করে এবং সত্যিকার অর্থে সিপিইউ প্রয়োজন এমন প্রোগ্রামগুলি নিজের জন্য প্রায় 100% সময় নিতে পারে।
এটি কেন 50% এ কেপিং করছে? আপনার কাছে সম্ভবত দুটি সিপিইউ কোর রয়েছে এবং এটি কেবল একটি ব্যবহার করে।
বা, যেমন প্রস্তাবিত হয়েছে, এটি হাইপারথ্রেডিং ব্যবহার করছে, তবে আমি জানি না যে এটি ঠিক কীভাবে আচরণ করে।
সিস্টেমের ব্যবহার নমুনাযুক্ত এবং গড় হয়, যা করা একমাত্র বুদ্ধিমান কাজ।
উদাহরণস্বরূপ, 1 সেকেন্ড চলাকালীন কোনও প্রক্রিয়া / থ্রেডটি কত সময় ব্যয় করে তার রেকর্ড। যদি এটি সিপিইউতে 1 সেকেন্ড ব্যয় করে, তবে এটি 100% সিপিইউ (বা আপনার যদি 2 টি সিপিইউ থাকে তবে 50%), যদি এটি 10% সিপিইউ ব্যবহারের 100 মিমি ব্যয় করে।