NVMe Endurance Groups: Health Information, Pending Events and Notification Settings

25 minute read

繁體中文

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

01

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.
02

Units and uncertainty

02-01Traffic, command counts and capacity use different units. Work through rounding and zero-as-not-reported before drawing numerical conclusions.

03

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.
04

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

One configuration, two queries: from condition to dataFollow the arrows: an enabled warning adds the group ID to the list; the host uses that ID to query its health data. Host notification also requires FID0Bh and AER, covered later. Sources: Base §§5.2.13.1.10, 5.2.13.1.15, 5.2.30.1.17.FID18h · ENDGID7 · mask05hSelect spare and reliability warningsLID0Fh · [7]The list identifies which group needs inspectionLID09h · LSI=7 · 512 bytesRead warnings, wear estimates, traffic and capacity
Follow the arrows: an enabled warning adds the group ID to the list; the host uses that ID to query its health data. Host notification also requires FID0Bh and AER, covered later. Sources: Base §§5.2.13.1.10, 5.2.13.1.15, 5.2.30.1.17.
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

Which conclusions follow from EGCW=05h?
ObservationInterpretationNot established
bit0=1; AVSP8 < AVSPT10Spare below thresholdOnly 8% of life remains
bit2=1Group reliability degradedEvery other group is affected
bit3=0No group-wide read-only warning hereEvery namespace must be writable
PUSED=103More than 100% estimated endurance usedMedia failure or negative free capacity
State bits and percentages answer different questions. A clear bit3 does not rule out namespace write protection. Source: Base Figure 225.
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

The value 3 means different things in different fields
FieldMeaning of 3Meaning of zero
DUR/DUW/MUW2,000,000,001–3,000,000,000 bytesNot reported
HRC/HWC3 completed commands of the defined classCount is zero
TEGCAP/UEGCAP3 bytes (unit illustration only)Capacity not reported
NUMENT (LID0Fh)3 list entriesNo entries
TEGCAP=3 illustrates the unit, not a practical device size. Traffic rounds up in billions of bytes; capacities and counts do not use that multiplier. Sources: Base Figures 225/261.
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

Select per-group warnings, then enable controller notificationThe settings have different scopes: the first selects causes for adding group entries; the second enables a host notice for additions. An outstanding AER carries the result. Sources: Base Figures 493/474, §5.2.2.FID18h · Group7CDW11 = 00050007h; warning bits 0 + 2Enabled warning true → add group7 to 0FhFID0Bh · controllerEGEALCN bit14=1; enable the noticeAER → CQE DW0 = 000F0602hNotice gives log and event type; group IDs are in the list
The settings have different scopes: the first selects causes for adding group entries; the second enables a host notice for additions. An outstanding AER carries the result. Sources: Base Figures 493/474, §5.2.2.
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

Decode a 16-byte response containing only three IDs
Byte positionDataDecoded value
0–703 00 00 00 00 00 00 00NUMENT=3
8–901 00Entry1: ENDGID1
10–1102 00Entry2: ENDGID2
12–1307 00Entry3: ENDGID7
14–1500 00Padding, not Entry4
Illustration: 14 meaningful bytes, four transferred dwords, NUMD=3. Offset12 locates group7; it is not its identifier. Sources: Base Figures 261/204.
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

Group acknowledgement and notice acknowledgement affect different stateAssume no new events during this illustration and that persistent-condition reporting has been addressed. Each box pairs an action with its result. RAE1 inspects; successful RAE0 reads acknowledge. Sources: Base §§5.2.2, 5.2.13.1.15, 3.2.3.AER notice → read 0Fh, RAE1Read [7]; retain notice and entryread 09h / Group7, RAE1Read current health data; entry remainsread 09h / Group7, RAE0 → successAcknowledge group7; remove its entryread 0Fh, RAE0 → successAcknowledge aggregate notice; inspect the returned list
Assume no new events during this illustration and that persistent-condition reporting has been addressed. Each box pairs an action with its result. RAE1 inspects; successful RAE0 reads acknowledge. Sources: Base §§5.2.2, 5.2.13.1.15, 3.2.3.

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 orderStart sectionFocus and stop heading
R1 · Base PDF 108–110§3.2.3Start 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.2Introduce 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.12Cover 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.10Start 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.15Read 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.1Move 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.30Read 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.6Read 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.17Cover 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.
Open the complete Chinese tutorial and figure explanations →

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

Specification editions

NVM Express Base Specification, Revision 2.4

NVM Express NVM Command Set Specification, Revision 1.3

Jia-Chang

Jia-Chang

Human

Comments

  Write a comment ...