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