Zapnutí úsporných režimů pro NVMe

Re:Zapnutí úsporných režimů pro NVMe
« Odpověď #30 kdy: 07. 10. 2025, 14:06:46 »
Tak jsem dělal nějaké pokusy na N100 Radxa x4:

ASPM:
Další věc: správné zaklínadlo je setpci  -s 03: 0x??=0x43 ...kde ??  se vypočte funny způsobem... 
setpci -s 3: 0x90.b=0x43 a setpci -s 1d.0 0x50.b=0x43
ale nemají se provést nejaké resety?

Toto je správně vyzaklínačované. Já tam mám ještě síťovku a WiFi, takže pro všechny tři karty je to pak takto:

Kód: [Vybrat]
setpci -s 00:1c.0 0x50.B=0x43
setpci -s 00:1c.6 0x50.B=0x43
setpci -s 00:1d.0 0x50.B=0x43

setpci -s 01:00.0 0x80.B=0x43
setpci -s 02:00.0 0xb0.B=0x43
setpci -s 03:00.0 0x90.B=0x43

Potom to ukazuje všude L0s a L1 zapnuté

Kód: [Vybrat]
# lspci -vv | grep LnkCtl | grep ASPM
                LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes, Disabled- CommClk+
                LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes, Disabled- CommClk+
                LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes, Disabled- CommClk+
                LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes, Disabled- CommClk+
                LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes, Disabled- CommClk+
                LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes, Disabled- CommClk+

Až sem dobrý. Teď jdu do biosu, dám defaults, udělám tyto setpci, ASPM je L0s L1 všude, ale NVMe má stejně 66C :( Když zatopím CPU tak i 80C.

Ta volba v biosu, co je potřeba zapnout mám pod CHIPSET > PCH-IO > PCI-EXPRESS CONFIGURATION > PCI EXPRESS ROOT PORT 9 > ASPM



default je DISABLED. Dobře, dám L1 a NVMe má 27C  :)

Podívám se na rozdíl mezi lspci -xxx před a po zapnutí této volby a výsledek je, že je potřeba udělat:

Kód: [Vybrat]
setpci -s 00:1d.0 0x4d.B=0x48
Původní defaultní hodnota je 0x40. No, akorát zrovna na tuhle pozici nejde zapsat!  :o Asi je to RO? Takže to nejde. A proto asi nefunguje ani pcie_aspm=force?

Někdo ví, jak zapsat setpci do RO?


Ještě zajímavost, když pustím autoaspm.py (někdo tu zmiňoval) tak mi to vypne čtyři L0s. L1 nechá zapnuté. L1 je stejně důležitější.

Kód: [Vybrat]
# lspci -vv | grep ASPM | grep LnkCtl
                LnkCtl: ASPM L1 Enabled; RCB 64 bytes, Disabled- CommClk+
                LnkCtl: ASPM L1 Enabled; RCB 64 bytes, Disabled- CommClk+
                LnkCtl: ASPM L1 Enabled; RCB 64 bytes, Disabled- CommClk+
                LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes, Disabled- CommClk+
                LnkCtl: ASPM L1 Enabled; RCB 64 bytes, Disabled- CommClk+
                LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes, Disabled- CommClk+
« Poslední změna: 07. 10. 2025, 14:11:24 od Jan Fikar »


Re:Zapnutí úsporných režimů pro NVMe
« Odpověď #31 kdy: 07. 10. 2025, 14:48:17 »
Toto by možná mohlo fungovat jak pro N100 tak pro Ryzen?

https://z8.re/blog/aspm.html

Pán před grubem v UEFI pustí ASPMEnabler.efi. Ten vezme tu:

https://github.com/Jamesits/S0ixEnabler

Nebo spíš tu:

https://github.com/Bootlessjam/ASPM-Tool

Re:Zapnutí úsporných režimů pro NVMe
« Odpověď #32 kdy: 07. 10. 2025, 15:01:16 »
Heh, to jsem četl před týdnem. Možná je právě to vysvětlení mnohem jednodušší, že disk neumí APST. Zatím jiný disk jsem tam nezkoušel= nedostal jsem se k vyzkoušení jiných OS

