NVMe Endurance Groups: Health Information, Pending Events and Notification Settings
00.01.Different storage groups in one device can have different endurance and health conditions. Endurance Group Information reports one group’s warnings, traffic and capacity; Event Aggregate lists groups requiring attention. This report connects per-group FID 18h settings to both logs, following a notification to the relevant data and distinguishing acknowledgement from recovery.
- Endurance Group
- A collection of capacity managed together for endurance, potentially allocated to zero or more NVM Sets.
- FID
- Feature Identifier; selects the feature queried or configured by Get/Set Features.
The main ideas
Storage scope and health
01-01Establish Group, Set and namespace membership, then interpret warnings and wear estimates without treating one group as the whole device.
- namespace
- Logical storage addressed by the host using an NSID.
Units and uncertainty
02-01Traffic, command counts and capacity use different units. Work through rounding and zero-as-not-reported before drawing numerical conclusions.
From configuration to a pending list
03-01Select warnings per group, then examine ordering and transfer length. Identifiers, entry numbers and byte positions are distinct.
- entry
- One list record; each LID0Fh entry contains a two-byte group identifier.
Notification and acknowledgement
04-01Follow an AER completion to the aggregate list and individual data. Distinguish notice clearing, entry removal and recovery from the underlying condition.
- AER
- Asynchronous Event Request; a host-posted command completed by the controller to report an event.
00.02.Assumes operating systems, computer organization and basic SSD knowledge. Group identifiers, warning values and traffic figures are illustrative, not measurements from a particular device.
00.03.Interpret the data first, then follow the notification sequence. Necessary Get Log Page, Get/Set Features and AER fields are explained locally.
Connecting the main ideas
00.04.One scenario connects the report: group 7 has 8% available spare against a 10% threshold, plus degraded reliability. Identify the state bits, the reporting mask, how the list selects group 7 and which read acknowledges that group’s event.
- mask
- A bit mask that selects individual conditions, including several at once.
00.05.Health data supplies current state and cumulative statistics; events prompt timely inspection. Current data is not a complete historical snapshot, and acknowledging an event does not repair media.
01 Establish which storage group is being observed
- Host
- The system running the operating system and issuing NVMe commands.
- LSI
- Log Specific Identifier; LID09h uses it to select ENDGID.
01.01.LID 09h returns 512 bytes for one Endurance Group. LID 0Fh lists group identifiers with pending events. FID 18h selects warnings per group. They answer, respectively, what the group reports now, which groups need attention and which conditions should add a list entry.
- LID
- Log Page Identifier; selects which log format Get Log Page returns.
Sources: Base 2.4 §5.2.13.1.10, 5.2.13.1.15, 5.2.30.1.17
Source: NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.10, 5.2.13.1.15, 5.2.30.1.17, printed pages 237-239,270,478, PDF pages 263-265,296,504
02 Read current warnings without treating estimated wear as failure
| Observation | Interpretation | Not established |
|---|---|---|
| bit0=1; AVSP8 < AVSPT10 | Spare below threshold | Only 8% of life remains |
| bit2=1 | Group reliability degraded | Every other group is affected |
| bit3=0 | No group-wide read-only warning here | Every namespace must be writable |
| PUSED=103 | More than 100% estimated endurance used | Media failure or negative free capacity |
- PUSED
- Percentage Used; a vendor estimate of group life consumed.
- EGCW
- Endurance Group Critical Warning(s); warning state in the log, but a reporting-selection mask in FID18h.
02.01.EGCW in LID 09h describes warnings when Get Log Page is processed, which may differ from the notification-time state. Bit 0 means spare below threshold, bit 2 degraded reliability, and bit 3 group-wide read-only for reasons other than namespace write-protection settings. Bit 1 and bits 7:4 are reserved. PUSED=100 means estimated endurance consumed, not necessarily media failure.
Sources: Base 2.4 §5.2.13.1.10
Source: NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.10, printed pages 238, PDF pages 264
03 Separate cumulative traffic, command counts and capacity
| Field | Meaning of 3 | Meaning of zero |
|---|---|---|
| DUR/DUW/MUW | 2,000,000,001–3,000,000,000 bytes | Not reported |
| HRC/HWC | 3 completed commands of the defined class | Count is zero |
| TEGCAP/UEGCAP | 3 bytes (unit illustration only) | Capacity not reported |
| NUMENT (LID0Fh) | 3 list entries | No entries |
- NUMENT
- Number of Entries; a direct count of list entries.
- TEGCAP
- Total Endurance Group Capacity; total NVM capacity in the group.
- UEGCAP
- Unallocated Endurance Group Capacity; group capacity not allocated to sets.
- DUR
- Data Units Read; cumulative group reads excluding internal controller reads.
- DUW
- Data Units Written; cumulative group writes excluding internal controller writes.
- HRC
- Host Read Commands; completed commands in the applicable I/O command set’s read class.
- HWC
- Host Write Commands; completed commands in the User Data Out class.
- MUW
- Media Units Written; cumulative group writes including host and internal controller writes.
03.01.EE, DUR, DUW and MUW in LID 09h use units of 1,000,000,000 bytes, rounded up; zero means not reported. DUR/DUW exclude internal controller operations, while MUW includes host and controller writes. HRC/HWC count completed commands. TEGCAP/UEGCAP are byte capacities, with zero likewise meaning not reported rather than a measured zero capacity.
- controller
- Controller, the entity that implements the NVMe interface, fetches commands, and reports completions.
- EE
- Endurance Estimate; estimated lifetime writable bytes assuming write amplification of one.
Sources: Base 2.4 §5.2.13.1.10
Source: NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.10, printed pages 238-239, PDF pages 264-265
04 Choose which warnings should add a pending entry
- EGEALCN
- Endurance Group Event Aggregate Log Change Notices; the FID0Bh enable bit.
- CDW11
- Command Dword 11; its fields depend on the command.
- CDW
- CDW (Command Dword): a 32-bit command field. In CDW10, 10 is the field index, not a byte offset.
- CQE
- Completion Queue Entry; a command result posted by the controller.
- DW0
- Dword 0 of the completion entry; interpreted according to the command and SEL.
04.01.FID 18h uses CDW11 bits 15:0 for ENDGID and bits 23:16 for the EGCW selection mask, matching LID 09h warnings bit by bit. An already-true condition generates an event when enabled. Enabling a reserved warning bit or selecting a nonexistent group must cause Invalid Field in Command. ENDGID=0 is not an all-groups selector; EGCW is unused in that case.
Sources: Base 2.4 §5.2.30.1.17
Source: NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.17, printed pages 478, PDF pages 504
05 Find groups from list values rather than list positions
| Byte position | Data | Decoded value |
|---|---|---|
| 0–7 | 03 00 00 00 00 00 00 00 | NUMENT=3 |
| 8–9 | 01 00 | Entry1: ENDGID1 |
| 10–11 | 02 00 | Entry2: ENDGID2 |
| 12–13 | 07 00 | Entry3: ENDGID7 |
| 14–15 | 00 00 | Padding, not Entry4 |
- NUMD
- Number of Dwords; the combined NUMDU/NUMDL value encodes transfer dwords minus one in Get Log Page.
05.01.LID 0Fh is a pending list sorted by ENDGID, not a chronological event history. NUMENT occupies the first eight bytes, followed by two-byte entries. NUMENT is a direct count bounded by ENDGIDMAX. Transfers beyond the log end must return zero padding; only the entries indicated by NUMENT belong to the list.
- ENDGIDMAX
- Endurance Group Identifier Maximum; the identifier ceiling, not the current group count.
Sources: Base 2.4 §5.2.13.1.15
Source: NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.15, printed pages 270, PDF pages 296
06 Complete the notification, inspection and acknowledgement sequence
06.01.A successful LID 09h read with RAE=0 clears that group’s pending events and removes its LID 0Fh entry. RAE=1 retains the event, as must a failed read. Reading LID 0Fh with RAE=0 clears the aggregate-change notification; it does not replace per-group LID 09h acknowledgement. Acknowledging an event does not establish that its underlying condition has disappeared.
- RAE
- Retain Asynchronous Event; one retains the event, zero acknowledges the associated event after successful completion.
Sources: Base 2.4 §5.2.13.1.15, 3.2.3, 5.2.13, 5.2.2
Source: NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.15, 3.2.3, 5.2.13, 5.2.2, printed pages 84,183-187,213,270, PDF pages 110,209-213,239,296
A forward route through the specification
R-1Explain the mechanism with the overview and examples, then follow these Base PDF viewer pages in order. On shared pages, start at the specified heading and stop before the next named heading. The Chinese tutorial explains necessary background without repeated reference detours.
| Page order | Start section | Focus and stop heading |
|---|---|---|
| R1 · Base PDF 108–110 | §3.2.3 | Start at Endurance Groups, use Figure 69 for containment and connect the three operations without detouring into NVM Set details. Stop before §3.2.4. |
| R2 · Base PDF 209–213 | §5.2.2 | Introduce AER, RAE and the three Figure 151 notice fields. Read only row 06h of Figure 155 and stop at its end. Stop before §5.2.3. |
| R3 · Base PDF 235–241 | §5.2.12 | Cover SEL and the capability result, then Get Log Page LID, LSI, RAE, NUMD and offsets. Read only rows 09h/0Fh in Figure 209. Stop before §5.2.13.1. |
| R4 · Base PDF 263–265 | §5.2.13.1.10 | Start at the section heading and cover Figures 224/225: group selection, warnings, wear estimates, traffic and capacity. Work through the DUW=3 interval. Stop before §5.2.13.1.11. |
| R5 · Base PDF 296 | §5.2.13.1.15 | Read this section and Figure 261 only. Use [1,2,7] to derive 14 bytes of content and a 16-byte transfer, then explain removal of a group entry. Stop before §5.2.13.1.16. |
| R6 · Base PDF 369–398 | §5.2.14.2.1 | Move forward through Figure 338: OAES bit14 on PDF369, CTRATT bit4 on 372, AERL on 379, ENDGIDMAX on 388 and ONCS bit4 on 398. Skip all other fields. Stop before §5.2.14.2.2. |
| R7 · Base PDF 483–485 | §5.2.30 | Read FID/SV in Figure 464 and rows 18h/0Bh plus footnote 2 in Figure 466. Distinguish save capability from current settings. Stop before §5.2.30.1.1. |
| R8 · Base PDF 492–493 | §5.2.30.1.6 | Read only EGEALCN bit14 and its support checks in Figure 474, stopping at the end of that bit’s description. Stop before §5.2.30.1.7. |
| R9 · Base PDF 504 | §5.2.30.1.17 | Cover FID18h and Figure 493 completely, finishing with 00050007h and the two acknowledgements in the prepared sequence diagram, without paging backward. Stop before §5.2.30.1.18. |
- NVM Set
- A logically separate collection of non-volatile storage that can contain namespaces.
- CTRATT
- Controller Attributes; capability and attribute bits.
- AERL
- Asynchronous Event Request Limit; encodes maximum outstanding AERs minus one.
- OAES
- Optional Asynchronous Events Supported; reports support for optional events.
- ONCS
- Optional NVM Command Support; includes the Save/Select support bit used here.
- NVM
- Non-Volatile Memory, memory that retains data without power.
- SEL
- Select; chooses current, default, saved or supported-capability information.
- SV
- Save; requests persistence of feature attributes, subject to support and saveability.
Check your understanding
1. Do DUW=3 and MUW=5 prove exactly 3 GB of host writes and write amplification of 5/3?
08.01.No. Both fields round up in billions of bytes. DUW=3 means more than two and at most three billion bytes. MUW likewise represents an interval, so the ratio is only a coarse observation.
Sources
Source: NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.10, printed pages 238-239, PDF pages 264-265
2. Does changing group 7’s FID 18h mask from 05h to 01h clear its reliability warning in LID 09h?
08.02.No. The change controls whether that warning adds an entry; the controller still reports the actual condition. Re-enabling reporting while the condition remains true triggers reporting again.
Sources
Source: NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.17, printed pages 478, PDF pages 504
Source: NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.10, printed pages 238, PDF pages 264
3. Index 2 in [1,2,7] starts at offset 12. Which ENDGID selects LID 09h?
08.03.Use 7. Two is the zero-based index and 12 the byte distance; seven is the identifier read from that entry and placed in Get Log Page LSI.
Sources
Source: NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.15, printed pages 270, PDF pages 296
4. Why can group 7 remain listed after a successful LID 0Fh read with RAE=0?
08.04.That read clears the aggregate-change notice. Acknowledge group 7 and remove its entry with a successful LID 09h read for ENDGID7 with RAE=0, while also considering repeated reporting for a persistent condition.
Sources
Source: NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.15, 3.2.3, 5.2.13, 5.2.2, printed pages 84,183-187,213,270, PDF pages 110,209-213,239,296
5. What follows from EGCW=0 after a notice, or from PUSED=103?
08.05.EGCW=0 describes the state at the read, not necessarily at notification time. PUSED=103 exceeds the estimated 100% life consumed but does not itself mean failure or read-only operation. Interpret each field according to its time reference and definition.
Sources
Source: NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.10, printed pages 238, PDF pages 264


Comments