23.12. CPU 모델 및 토폴로지
이 섹션에서는 CPU 모델에 대한 요구 사항에 대해 설명합니다. 모든 하이퍼바이저에는 기본적으로 게스트가 표시되는 CPU 기능에 대한 자체 정책이 있습니다. KVM에서 게스트에 제공되는 CPU 기능 세트는 게스트 가상 머신 구성에서 선택한 CPU 모델에 따라 다릅니다.
qemu32
및 qemu64
는 기본 CPU 모델이지만 사용 가능한 다른 모델(추가 기능)이 있습니다. 각 모델 및 해당 토폴로지는 도메인 XML의 다음 요소를 사용하여 지정됩니다.
그림 23.14. CPU 모델 및 토폴로지 예 1
<cpu match='exact'> <model fallback='allow'>core2duo</model> <vendor>Intel</vendor> <topology sockets='1' cores='2' threads='1'/> <feature policy='disable' name='lahf_lm'/> </cpu>
그림 23.15. CPU 모델 및 토폴로지 예 2
<cpu mode='host-model'> <model fallback='forbid'/> <topology sockets='1' cores='2' threads='1'/> </cpu>
그림 23.16. CPU 모델 및 토폴로지 예 3
<cpu mode='host-passthrough'/>
CPU 모델 또는 해당 기능에 제한이 없는 경우 다음과 같은 간단한
<cpu>
요소를 사용할 수 있습니다.
그림 23.17. CPU 모델 및 토폴로지 예 4
<cpu> <topology sockets='1' cores='2' threads='1'/> </cpu>
그림 23.18. PPC64/PSeries CPU 모델 예
<cpu mode='custom'> <model>POWER8</model> </cpu>
그림 23.19. aarch64/virt CPU 모델 예
<cpu mode='host-passthrough'/>
도메인 XML의 이 섹션의 구성 요소는 다음과 같습니다.
element | 설명 |
---|---|
<cpu> | 게스트 가상 머신 CPU 요구 사항을 설명하는 주요 컨테이너입니다. |
<match> | 게스트 가상 머신에 가상 CPU를 제공하는 방법을 이러한 요구 사항과 일치하도록 지정합니다. 토폴로지가 <cpu> 내의 유일한 요소인 경우 match 속성을 생략할 수 있습니다. match 특성에 사용 가능한 값은 다음과 같습니다.
match 속성은 생략할 수 있으며 기본값은 정확한 입니다. |
<mode> | 이 선택적 속성을 사용하면 가능한 한 호스트 물리적 머신 CPU에 가까운 게스트 가상 머신 CPU를 더 쉽게 구성할 수 있습니다. mode 특성에 가능한 값은 다음과 같습니다.
|
<model> | 게스트 가상 머신에서 요청한 CPU 모델을 지정합니다. 사용 가능한 CPU 모델 및 해당 정의 목록은 libvirt의 데이터 디렉터리에 설치된 cpu_map.xml 파일에서 확인할 수 있습니다. 하이퍼바이저가 정확한 CPU 모델을 사용할 수 없는 경우 libvirt는 CPU 기능 목록을 유지하면서 하이퍼바이저에서 지원하는 가장 가까운 모델로 자동 대체합니다. 선택적 대체 특성을 사용하여 이 동작을 금지할 수 있습니다. 이 경우 지원되지 않는 CPU 모델을 요청하는 도메인을 시작하려고 하면 실패합니다. 대체 특성에 지원되는 값은 allow (기본값) 및 forbid 입니다. 선택적 vendor_id 특성을 사용하여 게스트 가상 머신에서 표시되는 벤더 ID를 설정할 수 있습니다. 정확히 12자여야 합니다. 설정하지 않으면 호스트 물리적 시스템의 벤더 iID가 사용됩니다. 가능한 일반적인 값은 AuthenticAMD 및 GenuineIntel 입니다. |
<vendor> | 게스트 가상 머신에서 요청한 CPU 벤더를 지정합니다. 이 요소가 없는 경우 게스트 가상 머신은 공급업체에 관계없이 지정된 기능과 일치하는 CPU에서 실행됩니다. 지원되는 공급 업체 목록은 cpu_map.xml .에서 확인할 수 있습니다. |
<토폴로지> | 게스트 가상 머신에 제공된 가상 CPU의 요청된 토폴로지를 지정합니다. 소켓, 코어 및 스레드에 대해 0이 아닌 세 개의 값은 각각 소켓당 총 CPU 소켓 수, 소켓당 코어 수 및 코어당 스레드 수입니다. |
<feature> | 선택한 CPU 모델에서 제공하는 기능을 미세 조정하는 데 사용되는 요소가 0개 이상 포함될 수 있습니다. 알려진 기능 이름 목록은 cpu_map.xml 파일에서 확인할 수 있습니다. 각 기능 요소의 의미는 다음 값 중 하나로 설정해야 하는 policy 특성에 따라 달라집니다.
|
23.12.1. 지정된 CPU의 기능 세트 변경
CPU 모델에는 고유의 기능 세트가 있지만 개별 기능 구성 요소는 기능별로 허용되거나 금지되므로 CPU에 대한 개별 구성을 사용할 수 있습니다.
절차 23.1. CPU 기능 활성화 및 비활성화
- 먼저 게스트 가상 머신을 종료합니다.
- virsh edit [domain] 명령을 실행하여 게스트 가상 시스템의 구성 파일을 엽니다.
'allow'
속성 값을 포함하도록<기능>
또는<모델>
내의 매개변수를 변경하여 기능을 허용하도록 강제 적용하거나'forbid'
가 해당 기능에 대한 지원을 거부하도록 합니다.그림 23.20. CPU 기능 활성화 또는 비활성화 예
<!-- original feature set --> <cpu mode='host-model'> <model fallback='allow'/> <topology sockets='1' cores='2' threads='1'/> </cpu> <!--changed feature set--> <cpu mode='host-model'> <model fallback='forbid'/> <topology sockets='1' cores='2' threads='1'/> </cpu>
그림 23.21. CPU 기능 활성화 또는 비활성화를 위한 예 2
<!--original feature set--> <cpu match='exact'> <model fallback='allow'>core2duo</model> <vendor>Intel</vendor> <topology sockets='1' cores='2' threads='1'/> <feature policy='disable' name='lahf_lm'/> </cpu> <!--changed feature set--> <cpu match='exact'> <model fallback='allow'>core2duo</model> <vendor>Intel</vendor> <topology sockets='1' cores='2' threads='1'/> <feature policy='enable' name='lahf_lm'/> </cpu>
- 변경 사항을 완료하면 구성 파일을 저장하고 게스트 가상 머신을 시작합니다.