libnvme(9)
π
libnvme(9) β struct nvme_id_psd π
okay bestie, buckle up, because this is a page from the API Manual for libnvme, and today's main character is the Power Management data structure. yes, that one. it's giving "the receipt for how much juice your SSD slurps in each power state" and honestly? kind of iconic. β¨
πΈ NAME πΈ
struct nvme_id_psd β Power Management data structure π«Ά
β¨ SYNOPSIS β¨
struct nvme_id_psd {
__le16 mp;
__u8 rsvd2;
__u8 flags;
__le32 enlat;
__le32 exlat;
__u8 rrt;
__u8 rrl;
__u8 rwt;
__u8 rwl;
__le16 idlp;
__u8 ips;
__u8 rsvd19;
__le16 actp;
__u8 apws;
__u8 epfrt;
__u8 fqvt;
__u8 epfvt;
__u8 epfr_fqv_ts;
__u8 epfvts;
__u8 mbw;
__u8 mbws;
__le16 miiell;
};
twenty-two fields, one struct, zero chill. let's go through them one by one because literally every single one matters π
π Members π
π the power-y ones
mpβ Maximum Power, aka the sustained max power this NVM subsystem eats in this power state. the Watts are the value in this field times whatever scale the Max Power Scale bit says (peepenum nvme_psd_flags). and a value of0means Maximum Power is not reported β it's a shrug, not a zero. πrsvd2β Reserved. nothing to see here, moving on β¨flagsβ extra decoding flags, go look atenum nvme_psd_flagsiykykenlatβ Entry Latency: the max latency, in microseconds, to get into this power state.0means it's not reported π¦exlatβ Exit Latency: the max latency, in microseconds, to get out of this power state.0means not reported either π
π the relative-rank girlies
rrtβ Relative Read Throughput: the read throughput rank of this power state compared to the others. the value here is less than the number of supported power states β always, no cap.rrlβ Relative Read Latency: the read latency rank of this power state relative to the rest. again, value is less than the number of supported power states.rwtβ Relative Write Throughput: the write throughput rank versus the other power states. value is less than the number of supported power states.rwlβ Relative Write Latency: the write latency rank versus the other power states. value is less than the number of supported power states.
they're all just little ranking besties, four of them, ranked, relative, less than the number of supported power states. periodt. π
π¦ the idle / active power section
idlpβ Idle Power: the typical power the NVM subsystem consumes over 30 seconds in this power state while idle. cozy.ipsβ Idle Power Scale: the scale forstruct nvme_id_psd.idlp. checkenum nvme_psd_psto decode this field π₯rsvd19β Reserved again. we love a filler byte πΈactpβ Active Power: the largest average power the NVM subsystem consumes over a 10 second period in this power state, with the workload set by the Active Power Workload field. busy girl energy.apwsβ this one's a two-for-one, bestie:- Bits 7-6: Active Power Scale (APS) β the scale for
struct nvme_id_psd.actp, decode it withenum nvme_psd_ps - Bits 2-0: Active Power Workload (APW) β which workload was used to calculate max power for this power state, decode with
enum nvme_psd_workloadβ
- Bits 7-6: Active Power Scale (APS) β the scale for
π§ emergency power fail vault time squad
epfrtβ Emergency power fail recovery timefqvtβ Forced quiescence vault timeepfvtβ Emergency power fail vault timeepfr_fqv_tsβ scales for the above, packed together:- Bits 7-4: Forced quiescence vault time scale
- Bits 3-0: Emergency power fail recovery time scale
epfvtsβ Bits 3-0: Emergency power fail vault time scale
okay so these are the "when the lights go out, save the data to the vault" fields and they're lowkey the most dramatic part of the struct π
π bandwidth & latency limits
mbwβ Max Bandwidth: the max bandwidth attainable in this power state when you submit MDTS-length sequential read commands at a queue depth of the Optimal Aggregated Queue Depth field. the bandwidth is the value in this field multiplied by the scale in the Max Bandwidth Scale field. a value of0means no maximum bandwidth is reported. slay.mbwsβ Bits 2-0: Max Bandwidth Scale (MBWS), the scale forstruct nvme_id_psd.mbw. decode it withenum nvme_psd_mbwsπ«miiellβ Minimum Idle I/O Exit Latency Limit. here's the tea: if the Idle I/O Exit Latency Limit capability is supported (that'senum nvme_id_ctrl_ctratt.NVME_CTRL_CTRATT_IIELLSS) for this operational power state, then a non-zero value means the minimum supported Idle I/O Exit Latency Limit in units of 100 microseconds, and a value of0hmeans there's no minimum. it gets cleared to0hfor a non-operational power state, or if the capability isn't supported at all. π«Ά
π friendly reminder bestie: those0and0hvalues aren't always "zero" β a lot of them literally mean "not reported" or "not supported". read the field, not just the number π
and that's the whole struct, every field, not a single one skipped, we ate and left no crumbs π β¨
this page came from the API Manual, struct nvme_id_psd, dated October 2026 β see you in the next power state, bestie π¦ππ
π¦ where this page comes from
- arch rolling: nvme-cli 3.2-1 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms