Compartilhar via


estrutura NVME_HEALTH_INFO_LOG (nvme.h)

Contém campos que especificam as informações contidas na página log de informações de integridade/SMART.

A página Log de Informações de Integridade/SMART fornece informações de integridade inteligentes e gerais ao longo da vida útil do controlador que é mantido em ciclos de energia. A página de log tem suporte global. Para solicitar a página de log global, especifique o namespace FFFFFFFFh.

A página Log de Informações de Integridade/SMART também pode ter suporte por namespace, conforme indicado na estrutura de dados Identificar Controlador . Se não houver suporte para a página de log por namespace, especificar qualquer namespace diferente de FFFFFFFFh deve anular o comando com um status de NVME_STATUS_INVALID_FIELD_IN_COMMAND. No NVMe versão 1.3, não há informações específicas do namespace definidas na página de log SMART/Health, portanto, a página de log global e a página de log específica de namespaces contêm informações idênticas.

Avisos críticos sobre a integridade do subsistema NVM são indicados por meio de uma notificação de evento assíncrono para o host. Os avisos que resultam em uma notificação de evento assíncrono para o host são configurados usando o comando Definir Recursos.

O desempenho pode ser calculado usando parâmetros retornados como parte do log de informações de integridade/SMART. Especificamente, o número de comandos de Leitura ou Gravação, a quantidade de dados lidos ou gravados e a quantidade de tempo ocupado do controlador permite que E/S por segundo e largura de banda sejam calculadas.

A estrutura NVME_HEALTH_INFO_LOG é retornada pelo comando Obter Página de Log. Para obter mais informações, consulte NVME_CDW10_GET_LOG_PAGE.

Sintaxe

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;

Membros

CriticalWarning

Uma estrutura de Aviso Crítico (CriticalWarning) que contém campos que indicam avisos críticos para o estado do controlador.

Cada campo da estrutura CriticalWarning é um bit que corresponde a um tipo de aviso crítico; vários bits podem ser definidos. Se um bit for limpo para 0, esse aviso crítico não se aplicará. Os bits neste campo representam o estado associado atual e não são persistentes.

Avisos críticos podem resultar em uma notificação de evento assíncrono para o host.

CriticalWarning.DUMMYSTRUCTNAME

CriticalWarning.DUMMYSTRUCTNAME.AvailableSpaceLow

Indica se o espaço sobressalente disponível ficou abaixo do limite.

Quando esse valor é definido como 1, o espaço sobressalente disponível fica abaixo do limite.

CriticalWarning.DUMMYSTRUCTNAME.TemperatureThreshold

Indica se uma temperatura está acima do limite de temperatura ou abaixo de um limite de temperatura inferior.

Quando esse valor é definido como 1, uma temperatura está acima de um limite de temperatura acima ou abaixo de um limite de temperatura abaixo. Para obter mais informações sobre os limites de temperatura, consulte NVME_CDW11_FEATURE_TEMPERATURE_THRESHOLD.

CriticalWarning.DUMMYSTRUCTNAME.ReliabilityDegraded

Indica se a confiabilidade do subsistema NVM foi degradada.

Quando esse valor é definido como 1, a confiabilidade do subsistema NVM foi degradada devido a erros significativos relacionados à mídia ou qualquer erro interno que degrada a confiabilidade do subsistema NVM.

CriticalWarning.DUMMYSTRUCTNAME.ReadOnly

Indica se a mídia foi colocada no modo somente leitura.

Quando esse valor é definido como 1, a mídia é colocada no modo somente leitura.

CriticalWarning.DUMMYSTRUCTNAME.VolatileMemoryBackupDeviceFailed

Indica se o dispositivo de backup de memória volátil falhou.

Quando esse valor é definido como 1, o dispositivo de backup de memória volátil falhou. Esse campo só será válido se o controlador tiver uma solução de backup de memória volátil.

CriticalWarning.DUMMYSTRUCTNAME.Reserved

Os bits 05:07 da estrutura CriticalWarning são reservados.

CriticalWarning.AsUchar

Temperature[2]

Indica a temperatura composta, em graus Kelvin, do dispositivo geral, incluindo o controlador e o subsistema NVM.

Se a temperatura nesse campo exceder o limite de temperatura, poderá ocorrer uma conclusão de evento assíncrona. Para obter mais informações, consulte NVME_CDW11_FEATURE_TEMPERATURE_THRESHOLD.

Os valores de limite de temperatura composta de superaquecimento crítico e de aviso são relatados pelos campos WCTEMP e CCTEMP na estrutura de dados Identificar Controlador .

AvailableSpare

Indica um percentual normalizado (0 a 100) da capacidade de reposição restante disponível.

AvailableSpareThreshold

Indica o limite de capacidade sobressalente disponível.

Quando o valor de AvailableSpare está abaixo do limite indicado neste campo, pode ocorrer uma conclusão de evento assíncrona. O valor é indicado como uma porcentagem normalizada (0 a 100).

PercentageUsed

Indica uma estimativa específica do fornecedor da porcentagem de vida do subsistema NVM usada, com base no uso real e na previsão de vida de NVM do fabricante.

