Szukam mechanizmu do dynamicznego wyłączania rdzeni w systemie Linux, aby zminimalizować zużycie energii.
Niestety, wyłączenie rdzeni przy użyciu następującego prostego podejścia faktycznie zwiększa moc, na podstawie odczytów z Watts Up? Pro mierzący całkowitą moc systemu:
echo 0 > /sys/devices/system/cpu/cpu7/online
Moje doświadczenie wydaje się potwierdzone przez innych (chociaż ten błąd został oznaczony jako „ZAMKNIĘTA PATCH_ALREADY_AVAILABLE”): https://bugzilla.kernel.org/show_bug.cgi?id=5471
Ponieważ maszyna jest rozładowana, chcę, aby wszystkie rdzenie oprócz jednego (lub może dwóch „rdzeni”, ponieważ procesor jest hiperwątkowy) znajdowały się w możliwie najgłębszym stanie uśpienia. Wydaje się, że nie dzieje się to samo, w oparciu o dane wyjściowe acpitool:
Processor ID : 7
Bus mastering control : no
Power management : yes
Throttling control : no
Limit interface : no
Active C-state : C0
C-states (incl. C0) : 3
Usage of state C1 : 899 (99.3 %)
Usage of state C2 : 6 (0.7 %)
BTW, dla mnie jednym zamieszaniem jest to, że acpitool i / proc / acpi wydają się nie zgadzać co do dostępnych stanów C, a może używają różnych schematów nazewnictwa.
$ cat /proc/acpi/processor/CPU7/power
active state: C0
max_cstate: C8
maximum allowed latency: 2000000000 usec
states:
C1: type[C1] promotion[--] demotion[--] latency[001] usage[00000000] duration[00000000000000000000]
C2: type[C2] promotion[--] demotion[--] latency[017] usage[00001248] duration[00000000001877531423]
C3: type[C3] promotion[--] demotion[--] latency[017] usage[00000006] duration[00000000000012580727]
To wydaje się wskazywać, że istnieją 4 stany C (C0-C3), ale acpitool zgłasza tylko 3 stany C.
Naprawdę sprowadza się to do dwóch pytań:
- Czy istnieje (bezpieczny) sposób, aby zmusić poszczególne rdzenie do określonego stanu snu (stan C) i zmusić je do pozostania tam, dopóki ich wyraźnie nie obudzę?
- Alternatywnie, w jaki sposób mogę poprawić zdolność systemu operacyjnego do bardziej spójnego wprowadzania rdzeni w głębsze stany uśpienia?
Zauważ, że opóźnienie budzenia się z głębszych stanów snu nie stanowi problemu. FWIW, używam Ubuntu 10.04.3 (jądro 2.6.32-38) na Intel i7 920.