[HOWTO] Linux-PHC - undervolting dla procesorów Intel

P.
Piegowaty Guziec
Piegowaty Guziec
Posty: 6
Rejestracja: 06 sie 2007, 02:35
Płeć: Mężczyzna
Wersja Ubuntu: 8.10
Środowisko graficzne: GNOME
Kontakt:

[HOWTO] Linux-PHC - undervolting dla procesorów Intel

Post autor: P. » 12 sty 2009, 22:21

Zmniejszenie napięcia(ang. undervolting) dla procesorów Intel. Tą technikę stosujemy z trzech powodów:
  • Redukcja poboru prądu
  • Redukcja wydzelanego ciepła
  • Redukcja szumu wentylatora
1. Poniższe how-to zależy od tego czy moduł kernela acpi-cpufreq jest używany do kontroli procesora. W konsoli wpisujemy:

Kod: Zaznacz cały

lsmod | grep acpi_cpufreq

Kod: Zaznacz cały

acpi_cpufreq           19468  1
freq_table             12672  3 acpi_cpufreq,cpufreq_stats,cpufreq_ondemand
processor              42156  4 acpi_cpufreq,thermal
Jeśli po wpisaniu polecenia nie wyświetli się lista podobna do powyższej how-to niestety nie jest przeznaczone dla Ciebie.
2. Musisz posiadać zmodyfikowaną wersję modułu <strong>acpi_cpufreq</strong> z wbudowanym PHC(processor hardware control). Jest kilka sposobów, żeby ją zdobyć:
a) Można ściągnąć patch ze <a href="http://phc.athousandnights.de/">tej strony</a> i skompilować moduł na własną rękę.

Kod: Zaznacz cały

uname -r
Mini-Howto kompilacji modułu (z wątku Ares'a Drake)

Kod: Zaznacz cały

sudo apt-get install build-essential linux-source

Kod: Zaznacz cały

tar jxvf "wersja-kernela".tar.bz2

Kod: Zaznacz cały

cd /home/"katalog-domowy"/"wersja-kernela"
kopiujemy /boot/config-$(uname -r) to /home/"katalog-domowy"/"wersja-kernela?

Kod: Zaznacz cały

cp /boot/config-$(uname -r) /home/"katalog-domowy"/"wersja-kernela?
kopiujemy pliki nagłówkowe:

Kod: Zaznacz cały

cp /usr/src/linux-headers-`uname -r`/Module.symvers /home/"katalog-domowy"/"wesja-kernela"

Kod: Zaznacz cały

patch -p1 < linux-phc*.patch
make oldconfig
make prepare
make scripts
make M=./arch/x86/kernel/cpu/cpufreq
Skompilowany moduł znajdziemy w katalogu /home/"katalog-domowy"/"wersja-kernala"/arch/x86/kernel/cpu/cpufreq
Kolejne kroki wykonujemy jak w przypadku ściągnięcia pre-kompilowanego modułu(patrz 2.c).
<strong>b)</strong>Ściągnij <strong>pre-kompilowany moduł</strong> z <a href="http://ubuntuforums.org/showthread.php?t=786402">tego wątku</a>. Musi być zgodny z wersją kernela.
  1. Tworzymy kopię zapasową starego modułu:

    Kod: Zaznacz cały

    sudo cp /lib/modules/`uname -r`/kernel/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.ko /lib/modules/`uname -r`/kernel/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.ko.old
    </li>
  2. Żeby sprawdzić wersję kernela w konsoli wpisujemy:

    Kod: Zaznacz cały

    uname -r
<strong>c)</strong> Kopiujemy gotowy moduł w odpowiednie miejsce:

Kod: Zaznacz cały

sudo cp acpi-cpufreq.ko /lib/modules/$(uname -r)/kernel/arch/x86/kernel/cpu/cpufreq
<em>Krok drugi należy powtarzać za każdym razem, gdy instalujemy nową wersję kernela.</em>
<strong>3.</strong> Restartujemy system. Sprawdzamy czy wszystko działa wpisując:

Kod: Zaznacz cały

 cat /sys/devices/system/cpu/cpu0/cpufreq/phc_controls
W konsoli powinny się wyświetlić pary napięciowe jak poniżej:

Kod: Zaznacz cały

12:43 10:34 8:25 6:15
<strong>4.</strong> Nadszedł czas na znalezienie najniższego bezpiecznego napięcia. W tym celu ściągamy <a href="http://www.s3pp.de/misc/linux-phc-optimize.bash">skrypt optymalizacji</a> i <a href="http://www.s3pp.de/misc/functions.bash">dodatkowe funkcje</a>. Dodajemy uprawnienia uruchamiania ('chmod u+x' plik) i w konsoli wpisujemy:

Kod: Zaznacz cały

sudo ./linux-phc-optimize.bash
Powyższy skrypt wymaga <strong>cpuburn</strong>, który można zainstalować przez synaptic lub apt. Skrypt będzie krok po kroku obniżał napięcie, aż to zawieszenia systemu(w moim przypadku system nie padł). Skrypt należy uruchomić 4-6 razy w zależności od ilości dostępnych częstotliwości procesora.

<em>Skrypt może zawiesić system. To nie powinno spowodować uszkodzenia hardware, ale może uszkodzić system plików lub niektóre dane na dysku. Po restarcie warto odpalić fsck</em>

<em>W przypadku dwurdzeniowych procesorów należy odpalić skrypt w dwóch terminalach.</em>

W wyniku dostajemy w pliku tekstowym zoptymalizowane pary napięciowe.

<strong>5.</strong> Aby używać zoptymalizowanych wartości za każdym razem musimy je przekazać do /sys/devices/system/cpu/cpu0/cpufreq/phc_controls. Najłatwiejszym sposobem jest dopisanie poniższej komendy do pliku <strong>/etc/rc.local</strong>:

Kod: Zaznacz cały

echo "12:21 10:1 8:1 6:1" > /sys/devices/system/cpu/cpu0/cpufreq/phc_controls
Należy pamiętać, żeby wpisać własne pary napięciowe.

<strong>6.</strong> Sprawdzenie czy wszystko działa:

Kod: Zaznacz cały

cat /sys/devices/system/cpu/cpu0/cpufreq/phc_controls
Sprawdź czy po restarcie systemu dostajesz nowe pary napięciowe.

Strony z których korzystałem:
<a href="http://phc.athousandnights.de/">Oficjalna strona PHC</a>
<a href="http://ubuntuforums.org/showthread.php?t=786402">Ubuntu forum - wątek Ares'a Drake</a>

Mam nadzieję, że jest w miarę zrozumiałe i się komuś przyda:)
ODPOWIEDZ

Wróć do „Hardware-Inne”