Um valor de 100 indica que a resistência estimada da NVM no subsistema NVM foi consumida, mas pode não indicar uma falha no subsistema NVM. O valor tem permissão para exceder 100. Percentuais maiores que 254 são representados como 255. Esse valor é atualizado uma vez por hora de ativação (quando o controlador não está em estado de suspensão).

Reserved0[26]

Um campo reservado.

DataUnitRead[16]

Indica o número de 512 unidades de dados de bytes que o host leu do controlador, sem incluir metadados.

O valor desse campo é relatado em milhares e é arredondado para cima. Por exemplo, um valor de 1 corresponde a 1000 unidades de 512 bytes lidos. Quando o tamanho do LBA (Acesso de Bloco Lógico) é um valor diferente de 512 bytes, o controlador converte a quantidade de dados lidos em 512 unidades de bytes.

Para o conjunto de comandos NVM, os blocos lógicos lidos como parte das operações Comparar e Ler são incluídos nesse valor.

DataUnitWritten[16]

Indica o número de 512 unidades de dados de bytes que o host gravou no controlador, sem incluir metadados.

O valor desse campo é relatado em milhares e é arredondado para cima. Por exemplo, um valor de 1 corresponde a 1000 unidades de 512 bytes lidos. Quando o tamanho do LBA (Acesso de Bloco Lógico) é um valor diferente de 512 bytes, o controlador converte a quantidade de dados gravados em 512 unidades de bytes.

Para o conjunto de comandos NVM, os blocos lógicos gravados como parte das operações de Gravação são incluídos nesse valor. Os comandos Write Uncorrectable não afetam esse valor.

HostReadCommands[16]

Indica o número de comandos de leitura concluídos pelo controlador.

Para o conjunto de comandos NVM, esse é o número de comandos Comparar e Ler.

HostWrittenCommands[16]

Indica o número de comandos write concluídos pelo controlador.

Para o conjunto de comandos NVM, esse é o número de comandos write.

ControllerBusyTime[16]

Indica a quantidade de tempo, em minutos, que o controlador está ocupado com comandos de E/S.

O controlador está ocupado quando há um comando pendente para uma fila de E/S. Especificamente, quando um comando foi emitido por meio de uma gravação de campainha de E/S Submission Queue Tail e a entrada de fila de conclusão correspondente ainda não foi postada na Fila de Conclusão de E/S associada.

PowerCycle[16]

Indica o número de ciclos de energia.

PowerOnHours[16]

Indica o número de horas de ativação. Isso não inclui o tempo em que o controlador foi ligado e em uma condição de estado de baixa energia.

UnsafeShutdowns[16]

Indica o número de desligamentos não seguros. Essa contagem é incrementada quando uma notificação de desligamento, indicada no SHN arquivado da Configuração do Controlador, não é recebida antes da perda de energia.

MediaErrors[16]

Indica o número de ocorrências em que o controlador detectou um erro de integridade de dados não recuperados.

Erros de mídia , como ECC não recorrecionável, falha de soma de verificação de CRC ou incompatibilidade de marca LBA são incluídos neste campo.

ErrorInfoLogEntryCount[16]

Indica o número de entradas de log de Informações de Erro ao longo da vida útil do controlador.

WarningCompositeTemperatureTime

Indica a quantidade de tempo, em minutos, que o controlador está operacional e a Temperatura Composta (Temperatura) é maior ou igual ao campo Limite de Temperatura Composta de Aviso (WCTEMP) e menor que o campo Limite crítico de temperatura composta (CCTEMP) na estrutura de dados Identificar Controlador .

Se o valor do campo WCTEMP ou CCTEMP for 0h, esse campo sempre será limpo para 0h , independentemente do valor de Temperatura .

CriticalCompositeTemperatureTime

Indica a quantidade de tempo em minutos em que o controlador está operacional e a Temperatura Composta (Temperatura) é maior o campo Limite crítico de temperatura composta (CCTEMP) na estrutura de dados Identificar Controlador .

Se o valor do campo CCTEMP for 0h, esse campo sempre será limpo para 0h , independentemente do valor De temperatura .

TemperatureSensor1

Indica a temperatura atual em graus Kelvin relatado pelo sensor de temperatura 1.

TemperatureSensor2

Indica a temperatura atual em graus Kelvin relatado pelo sensor de temperatura 2.

TemperatureSensor3

Indica a temperatura atual em graus Kelvin relatado pelo sensor de temperatura 3.

TemperatureSensor4

Indica a temperatura atual em graus Kelvin relatado pelo sensor de temperatura 4.

TemperatureSensor5

Indica a temperatura atual em graus Kelvin relatado pelo sensor de temperatura 5.

TemperatureSensor6

Indica a temperatura atual em graus Kelvin relatado pelo sensor de temperatura 6.

TemperatureSensor7

Indica a temperatura atual em graus Kelvin relatado pelo sensor de temperatura 7.

TemperatureSensor8

Indica a temperatura atual em graus Kelvin relatado pelo sensor de temperatura 8.

Reserved1[296]

Um campo reservado.

Comentários

A temperatura relatada por um sensor de temperatura pode ser usada para disparar um evento assíncrono. Para obter mais informações, consulte NVME_CDW11_FEATURE_TEMPERATURE_THRESHOLD.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10
Cabeçalho nvme.h

Confira também