Hyper-V 호스트 CPU 리소스 관리
Windows Server 2016 이상에서 도입된 Hyper-V 호스트 CPU 리소스 컨트롤을 사용하면 Hyper-V 관리자가 "루트" 또는 관리 파티션과 게스트 VM 간에 호스트 서버 CPU 리소스를 더 잘 관리하고 할당할 수 있습니다. 관리자는 이러한 컨트롤을 사용하여 호스트 시스템의 프로세서 하위 집합을 루트 파티션에 바칠 수 있습니다. 이렇게 하면 시스템 프로세서의 별도 하위 집합에서 실행하여 Hyper-V 호스트에서 수행된 작업을 게스트 가상 머신에서 실행되는 워크로드와 분리할 수 있습니다.
Hyper-V 호스트용 하드웨어에 대한 자세한 내용은 Windows 10 Hyper-V 시스템 요구 사항을 참조하세요.
배경
Hyper-V 호스트 CPU 리소스에 대한 컨트롤을 설정하기 전에 Hyper-V 아키텍처의 기본 사항을 검토하는 것이 좋습니다. Hyper-V 아키텍처 섹션에서 일반적인 요약을 찾을 수 있습니다. 다음은 이 문서의 중요한 개념입니다.
Hyper-V는 하이퍼바이저를 제어하여 가상 머신 파티션을 만들고 관리하며, 해당 파티션 간에 컴퓨팅 리소스를 할당하고 공유합니다. 파티션은 모든 게스트 가상 머신과 게스트 VM과 루트 파티션 간에 강력한 격리 경계를 제공합니다.
루트 파티션은 고유한 속성과 게스트 가상 머신보다 더 큰 권한을 가지고 있지만 자체 가상 머신 파티션입니다. 루트 파티션은 모든 게스트 가상 머신을 제어하고, 게스트에 대한 가상 디바이스 지원을 제공하고, 게스트 가상 머신에 대한 모든 디바이스 I/O를 관리하는 관리 서비스를 제공합니다. Microsoft는 호스트 파티션에서 애플리케이션 워크로드를 실행하지 않는 것이 좋습니다.
루트 파티션의 각 VP(가상 프로세서)는 기본 LP(논리 프로세서)에 일대일로 매핑됩니다. 호스트 VP는 항상 동일한 기본 LP에서 실행됩니다. 루트 파티션의 VP는 마이그레이션되지 않습니다.
기본적으로 호스트 VP가 실행되는 LP는 게스트 VP도 실행할 수 있습니다.
게스트 VP는 하이퍼바이저가 사용 가능한 모든 논리 프로세서에서 실행되도록 예약할 수 있습니다. 하이퍼바이저 스케줄러는 임시 캐시 지역성, NUMA 토폴로지 및 게스트 VP를 예약할 때 다른 많은 요인을 고려하려고 하지만 궁극적으로 모든 호스트 LP에서 VP를 예약할 수 있습니다.
최소 루트 또는 "Minroot" 구성
초기 버전의 Hyper-V에는 파티션당 64개 VP의 아키텍처 최대 제한이 있었습니다. 이는 루트 파티션과 게스트 파티션 모두에 적용됩니다. 64개 이상의 논리 프로세서가 있는 시스템이 하이 엔드 서버에 등장함에 따라 Hyper-V는 최대 320LP의 호스트를 지원하는 대규모 시스템을 지원하기 위해 호스트 확장 제한을 발전시켰습니다. 그러나 당시 파티션당 64개의 VP 제한을 위반하면 몇 가지 문제가 발생했으며 파티션당 64개 이상의 VP를 지원하는 것이 매우 복잡해졌습니다. 이 문제를 해결하기 위해 Hyper-V는 기본 컴퓨터에 더 많은 논리 프로세서를 사용할 수 있는 경우에도 루트 파티션에 지정된 VP 수를 64로 제한했습니다. 하이퍼바이저는 게스트 VP를 실행하기 위해 사용 가능한 모든 LP를 계속 활용하지만, 인위적으로 루트 파티션을 64로 제한했습니다. 이 구성을 "최소 루트" 또는 "minroot" 구성으로 알려지게 되었습니다. 성능 테스트 결과, 64개 이상의 LP를 사용하는 대규모 시스템에서도 루트가 많은 수의 게스트 VM과 게스트 VP를 충분히 지원하는 데 64개 이상의 루트 VP가 필요하지 않았으며, 실제로는 게스트 VM의 수와 크기, 실행 중인 특정 워크로드 등에 따라 64개 미만의 루트 VP로도 충분한 경우가 많았습니다.
이 "minroot" 개념은 오늘날에도 계속 활용되고 있습니다. 실제로 Windows Server 2016 Hyper-V가 호스트 LP에 대한 최대 아키텍처 지원 제한을 512LP로 늘렸더라도 루트 파티션은 여전히 최대 320LP로 제한됩니다.
Minroot를 사용하여 호스트 컴퓨팅 리소스 제한 및 격리
Windows Server 2016 Hyper-V에서 기본 임계값이 320LP인 경우 minroot 구성은 가장 큰 서버 시스템에서만 사용됩니다. 그러나 이 기능은 Hyper-V 호스트 관리자가 훨씬 낮은 임계값으로 구성할 수 있으므로 루트 파티션에 사용할 수 있는 호스트 CPU 리소스의 양을 크게 제한하는 데 활용할 수 있습니다. 호스트에 할당된 VM 및 워크로드의 최대 수요를 지원하기 위해 사용할 특정 루트 LP 수는 신중하게 선택해야 합니다. 그러나 호스트 LP 수에 대한 합리적인 값은 프로덕션 워크로드에 대한 신중한 평가 및 모니터링을 통해 결정될 수 있으며, 광범위한 배포 전에 비프로덕션 환경에서 유효성을 검사할 수 있습니다.
Minroot 사용 및 구성
minroot 구성은 하이퍼바이저 BCD 항목을 통해 제어됩니다. minroot를 사용하도록 설정하려면 관리자 권한이 있는 cmd 프롬프트에서 다음을 수행합니다.
bcdedit /set hypervisorrootproc n
여기서 n은 루트 VP의 수입니다.
시스템을 다시 부팅해야 하며, OS 부팅의 수명 동안 새 루트 프로세서 수가 유지됩니다. minroot 구성은 런타임에 동적으로 변경할 수 없습니다.
여러 NUMA 노드가 있는 경우 각 노드는 n/NumaNodeCount
프로세서를 가져옵니다.
여러 NUMA 노드를 사용하는 경우, 각 NUMA 노드에 해당 VM의 NUMA 노드 VP를 실행하기에 충분한 무료 LP(즉, 루트 VP가 없는 LP)가 있도록 VM의 토폴로지인지 확인해야 합니다.
Minroot 구성 확인
아래와 같이 작업 관리자를 사용하여 호스트의 minroot 구성을 확인할 수 있습니다.
Minroot가 활성화되면 작업 관리자는 시스템의 총 논리 프로세서 수 외에도 현재 호스트에 할당된 논리 프로세서 수를 표시합니다.