কেন কিছু ইন্টেল পরিবার 6 সিপিইউ মডেল (কোর 2, পেন্টিয়াম এম) ইন্টেল_ইডল দ্বারা সমর্থিত নয়?


25

আমি ইন্টেল কোর 2 কোয়াড (ইয়র্কফিল্ড) প্রসেসরের জন্য আমার লিনাক্স কার্নেলটি টিউন করছি এবং আমি নিম্নলিখিত বার্তাগুলি লক্ষ্য করেছি dmesg:

[    0.019526] cpuidle: using governor menu
[    0.531691] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
[    0.550918] intel_idle: does not run on family 6 model 23
[    0.554415] tsc: Marking TSC unstable due to TSC halts in idle

পাওয়ারটপ প্যাকেজ এবং স্বতন্ত্র কোরগুলির জন্য কেবল সি 1, সি 2 এবং সি 3 ব্যবহার করা হচ্ছে তা দেখায়:

          Package   |            CPU 0
POLL        0.0%    | POLL        0.0%    0.1 ms
C1          0.0%    | C1          0.0%    0.0 ms
C2          8.2%    | C2          9.9%    0.4 ms
C3         84.9%    | C3         82.5%    0.9 ms

                    |            CPU 1
                    | POLL        0.1%    1.6 ms
                    | C1          0.0%    1.5 ms
                    | C2          9.6%    0.4 ms
                    | C3         82.7%    1.0 ms

                    |            CPU 2
                    | POLL        0.0%    0.1 ms
                    | C1          0.0%    0.0 ms
                    | C2          7.2%    0.3 ms
                    | C3         86.5%    1.0 ms

                    |            CPU 3
                    | POLL        0.0%    0.1 ms
                    | C1          0.0%    0.0 ms
                    | C2          5.9%    0.3 ms
                    | C3         87.7%    1.0 ms

কৌতুহলী, আমি জিজ্ঞাসা করে sysfsদেখেছি যে উত্তরাধিকারী acpi_idleড্রাইভারটি ব্যবহার করা হয়েছে (আমি intel_idleড্রাইভারটি দেখতে প্রত্যাশিত ):

cat /sys/devices/system/cpu/cpuidle/current_driver

acpi_idle

কার্নেল উত্স কোডটি দেখলে, বর্তমানের ইন্টেল_ইডল ড্রাইভারটিতে একটি ডিবাগ বার্তা রয়েছে যা উল্লেখ করে যে কিছু ইন্টেল পরিবার 6 মডেল ড্রাইভার দ্বারা সমর্থিত নয়:

if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL && boot_cpu_data.x86 == 6)
    pr_debug("does not run on family %d model %d\n", boot_cpu_data.x86, boot_cpu_data.x86_model);

এর আগের কাঁটাচামচ (নভেম্বর 22, 2010) intel_idle.c শো কোর 2 প্রসেসরের জন্য অপেক্ষিত সমর্থন (মডেল 23 আসলে জুড়ে উভয় কোর 2 মানিকজোড় এবং চতুর্মুখী):

#ifdef FUTURE_USE
    case 0x17:  /* 23 - Core 2 Duo */
        lapic_timer_reliable_states = (1 << 2) | (1 << 1); /* C2, C1 */
#endif

উপরের কোডটি ডিসেম্বর 2010 কমিটে মুছে ফেলা হয়েছিল ।

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

আমার বর্তমান কার্নেল কনফিগারেশনটি নিম্নরূপ:

CONFIG_SMP=y
CONFIG_MCORE2=y
CONFIG_GENERIC_SMP_IDLE_THREAD=y
CONFIG_ACPI_PROCESSOR_IDLE=y
CONFIG_CPU_IDLE=y
# CONFIG_CPU_IDLE_GOV_LADDER is not set
CONFIG_CPU_IDLE_GOV_MENU=y
# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set
CONFIG_INTEL_IDLE=y

আমার প্রশ্নটি নিম্নরূপ:

  • কোর 2 প্রসেসর দ্বারা সমর্থিত নয় এমন একটি নির্দিষ্ট হার্ডওয়্যার কারণ রয়েছে intel_idle?
  • প্রসেসরের এই পরিবারের জন্য (সমর্থন সমর্থন অক্ষম করা বাদ দিয়ে intel_idle) সর্বোত্তম সিপিইউ নিষ্ক্রিয় সহায়তার জন্য কার্নেলটি কনফিগার করার আরও উপযুক্ত কোনও উপায় আছে কি ?

উত্তর:


28

কোর 2 সিপিইউ পাওয়ার স্টেটস (" সি-স্টেটস ") নিয়ে গবেষণা করার সময়, আমি আসলে বেশিরভাগ উত্তরাধিকারের ইন্টেল কোর / কোর 2 প্রসেসরের সমর্থন বাস্তবায়িত করতে পেরেছি। সমস্ত ব্যাকগ্রাউন্ড তথ্য সহ সম্পূর্ণ বাস্তবায়ন (লিনাক্স প্যাচ) এখানে নথিভুক্ত করা হয়েছে।

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

কোর 2 সলো / ডুও সি-রাজ্য সহায়তার উপর জোরালো কিছু তথ্য 2006 থেকে এই নিবন্ধে পাওয়া গেছে । এটি উইন্ডোজের সমর্থনের সাথে সম্পর্কিত, তবে এটি এই প্রসেসরের শক্তিশালী হার্ডওয়্যার সি-স্টেট সমর্থনটি নির্দেশ করে। কেন্টসফিল্ড সম্পর্কিত তথ্যগুলি প্রকৃত মডেল সংখ্যার সাথে দ্বন্দ্ব করে, তাই আমি বিশ্বাস করি যে তারা আসলে নীচে একটি ইয়র্কফিল্ডের উল্লেখ করছেন:

