লিনাক্সে সিপিইউডল কীভাবে কাজ করে এবং কেন এটি রিসোর্স ব্যবহারকে এতটা প্রভাবিত করে

সর্বশেষ আপডেট: 11/05/2026
লেখক: ইসহাক
  • cpuidle গভর্নর এবং ড্রাইভার ব্যবহার করে সিপিইউ স্লিপ স্টেট পরিচালনা করার মাধ্যমে পলিসি এবং মেকানিজমকে পৃথক করে।
  • টার্গেটের অবস্থান, আউটপুট লেটেন্সি, নিষ্ক্রিয়তার ইতিহাস এবং আসন্ন টাইমারের উপর ভিত্তি করে স্টেট নির্বাচন করা হয়।
  • PM QoS এবং টিক শিডিউলার শর্ত নির্ধারণ করে যে ল্যাটেন্সির প্রয়োজনীয়তা লঙ্ঘন না করে কোন ডিপ স্টেটগুলো ব্যবহার করা যেতে পারে।
  • ARM এবং অন্যান্য আধুনিক SoC-গুলিতে, cpuidle-কে PSCI-এর মাধ্যমে ফার্মওয়্যারের সাথে সমন্বিত করা হয়, যা প্রকৃত বিদ্যুৎ খরচ এবং ব্যাটারির আয়ুর জন্য অত্যন্ত গুরুত্বপূর্ণ।

লিনাক্স সিপিইউআইডল নিষ্ক্রিয় সময় ব্যবস্থাপনা

আপনি যদি ল্যাপটপ, ডেস্কটপ বা এআরএম মাদারবোর্ডে লিনাক্স ব্যবহার করেন এবং চিন্তিত হন ব্যাটারি, তাপ, অথবা কেন আপনার সিপিইউ "যথাযথভাবে" স্লিপ মোডে যায় নাসাবসিস্টেমটি কিভাবে কাজ করে তা বুঝুন। cpuidle এটা খুবই গুরুত্বপূর্ণ। "সিপিইউ নিষ্ক্রিয় আছে"-এর মতো আপাতদৃষ্টিতে সহজ একটি বিষয়ের আড়ালে বেশ জটিল একটি প্রক্রিয়া রয়েছে যা সিদ্ধান্ত নেয়... বিশ্রামের কোন অবস্থাটি ব্যবহার করতে হবে, কতক্ষণ ঘুমাতে হবে এবং ঘুম থেকে উঠতে কতক্ষণ সময় লাগে।.

তাছাড়া, আপনি যদি এই ধরনের প্রকল্প থেকে আসেন M1/M2 সহ ম্যাকে আসাহি লিনাক্সবিভ্রান্ত হওয়া স্বাভাবিক: আমরা চালকদের নিয়ে কথা বলছি cpuidle...অপরিপক্ক বা সম্পূর্ণ অনুপস্থিত বিশ্রাম অবস্থা থেকে, এবং ঠিক এই কারণেই সিস্টেমটি দৈনন্দিন ব্যবহারের জন্য উপযুক্ত নয়। এই প্রবন্ধে, আমরা শান্তভাবে বিশ্লেষণ করব... cpuidle আসলে কী, এটি অভ্যন্তরীণভাবে কীভাবে কাজ করে, গভর্নর এবং ড্রাইভার কী ভূমিকা পালন করে, এটি কীভাবে কনফিগার করা হয়, কোন কার্নেল অপশনগুলো এটিকে প্রভাবিত করে, এবং এটি আধুনিক ARM প্ল্যাটফর্মগুলোতে কীভাবে একীভূত হয়? যেমন যেগুলো PSCI বা TF-A ব্যবহার করে।

সিপিইউআইডল সাবসিস্টেমটি কী এবং এর অস্তিত্ব কেন?

কয়েক দশক আগে, কার্নেলের 'rest' ছিল একটি খালি লুপ।যখন কার্যকর করার মতো কিছু থাকত না, তখন আইডল লুপটি চলত, যা মূলত পরবর্তী ইন্টারাপ্টের জন্য অপেক্ষারত একটি অসীম লুপ তৈরি করত। শুধুমাত্র জটিল কোড কার্যকর না করার মাধ্যমেই কিছু শক্তি সাশ্রয় হয়েছিল: ক্যাশে, এফপিইউ ইত্যাদি ততটা ব্যবহৃত হয়নি।

হার্ডওয়্যারের বিবর্তনের সাথে সাথে প্রসেসরগুলো একাধিক সুবিধা প্রদান করতে শুরু করে। নিষ্ক্রিয় অবস্থা (সি-অবস্থা)প্রতিটিরই সঞ্চয়ের মাত্রা এবং অসুবিধা ভিন্ন: ডিপ স্টেটে প্রবেশ করলে প্রচুর শক্তি সাশ্রয় হতে পারে, কিন্তু ভেতরে ঢুকতে ও বের হতে বেশি সময় ও শক্তি লাগে। তার কাছ থেকে। যদি তুমি খুব গভীর অবস্থায় চলে যাও এবং খুব দ্রুত তোমাকে জাগিয়ে তোলা হয়, তাহলে তুমি হেরে গেছো।

এখানে খেলা আসে সিপিইউআইডল, কার্নেলের একটি সাবসিস্টেম যা সিপিইউ-এর নিষ্ক্রিয় সময় ব্যবস্থাপনার জন্য নিবেদিত।এর লক্ষ্য হলো, প্রতিবার যখন একটি সিপিইউ-এর সমস্ত কাজ শেষ হয়ে যায় (কেবল নিষ্ক্রিয় কাজটি বাকি থাকে), তখন প্রতিক্রিয়ার বিলম্ব না ঘটিয়ে শক্তি সাশ্রয়ের জন্য কোন স্লিপ স্টেটটি ব্যবহার করা সবচেয়ে ভালো হবে, তা নির্ধারণ করা।

ধারণাগতভাবে, সিপিইউডল দুটি অংশকে আলাদা করে: একপাশে প্রক্রিয়া (চালক), যেটি হার্ডওয়্যারের সাথে যোগাযোগ করতে এবং নিষ্ক্রিয় অবস্থাগুলো গণনা করতে জানে; এবং অন্যদিকে, রাজনীতি (গভর্নর)যা নির্ধারণ করে যে কোনো নির্দিষ্ট সময়ে কোন বিশেষ অবস্থাটি ব্যবহৃত হবে, যার ভিত্তি হলো নিষ্ক্রিয়তার ইতিহাস, আসন্ন টাইমার এবং লেটেন্সি সীমাবদ্ধতা.

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

