Поделиться через


структура 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

Побитовое ИЛИ поддерживаемых флагов. В настоящее время поддерживаются следующие флаги:

Флаг Значение
STOR_PERF_DPC_REDIRECTION Этот флаг используется для указания того, что обработка DPC должна распространяться по нескольким ЦП.

Этот флаг действителен, если версия имеет значение 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 Этот флаг используется для указания того, что минипорт-драйвер будет выполнять операции ввода-вывода одновременно с отправкой новых операций ввода-вывода. При использовании этого флага также необходимо задать флаг STOR_PERF_DPC_REDIRECTION.

Этот флаг действителен, если версия имеет значение 3. См. приведенные ниже замечания.

STOR_PERF_DPC_REDIRECTION_CURRENT_CPU Этот флаг используется для указания того, что вы выбираете перенаправление DPC (обязательно), но выбор перенаправления операций ввода-вывода устанавливается на ЦП, запрашивающий DPC, а не ЦП, отправляющий запрос ввода-вывода в Storport.

При использовании этого флага также необходимо задать флаг STOR_PERF_DPC_REDIRECTION.

Этот флаг действителен, если для версии задано значение 4.

STOR_PERF_NO_SGL Этот флаг используется для указания того, что мини-порт не требует создания SGLs драйвером storport для буфера запросов ввода-вывода.

Этот флаг действителен, если версии имеет значение 5.

ConcurrentChannels

Количество одновременных вызовов HwStorStartIo подпрограмме, поддерживаемой драйвером мини-порта и устройством. Доступ к этому элементу осуществляется только при установке флага STOR_PERF_CONCURRENT_CHANNELS. До Windows 8 минипорты не должны задавать это значение.

FirstRedirectionMessageNumber

Если элемент Flags имеет набор флагов 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 заключается в том, чтобы отдельные ЦП не перегружены обработкой DPC. При установке этого флага обработка DPC распределяется по нескольким ЦП. Если STOR_PERF_DPC_REDIRECTION_CURRENT_CPU не задано, StorPort попытается запланировать завершение операций ввода-вывода на том же ЦП, который был создан для ввода-вывода.

Как правило, мини-порт завершает запросы ввода-вывода в подпрограмме HwStorStartIo и вызывает StorPortNotification с типом уведомления RequestComplete. Для обработки ввода-вывода таким образом минипорт оставляет флаг STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO в элементе Flags, позволяя Storport настроить перенаправление DPC.

Сведения о включении прерываний, сигналированных сообщением для устройства, см. в разделе Включение прерываний Message-Signaled в реестре.

Требования

Требование Ценность
заголовка storport.h (include Storport.h)

См. также

StorPortInitializePerfOpts