struttura PERF_CONFIGURATION_DATA (storport.h)
La struttura PERF_CONFIGURATION_DATA descrive le ottimizzazioni delle prestazioni supportate dalla routine StorPortInitializePerfOpts .
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;
Members
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:
Contrassegno | 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 La versione è impostata 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 La versione è impostata 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 di STOR_PERF_DPC_REDIRECTION.
Questo flag è valido quando La versione è impostata 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 STOR_PERF_DPC_REDIRECTION.
Questo flag è valido quando La versione è impostata 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 di STOR_PERF_DPC_REDIRECTION.
Questo flag è valido quando La versione è impostata su 3. Vedere la sezione Note riportata 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 il DPC e non sulla CPU che ha origine la richiesta di I/O in Storport.
Quando si usa questo flag, è necessario impostare anche il flag di STOR_PERF_DPC_REDIRECTION. Questo flag è valido quando La versione è impostata su 4. |
STOR_PERF_NO_SGL |
Questo flag viene usato per indicare che il miniport non richiede la creazione di elenchi di archiviazione con estensione sgls da parte del driver storport per un buffer delle richieste di I/O.
Questo flag è valido quando La versione è impostata su 5. |
ConcurrentChannels
Numero di chiamate simultanee alla routine HwStorStartIo supportata dal driver miniport e dal dispositivo. Questo membro è accessibile solo quando è stato impostato il flag di STOR_PERF_CONCURRENT_CHANNELS. Prima di Windows 8, i miniport non devono impostare questo valore.
FirstRedirectionMessageNumber
Quando il membro Flags ha il flag STOR_PERF_INTERRUPT_MESSAGE_RANGES impostato, il driver miniport inizializza il reindirizzamento degli 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 Flags ha il flag STOR_PERF_INTERRUPT_MESSAGE_RANGES impostato, il driver miniport inizializza il reindirizzamento di interrupt per terminare con questo numero di messaggio. Questo membro è accessibile solo quando è impostato il flag di STOR_PERF_INTERRUPT_MESSAGE_RANGES.
DeviceNode
Quando il membro Flags ha il flag STOR_PERF_ADV_CONFIG_LOCALITY impostato, 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'utilizzo nel sistema.
MessageTargets
Quando il membro Flags 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 è basata su zero, ma FirstRedirectionMessageNumber non deve essere zero. Il miniport alloca questa matrice e imposta MessageTargets in modo che punti a tale matrice. Il driver miniport deve allocare una matrice di GROUP_AFFINITY abbastanza grande per contenere tutte le maschere di affinità restituite.
Commenti
La versione corrente di questa struttura è definita da STOR_PERF_VERSION. L'impostazione di Version su questo valore consentirà a 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 avuto origine l'I/O.
In genere, un miniport completa le richieste di I/O nella 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 STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO impostato nel membro Flag che consente a Storport di modificare il reindirizzamento DPC.
Per informazioni sull'abilitazione di interruzioni segnalate dai messaggi per un dispositivo, vedere Abilitazione di interrupt Message-Signaled nel Registro di sistema.
Requisiti
Requisito | Valore |
---|---|
Intestazione | storport.h (include Storport.h) |