সিপিইউআইডল লিনাক্স গভর্নর এবং ড্রাইভার

লজিক্যাল সিপিইউ, নিষ্ক্রিয় কাজ, এবং নিষ্ক্রিয় থাকার অর্থ কী

উপব্যবস্থা cpuidle সর্বদা লজিক্যাল সিপিইউ-এর নিরিখে কাজ করে।অর্থাৎ, শিডিউলার যে সত্তাগুলোকে দেখতে পায়: আর্কিটেকচার এবং বাস্তবায়নের উপর নির্ভর করে সেগুলো ফিজিক্যাল কোর, হার্ডওয়্যার থ্রেড (হাইপার-থ্রেড) বা উভয়ের সংমিশ্রণ হতে পারে।

কার্নেলের দৃষ্টিকোণ থেকে, একটি লজিক্যাল সিপিইউ "নিষ্ক্রিয়" থাকে যখন আইডল টাস্কটি ছাড়া এর সাথে সংশ্লিষ্ট অন্য কোনো নির্বাহযোগ্য টাস্ক নেই।শিডিউলার প্রসেস এবং থ্রেডগুলোকে "টাস্ক" হিসেবে পরিচালনা করে, এবং এগুলো বিভিন্ন অবস্থায় থাকতে পারে; যখন কোনো টাস্ক চালানোর যোগ্য হয়, তখন সেটিকে একটি সিপিইউ-তে বরাদ্দ করা হয়। যদি কোনো সিপিইউ-তে কেবল নিষ্ক্রিয় চালানোর যোগ্য টাস্কটি থেকে যায়, তবে কার্নেল সেটিকে নিষ্ক্রিয় বলে গণ্য করে।

নিষ্ক্রিয় টাস্কটি কলটি সম্পাদন করে। নিষ্ক্রিয় লুপএই লুপটি প্রতিটি পুনরাবৃত্তিতে একটি স্লিপ স্টেট নির্ধারণ করার জন্য একটি সিপিইউআইডল গভর্নরকে কল করে এবং তারপর হার্ডওয়্যারকে সেই স্টেটে প্রবেশ করার অনুরোধ জানাতে সিপিইউআইডল ড্রাইভারকে আহ্বান করে। যদি কোনো স্লিপ স্টেট উপলব্ধ না থাকে, পরবর্তী ইভেন্টের আগে যথেষ্ট সময় না থাকে, অথবা ল্যাটেন্সি সীমাবদ্ধতা খুব কঠোর হয়, তবে সিপিইউ হয় একটি অপেক্ষাকৃত অপ্রয়োজনীয় লুপ চালায় অথবা সবচেয়ে মৌলিক ওয়েট ইনস্ট্রাকশন (যেমন `wait`) ব্যবহার করে। hlt অথবা অনুরুপ).

মাল্টি-কোর প্রসেসর বা SMT যুক্ত প্রসেসরগুলিতে, নিষ্ক্রিয় সিদ্ধান্ত ইউনিট শ্রেণিবিন্যাসকে প্রভাবিত করেএকটি থ্রেড-স্তরের স্লিপ অনুরোধ এর কোরকে আরও গভীর অবস্থায় প্রবেশ করাতে পারে যদি সমস্ত থ্রেড নিষ্ক্রিয় থাকে, এবং ফলস্বরূপ, কোরের একটি ক্লাস্টার ঘুমিয়ে পড়তে পারে যদি এর সমস্ত সদস্য অনুমতি দেয়। Cpuidle-কে এর মাধ্যমে এটি মডেল করতে হবে... এমন অবস্থা যা শ্রেণিবিন্যাস স্তরের সংমিশ্রণকে প্রতিনিধিত্ব করে, যার বিলম্ব এবং অবস্থানকাল সম্ভাব্য গভীরতম অবস্থাকে প্রতিফলিত করে।

যখন কোনো টাইপের অবজেক্ট দ্বারা উপস্থাপিত অবস্থার জন্য অনুরোধ করা হয় struct cpuidle_stateড্রাইভারটি ডিজাইন অনুযায়ী হার্ডওয়্যারকে যতদূর সম্ভব গভীরে যাওয়ার অনুমোদন দিতে পারে। অতএব, প্রস্থান বিলম্ব এবং লক্ষ্য অবস্থান অবশ্যই প্রকৃত সবচেয়ে খারাপ অবস্থার সংমিশ্রণের সাথে সামঞ্জস্যপূর্ণ হতে হবে। স্তরবিন্যাসের মধ্যে (কোর, ক্লাস্টার, প্যাকেজ, ইত্যাদি)।

সিপিইউআইডিএল গভর্নররা কীভাবে কোন রাজ্য ব্যবহার করার সিদ্ধান্ত নেয়

The সিপিইউআইডিএল গভর্নররা হল নীতি মডিউল যখনই একটি সিপিইউ আইডল লুপে প্রবেশ করে, এই প্রসেসগুলো চলে। এদের উদ্দেশ্য হলো উপলব্ধ তথ্য ব্যবহার করে এমন একটি আইডল স্টেট নির্বাচন করা, যা ল্যাটেন্সি সীমাবদ্ধতা লঙ্ঘন না করে সর্বাধিক শক্তি সাশ্রয় করে।

