4.2. RHEL 실시간 게스트 운영 체제 설치
실시간 워크로드를 위한 VM(가상 머신) 환경을 준비하려면 새 VM을 생성하고 대기 시간이 짧은 성능을 위해 구성을 조정합니다.
사전 요구 사항
- 실시간 VM을 호스팅하도록 시스템을 설정했습니다. 자세한 내용은 실시간 가상 머신의 호스트 환경 구성을 참조하십시오.
- 실시간 VM에 대한 최적의 vCPU 고정 구성을 고려했습니다. 자세한 내용은 실시간 가상 머신의 vCPU 고정 최적화를 참조하십시오.
프로세스
virt-install유틸리티를 사용하여 다음 속성으로 RHEL 9 VM을 생성합니다.- VM에 2개 이상의 vCPU가 할당됨
- VM은 메모리 지원에 대규모 페이지를 사용합니다.
다음 예제 명령은 언급된 요구 사항에 맞는
RHEL9-RT라는 VM을 생성합니다.# virt-install -n RHEL9-RT \ --os-variant=rhel9.6 --memory=3072,hugepages=yes \ --memorybacking hugepages=yes,size=1,unit=G,locked=yes \ --vcpus=4 --numatune=1 --disk path=./rhel9-rt.img,bus=virtio,cache=none,format=raw,io=threads,size=30 \ --graphics none --console pty,target_type=serial \ -l downloads/rhel9.iso \ --extra-args 'console=ttyS0,115200n8 serial'설치가 완료되면 VM을 종료합니다.
# virsh shutdown <RHEL9-RT>VM의 XML 구성을 엽니다.
# virsh edit <RHEL9-RT>다음과 같이 CPU 구성을 조정합니다.
AMD64 및 Intel 64 호스트에서 다음을 수행합니다.
<cpu mode='host-model' check='partial'> <feature policy='require' name='tsc-deadline'/> </cpu>64비트 ARM 호스트의 경우:
<cpu mode="host-passthrough" check="none"/>
VM에서 필수가 아닌 가상 하드웨어를 제거하여 성능을 개선합니다.
virtioRNG 장치의 섹션을 삭제합니다.<rng model='virtio'> <backend model='random'>/dev/urandom</backend> <address type='pci' domain='0x0000' bus='0x07' slot='0x00' function='0x0'/> </rng>다음과 같은 USB 장치를 제거합니다.
<hostdev mode='subsystem' type='usb' managed='yes'> <source> <vendor id='0x1234'/> <product id='0xabcd'/> </source> </hostdev>다음과 같은 직렬 장치를 제거합니다.
<serial type='dev'> <source path='/dev/ttyS0'/> <target port='0'/> </serial>QXL 장치를 제거합니다.
<video> <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1'/> </video>그래픽 표시를 비활성화합니다.
<graphics type='vnc' ports='-1' autoport='yes' listen='127.0.0.1'> <listen type='address' address='127.0.0.1'> </graphics>USB 컨트롤러 설정에서 모델을
none으로 변경하여 비활성화합니다.<controller type='usb' index='0' model='none'/>신뢰할 수 있는 플랫폼 모듈(TPM) 구성을 제거하여 RT 작업을 방해하지 않습니다.
<tpm model='tpm-crb'> <backend type='emulator' version='2.0'/> </tpm>memballoon기능을 비활성화합니다.<memballoon model='none'>구성의
<features> 섹션에서PMU및vmport기능이 비활성화되었는지 확인하여 발생할 수 있는 대기 시간을 방지합니다.<features> [...] <pmu state='off'/> <vmport state='off'/> </features>64비트 ARM 호스트에서는
PMU만 비활성화해야 합니다.<features> [...] <pmu state='off'/> </features>
<
;numatune> 섹션을 편집하여 NUMA 노드를 설정합니다.<numatune> <memory mode='strict' nodeset='1'/> </numatune>구성의
<cputune> 섹션을 편집하여 실시간 가상 머신에 대해 계획된 vCPU 고정을 계획한 대로 vCPU NUMA 고정을 설정합니다.다음 예제에서는 4개의 vCPU 및 이러한 매개변수를 사용하여 VM을 구성합니다.
- NUMA 노드 0의 격리된 코어 15는 비실시간 vCPU입니다.
- NUMA 노드 1~3의 코어 16, 47 및 48은 실시간 vCPU입니다.
- 구성은 모든 QEMU I/O 스레드를 호스트 하우스키핑 코어(0 및 32)에 고정합니다.
<cputune> <vcpupin vcpu='0' cpuset='15'/> <vcpupin vcpu='1' cpuset='47'/> <vcpupin vcpu='2' cpuset='16'/> <vcpupin vcpu='3' cpuset='48'/> <emulatorpin cpuset='0,32'/> <emulatorsched scheduler='fifo' priority='1'/> <vcpusched vcpus='0' scheduler='fifo' priority='1'/> <vcpusched vcpus='1' scheduler='fifo' priority='1'/> <vcpusched vcpus='2' scheduler='fifo' priority='1'/> <vcpusched vcpus='3' scheduler='fifo' priority='1'/> </cputune>참고호스트에서 활성화된 하이퍼 스레딩 과 함께 하드웨어를 사용하는 경우 <
cputune> 구성도 다음 요구 사항을 충족하는지 확인합니다.- 물리적 코어의 형제를 할당하여 실시간 또는 하우스키핑 작업을 수행합니다.
- 동일한 VM에서 물리적 코어의 형제를 모두 사용합니다.
- 동일한 물리적 코어의 형제에 고정된 vCPU의 경우, 형제와 동일한 작업(실시간 프로세스 또는 하우스키핑)에 vCPU를 할당합니다.
위의 구성 예제에서는 이러한 요구 사항을 충족합니다.
- XML 구성을 저장하고 종료합니다.
문제 해결
- RHEL 실시간 게스트 설치 문제 해결을 참조하십시오.
검증
호스트에서 VM의 구성을 보고 필요한 매개변수가 있는지 확인합니다.
# virsh dumpxml <RHEL9-RT>