I looked at little bit at the NVME on my local system and it advertises 6 states.
Supported Power States
St Op Max Active Idle RL RT WL WT Ent_Lat Ex_Lat
0 + 4.70W 4.30W - 0 0 0 0 0 0
1 + 3.00W 3.00W - 0 0 0 0 0 0
2 + 2.20W 2.00W - 0 0 0 0 0 0
3 - 0.0150W - - 3 3 3 3 1500 2500
4 - 0.0050W - - 4 4 4 4 10000 6000
5 - 0.0033W - - 5 5 5 5 176000 25000
However itâs also got autonomous power state transitions enabled for a bunch of the ânon-operationalâ states.
⯠sudo nvme get-feature /dev/nvme0 -f 0x0c -H
get-feature:0x0c (Autonomous Power State Transition), Current value:0x00000001
Autonomous Power State Transition Enable (APSTE): Enabled
Auto PST Entries .................
Entry[ 0]
.................
Idle Time Prior to Transition (ITPT): 100 ms
Idle Transition Power State (ITPS): 3
.................
Entry[ 1]
.................
Idle Time Prior to Transition (ITPT): 100 ms
Idle Transition Power State (ITPS): 3
.................
Entry[ 2]
.................
Idle Time Prior to Transition (ITPT): 100 ms
Idle Transition Power State (ITPS): 3
.................
Entry[ 3]
.................
Idle Time Prior to Transition (ITPT): 2000 ms
Idle Transition Power State (ITPS): 4
⯠sudo nvme get-feature /dev/nvme0 -f 2 -H
get-feature:0x02 (Power Management), Current value:00000000
Workload Hint (WH): 0 - No Workload
Power State (PS): 0
I wonder from the kernel driver perspective if there should be transitions programmed for the operational states too. If there are no latency limitations to swap states, shouldnât the drive be idling in PS2? Might be worth raising this with the NVME mailing list to find out more of their perspective.