4.2. 安装 RHEL 实时客户机操作系统
要为实时工作负载准备虚拟机(VM)环境,请创建新虚拟机并调整其配置以实现低延迟性能。
先决条件
- 您已将您的系统设置为托管实时虚拟机。具体步骤请参阅 为实时虚拟机配置主机环境。
- 您考虑了实时虚拟机的最佳 vCPU 固定配置是什么。如需更多信息,请参阅为实时虚拟机优化 vCPU 固定。
流程
使用
virt-install工具创建带有以下属性的 RHEL 10 虚拟机:- 虚拟机有 2 个或更多分配的 vCPU
- 虚拟机使用巨页来支持内存。
以下示例命令创建一个名为
RHEL10-RT的虚拟机,它符合上述要求:# virt-install -n RHEL10-RT \ --os-variant=rhel10.0 --memory=3072,hugepages=yes \ --memorybacking hugepages=yes,size=1,unit=G,locked=yes \ --vcpus=4 --numatune=1 --disk path=./RHEL10-RT.img,bus=virtio,cache=none,format=raw,io=threads,size=30 \ --graphics none --console pty,target_type=serial \ -l downloads/rhel10.iso \ --extra-args 'console=ttyS0,115200n8 serial'安装完成后,关闭虚拟机。
# virsh shutdown <RHEL10-RT>打开虚拟机的 XML 配置。
# virsh edit <RHEL10-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"/>
从虚拟机中删除非必要的虚拟硬件,以提高性能。
删除
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'/>删除 Trusted Platform 模块(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>
编辑 &
lt;numatune> 部分以设置 NUMA 节点。<numatune> <memory mode='strict' nodeset='1'/> </numatune>编辑 配置的
<cputune> 部分,以按照为实时虚拟机优化 vCPU 固定 中的计划设置 vCPU NUMA 固定。以下示例使用 4 个 vCPU 和这些参数配置虚拟机:
- 从 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> 配置满足以下要求:- 分配物理内核的同级功能,以执行实时或内务任务。
- 在同一虚拟机上同时使用物理内核同级设备。
- 对于固定到同一物理内核的同级的 vCPU,请将 vCPU 分配给同一任务(实时进程或日常处理)。
请注意,上面的示例配置满足这些要求。
- 保存并退出 XML 配置。
故障排除
- 请参阅 RHEL 实时 guest 安装故障排除。
验证
在主机上,查看虚拟机的配置,并验证它具有必要的参数:
# virsh dumpxml <RHEL10-RT>
后续步骤