SATA Link Power Management

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen

SATA Link Power Management (LPM) versetzt den Physical Layer (PHY) der SATA Verbindung in einen Energiesparzustand. SATA Link Power Management ist unabhängig vom Energiezustand der Festplatte oder SSD. Dieser wird auf ATA-Protokoll-Ebene gesteuert und führt bei Festplatten beispielsweise zu einem Herunterdrehen des Datenträgers, um Strom zu sparen. SATA LPM hat zu einer erheblichen Verringerung des Gesamtstromverbrauchs des SATA-Subsystems geführt, sowohl im Platform Controller Hub (SATA-Controller im Chipsatz oder CPU) als auch im SATA-Gerät selbst. Allerdings ist LPM nicht mit Hot-Plug kompatibel.

Link Power Management Zustände

Im Paper Designing Energy Efficient SATA Devices[1] von Intel werden Grundlagen des SATA Link Power Managements erläutert.

SATA Verbindungen können sich in einem von drei Power Managment States befinden:

  • Active
  • Partial (max. 10 µs Rückkehr-Latenz): Partial ist so konzipiert, dass die Stromversorgungszustandsübergänge kontinuierlich mit minimalen Auswirkungen auf die Leistung zu ermöglichen.
  • Slumber (max. 10 ms Rückkehr-Latenz): Slumber ermöglicht mit seiner längeren Rückkehrlatenz größere Energieeinsparungen. Slumber soll nur verwendet werden wenn zu erwarten ist, dass die SATA Verbindung über einen längeren Zeitraum inaktiv ist.

Host- und Device-Initiated Power Management

Das SATA Link Power Management kann in zwei Bereiche unterteilt werden:

  • Host-Initiated Link Power Management (HIPM) und
  • Device-Initiated Link Power Management (DIPM)

SATA Link Power Management erfordert die Zusammenarbeit zwischen dem Host und dem Gerät. Sowohl der Host als auch das Gerät können die Verbindung auffordern, in einen stromsparenden Zustand zu wechseln. Der entsprechende Host oder das Gerät muss die Anforderung zur Änderung des Verbindungsstatus dann annehmen oder ablehnen. Jedes dieser Verfahren bietet für sich genommen Energieeinsparungen. Die maximale Energieeinsparung wird jedoch erreicht, wenn beide Verfahren genutzt werden.

SATA LPM aktivieren

  • Windows (ab Windows 7):
    • Der Intel RST Treiber aktiviert SATA Link Power Management
    • Alternativ kann HIPM und DIPM für den Windows SATA Standardtreiber über ein Skript aktiviert werden:[2][3]
    • Standardmäßig aktiviert Microsoft’s in-box SATA Treiber (StorAHCI) "HIPM-only"[4][5][6]
  • Linux:
    • Aktivierung zur Laufzeit (hier im Beispiel für den SATA Controller host0):
      # echo "med_power_with_dipm" > /sys/class/scsi_host/host0/link_power_management_policy
    • Für eine automatische Aktivierung bereits beim Startvorgang sind zwei Voraussetzungen zu erfüllen:
      1. Es muss der entsprechende SATA Controller im Linux Quellcode in der Tabelle pci_device_id ahci_pci_tbl[7] als board_ahci_low_power[8] deklariert sein.
      2. Die SATA Link Power Management Policy muss auf "3 - Medium power with Device Initiated PM enabled" gestellt sein.[9] Dies ist auf zwei Arten möglich:
        • Kernel Compile Parameter CONFIG_SATA_MOBILE_LPM_POLICY=3
        • Kernel-Bootparameter ahci.mobile_lpm_policy=3
  • FreeBSD / OPNsense:

Hot-Plug Einschränkungen

Aktiviertes Link Power Management versetzt die SATA-Verbindung in einen neutralen logischen Zustand. Da sich die Signalleitungen in einem neutralen logischen Zustand befinden, ist es für einen AHCI-Host-Controller unmöglich zu erkennen, wenn ein SATA Gerät vom Bus entfernt wurde.

Bei Server-Systemen mit Backplane und SATA-Hot-Plugging Support soll für zuverlässiges Hot-Plug das SATA Link Power Management daher deaktiviert sein.[10] Siehe dazu auch AMD EPYC Server mit Ubuntu - SATA Hot-Swap aktivieren.

Beispiel LES v4

Testaufbau mit einem LES v4. Beispiel zeigt Betrieb ohne SATA LPM.

Das folgende Beispiel eines LES v4 (Elkhart Lake J6412 CPU) zeigt mögliche Energie-Einsparungen und Temperatur-Reduktionen durch aktiviertes SATA Link Power Management.

Es kommt dabei folgende Konfiguration zum Einsatz:

  • BIOS Version: Date 11/21/2022
  • RAM: 4 GB ATP DDR4-3200 S0-DIMM (X4G04QC6BNWEMO-7-TO1)
  • Headless-Betrieb (kein angeschlossener Monitor, Tastatur, Maus) mit einer aktiven NIC (1 Gbit/s)
  • OS: Debian 12 (ohne Desktop/GNOME, mit OpenSSH Server) mit Linux Kernel 6.1.0-9-amd64 (Debian 6.1.27-1 2023-05-08)
SSD max_performance med_power_with_dipm Difference
Manufacturer Family Model Capacity

[GB]

Controller Firmware Idle Power

[Watt]

Temp 1[note 1]

[°C]

Temp 2[note 2]

