PHC-linux undervolting na dwa rdzenie

Przenośne komputery i problemy z nimi związane
asedio
Sędziwy Jeż
Sędziwy Jeż
Posty: 72
Rejestracja: 14 lip 2008, 21:57
Płeć: Mężczyzna
Wersja Ubuntu: 8.10
Środowisko graficzne: GNOME

PHC-linux undervolting na dwa rdzenie

Post autor: asedio » 09 kwie 2009, 14:11

Przeczytałem viewtopic.php?t=91326 i mam kilka uwag.
Skompilowałem sobię jądro 2.6.28.9 (ubunut 9.04)
lsmod | grep acpi_cpufreq u mnie nic nie wyświetla ale po skompilowaniu jądra w/g http://www.linux-phc.org/
i wgraniu patch'a komenda:
cat /sys/devices/system/cpu/cpu0/cpufreq/phc_controls
wyświetla pary napięciowe.
Otóż mając dwa rdzenie powinniśmy chyba zoptymalizować i dokonać wpisów
echo "12:21 10:1 8:1 6:1" > /sys/devices/system/cpu/cpu0/cpufreq/phc_controls

dla dwóch cpu?
czyli:
echo 'pary napieciowe cpu0' > /sys/devices/system/cpu/cpu0/cpufreq/phc_controls
echo 'pary napięciowe cpu1' > /sys/devices/system/cpu/cpu1/cpufreq/phc_controls

Również skrypt optymalizacji napieć powinien być poprawiony do pracy dla dwóch cpu.
Według mnie powinniśmy mieć dwa skrytpy, jeden dla cpu0 drugi dla cpu1, które zapisują swoje pliki robocze również w dwóch niezależnych plikach i optymalizują napięcia.
Dopiero tak zoptymalizowane napięcia wpisujemy w:
pliku /etc/rc.local
Podejrzewam, że róźnica napięć dla obu rdzeni nie będzie zauważalna więc optymalizacja obu rdzeni niewiele da ale sam wpis w /etc/rc.local w/g w/w how-to spowoduje, że jeden rdzeń będzie pracował na obniżnym napieciu a drugi chyba na standardowym.
Co sądzicie?
...chyba, że do obu rdzeni podłączone jest jedno napięcie.
Mój Dell D830 nie wstaje z hibernacji po takim overvoltingu bez względu na to jakie napięcia wstawię w "echo...."
Dell'e... różne ;-)
asedio
Sędziwy Jeż
Sędziwy Jeż
Posty: 72
Rejestracja: 14 lip 2008, 21:57
Płeć: Mężczyzna
Wersja Ubuntu: 8.10
Środowisko graficzne: GNOME

Odp: PHC-linux undervolting na dwa rdzenie

Post autor: asedio » 10 lis 2009, 10:51

Odświeżam temat bo sprawa jest już na tyle prosta i warto się nią zająć.
Otóż undervolting dla ubuntu sprowadza się do tego:

dodajemy nowe repozytoria z kernelami dla ubuntu w których wkompilowano moduł acpi_cpufreq. Wybieramy tylko naszą wersję kernela:

https://launchpad.net/~linux-phc/+archive/ppa
i instalujemy nowe kernele odpowiednie dla naszej wersji z tym, ze w nazwie mają phc i oczywiście grub musi uruchamiać system z nowym jądrem phc.

ściągamy paczkę z patch'ami dla naszego procka z:
http://www.linux-phc.org/forum/viewtopic.php?f=13&t=2


rozpakowujemy i kompilujemy zgodnie z opisem w pliku README.
czyli z konsoli wchodzimy do rozpakowanego katalogu, następnie wydajemy komendy z konsoli:

make prepare
make
sudo make install

oczywiście musimy wpierw zainstalować:

sudo apt-get install build-essential linux-source

Następnie
edytujemy plik: modules

sudo gedit /etc/modules

i dodajemy wpis, dla procesorów intel będzie to:
phc-intel
który spowoduje ładowanie skompilowanego przez nas modułu podczas startu systemu.

następnie restart i przystępujemy do testów zgodnie z opisem kolegi z wątku:

viewtopic.php?t=91326

Dodam, że przykładowe pary dla mojego C2D T7500 mobile to:
12:30 11:25 8:13 6:11 136:11
Dodam dla jasności, że pierwsza liczba - mnożnik procka a za dwukropkiem numer napięcie dla danego mnożnika i 12 to nie te 2,2GHz a maksymalna częstotliwość mojego procesora która wynosi ... 2,21Ghz. Dopiero pozycja 11 określa 2,2Ghż, 8 1,60Ghz, 6 1,2Ghz a 136 minimalną częstotliwość, która u mnie wynosi 0,8Ghz.
Podczas kompilowania modułu phc-intel procesor zostaje rozpoznany i mnożniki są automatycznie doierane. Parametry te pojawiają się w plikach zawartych w katalogach:
/sys/devices/system/cpu/cpu0/cpufreq
/sys/devices/system/cpu/cpu1/cpufreq
Napięcia i odpowiadajacy im numer można odczytać podczas testu z w/w wątku.
Po testacgh dokonujemy wpisu w rc.local z tym, ze wpisu należy dokonać dla obu rdzeni (pkt.5 w/w howto).
np dla mojego procka.
echo "12:30 11:25 8:13 6:11 136:11" > /sys/devices/system/cpu/cpu0/cpufreq/phc_controls
echo "12:30 11:25 8:13 6:11 136:11" > /sys/devices/system/cpu/cpu1/cpufreq/phc_controls

