Spotreba laptopu s AMD Ryzen 7 PRO 5850U

24.04 | 06:49 | Mirecove dristy | Miroslav Bendík

V dnešnom článku predstavím nástroje, ktoré používam na meranie a nastavenie šetrenia energie. Zároveň porovnám spotrebu svojho notebooku pod Linuxom a Windowsom.

Môj testovací notebook je Thinkpad P14s gen 2 (21A00003CK). O samotnom hardvéri som písal jednom zo starších blogov. V tomto blogu sa pozriem bližšie na spotrebu energie.

Nastavenie spotreby

Na tomto notebooku sa dá nastaviť pomerne málo parametrov, pretože BIOS (UEFI) deklaruje, že nepodporuje PCIe ASPM. Teoreticky sa dá kernel nabootovať s parametrom pcie_aspm=force, ale nevidím v tom zmysel, pretože automatické nastavenie BIOSom funguje dobre.

Zvyšné parametre nastavujem pomocou nástroja tlp. Z nastavení tlp odporúčam:

CPU_SCALING_GOVERNOR_ON_AC=schedutil
CPU_SCALING_GOVERNOR_ON_BAT=conservative

Správa schedutil poskytuje veľmi rýchle zvyšovanie frekvencie pri záťaži. Naopak conservative zvyšuje frekvenciu postupne (presné parametre sa dajú nastaviť cez sysfs.

CPU_BOOST_ON_AC=1
CPU_BOOST_ON_BAT=0

Boost na maximálnu frekvenciu (v mojom prípade 4.4 GHz) je veľmi neefektívny. Pri práci na batérii je vhodnejšie vypnúť turbo boost.

PLATFORM_PROFILE_ON_AC=performance
PLATFORM_PROFILE_ON_BAT=low-power

Tento parameter ovplyvňuje nastavenie parametrov podľa ACPI DYTC tabuľky. Momentálne to funguje len na inteloch. Pre AMD existuje (v dobe písania) zatiaľ nezačlenený patch. Ja mám opatchovaný kernel a môžem potvrdiť, že v takom prípade pri nastavení low-power sa zníži TDP na 11 W (rovnaká hodnota, akú nastavuje windows v šetriacom režime).

RADEON_DPM_PERF_LEVEL_ON_AC=auto
RADEON_DPM_PERF_LEVEL_ON_BAT=low

RADEON_DPM_STATE_ON_AC=performance
RADEON_DPM_STATE_ON_BAT=battery

RADEON_POWER_PROFILE_ON_AC=default
RADEON_POWER_PROFILE_ON_BAT=low

GPU je veľký žrút, pri práci na batérii rozhodne odporúčam nastaviť šetrenie energie.

WIFI_PWR_ON_AC=off
WIFI_PWR_ON_BAT=on

WOL_DISABLE=Y

Šetrenie wifi a vypnutie wake on lan je tiež dobrý nápad.

USB_AUTOSUSPEND=1

Pri nečinnosti sa USB zariadenia automaticky prepnú do šetriaceho režimu.

Režim batérie sa spúšťa príkazom tlp bat. Do režimu práce s adaptérom sa systém prepne príkazom tlp ac.

Display

Môj notebook má display so 4K rozlíšením a svietivosťou 500 cd/m². Pri maximálnej obnovovacej frekvencii je poriadne pažravý. Obnovovacia frekvencia je v rozmedzí 40-60Hz s adaptívnou synchronizáciu (ak sa nič nevykresľuje, ovládač vie podržať vykreslenie určitú dobu).

Dôležitou vlastnosťou panelu je Panel Self Refresh, čo je režim, ktorý umožňuje úplne vypnúť generovanie obrazu (display si robí refresh sám). Funkcia sa dá zapnúť príkazom echo čas > /sys/module/drm/parameters/vblankoffdelay. Čas, po ktorom sa aktivuje PSR je v milisekundách. Hodnota 0 vypína PSR úplne. Hodnota -1 znamená, že PSR sa zapína okamžite po vykreslení snímku. Pri práci na batérii používam hodnotu -1.

Aby PSR fungovalo, musí byť povolená hodnota TearFree v xorg.conf.

Section "Device"
    Identifier "AMD"
    Driver "amdgpu"
    Option "DRI" "3"
    Option "TearFree" "true"
    Option "VariableRefresh" "true"
EndSection

Obnovovacia frekvencia môjho panelu sa dá ešte znížiť vynútením vlastného modeline. Najskôr je potrebné vypočítať modeline príkazom cvt.

$ cvt 3840 2160 20
# 3840x2160 19.98 Hz (CVT) hsync: 43.72 kHz; pclk: 218.25 MHz
Modeline "3840x2160_20.00"  218.25  3840 4024 4416 4992  2160 2163 2168 2188 -hsync +vsync

Následne sa nový modeline musí priradiť vybranému výstupu.

xrandr --newmode "3840x2160_20.00" 218.25  3840 4024 4416 4992  2160 2163 2168 2188 -hsync +vsync
xrandr --addmode eDP "3840x2160_20.00"

Teraz už stačí len nastaviť frekvenciu príkazom xrandr -r 20.

Meranie spotreby

Spotrebu zisťujem čítaním /sys/class/power_supply/power_now, kde je aktuálna spotreba (alebo rýchlosť nabíjania) v mW. Dobrým nástrojom je aj powerstat (volám s argumentmi powerstat -d 0 -z 5 100). Notorický známy powertop je fajn na nájdenie procesov, alebo zariadení, ktoré spotrebujú priveľa energie, sám výrazne zvyšuje spotrebu. Pod windowsom som používal BatteryInfoView.

Powertop
Obrázok 1: Powertop

Výsledky

Bežná spotreba počas práce pri 5% jase (upozorňujem, že mám veľmi svetlý LCD, takže v interiéri používam nízky jas aj s pripojeným adaptérom) je 3 W. Pri 51 Wh batérii to znamená 17 hodín práce na 1 nabitie.

Na nasledujúcom grafe je zaznamenaná spotreba počas programovania. Spotrebu zaznamenáva priamo grafické prostredie. Graf je renderovaný nástrojom battery_history. Horný graf zobrazuje aktuálnu spotrebu. Na strednom je zostávajúca kapacita a napätie batérie. V spodnom pásiku je aktivita všetkých 16 jadier CPU (čierna - neaktívny, oranžová - 100% záťaž).

Powertop
Obrázok 2: Spotreba pri práci

Porovnanie s windowsom

V tejto tabuľke budem porovnávať len spotrebu bez záťaže. Predpokladám, že nikto nebude kompilovať veľký softvér na notebooku bez AC, takže notebook bude väčšinu času len čakať na stláčanie kláves.

Každý riadok tabuľky zahŕňa aj predchádzajúce optimalizácie z vyšších riadkov.

Všetky linuxové hodnoty sú po ustálení (niekoľko minút po zmene nastavení). Spotreba na linuxe je konštantná na 3 desatinné miesta. Ako spotrebu pod Windowsom beriem do úvahy najnižšiu nameranú hodnotu, pretože tam spotreba každú chvíľu bezdôvodne vyskakuje vyššie.

  Linux Windows
Bez zabitia procesov na pozadí - 14,7 W
Max výkon, max jas 7,333 W 9,277 W
Max výkon, min jas, vypnuté PSR 3,824 W -
Max výkon, min jas, zapnuté PSR 3,209 W 3,856 W
Znížená obnovovacia frekvencia LCD na 20 Hz 3,074 W -
Zapnuté šetrenie energie 2,575 W 2,503 W
Vypnuté wifi 2,542 W 2,492 W
Vypnutý display 1,721 W 1,941 W

Spotreba pri vypnutom LCD je pod linuxom výrazne nižšia. Predpokladám, že to môže byť spôsobené vláknom kernelu dm_vblank_control_workq, ktorý sa spúšťa len pri zapnutom LCD.

htop
Obrázok 3: htop

Spotreba na linuxe bola pri použití waylandu s kompozitorom sway konzistentne vyššia o 0,3 W (pravdepodobne v dôsledku využívania 3D akcelerácie).

Ďalším zaujímavým zistením je vyššia spotreba po hibernácii v oboch operačných systémoch. V nasledujúcej tabuľke sú posledné 2 riadky získané rovnakou metodikou, ale po prebratí s hibernácie.

  Linux Windows
Vypnuté wifi 2.921 W 2.726 W
Vypnutý display 2,103 W -

Výkon

V tejto sekcii by som mohol skúsiť spustiť nejaké benchmarky, ale úprimne, nechce sa mi. Výkon je v Linuxe pri bežnej práci viacej než dostatočný a nevidím dôvod to nejak rozoberať. Správa frekvencie CPU conservative dynamicky mení frekvenciu, takže v prípade potreby vie bežať aj na maximálnej frekvencii.

Výkon vo windowse pri maximálnom šetrení je … ja neviem ako to nazvať. Užívateľské rozhranie je rýchle, ale to bude súvisieť s tým, že nechávam display bežať na plnej frekvencii. Práca s diskom je jedna veľká katastrofa. To isté zip, ktoré som rozbaľoval na linuxe 3s bez toho, aby viditeľne zvýšilo spotrebu. Pod windowsom mi rozbalenie trvalo 20 minút pri spotrebe 10W. Predpokladám, že za tým bude nejaký lenovom predinštalovaný antimalware / antivírus.

Záver

Rozdiel v spotrebe medzi Linuxom a Windowsom je minimálna. V posledných verziách kernelu AMD urobilo poriadny kus práce (samozrejme aj v spolupráci s Valve vďaka ich SteamDecku). Vyššia spotreba po prebratí z hibernácie je problém, ale vyzerá to tak, že je to chyba BIOSu / UEFI.

    • RE: Spotereba laptopu s AMD Ryzen 7 PRO 5850U 24.04 | 10:34
      Avatar Livan Manjaro s XFCE  Používateľ

      Nie je tam chyba v tom rozbaľovaní zip pod windows 20 minut? nemá tam byť 20 s? Ja totiž tiež bežne rozbaľujem zipy ale tam sa jedná o sekundy, nie minuty. Zip má totiž veľmi rýchle rozbaľovanie, rozhodne rýchlejšie, ako balenie do zip. 20 minút by rozbaľovalo tak 10 TB súbor.

      • RE: Spotereba laptopu s AMD Ryzen 7 PRO 5850U 24.04 | 15:07
        Avatar Miroslav Bendík Gentoo  Administrátor
      • RE: Spotereba laptopu s AMD Ryzen 7 PRO 5850U 24.04 | 16:05
        Avatar Miroslav Bendík Gentoo  Administrátor
        • RE: Spotereba laptopu s AMD Ryzen 7 PRO 5850U 27.04 | 10:59
          Avatar Livan Manjaro s XFCE  Používateľ

          Tak mi to nedalo, stiahol som si ten súbor do podobných ntb s linuxom i windows a dal rozbaliť. vo windows sa to rozbaľovalo až cca 7 minút a v linuxe iba cca 7 s. Nechápem ten obrovský rozdiel. Nečakal som to. Možno je to tým, že ten zip obsahuje cca 4300 súborov a windows s nimi pracuje po jednom, kdežto v linuxe to berie ako jeden prúd. Inak si to neviem vysvetliť.

          • RE: Spotereba laptopu s AMD Ryzen 7 PRO 5850U 27.04 | 12:21
            Avatar Miroslav Bendík Gentoo  Administrátor

            Ak je to iba počtom, tak si neviem predstaviť rozbalenie kernelu s 87 358 súbormi, čo na linuxe trvá okolo 15s.

    • RE: Spotereba laptopu s AMD Ryzen 7 PRO 5850U 25.04 | 22:12
      Avatar Stanislav Hoferek Greenie 18.04  Používateľ

      chyba v nadpise

    • RE: Spotreba laptopu s AMD Ryzen 7 PRO 5850U 28.04 | 14:55
      Avatar TcK   Používateľ

      Týpek ma veľa času. Ale veľmi dobré vysvetlenie.

      Tešilo ma. Zbohom
      • RE: Spotreba laptopu s AMD Ryzen 7 PRO 5850U 29.04 | 13:23
        Avatar bluesundown   Používateľ

        ale nie.

        Toto su ciste prakticke veci. Tiez som to riesil a pekny tutorial.

        sice mne sa nepodarilo dostat pod 5.5W :(

    • RE: Spotreba laptopu s AMD Ryzen 7 PRO 5850U 29.04 | 13:25
      Avatar bluesundown   Používateľ

      Co mna celkom nasralo, ze novy GNOME pridal volajaky gnome-power-srajdu co mi nastavila 3 profily a nutila odstanit TLP.V rychlosti casu som pri update dal do prec TLP a tie gnomacke profily mam pocit ze vobec nefungovali.

      A toto je vec co ma trochu sere na linux svete, ze zrazu tu niekto nieco vymysli, a ak clovek nesleduje situaciu, tak mu odpalia custom veci.

    • RE: Spotreba laptopu s AMD Ryzen 7 PRO 5850U 02.05 | 17:13
      Avatar dusanp   Používateľ

      Moje lenovo L15 AMD Ryzen4500 má spotrebu so zavretím vekom, dokinou a externým monitorom má 5,6W.

      Správa napájania je len štandardná mag8 s KDE. Frekvencie riadi "schedutil" z distribúcie.

      • RE: Spotreba laptopu s AMD Ryzen 7 PRO 5850U 02.05 | 18:16
        Avatar dusanp   Používateľ

        Na baterku wifi a displej 35% z 250nit. 6,55W

        Na zásuvku wifi a displej 35% z 250nit. 5,5W

        ps. PCI a USB zariadenia idú na 100%