estrutura PERF_CONFIGURATION_DATA (storport.h)
A estrutura PERF_CONFIGURATION_DATA descreve as otimizações de desempenho compatíveis com a rotina StorPortInitializePerfOpts .
Sintaxe
typedef struct _PERF_CONFIGURATION_DATA {
ULONG Version;
ULONG Size;
ULONG Flags;
ULONG ConcurrentChannels;
ULONG FirstRedirectionMessageNumber;
ULONG LastRedirectionMessageNumber;
ULONG DeviceNode;
ULONG Reserved;
PGROUP_AFFINITY MessageTargets;
} PERF_CONFIGURATION_DATA, *PPERF_CONFIGURATION_DATA;
Membros
Version
O número de versão da estrutura. Defina esse membro ao consultar e inicializar otimizações.
Size
O tamanho da estrutura, definido como sizeof(PERF_CONFIGURATION_DATA).
Flags
Um OR bit a bit de sinalizadores com suporte. Atualmente, há suporte para os seguintes sinalizadores:
Sinalizador | Significado |
---|---|
STOR_PERF_DPC_REDIRECTION |
Esse sinalizador é usado para indicar que o processamento de DPC deve ser distribuído por várias CPUs.
Esse sinalizador é válido quando Version é definido como 2 ou 3. |
STOR_PERF_CONCURRENT_CHANNELS |
Esse sinalizador é usado para indicar que há suporte para chamadas simultâneas para a rotina HwStorStartIo . Antes de Windows 8, os miniportos não devem definir esse sinalizador.
Esse sinalizador é válido quando Version é definido como 2 ou 3. |
STOR_PERF_INTERRUPT_MESSAGE_RANGES |
Esse sinalizador é usado para indicar que há suporte para o redirecionamento de interrupção. Ao usar esse sinalizador, você também deve definir o sinalizador STOR_PERF_DPC_REDIRECTION.
Esse sinalizador é válido quando Version é definido como 2 ou 3. |
STOR_PERF_ADV_CONFIG_LOCALITY |
Esse sinalizador é usado para indicar que você deve usar o grupo e a máscara que pertencem ao grupo de mensagens com a afinidade correta. Ao usar esse sinalizador, você também deve definir o STOR_PERF_INTERRUPT_MESSAGE_RANGES e os sinalizadores de STOR_PERF_DPC_REDIRECTION.
Esse sinalizador é válido quando Version é definido como 3. |
STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO |
Esse sinalizador é usado para indicar que o driver de miniporto concluirá e/S simultaneamente com o envio de novos E/Ss. Ao usar esse sinalizador, você também deve definir o sinalizador STOR_PERF_DPC_REDIRECTION.
Esse sinalizador é válido quando Version é definido como 3. Consulte os comentários abaixo. |
STOR_PERF_DPC_REDIRECTION_CURRENT_CPU |
Esse sinalizador é usado para indicar que você está optando pelo Redirecionamento de DPC (obrigatório), mas a opção de redirecionamento de E/S é definida como a CPU que solicita o DPC e não a CPU que origina a solicitação de E/S no Storport.
Ao usar esse sinalizador, você também deve definir o sinalizador STOR_PERF_DPC_REDIRECTION. Esse sinalizador é válido quando Version é definido como 4. |
STOR_PERF_NO_SGL |
Esse sinalizador é usado para indicar que o miniporto não precisa que os SGLs sejam criados pelo driver storport para um buffer de solicitação de E/S.
Esse sinalizador é válido quando Version é definido como 5. |
ConcurrentChannels
O número de chamadas simultâneas para a rotina HwStorStartIo que o driver de miniporto e o dispositivo dão suporte. Esse membro só é acessado quando o sinalizador STOR_PERF_CONCURRENT_CHANNELS foi definido. Antes de Windows 8, os miniportos não devem definir esse valor.
FirstRedirectionMessageNumber
Quando o membro Flags tem o sinalizador STOR_PERF_INTERRUPT_MESSAGE_RANGES definido, o driver de miniporta inicializa o redirecionamento de interrupção para começar com esse número de mensagem. Esse membro só é acessado quando o sinalizador STOR_PERF_INTERRUPT_MESSAGE_RANGES é definido.
LastRedirectionMessageNumber
Quando o membro Flags tem o sinalizador STOR_PERF_INTERRUPT_MESSAGE_RANGES definido, o driver de miniporta inicializa o redirecionamento de interrupção para terminar com esse número de mensagem. Esse membro só é acessado quando o sinalizador STOR_PERF_INTERRUPT_MESSAGE_RANGES é definido.
DeviceNode
Quando o membro Flags tem o sinalizador STOR_PERF_ADV_CONFIG_LOCALITY definido, o Storport inicializa esse campo para conter o número do nó NUMA no qual o dispositivo do driver de miniporto reside.
Reserved
Reservado para uso do sistema.
MessageTargets
Quando o membro Flags tem o sinalizador STOR_PERF_ADV_CONFIG_LOCALITY definido, o Storport inicializa os campos de nas estruturas de uma matriz de GROUP_AFFINITY . Essas estruturas correspondem às mensagens de redirecionamento que estão sendo usadas no momento. A matriz em si é baseada em zero, mas FirstRedirectionMessageNumber não é necessário para ser zero. O miniporto aloca essa matriz e define MessageTargets para apontar para ela. O driver de miniporto deve alocar uma matriz de GROUP_AFFINITY grande o suficiente para conter todas as máscaras de afinidade retornadas.
Comentários
A versão atual dessa estrutura é definida por STOR_PERF_VERSION. Definir Versão para esse valor permitirá que os Sinalizadores especifiquem todas as otimizações com suporte.
A finalidade do sinalizador STOR_PERF_DPC_REDIRECTION é garantir que as CPUs individuais não sejam sobrecarregadas com o processamento de DPC. Quando esse sinalizador é definido, o processamento de DPC é distribuído por várias CPUs. Se STOR_PERF_DPC_REDIRECTION_CURRENT_CPU não estiver definido, o StorPort tentará agendar DPCs de conclusão de E/S na mesma CPU que originou a E/S.
Normalmente, um miniporto conclui solicitações de E/S em sua rotina HwStorStartIo e chama StorPortNotification com o tipo de notificação RequestComplete . Para processar E/S dessa maneira, o miniporto deixará o sinalizador STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO definido no membro Flags , permitindo que Storport ajuste o redirecionamento de DPC.
Para obter informações sobre como habilitar interrupções sinalizadas por mensagem para um dispositivo, consulte Habilitando interrupções de Message-Signaled no Registro.
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | storport.h (inclua Storport.h) |