... কোয়াড-কোর ইন্টেল কোর 2 এক্সট্রিম (কেনটসফিল্ড) প্রসেসর পাঁচটি পারফরম্যান্স এবং পাওয়ার সাশ্রয়কারী প্রযুক্তিগুলিকে সমর্থন করে - এনহান্সড ইন্টেল স্পিডস্টেপ (ইআইএসটি), থার্মাল মনিটর 1 (টিএম 1) এবং থার্মাল মনিটর 2 (টিএম 2), পুরানো অন-ডিমান্ড ক্লক সংশোধন (ওডিসিএম) পাশাপাশি বর্ধিত সি স্টেটস (সিক্সেই)। ইন্টেল পেন্টিয়াম 4 এবং পেন্টিয়াম ডি 600, 800, এবং 900 প্রসেসরের তুলনায়, যা কেবল বর্ধিত হাল্ট (সি 1) স্টেট দ্বারা চিহ্নিত, এই ফাংশনটি ইন্টেল কোর 2 প্রসেসরের (পাশাপাশি ইন্টেল কোর সলো / ডুও প্রসেসরের) জন্য প্রসারিত করা হয়েছে স্টপ গ্রান্ট (সি 2), ডিপ স্লিপ (সি 3) এবং ডিপ স্লিপ (সি 4) সহ প্রসেসরের সমস্ত সম্ভাব্য নিষ্ক্রিয় অবস্থা।

২০০৮-এর এই নিবন্ধটি কোর 2 ডুও এবং কোর 2 কোয়াড সহ মাল্টি-কোর ইন্টেল প্রসেসরের প্রতি-কোর সি-স্টেটসের সমর্থনের রূপরেখা দিয়েছে ( ডেল থেকে এই সাদা কাগজে অতিরিক্ত সহায়ক পটভূমি পঠন পাওয়া গেছে ):

একটি কোর সি-স্টেট একটি হার্ডওয়্যার সি-স্টেট। বেশ কয়েকটি মূল নিষ্ক্রিয় রাজ্য রয়েছে, যেমন সিসি 1 এবং সিসি 3। যেমনটি আমরা জানি, একটি আধুনিক আর্ট প্রসেসরের একাধিক কোর রয়েছে, যেমন সম্প্রতি প্রকাশিত কোর ডুও টি 5000 / টি 7000 মোবাইল প্রসেসর, যা কিছু চেনাশোনাগুলিতে পেনেরিন নামে পরিচিত। আমরা সিপিইউ / প্রসেসর হিসাবে যা ভাবতাম, এর পাশে একাধিক সাধারণ উদ্দেশ্য সিপিইউ রয়েছে। প্রসেসরের চিপটিতে ইন্টেল কোর ডুওর 2 টি কোর রয়েছে। ইন্টেল কোর -২ কোয়াডে প্রসেসরের চিপ হিসাবে এই জাতীয় 4 টি কোর রয়েছে। এই কোরগুলির প্রত্যেকটির নিজস্ব অলস অবস্থা। এটি বোঝায় যে একটি কোর অলস হতে পারে এবং অন্য কোনও থ্রেডে কঠোরভাবে কাজ করতে পারে। সুতরাং একটি মূল সি-রাজ্য হ'ল সেই कोरগুলির মধ্যে একটির অলস রাজ্য।

আমি ইন্টেল থেকে একটি 2010 উপস্থাপনা পেয়েছি যা intel_idleড্রাইভার সম্পর্কে কিছু অতিরিক্ত পটভূমি সরবরাহ করে , তবে দুর্ভাগ্যক্রমে কোর 2 এর জন্য সমর্থনটির অভাব ব্যাখ্যা করে না:

এই এক্সপেরিমেন্টাল ড্রাইভারটি ইন্টেল অ্যাটম প্রসেসর, ইনটেল কোর i3 / i5 / i7 প্রসেসর এবং সম্পর্কিত ইন্টেল জিয়ন প্রসেসরের acpi_idle কে সুপারসিড করে। এটি ইন্টেল কোর 2 প্রসেসর বা তার আগের সমর্থন করে না।

উপরের উপস্থাপনাটি নির্দেশ করে যে intel_idleড্রাইভারটি "মেনু" সিপিইউ গভর্নরের একটি বাস্তবায়ন, যার লিনাক্স কার্নেল কনফিগারেশন (যেমন, CONFIG_CPU_IDLE_GOV_LADDERবনাম CONFIG_CPU_IDLE_GOV_MENU) -এর প্রভাব রয়েছে । মই এবং মেনু গভর্নরদের মধ্যে পার্থক্য succinctly বর্ণনা করা হয় এই উত্তরটি

ডেলের একটি সহায়ক নিবন্ধ রয়েছে যা সি-রাজ্য সি 0 কে সি 6 এর সামঞ্জস্যের তালিকাবদ্ধ করে:

মোডেস সি 1 থেকে সি 3 মূলত সিপিইউর অভ্যন্তরে ব্যবহৃত ক্লক সিগন্যাল কেটে কাজ করে, অন্যদিকে সি 4 থেকে সি 6 মোডগুলি সিপিইউ ভোল্টেজ হ্রাস করে কাজ করে। "বর্ধিত" মোডগুলি একই সাথে উভয়ই করতে পারে।

Mode   Name                   CPUs
C0     Operating State        All CPUs
C1     Halt                   486DX4 and above
C1E    Enhanced Halt          All socket LGA775 CPUs
C1E    —                      Turion 64, 65-nm Athlon X2 and Phenom CPUs
C2     Stop Grant             486DX4 and above
C2     Stop Clock             Only 486DX4, Pentium, Pentium MMX, K5, K6, K6-2, K6-III
C2E    Extended Stop Grant    Core 2 Duo and above (Intel only)
C3     Sleep                  Pentium II, Athlon and above, but not on Core 2 Duo E4000 and E6000
C3     Deep Sleep             Pentium II and above, but not on Core 2 Duo E4000 and E6000; Turion 64
C3     AltVID                 AMD Turion 64
C4     Deeper Sleep           Pentium M and above, but not on Core 2 Duo E4000 and E6000 series; AMD Turion 64
C4E/C5 Enhanced Deeper Sleep  Core Solo, Core Duo and 45-nm mobile Core 2 Duo only
C6     Deep Power Down        45-nm mobile Core 2 Duo only

