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

지원되는 플래그의 비트 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/Os 제출과 동시에 I/Os를 완료함을 나타내는 데 사용됩니다. 이 플래그를 사용하는 경우 STOR_PERF_DPC_REDIRECTION 플래그도 설정해야 합니다.

버전이 3으로 설정된 경우 이 플래그는 유효합니다. 아래 설명 부분을 참조하세요.

STOR_PERF_DPC_REDIRECTION_CURRENT_CPU 이 플래그는 DPC 리디렉션(필수)을 옵트인하고 있지만 IO 리디렉션 선택은 IO 요청을 Storport로 시작하는 CPU가 아니라 DPC를 요청하는 CPU로 설정됨을 나타내는 데 사용됩니다.

이 플래그를 사용하는 경우 STOR_PERF_DPC_REDIRECTION 플래그도 설정해야 합니다.

버전이 4로 설정된 경우 이 플래그는 유효합니다.

STOR_PERF_NO_SGL 이 플래그는 IO 요청 버퍼에 대한 storport 드라이버에서 미니포트를 만들 필요가 없음을 나타내는 데 사용됩니다.

버전이 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 배열의 구조에서 의 필드를 초기화합니다. 이러한 구조는 현재 사용 중인 리디렉션 메시지에 해당합니다. 배열 자체는 0부터 시작하지만 FirstRedirectionMessageNumber 는 0일 필요가 없습니다. 미니포트는 이 배열을 할당하고 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를 처리하기 위해 미니포트는 Storport가 DPC 리디렉션을 조정할 수 있도록 Flags 멤버에 설정된 STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO 플래그를 그대로 둡니다.

디바이스에 대해 메시지 신호 인터럽트 사용 설정에 대한 자세한 내용은 레지스트리에서 Message-Signaled 인터럽트 사용을 참조하세요.

요구 사항

요구 사항
헤더 storport.h(Storport.h 포함)

추가 정보

StorPortInitializePerfOpts