Partager via


structure PERF_CONFIGURATION_DATA (storport.h)

La structure PERF_CONFIGURATION_DATA décrit les optimisations des performances prises en charge par la routine StorPortInitializePerfOpts .

Syntaxe

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;

Membres

Version

Numéro de version de la structure. Définissez ce membre lors de l’interrogation et de l’initialisation des optimisations.

Size

Taille de la structure, définie sur sizeof(PERF_CONFIGURATION_DATA).

Flags

Or au niveau du bit des indicateurs pris en charge. Actuellement, les indicateurs suivants sont pris en charge :

Indicateur Signification
STOR_PERF_DPC_REDIRECTION Cet indicateur est utilisé pour indiquer que le traitement DPC doit être réparti sur plusieurs processeurs.

Cet indicateur est valide lorsque version est définie sur 2 ou 3.

STOR_PERF_CONCURRENT_CHANNELS Cet indicateur est utilisé pour indiquer que les appels simultanés à la routine HwStorStartIo sont pris en charge. Avant Windows 8, les miniports ne doivent pas définir cet indicateur.

Cet indicateur est valide lorsque version est définie sur 2 ou 3.

STOR_PERF_INTERRUPT_MESSAGE_RANGES Cet indicateur est utilisé pour indiquer que la redirection d’interruption est prise en charge. Lorsque vous utilisez cet indicateur, vous devez également définir l’indicateur STOR_PERF_DPC_REDIRECTION.

Cet indicateur est valide lorsque version est définie sur 2 ou 3.

STOR_PERF_ADV_CONFIG_LOCALITY Cet indicateur est utilisé pour indiquer que vous devez utiliser le groupe et le masque qui se rapportent au groupe de messages avec l’affinité correcte. Lorsque vous utilisez cet indicateur, vous devez également définir les indicateurs STOR_PERF_INTERRUPT_MESSAGE_RANGES et STOR_PERF_DPC_REDIRECTION.

Cet indicateur est valide lorsque Version a la valeur 3.

STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO Cet indicateur est utilisé pour indiquer que le pilote miniport effectue les E/S en même temps que la soumission de nouvelles E/S. Lorsque vous utilisez cet indicateur, vous devez également définir l’indicateur STOR_PERF_DPC_REDIRECTION.

Cet indicateur est valide lorsque Version a la valeur 3. Consultez la section Notes ci-dessous.

STOR_PERF_DPC_REDIRECTION_CURRENT_CPU Cet indicateur est utilisé pour indiquer que vous optez pour la redirection DPC (obligatoire), mais que le choix de redirection d’E/S est défini sur le processeur qui demande la DPC et non sur le processeur à l’origine de la demande d’E/S dans Storport.

Lorsque vous utilisez cet indicateur, vous devez également définir l’indicateur STOR_PERF_DPC_REDIRECTION.

Cet indicateur est valide lorsque Version est définie sur 4.

STOR_PERF_NO_SGL Cet indicateur est utilisé pour indiquer que le miniport n’a pas besoin d’être créé par le pilote storport pour une mémoire tampon de requête d’E/S.

Cet indicateur est valide lorsque Version est définie sur 5.

ConcurrentChannels

Nombre d’appels simultanés à la routine HwStorStartIo prise en charge par le pilote miniport et l’appareil. Ce membre est accessible uniquement lorsque l’indicateur STOR_PERF_CONCURRENT_CHANNELS a été défini. Avant Windows 8, les miniports ne doivent pas définir cette valeur.

FirstRedirectionMessageNumber

Lorsque le membre Flags a l’indicateur STOR_PERF_INTERRUPT_MESSAGE_RANGES défini, le pilote miniport initialise la redirection d’interruption pour commencer par ce numéro de message. Ce membre n’est accessible que lorsque l’indicateur STOR_PERF_INTERRUPT_MESSAGE_RANGES est défini.

LastRedirectionMessageNumber

Lorsque le membre Flags a l’indicateur STOR_PERF_INTERRUPT_MESSAGE_RANGES défini, le pilote miniport initialise la redirection d’interruption pour se terminer par ce numéro de message. Ce membre n’est accessible que lorsque l’indicateur STOR_PERF_INTERRUPT_MESSAGE_RANGES est défini.

DeviceNode

Lorsque le membre Flags a l’indicateur STOR_PERF_ADV_CONFIG_LOCALITY défini, Storport initialise ce champ pour contenir le numéro de nœud NUMA dans lequel réside l’appareil du pilote miniport.

Reserved

Réservé pour le système.

MessageTargets

Lorsque le membre Flags a le jeu d’indicateurs STOR_PERF_ADV_CONFIG_LOCALITY, Storport initialise les champs de dans les structures d’un tableau GROUP_AFFINITY . Ces structures correspondent aux messages de redirection actuellement utilisés. Le tableau lui-même est de base zéro, mais FirstRedirectionMessageNumber n’est pas obligatoirement égal à zéro. Le miniport alloue ce tableau et définit MessageTargets pour qu’il pointe vers celui-ci. Le pilote miniport doit allouer un tableau de GROUP_AFFINITY suffisamment grand pour contenir tous les masques d’affinité retournés.

Remarques

La version actuelle de cette structure est définie par STOR_PERF_VERSION. La définition de Version sur cette valeur permet aux indicateurs de spécifier toutes les optimisations prises en charge.

L’objectif de l’indicateur STOR_PERF_DPC_REDIRECTION est de s’assurer que les processeurs individuels ne sont pas submergés par le traitement DPC. Lorsque cet indicateur est défini, le traitement DPC est réparti sur plusieurs processeurs. Si STOR_PERF_DPC_REDIRECTION_CURRENT_CPU n’est pas défini, StorPort tente de planifier des DPC d’achèvement d’E/S sur le même processeur que celui à l’origine de l’E/S.

En règle générale, un miniport effectue les demandes d’E/S dans sa routine HwStorStartIo et appelle StorPortNotification avec le type de notification RequestComplete . Pour traiter les E/S de cette manière, le miniport laisse l’indicateur STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO défini dans le membre Flags , ce qui permet à Storport d’ajuster la redirection DPC.

Pour plus d’informations sur l’activation des interruptions signalées par message pour un appareil, consultez Activation des interruptions Message-Signaled dans le Registre.

Configuration requise

Condition requise Valeur
En-tête storport.h (inclure Storport.h)

Voir aussi

StorPortInitializePerfOpts