এই টেবিলটি থেকে (যা আমি পরে কিছু ক্ষেত্রে ভুল বলে মনে করেছি), এটি প্রদর্শিত হবে যে কোর 2 প্রসেসরের সাথে সি-রাষ্ট্রীয় সমর্থনে বিভিন্ন পার্থক্য রয়েছে (নোট করুন যে প্রায় সমস্ত কোর 2 প্রসেসরই সকেট এলজিএ 77 are, কোর ব্যতীত 2 সলো SU3500, যা সকেট বিজিএ 956 এবং মেরম / পেনারিন প্রসেসর "" ইনটেল কোর "সলো / ডুও প্রসেসর সকেট পিবিজিএ 479 বা পিপিজিএ 478 এর মধ্যে একটি)।

এই নিবন্ধে সারণীতে অতিরিক্ত ব্যতিক্রম পাওয়া গেছে :

ইন্টেলের কোর 2 ডুও ই 8500 সি-স্টেটস সি 2 এবং সি 4 সমর্থন করে, অন্যদিকে কোর 2 এক্সট্রিম কিউএক্স 9650 দেয় না।

মজার বিষয় হল, কিউএক্স 96০ হ'ল ইয়র্কফিল্ড প্রসেসর (ইনটেল পরিবার 6, মডেল ২৩, পদক্ষেপ 6)। রেফারেন্সের জন্য, আমার কিউ 9550 এস হ'ল ইনটেল পরিবার 6, মডেল 23 (0x17), 10 ধাপে ধাপে ধাপে ধাপে ধাপে 10, যা সম্ভবত সি-রাজ্য সি 4 সমর্থন করে (পরীক্ষার মাধ্যমে নিশ্চিত করা হয়েছে)। তদ্ব্যতীত, কোর 2 সলো U3500 Q9550S ​​তে একটি অভিন্ন সিপিইউডি (পরিবার, মডেল, পদক্ষেপ) রয়েছে তবে এটি একটি L-L7775 সকেটে পাওয়া যায়, যা উপরের সারণির ব্যাখ্যাকে বিভ্রান্ত করে।

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

সিপিইউ অলস তথ্য নির্ধারণের জন্য পদ্ধতি স্বাক্ষরটি হ'ল:

#define ICPU(model, cpu) \
{ X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, (unsigned long)&cpu }

যেখানে asm / इंटেল-ফ্যামিলিH এmodel গণিত হয় । এই শিরোলেখ ফাইলটি পরীক্ষা করে দেখছি যে, ইন্টেল সিপিইউগুলিকে 8-বিট সনাক্তকারী নির্ধারিত করা হয়েছে যা ইন্টেল পরিবারের 6 মডেল সংখ্যার সাথে মেলে বলে মনে হচ্ছে:

#define INTEL_FAM6_CORE2_PENRYN 0x17

উপরের দিক থেকে, আমরা ইন্টেল পরিবার 6, মডেল 23 (0x17) হিসাবে সংজ্ঞায়িত করেছি INTEL_FAM6_CORE2_PENRYN। মডেল 23 প্রসেসরের বেশিরভাগের জন্য অলস রাজ্যগুলি সংজ্ঞায়িত করার জন্য এটি পর্যাপ্ত হওয়া উচিত তবে এটি উপরে বর্ণিত হিসাবে QX9650 এর সাথে সম্ভাব্য সমস্যা তৈরি করতে পারে।

সুতরাং, ন্যূনতমভাবে, প্রসেসরের প্রতিটি গ্রুপের একটি পৃথক সি-স্টেট সেট রয়েছে তাদের এই তালিকাতে সংজ্ঞায়িত করা দরকার।

জাগাকি এবং পোনালা, ইন্টেল প্রযুক্তি জার্নাল 12 (3): 219-227, 2008 ইঙ্গিত দেয় যে ইয়র্কফিল্ড প্রসেসর প্রকৃতপক্ষে সি 2 এবং সি 4 সমর্থন করে। তারা এও ইঙ্গিত করে বলে মনে হয় যে এসিপিআই 3.0a স্পেসিফিকেশন কেবল সি-স্টেটস সি 0, সি 1, সি 2 এবং সি 3 এর মধ্যে ট্রানজিশনকে সমর্থন করে, যা আমি অনুমান করি যে লিনাক্স acpi_idleড্রাইভারকে সি-স্টেটসের সীমিত সংস্থার মধ্যে ট্রানজিশনেও সীমাবদ্ধ রাখতে পারে। যাইহোক, এই নিবন্ধটি ইঙ্গিত দেয় যে সর্বদা ক্ষেত্রে নাও হতে পারে:

মনে রাখবেন যে এসিপিআই সি রাজ্য, প্রসেসরের নয়, সুতরাং এসিপিআই সি 3 হ'ল এইচডব্লু সি 6 ইত্যাদি হতে পারে etc.

উল্লেখ্য:

প্রসেসরের নিজেই ছাড়িয়ে, যেহেতু সি 4 প্ল্যাটফর্মের প্রধান সিলিকন উপাদানগুলির মধ্যে একটি সিঙ্ক্রোনাইজড প্রচেষ্টা, তাই ইন্টেল কিউ 45 এক্সপ্রেস চিপসেটটি 28 শতাংশ পাওয়ার উন্নতি অর্জন করে।

আমি যে চিপসেটটি ব্যবহার করছি তা আসলে একটি ইন্টেল কিউ 45 এক্সপ্রেস চিপসেট।

MWAIT রাজ্যের উপর ইন্টেল ডকুমেন্টেশন বাহুল্যবর্জিত কিন্তু তার সমর্থক বায়োস-নির্দিষ্ট ACPI সংক্রান্ত আচরণ:

এমডব্লিউএআইটি এক্সটেনশনে সংজ্ঞায়িত প্রসেসর-নির্দিষ্ট সি-রাজ্যগুলি এসিপিআই-এর সংজ্ঞায়িত সি-রাজ্য প্রকারগুলিতে (C0, C1, C2, C3) মানচিত্র করতে পারে। ম্যাপিং সম্পর্কটি প্রসেসরের প্রয়োগের মাধ্যমে সি-স্টেটের সংজ্ঞার উপর নির্ভর করে এবং এসিপিআই সংজ্ঞায়িত _সিএসটি টেবিলটি ব্যবহার করে বিআইওএস দ্বারা ওএসপিএমের কাছে উন্মুক্ত হয়।

উপরের সারণির আমার ব্যাখ্যা ( উইকিপিডিয়া , asm / intel-family.h এবং উপরের নিবন্ধগুলির একটি টেবিলের সাথে মিলিত ):

মডেল 9 0x09 ( পেন্টিয়াম এম এবং সেলেরন এম ):

  • বানিয়াস: সি 0, সি 1, সি 2, সি 3, সি 4

মডেল 13 0x0D ( পেন্টিয়াম এম এবং সেলেরন এম ):

  • দোথান, স্টিলি: সি 0, সি 1, সি 2, সি 3, সি 4

মডেল 14 0x0E INTEL_FAM6_CORE_YONAH ( বর্ধিত পেন্টিয়াম এম , বর্ধিত সেলেরন এম বা ইন্টেল কোর ):

  • যোনাহ ( কোর সলো , কোর দ্বৈত ): C0, C1, C2, C3, C4, C4E / C5

মডেল 15 0x0F INTEL_FAM6_CORE2_MEROM (কিছু কোর 2 এবং পেন্টিয়াম দ্বৈত-কোর ):

  • কেনটসফিল্ড, মেরম, কনরো, অ্যালেনডেল ( E2xxx / E4xxx এবং কোর 2 ডুও E6xxx, T7xxxx / T8xxxx , কোর 2 এক্সট্রিম কিউএক্সএক্সএক্সএক্সএক্স , কোর 2 কোয়াড কিউ 6XX ): সি 0, সি 1, সি 1 ই, সি 2 , সি 2 ই

মডেল 23 0x17 INTEL_FAM6_CORE2_PENRYN ( কোর 2 ):

  • মেরম-এল / পেনারিন-এল:?
  • পেনারিন ( কোর 2 ডুও 45-এনএম মোবাইল ): সি 0, সি 1, সি 1 ই, সি 2, সি 2 ই, সি 3, সি 4, সি 4 ই / সি 5, সি 6
  • ইয়র্কফিল্ড ( কোর 2 এক্সট্রিম কিউএক্স 9650 ): সি 0, সি 1, সি 1 ই, সি 2 ই ?, সি 3
  • ওল্ফডেল / ইয়র্কফিল্ড ( কোর 2 কোয়াড , সি 2 কিউ জিওন , কোর 2 ডুও ইওএক্সএক্সএক্সএক্স / ই 7 এক্সএক্সএক্সএক্স / ই 8 এমএক্সএক্সএক্স , পেন্টিয়াম ডুয়াল-কোর ই 6 এক্সএক্সএক্স , সেলেনের দ্বৈত-কোর ): সি 0, সি 1, সি 1 ই, সি 2, সি 2 ই, সি 3, সি 4

প্রসেসরের কেবলমাত্র কোর 2 লাইনের মধ্যে সি-স্টেট সমর্থনে যে পরিমাণ বৈচিত্র্য রয়েছে তা থেকে দেখা যাচ্ছে যে সি-রাজ্যগুলির জন্য ধারাবাহিক সহায়তার অভাব intel_idleচালকের মাধ্যমে তাদের পুরোপুরি সমর্থন না করার কারণ হতে পারে । আমি পুরো কোর 2 লাইনের জন্য উপরের তালিকাটি সম্পূর্ণরূপে সম্পূর্ণ করতে চাই।

এটি সত্যিই সন্তোষজনক উত্তর নয়, কারণ এটি আমাকে বিস্মিত করে তোলে যে এই প্রসেসরের উপর শক্তিশালী শক্তি-সাশ্রয়ী মেগাওয়াট সি-স্টেটসকে পুরোপুরি ব্যবহার না করে কতটা অপ্রয়োজনীয় শক্তি ব্যবহার করা হয়েছে এবং অতিরিক্ত তাপ উত্পন্ন হয়েছে (এবং এখনও রয়েছে) ।

চট্টোপাধ্যায় ইত্যাদি। 2018, এনার্জি এফিশিয়েন্ট হাই পারফরম্যান্স প্রসেসর: গ্রিন হাই পারফরম্যান্স কম্পিউটিং ডিজাইনের সাম্প্রতিক পদ্ধতির আমি কিউ 45 এক্সপ্রেস চিপসেটে সুনির্দিষ্ট আচরণের জন্য লক্ষণীয়:

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

পরীক্ষা হিসাবে, আমি লিনাক্স / ড্রাইভার / নিষ্ক্রিয় / ইন্টেল_আইডিএল.সি লাইন 127 এ নিম্নলিখিতটি প্রবেশ করিয়েছি :

static struct cpuidle_state conroe_cstates[] = {
    {
        .name = "C1",
        .desc = "MWAIT 0x00",
        .flags = MWAIT2flg(0x00),
        .exit_latency = 3,
        .target_residency = 6,
        .enter = &intel_idle,
        .enter_s2idle = intel_idle_s2idle, },
    {
        .name = "C1E",
        .desc = "MWAIT 0x01",
        .flags = MWAIT2flg(0x01),
        .exit_latency = 10,
        .target_residency = 20,
        .enter = &intel_idle,
        .enter_s2idle = intel_idle_s2idle, },
//  {
//      .name = "C2",
//      .desc = "MWAIT 0x10",
//      .flags = MWAIT2flg(0x10),
//      .exit_latency = 20,
//      .target_residency = 40,
//      .enter = &intel_idle,
//      .enter_s2idle = intel_idle_s2idle, },
    {
        .name = "C2E",
        .desc = "MWAIT 0x11",
        .flags = MWAIT2flg(0x11),
        .exit_latency = 40,
        .target_residency = 100,
        .enter = &intel_idle,
        .enter_s2idle = intel_idle_s2idle, },
    {
        .enter = NULL }
};

static struct cpuidle_state core2_cstates[] = {
    {
        .name = "C1",
        .desc = "MWAIT 0x00",
        .flags = MWAIT2flg(0x00),
        .exit_latency = 3,
        .target_residency = 6,
        .enter = &intel_idle,
        .enter_s2idle = intel_idle_s2idle, },
    {
        .name = "C1E",
        .desc = "MWAIT 0x01",
        .flags = MWAIT2flg(0x01),
        .exit_latency = 10,
        .target_residency = 20,
        .enter = &intel_idle,
        .enter_s2idle = intel_idle_s2idle, },
    {
        .name = "C2",
        .desc = "MWAIT 0x10",
        .flags = MWAIT2flg(0x10),
        .exit_latency = 20,
        .target_residency = 40,
        .enter = &intel_idle,
        .enter_s2idle = intel_idle_s2idle, },
    {
        .name = "C2E",
        .desc = "MWAIT 0x11",
        .flags = MWAIT2flg(0x11),
        .exit_latency = 40,
        .target_residency = 100,
        .enter = &intel_idle,
        .enter_s2idle = intel_idle_s2idle, },
    {
        .name = "C3",
        .desc = "MWAIT 0x20",
        .flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED,
        .exit_latency = 85,
        .target_residency = 200,
        .enter = &intel_idle,
        .enter_s2idle = intel_idle_s2idle, },
    {
        .name = "C4",
        .desc = "MWAIT 0x30",
        .flags = MWAIT2flg(0x30) | CPUIDLE_FLAG_TLB_FLUSHED,
        .exit_latency = 100,
        .target_residency = 400,
        .enter = &intel_idle,
        .enter_s2idle = intel_idle_s2idle, },
    {
        .name = "C4E",
        .desc = "MWAIT 0x31",
        .flags = MWAIT2flg(0x31) | CPUIDLE_FLAG_TLB_FLUSHED,
        .exit_latency = 100,
        .target_residency = 400,
        .enter = &intel_idle,
        .enter_s2idle = intel_idle_s2idle, },
    {
        .name = "C6",
        .desc = "MWAIT 0x40",
        .flags = MWAIT2flg(0x40) | CPUIDLE_FLAG_TLB_FLUSHED,
        .exit_latency = 200,
        .target_residency = 800,
        .enter = &intel_idle,
        .enter_s2idle = intel_idle_s2idle, },
    {
        .enter = NULL }
};

intel_idle.cলাইন 983:

static const struct idle_cpu idle_cpu_conroe = {
    .state_table = conroe_cstates,
    .disable_promotion_to_c1e = false,
};

static const struct idle_cpu idle_cpu_core2 = {
    .state_table = core2_cstates,
    .disable_promotion_to_c1e = false,
};

intel_idle.cলাইন 1073:

ICPU(INTEL_FAM6_CORE2_MEROM,  idle_cpu_conroe),
ICPU(INTEL_FAM6_CORE2_PENRYN, idle_cpu_core2),

আমার পিএক্সই নোডগুলির দ্রুত সংকলন এবং পুনরায় বুট করার পরে, dmesgএখন দেখায়:

[    0.019845] cpuidle: using governor menu
[    0.515785] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
[    0.543404] intel_idle: MWAIT substates: 0x22220
[    0.543405] intel_idle: v0.4.1 model 0x17
[    0.543413] tsc: Marking TSC unstable due to TSC halts in idle states deeper than C2
[    0.543680] intel_idle: lapic_timer_reliable_states 0x2

এবং এখন পাওয়ার টপ প্রদর্শিত হচ্ছে:

          Package   |            CPU 0
POLL        2.5%    | POLL        0.0%    0.0 ms
C1E         2.9%    | C1E         5.0%   22.4 ms
C2          0.4%    | C2          0.2%    0.2 ms
C3          2.1%    | C3          1.9%    0.5 ms
C4E        89.9%    | C4E        92.6%   66.5 ms

                    |            CPU 1
                    | POLL       10.0%  400.8 ms
                    | C1E         5.1%    6.4 ms
                    | C2          0.3%    0.1 ms
                    | C3          1.4%    0.6 ms
                    | C4E        76.8%   73.6 ms

                    |            CPU 2
                    | POLL        0.0%    0.2 ms
                    | C1E         1.1%    3.7 ms
                    | C2          0.2%    0.2 ms
                    | C3          3.9%    1.3 ms
                    | C4E        93.1%   26.4 ms

                    |            CPU 3
                    | POLL        0.0%    0.7 ms
                    | C1E         0.3%    0.3 ms
                    | C2          1.1%    0.4 ms
                    | C3          1.1%    0.5 ms
                    | C4E        97.0%   45.2 ms

অবশেষে আমি বর্ধিত কোর 2 সি-স্টেটগুলি অ্যাক্সেস করেছি এবং দেখে মনে হচ্ছে বিদ্যুৎ ব্যবহারের পরিমাপযোগ্য একটি ড্রপ রয়েছে - 8 টি নোডের আমার মিটারটি কমপক্ষে 5% নিম্নতর দেখা যাচ্ছে (একটি নোড এখনও পুরানো কার্নেল দিয়ে চলছে) , তবে আমি পরীক্ষা হিসাবে আবার কার্নেলগুলি অদলবদল করার চেষ্টা করব।

সি 4 ই সমর্থন সম্পর্কিত একটি আকর্ষণীয় নোট - আমার ইয়র্কটাউন কিউ 9550 এস প্রসেসর এটি সমর্থন করে বলে মনে হচ্ছে (বা সি -4 এর কিছু অন্যান্য উপ-রাষ্ট্র), উপরে প্রমাণ হিসাবে! এটি আমাকে বিভ্রান্ত করে, কারণ কোর 2 কিউ 9000 প্রসেসরের (বিভাগ 6.2) তে কেবল ইনটেল ডাটাশিটটি কেবল সি-স্টেটস নরমাল (সি 0), এইচএলটি (সি 1 = 0x00), এক্সটেন্ডেড এইচএলটি (সি 1 ই = 0x01), স্টপ গ্রান্ট (সি 2 = 0x10) উল্লেখ করেছে , এক্সটেন্ডেড স্টপ গ্রান্ট (সি 2 ই = 0x11), স্লিপ / ডিপ স্লিপ (সি 3 = 0x20) এবং ডিপ স্লিপ (সি 4 = 0x30)। এই অতিরিক্ত 0x31 রাষ্ট্রটি কী? যদি আমি রাজ্য সি 2 সক্ষম করি তবে সি 4 এর পরিবর্তে সি 4 ই ব্যবহার করা হবে। যদি আমি রাজ্য সি 2 (ফোর্স স্টেট সি 2 ই) অক্ষম করি তবে সি 4 এর পরিবর্তে সি 4 ব্যবহার করা হবে। আমার সন্দেহ হয় এমডব্লিউএআইটি ফ্ল্যাগগুলির সাথে এর কিছু থাকতে পারে তবে আমি এখনও এই আচরণের জন্য ডকুমেন্টেশন পাইনি।

এটি কী তৈরি করবেন তা আমি নিশ্চিত নই: সি 1 ই স্থিতি C1 এর পরিবর্তে ব্যবহৃত হয়, সি 2 এর পরিবর্তে সি 2 ব্যবহৃত হয় এবং সি 4 এর পরিবর্তে সি 4 ই ব্যবহৃত হয়। আমি অনিশ্চিত যদি C1 / C1E, C2 / C2E এবং C4 / C4E একসাথে ব্যবহার করা যায় intel_idleবা তারা নিরর্থক হয়। আমি ইন্টেল ল্যাবস পিটসবার্গের 2010 এর উপস্থাপনায় একটি নোট পেয়েছি যা নির্দেশ করে যে রূপান্তরগুলি হ'ল সি 0 - সি 1 - সি 0 - সি 1 ই - সি 0 এবং আরও বলা হয়েছে:

C1E কেবল তখন ব্যবহৃত হয় যখন সমস্ত কোর C1E তে থাকে

আমি বিশ্বাস করি যে এটি ব্যাখ্যা করা উচিত কারণ C1E রাজ্যটি অন্যান্য উপাদানগুলিতে প্রবেশ করা হয়েছে (যেমন মেমরি) যখন সমস্ত কোর সি 1 ই অবস্থায় থাকে। আমি এটি সি 2 / সি 2 ই এবং সি 4 / সি 4 ই রাষ্ট্রের সমানভাবে প্রয়োগ করতেও গ্রহণ করি (যদিও সি 4 ই কে "সি 4 ই / সি 5" হিসাবে উল্লেখ করা হয় তাই আমি অনিশ্চিত নই যদি সি 4 ই সি -4 এর উপ-রাষ্ট্র হয় বা সি 5 একটি উপ- সি 4 ই অবস্থা Test টেস্টিং সি 4 / সি 4 ই সঠিক বলে মনে হচ্ছে)। আমি সি 2 স্টেটকে সি 2 স্টেটে মন্তব্য করে জোর করে ব্যবহার করতে পারি - তবে, এটি সি 4 ই এর পরিবর্তে সি 4 রাজ্যটি ব্যবহার করতে বাধ্য করে (এখানে আরও কাজ প্রয়োজন হতে পারে)। আশা করা যায় এমন কোনও মডেল 15 বা মডেল 23 প্রসেসর নেই যাগুলির স্টেট সি 2 ই নেই, কারণ এই প্রসেসরগুলি উপরের কোড সহ C1 / C1E এর মধ্যে সীমাবদ্ধ থাকবে।

এছাড়াও, পতাকাগুলি, বিলম্বিতা এবং আবাসনের মানগুলি সম্ভবত সূক্ষ্মভাবে সুরক্ষিত হতে পারে তবে কেবল নেহালেম নিষ্কলুষ মানগুলির উপর ভিত্তি করে শিক্ষিত অনুমান নেওয়া ভাল কাজ করবে বলে মনে হচ্ছে। আরও পড়ার জন্য কোনও উন্নতি করতে হবে।

আমি এই পরীক্ষিত কোর 2 মানিকজোড় E2220 ( Allendale, ), একটি ডুয়াল কোর পেন্টিয়াম E5300 ( Wolfdale ), কোর 2 মানিকজোড় E7400 , কোর 2 মানিকজোড় E8400 ( Wolfdale ), কোর 2 চতুর্মুখী Q9550S ( Yorkfield ) এবং কোর 2 চরম QX9650 , এবং আমি রাজ্য সি 2 / সি 2 ই এবং সি 4 / সি 4 ই এর পূর্ব বর্ণিত পছন্দের বাইরে কোনও সমস্যা খুঁজে পাওয়া যায় নি।

এই ড্রাইভার পরিবর্তন দ্বারা আচ্ছাদিত:

  • আসল কোর সলো / কোর ডুও ( যোনাহ , নন কোর 2) হ'ল পরিবার 6, মডেল 14 This এটি ভাল কারণ তারা সি 4 ই / সি 5 (বর্ধিত গভীর ঘুম) সি-রাজ্যগুলিকে সমর্থন করেছে তবে সি 1 ই / সি 2 ই রাজ্যগুলিকে সমর্থন করবে না এবং তাদের প্রয়োজন হবে নিজের অলস সংজ্ঞা

আমি কেবলমাত্র যে বিষয়গুলি সম্পর্কে ভাবতে পারি তা হ'ল:

  • কোর 2 একক SU3300 / SU3500 (Penryn-L) পরিবার 6, মডেল 23 এবং এই ড্রাইভার দ্বারা সনাক্ত করা হবে be তবে, তারা সকেট এলজিএ 775 নয় তাই তারা সি 1 ই বর্ধিত হাল্ট সি-রাজ্যটিকে সমর্থন না করতে পারে। তেমনিভাবে কোর 2 সলো ইউএলভি ইউ 2100 / ইউ 2200 (মেরম -এল ) এর জন্য। তবে intel_idleড্রাইভারটি উপ-রাজ্যের হার্ডওয়্যার সমর্থনের উপর ভিত্তি করে উপযুক্ত সি 1 / সি 1 ই পছন্দ করে।
  • কোর 2 এক্সট্রিম কিউ এক্স 9650 (ইয়র্কফিল্ড) কথিতভাবে সি-স্টেট সি 2 বা সি 4 সমর্থন করে না। আমি ইবেতে ব্যবহৃত অপটিপ্লেক্স 780 এবং কিউএক্স 9650 এক্সট্রিম প্রসেসর কিনে এটি নিশ্চিত করেছি। প্রসেসরটি সি-স্টেটস সি 1 এবং সি 1 ই সমর্থন করে। এই ড্রাইভারটি সংশোধন করে সিপিইউ সি 1 এর পরিবর্তে সি 1 ই স্টেটে থাকে, সুতরাং সম্ভবত কিছুটা পাওয়ার সাশ্রয় হয়। আমি সি-স্টেট সি 3 দেখতে প্রত্যাশা করেছিলাম, তবে এই ড্রাইভারটি ব্যবহার করার সময় এটি উপস্থিত নেই তাই আমাকে আরও এই বিষয়টি খতিয়ে দেখার দরকার হতে পারে।

আমি সি-রাজ্যগুলির মধ্যে রূপান্তর সম্পর্কিত (যেমন, ডিপ পাওয়ার) ডাউন ২০০৯-এর ইনটেল উপস্থাপনা থেকে একটি স্লাইড সন্ধান করতে পেরেছি:

গভীর শক্তি ডাউন প্রযুক্তি এন্ট্রি / প্রস্থান

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

এই আপডেট গিথুব প্রতিশ্রুতিবদ্ধ হয়েছে । আমি শীঘ্রই এলকেএমএলে একটি প্যাচ ইমেল করব।

আপডেট : আমি একটি সকেট টি / LGA775 খনন পরিচালিত Allendale, ( Conroe ) কোর 2 মানিকজোড় E2220, যা পরিবার 6, মডেল 15, তাই আমি পাশাপাশি যে জন্য সমর্থন যোগ করা হয়েছে। এই মডেলটির সি-স্টেট সি 4 এর পক্ষে সমর্থন নেই, তবে সি 1 / সি 1 ই এবং সি 2 / সি 2 ই সমর্থন করে। এটি অন্যান্য কনরো-ভিত্তিক চিপস ( E4xxx / E6xxx ) এবং সম্ভবত সমস্ত কেন্টসফিল্ড এবং মেরম (নন মেরম-এল) প্রসেসরের জন্যও কাজ করা উচিত ।

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

# cd /sys/devices/system/cpu/cpu0/cpuidle
# for state in `ls -d state*` ; do echo c-$state `cat $state/name` `cat $state/latency` ; done

c-state0/ POLL 0
c-state1/ C1 3
c-state2/ C1E 10
c-state3/ C2 20
c-state4/ C2E 40
c-state5/ C3 20
c-state6/ C4 60
c-state7/ C4E 100

4
এটি দুর্দান্ত গোয়েন্দা কাজ! আমি ভুলে গিয়েছিলাম যে সি 2 ডি / সি 2 কিউ সি-রাজ্যগুলি কতটা জটিল ছিল। পুনরায় প্রবাহমান শক্তি সঞ্চয়, আপনার ফার্মওয়্যার যথেষ্ট তারপর আপনি এখনও সি-রাজ্যের অন্তত কিছু সুবিধা পেয়ে করা উচিত হলে মাধ্যমে acpi_idle এবং বিভিন্ন কর্মক্ষমতা গভর্নরদের। powertopআপনার সিস্টেমে কোন রাজ্যগুলি প্রদর্শন করে?
স্টিফেন কিট

1
খুব সুন্দর তথ্য, আপনি কি আপনার প্যাচটিকে প্রবাহিত লিনাক্স কার্নেলের কাছে প্রস্তাব দেওয়ার কথা বিবেচনা করেছেন ?
লেকেনস্টেইন

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

1
"রূপান্তরগুলি হ'ল সি 0 - সি 1 - সি 0 - সি 1 ই - সি0" - আমি মনে করি না যে এটি স্লাইডটির একটি ভাল বর্ণনা। কার্নেল / powertopদৃষ্টিকোণ থেকে সমস্ত ট্রানজিশন হয় হয় সি 0 বা সি 0 তে। আপনি যদি C0 তে না থাকেন তবে আপনি কোনও নির্দেশনা চালাচ্ছেন না, তাই কার্নেল হয় সেই সিপিইউ :-)- এর মধ্যে অবস্থাগুলির মধ্যে কোনও রূপান্তর পর্যবেক্ষণ বা অনুরোধ করতে পারে না। এবং আপনি যেমনটি বলেছেন, কার্নেল "মেনু" গভর্নর অবশ্যই উদাহরণস্বরূপ C1 এ কোনও সময় ব্যয় না করে সরাসরি C1E এ ঝাঁপিয়ে পড়তে পারেন।
সোর্সজেদি

