структура 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
Побитовое ИЛИ поддерживаемых флагов. В настоящее время поддерживаются следующие флаги:
Flag | Значение |
---|---|
STOR_PERF_DPC_REDIRECTION |
Этот флаг используется, чтобы указать, что обработка DPC должна быть распределена по нескольким ЦП.
Этот флаг действителен, если для параметра Version задано значение 2 или 3. |
STOR_PERF_CONCURRENT_CHANNELS |
Этот флаг используется, чтобы указать, что поддерживаются параллельные вызовы подпрограммы HwStorStartIo . До Windows 8 минипорты не должны устанавливать этот флаг.
Этот флаг действителен, если для параметра Version задано значение 2 или 3. |
STOR_PERF_INTERRUPT_MESSAGE_RANGES |
Этот флаг используется, чтобы указать, что перенаправление прерываний поддерживается. При использовании этого флага необходимо также задать флаг STOR_PERF_DPC_REDIRECTION.
Этот флаг действителен, если для параметра Version задано значение 2 или 3. |
STOR_PERF_ADV_CONFIG_LOCALITY |
Этот флаг используется, чтобы указать, что следует использовать группу и маску, относящиеся к группе сообщений с правильным сходством. При использовании этого флага необходимо также задать флаги STOR_PERF_INTERRUPT_MESSAGE_RANGES и STOR_PERF_DPC_REDIRECTION.
Этот флаг действителен, если для параметра Version задано значение 3. |
STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO |
Этот флаг используется, чтобы указать, что драйвер мини-порта будет выполнять операции ввода-вывода одновременно с отправкой новых операций ввода-вывода. При использовании этого флага необходимо также задать флаг STOR_PERF_DPC_REDIRECTION.
Этот флаг действителен, если для параметра Version задано значение 3. См. примечания ниже. |
STOR_PERF_DPC_REDIRECTION_CURRENT_CPU |
Этот флаг используется для указания того, что вы выбираете перенаправление DPC (обязательно), но выбор перенаправления ввода-вывода устанавливается для ЦП, запрашивающего DPC, а не ЦП, отправляющего запрос ввода-вывода в Storport.
При использовании этого флага необходимо также задать флаг STOR_PERF_DPC_REDIRECTION. Этот флаг действителен, если для параметра Version задано значение 4. |
STOR_PERF_NO_SGL |
Этот флаг используется, чтобы указать, что для мини-порта не требуется создавать SGL с помощью драйвера storport для буфера запросов ввода-вывода.
Этот флаг действителен, если для параметра Version задано значение 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. Если задать для параметра 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 (включая Storport.h) |