Core 2 CPU güç durumlarını (" C-devletleri ") araştırırken, eski Intel Core / Core 2 işlemcilerinin çoğunu desteklemeyi başardım. Tüm arka plan bilgilerinin bulunduğu eksiksiz uygulama (Linux yaması) burada belgelenmiştir.
Bu işlemciler hakkında daha fazla bilgi topladığımda, Core 2 modellerinde desteklenen C durumlarının hem önceki hem de sonraki işlemcilerde olduğundan çok daha karmaşık olduğu ortaya çıkmaya başladı. Bunlar , paketi, yonga setindeki ayrı ayrı maçaları ve diğer bileşenleri (örneğin hafıza) içeren Gelişmiş C durumları (veya " CxE ") olarak bilinir . Zamanda intel_idle
sürücü serbest bırakıldı, kod özellikle olgun değildi ve birkaç Core 2 işlemciler C durumu desteğini çelişkili olduğunu serbest bırakılmıştı.
Core 2 Solo / Duo C-state desteği hakkında bazı zorlayıcı bilgiler 2006'dan bu makalede bulundu . Bu, Windows desteği ile ilgilidir, ancak bu işlemciler için güçlü donanım C-durumu desteği olduğunu gösterir. Kentsfield'la ilgili bilgiler gerçek model numarasıyla çakışıyor, bu yüzden gerçekten aşağıda bir Yorkfield'a atıfta bulunduklarına inanıyorum:
... dört çekirdekli Intel Core 2 Extreme (Kentsfield) işlemci, beş performans ve güç tasarrufu teknolojisinin tümünü destekliyor - Gelişmiş Intel SpeedStep (EIST), Termal Monitör 1 (TM1) ve Termal Monitör 2 (TM2), eski İsteğe Bağlı Saat Modülasyon (ODCM) ve ayrıca Gelişmiş C Durumları (CxE). Yalnızca Gelişmiş Halt (C1) Devleti ile karakterize edilen Intel Pentium 4 ve Pentium D 600, 800 ve 900 işlemcilerle karşılaştırıldığında, bu işlev Intel Core 2 işlemcilerde (ayrıca Intel Core Solo / Duo işlemcilerde) için genişletildi. Stop Grant (C2), Deep Sleep (C3) ve Deeper Sleep (C4) dahil olmak üzere bir işlemcinin olası tüm boşta durumları.
2008 tarihli bu makalede, Core 2 Duo ve Core 2 Quad dahil olmak üzere çok çekirdekli Intel işlemcilerde çekirdek başına C durumu desteği açıklanmıştır ( Dell'in bu beyaz bülteninde ek yararlı arka plan okuması bulundu ):
Bir çekirdek C durumu bir donanım C durumudur. Birkaç temel rölanti durumu vardır, örneğin CC1 ve CC3. Bildiğimiz gibi, modern bir teknoloji ürünü işlemcinin, bazı çevrelerde Penryn olarak bilinen yakın zamanda piyasaya sürülen Core Duo T5000 / T7000 mobil işlemciler gibi birçok çekirdeği vardır. Bir işlemci / işlemci olarak düşünmek için kullandığımız, aslında onun yanında çok sayıda genel amaçlı işlemci var. Intel Core Duo'nun işlemci yongasında 2 çekirdek var. Intel Core-2 Quad, işlemci çipi başına 4 bu tür çekirdeğe sahip. Bu çekirdeklerin her birinin kendi boşta durumu vardır. Bu bir çekirdekte boş dururken, bir diğeri iş parçacığı üzerinde çalışırken zor olabilir gibi mantıklı. Dolayısıyla, çekirdek bir C durumu, bu çekirdeklerden birinin boşta durumudur.
Intel’den , intel_idle
sürücüyle ilgili ek bilgi sağlayan 2010’da bir sunum buldum , ancak ne yazık ki Core 2’de destek eksikliği olduğunu açıklamıyorum:
Bu DENEYSEL sürücü, Intel Atom İşlemcileri, Intel Core i3 / i5 / i7 İşlemcilerinde ve ilgili Intel Xeon işlemcilerinde acpi_idle'ın yerini alır. Intel Core2 işlemcisini veya daha eski bir sürümü desteklemiyor.
Yukarıdaki sunum intel_idle
sürücünün Linux çekirdek yapılandırması (yani CONFIG_CPU_IDLE_GOV_LADDER
vs. CONFIG_CPU_IDLE_GOV_MENU
) üzerinde etkisi olan "menü" CPU regülatörünün bir uygulaması olduğunu göstermektedir . Bu cevapta merdiveni ve menü valileri arasındaki farklar kısaca açıklanmıştır .
Dell, C durumu C0 ila C6 uyumluluğunu listeleyen faydalı bir makaleye sahiptir:
C1 ila C3 modları temel olarak CPU içinde kullanılan saat sinyallerini keserek çalışır, C4 ila C6 modları ise CPU voltajını azaltarak çalışır. "Gelişmiş" modları aynı anda yapabilirsiniz.
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
Bu tablodan (bazı durumlarda daha sonraları yanlış buldum), Core 2 işlemcilerde C durumu desteğinde çeşitli farklılıklar olduğu anlaşılıyor (Core 2 işlemcilerin neredeyse tamamı Core 2 işlemcilerin Soket LGA775 olduğunu unutmayın. 2 Soket BGA956 ve Merom / Penryn işlemcileri olan Solo SU3500. "Intel Core" Solo / Duo işlemcileri Soket PBGA479 veya PPGA478'den biridir).
Bu makalede tabloya ek bir istisna bulundu :
Core 2 Duo E8500, Core 2 Extreme QX9650 modelinde C-C2 ve C4 durumlarını destekliyor.
İlginçtir ki, QX9650 bir Yorkfield işlemcisidir (Intel ailesi 6, model 23, adım 6). Referans için, benim Q9550S'im Intel-aile 6, model 23 (0x17), adım 10, ki bu da C-durumu C4'ü destekliyor (deney yoluyla onaylandı). Ek olarak, Core 2 Solo U3500, Q9550S ile aynı CPUID'ye (aile, model, kademeli) sahiptir, ancak yukarıdaki tablonun yorumlanmasını engelleyen LGA775 olmayan bir sokette bulunur.
Açıkçası, CPUID, bu işlemci modeli için C durumu desteğini belirlemek için en azından adımlamaya kadar kullanılmalıdır ve bazı durumlarda yetersiz olabilir (şu anda belirlenmemiş).
CPU boşta bilgisini atamak için kullanılan yöntem imzası:
#define ICPU(model, cpu) \
{ X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, (unsigned long)&cpu }
Nerede model
numaralandırılan asm / intel-family.h . Bu üstbilgi dosyasını incelerken, Intel CPU'lara Intel ailesi 6 model numaralarıyla eşleşen 8 bitlik tanımlayıcı atandığını görüyorum:
#define INTEL_FAM6_CORE2_PENRYN 0x17
Yukarıdakilerden Intel Family 6, Model 23 (0x17) olarak tanımladık INTEL_FAM6_CORE2_PENRYN
. Bu, Model 23 işlemcilerin çoğu için boşta durumları tanımlamak için yeterli olmalıdır, ancak yukarıda belirtildiği gibi QX9650 ile sorunlara neden olabilir.
Dolayısıyla, asgari olarak, ayrı bir C-durumu ayarına sahip her bir işlemci grubunun bu listede tanımlanması gerekecektir.
Zagacki ve Ponnala, Intel Teknoloji Dergisi 12 (3): 219-227, 2008 , Yorkfield işlemcilerinin gerçekten C2 ve C4'ü desteklediğini gösteriyor. Ayrıca, ACPI 3.0a şartnamesinin sadece C0, C1, C2 ve C3 durumları arasındaki geçişleri desteklediğini, Linux acpi_idle
sürücüsünün bu sınırlı C durumları arasındaki geçişleri sınırlayabileceğini varsayıyor gibi görünüyorlar. Bununla birlikte, bu makale her zaman böyle olmayabileceğini gösterir:
ACPI C durumu olduğunu, işlemciyi değil, yani ACPI C3'ün HW C6 vb. Olduğunu unutmayın.
Ayrıca not:
İşlemcinin ötesinde, C4 platformdaki başlıca silikon bileşenleri arasında senkronize bir çaba olduğundan, Intel Q45 Express Chipset yüzde 28 güç artışı sağlıyor.
Kullandığım yonga seti aslında bir Intel Q45 Express Yonga Seti.
MWAIT devletler üzerinde Intel dokümantasyon veciz ama onaylar BIOS özgü ACPI davranışını geçerli:
MWAIT uzantılarında tanımlanan işlemciye özgü C durumları, ACPI tanımlı C durum tiplerine (C0, C1, C2, C3) eşlenebilir. Eşleştirme ilişkisi, işlemci uygulaması tarafından C durumunun tanımına bağlıdır ve ACPI tarafından tanımlanan _CST tablosu kullanılarak BIOS tarafından OSPM'ye maruz bırakılır.
Yukarıdaki tabloyu yorumlamam ( Wikipedia , asm / intel-family.h ve yukarıdaki makalelerden oluşan bir masa ile birlikte):
Model 9 0x09 ( Pentium M ve Celeron M ):
- Banyalar: C0, C1, C2, C3, C4
Model 13 0x0D ( Pentium M ve Celeron M ):
- Dothan, Stealey: C0, Cı, C2, C3, C4
Model 14 0x0E INTEL_FAM6_CORE_YONAH ( Gelişmiş Pentium M , Gelişmiş Celeron M veya Intel Core ):
- Yonah ( Core Solo , Core Duo ): C0, C1, C2, C3, C4, C4E / C5
Model 15 0x0F INTEL_FAM6_CORE2_MEROM (bazı Core 2 ve Pentium Dual-Core ):
- Kentsfield, Merom, Conroe, Allendale ( E2xxx / E4xxx ve Çekirdek 2 Duo E6xxx, T7xxxx / T8xxxx , Çekirdek 2 Aşırı QX6xxx , Çekirdek 2 Quad Q6xxx ): C0, C1, C1E, C2, C2E
Model 23 0x17 INTEL_FAM6_CORE2_PENRYN ( Çekirdek 2 ):
- Merom-L / Penryn-L:
- Penryn ( Core 2 Duo 45-nm mobil ): C0, C1, C1E, C2, C2E, C3, C4, C4E / C5, C6
- Yorkfield ( Core 2 Extreme QX9650 ): C0, C1, C1E, C2EE, C3
- Wolfdale / Yorkfield ( Çekirdek 2 Dörtlü , C2Q Xeon , Çekirdek 2 Duo E5xxx / E7xxx / E8xxx , Pentium Çift Çekirdekli E6xxx , Celeron Çift Çekirdekli ): C0, C1, C1E, C2, C2E, C3, C4
Sadece Çekirdek 2 işlemciler dizisindeki C durum desteğindeki çeşitlilik miktarından, C durumları için tutarlı bir destek eksikliğinin, intel_idle
sürücü ile tam olarak desteklenmeye çalışılmamasının nedeni olabileceği anlaşılmaktadır . Çekirdek 2 hattının tamamı için yukarıdaki listeyi tamamen tamamlamak istiyorum.
Bu gerçekten tatmin edici bir cevap değil, çünkü ne kadar gereksiz gücün kullanıldığını ve bu işlemcilerde güçlü güç tasarrufu sağlayan MWAIT C-durumlarını tam olarak kullanmamaktan dolayı aşırı ısı üretildiğini (ve hala üretildiğini) merak ediyor .
Chattopadhyay ve diğ. 2018, Enerji Verimli Yüksek Performanslı İşlemciler: Yeşil Yüksek Performanslı Tasarım İçin Son Yaklaşımlar Hesaplama , Q45 Express Chipset'te aradığım belirli davranış için dikkat çekicidir:
Paket C durumu (PC0-PC10) - İşlem alanları, Çekirdek ve Grafikler (GPU) boştayken, işlemcinin uncore ve platform seviyelerinde ek güç tasarrufu için, örneğin LLC'yi temizleme ve güç kaynağını açma bellek denetleyicisi ve DRAM IO ve bazı durumlarda, durumu her zaman açık olan etki alanında korunurken tüm işlemci kapatılabilir.
Test olarak aşağıdakileri linux / drivers / idle / intel_idle.c line 127'ye yerleştirdim:
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 }
};
En intel_idle.c
hat 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,
};
En intel_idle.c
hat 1073:
ICPU(INTEL_FAM6_CORE2_MEROM, idle_cpu_conroe),
ICPU(INTEL_FAM6_CORE2_PENRYN, idle_cpu_core2),
PXE düğümlerimi hızlı bir şekilde derleyip yeniden başlattıktan sonra dmesg
şimdi şunu gösteriyor:
[ 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
Ve şimdi PowerTOP gösteriyor:
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
Sonunda Gelişmiş Çekirdek 2 C durumlarına eriştim ve güç tüketiminde ölçülebilir bir düşüş var gibi görünüyor - 8 düğümdeki sayacım ortalama olarak en az% 5 daha düşük görünüyor (bir düğüm hala eski çekirdeği çalıştırıyor) , ama çekirdeği bir test olarak tekrar değiştirmeyi deneyeceğim.
C4E desteği ile ilgili ilginç bir not - My Yorktown Q9550S işlemcim, yukarıda da belirtildiği gibi (veya C4'ün başka bir alt durumu) destekliyor! Bu beni şaşırtıyor, çünkü Core 2 Q9000 işlemcisindeki Intel veri sayfası (bölüm 6.2) yalnızca C durumları Normal (C0), HALT (C1 = 0x00), Genişletilmiş HALT (C1E = 0x01), Stop Grant (C2 = 0x10) olarak bahsetmektedir. , Genişletilmiş Durdurma Desteği (C2E = 0x11), Uyku / Derin Uyku (C3 = 0x20) ve Derin Uyku (C4 = 0x30). Bu ek 0x31 durumu nedir? C2 durumunu etkinleştirirsem, C4 yerine C4E kullanılır. C2 durumunu devre dışı bırakırsam (C2E zorla durumu), C4E yerine C4 kullanılır. Bunun MWAIT bayraklarıyla bir ilgisi olabileceğinden şüpheleniyorum, ancak bu davranış için henüz bir dokümantasyon bulamadım.
Bunun ne yapılması gerektiğinden emin değilim: C1E durumu C1 yerine kullanılıyor, C2 yerine C2 kullanılıyor ve C4 yerine C4 kullanılıyor. C1 / C1E, C2 / C2E ve C4 / C4E ile birlikte intel_idle
veya fazlalık kullanılıp kullanılamayacaklarından emin değilim . Bu 2010 sunumunda, Intel Labs Pittsburgh tarafından geçişlerin C0 - C1 - C0 - C1E - C0 olduğunu ve başka durumları belirten bir not buldum :
C1E yalnızca tüm çekirdekler C1E'deyken kullanılır
Bunun sadece tüm çekirdekler C1E durumundayken C1E durumu diğer bileşenlere (örneğin hafıza) girildiğinde yorumlanacağına inanıyorum. Bunu C2 / C2E ve C4 / C4E durumlarına eşit olarak uygulamak için de kabul ediyorum (Her ne kadar C4E "C4E / C5" olarak adlandırılsa da, C4E'nin C4'ün bir alt durumu olup olmadığından emin değilim; C4E'nin durumu Test, C4 / C4E'nin doğru olduğunu gösteriyor gibi görünüyor). C2E'yi C2 durumunu yorumlayarak kullanılmaya zorlayabilirim - ancak bu, C4 durumunun C4E yerine kullanılmasına neden olur (burada daha fazla çalışma gerekebilir). Umarım, C2E devleti olmayan herhangi bir model 15 veya model 23 işlemcisi yoktur, çünkü bu işlemciler yukarıdaki kodla C1 / C1E ile sınırlı olacaktır.
Ayrıca, bayraklar, gecikme ve ikamet değerleri muhtemelen iyi ayarlanmış olabilir, ancak sadece Nehalem boşta değerlerine dayanarak eğitimli tahminler almak iyi iş gibi görünüyor. Herhangi bir iyileştirme yapmak için daha fazla okuma gerekecektir.
Bunu Core 2 Duo E2220 ( Allendale ), Çift Çekirdekli Pentium E5300 ( Wolfdale ), Core 2 Duo E7400 , Core 2 Duo E8400 ( Wolfdale ), Core 2 Quad Q9550S ( Yorkfield ) ve Core 2 Extreme QX9650 ve I üzerinde test ettim. C2 / C2E ve C4 / C4E durumları için yukarıda belirtilen tercihlerin ötesinde bir sorun bulamadık.
Bu sürücü değişikliği kapsamında değildir:
- Orijinal Core Solo / Core Duo ( Yonah , Core 2 olmayan) aile 6, model 14'tür. Bu, C4E / C5 (Gelişmiş Derin Uyku) C durumlarını destekledikleri ancak C1E / C2E durumlarını desteklemedikleri ve ihtiyaç duyduklarına ihtiyaç duyacakları için iyidir. kendi boşta tanımı.
Aklıma gelen tek şey:
- Core 2 Solo SU3300 / SU3500 (Penryn-L) aile 6, model 23 ve bu sürücü tarafından algılanacak. Ancak, Soket LGA775 değillerdir, bu nedenle C1E Gelişmiş Durma C durumunu desteklemeyebilirler. Benzer şekilde Core 2 Solo ULV U2100 / U2200 ( Merom-L ). Bununla birlikte,
intel_idle
sürücü, alt durumların donanım desteğine dayalı olarak uygun C1 / C1E'yi seçiyor gibi görünmektedir.
- Core 2 Extreme QX9650'nin (Yorkfield) bildirildiği gibi C durumu C2 veya C4'ü desteklemiyor. Bunu eBay'de kullanılmış bir Optiplex 780 ve QX9650 Extreme işlemci satın alarak onayladım. İşlemci C-durumları C1 ve C1E'yi destekler. Bu sürücü modifikasyonunda CPU, C1 yerine C1E durumunda boşta kalır, bu nedenle büyük olasılıkla bir miktar güç tasarrufu vardır. C durumu C3'ü görmeyi umuyordum, ancak bu sürücüyü kullanırken mevcut değil, bu yüzden daha fazla araştırmam gerekebilir.
C-devletleri (örneğin, Deep Power Down) arasındaki geçişlerle ilgili 2009 Intel sunumundan bir slayt bulmayı başardım:
Sonuç olarak, intel_idle
sürücüdeki Core 2 desteği eksikliğinin gerçek bir nedeni olmadığı ortaya çıktı . Şimdi “Core 2 Duo” için orijinal saplama kodunun sadece acpi_idle
C-durumu C3'ü de işleyen fonksiyondan çok daha az verimli olan C-durumları C1 ve C2'yi kullandığı açıktır . Nereye bakacağımı bildiğimde, desteği uygulamak kolaydı. Yararlı yorumlar ve diğer cevaplar çok takdir edildi ve Amazon dinliyorsa, çekin nereye gönderileceğini biliyorsunuz.
Bu güncelleme github'a adanmıştır . Yakında LKML'ye bir e-posta göndereceğim.
Güncelleme : Ayrıca , aile 6, model 15 olan bir Soket T / LGA775 Allendale ( Conroe ) Çekirdek 2 Duo E2220'yi kazmayı da başardım. Bu model C durumu C4'ü desteklemiyor, ancak C1 / C1E ve C2 / C2E'yi destekliyor. Bu, diğer Conroe tabanlı yongalarda ( E4xxx / E6xxx ) ve muhtemelen tüm Kentsfield ve Merom (Merom-L olmayan) işlemciler için de geçerli olmalıdır.
Güncelleme : Sonunda bazı MWAIT ayarlama kaynaklarını buldum. Bu Power-Performance yazma ve bu Derin C durumlarını ve artan gecikme günlüğü gönderisinin her ikisi de CPU boşta kalma gecikmelerinin tanımlanması konusunda bazı yararlı bilgiler içerir. Ne yazık ki, bu yalnızca çekirdeğe kodlanmış bu çıkış gecikmelerini bildirir (ama ilginç bir şekilde, yalnızca işlemci tarafından desteklenen donanım durumlarını):
# 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
acpi_idle
ve çeşitli performans valiler.powertop
Sisteminizde hangi durumlar var ?