struttura PERF_CONFIGURATION_DATA (storport.h)
La struttura PERF_CONFIGURATION_DATA descrive le ottimizzazioni delle prestazioni supportate dalla routine StorPortInitializePerfOpt s.
Sintassi
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;
Membri
Version
Numero di versione della struttura. Impostare questo membro durante l'esecuzione di query e l'inizializzazione delle ottimizzazioni.
Size
Dimensione della struttura, impostata su sizeof(PERF_CONFIGURATION_DATA).
Flags
Or bit per bit dei flag supportati. Attualmente sono supportati i flag seguenti:
Bandiera | Significato |
---|---|
STOR_PERF_DPC_REDIRECTION |
Questo flag viene usato per indicare che l'elaborazione DPC deve essere distribuita su più CPU.
Questo flag è valido quando versione è impostato su 2 o 3. |
STOR_PERF_CONCURRENT_CHANNELS |
Questo flag viene usato per indicare che sono supportate le chiamate simultanee alla routine HwStorStartIo. Prima di Windows 8, i miniport non devono impostare questo flag.
Questo flag è valido quando versione è impostato su 2 o 3. |
STOR_PERF_INTERRUPT_MESSAGE_RANGES |
Questo flag viene usato per indicare che il reindirizzamento degli interrupt è supportato. Quando si usa questo flag, è necessario impostare anche il flag STOR_PERF_DPC_REDIRECTION.
Questo flag è valido quando versione è impostato su 2 o 3. |
STOR_PERF_ADV_CONFIG_LOCALITY |
Questo flag viene usato per indicare che è necessario usare il gruppo e la maschera relativi al gruppo di messaggi con l'affinità corretta. Quando si usa questo flag, è necessario impostare anche il STOR_PERF_INTERRUPT_MESSAGE_RANGES e i flag di STOR_PERF_DPC_REDIRECTION.
Questo flag è valido quando versione è impostato su 3. |
STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO |
Questo flag viene usato per indicare che il driver miniport completerà i/o simultaneamente con l'invio di nuovi I/O. Quando si usa questo flag, è necessario impostare anche il flag STOR_PERF_DPC_REDIRECTION.
Questo flag è valido quando versione è impostato su 3. Vedere le osservazioni riportate di seguito. |
STOR_PERF_DPC_REDIRECTION_CURRENT_CPU |
Questo flag viene usato per indicare che si sceglie il reindirizzamento DPC (obbligatorio), ma la scelta di reindirizzamento di I/O è impostata sulla CPU che richiede DPC e non sulla CPU che ha originato la richiesta di I/O in Storport.
Quando si usa questo flag, è necessario impostare anche il flag STOR_PERF_DPC_REDIRECTION. Questo flag è valido quando versione è impostato su 4. |
STOR_PERF_NO_SGL |
Questo flag viene usato per indicare che il miniport non richiede la creazione degli ELENCHI di archiviazione con il driver storport per un buffer delle richieste di I/O.
Questo flag è valido quando versione è impostato su 5. |
ConcurrentChannels
Numero di chiamate simultanee alla routine HwStorStartIo che il driver miniport e il supporto del dispositivo. Questo membro è accessibile solo quando è stato impostato il flag STOR_PERF_CONCURRENT_CHANNELS. Prima di Windows 8, i miniport non devono impostare questo valore.
FirstRedirectionMessageNumber
Quando il membro flag flag STOR_PERF_INTERRUPT_MESSAGE_RANGES, il driver miniport inizializza il reindirizzamento interrupt per iniziare con questo numero di messaggio. Questo membro è accessibile solo quando è impostato il flag di STOR_PERF_INTERRUPT_MESSAGE_RANGES.
LastRedirectionMessageNumber
Quando il membro Flag ha impostato il flag STOR_PERF_INTERRUPT_MESSAGE_RANGES, il driver miniport inizializza il reindirizzamento di interrupt alla fine con questo numero di messaggio. Questo membro è accessibile solo quando è impostato il flag di STOR_PERF_INTERRUPT_MESSAGE_RANGES.
DeviceNode
Quando il membro Flag ha impostato il flag STOR_PERF_ADV_CONFIG_LOCALITY, Storport inizializza questo campo in modo da contenere il numero di nodo NUMA in cui risiede il dispositivo del driver miniport.
Reserved
Riservato per l'uso del sistema.
MessageTargets
Quando il membro Flag ha il flag STOR_PERF_ADV_CONFIG_LOCALITY impostato, Storport inizializza i campi di nelle strutture di una matrice di GROUP_AFFINITY. Queste strutture corrispondono ai messaggi di reindirizzamento attualmente in uso. La matrice stessa è in base zero, ma FirstRedirectionMessageNumber non è necessario essere zero. Il miniport alloca questa matrice e imposta MessageTargets in modo che punti a tale matrice. Il driver miniport deve allocare una matrice GROUP_AFFINITY abbastanza grande da contenere tutte le maschere di affinità restituite.
Osservazioni
La versione corrente di questa struttura è definita da STOR_PERF_VERSION. L'impostazione di versione su questo valore consentirà flag di specificare tutte le ottimizzazioni supportate.
Lo scopo del flag di STOR_PERF_DPC_REDIRECTION è garantire che le singole CPU non vengano sovraccaricate con l'elaborazione DPC. Quando questo flag è impostato, l'elaborazione DPC viene distribuita su più CPU. Se STOR_PERF_DPC_REDIRECTION_CURRENT_CPU non è impostato, StorPort tenterà di pianificare i controller di dominio di completamento di I/O nella stessa CPU che ha originato l'I/O.
In genere, un miniport completa le richieste di I/O in routine HwStorStartIo e chiama StorPortNotification con il tipo di notifica RequestComplete. Per l'elaborazione di I/O in questo modo, il miniport lascerà il flag di STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO impostato nel Flag membro che consente a Storport di modificare il reindirizzamento DPC.
Per informazioni sull'abilitazione di interrupt con segnalazione dei messaggi per un dispositivo, vedere Abilitazione di interrupt Message-Signaled nel Registro di sistema.
Fabbisogno
Requisito | Valore |
---|---|
intestazione | storport.h (include Storport.h) |