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 포함) |