qemu-kvm 之 CPU 绑定

本文详细介绍了QEMU-KVM中的CPU绑定技术,包括CPU绑定的场景、优缺点及不同绑定方式,如共享Cache绑定、共享Core绑定和共享Socket绑定。CPU绑定能够优化缓存命中率,但也可能影响负载均衡,需要根据系统实际情况谨慎设置。

最近在看cpu绑定这块的东东,整理出来,自己记性本来不好,幸好有烂笔头的习惯,一是自己能记下,二是分享给大家一起讨论


cpu绑定场景

CPU的绑定设置,是指将进程绑定到特定的一个或多个CPU上去执行,而不允许调度到其他的CPU上。Linux内核对进程的调度算法也是遵守进程的处理器亲和性设置的。

使用CPU绑定考虑就是将重要的业务进程隔离开,对于部分实时进程调度优先级高,可以将其绑定到一个指定核上,既可以保证实时进程的调度,也可以避免其他CPU上进程被该实时进程干扰。

 

cpu绑定优缺点

设置CPU绑定带来的好处是可以减少进程在多个CPU之间交换运行带来的缓存命中失效(cache missing),从该进程运行的角度来看,可能带来一定程度上的性能提升。

换个角度来看,CPU的绑定设置也可能带来一定的问题,如破坏了原有SMP系统中各个CPU的负载均衡(load balance),这可能会导致整个系统的进程调度变得低效。特别是在多处理器、多核、多线程技术使用的情况下,在NUMA结构的系统中,如果不能基于对系统的CPU、内存等有深入的了解,对进程的处理器亲和性进行设置是可能导致系统的整体性能的下降而非提升。

 

cpu绑定方式

共享cache绑定方式

Cache一般可分为的level:L1,L2,L3,L4,使用命令lscpu即可查看宿主机cache相关情况。共享cache绑定方式,显而易见就是客户机要绑定多个cpu的cache都是共享的,这样可以提高cache的访问数据的命中率。在目录下/sys/devices/system/cpu/cpu#/cache


图1

每个index#文件夹里面都有cache相应的信息,如果打开index2,level为2,二级缓存,size大小256k,cpu0和cpu12它们之间共享二

### 使用 QEMU-KVM 绑定 PCI-E 设备 在虚拟化环境中,通过QEMU-KVM绑定物理PCI-E设备到客户机操作系统能够显著增强特定应用的性能表现。对于希望将主机上的实际硬件资源直接提供给虚拟机使用的场景而言,此方法尤为有用。 当使用`qemu-kvm`命令行工具时,可以通过指定`-device`选项并结合`vfio-pci`来完成这一操作[^2]。VFIO是一种用于IOMMU辅助下的用户空间驱动框架的技术,它允许安全地传递整个PCI设备至用户空间的应用程序中去,从而使得这些应用程序可以获得接近原生的速度访问该硬件。 #### 基本配置示例 为了使能对某个具体PCI-E设备的支持,在启动虚拟机之前需先确认目标设备已被正确识别,并且其ID已知。假设要分配的是一个网络接口卡(NIC),则可以在宿主机上运行如下命令获取所需信息: ```bash lspci | grep Ethernet ``` 得到类似这样的输出: ``` 00:19.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection (rev 02) ``` 这里的`00:19.0`就是我们要找的位置标识符。之后就可以构建相应的QEMU-KVM启动指令了: ```bash qemu-system-x86_64 \ -machine q35 \ -m 4G \ -cpu host \ -smp sockets=1,cores=2 \ -drive file=/path/to/disk.qcow2,if=virtio \ -netdev user,id=mynet0 \ -device virtio-net-pci,netdev=mynet0 \ -device vfio-pci,host=00:19.0,bus=pcie.0,addr=0x2 \ ... ``` 上述命令片段展示了如何向基于Q35芯片组架构建立起来的标准X86_64位平台添加一块来自宿主机的真实网卡作为附加组件;注意这里特别指定了`bus=pcie.0`和`addr=0x2`两个参数用来指示新加入部件应该被安置在哪条总线上以及具体的插槽位置。 另外值得注意的是,在某些情况下可能还需要调整内模块加载顺序或是禁用一些默认开启的服务以确保成功实现直通功能。例如关闭SELinux、AppArmor等安全策略可能会有所帮助。同时也要保证系统已经安装好必要的支持包如`libvirt-daemon-config-nwfilter`等以便于后续管理工作的开展[^4]。 最后提醒一点,由于涉及到底层硬件的操作,因此务必谨慎行事以免造成不可逆的数据丢失或其他严重后果。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值