Skip to content

NVME stromverbrauch mainline kernel, APST

Ungelöst Probleme?
  • 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
    

  • RockPro64 bootet nicht mehr von sdcard und/oder emmc

    Ungelöst Probleme?
    6
    0 Stimmen
    6 Beiträge
    204 Aufrufe
    FrankMF

    @gabs5807 Danke für das ausführliche Feedback.

    Das mit Pin 10 habe ich schon lange nicht mehr gehabt, benutze aber auch nur noch selten den SPI.

    Was wäre es doch für ein Traum, wenn man einen vernünftigen uboot hätte und man einfach ein Device anhängen könnte und die Kiste davon bootet...

    Bin aber beim ROCKPro64 auch nicht mehr auf der Höhe der Zeit, ich teste da nur noch selten.

  • RockPro64 als Backup Server

    Ungelöst Probleme?
    5
    1 Stimmen
    5 Beiträge
    307 Aufrufe
    T

    @mabs sagte in RockPro64 als Backup Server:

    Ich versteh nicht wie der PCI-E<=>NVMe Adapter im Odroid H2+ laufen soll

    Er sprach vom JMB585 im M.2-Format. 2 x SATA vom Intel-SoC plus 5 vom JMB585 macht dann 7 SATA-Anschlüsse. Der JMB585 im H2+ ist natürlich auch ausgebremst, weil Intels Gemini Lake (Refresh) auch nur PCIe Gen2 kann und so die 5 SATA-Ports des JMB585 nur hinter zwei Gen2 Lanes hängen.

  • Installationsprobleme wegen unkenntnis

    Ungelöst Probleme?
    7
    0 Stimmen
    7 Beiträge
    220 Aufrufe
    C

    @frankm
    Hallo Frank,
    ich habe mir das was ich habe mal so angeschaut und festgestellt das ich einen Avira AV Blocker aufgespielt habe von daher denke ich ich lass das Gesummse mit VPN . Hat der Anbieter 58 € Gewinn gemacht ohne Leistung , auch nicht schlecht.
    Meinen herzlichsten Dank für Deine Mühe , ist ernst gemeint !
    Der alte Mann mit dem Rocker Rollstuhl
    Uli

  • bootconsole [uart8250] disabled

    Probleme?
    24
    1 Stimmen
    24 Beiträge
    1k Aufrufe
    gabs5807G

    @gabs5807 sagte in bootconsole [uart8250] disabled:

    @FrankM sagte in bootconsole [uart8250] disabled:

    Hast Du dein Image auf das eMMC Modul installiert?

    Wenn ja, das Modul beim Booten der Images bitte abschalten.
    Vielen Dank für den Hinweis. Habe gelesen aber leider vergessen 😯.
    Werde ich machen, ich das Gehäuse noch mal öffnen muss und die SSD weil ich noch austauschen muss.
    Viele Grüße

    Das flashen des SPI hat jetzt wie beschrieben funktioniert 😊. Vielen Dank.

  • hdparm / SATA Platten spindown und Energiemanagement

    Gelöst Probleme?
    4
    0 Stimmen
    4 Beiträge
    328 Aufrufe
    FrankMF

    Sorry, das Wissen hatte ich vorausgesetzt. Aber schön, das es funktioniert.

    Dann viel Spaß mit deinem NAS 👍

  • 0 Stimmen
    27 Beiträge
    2k Aufrufe
    FrankMF

    Danke für die Rückmeldung.

    Mein NAS läuft wie gesagt schon relativ lange sehr stabil. Und es macht auch was 🙂 Es sichert z.B. dieses Forum und viele andere Seiten regelmäßig. Ansonsten dient es als mein Datengrab. Nix besonderes..

    Wenn Du nicht so komplizierte Dinge fragst, darfst du gerne neue Threads eröffnen 🙂

  • FTDI Support (ayufan Kernel 5.0)

    Ungelöst Probleme?
    8
    0 Stimmen
    8 Beiträge
    540 Aufrufe
    K

    Hi, leider habe ich bisher keine Antwort von Kamil erhalten. So habe ich selbst mal einen Kernel kompiliert. Als Vorlage habe ich den Ayufan 5.3 rc4 1118 genommen. Also gleiche config nur zusätzlich den FTDI und den CH341 (Arduino clones) Treiber hinzugefügt. Könnt ihr ja mal bei Lust und Laune testen. Für meine Zwecke funktioniert er gut.
    Gruss
    https://drive.google.com/file/d/1kJarihL7bAqN9y6tK-m1V4zHCSEiEWtf/view?usp=sharing

  • Lüftersteuerung Kernel 4.20

    Ungelöst Probleme?
    12
    0 Stimmen
    12 Beiträge
    683 Aufrufe
    T

    @Hercemania sagte in Lüftersteuerung Kernel 4.20:

    kann man so etwas automatisieren?

    Du kannst dir ein Script schreiben oder statt make install das Programm checkinstall nutzen um ein Paket zu generieren.
    Anschließend kann man es mit checkinstall installieren bzw. deinstallieren um eine aktuellere Version zu erhalten.

    Aber ich denke ein Script für

    git pull
    make
    checkinstall -D make install
    dpkg -i <paketname>

    wäre schon mit Kanonen auf Spatzen geschossen. 😃