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 |