[°C]

Idle Power

[Watt]

Temp 1

[°C]

Temp 2

[°C]

Idle Power

[Watt]

Temp 1

[°C]

Temp 2

[°C]

ATP A600Sc AF120GSTIC-T22 (M.2 2280) 120 Silicon Motion SM2259H T0205B 8.0 - 8.3 56 74 6.2 - 6.6 44 44 ~ 1.8 12 30
AF120GSTCJ-T22 (2.5") 7.7 - 8.4 42 52 6.1 - 7.1 36 36 ~ 1.6 6 16
AF480GSTIA-T22 (M.2 2242) 480 7.9 - 8.5 66 67 6.2 - 6.6 46 46 ~ 1.8 20 21
A600Vc AF128GSTIC-TM2 (M.2) 128 Phison PS3111-S11-13 SBFMT1.3 7.4 - 8.0 33 - 5.8 - 6.6 33 - ~ 1.4 0 -
Intel / Solidigm D3-S4520 SSDSC2KB240GZ 240 7CV10111 8.5 - 9.3 56 - 8.5 - 9.3 53 - 0 0 - 3 -
Samsung 850 PRO MZ-7KE512BW 512 Samsung MEX S4LN045X01-803 EXM04B6Q 7.5 - 7.9 41 - 6.0 - 6.9 34 - ~ 1.3 6 -
PM893 MZ7L3240HCHQ-00A07 240 Samsung JXTC304Q 8.6 - 9.7 55 - 8.6 - 9.7 55 - 0 0 -

Ambient temperature: 22.8 - 25.3 °C

Anmerkung: beim Einsatz eines 16 GB RAM Moduls (ATP X4G16QA8BVWESO-7-TO1) statt dem oben angeführten 4 GB RAM Modul steigt die Leistungsaufnahme im Idle-Betrieb um ca. 0,2 - 0,3 Watt.

Fußnoten:

  1. Temperatur der SSD, SATA Attribut ID 190 und/oder 194
  2. Temperatur des SATA Controller Chips auf der SSD, SATA Attribute ID 231

Ändern der Einstellung zur Laufzeit

Da der SATA controller (Intel Corporation Elkhart Lake SATA AHCI [8086:4b63]) in ahci.c bis Linux Kernel Version 6.5 nicht als board_ahci_low_power deklariert ist, wurde SATA Link Power Management bei den Tests zur Laufzeit aktiviert:

# echo "med_power_with_dipm" > /sys/class/scsi_host/host0/link_power_management_policy

Kernel Support

Ab Linux Kernel Version 6.6 ist der SATA controller (Intel Corporation Elkhart Lake SATA AHCI [8086:4b63]) als board_ahci_low_power deklariert.[11][12] Via Linux LTS Kernel wurde der Patch ebenso in folgende Subreleases integriert:

Kernel Version Patch inkludiert ab Patch
6.6 6.6-rc1 commit
6.5 6.5.4 commit
6.1 6.1.54 commit
5.15 5.15.134 commit
5.10 Patch in Queue

Einzelnachweise

  1. Designing Energy Efficient SATA Devices - Overview and Implementation Recommendations (www.intel.com, April 2011)
  2. Tipps & Tricks - Intel-RST- oder MS-AHCI-Treiber für SATA? (c't 24/2016)
  3. Link power management mode - HIPM/DIPM (learn.microsoft.com)
  4. SATA/AHCI (learn.microsoft.com) By default, HIPM-only is enabled and StorAHCI manages Partial to Slumber transitions.
  5. Link power management mode - HIPM/DIPM (learn.microsoft.com)
  6. What do HIPM/DIPM modes means in AHCI link power management settings? (answers.microsoft.com)
  7. drivers/ata/ahci.c - pci_device_id ahci_pci_tbl (git.kernel.org - Kernel 6.1)
  8. drivers/ata/ahci.c - board_ahci_low_power (git.kernel.org - Kernel 6.1)
  9. drivers/ata/Kconfig - SATA_MOBILE_LPM_POLICY (git.kernel.org - Kernel 6.1)
  10. Serial ATA Advanced Host Controller Interface (AHCI) Revision 1.1 (www.intel.com) 7.3.1.1 Software Flow for Hot Plug Removal Detection - To reliably detect hot plug removals, software must disable interface power management.
  11. (PATCH v2) ata: ahci: Add Elkhart Lake AHCI controller (linux-ide Mailing List, Werner Fischer, 29.08.2023)
  12. (GIT PULL) ata changes for 6.6-rc1 (linux-ide Mailing List, Damien Le Moal, 05.09.2023)


Foto Werner Fischer.jpg

Autor: Werner Fischer

Werner Fischer arbeitet im Product Management Team von Thomas-Krenn. Er evaluiert dabei neueste Technologien und teilt sein Wissen in Fachartikeln, bei Konferenzen und im Thomas-Krenn Wiki. Bereits 2005 - ein Jahr nach seinem Abschluss des Studiums zu Computer- und Mediensicherheit an der FH Hagenberg - heuerte er beim bayerischen Server-Hersteller an. Als Öffi-Fan nutzt er gerne Bus & Bahn und genießt seinen morgendlichen Spaziergang ins Büro.


Das könnte Sie auch interessieren

Boot Error Record Table (BERT)
Intel Prozessoren von Thomas-Krenn-LES Systemen
Supermicro Mainboards OnBoard SATA RAID aktivieren