4.2. 安装 RHEL 实时客户机操作系统
要为实时工作负载准备虚拟机(VM)环境,请创建新虚拟机并调整其配置以实现低延迟性能。
先决条件
- 您已将您的系统设置为托管实时虚拟机。具体步骤请参阅 为实时虚拟机配置主机环境。
- 您考虑了实时虚拟机的最佳 vCPU 固定配置是什么。如需更多信息,请参阅为实时虚拟机优化 vCPU 固定。
流程
使用
virt-install
工具创建带有以下属性的 RHEL 9 虚拟机:- 虚拟机有 2 个或更多分配的 vCPU
- 虚拟机使用巨页来支持内存。
以下示例命令创建一个名为
RHEL9-RT
的虚拟机,它符合上述要求: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'
# 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'
Copy to Clipboard Copied! 安装完成后,关闭虚拟机。
virsh shutdown <RHEL9-RT>
# virsh shutdown <RHEL9-RT>
Copy to Clipboard Copied! 打开虚拟机的 XML 配置。
virsh edit <RHEL9-RT>
# virsh edit <RHEL9-RT>
Copy to Clipboard Copied! 调整 CPU 配置,如下所示:
<cpu mode='host-model' check='partial'> <feature policy='require' name='tsc-deadline'/> </cpu>
<cpu mode='host-model' check='partial'> <feature policy='require' name='tsc-deadline'/> </cpu>
Copy to Clipboard Copied! 从虚拟机中删除非必要的虚拟硬件,以提高性能。
删除
virtio
RNG 设备的 部分。<rng model='virtio'> <backend model='random'>/dev/urandom</backend> <address type='pci' domain='0x0000' bus='0x07' slot='0x00' function='0x0'/> </rng>
<rng model='virtio'> <backend model='random'>/dev/urandom</backend> <address type='pci' domain='0x0000' bus='0x07' slot='0x00' function='0x0'/> </rng>
Copy to Clipboard Copied! 删除 USB 设备,如下所示:
<hostdev mode='subsystem' type='usb' managed='yes'> <source> <vendor id='0x1234'/> <product id='0xabcd'/> </source> </hostdev>
<hostdev mode='subsystem' type='usb' managed='yes'> <source> <vendor id='0x1234'/> <product id='0xabcd'/> </source> </hostdev>
Copy to Clipboard Copied! 删除串行设备,如下所示:
<serial type='dev'> <source path='/dev/ttyS0'/> <target port='0'/> </serial>
<serial type='dev'> <source path='/dev/ttyS0'/> <target port='0'/> </serial>
Copy to Clipboard Copied! 删除 QXL 设备。
<video> <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1'/> </video>
<video> <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1'/> </video>
Copy to Clipboard Copied! 禁用图形显示。
<graphics type='vnc' ports='-1' autoport='yes' listen='127.0.0.1'> <listen type='address' address='127.0.0.1'> </graphics>
<graphics type='vnc' ports='-1' autoport='yes' listen='127.0.0.1'> <listen type='address' address='127.0.0.1'> </graphics>
Copy to Clipboard Copied! 在 USB 控制器设置中,将模型改为
none
以禁用它。<controller type='usb' index='0' model='none'/>
<controller type='usb' index='0' model='none'/>
Copy to Clipboard Copied! 删除 Trusted Platform 模块(TPM)配置,使其不会影响 RT 操作。
<tpm model='tpm-crb'> <backend type='emulator' version='2.0'/> </tpm>
<tpm model='tpm-crb'> <backend type='emulator' version='2.0'/> </tpm>
Copy to Clipboard Copied! 禁用
memballoon
功能。<memballoon model='none'>
<memballoon model='none'>
Copy to Clipboard Copied! 在配置的
<features
> 部分中,确保禁用PMU
和vmport
功能,以避免它们可能导致的延迟。<features> [...] <pmu state='off'/> <vmport state='off'/> </features>
<features> [...] <pmu state='off'/> <vmport state='off'/> </features>
Copy to Clipboard Copied!
编辑 &
lt;numatune
> 部分以设置 NUMA 节点。<numatune> <memory mode='strict' nodeset='1'/> </numatune>
<numatune> <memory mode='strict' nodeset='1'/> </numatune>
Copy to Clipboard Copied! 编辑 配置的
<
;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> <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>
Copy to Clipboard Copied! 注意如果您的主机使用 启用了超线程 的硬件,还要确保 <
cputune&
gt; 配置满足以下要求:- 分配物理内核的同级功能,以执行实时或内务任务。
- 在同一虚拟机上同时使用物理内核同级设备。
- 对于固定到同一物理内核的同级的 vCPU,请将 vCPU 分配给同一任务(实时进程或日常处理)。
请注意,上面的示例配置满足这些要求。
- 保存并退出 XML 配置。
故障排除
- 请参阅 RHEL 实时 guest 安装故障排除。
验证
在主机上,查看虚拟机的配置,并验证它具有必要的参数:
virsh dumpxml <RHEL9-RT>
# virsh dumpxml <RHEL9-RT>
Copy to Clipboard Copied!