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 に分散させる必要があることを示すために使用されます。
このフラグは、 Version が 2 または 3 に設定されている場合に有効です。 |
STOR_PERF_CONCURRENT_CHANNELS |
このフラグは、 HwStorStartIo ルーチンへの同時呼び出しがサポートされていることを示すために使用されます。 Windows 8する前に、ミニポートは、このフラグを設定することはできません。
このフラグは、 Version が 2 または 3 に設定されている場合に有効です。 |
STOR_PERF_INTERRUPT_MESSAGE_RANGES |
このフラグは、割り込みリダイレクトがサポートされていることを示すために使用されます。 このフラグを使用する場合は、STOR_PERF_DPC_REDIRECTION フラグも設定する必要があります。
このフラグは、 Version が 2 または 3 に設定されている場合に有効です。 |
STOR_PERF_ADV_CONFIG_LOCALITY |
このフラグは、メッセージ グループに関連するグループとマスクを適切なアフィニティで使用する必要があることを示すために使用されます。 このフラグを使用する場合は、STOR_PERF_INTERRUPT_MESSAGE_RANGESとSTOR_PERF_DPC_REDIRECTIONフラグも設定する必要があります。
このフラグは、 Version が 3 に設定されている場合に有効です。 |
STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO |
このフラグは、ミニポート ドライバーが新しい I/O の送信と同時に I/O を完了することを示すために使用されます。 このフラグを使用する場合は、STOR_PERF_DPC_REDIRECTION フラグも設定する必要があります。
このフラグは、 Version が 3 に設定されている場合に有効です。 以下の解説を参照してください。 |
STOR_PERF_DPC_REDIRECTION_CURRENT_CPU |
このフラグは、DPC リダイレクト (必須) を選択していることを示すために使用されますが、IO リダイレクトの選択は、IO 要求を Storport に送信した CPU ではなく、DPC を要求する CPU に設定されます。
このフラグを使用する場合は、STOR_PERF_DPC_REDIRECTION フラグも設定する必要があります。 このフラグは、 Version が 4 に設定されている場合に有効です。 |
STOR_PERF_NO_SGL |
このフラグは、ミニポートが IO 要求バッファーの storport ドライバーによって作成される SGL を必要としないことを示すために使用されます。
このフラグは、 Version が 5 に設定されている場合に有効です。 |
ConcurrentChannels
ミニポート ドライバーとデバイスがサポートする HwStorStartIo ルーチンへの同時呼び出しの数。 このメンバーには、STOR_PERF_CONCURRENT_CHANNELS フラグが設定されている場合にのみアクセスされます。 Windows 8する前に、ミニポートがこの値を設定することはできません。
FirstRedirectionMessageNumber
Flags メンバーにSTOR_PERF_INTERRUPT_MESSAGE_RANGES フラグが設定されている場合、ミニポート ドライバーは、このメッセージ番号で始まる割り込みリダイレクトを初期化します。 このメンバーには、STOR_PERF_INTERRUPT_MESSAGE_RANGES フラグが設定されている場合にのみアクセスされます。
LastRedirectionMessageNumber
Flags メンバーに STOR_PERF_INTERRUPT_MESSAGE_RANGES フラグが設定されている場合、ミニポート ドライバーは、このメッセージ番号で終了するように割り込みリダイレクトを初期化します。 このメンバーには、STOR_PERF_INTERRUPT_MESSAGE_RANGES フラグが設定されている場合にのみアクセスされます。
DeviceNode
Flags メンバーに 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 割り込みを有効にする」を参照してください。
要件
要件 | 値 |
---|---|
Header | storport.h (Storport.h を含む) |