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
结构的大小,设置为 size of (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 请求缓冲区的存储驱动程序创建 SDL。
当 版本 设置为 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 数组的结构中初始化 的字段。 这些结构对应于当前正在使用的重定向消息。 数组本身是从零开始的,但 FirstRedirectionMessageNumber 不需要为零。 微型端口分配此数组,并将 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,微型端口将保留 Flags 成员中设置STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO标志,从而允许 Storport 调整 DPC 重定向。
有关为设备启用消息信号中断的信息,请参阅 在注册表中启用 Message-Signaled 中断。
要求
要求 | 值 |
---|---|
Header | storport.h (包括 Storport.h) |