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 重定向选项设置为请求 DPC 的 CPU,而不是将 IO 请求发起到 Storport 的 CPU。
使用此标志时,还必须设置STOR_PERF_DPC_REDIRECTION标志。 版本 设置为 4 时,此标志有效。 |
STOR_PERF_NO_SGL |
此标志用于指示微型端口不需要由 IO 请求缓冲区的 storport 驱动程序创建 SCL。
版本 设置为 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
当 标志 成员设置了STOR_PERF_ADV_CONFIG_LOCALITY标志时,Storport 将初始化 GROUP_AFFINITY 数组结构中的字段。 这些结构对应于当前正在使用的重定向消息。 数组本身从零开始,但 FirstRedirectionMessageNumber 不需要为零。 微型端口分配此数组,并将 MessageTargets 设置为指向该数组。 微型端口驱动程序必须分配足够大的 GROUP_AFFINITY 数组来容纳所有返回的关联掩码。
言论
此结构的当前版本由 STOR_PERF_VERSION定义。 将 版本 设置为此值将允许 标志 指定所有支持的优化。
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,微型端口将保留 标志 成员中设置的STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO标志,从而允许 Storport 调整 DPC 重定向。
有关为设备启用消息信号中断的信息,请参阅 在注册表中启用 Message-Signaled 中断。
要求
要求 | 价值 |
---|---|
标头 | storport.h (包括 Storport.h) |