A szomszéd vár: GhostBSD CPU energiagazdálkodás

enlightened Ez az oldal a közösségért készül. heart Kövess minket máshol is:  Linux Mint Magyar Közösség a Mastodon-on  Telegram csatorna – csak hírek  Beszélgessünk a Telegram – Linux csevegő csoport  Hírek olvasása RSS segítségével  Linux Mint Hivatalos Magyar Közösség a Facebook-on      Linux Mint Baráti Kör a Facebook-on
wink Ha hasznosnak találod, és szeretnéd, hogy folytatódjon, támogasd a munkát Ko-fi vagy Paypal segítségével. laugh

Mivel még mindig nem lett kirakva a szűröm a BSD-s témákkal az oldalról, folytassuk a rendszer vizsgálatát/beállítását, mai témánk a CPU energiagazdálkodás.
FONTOS! A leírtak a saját AMD Ryzen 5 1600X procimon voltak tesztelve, tehát az írás iránymutatás, nem pedig egy "tutkóra nálad is így működik" leírás...!

GhostBSD-n powerd démon figyeli a CPU-terhelést, ezt a GhostBSD-powerd csomag szállítja, ha hiányzik telepítsd fel!

Nézz szét a BIOS-ban, hasonlókat keress:

- AMD Cool’n’Quiet/AMD PowerNow!: engedélyezve.
- Global C-state Control vagy CPU C-states: engedélyezve.
- Power Supply Idle Control: ha van, ajánlott Typical Current Idle-re állítani.

Az első lépés, hogy megállapítsuk a rendszer képességeit, nézzük a szükséges parancsokat:

sysctl dev.cpu.0.freq -> az aktuális frekvencia MHz-ben
sysctl dev.cpu.0.freq_levels -> az elérhető frekvenciaszintek és becsült fogyasztásuk
sysctl dev.cpufreq.0.freq_driver -> melyik meghajtó kezeli a skálázást
sysctl hw.acpi.cpu.cx_lowest -> a legalacsonyabb/legmélyebb engedélyezett C-state
sysctl dev.cpu.0.temperature -> aktuális hőmérséklet

Az esetemben a legjobb hír "dev.cpufreq.0.freq_driver: hwpstate0", azt jelenti, a rendszer tökéletesen felismerte a CPU-t, és az AMD saját megoldása (Cool'n'Quiet 2.0) van üzemben, a hardveres P-állapot (Hardware P-states/AMD HWP) illesztőprogram van aktív kapcsolatban.
A másik jó hír a "hw.acpi.cpu.cx_lowest: C8", a rendszer engedélyezi a C8-as mély alvóállapotot a CPU-nak, ami jelentősen csökkenti a fogyasztást és a hőt tétlenség (idle) idején.

Jöhet a dologi rész, konfiguráljuk a powerd démont, most is a központi konfigurációs állományban, az /etc/rc.conf-ban turkálunk!
A jelenlegi beállításaim:

powerd_enable="YES"
powerd_flags="-a adaptive -n adaptive -i 25 -r 85 -N"
performance_cx_lowest="Cmax"
economy_cx_lowest="Cmax"

A powerd kapcsolói:

   Kapcsoló           │ Jelentés                                          │            
  ────────────────────┼───────────────────────────────────────────────────┼
    -a mode           │ Üzemmód hálózati táplálásnál                      │          
    -b mode           │ Üzemmód akkumulátorról                            │            
    -n mode           │ Üzemmód ismeretlen táplálási állapotnál           │       
    -i percent        │ Terhelési küszöb a frekvencia csökkentéséhez      │                  
    -r percent        │ Terhelési küszöb a frekvencia növeléséhez         │                  
    -m freq           │ Minimális beállítható CPU-frekvencia              │     
    -M freq           │ Maximális beállítható CPU-frekvencia              │     
    -p ival           │ Ellenőrzési időköz ezredmásodpercben              │               
    -N                │ A nice folyamatok terhelését üresjáratként kezeli │          
    -v                │ Részletes működési üzenetek, előtérben futás      │          
    -P pidfile        │ Egyedi PID-fájl helye                             │ 
    -s source         │ Táplálási állapot lekérdezésének módja            │