1
"নেহালেম নিষ্কলুষ মানগুলির উপর ভিত্তি করে কেবল শিক্ষিত অনুমান নেওয়া ভাল কাজ করে বলে মনে হয়" - নোট করুন আপনার প্যাচটি উজানের দিকে গৃহীত করার জন্য এটি ভাল উপায় নয় :- পি, যাতে প্রস্থান করার বিলম্বটি অবশ্যই একটি কম মূল্য হবে না , অন্যথায় আমি মনে করি আপনি PM_QOS_CPU_DMA_LATENCY লঙ্ঘন করুন, যা ড্রাইভার দ্বারা সেট করা যেতে পারে (বা ব্যবহারকারী স্থান?)
সোর্সজেডি

6

আমি সন্দেহ করি এটি কেবল সুযোগ এবং ব্যয়ের ক্ষেত্রে হতে পারে। যখন যুক্ত intel_idleকরা হয়েছিল, মনে হয় কোর 2 ডুও সমর্থনটি পরিকল্পনা করা হয়েছিল, তবে এটি কখনই পুরোপুরি বাস্তবায়িত হয়নি - সম্ভবত ইন্টেল ইঞ্জিনিয়াররা যখন এটির চারপাশে এসেছিল তখন এটি আর লাভজনক হয়নি। সমীকরণটি তুলনামূলকভাবে জটিল: সিপিইউগুলিতে পর্যাপ্ত সংখ্যায় "উন্নত" কার্নেলটি দেখতে পাবে, এখানে সমর্থন করার উপযুক্ত করার জন্য intel_idleপর্যাপ্ত সুবিধা প্রদান করা প্রয়োজন acpi_idle...

