프로세서 수 변경
동적으로 분할 가능한 서버에서 언제든지 하드웨어 파티션에 프로세서를 추가할 수 있습니다. 따라서 하드웨어 파티션의 활성 프로세서 수, 프로세서 선호도 값 또는 각 활성 프로세서에 할당된 프로세서 번호에 대해 가정해서는 안 됩니다. 프로세서 선호도 값에 설정된 비트는 하드웨어 파티션에서 현재 활성화된 각 프로세서를 나타냅니다. 하드웨어 파티션에 프로세서를 추가하면 설정된 특정 비트가 변경됩니다.
디바이스 드라이버에 대해 다음 명령문이 true인 경우 프로세서가 하드웨어 파티션에 동적으로 추가될 때 동적으로 분할 가능한 서버에서 제대로 작동하도록 드라이버를 업데이트해야 합니다.
디바이스 드라이버는 하드웨어 파티션의 활성 프로세서 수를 사용하여 사용하는 리소스 양(예: 할당하는 메모리 양, 만든 스레드 수 또는 사용하는 다른 리소스의 양)을 결정합니다. 이 경우 프로세서가 하드웨어 파티션에 동적으로 추가되면 디바이스 드라이버의 리소스 할당이 올바르지 않습니다. 이로 인해 드라이버의 성능이나 동작에 부정적인 영향을 줄 수 있습니다.
디바이스 드라이버는 프로세서 선호도 값의 비트를 안내합니다. 이 경우 디바이스 드라이버가 프로세서 선호도 값에 대한 동적 변경을 처리할 수 없거나 설정된 비트 시퀀스의 간격을 처리할 수 없는 경우 디바이스 드라이버가 제대로 작동하지 않을 수 있습니다.
디바이스 드라이버는 프로세서 선호도 값의 비트를 사용하여 드라이버 할당 리소스를 특정 프로세서에 할당합니다. 이 경우 프로세서가 하드웨어 파티션에 동적으로 추가되면 디바이스 드라이버의 리소스 할당이 올바르지 않습니다. 이로 인해 드라이버의 성능이나 동작에 부정적인 영향을 줄 수 있습니다.
디바이스 드라이버는 하드웨어 파티션의 각 활성 프로세서에 대한 데이터 구조를 할당합니다. 이 경우 디바이스 드라이버가 하드웨어 파티션에 동적으로 추가된 프로세서에 대해 이러한 데이터 구조에 액세스하려고 하면 디바이스 드라이버가 불리한 동작, 데이터 손상 또는 버그 검사 발생할 수 있습니다.
디바이스 드라이버의 디스패치 루틴은 실행 중인 프로세서의 프로세서 번호를 사용하여 해당 특정 프로세서에 할당된 데이터 구조 또는 기타 리소스에 액세스합니다. 이 경우 디바이스 드라이버의 디스패치 루틴은 하드웨어 파티션에 동적으로 추가된 프로세서에 대해 이러한 리소스에 액세스하려고 하면 불리한 동작, 데이터 손상 또는 버그 검사 발생할 수 있습니다.
디바이스 드라이버는 ISR(인터럽트 서비스 루틴), DPC(지연 프로시저 호출) 또는 특정 프로세서의 다른 스레드를 예약합니다. 이 경우 하드웨어 파티션에 프로세서를 추가하면 디바이스 드라이버가 제대로 작동하지 않을 수 있으며 디바이스 드라이버는 새 프로세서를 완전히 사용할 수 없습니다.
디바이스 드라이버는 리소스 리밸런싱을 지원하지 않습니다. 이 경우 디바이스 드라이버는 인터럽트 처리를 위해 하드웨어 파티션에 추가된 새 프로세서를 사용할 수 없습니다.
디바이스 드라이버는 부하 분산 알고리즘을 사용하여 여러 프로세서에 I/O 요청 처리를 분산합니다. 이 경우 하드웨어 파티션에 프로세서를 추가하면 디바이스 드라이버가 제대로 작동하지 않을 수 있으며 디바이스 드라이버는 새 프로세서를 완전히 사용할 수 없습니다.
디바이스 드라이버가 활성 프로세서 수 변경의 영향을 받는 경우 하드웨어 파티션에 프로세서를 추가할 때 알림을 받도록 운영 체제에 등록해야 합니다. 디바이스 드라이버에 알림이 표시되면 안전하고 최적의 작업에 필요한 대로 응답할 수 있습니다. 디바이스 드라이버가 운영 체제에 등록하는 방법에 대한 자세한 내용은 드라이버 알림을 참조하세요.
하드웨어 파티션에서 현재 활성 프로세서 수를 검색하려면 디바이스 드라이버가 KeQueryActiveProcessorCount 함수를 호출해야 합니다. 현재 프로세서 선호도 값을 검색하기 위해 디바이스 드라이버는 KeQueryActiveProcessors 함수 또는 KeQueryActiveProcessorCount 함수를 호출할 수 있습니다.
참고 디바이스 드라이버가 하드웨어 파티션의 각 활성 프로세서에 대한 데이터 구조를 할당하고 새 프로세서의 데이터 구조에 대한 메모리 할당이 실패하면 디바이스 드라이버가 실패하는 경우 디바이스 드라이버는 드라이버 초기화 중에 이러한 데이터 구조를 충분히 할당하여 운영 체제에서 지원하는 최대 프로세서 수를 처리할 수 있습니다. 이 경우 디바이스 드라이버는 하드웨어 파티션에 새 프로세서를 추가할 때 새 데이터 구조를 할당할 필요가 없습니다. 그러나 이러한 데이터 구조의 크기가 상당히 작지 않으면 메모리 리소스를 비효율적으로 사용할 수 있습니다. 디바이스 드라이버는 KeQueryMaximumProcessorCount 함수를 호출하여 운영 체제에서 지원하는 최대 프로세서 수를 쿼리할 수 있습니다.
중요 하드웨어 파티션에 프로세서를 추가했다는 알림이 표시되면 디바이스 드라이버는 항상 활성 프로세서 수 및 프로세서 선호도의 저장된 값을 업데이트해야 합니다.
중요 디바이스 드라이버는 하드웨어 파티션의 활성 프로세서 수를 결정하기 위해 프로세서 선호도 값의 설정된 비트 수를 계산해서는 안 됩니다. 이 목적을 위해 디바이스 드라이버가 KeQueryActiveProcessorCount 함수를 호출하는 것이 좋습니다. 이 함수는 활성 프로세서 수와 연결된 프로세서 선호도 값을 모두 반환합니다.
중요 Windows Vista, Windows Server 2008 이상 버전의 Windows용으로 빌드된 디바이스 드라이버는 KeNumberProcessors 커널 변수를 사용하여 하드웨어 파티션의 활성 프로세서 수를 결정하면 안 됩니다. KeNumberProcessors 커널 변수는 Windows Vista SP1(서비스 팩 1), Windows Server 2008 이상 버전의 Windows에서 사용되지 않습니다.