Mimochodem dá se nějak softwarově poznat(podle parametru, nebo podle chování feromonogolicky), jestli disk má pseudo SLC cache (kromě LInuxu i na widnows, jako jsem se ptal i pro id-ctrl, *et-feature) ?

Re:Zapnutí úsporných režimů pro NVMe
« Odpověď #33 kdy: 07. 10. 2025, 15:21:06 »
V tom mým N100 to dělají všechny disky, co jsem zkoušel.

Teď ten aktuální disk možná taky nemá APST:

Kód: [Vybrat]
# nvme get-feature /dev/nvme0 -f 0xc -H
NVMe status: Invalid Field in Command: A reserved coded value or an unsupported value in a defined field(0x2002)

A když nabootuju s nvme_core.default_ps_max_latency_us=0, což má APST vypnout, tak teplota stále 27C.

Takže problém je s ASPM ne s APST.

Re:Zapnutí úsporných režimů pro NVMe
« Odpověď #34 kdy: 07. 10. 2025, 15:35:13 »
Aha, utekl mi jeden příspěvek. Teď koukám podle 1.d0. to je pcie root port #9 na radxa x4 N100 a disk je 03:00 (neplést . a : )... Ale já na radxa v biosu nemám  volbu chipset... ...  Ty pokusy jsi dělal na Radxa nebo jiném PC( Asrock)?

Začínám tomu přestávat (chtít) rozumět... Ale dokud asi nezkusím víc disků , více OS a disk na jiných PC, asi stejně se nedozvim, kde je zakopaný Watt.

acemagic-w1-mini-pc Prosím, nesmějte se mi, je to tak, jak to je. Ale říkám si, že o tom asi napíšu článek sem na root.
Možná rozumím, že si musel brát něco z číny. Je snad nějaká evropská značka, kterýá něco takového vyrábí a nestojí to 25000? Beelink, asome... Mají i české zastoupení, ale ta cena...



Re:Zapnutí úsporných režimů pro NVMe
« Odpověď #35 kdy: 07. 10. 2025, 16:13:28 »
Jo, to je Radxa x4 N100 a konkrétně tento bios:

Radxa X4 custom BIOS V002 T: supports IBECC option and hidden option enablement

https://docs.radxa.com/en/x/x4/bios/update-bios

Tak to tam dej, zapni v biosu a pojede to.

Novější bios jsem nezkoušel, tady ten má In-Band-ECC pro LPDDR5.

Re:Zapnutí úsporných režimů pro NVMe
« Odpověď #36 kdy: 08. 10. 2025, 00:16:32 »
Díky moc, zapnutí APSM v novém BIOsu je přesně ono, co jsem potřeboval.   APST holt se musí dělat ručně přes while : nvme set-feature 0x02=3 nvme0; sleep 5s;
(Debilní windows nejsou schopné namountovat EFI partition na přes diskpart assign letter=u, jen pokud jde o USB disk, u interního to jde, nakonec jsem to zkopíroval na NASu  8) , )

Disk má teploty 35°/50°C (flash/phison) , s set-feature 0x02=3 každých 5s  o 5° méně.  Spotřeba klesla o 0.8W. Je šílené, že  tak malý rozdíl  energie udělá 30°C rozdíl teplot.  To je asi tou plochou/objemem.

(Ale zůstává jedna záhada, která mi pije krev pořád : ) Nefunguje to hned od začátku spuštění nebo restartu. Musím ten pošahaný disk do toho nějak ručně dostrkat  po loginu, funguje nějaká kombinace setpci (bez rovnítka dokonce pro 03:0 nebo 1.d nebo set-feature 2(možná  až napodesátý:???) nebo odpojení síťovky)). nevím. záhada.