হিসাবে sourcejedi এর উত্তর বলে, ড্রাইভার পরিবার 6. সব অগ্রাহ্য করে না intel_idleযে সিপিইউ জন্য initialisation চেক CPU- র মডেলের একটি তালিকা , মূলত Nehalem থেকে Kaby লেক সব মাইক্রো-আর্কিটেকচারের আচ্ছাদন। ইয়র্কফিল্ড এর চেয়ে পুরনো (এবং উল্লেখযোগ্যভাবে পৃথক - নেহালেম এটির আগে যে স্থাপত্যগুলির চেয়ে পৃথক হয়েছিল)। পরিবার 6 পরীক্ষা কেবল ত্রুটি বার্তা মুদ্রিত কিনা তা প্রভাবিত করে; এর প্রভাব কেবলমাত্র ত্রুটি বার্তাটি কেবলমাত্র ইন্টেল সিপিইউগুলিতে প্রদর্শিত হবে, এএমডি সিপিইউগুলিতে নয় (পেন্টিয়াম প্রো-এর পর থেকে ইনটেল পরিবার 6-এ সমস্ত নন-নেটবার্সেল ইন্টেল সিপিইউ রয়েছে))

আপনার কনফিগারেশন প্রশ্নের উত্তর দেওয়ার জন্য, আপনি সম্পূর্ণরূপে অক্ষম করতে পারেন intel_idle, তবে এটিকে ছেড়ে দেওয়া খুব ভাল (যতক্ষণ না আপনি সতর্কতার বিষয়টি আপত্তি করেন না)।