প্রতিটি গভর্নরকে একটি কাঠামো হিসাবে সংজ্ঞায়িত করা হয়। struct cpuidle_governorকলব্যাক সহ enable, disable, select y reflect, একটি অগ্রাধিকার ক্ষেত্র (ratingএবং একটি নাম। একবার নিবন্ধিত হয়ে গেলে cpuidle_register_governor()কার্নেল দ্বারা স্বয়ংক্রিয়ভাবে নির্বাচিত হতে পারে (রেটিং, ডিফল্ট কনফিগারেশন বা প্যারামিটারের উপর ভিত্তি করে) cpuidle.governor=অথবা ইউজার স্পেস থেকে sysfs-এর মাধ্যমে ম্যানুয়ালি।

যখন একটি সিপিইউ-এর জন্য তার কলব্যাকের মাধ্যমে একটি গভর্নর সক্রিয় করা হয় enable(), একটি গ্রহণ করে struct cpuidle_device যা সেই সিপিইউ এবং একটিকে প্রতিনিধিত্ব করে struct cpuidle_driver উপলব্ধ রাজ্যগুলির তালিকা সহ (struct cpuidle_stateহ্যাঁ enable() এটি ব্যর্থ হয়; কার্নেল একটি ডিফল্ট নিষ্ক্রিয় কোড ব্যবহার করে। সেই সিপিইউ-এর জন্য cpuidle-এর পরিবর্তে architecture-specific।

  ERR_SSL_VERSION_OR_CIPHER_MISMATCH ত্রুটিটি কী এবং কীভাবে এটি ঠিক করা যায়

গভর্নরের হৃদয়ের কথা হলো পুনরায় আহ্বান জানানো। select()যা সিপিইউআইডিএল ডিভাইস, ড্রাইভার এবং একটি বুলিয়ানের পয়েন্টার গ্রহণ করে। stop_tickএই কলব্যাকটি স্টেটগুলোর অ্যারের মধ্যে থেকে নির্বাচিত স্টেটের ইন্ডেক্স, অথবা একটি নেতিবাচক এরর কোড রিটার্ন করে। এছাড়াও, এটি সেই সিপিইউ-তে টিক শিডিউলার বন্ধ করা হবে কিনা, সেই সিদ্ধান্ত নিতে পারে (বুলিয়ানটি ক্লিয়ার করে বা না করে)।

যখন সিপিইউ জেগে ওঠে, গভর্নর কলটি গ্রহণ করেন reflect() কোন অবস্থাটি বেছে নেওয়া হয়েছিল এবং ডাউনটাইমটি আসলে কতক্ষণ স্থায়ী হয়েছিল, সেই সম্পর্কিত তথ্য সহ। এটি আপনাকে অনুমতি দেয় ঐতিহাসিক তথ্যের ভিত্তিতে তাদের পূর্বাভাস পরিমার্জন করেএছাড়াও PM QoS লেটেন্সি সীমাবদ্ধতাগুলি মেনে চলা প্রয়োজন: এর মাধ্যমে cpuidle_governor_latency_req() কার্যকরী লেটেন্সি সীমা অর্জন করে এবং এমন কোনো স্টেট কখনই নির্বাচন করা উচিত নয় যার exit_latency সেই মান অতিক্রম করুন.

প্রধান গভর্নর: ল্যাডার, হল্টপোল, মেনু এবং টিও

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

মই এটি সক্রিয় পর্যায়ক্রমিক টিকযুক্ত সিস্টেমের জন্য ডিজাইন করা হয়েছে। এটি প্রায় একচেটিয়াভাবে ভিত্তি করে একটি সহজ পদ্ধতি ব্যবহার করে। নিষ্ক্রিয় সময়কালের ইতিহাসএটি বিভিন্ন অবস্থার একটি "সিঁড়ি" বেয়ে ওঠানামা করে; যথেষ্ট দীর্ঘ সময় নিষ্ক্রিয়তা দেখলে এটি গভীরতর অবস্থায় উন্নীত হয় এবং খুব তাড়াতাড়ি জাগরণ ঘটলে পিছু হটে যায়।

হল্টপোল এটি ভার্চুয়াল মেশিনের জন্য একটি বিশেষায়িত গভর্নর। এটি হার্ডওয়্যারের গভীর নিষ্ক্রিয় অবস্থায় প্রবেশ করার পরিবর্তে, এটি জনমত জরিপের ওপর ব্যাপকভাবে নির্ভর করে। এমন পরিবেশে আপাত লেটেন্সি কমাতে (ওয়েট লুপ) ব্যবহার করা হয়, যেখানে ভৌত বিশ্রাম অবস্থা খুব বেশি অবদান নাও রাখতে পারে অথবা হাইপারভাইজর দ্বারা তা ভালোভাবে মডেল করা যায় না।

মেনু y Teo এগুলো হলো টিকলেস সিস্টেমে ব্যবহৃত গভর্নর (CONFIG_NO_HZ_IDLE o CONFIG_NO_HZ_FULLউভয়ই একত্রিত করে পরবর্তী টাইমারের তথ্যসহ নিষ্ক্রিয় সময়কালের ইতিহাসএবং তারা এমনভাবে শক্তি সাশ্রয় করার চেষ্টা করে, যাতে সিদ্ধান্তটি নেওয়ার মাধ্যমে যে সময় সাশ্রয় হয়, তার চেয়ে বেশি সময় সিদ্ধান্তটি গণনা করতে ব্যয় না হয়।

গভর্নর মেনু চেষ্টা করুন সিপিইউ কতক্ষণ নিষ্ক্রিয় থাকবে তা স্পষ্টভাবে অনুমান করুন।পরবর্তী টাইমার পর্যন্ত সময়ের একটি অংশকে ঊর্ধ্বসীমা হিসেবে ধরা হয় এবং সাম্প্রতিক নিষ্ক্রিয়তার ইতিহাসের উপর ভিত্তি করে একটি সংশোধন গুণক প্রয়োগ করে একটি "সাধারণ" সময়কালের আনুমানিক হিসাব করা হয়। সেই আনুমানিক মানটি ব্যবহার করে, স্টেট টেবিল থেকে এমন গভীরতম স্টেটটি বেছে নিন যার লক্ষ্য বাসস্থানটি এর সাথে মেলে।

গভর্নর টিও (টাইমার-ইভেন্ট ভিত্তিক) এটি সমস্যাটিকে ভিন্নভাবে মোকাবেলা করে: সঠিক ডাউনটাইম ভবিষ্যদ্বাণী করার চেষ্টা করার পরিবর্তে, প্রতিটি রাজ্যের সাথে যুক্ত 'বিন' বা ব্যবধান অনুসারে ঐতিহাসিক ডেটাকে পরিমাপ করে।প্রতিটি বিন সেই সময়সীমাকে নির্দেশ করে যেখানে সেই অবস্থাটি সাধারণত সর্বোত্তম থাকে। TEO মেট্রিক্স বজায় রাখে হিট (জাগরণ, যার প্রকৃত সময়কাল লক্ষ্যস্থলের সাথে মিলে যায়) এবং বাধা (অসময়ের ঘটনার কারণে সৃষ্ট জাগরণ যা ভবিষ্যদ্বাণীকে ব্যাহত করে) এবং, এর মাধ্যমে সরাসরি অনুমান করা যায় কোন নির্দিষ্ট বিবৃতিটি সঠিক হওয়ার সম্ভাবনা সবচেয়ে বেশি?.

শুধুমাত্র যখন এতে তার সুবিধা হয়, তখনই টিইও পরবর্তী টাইমার পর্যন্ত সময় পরীক্ষা করে, যাতে এমন একটি অবস্থায় প্রবেশ করা এড়ানো যায় যার লক্ষ্যমাত্রা অনুযায়ী বসবাসের সময়কাল প্রকৃত উপলব্ধ সময়ের চেয়ে বেশি।তাছাড়া, এর নকশা সিদ্ধান্ত গ্রহণের খরচ কমানোর চেষ্টা করে: খুব কম নিষ্ক্রিয় সময়যুক্ত পরিস্থিতিতে, চিন্তা করে যে পরিমাণ শক্তি সাশ্রয় হয়, তার চেয়ে বেশি শক্তি ব্যয় করার চেয়ে দ্রুত একটি অগভীর অবস্থা বেছে নেওয়াই শ্রেয়।

সিপিইউআইডল ড্রাইভার: কার্নেল এবং হার্ডওয়্যারের মধ্যে সংযোগ স্থাপনকারী।

গভর্নররা যখন রাজনীতি নিয়ে ব্যস্ত, তখন সিপিইউআইডল ড্রাইভারগুলি প্রকৃত অবস্থা ইনপুট/আউটপুট প্রক্রিয়া বাস্তবায়ন করে।প্রতিটি ড্রাইভার প্রসেসর (বা একাধিক সিপিইউ) দ্বারা সমর্থিত স্টেটগুলোর তালিকা একটির মাধ্যমে উপস্থাপন করে। struct cpuidle_driver যেটিতে অ্যারে রয়েছে struct cpuidle_state.

প্রতি struct cpuidle_state অন্যান্য ক্ষেত্রের মধ্যে, লক্ষ্য বাসস্থানকে সংজ্ঞায়িত করে (target_residency মাইক্রোসেকেন্ডে), সর্বোচ্চ আউটপুট লেটেন্সি (exit_latency), পতাকা যেমন CPUIDLE_FLAG_POLLING এবং, সবচেয়ে গুরুত্বপূর্ণভাবে, একটি কলব্যাক enter() যেটি সূক্ষ্ম কাজটি করে থাকে: হার্ডওয়্যারকে সেই অবস্থায় প্রবেশ করতে বলার জন্য প্রয়োজনীয় নির্দেশাবলী বা কলগুলো কার্যকর করা।

স্টেট অ্যারের এন্ট্রিগুলো অবশ্যই দ্বারা সাজানো থাকতে হবে লক্ষ্য_বাসস্থান আরোহীসুতরাং, সূচক ০ সাধারণত সবচেয়ে অগভীর (এবং ব্যবহারে সবচেয়ে সস্তা) অবস্থাকে নির্দেশ করে এবং পরবর্তী সূচকগুলো ক্রমান্বয়ে গভীরতর অবস্থাগুলোর সাথে সম্পর্কিত। গভর্নররা তাদের গণনার জন্য এই ক্রমটিই ধরে নেন।

কলব্যাক enter() ব্যবহারের জন্য সিপিইউআইডিএল ডিভাইস, ড্রাইভার এবং স্টেট ইনডেক্স গ্রহণ করে।সাসপেনশন ধরনের ক্ষেত্রে সাসপেন্ড-টু-আইডলএর পরিবর্তে এটি ব্যবহৃত হয় enter_s2idle()যা অবশ্যই আরও কঠোর বিধিনিষেধ মেনে চলবে: এটি তার নির্বাহ চলাকালীন ইন্টারাপ্ট পুনরায় সক্রিয় করতে বা টাইমিং ডিভাইস পরিবর্তন করতে পারবে না, এমন কিছু যা enter() হ্যাঁ, প্ল্যাটফর্মের ওপর নির্ভর করে এটি করা যেতে পারে।

অবস্থাগুলো বর্ণনা করার পাশাপাশি, ড্রাইভারকে অবশ্যই রেকর্ড করতে হবে কোন সিপিইউগুলো তার নিয়ন্ত্রণে রয়েছে: প্রতিটি সিপিইউ-এর নিজস্ব struct cpuidle_device, যা সাধারণত এর সাথে নিবন্ধিত হয় cpuidle_register_device()যদি কোনো 'কাপলড' স্টেট না থাকে (যার জন্য একাধিক সিপিইউ-এর মধ্যে সমন্বয় প্রয়োজন), তাহলে রেজিস্টারের কাজ শেষ হয়ে যায়। cpuidle_register_driver()যদি কোনোটি থাকে, তবে সেগুলো ব্যবহার করা হয়। cpuidle_register()যেটি ডিভাইসগুলো নিবন্ধন করার জন্যও দায়ী।

আধুনিক প্ল্যাটফর্মগুলো নির্দিষ্ট ড্রাইভারের সংখ্যা কমানোর চেষ্টা করে: উদাহরণস্বরূপ, ARM সাধারণত একটি জেনেরিক ড্রাইভার ব্যবহার করে যা PSCI (পাওয়ার স্টেট কোঅর্ডিনেশন ইন্টারফেস)-এর মতো স্ট্যান্ডার্ড ইন্টারফেসগুলিতে দায়িত্ব অর্পণ করুনএবং RISC-V-তে SBI (সুপারভাইজার বাইনারি ইন্টারফেস)-এর মাধ্যমে অনুরূপ কিছু একটা রয়েছে। তা সত্ত্বেও, x86-এ এই ধরনের ড্রাইভার এখনও বিদ্যমান। intel_idle (ড্রাইভারের মধ্যে স্টেট টেবিলটি "স্থায়ীভাবে সংরক্ষিত" থাকা অবস্থায়) এবং acpi_idle (যা ACPI সারণী থেকে অবস্থাগুলো সংগ্রহ করে).

নিষ্ক্রিয়তার অবস্থা: প্যারামিটার, sysfs এবং মেট্রিক্স

সিপিইউআইডিএল গভর্নরদের কাছে যে প্রতিটি স্থির অবস্থা প্রকাশ করে, তা বেশ কয়েকটি প্রধান প্যারামিটার দ্বারা চিহ্নিত করা হয়। সবচেয়ে গুরুত্বপূর্ণ দুটি হলো... লক্ষ্য বাসস্থান (target_residency) এবং আউটপুট বিলম্ব (exit_latency)উভয়ই মাইক্রোসেকেন্ডে।

La target_residency প্রকৃতপক্ষে, এটি অবস্থার শক্তিগত গভীরতাকে নির্দেশ করে।নিম্নতর অবস্থাগুলোর তুলনায় লাভজনক হতে হলে, হার্ডওয়্যারটিকে (প্রবেশের খরচ সহ) ন্যূনতম এই সময়টুকু ওই অবস্থায় থাকতে হবে। যদি সিস্টেমটি সেই অবস্থানকাল শেষ হওয়ার আগেই জেগে ওঠে, তাহলে সম্ভবত ওই অবস্থায় প্রবেশ করতে এটি যে পরিমাণ শক্তি সাশ্রয় করেছে, তার চেয়ে বেশি শক্তি ব্যয় করেছে।

  ম্যাকে শোধনযোগ্য স্টোরেজ স্পেস: এটি কী এবং কীভাবে এটি খালি করা যায়

La exit_latency এটি সেই সবচেয়ে খারাপ পরিস্থিতিগত সময় নির্ধারণ করে, যা সিপিইউ-এর কোনো একটি স্টেট থেকে বেরিয়ে আসার অনুরোধ করা এবং প্রকৃতপক্ষে পরবর্তী দরকারি নির্দেশনাটি কার্যকর করার মধ্যবর্তী সময়ে অতিবাহিত হয়।এর মধ্যে সেই পরিস্থিতিও অন্তর্ভুক্ত যেখানে হার্ডওয়্যারটি কোনো অবস্থায় প্রবেশ করার সময়েই একটি ওয়েকআপ ইভেন্ট আসে, কারণ সাধারণত সুশৃঙ্খলভাবে প্রস্থান করার আগে অভ্যন্তরীণ রূপান্তরটি অবশ্যই সম্পন্ন হতে হয়।

এছাড়াও, এমন কিছু ফ্ল্যাগ রয়েছে যা স্টেটের অতিরিক্ত বৈশিষ্ট্য বর্ণনা করে: উদাহরণস্বরূপ, CPUIDLE_FLAG_POLLING ইঙ্গিত দেয় যে এই “অবস্থা” আসলে কোনো হার্ডওয়্যার বিশ্রাম নয়কিন্তু একটি পোলিং লুপ যা সুবিধাজনক সময়ে (উদাহরণস্বরূপ, নির্দিষ্ট ভার্চুয়ালাইজড বা ডিবাগিং পরিবেশে) বাস্তব অবস্থা স্পর্শ করা এড়ানোর জন্য একটি বিশেষ কৌশল হিসেবে ব্যবহৃত হয়।

কার্নেল sysfs-এর মাধ্যমে সিপিইউ-এর নিষ্ক্রিয় অবস্থা সম্পর্কে অত্যন্ত বিস্তারিত তথ্য প্রকাশ করে, /sys/devices/system/cpu/cpu<N>/cpuidle/সেখানে ডিরেক্টরি আছে। state0, state1ইত্যাদি, ড্রাইভার অ্যারের প্রতিটি এন্ট্রির জন্য একটি করে, এবং প্রতিটিতে আমরা খুঁজে পেতে পারি যেমন বৈশিষ্ট্য name, desc, latency, residency, usage, time, power, above, below y rejected.

এই বৈশিষ্ট্যগুলো আমাদের দেখতে সাহায্য করে প্রতিটি রাজ্যকে কতবার অনুরোধ করা হয়েছে (usageকার্নেল অনুসারে এতে মোট কত সময় ব্যয় হয়েছে (time)এবং পছন্দটি কতটা ভালো বা খারাপ ছিল (above y below তারা সেইসব ক্ষেত্র গণনা করে যেখানে নিষ্ক্রিয় সময়ের প্রকৃত ব্যাপ্তি লক্ষ্যমাত্রার অবস্থানকালের তুলনায় স্পষ্টতই খুব কম বা খুব বেশি ছিল। rejected এটি সেই সময়গুলো গণনা করে যখন অনুরোধটি প্রত্যাখ্যাত হয়েছিল, সাধারণত রূপান্তরের ঠিক মুহূর্তে কোনো বাধা ঘটার কারণে।

একটি বিশেষভাবে উপকারী বৈশিষ্ট্য আছে, disableএর মাধ্যমে আপনি ইউজার স্পেস থেকে (১ বা ০ টাইপ করে) কোনো সিপিইউ-এর নির্দিষ্ট স্টেটটি সক্রিয় বা নিষ্ক্রিয় করতে পারবেন। কোনো সিপিইউ-এর জন্য এটি নিষ্ক্রিয় করা থাকলে, গভর্নর নির্বাচনের সময় তা বিবেচনা করবে না; যদি আপনি কোনো সিস্টেম স্টেট সম্পূর্ণরূপে মুছে ফেলতে চান, তবে আপনাকে অবশ্যই সমস্ত সিপিইউতে এটি নিষ্ক্রিয় করুন। গুণ default_status এটি নির্দেশ করে যে স্টেটটি ডিফল্টরূপে সক্রিয় আছে কি না।

টিক শিডিউলার এবং টিকলেস সিস্টেম

বিখ্যাত সময়সূচী টিক এটি একটি পর্যায়ক্রমিক টাইমার (১০০, ২৫০ বা ১০০০ হার্টজ, যা নির্ভর করে) CONFIG_HZযা কার্নেল অন্যান্য কাজের পাশাপাশি টাস্কগুলোর মধ্যে সিপিইউ টাইম বণ্টন করতে, কাউন্টার আপডেট করতে এবং টাইমারের মেয়াদ শেষ হওয়া কার্যকর করতে ব্যবহার করে।

cpuidle-এর দৃষ্টিকোণ থেকে, এই পর্যায়ক্রমিক টিক একটি উপদ্রব: যখন এটি একটি নিষ্ক্রিয় CPU-তে সক্রিয় থাকে, ওই সিপিইউ টিক পিরিয়ডের চেয়ে বেশি সময় ধরে স্লিপ করতে পারে।তাছাড়া, প্রতি টিক-এ প্রতিটি জাগরণের জন্য বিশ্রাম অবস্থায় প্রবেশ ও প্রস্থান করতে হয়, ফলে খুব গভীর কোনো অবস্থা বেছে নিলে শক্তি অপচয় হয়।

সংজ্ঞা অনুসারে, একটি সিপিইউতে যা শুধুমাত্র আইডল লুপ চালাচ্ছে টিকটি রাখা কঠোরভাবে আবশ্যক নয়। সিপিইউ শেয়ারিংয়ের ক্ষেত্রে: আর কোনো চালনাযোগ্য টাস্ক থাকে না। তাই, লিনাক্সকে এভাবে কনফিগার করা যেতে পারে সুড়সুড়িহীন নিষ্ক্রিয় অবস্থায় (CONFIG_NO_HZ_IDLE) অথবা “ফুল” মোডে যখন সিপিইউ-তে কেবল একটি বিচ্ছিন্ন টাস্ক থাকে (CONFIG_NO_HZ_FULL), সেই পরিস্থিতিতে টিকটিকে নিষ্ক্রিয় করে।

টিকটিকে থামানো হবে কি না, সেই সিদ্ধান্তটি গভর্নর একটি প্যারামিটার ব্যবহার করে গ্রহণ করেন। stop_tick আপনার কলব্যাক থেকে select()যদি আপনি স্বল্প মেয়াদে (যা একটি টিক পিরিয়ড হবে) কোনো বাধা (টাইমার বা অন্য কোনোভাবে) প্রত্যাশা করেন, টিক চিহ্নটি নিষ্ক্রিয় করার কোনো মানে হয় না।এটি পুনঃপ্রোগ্রাম করতে সময় ব্যয় হবে, এবং যদি দেখা যায় যে কেউ সিপিইউ-কে জাগিয়ে তুলছে না, তাহলে ডাউনটাইমের সময়টা সম্ভবত খুবই অগভীর একটি অবস্থায় কাটবে।

বিপরীতভাবে, যদি গভর্নর মনে করেন যে সিপিইউ টিকের চেয়ে বেশি সময় ধরে নিষ্ক্রিয় থাকবে এবং নির্বাচিত অবস্থাটি গভীর হয়, সঞ্চয় নষ্ট না করার জন্য টিকটিক শব্দ বন্ধ করে দেওয়াই ভালো।কিছু কার্নেল কনফিগারেশন (প্যারামিটার) nohz=off বা অক্ষম করুন CONFIG_NO_HZ_IDLEটিককে কখনও না থামানোর জন্য বাধ্য করা, সেক্ষেত্রে সিস্টেমটি টিকলেস থাকে না এবং ডিফল্ট গভর্নর সাধারণত মেনু বা টিও-এর পরিবর্তে ল্যাডার হয়।

PM QoS: রেস্টিং ল্যাটেন্সি কীভাবে নিয়ন্ত্রণ করবেন

এর কাঠামো পাওয়ার ম্যানেজমেন্ট কোয়ালিটি অফ সার্ভিস (পিএম কিউওএস) এটি ড্রাইভার এবং ইউজার স্পেস প্রসেসগুলোকে সিস্টেমের শক্তি ব্যবহারের আচরণের উপর বিধিনিষেধ আরোপ করার সুযোগ দেয়, বিশেষ করে স্লিপ স্টেটের ইনপুট/আউটপুট লেটেন্সি.

cpuidle-এর ক্ষেত্রে প্রধানত দুই ধরনের সীমাবদ্ধতা রয়েছে: একটি বৈশ্বিক সিপিইউ লেটেন্সি সীমা এবং বিধিনিষেধ সিপিইউ পুনরায় চালু হওয়ার বিলম্ব (pm_qos_resume_latency_us)অভ্যন্তরীণভাবে, অনুরোধগুলি অগ্রাধিকার তালিকায় সংরক্ষণ করা হয় এবং এক্ষেত্রে কার্যকর মানটি হলো অনুরোধকৃত সমস্ত অনুরোধের মধ্যে সর্বনিম্নটি।

ইউজার স্পেস থেকে, খোলার মাধ্যমে গ্লোবাল লিমিট পরিবর্তন করা যেতে পারে। /dev/cpu_dma_latency এবং সেই ডেসক্রিপ্টরে মাইক্রোসেকেন্ডে সর্বোচ্চ সহনশীল লেটেন্সি সহ একটি ৩২-বিট পূর্ণসংখ্যা লেখা। প্রতিটি খোলা বর্ণনাকারী একটি স্বাধীন অনুরোধের প্রতিনিধিত্ব করেযখন এটি বন্ধ হয়, তখন সেই অনুরোধটি অদৃশ্য হয়ে যায় এবং সিস্টেম বাকিগুলোর সাথে কার্যকর মানটি পুনরায় গণনা করে।

সিপিইউ সীমাবদ্ধতার জন্য, একটি ফাইল আছে। power/pm_qos_resume_latency_us en /sys/devices/system/cpu/cpu<N>/সেখানে কোনো মান লিখলে সেই নির্দিষ্ট সিপিইউ-এর সাথে যুক্ত অনুরোধটি পরিবর্তিত হয় (এটি সম্পূর্ণ ইউজার স্পেস দ্বারা ব্যবহৃত হয়, তাই কে এটি অ্যাক্সেস করবে তা নির্ধারণ করা বাঞ্ছনীয়)। কার্নেল ড্রাইভারগুলোও অভ্যন্তরীণ পিএম কিউওএস এপিআই-এর মাধ্যমে তাদের নিজস্ব অনুরোধ নিবন্ধন করতে পারে।

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

এছাড়াও আরেকটি QoS আছে, cpu_wakeup_latencyযা মোড চলাকালীন নিষ্ক্রিয় অবস্থা নির্বাচনের উপর প্রভাব ফেলে সাসপেন্ড-টু-আইডল সিস্টেমের (s2idle) অবস্থা। ইউজার স্পেস থেকে এর পরিচালনা পদ্ধতি এর অনুরূপ। cpu_dma_latency এবং এটি মাইক্রোসেকেন্ডেও প্রকাশ করা হয়।

কার্নেল প্যারামিটারের মাধ্যমে সিপিইউআইডল নিয়ন্ত্রণ

লিনাক্স আপনাকে কার্নেল কমান্ড লাইন থেকে সিপিইউআইডল (cpuidle) এবং আইডল (idle) ড্রাইভারগুলোর আচরণ পরিবর্তন করার সুযোগ দেয়। সবচেয়ে বড় পরিবর্তনটি হলো... cpuidle.off=1এটি সাবসিস্টেমটিকে সম্পূর্ণরূপে নিষ্ক্রিয় করে দেয়: আইডল লুপটি তখনও বিদ্যমান থাকে, কিন্তু সিপিইউআইডল গভর্নর এবং ড্রাইভারগুলো আর আহ্বান করা হয় না, এবং এর পরিবর্তে আর্কিটেকচারের "ডিফল্ট" প্রক্রিয়াটি ব্যবহৃত হয়, যা সাধারণত অনেক বেশি সরল এবং কম কার্যকর।

  WSL9x: উইন্ডোজ ৯৫ এবং ৯৮-এ লিনাক্স নিয়ে আসার অবিশ্বাস্য পরীক্ষা

প্যারামিটার cpuidle.governor=<nombre> এটি আপনাকে গভর্নরকে ব্যবহার করতে বাধ্য করার সুযোগ দেয়, উদাহরণস্বরূপ cpuidle.governor=menu o cpuidle.governor=teoস্বয়ংক্রিয়ভাবে নির্বাচিতটির পরিবর্তে। কার্নেল পুনরায় কম্পাইল না করেই একই হার্ডওয়্যারে বিদ্যুৎ খরচ এবং ল্যাটেন্সি নিয়ে পরীক্ষা-নিরীক্ষা করার জন্য এটি উপযোগী।

x86 আর্কিটেকচারে, আইডল মোডে কীভাবে প্রবেশ করা হয় সে সম্পর্কিত নির্দিষ্ট প্যারামিটারও রয়েছে। উদাহরণস্বরূপ, idle=halt y idle=poll তারা ড্রাইভারগুলোকে নিষ্ক্রিয় করে দেয়। intel_idle y acpi_idleসিস্টেমকে নির্দেশনাটি ব্যবহার করতে বাধ্য করা hlt অথবা যথাক্রমে রেস্টের জন্য একটি বিশুদ্ধ পোলিং লুপ। এটি আচরণকে সরল করে, কিন্তু এর বিনিময়ে কর্মদক্ষতা কমে যায়: idle=pollবিশেষত, এটি এমন পি-স্টেটগুলির ব্যবহার প্রতিরোধ করতে পারে যেগুলির জন্য সিপিইউকে নিষ্ক্রিয় থাকতে হয়, যা বিদ্যুৎ খরচ এবং সিঙ্গেল-থ্রেডেড পারফরম্যান্সকে আরও খারাপ করে তোলে।

প্যারামিটার idle=nomwait স্লিপ স্টেটে প্রবেশ করার জন্য MWAIT নির্দেশনার ব্যবহার নিষিদ্ধ করে, যা বাধ্য করে acpi_idle ব্যবহার করা hlt এবং নিষ্ক্রিয় করা intel_idle ইন্টেল প্রসেসরে, শুধুমাত্র ACPI স্টেটগুলো পরিচালনা করে। এছাড়াও, ড্রাইভারগুলো intel_idle y processor (পরবর্তীতে অন্তর্ভুক্ত) acpi_idle) বিকল্পগুলি গ্রহণ করুন যেমন intel_idle.max_cstate=<n> y processor.max_cstate=<n> ড্রাইভারের মধ্যে উপলব্ধ স্টেটগুলোর তালিকা সংকুচিত করতে এবং নির্দিষ্ট সূচকের চেয়ে গভীরতর স্টেটগুলোকে বাদ দিতে।

এর ক্ষেত্রে intel_idle.max_cstate=0এটি বিশেষভাবে ইন্টেল ড্রাইভারকে নিষ্ক্রিয় করে ACPI ড্রাইভারকে দায়িত্ব নিতে দেওয়ার সমতুল্য, যেখানে processor.max_cstate=0 হিসাবে ব্যাখ্যা করা হয় processor.max_cstate=1এগুলো দরকারী বিকল্প স্থিতিশীলতার সমস্যা, অস্বাভাবিক লেটেন্সি, বা অস্বাভাবিক বিদ্যুৎ খরচ নির্ণয় করতেএর ফলে, নিষ্ক্রিয় অবস্থায় সিস্টেমের শক্তি সঞ্চয় করার ক্ষমতা সীমিত হয়ে যায়।

ARM, PSCI এবং স্ট্যান্ডবাই প্ল্যাটফর্মের সাথে ইন্টিগ্রেশন

আধুনিক ARM প্ল্যাটফর্মগুলিতে (যেমন TI, NXP, Rockchip, Asahi-র মাধ্যমে Apple-এর অনেক SoC ইত্যাদি), সিপিইউআইডল সাধারণত পিএসসিআই (PSCI)-এর মাধ্যমে নিম্ন-স্তরের ফার্মওয়্যারের সাথে সমন্বিত থাকে।এবং IoT ডিভাইসগুলিতে সাধারণ বুদ্ধিমান IoT পরিষেবা ব্যবস্থাপনাcpuidle-এর জেনেরিক ARM ড্রাইভারটি SMC (সিকিওর মনিটর কল) কলের মাধ্যমে PSCI-এর সাথে যোগাযোগ করে এবং প্রকৃত স্টেট ট্রানজিশনের কাজটি TF-A (আর্ম ট্রাস্টেড ফার্মওয়্যার) বা অন্য কোনো সমতুল্য ফার্মওয়্যারের ওপর অর্পণ করে।

একটি সাধারণ উদাহরণ হলো AM62x-এর মতো একটি SoC, যেখানে অবস্থা WFI (Wait For Interrupt) নির্দেশনার উপর ভিত্তি করে স্ট্যান্ডবাইকে একটি CPUIdle অবস্থা হিসেবে বাস্তবায়ন করা হয়।ব্যবহারকারীর দৃষ্টিকোণ থেকে, সিস্টেমটি কোনো রকম হস্তক্ষেপ ছাড়াই প্রতি সেকেন্ডে বহুবার অবিরাম স্ট্যান্ডবাই মোডে প্রবেশ করে ও বেরিয়ে আসে: এটিই হলো ডিফল্ট "লাইট" স্ট্যান্ডবাই অবস্থা, যেখানে প্রবেশ ও প্রস্থানের সময় মাইক্রোসেকেন্ডের পর্যায়ে থাকে।

এই প্ল্যাটফর্মগুলিতে সিস্টেম যখন আইডল মোডে প্রবেশ করে, তখন এক্সিকিউশন পাথটি আনুমানিক নিম্নরূপ: আইডল লুপটি শনাক্ত করে যে কোনো টাস্ক নেই, এবং গভর্নর সংশ্লিষ্ট স্টেটটি বেছে নেয় (উদাহরণস্বরূপ, একটি নাম stby)জেনেরিক ARM ড্রাইভারটি লেয়ারের মাধ্যমে PSCI-কে কল করে। drivers/firmware/psci.cএবং TF-A প্রান্তে হ্যান্ডলারটি আহ্বান করা হয়। cpu_standby() কাঠামোতে সংজ্ঞায়িত plat_psci_opsআসল ঘটনাটা সেখানেই ঘটে। WFI.

যখন কোনো ইন্টারাপ্ট আসে, প্রসেসর স্বয়ংক্রিয়ভাবে WFI থেকে বেরিয়ে যায়, TF-A কার্নেলের কাছে নিয়ন্ত্রণ ফিরিয়ে দেয় এবং সিপিইউ যেখান থেকে থেমেছিল সেখান থেকে তার কার্য সম্পাদন পুনরায় শুরু করে। এই পুরো প্রক্রিয়াটি স্বচ্ছভাবে পরিচালিত হয়, যদি শর্তগুলো পূরণ হয়। ডিভাইস ট্রি নিষ্ক্রিয় অবস্থাগুলোকে সঠিকভাবে বর্ণনা করে (নোড) idle-statesপ্রতিটি সিপিইউ থেকে প্রাপ্ত রেফারেন্স, এবং বৈশিষ্ট্য যেমন entry-latency-us, exit-latency-us y min-residency-us).

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

একবার কার্নেলে cpuidle সক্রিয় হয়ে গেলে এবং একটি কার্যকর ড্রাইভার (উদাহরণস্বরূপ, DT-তে সঠিকভাবে বর্ণিত জেনেরিক ARM + PSCI ড্রাইভার) থাকলে, ব্যবহারকারীকে কোনো কিছু 'সক্রিয়' করার প্রয়োজন নেই।গভর্নররা এটি স্বয়ংক্রিয়ভাবে পরিচালনা করেন। তবে, আপনি পরিসংখ্যান দেখতে পারেন। /sysবর্তমান গভর্নরকে পরিবর্তন করুন /sys/devices/system/cpu/cpuidle/current_governor অথবা ড্রাইভার দ্বারা প্রকাশিত স্টেটগুলোর বৈশিষ্ট্যগুলো সমন্বয় করুন।

তুলনামূলকভাবে নতুন প্ল্যাটফর্মগুলিতে বা আসাহি লিনাক্সের মতো পোর্টিং প্রক্রিয়ায়, ব্যাটারি, তাপ বা কার্যকরী "স্লিপ" এর অভাবজনিত অনেক সমস্যা এর সাথে যুক্ত থাকে হার্ডওয়্যারের সাথে cpuidle-এর সম্পূর্ণ একীকরণ এখনও বিদ্যমান নেই (বা পরিপক্ক নয়)।সমস্যাগুলো হলো: ডেভেলপমেন্ট টুলে সুস্পষ্ট স্টেটের অভাব, এমন কোনো ফার্মওয়্যার নেই যা যুক্তিসঙ্গত স্টেটগুলো বাস্তবায়ন করে, অথবা ড্রাইভারটি এখনো নির্মাণাধীন। এই পরিস্থিতি স্থিতিশীল না হওয়া পর্যন্ত, সাধারণত খুবই সাধারণ একটি ওয়াই-ফাই স্টেট ব্যবহার করা হয়, অথবা আরও খারাপভাবে বললে, সিপিইউ আইডল (CPU IDLE) পুরোপুরি নিষ্ক্রিয় করে একটি বেশ প্রাথমিক স্লিপ স্টেটে থেকে যাওয়া হয়।

পরিশেষে, সিপিইউআইডিএল কীভাবে লজিক্যাল সিপিইউ-কে মডেল করে, গভর্নররা কীভাবে সিদ্ধান্ত নেয় তা বোঝা লক্ষ্য বাসস্থান, লেটেন্সি এবং পিএম কিউওএসড্রাইভারগুলো কীভাবে ACPI, PSCI, বা প্রোপ্রাইটারি ফার্মওয়্যারের সাথে সংযুক্ত হয় এবং টিক শিডিউলার কীভাবে নিষ্ক্রিয় সময়কালকে নিয়ন্ত্রণ করে, তা বুঝতে পারলে আপনি নতুনভাবে উপলব্ধি করতে পারবেন কেন আপনার ল্যাপটপের ব্যাটারি লাইফ বেশি (বা কম) টেকে, কেন একটি "টিকলেস" কার্নেল সাধারণত কম শক্তি খরচ করে, এবং কেন বিশেষ ধরনের হার্ডওয়্যারের জন্য তৈরি কিছু পোর্টে... স্লিপ এবং আইডল মোডই আক্ষরিক অর্থেই একটি টেস্ট সিস্টেম এবং একটি ব্যবহারযোগ্য দৈনন্দিন ব্যবহারের উপযোগী সিস্টেমের মধ্যে পার্থক্য গড়ে দেয়।.

পাওয়ার প্রোফাইল এবং আধুনিক স্ট্যান্ডবাই ব্যবহার করে উন্নত পাওয়ার নীতিগুলি কনফিগার করুন
সম্পর্কিত নিবন্ধ:
পাওয়ার প্রোফাইল এবং আধুনিক স্ট্যান্ডবাই ব্যবহার করে উন্নত পাওয়ার নীতিগুলি কনফিগার করুন