Nepomohlo dát ani do /etc rc.local skript který ručně prostřídá stavy  :
setpci 90.b  setpci 50.b.   0x02=1 ,  0x02=2 ,  0x02=3  setpci 90.b  setpci 50.b , 0x02=3
to funguje zhruba v 50% případů, ale jindy veseledisk má 75°C.  Zkoušel sjem i ASPM pro sousední porty 4 a 7 (wifi,nic),


Každopádně to není zásadní problém, když ten disk jednou konečně přestane topit, tak už je to napořád=do restartu/vypnutí
Taky jsem si všiml, že integrovaná wifi byla (ta ploška u antén) bývala horká, kdy pc startoval bez disku. možná ohřívá nvme zespoda... To zase vymyslel nějaký génius dát tyhle 2 věci pod sebe... když nefunguje powermanagement.
« Poslední změna: 08. 10. 2025, 00:23:53 od Ħαℓ₸℮ℵ ␏⫢ ⦚ »

Re:Zapnutí úsporných režimů pro NVMe
« Odpověď #37 kdy: 08. 10. 2025, 08:31:18 »
Nepomohlo dát ani do /etc rc.local skript který ručně prostřídá stavy  :
Nepomohlo by udělat skript v /usr/local/bin/<soubor.service>, který na pozadí spouští váš skript a nechat OS, ať tuto službu nastartuje?
sudo systemctl restart <soubor.service>


Re:Zapnutí úsporných režimů pro NVMe
« Odpověď #38 kdy: 08. 10. 2025, 13:04:34 »
(Ale zůstává jedna záhada, která mi pije krev pořád : ) Nefunguje to hned od začátku spuštění nebo restartu. Musím ten pošahaný disk do toho nějak ručně dostrkat  po loginu, funguje nějaká kombinace setpci (bez rovnítka dokonce pro 03:0 nebo 1.d nebo set-feature 2(možná  až napodesátý:???) nebo odpojení síťovky)). nevím. záhada.

To nevím, mi disk jede studený hned, teda on se při startu trochu ohřeje, ale nic nedělám, kromě toho nastavení v biosu a po čase klesne na 26C.

Toto naopak u mýho disku nic nedělá, asi nepodporuje APST
Kód: [Vybrat]
# nvme set-feature /dev/nvme0 -f 0x02=3;nvme get-feature /dev/nvme0 -f 0x02
set-feature:0x02 (Power Management), value:00000000, cdw12:00000000, save:0
get-feature:0x02 (Power Management), Current value:00000000

V tom biosu jde ještě zapnout ASPM v Chipset > PCH-IO Configuration > PCI Express Configuration > DMI Link ASPM Control = L0sL1

A taky Chipset > System Agent (SA) Configuration > PCI Express Configuration > PCI Express Root Port 1, 2, 3 > ASPM = L0sL1

Ale to nevím, jaký to má vliv, podle všeho to ani není PCIe, ale používá se na USB/SATA/UFS.

Ve fóru říkali zapnout C states v Advanced > Power & Performance > CPU - Power Management Control > C states

Na stejném místě je i Platform PL1 EnablePlatform PL1 Power = 12500, což nastaví PL1 z 6W na 12.5W a procesor může dlouhodobě dosahovat větších frekvencí. Záleží pak na chlazení. Mi jedou 4 jádra na 2.9 GHz.

To PL1 jde udělat i v /etc/rc.local
Kód: [Vybrat]
echo 12500000 > /sys/devices/virtual/powercap/intel-rapl/intel-rapl:0/constraint_0_power_limit_uw

Re:Zapnutí úsporných režimů pro NVMe
« Odpověď #39 kdy: 08. 10. 2025, 14:34:50 »
Správná syntaxe je nvme set-feature -f 0x02 -V X /dev/nvme0 (ať žije roztříštěnost příkazů a zápisů linuxu   !!! yaml, ini, sysctl.conf, ) a připomenu, že se  hodnota X={0,1,2} si to pamatuje ale X=3 to nechá pár sekund. (Díky APSM už tohle periodicky nastavovat už má jenom minimální rozdíl 5°C) .  Napadá mě ještě že ta neurčitost faktického přechodu to netopivého režimu jde může záviset, že se čeká na neaktivitu procesoru nebo disku a že díky volbě pouze L1 (0x42 že by?) místo L0s L1  se ASPM zapne z jednoho směru ... Nevím jestli je to analogie windows DIPM&HIPM pro SATA (Device/Host Initiated Powe management) Každopádně ten update biosu problém to přehřívání  skoro vymýtil, jen musím pohlídat, aby to po zapnutí fakt netopilo. Jen je záhada, že v 50% to hned jde od spuštění a jindy ne a v tom případě záhadně když se v tom začnu vrtat, to začne jít-

