Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

23.12. CPU 모델 및 토폴로지

이 섹션에서는 CPU 모델에 대한 요구 사항에 대해 설명합니다. 모든 하이퍼바이저에는 기본적으로 게스트가 표시되는 CPU 기능에 대한 자체 정책이 있습니다. KVM에서 게스트에 제공되는 CPU 기능 세트는 게스트 가상 머신 구성에서 선택한 CPU 모델에 따라 다릅니다. qemu32qemu64 는 기본 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의 이 섹션의 구성 요소는 다음과 같습니다.

표 23.8. CPU 모델 및 토폴로지 요소

element 설명
<cpu> 게스트 가상 머신 CPU 요구 사항을 설명하는 주요 컨테이너입니다.
<match> 게스트 가상 머신에 가상 CPU를 제공하는 방법을 이러한 요구 사항과 일치하도록 지정합니다. 토폴로지가 <cpu> 내의 유일한 요소인 경우 match 속성을 생략할 수 있습니다. match 특성에 사용 가능한 값은 다음과 같습니다.
  • minimum - 지정된 CPU 모델 및 기능은 요청된 최소 CPU를 설명합니다.
  • 정확히 - 게스트 가상 머신에 제공되는 가상 CPU는 사양과 정확히 일치합니다.
  • Strict - 호스트 물리적 머신 CPU가 사양과 정확히 일치하지 않는 한 게스트 가상 머신이 생성되지 않습니다.
match 속성은 생략할 수 있으며 기본값은 정확한 입니다.
<mode> 이 선택적 속성을 사용하면 가능한 한 호스트 물리적 머신 CPU에 가까운 게스트 가상 머신 CPU를 더 쉽게 구성할 수 있습니다. mode 특성에 가능한 값은 다음과 같습니다.
  • Custom - 게스트 가상 머신에 CPU가 표시되는 방법을 설명합니다. mode 속성이 지정되지 않은 경우 기본 설정입니다. 이 모드에서는 게스트 가상 머신이 부팅되는 호스트 실제 시스템과 관계없이 영구 게스트 가상 머신에서 동일한 하드웨어를 볼 수 있습니다.
  • host-model - 기능 XML에서 도메인 XML로 호스트 물리적 시스템 CPU 정의를 복사하는 바로 가기입니다. 도메인을 시작하기 직전에 CPU 정의가 복사되므로, 각 호스트 물리적 시스템에서 지원하는 최상의 게스트 가상 시스템 CPU를 제공하는 동시에 동일한 XML을 다른 호스트 물리적 시스템에서 사용할 수 있습니다. match 속성 및 기능 요소는 이 모드에서 사용할 수 없습니다. 자세한 내용은 libvirt 업스트림 웹 사이트를 참조하십시오.
  • 이 모드에서 호스트 패스스루 는 게스트 가상 머신에 표시되는 CPU는 libvirt 내에서 오류를 일으키는 요소를 포함하여 호스트 물리적 시스템 CPU와 정확히 동일합니다. 이 모드의 단점은 게스트 가상 머신 환경을 다른 하드웨어에서 재현할 수 없으므로 이 모드를 신중하게 사용하는 것이 좋습니다. 모델기능 요소는 이 모드에서 허용되지 않습니다.
<model> 게스트 가상 머신에서 요청한 CPU 모델을 지정합니다. 사용 가능한 CPU 모델 및 해당 정의 목록은 libvirt의 데이터 디렉터리에 설치된 cpu_map.xml 파일에서 확인할 수 있습니다. 하이퍼바이저가 정확한 CPU 모델을 사용할 수 없는 경우 libvirt는 CPU 기능 목록을 유지하면서 하이퍼바이저에서 지원하는 가장 가까운 모델로 자동 대체합니다. 선택적 대체 특성을 사용하여 이 동작을 금지할 수 있습니다. 이 경우 지원되지 않는 CPU 모델을 요청하는 도메인을 시작하려고 하면 실패합니다. 대체 특성에 지원되는 값은 allow (기본값) 및 forbid 입니다. 선택적 vendor_id 특성을 사용하여 게스트 가상 머신에서 표시되는 벤더 ID를 설정할 수 있습니다. 정확히 12자여야 합니다. 설정하지 않으면 호스트 물리적 시스템의 벤더 iID가 사용됩니다. 가능한 일반적인 값은 AuthenticAMDGenuineIntel 입니다.
<vendor> 게스트 가상 머신에서 요청한 CPU 벤더를 지정합니다. 이 요소가 없는 경우 게스트 가상 머신은 공급업체에 관계없이 지정된 기능과 일치하는 CPU에서 실행됩니다. 지원되는 공급 업체 목록은 cpu_map.xml.에서 확인할 수 있습니다.
<토폴로지> 게스트 가상 머신에 제공된 가상 CPU의 요청된 토폴로지를 지정합니다. 소켓, 코어 및 스레드에 대해 0이 아닌 세 개의 값은 각각 소켓당 총 CPU 소켓 수, 소켓당 코어 수 및 코어당 스레드 수입니다.
<feature> 선택한 CPU 모델에서 제공하는 기능을 미세 조정하는 데 사용되는 요소가 0개 이상 포함될 수 있습니다. 알려진 기능 이름 목록은 cpu_map.xml 파일에서 확인할 수 있습니다. 각 기능 요소의 의미는 다음 값 중 하나로 설정해야 하는 policy 특성에 따라 달라집니다.
  • force - 호스트 물리적 시스템 CPU에서 실제로 지원하는지 여부에 관계없이 가상의 지원을 강제 적용합니다.
  • require - 호스트 물리적 시스템 CPU에서 기능을 지원하지 않는 한 게스트 가상 머신 생성에 실패합니다. 기본 설정입니다.
  • 선택 사항 - 이 기능은 가상 CPU에서 지원하지만 호스트 물리적 시스템 CPU에서 지원하는 경우에만 지원됩니다.
  • disable - 가상 CPU에서 지원되지 않습니다.
  • For bid - 호스트 물리적 머신 CPU에서 기능을 지원하는 경우 게스트 가상 머신 생성에 실패합니다.

23.12.1. 지정된 CPU의 기능 세트 변경

CPU 모델에는 고유의 기능 세트가 있지만 개별 기능 구성 요소는 기능별로 허용되거나 금지되므로 CPU에 대한 개별 구성을 사용할 수 있습니다.

절차 23.1. CPU 기능 활성화 및 비활성화

  1. 먼저 게스트 가상 머신을 종료합니다.
  2. virsh edit [domain] 명령을 실행하여 게스트 가상 시스템의 구성 파일을 엽니다.
  3. '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>
    
    
  4. 변경 사항을 완료하면 구성 파일을 저장하고 게스트 가상 머신을 시작합니다.