структура NVME_HEALTH_INFO_LOG (nvme.h)
Содержит поля, указывающие сведения, содержащиеся на странице SMART/Health Information Log.
На странице Smart/Health Information Log (Журнал сведений о работоспособности smart/ health log) содержатся сведения о работоспособности SMART и общие сведения о работоспособности контроллера, которые хранятся в течение всего цикла питания. Страница журнала поддерживается на глобальной основе. Чтобы запросить страницу глобального журнала, укажите пространство имен FFFFFFFFh
.
Страница smart/health Information Log также может поддерживаться для каждого пространства имен, как указано в структуре данных Идентификация контроллера . Если страница журнала не поддерживается для каждого пространства имен, при указании любого пространства имен, отличного FFFFFFFFh
от , следует прервать команду с состоянием NVME_STATUS_INVALID_FIELD_IN_COMMAND. В NVMe версии 1.3 на странице журнала SMART/Health нет сведений о пространстве имен, поэтому страница глобального журнала и страница журнала пространств имен содержат идентичные сведения.
Критические предупреждения о работоспособности подсистемы NVM указываются с помощью асинхронного уведомления о событии для узла. Предупреждения, которые приводят к отправке асинхронного уведомления о событии для узла, настраиваются с помощью команды Set Features (Задать компоненты).
Производительность можно вычислить с помощью параметров, возвращаемых в журнале SMART/Health Information. В частности, количество команд Read или Write, объем прочитанных или записанных данных и количество занятого времени контроллера позволяют вычислять операции ввода-вывода в секунду и пропускную способность.
Структура NVME_HEALTH_INFO_LOG возвращается командой Получить страницу журнала. Дополнительные сведения см. в разделе NVME_CDW10_GET_LOG_PAGE.
Синтаксис
typedef struct {
union {
struct {
UCHAR AvailableSpaceLow : 1;
UCHAR TemperatureThreshold : 1;
UCHAR ReliabilityDegraded : 1;
UCHAR ReadOnly : 1;
UCHAR VolatileMemoryBackupDeviceFailed : 1;
UCHAR Reserved : 3;
} DUMMYSTRUCTNAME;
UCHAR AsUchar;
} CriticalWarning;
UCHAR Temperature[2];
UCHAR AvailableSpare;
UCHAR AvailableSpareThreshold;
UCHAR PercentageUsed;
UCHAR Reserved0[26];
UCHAR DataUnitRead[16];
UCHAR DataUnitWritten[16];
UCHAR HostReadCommands[16];
UCHAR HostWrittenCommands[16];
UCHAR ControllerBusyTime[16];
UCHAR PowerCycle[16];
UCHAR PowerOnHours[16];
UCHAR UnsafeShutdowns[16];
UCHAR MediaErrors[16];
UCHAR ErrorInfoLogEntryCount[16];
ULONG WarningCompositeTemperatureTime;
ULONG CriticalCompositeTemperatureTime;
USHORT TemperatureSensor1;
USHORT TemperatureSensor2;
USHORT TemperatureSensor3;
USHORT TemperatureSensor4;
USHORT TemperatureSensor5;
USHORT TemperatureSensor6;
USHORT TemperatureSensor7;
USHORT TemperatureSensor8;
UCHAR Reserved1[296];
} NVME_HEALTH_INFO_LOG, *PNVME_HEALTH_INFO_LOG;
Члены
CriticalWarning
Структура Критическое предупреждение (CriticalWarning), содержащая поля, указывающие критические предупреждения для состояния контроллера.
Каждое поле структуры CriticalWarning представляет собой бит, соответствующий типу критического предупреждения; может быть задано несколько битов. Если бит очищается до 0
, это критическое предупреждение не применяется. Биты в этом поле представляют текущее связанное состояние и не являются постоянными.
Критические предупреждения могут привести к отправке асинхронного уведомления о событии для узла.
CriticalWarning.DUMMYSTRUCTNAME
CriticalWarning.DUMMYSTRUCTNAME.AvailableSpaceLow
Указывает, упало ли доступное свободное пространство ниже порогового значения.
Если для этого значения задано 1
значение , доступное свободное пространство упало ниже порогового значения.
CriticalWarning.DUMMYSTRUCTNAME.TemperatureThreshold
Указывает, является ли температура выше порогового значения температуры или ниже порогового значения температуры.
Если для этого значения задано значение 1
, температура выше порогового значения температуры или ниже порогового значения температуры. Дополнительные сведения о пороговых значениях температуры см. в разделе NVME_CDW11_FEATURE_TEMPERATURE_THRESHOLD.
CriticalWarning.DUMMYSTRUCTNAME.ReliabilityDegraded
Указывает, снижена ли надежность подсистемы NVM.
Если для этого значения задано значение 1
, надежность подсистемы NVM была снижена из-за значительных ошибок, связанных с носителем, или любой внутренней ошибки, которая снижает надежность подсистемы NVM.
CriticalWarning.DUMMYSTRUCTNAME.ReadOnly
Указывает, был ли носитель помещен в режим только для чтения.
Если для этого значения задано 1
значение , носитель помещается в режим только для чтения.
CriticalWarning.DUMMYSTRUCTNAME.VolatileMemoryBackupDeviceFailed
Указывает, произошел ли сбой устройства резервного копирования энергонезависимой памяти.
Если для этого значения задано 1
значение , то сбой энергонезависимого устройства резервного копирования памяти. Это поле допустимо, только если у контроллера есть решение для резервного копирования энергонезависимой памяти.
CriticalWarning.DUMMYSTRUCTNAME.Reserved
Биты 05:07 структуры CriticalWarning зарезервированы.
CriticalWarning.AsUchar
Temperature[2]
Указывает составную температуру (в градусах Кельвина) всего устройства, включая контроллер и подсистему NVM.
Если температура в этом поле превышает порог температуры, может произойти асинхронное завершение события. Дополнительные сведения см. в разделе NVME_CDW11_FEATURE_TEMPERATURE_THRESHOLD.
Пороговые значения температуры при предупреждении и критическом перегреве указываются в полях WCTEMP и CCTEMP в структуре данных Идентификация контроллера .
AvailableSpare
Указывает нормализованный процент (от 0 до 100) оставшейся доступной запасной емкости.
AvailableSpareThreshold
Указывает пороговое значение доступной запасной емкости.
Если значение AvailableSpare падает ниже порогового значения, указанного в этом поле, может произойти асинхронное завершение события. Значение обозначается как нормализованный процент (от 0 до 100).
PercentageUsed
Указывает конкретную от поставщика оценку процента используемого срока службы подсистемы NVM на основе фактического использования и прогноза изготовителя срока службы NVM.
Значение 100 указывает, что предполагаемая выносливость NVM в подсистеме NVM была занята, но может не указывать на сбой подсистемы NVM. Значение может превышать 100. Проценты больше 254 представлены как 255. Это значение обновляется один раз за час включения питания (если контроллер не находится в спящем режиме).
Reserved0[26]
Зарезервированное поле.
DataUnitRead[16]
Указывает количество единиц данных в 512 байт, которые узел считывал из контроллера, не включая метаданные.
Значение этого поля указывается в тысячах и округляется вверх. Например, значение 1 соответствует 1000 единицам чтения по 512 байт. Если размер доступа к логическому блоку (LBA) не равен 512 байтам, контроллер преобразует объем прочитанных данных в 512 байтов.
Для набора команд NVM логические блоки, считываемые в рамках операций сравнения и чтения, включаются в это значение.
DataUnitWritten[16]
Указывает число 512 байтовых единиц данных, записанных узлом на контроллер, не включая метаданные.
Значение этого поля указывается в тысячах и округляется вверх. Например, значение 1 соответствует 1000 единицам чтения по 512 байт. Если размер логического блочного доступа (LBA) не равен 512 байтам, контроллер преобразует объем записанных данных в 512 байтов.
Для набора команд NVM логические блоки, записанные в рамках операций записи, включаются в это значение. Неисправимые команды записи не влияют на это значение.
HostReadCommands[16]
Указывает количество команд чтения, выполненных контроллером.
Для набора команд NVM это количество команд Compare и Read.
HostWrittenCommands[16]
Указывает количество команд записи, выполненных контроллером.
Для набора команд NVM это количество команд Write.
ControllerBusyTime[16]
Указывает время в минутах, в течение которой контроллер занят командами ввода-вывода.
Контроллер занят, когда команда не выполняется в очереди ввода-вывода. В частности, если команда была выполнена с помощью заключительного дверного звонка очереди отправки ввода-вывода, а соответствующая запись очереди завершения еще не была размещена в связанной очереди завершения ввода-вывода.
PowerCycle[16]
Указывает количество циклов питания.
PowerOnHours[16]
Указывает количество часов включения. Сюда не входит время питания контроллера и состояние низкого энергопотребления.
UnsafeShutdowns[16]
Указывает количество небезопасных завершений работы. Это число увеличивается, если уведомление о завершении работы, указанное в SHNконфигурации контроллера, не получено до отключения питания.
MediaErrors[16]
Указывает количество вхождений, в которых контроллер обнаружил невосстановленную ошибку целостности данных.
В это поле включаются ошибки мультимедиа, такие как неисправимый ECC, сбой контрольной суммы CRC или несоответствие тегов LBA.
ErrorInfoLogEntryCount[16]
Указывает количество записей журнала сведений об ошибках за время существования контроллера.
WarningCompositeTemperatureTime
Указывает время (в минутах) работы контроллера и значение температуры (температура) больше или равно полю порогового порога температуры предупреждения (WCTEMP) и меньше поля Критическое пороговое значение составной температуры (CCTEMP) в структуре данных Идентификация контроллера.
Если значение поля WCTEMP или CCTEMP равно 0h
, это поле всегда очищается 0h
независимо от значения Температуры .
CriticalCompositeTemperatureTime
Указывает, сколько времени в минутах контроллер работает, а значение составной температуры (температура) превышает пороговое значение критического порогового значения составной температуры (CCTEMP) в структуре данных Идентификация контроллера .
Если значение поля CCTEMP равно 0h
, это поле всегда очищается 0h
независимо от значения Temperature .
TemperatureSensor1
Указывает текущую температуру в градусах Кельвина, сообщаемую датчиком температуры 1.
TemperatureSensor2
Указывает текущую температуру в градусах Кельвина, указанную датчиком температуры 2.
TemperatureSensor3
Указывает текущую температуру в градусах Кельвина, указанную датчиком температуры 3.
TemperatureSensor4
Указывает текущую температуру в градусах Кельвина, указанную датчиком температуры 4.
TemperatureSensor5
Указывает текущую температуру в градусах Кельвина, указанную датчиком температуры 5.
TemperatureSensor6
Указывает текущую температуру в градусах Кельвина, указанную датчиком температуры 6.
TemperatureSensor7
Указывает текущую температуру в градусах Кельвина, сообщаемую датчиком температуры 7.
TemperatureSensor8
Указывает текущую температуру в градусах Кельвина, указанную датчиком температуры 8.
Reserved1[296]
Зарезервированное поле.
Комментарии
Для активации асинхронного события можно использовать температуру, сообщаемую датчиком температуры. Дополнительные сведения см. в разделе NVME_CDW11_FEATURE_TEMPERATURE_THRESHOLD.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 10 |
Верхняя часть | nvme.h |