hodí se:
watch -n 4 'cat /sys/class/hwmon/hwmon1/*input | tail -n 3 | sed -E "s/(.).0\$/.\1/" '


Co jsem přišel, /sys/module/pcie_apsm/parameters/policy hodnota performance okamžitě začne zvedat teploty, to je podle mě ekvivalent  Vypnuto pro "úsporů energie pcie express" Na windows. možná echo default > policy, echo  powersave > policy podruhé by mohlo pomoc. (Samozřejmě že v grub mám .policy=powersave)



(mimochodem to množství voleb BIOSu mě ohromilo, ale v Chipset by se asi nemělo nic bezhlavě měnit, když neznám mechanismus reset biosu nastavení pro Radxa, možná hrozí i bricknutí.)

S TDP a výkonem jsem si moc nehrál, Navíc nastavení TDP mi tam připadá nepřehledné, asi na 3 místech. Překvapilo mě jen, že C-states jsou vypnuté a funguje to OK.   S přehříváním CPU zatím problém není, když tam nic neprovozuju.

MImochodem co je STAPM limit a PPT limit? (to je spíš z AMD)

Citace
/etc/rc.local
Vždyť to mám, obsahuje to náhodný balík příkazů z té množiny setpci 3:0, setpci 1.d , set-feature proložený sleep , celé obalené v ( ) > /dev/null. Je to takové horkou jehlou dělané... a šance je 50% na 50% že po spuštění nebo restartu to zabere nebo ne... nezkoušel jsem třeba jestli sám po 10 minutách  začne šetřit.  On ten nárůst a pokles teplot z horkého do normálního stavu samovolně, bez proudu vzduchu je věc řádu minut, možná 5 minut trvá přecho 35/50   --- 65/80.
« Poslední změna: 08. 10. 2025, 14:44:10 od Ħαℓ₸℮ℵ ␏⫢ ⦚ »

Re:Zapnutí úsporných režimů pro NVMe
« Odpověď #40 kdy: 09. 10. 2025, 09:12:03 »
Aha, jasně, ten správný syntax funguje:

Kód: [Vybrat]
# nvme set-feature -f 0x02 -V 3 /dev/nvme0
set-feature:0x02 (Power Management), value:0x00000003, cdw12:00000000, save:0                                                                                                                                                                 # nvme get-feature -f 0x02 /dev/nvme0                                                                                                                                                                                      get-feature:0x02 (Power Management), Current value:0x00000003

Hodnotu to drží, ale jen po dobu, než se z nvme čte, pak se zase vynuluje. Já mám systém dočasně na SD kartě v USB, tak na nvme nemusím sahat, jen když chci. Takže asi každý přístup to nuluje.

Teploty před:
Kód: [Vybrat]
nvme-pci-0300
Adapter: PCI adapter
Composite:    +27.9°C  (low  =  -0.1°C, high = +78.8°C)
                       (crit = +84.8°C)
Sensor 1:     +28.9°C  (low  =  -0.1°C, high = +78.8°C)
Sensor 2:     +53.9°C  (low  =  -0.1°C, high = +78.8°C)
Sensor 8:     +44.9°C  (low  =  -0.1°C, high = +78.8°C)
Teploty po:
Kód: [Vybrat]
nvme-pci-0300
Adapter: PCI adapter
Composite:    +11.8°C  (low  =  -0.1°C, high = +78.8°C)
                       (crit = +84.8°C)
