
Power management to coś co bardzo interesuję użytkowników laptopów, którzy zawsze chcieliby wycisnąć z baterii jak najwięcej minut się da bez ponownego ładowania. Poza tym niektórych miejsc na ciele lepiej nie przegrzewać. Parę miesięcy temu na phoronix pojawiły się artykuły opisujące stan otwartoźródłowych sterowników do kart radeon. Dokładniej, Michael Larabel skupiał się wtedy bardziej na nowościach w otwartych sterownikach na polu dynamicznego zarządzania energią karty graficznej i bardzo mnie to zainteresowało, bo może będę mógł wkońcu zrezygnować z fglrx. Przeglądając jeden z wątków do artykułów, na którym trwała dyskusja na temat tych nowych funkcji natrafiłem na informację, że żeby zobaczyć jak to działa wcale nie potrzebuję tak dużo. Wszystkie potrzebne do tego funkcje zostały wprowadzone do kernela 2.6.35, więc wystarczy trochę miejsca i świeża instalacja Maverick Meerkat, czyli najnowszej testowej wersji Ubuntu i właściwie tyle. Dobrze, że dużo prościej zrobić to w wersji testowej, bo ostatnio oszczędzam moją ,,stabilną” instalację ubuntu. Przynajmniej staram się.
Sterowniki otwarte mogą działać w dwóch oddzielnych trybach. Jeden z nich działa w UMS i jest to sposób starszy i bardziej stabilny. Drugi z nich to (co logiczne młodszy i mniej stabilny) oszczędzanie energii w trybie KMS, który w jest ostatnio domyślnie uruchamiany w świeższych dystrybucjach (w Ubuntu świeżym przynajmniej). Właśnie tej drugiej możliwości się przyjrzałem.
Włączamy oszczędzanie energii
Zarządzanie energii w teorii powinno działać na wszystkich kartach, które są obsługiwane przez sterowniki i, które umożliwiają skalowanie częstotliwości oczywiście. Działa to nawet na układach zintegrowanych takich jak np. radeon hd 3200. W przypadku tych układów można zmieniać jedynie częstotliwość i napięcie na rdzeniu GPU, nie dotykając zupełnie pamięci. Sprawdzając jak to działa oczywiście należy pamiętać o tym, że całość jest jeszcze stosunkowo nowa i nie wszystko może poprawnie działać. O tym czy mamy możliwość włączenia tych funkcji na obecnie zainstalowanym systemie powinien poinformować nas dmesg.
$ dmesg | grep power [ 3.716977] [drm] radeon: power management initialized
Zarządzanie energią w KMS może korzystać z dwóch metod zarządzania energią. Jedną z nich jest dynpm, czyli zarządzanie energią na podstawie aktualnego obciążenia GPU, podobnie jak ma to miejsce w fglrx. Drugą z możliwości jest korzystanie ze zdefiniowanych odgórnie profili: low, mid, high, auto.
high - wszystko na maksymalnych ustawieniach mid - pomiędzy low i high low - wszystko jak najniżej auto - na AC ustawia high, na baterii mid, a przy wyłączonym monitorze low
Profil auto nie korzysta prawie wogóle z low (tylko przy wyłączonym monitorze) ze względu na problemy, które pojawiały się w niektórych konfiguracjach. Pora zdecydować się na metodę. Na początku wybrałem metodę profilową ze względu na to, że chciałem zaoszczędzić jak najwięcej. Skorzystałem z profilu low, który powinien oszczędzić najwięcej energii. Poniższymi poleceniami wybieramy, z której metody ma korzystać sterownik. Wykonujemy je na koncie root
echo dynpm > /sys/class/drm/card0/device/power_method # dynamiczna zmiana na podstawie obciążenia GPU echo profile > /sys/class/drm/card0/device/power_method # ustawienie jednego z czterech profili pracy karty
Jeśli wybraliście drugie z poleceń to należy jeszcze wybrać profil pracy. Oczywiście też należy wykonać jako administrator systemu
echo low > /sys/class/drm/card0/device/power_profile echo mid > /sys/class/drm/card0/device/power_profile echo high > /sys/class/drm/card0/device/power_profile echo auto > /sys/class/drm/card0/device/power_profile
Aby sprawdzić jakie są obecnie ustawione zegary naszej karty graficznej sprawdzamy
cat /sys/kernel/debug/dri/0/radeon_pm_info
Engine clock to częstotliwość rdzenia, a memory clock to częstotliwość pamięci. Niewielka różnica między trybem low i high przekonała mnie, że nie będę sprawdzał metody dynamicznego zarządzania energią dynpm, gdyż na pewno pod względem poboru energii nie będzie lepsza od ustawionego na sztywno profilu low. Różnica w energii rzędu 3 W i temperatury około 3 stopni to gorzej niż się spodziewałem.
Porównanie z fglrx
Porównanie z zamkniętymi sterownikami catalyst pokazuję, że jeszcze dużo pracy czeka zespół otwartych sterowników. Różnica w temperaturze średnio to jakieś 8 stopni, a w poborze energii 8 W i jest to naprawdę dużo, jeśli weźmiemy pod uwagę, że mówimy o poborach energii rzędu 15-25 W, czyli 1/3 poboru całego układu. Na korzyść zamkniętych sterowników również przemawia brak mrugania ekranu w trakcie zmiany częstotliwości, który może występować.
Podsumowanie
Jeśli posiadacie zintegrowaną kartę graficzną tak jak ja, to niestety wprowadzone zmiany nie robią wielkiej różnicy. Jeśli macie bardzo dobry system chłodzenia, który potrafi sobie z tym jednak poradzić, a przy tym nie zależy wam na czasie pracy na baterii to gratuluję. Niestety różnica jest na tyle nieduża, że dla mnie taki system jest nadal nieużywalny ze względu na temperatury i ciągły mocno słyszalny szum wiatraka. To wszystko po prostu przeszkadza i nie mam zamiaru się męczyć, szczególnie, że zamknięte sterowniki radzą sobie dużo lepiej.
Na temat rozwiązań niezintegrowancy nie mogę wyciągać właściwie żadnych wniosków. Przypuszczam, że ze względu na możliwość skalowania obu częstotliwości, oszczędności energii w porównaniu do sterowników bez zarządzania energią będą większe niż na karcie zintegrowanej. Jednak to tylko przypuszczenia, których nie mogę sprawdzić bo brak mi odpowiedniego sprzętu. Poza tym nie wiadomo jak dużą oszczędność to da. Nie pozostaję wam nic innego jak samemu się przekonać ile to daję i jeśli już sprawdzicie to dajcie znać w komentarzach.





