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)

另请参阅

StorPortInitializePerfOpts