pr_debug () বার্তাটি কেবল তখনই উপস্থিত হওয়া উচিত যখন আপনি সেই ডিবাগ বার্তাটি সক্ষম করতে খুব সুনির্দিষ্ট কিছু করেন, তাই আপনাকে সতর্কতাটি এড়িয়ে চলতে হবে না
সোর্সজেডি

2
@ সোর্সজেদি আমি উল্লেখ করেছি যে ওপি এটি দেখছে।
স্টিফেন কিট

gotcha হয়। আমি একটি অর্ধ-গুরুতর মন্তব্য উপস্থাপন করছি: যেহেতু আমাদের কাছে একটি বুদ্ধিমান কার্নেল কনফিগারেশন সম্পর্কে জিজ্ঞাসা করা হয়, যদি এটি প্রতিদিন ব্যবহার করা হয়, তবে সম্ভবত সমস্ত ডিবাগ বার্তাগুলি সক্ষম করে এমন বিকল্পটি ব্যবহার করবেন না? সঠিক বিকল্পের সাহায্যে, প্রয়োজনে এগুলি গতিশীল এবং নির্বাচনমূলকভাবে সক্ষম করা যেতে পারে। kernel.org/doc/html/v4.17/admin-guide/dynamic-debug-howto.html আপনি যদি সমস্ত ডিবাগ বার্তা সক্ষম করেন তবে আপনার সম্ভবত প্রচুর বার্তা আপনি যেভাবেই উপেক্ষা করছেন :)।
সোর্সজেডি

