NVME stromverbrauch mainline kernel, APST



  • halli hallo,
    hat jemand schon mal versucht, den stromverbrauch der nvme zu reduzieren? falls ja und erfolgreich, wie könnte das aussehen?

    mein board komplett inkl pin64 standard nvme karte und einer wd black 250
    mit 4.20.6. Verbrauch: ca. 7,7W ca.
    mit ayufan 4.4 irgendwas: 5,9W ca.

    letzteres ist für mich aber keine option.
    Zum mainline gibt es einige informationen, stichwort apst und nvme_core.default_ps_max_latency_us. Die gab es im 4.4er noch nicht. Daher kann man das mit dem apst dort nicht auch ausprobieren, zum vergleich.

    Die nvme bietet wie folgt an:

    nvme id-ctrl /dev/nvme0
    
    ps    0 : mp:5.00W operational enlat:0 exlat:0 rrt:0 rrl:0
              rwt:0 rwl:0 idle_power:- active_power:-
    ps    1 : mp:3.50W operational enlat:0 exlat:0 rrt:1 rrl:1
              rwt:1 rwl:1 idle_power:- active_power:-
    ps    2 : mp:3.00W operational enlat:0 exlat:0 rrt:2 rrl:2
              rwt:2 rwl:2 idle_power:- active_power:-
    ps    3 : mp:0.0700W non-operational enlat:4000 exlat:10000 rrt:3 rrl:3
              rwt:3 rwl:3 idle_power:- active_power:-
    ps    4 : mp:0.0025W non-operational enlat:4000 exlat:45000 rrt:4 rrl:4
              rwt:4 rwl:4 idle_power:- active_power:-
    
    

    Sie idle-d aber anscheinend immer im ps1 rum, das könnte dann auch passen da das board allein so 4W nimmt. Und 0,07W hören sich da doch verlockend an.

    nvme get-feature -f 0x0c /dev/nvme0 -H
    
    get-feature:0xc (Autonomous Power State Transition), Current value:0x000001
    	Autonomous Power State Transition Enable (APSTE): Enabled
    	Auto PST Entries	.................
    	Entry[ 0]   
    	.................
    	Idle Time Prior to Transition (ITPT): 700 ms
    	Idle Transition Power State   (ITPS): 3
    	.................
    	Entry[ 1]   
    	.................
    	Idle Time Prior to Transition (ITPT): 700 ms
    	Idle Transition Power State   (ITPS): 3
    	.................
    	Entry[ 2]   
    	.................
    	Idle Time Prior to Transition (ITPT): 700 ms
    	Idle Transition Power State   (ITPS): 3
    
    

    Kernel boot flag hab ich wie gesagt schon gesetzt und verschiedene werte probiert plus weitere module parameter vom nvme_core. Alles nach mehreren stunden bislang ohne erfolg.

    Dank vorab
    gruß



  • Hallo @kosmonaut-pirx ,

    interessant 😉

    Ok, dann mal los.

    SYS

    • ROCKPro64 v2.1 2GB RAM
    • PCIe NVMe SSD 960 EVO
    • 16 GB SD-Karte

    System ist auf der SD-Karte, NVMe SSD nur gemountet. System ohne Last.

    4.4

    rock64@rockpro64:~$ uname -a
    Linux rockpro64 4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1 #1 SMP Mon Oct 22 20:59:41 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux
    

    Stromverbrauch: 3,62 Watt

    Da dich 4.4 nicht interessiert aktualisiere ich den jetzt auch nicht.

    4.20

    rock64@rockpro64:~$ uname -a
    Linux rockpro64 4.20.0-1083-ayufan-g686e1f1aa461 #ayufan SMP PREEMPT Sun Dec 30 13:42:26 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux
    

    Stromverbrauch: 3,5 Watt

    nvme id-ctrl /dev/nvme0
    
    ps    0 : mp:6.04W operational enlat:0 exlat:0 rrt:0 rrl:0
              rwt:0 rwl:0 idle_power:- active_power:-
    ps    1 : mp:5.09W operational enlat:0 exlat:0 rrt:1 rrl:1
              rwt:1 rwl:1 idle_power:- active_power:-
    ps    2 : mp:4.08W operational enlat:0 exlat:0 rrt:2 rrl:2
              rwt:2 rwl:2 idle_power:- active_power:-
    ps    3 : mp:0.0400W non-operational enlat:210 exlat:1500 rrt:3 rrl:3
              rwt:3 rwl:3 idle_power:- active_power:-
    ps    4 : mp:0.0050W non-operational enlat:2200 exlat:6000 rrt:4 rrl:4
              rwt:4 rwl:4 idle_power:- active_power:-
    

    Und der andere Befehl von dir

    rock64@rockpro64:~$ sudo nvme get-feature -f 0x0c /dev/nvme0 -H
    get-feature:0xc (Autonomous Power State Transition), Current value:0x000001
    	Autonomous Power State Transition Enable (APSTE): Enabled
    	Auto PST Entries	.................
    	Entry[ 0]   
    	.................
    	Idle Time Prior to Transition (ITPT): 86 ms
    	Idle Transition Power State   (ITPS): 3
    	.................
    	Entry[ 1]   
    	.................
    	Idle Time Prior to Transition (ITPT): 86 ms
    	Idle Transition Power State   (ITPS): 3
    	.................
    	Entry[ 2]   
    	.................
    	Idle Time Prior to Transition (ITPT): 86 ms
    	Idle Transition Power State   (ITPS): 3
    	.................
    	Entry[ 3]   
    	.................
    	Idle Time Prior to Transition (ITPT): 410 ms
    	Idle Transition Power State   (ITPS): 4
    	.................
    	Entry[ 4]   
    	.................
    	Idle Time Prior to Transition (ITPT): 0 ms
    	Idle Transition Power State   (ITPS): 0
    	.................
    	Entry[ 5]   
    	.................
    	Idle Time Prior to Transition (ITPT): 0 ms
    	Idle Transition Power State   (ITPS): 0
    	.................
    	Entry[ 6]   
    	.................
    	Idle Time Prior to Transition (ITPT): 0 ms
    	Idle Transition Power State   (ITPS): 0
    	.................
    	Entry[ 7]   
    	.................
    	Idle Time Prior to Transition (ITPT): 0 ms
    	Idle Transition Power State   (ITPS): 0
    	.................
    	Entry[ 8]   
    	.................
    	Idle Time Prior to Transition (ITPT): 0 ms
    	Idle Transition Power State   (ITPS): 0
    	.................
    	Entry[ 9]   
    	.................
    	Idle Time Prior to Transition (ITPT): 0 ms
    	Idle Transition Power State   (ITPS): 0
    	.................
    	Entry[10]   
    	.................
    	Idle Time Prior to Transition (ITPT): 0 ms
    	Idle Transition Power State   (ITPS): 0
    	.................
    	Entry[11]   
    	.................
    	Idle Time Prior to Transition (ITPT): 0 ms
    	Idle Transition Power State   (ITPS): 0
    	.................
    	Entry[12]   
    	.................
    	Idle Time Prior to Transition (ITPT): 0 ms
    	Idle Transition Power State   (ITPS): 0
    	.................
    	Entry[13]   
    	.................
    	Idle Time Prior to Transition (ITPT): 0 ms
    	Idle Transition Power State   (ITPS): 0
    	.................
    	Entry[14]   
    	.................
    	Idle Time Prior to Transition (ITPT): 0 ms
    	Idle Transition Power State   (ITPS): 0
    	.................
    	Entry[15]   
    	.................
    	Idle Time Prior to Transition (ITPT): 0 ms
    	Idle Transition Power State   (ITPS): 0
    	.................
    	Entry[16]   
    	.................
    	Idle Time Prior to Transition (ITPT): 0 ms
    	Idle Transition Power State   (ITPS): 0
    	.................
    	Entry[17]   
    	.................
    	Idle Time Prior to Transition (ITPT): 0 ms
    	Idle Transition Power State   (ITPS): 0
    	.................
    	Entry[18]   
    	.................
    	Idle Time Prior to Transition (ITPT): 0 ms
    	Idle Transition Power State   (ITPS): 0
    	.................
    	Entry[19]   
    	.................
    	Idle Time Prior to Transition (ITPT): 0 ms
    	Idle Transition Power State   (ITPS): 0
    	.................
    	Entry[20]   
    	.................
    	Idle Time Prior to Transition (ITPT): 0 ms
    	Idle Transition Power State   (ITPS): 0
    	.................
    	Entry[21]   
    	.................
    	Idle Time Prior to Transition (ITPT): 0 ms
    	Idle Transition Power State   (ITPS): 0
    	.................
    	Entry[22]   
    	.................
    	Idle Time Prior to Transition (ITPT): 0 ms
    	Idle Transition Power State   (ITPS): 0
    	.................
    	Entry[23]   
    	.................
    	Idle Time Prior to Transition (ITPT): 0 ms
    	Idle Transition Power State   (ITPS): 0
    	.................
    	Entry[24]   
    	.................
    	Idle Time Prior to Transition (ITPT): 0 ms
    	Idle Transition Power State   (ITPS): 0
    	.................
    	Entry[25]   
    	.................
    	Idle Time Prior to Transition (ITPT): 0 ms
    	Idle Transition Power State   (ITPS): 0
    	.................
    	Entry[26]   
    	.................
    	Idle Time Prior to Transition (ITPT): 0 ms
    	Idle Transition Power State   (ITPS): 0
    	.................
    	Entry[27]   
    	.................
    	Idle Time Prior to Transition (ITPT): 0 ms
    	Idle Transition Power State   (ITPS): 0
    	.................
    	Entry[28]   
    	.................
    	Idle Time Prior to Transition (ITPT): 0 ms
    	Idle Transition Power State   (ITPS): 0
    	.................
    	Entry[29]   
    	.................
    	Idle Time Prior to Transition (ITPT): 0 ms
    	Idle Transition Power State   (ITPS): 0
    	.................
    	Entry[30]   
    	.................
    	Idle Time Prior to Transition (ITPT): 0 ms
    	Idle Transition Power State   (ITPS): 0
    	.................
    	Entry[31]   
    	.................
    	Idle Time Prior to Transition (ITPT): 0 ms
    	Idle Transition Power State   (ITPS): 0
    

    Ob dir das hilf, weiß ich nicht. Da ich denke, das du dich mit dem Thema beschäftigt hast, hier was für dich zum Vergleichen. Vielleicht hilft es Dir!

    Als Hinweis an andere Leser, für den Befehl nvme gibt man vorher folgendes ein

    sudo apt install nvme-cli


  • halli hallo,
    danke für die vergleichswerte, das ist schon mal eine hausnummer. die derzeit leider schwer zu schlagen ist hier.

    hab weiter gesucht:
    -mein system war mit wlan-stick (so ein Netgear A6210, Mediatek 7612 oder so, alles recht neu im Kernel) nimmt mal eben 2W. Huch.
    -das ethernet begnügt sich ca. mit 0,1W, wenn verbunden
    -man kann im Kernel noch weiter an den pcie-strom-spar-einstellungen drehen (standard: vom Bios, PowerSave, PowerSuperSave, "Vollgas"). Vom Bios war immer erhöht vom Verbrauch als die Power-Modi
    -Usb-C port-extender testweise rangeklemmt, 0,2W ohne was dort dran

    für die tests habe ich den WlanStick raus. und die Werte mit verschiedenen nvme_core.default_ps_max_latency_us probiert:

    # 200: W, ohne wlan stick 5,7W
    # 5500: W, ohne wlan stick 5,7W
    # 9000: 7,6W, ohne wlan stick 5,7W
    # 10000: 6,5W, ohne wlan stick 4,7W
    # 11000: 6,6W, ohne wlan stick power super save 4,7W, bios ohne power super save 5,7W, nur powersave 4,7W
    # 12000: 6,7W, ohne wlan stick 4,7W
    # 14000: W, ohne wlan stick 4,7W
    # 15000: W, ohne wlan stick 4,7W
    # 42000: W, ohne wlan stick 4,7W
    # 44000: W, ohne wlan stick 4,7W
    # 45000: W, ohne wlan stick 5,0W
    # 50000: W, ohne wlan stick 5,0W, nur powersave 5,0W
    

    na ich lass wohl den wohltuend klingenden PowerSuperSave dauerhaft laufen

    ist ein wenig seltsam, warum über 45000 latenz wieder mehr auf der Stromleitung drauf ist.
    vielleicht werfe ich auch noch mal andere werte für nvme_core parameter an, aber große erwartungen bestehen nicht mehr. So 7W mit dem Wlan für hostapd ist aktuell auch einigermaßen akzeptabel für mich. 5W wären schick, aber ein andernmal vielleicht.

    Ach ja, kernel 4.20.7 ist released worden. Das Changelog gibt aber für nicht so viel her für das gerät. Vielleicht was mit pci, auf arm allerdings. Bischen was arm64, nichts großes denke ich so nach den quer lesen.

    Soweit
    gruß



  • falls jemand das otf (on-the-fly) ausprobieren möchte und sysfs an hat (heißt so glaub ich, ist aber default vermutlich): mit

    /sys/class/nvme/nvme0/power/pm_qos_latency_tolerance_us

    herum spielen. Wert auf 0 schreiben, dann den Wert der latenz. Siehe unten. Das beispiel unten von mir zeigt bei für mein system bspw auch den grenzwert (10000, aus dem p3 exlat, obwohl das angeblich nicht so sein sollte). bei 9999 geht das system 1W hoch, bei 10000 runter

    ps    0 : mp:5.00W operational enlat:0 exlat:0 rrt:0 rrl:0
              rwt:0 rwl:0 idle_power:- active_power:-
    ps    1 : mp:3.50W operational enlat:0 exlat:0 rrt:1 rrl:1
              rwt:1 rwl:1 idle_power:- active_power:-
    ps    2 : mp:3.00W operational enlat:0 exlat:0 rrt:2 rrl:2
              rwt:2 rwl:2 idle_power:- active_power:-
    ps    3 : mp:0.0700W non-operational enlat:4000 exlat:10000 rrt:3 rrl:3
              rwt:3 rwl:3 idle_power:- active_power:-
    ps    4 : mp:0.0025W non-operational enlat:4000 exlat:45000 rrt:4 rrl:4
              rwt:4 rwl:4 idle_power:- active_power:-
    
    echo "0" > /sys/class/nvme/nvme0/power/pm_qos_latency_tolerance_us
    echo "9999" > /sys/class/nvme/nvme0/power/pm_qos_latency_tolerance_us
    echo "0" > /sys/class/nvme/nvme0/power/pm_qos_latency_tolerance_us
    echo "10000" > /sys/class/nvme/nvme0/power/pm_qos_latency_tolerance_us
    

Log in to reply
 

Diese Artikel könnten Dich auch interessieren.

  • 4
  • 17
  • 13
  • 5
  • 5
  • 1
  • 3
  • 1