po w/w. czynnościach czas pracy na baterii wydłużył się o ok 30% a dodatkowo przy intensywnym obciązeniu procesora komputer jest w stanie pracować na maksymalnej czestotliwości cały czas przy średnich obrotach wentylatora. Do tej pory temperatura powodowała, ze laptop przełączał się na nizsze czestotliwości z powodu temperatury a wentylator chuczał jak wściekły :-)
W moim przypadku nie zawsze testy były wykonywane poprawnie. Czasami zdarzało się, że podczas testu napięcie dochodziło do minimum a komputer nadal pracował. Napięcia dla mojego procesora dobrałem metodą prób i błędów i info na jego temat jakie znalazłem w necie. Przy zbyt zaniżonym napięciu komputer sie zawiesi. Wówczas należy go uruchomić z LiveCD i edytując plik rc.local podnieśc napięcia. Zdarzała mi się również sytuacja w której procesor na poszczególnych mnożnikach działał prawidłowo natomiast zawieszenie procesora następowało podczas przełączania częstotliwości. Wówczas również trzeba podnieść napięcia.
Wszelkie informacje o naszych rdzenaich można obejrzeć podglądając pliki w katalogu
/sys/devices/system/cpu/cpu0/cpufreq
/sys/devices/system/cpu/cpu1/cpufreq
jesli nie ma katalogu cpufreq to znaczy że nie mamy zainstalowanego modułu acpi_cpufreq lub phc-intel ale to juz opisał kolega w w/w wątku.

..a mój Dell D830 T7500 wstaje z wstrzymania teraz bardoz ładnie :-)

Gdyby zdarzyły się problemy z uruchomieniem ubuntu z grafiką nvidia z nowymi kernalami phc, mrugajacy czarny ekran z konsoli i nie da się nawet zalogować z konsoli, tak było w moim przypadku, to wówczas uruchamiamy system z LiveCD (ja mam pendrive'a) edytujemy:
sudo gedit /etc/X11/xorg.conf
i zmieniamy w Section Device (oczywiście naszego niedziałajacego systermu)
opcję driver z "nvidia" na vesa i uruchamiamy ponownie system już z HDD.
Ściagamy najlepiej driver zamknięty nvidii. Ja mam 190.42. Przechodzimy przez Alt+Ctr+F1 do konsoli i logujemy się.
Następnie wyłączamy gdm:

sudo /etc/init.d/gdm stop

i instalujemy sterownik nvidii komendą:

sudo sh NVIDIA-linux-x86-190.42-pkg1.run

wszystko powinno wrócić do normy.
Gdyby były jakieś problemy z zainstalowaniem drivera to wydajmy komendę z konsoli:
nvidia-uninstall i spróbujmy ponownie zainstalować sterownik.
Jeśli w dalszym ciagu pojawi się jakiś error to:

sudo apt-get autoremove nvidia*

i jeszcze raz spróbujmy zainstalować. W tym ostatnim przypadku musimy się liczyć z tym, że będziemy musieli zainstalwoać ponownie niektóe programy np. KRDC itp. wyrzucone powyższą komendą.
Jak do tej pory któryś ze sposobów zawsze u mnie zadziałał.

Powyższe sposoby przywrócenia sterownika nvidii działają prawie zawsze i to nie tylko z undervolting'iem ale w wielu innych sytuacjach gdy grafika pada np. po aktualiacji sytemu czy jądra.

Ostatnio skopiowałem tak zainstalowaną wersję ubuntu 9.10 na innego laptopa z innnym intelowskim procesorem. Zahaszowałem tylko echo w rc.local przed startem. System wstał bez problemu a wpisy w
/sys/devices/system/cpu/cpu0/cpufreq/phc_controls zostały przez moduł phc-intel dobrane dla nowego procesora.
Potem jedynie nowe testy i wpisy w rc.local

Jedna dość istotna i jakże wyjaśniająca wiele uwaga.
Doszperałem się ostanio, że nie da sie ustawić napięcia poniżej wartości 17.
To wyjaśnia wiele. Dlatego w testach mój procek w trybie minimum nigdy się nie zawieszał, pracując niby juz na napięciach 0,7V ;-)
Dell'e... różne ;-)
ODPOWIEDZ

Wróć do „Laptopy”