@ সোর্সজেদি আমি কার্নেল বার্তা অক্ষম করার বিষয়ে আপনার মন্তব্যের প্রাসঙ্গিকতা দেখতে ব্যর্থ হয়েছি। আমি এটিকে প্রশ্নের গঠনমূলক বলে দেখছি না, যা বিশেষত intel_idleড্রাইভের জন্য কোর 2 সমর্থনকে সম্বোধন করে ।
vallismortis

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

6

প্রসেসরের এই পরিবারের জন্য অনুকূল সিপিইউ নিষ্ক্রিয় সহায়তার জন্য কার্নেলটি কনফিগার করার জন্য আরও উপযুক্ত কোনও উপায় আছে (ইন্টেল_ইডেলের জন্য সমর্থন অক্ষম করা বাদে)

আপনি এসিপিআই সক্ষম করেছেন এবং আপনি পরীক্ষা করেছেন যে acpi_idle ব্যবহার হচ্ছে। আমি আন্তরিকভাবে সন্দেহ করি যে আপনি কোনও সহায়ক কার্নেল কনফিগারেশন বিকল্পটি মিস করেছেন। আপনি সর্বদা powertopসম্ভাব্য পরামর্শগুলির জন্য পরীক্ষা করতে পারেন , তবে সম্ভবত আপনি এটি ইতিমধ্যে জানতেন।


