16 obserwujących
148 notek
183k odsłony
  2140   0

Ubuntu 22.04 to (u mnie?) na razie porażka, czyli beznadziejna walka o każdy mW energii

I proszę nie zrozumieć mnie źle – w 21.10 być może było podobnie… ale skoro laptop nagle z dnia na dzień przy podobnym używaniu pokazuje kilka dobrych h mniej pracy na baterii, coś jest zrobione mocno gorzej w nowej dystrybucji. Może to tylko choroby wieku dziecięcego, ale…sam Linux ma masę sposobów, żeby rzeczy zrobić „dobrze” (np. można ustawić sobie trigger i nakazać uruchomić proces za 24h, a nie odpalać go regularnie, gdy nie jest potrzebny), i wypadałoby trzymać poziom.

Jestem na etapie szukania, czy mogę coś uzyskać przez zmianę jądra, itp., na chwilę obecną to jednak niewypał. Środki, które podjąłem (to są dodatkowe komendy do skryptu, który opisywałem wcześniej):

Próba wyłączenia trzech usług, których nie potrzebuję (jako ćwiczenie polecam poszukać, co robią):

sudo systemctl stop systemd-oomd
sudo systemctl mask systemd-oomd
sudo systemctl stop irqbalance
sudo systemctl stop fwupd.service
sudo systemctl mask fwupd.service

(+ wyłączenie automatycznej synchronizacji czasu)

Dalsze ograniczenie TDP procesora:

sudo rapl-set -p 0 -c 0 -l 8000000 -e 1
sudo cpupower frequency-set -u 2400000
sudo cpupower --cpu 2,3,6,7 frequency-set -u 400000


i próby dodatkowego zmniejszania prędkości:

sudo cpupower --cpu 1 frequency-set -u 1200000
sudo cpupower --cpu 4,5 frequency-set -u 800000
PIDOF=$(pidof Xorg)
taskset -cp 4 $PIDOF
PIDOF=$(pidof gnome-shell)
taskset -cp 4 $PIDOF

Wyżej wspomniane komendy wymuszają mniejsze prędkości maksymalne kolejnych rdzeni procesora, i przypisują dwa cały czas używane procesy, do konkretnego rdzenia (nie mogę zrezygnować z Xorg ze względu na używanie korekty gamma na ekranie).

Przy okazji sprawdziłem też, czy aby nowe jądro nie ma włączonego szybszego timera, charakterystycznego dla zastosowań typu realtime (w /boot mamy konfigurację).

Możliwość fizycznego odłączania nieużywanych elementów

Tu mamy pewien problem – UEFI od Clevo / Insyde (przynajmniej w wydaniu Hyperbook) nie daje możliwości wyłączenia USB czy kamery czy rdzeni CPU (coś, co pojawia się w Dell czy HP).

Z kamerą przynajmniej programowo radzi skrypt od Tuxedo (pisałem o tym), jak to jednak wygląda sprzętowo (czy fizycznie odcinany jest prąd)  – nie mam pojęcia.

W Linuxie mam obecnie w opcjach jądra dodatkowo „isolcpus=2,3,6,7” (zmieniamy GRUB_CMDLINE_LINUX w pliku /etc/default/grub i wydajemy komendę update-grub). Powoduje ona, że jądro nie przydziela tam żadnych procesów… a ponieważ mam na nich prędkość 400 Mhz, teoretycznie i praktycznie całkowicie powinny być wyłączone.

Dwie rzeczy tu mocno zastanawiają:

  1. powertop nie pokazuje mi przy procesorze wejścia w tryby C9 i C10, i nie wiem do końca, czy na tym sprzęcie jest to kwestia płyty głównej (brak wsparcia dla odpowiedniego wyłączenia napięcia), UEFI, Intel ME czy samego Linuxa (wzbudzanie procesora przez procesy).
  2. gdy próbowałem wyłączać urządzenia PCI przez zabawy rejestrami, zużycie energii wydawało się wzrastać

Podsumowanie

Kupujemy nowoczesny sprzęt i mamy do wyboru – oszczędzanie energii albo wydajność (znów się kłania dżuma i cholera).

Nowe Ubuntu mnie mocno rozczarowało. Wygląda na to, że dystrybucja nie jest zbyt dobrze przygotowana (np. włączany jest zawsze Remote Desktop, przy kartach Nvdii używany jest Xorg, zmienione są opcje wirtualizacji, niektórzy raportują problemy ze standby, itd.), a mój bug został zamknięty…

Należy tu też jasno powiedzieć kilka rzeczy:

  1. ilość wakeups/second w narzędziu powertop powinna być jak najmniejsza (u mnie potrafi zejść do mniej więcej 90, ale przy pisaniu tekstów w Libre Office wynosi już około 400-600, i to jest relatywnie sporo)
  2. procesor i karta graficzna powinny „chętniej” wchodzić w wyższe stany oszczędzania (tymczasem przy karcie mam maksymalnie RC6, a przy CPU C8)
  3. może się zdarzać, że mamy dużo wejść w tryby oszczędzania energii albo niską ilość wakeups, ale moc pobierana z baterii (widać w powertop) jest spora. Intel 11-generacji w teorii ma wszystkie rdzenie takie same (choć te związane z hyperthreading prawdopodobnie mogą pobierać mniej energii). I teraz należy zadać sobie pytania – czy bardziej opłaca się uruchamiać poszczególnie procesy na oddzielnych rdzeniach? Co daje HT? Czy sumaryczne zużycie energii przez dłuższy czas przy niższym taktowaniu jest mniejsze niż przez krótki czas przy wysokim taktowaniu? Czy jądro rzeczywiście robi wszystko optymalnie ? (może 5.13 było lepsze niż 5.15)
  4. we wszystkim nie chodzi o aptekarskie mierzenie każdej porcji energii, ale znalezienie takiego złotego środka, żeby maszyna była wystarczająco szybka, a do tego ilość pobieranej mocy jak najniższa przez jak najdłuższy czas
  5. mówimy tu o takim poziomie optymalizacji, że nawet wyświetlanie sekund w zegarku na pulpicie albo częste zapisywanie logów może generować zużycie „bardzo dużej” energii. Jeżeli Szanowny Czytelniku jesteś na etapie „o, mamy nowe Gnome! Jak fajnie, że ma inne kolorki!”, to pewnie wszystko, co napisałem, jest nieistotne.
  6. jedyne, czego nie spróbowałem, to chyba tylko undervolting

I teraz liczby: w trybie idle (brak sieci, komputer pokazuje tylko desktop) przy mojej jasności ekranu (bodajże 10%) chwilowo potrafię zejść nawet do 1,83 W, średnie wartości to mniej więcej 2-2,2 W, z kolei przy pisaniu tekstów w Libre wchodzę na co najmniej 2,8-3,5 W.

Niby wszystko jest OK, ale… nie jest (patrz punkt 5 powyżej)

C.d.n. może nastąpić.

Lubię to! Skomentuj25 Napisz notkę Zgłoś nadużycie

Więcej na ten temat

Komentarze

Inne tematy w dziale Technologie