Sensor 1:     +11.8°C  (low  =  -0.1°C, high = +78.8°C)
Sensor 2:     +35.9°C  (low  =  -0.1°C, high = +78.8°C)
Sensor 8:     +32.9°C  (low  =  -0.1°C, high = +78.8°C)

Ta první teplota je blbost, takovou zimu tu nemám. Vypadá to skoro jako by se řadič na nvme vypnul?

Ten C State prý souvisí s ASPM. Říkali teda, že pokud není ASPM, tak CPU nepadá do těch hlubokých C. Ale možná to funguje i opačně. Každopádně já to mám oproti defaultu zapnuté.

Re:Zapnutí úsporných režimů pro NVMe
« Odpověď #41 kdy: 09. 10. 2025, 13:37:22 »
A ještě ASPM policy v Linuxu mám:

Kód: [Vybrat]
$ cat /sys/module/pcie_aspm/parameters/policy
default performance [powersave] powersupersave

Dá se použít i powersupersave. Někdy to sníží rychlost nvme, ale na tom Rock x4 se mi zdá, že ne.

Re:Zapnutí úsporných režimů pro NVMe
« Odpověď #42 kdy: 10. 10. 2025, 23:38:41 »
Jo, parametr policy je důležitý, nesmí to být performance.
Třeba mě překvapilo že v  "cat /sys/class/block/nvme/device/device/link/*" mám nula zakončenou jedničkou ( 0 0 0 ... 1)   myslím že jde o nějaké flagy podpor L1_substavů krát suffix pcipm a aspm
Zkoušel jsem všeljaké věci nastavit:
-v BIOSu jen povolit L1.1 (bez L1.2) ... to jen sníží z 00001 na 001
- volbu nvme.noacpi=1
- v BIOsu snížit na gen2
- v BIOSu zakázat pcie "AER" pro daný slot

Skoro podezřívám, že ten disk má  kurvítko bug že powermanagement začne fungovat až po tom co překročí kritickou teplotu.(který nemusí být ta čitelná z id-ctrl warnint-tempature/cricial-temperature).  A nebo 2) že se nějaký parametr musí nastavit zrovna když neprobíhá žádná aktivita, že souběh nějakých podmínek až teprv aktivuje to úsporné chování. To by odpovídal tomu, že  až po nějaké době po zapnutí začně jít správně power management, někdy 2 minuty někdy 8 minut. V dmesg samozřejmě absolutně nic není

Zároveň mám ale podezření, že ten disk začne topit někdy během bootu, ... Na to bych ale potřeboval věcičku typu M.2 tester ::), podobně jako jsou USB-testery pro měření proudu (ten mám pro vstupní napájení).  A zároveň otestovat jiné kombinace hw a OS. Zatím mám spíš oběřené, že disk na jiném počítači s windows topí taky. (v tu dobu jsem ještě nevěděl  že to funkční ASPM začne jít až po nějaké době), takže výsledky opět bez nějaké vypovídající hodnoty.

C-states jsem zapnul (současně  ASPM=L1 ro ethernet a wifi na obou PCIE 4 a 7)

Re:Zapnutí úsporných režimů pro NVMe
« Odpověď #43 kdy: 10. 10. 2025, 23:54:42 »
+ ještě s ys/module/nvme_core/parameters/default_ps_max_latency_us zvýšeno na 300000 z 100000, protože jsem si všiml, že
 PortCommonModeRestoreTime=10us
PortTPowerOnTime=300us
1SubCtl2: T_PwrOn=300us

CPU

  • *****
  • 1 173
    • Zobrazit profil
    • E-mail
Re:Zapnutí úsporných režimů pro NVMe
« Odpověď #44 kdy: 11. 10. 2025, 09:16:39 »
Tolik dřiny kvůli rozbité věci, kdyby to alespoň spělo do stavu, že to půjde vyreportovat a vyřešit pro n-typů NVMe disků a zlepšit život hromadě lidí. Jestli práce zde vynaložená už dávno nepřekročila cenu disku...