Üzemmódok (-a, -b, -n paraméterekhez használható értékek):                                        

 Mód                    │ Rövidítés | Jelentés                                    
 ───────────────────────┼───────────┼─────────────────────────────────────────────
  maximum               │  max      │ Mindig a legnagyobb teljesítményre törekszik
  minimum               │  min      │ A legalacsonyabb teljesítményt választja    
  adaptive              │  adp      │ Kiegyensúlyozott teljesítmény és fogyasztás 
  hiadaptive            │  hadp     │ Gyorsabb órajelemelés, teljesítmény központúbb

Ezek fényében elemezzük a beállításaimat!

 - powerd_enable="YES"
Engedélyezi a GhostBSD beépített energiagazdálkodási démonát, amely a terhelés függvényében dinamikusan emeli vagy csökkenti a CPU órajelét.

 - powerd_flags="-a adaptive -n adaptive -i 25 -r 85 -N"
AC (hálózati) és "ismeretlen" (akár akkumulátoros) módban is az adaptív algoritmust használja. Alacsony terhelésnél (25%-os terhelés alatt) visszaveszi, és próbálja alacsonyan tartani az órajelet, magas terhelésnél (85%-os terhelés felett) azonnal maximális frekvenciára kapcsol, és igyekszik ott tartani. A Nice-szintű folyamatokat figyelmen kívül hagyja (a háttérben futó, alacsony prioritású feladatok nem emelik feleslegesen a CPU órajelet).
A hiadaptive beállítás mellett is értelmezettek az -i és -r kapcsolók, de mindenképpen agresszívebben tartja magasan az órajelet.

 - performance_cx_lowest="Cmax" és economy_cx_lowest="Cmax"
Megengedi a rendszernek, hogy a processzor a hardver által támogatott legmélyebb alvóállapotba (Cmax/C8) menjen át tétlenség idején mind teljesítmény, mind pedig energiatakarékos profil alatt.
    

AMD hőmérséklet-figyelő beüzemelése!

Teszteld:

sudo kldload amdtemp
sysctl dev.cpu.0.temperature

Ha minden rendben, véglegesítsd (/boot/loader.conf):

amdtemp_load="YES"

 

Tesztelés!

Ellenőrizd, hogy fut-e a démon, ha nem indítsd el: service powerd status, sudo service powerd start.

Nyiss két terminál ablakot, az egyikben futtasd az alábbi parancsokat:

while true; do                                                                                
        date +%H:%M:%S                                                                            
        sysctl -n dev.cpu.0.freq                                                                  
        sleep 2                                                                                   
done

Várj egy picit, majd a másik ablakba futassd: yes > /dev/null. Ha az órajel változik, győztél!

Berus

Hozzászólások

kami911 képe

Szia berus! Ha jövőben is a

Értékelés: 

0
Még nincs értékelve

Szia berus! Ha jövőben is a BSD-ről írsz, akkor ki leszel... emelve a főoldalra, ha nem azzal kezded, hogy szerinted ki leszel rakva. Köszi a cikket. A BSD-n mi az ami összehuzalozza, hogy most a powerd akku vagy hálózati üzemmódot paraméterezve fusson le, vagy a háttérben van valami busz amin még kommunikálhat?

A devd (device daemon) kezeli

Értékelés: 

0
Még nincs értékelve

A devd (device daemon) kezeli az eseményeket, ami közvetlenül beszélget a kernellel. Amikor dugdosod a tápot az ACPI jelez a kernelnek (acpi_subr.c), érzékeli az állapotváltozást. A /dev/devctl eszközön küldi a hardveres eseményeket (eszköz csatlakoztatása, leválasztása, tápellátás változása) a devd-nek, ő pedig meghívja a power_profile szkriptet a megfelelő paraméterrel.