এটি কোনও উত্তর নয়, তবে আমি এটি বিন্যাস করতে চাই :-(।

কার্নেল উত্স কোডটি দেখে, বর্তমান ইন্টেল_ইডেল ড্রাইভারটিতে বিশেষত ড্রাইভার থেকে ইন্টেল পরিবার 6 বাদ দেওয়ার জন্য একটি পরীক্ষা রয়েছে।

না এটি :-) হয় না।

id = x86_match_cpu(intel_idle_ids);
if (!id) {
    if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL &&
        boot_cpu_data.x86 == 6)
        pr_debug(PREFIX "does not run on family %d model %d\n",
            boot_cpu_data.x86, boot_cpu_data.x86_model);
    return -ENODEV;
}

ifবিবৃতি বাদ না পরিবার 6. পরিবর্তে, ifবিবৃতি একটি বার্তা প্রদান করে যখন ডিবাগিং সক্রিয় করা হয়, যে এই নির্দিষ্ট আধুনিক ইন্টেল CPU দ্বারা সমর্থিত নয় intel_idle। আসলে, আমার বর্তমান আই 5-5300U সিপিইউ হ'ল ফ্যামিলি 6 এবং এটি ব্যবহার করে intel_idle

আপনার সিপিইউকে বাদ দিলে তা হ'ল intel_idle_idsটেবিলে কোনও মিল নেই ।

আমি এই প্রতিশ্রুতিটি টেবিলটি কার্যকর করেছিলাম। কোডটি এটি মুছে switchফেলার পরিবর্তে একটি বিবৃতি ছিল । এটি দেখতে সহজ করে তোলে যে প্রথম দিকের মডেল ইন্টেল_ইডেল কার্যকর / সফলভাবে পরীক্ষিত হয়েছে / যাই হোক 0x1A = 26. https://github.com/torvalds/linux/commit/b66b8b9a4a79087dde1b358a016e5c8739ccf186

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