PERF_CONFIGURATION_DATA構造体 (storport.h)
PERF_CONFIGURATION_DATA構造体は、StorPortInitializePerfOpts ルーチンでサポートされるパフォーマンスの最適化について説明します。
構文
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;
メンバーズ
Version
構造体のバージョン番号。 最適化のクエリと初期化を行うときに、このメンバーを設定します。
Size
構造体のサイズ。sizeof(PERF_CONFIGURATION_DATA)に設定されます。
Flags
サポートされているフラグのビットごとの OR。 現在、次のフラグがサポートされています。
旗 | 意味 |
---|---|
STOR_PERF_DPC_REDIRECTION |
このフラグは、DPC 処理を複数の CPU に分散させる必要があることを示すために使用されます。
このフラグは、バージョン が 2 または 3 に設定されている場合に有効です。 |
STOR_PERF_CONCURRENT_CHANNELS |
このフラグは、HwStorStartIo ルーチンへの同時呼び出しがサポートされていることを示すために使用されます。 Windows 8 より前のミニポートでは、このフラグを設定しないでください。
このフラグは、バージョン が 2 または 3 に設定されている場合に有効です。 |
STOR_PERF_INTERRUPT_MESSAGE_RANGES |
このフラグは、割り込みリダイレクトがサポートされていることを示すために使用されます。 このフラグを使用する場合は、STOR_PERF_DPC_REDIRECTION フラグも設定する必要があります。
このフラグは、バージョン が 2 または 3 に設定されている場合に有効です。 |
STOR_PERF_ADV_CONFIG_LOCALITY |
このフラグは、適切なアフィニティを持つメッセージ グループに関連するグループとマスクを使用する必要があることを示すために使用されます。 このフラグを使用する場合は、STOR_PERF_INTERRUPT_MESSAGE_RANGESとSTOR_PERF_DPC_REDIRECTIONフラグも設定する必要があります。
このフラグは、バージョン が 3 に設定されている場合に有効です。 |
STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO |
このフラグは、ミニポート ドライバーが新しい I/O の送信と同時に I/O を完了することを示すために使用されます。 このフラグを使用する場合は、STOR_PERF_DPC_REDIRECTION フラグも設定する必要があります。
このフラグは、バージョン が 3 に設定されている場合に有効です。 以下の解説を参照してください。 |
STOR_PERF_DPC_REDIRECTION_CURRENT_CPU |
このフラグは、DPC リダイレクト (必須) を選択していることを示すために使用されますが、IO リダイレクトの選択は、Storport への IO 要求を開始した CPU ではなく、DPC を要求する CPU に設定されます。
このフラグを使用する場合は、STOR_PERF_DPC_REDIRECTION フラグも設定する必要があります。 このフラグは、バージョン が 4 に設定されている場合に有効です。 |
STOR_PERF_NO_SGL |
このフラグは、ミニポートが IO 要求バッファーの storport ドライバーによって作成される SGL を必要としないことを示すために使用されます。
このフラグは、バージョン が 5 に設定されている場合に有効です。 |
ConcurrentChannels
ミニポート ドライバーとデバイスがサポートする HwStorStartIo ルーチンへの同時呼び出しの数。 このメンバーは、STOR_PERF_CONCURRENT_CHANNELS フラグが設定されている場合にのみアクセスされます。 Windows 8 より前のミニポートでは、この値を設定しないでください。
FirstRedirectionMessageNumber
フラグ メンバーにSTOR_PERF_INTERRUPT_MESSAGE_RANGES フラグが設定されている場合、ミニポート ドライバーはこのメッセージ番号で始まる割り込みリダイレクトを初期化します。 このメンバーは、STOR_PERF_INTERRUPT_MESSAGE_RANGES フラグが設定されている場合にのみアクセスされます。
LastRedirectionMessageNumber
フラグ メンバーにSTOR_PERF_INTERRUPT_MESSAGE_RANGES フラグが設定されている場合、ミニポート ドライバーは、このメッセージ番号で終了するように割り込みリダイレクトを初期化します。 このメンバーは、STOR_PERF_INTERRUPT_MESSAGE_RANGES フラグが設定されている場合にのみアクセスされます。
DeviceNode
フラグ メンバーにSTOR_PERF_ADV_CONFIG_LOCALITY フラグが設定されている場合、Storport はこのフィールドを初期化して、ミニポート ドライバーのデバイスが存在する NUMA ノード番号を格納します。
Reserved
システム用に予約されています。
MessageTargets
Flags メンバーに STOR_PERF_ADV_CONFIG_LOCALITY フラグが設定されている場合、Storport は GROUP_AFFINITY 配列の構造体内のフィールドを初期化します。 これらの構造体は、現在使用されているリダイレクト メッセージに対応します。 配列自体は 0 から始まりますが、FirstRedirectionMessageNumber 0 である必要はありません。 ミニポートは、この配列を割り当て、MessageTargets をポイントするように設定します。 ミニポート ドライバーは、返されるすべてのアフィニティ マスクを保持するのに十分な大きさの GROUP_AFFINITY 配列を割り当てる必要があります。
備考
この構造体の現在のバージョンは、STOR_PERF_VERSIONによって定義されます。 バージョン この値に設定すると、Flags でサポートされているすべての最適化を指定できます。
STOR_PERF_DPC_REDIRECTION フラグの目的は、個々の CPU が DPC 処理に圧倒されないようにすることです。 このフラグを設定すると、DPC 処理は複数の CPU に分散されます。 STOR_PERF_DPC_REDIRECTION_CURRENT_CPUが設定されていない場合、StorPort は I/O を開始したのと同じ CPU で I/O 完了 DPC のスケジュールを設定しようとします。
通常、ミニポートは HwStorStartIo ルーチン I/O 要求を完了し、RequestComplete 通知の種類で StorPortNotification 呼び出します。 この方法で I/O を処理する場合、ミニポートは、Storport が DPC リダイレクトを調整できるように、フラグ メンバーに設定されたSTOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO フラグを残します。
デバイスのメッセージ通知割り込みを有効にする方法については、「レジストリ で Message-Signaled 割り込みを有効にするを参照してください。
必要条件
要件 | 価値 |
---|---|
ヘッダー | storport.h (Storport.h を含む) |
関連項目
StorPortInitializePerfOpts の