Поделиться через


структура 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

См. также раздел