昆明网站定制,绿色建筑设计,爱采购卖家版下载,深圳免费网站排名优化KVM Vcpu概述 Intel VTSMP系统CPU过载使用CPU模型CPU绑定和亲和性CPU优化 Intel VT
Intel的硬件虚拟化技术大致分为3类#xff1a; 1、VT-x技术#xff1a;是指Intel处理器中的一些虚拟化技术支持#xff0c;包括CPU中最基础的VMX技术#xff0c;也包括内存虚拟化的硬件支… KVM Vcpu概述 Intel VTSMP系统CPU过载使用CPU模型CPU绑定和亲和性CPU优化 Intel VT
Intel的硬件虚拟化技术大致分为3类 1、VT-x技术是指Intel处理器中的一些虚拟化技术支持包括CPU中最基础的VMX技术也包括内存虚拟化的硬件支持EPT、VPID等。 2、VT-d技术是指Intel的芯片组的虚拟化技术支持通过Intel IOMMU可实现对设备直接分配的支持。 3、VT-c技术是指Intel的I/O设备相关的虚拟化技术支持主要包含两个技术一个是借助虚拟机设备队列VMDq最大限度提高I/O吞吐率VMDq由Intel网卡中的专用硬件来完成另一个是借助虚拟机直接互连VMDc大幅提升虚拟化性能VMDc主要就是基于SR-IOV标准将单个Intel网卡产生多个VF设备用来直接分配给客户机。 注在x86-64架构的处理器中KVM需要的硬件虚拟化扩展分别为Intel的虚拟化技术Intel VT和AMD的AMD-V技术。
# 查看cpu是否开启VTflags字段将会记录
[rootnode ~]# grep -E svm|vmx /proc/cpuinfo在 BIOS中VT的选项通过“Advanced Processor Configuration”来查看和设置它的标识通常为“Intel® Virtualization Technology”或“Intel VT”等类似的文字说明。 除了支持必需的处理器虚拟化扩展以外如果服务器芯片还支持 VT-d (VirtualizationTechnology for Directed I/O)建议在 BIOS 中将其打开因为后面一些相对高级的设备的直接分配功能会需要硬件 VT-d 技术的支持。VT-d是对设备I/O 的虚拟化硬件支持在BIOS中的位置可能为“Adanced Processor Confguration”或“Advanced System Agent(SA) Configuration”它在 BIOS 中的标志一般为“ Intel® VT for Directed I/O”或“Intel VT-d”。
SMP系统
SMPSymmetric multiprocessing对称多处理器系统是一种多处理器的电脑硬件架构指在一个计算机上汇集了一组处理器(多CPU)各CPU之间共享内存子系统以及总线结构。多个进程可以并行执行而且单个进程的多个线程也可以得到并行执行。 QEMU在给客户机模拟CPU时也提供对SMP系统的支持。配置客户机SMP参数如下
-smp [cpus] n [,maxcpuscpus] [, corescores] [, threadsthreads] [ , socketssockets)
n用于设置客户机中使用的逻辑 CPU 数量(默认值是 1)。
maxcpus用于设置客户机中最大可能被使用的CPU数量包括启动时处于下线(ofline)状态的 CPU数量 (可用于热插拔 hot-plug 加人 CPU但不能超过 maxcpus这个上限)。
cores用于设置每个 CPU 的 core 数量(默认值是 1)。
threads用于设置每个 core 上的线程数(默认值是 1)。
sockets用于设置客户机中看到的总的 CPU socket 数量。# 查看是否支持SMP系统
[rootnode ~]# uname -v
#1 SMP Tue Oct 17 15:42:21 UTC 2023
# 开启irqbalance服务该服务能够把压力均匀的分配到各个CPU核心上对提升性能有很大的帮助但在某些情况下可能会导致网络、IO等性能问题。
[rootnode ~]# service irqbalance startCPU过载使用
KVM允许客户机过载使用物理资源即允许为客户机分配多余物理上实际存在的cpu和内存数量。但在实际使用过程中不推荐让某一个客户机的vCPU数量超过物理系统上存在的CPU数量。比如在拥有4个逻辑CPU的宿主机中每个客户机的vCPU数量多于4个。
CPU模型
每一种虚拟机管理程序 ( Virtual Machine Monitor简称 VMM或Hypervisor)都会定义自己的策略让客户机看起来有一个默认的 CPU 类型。有的 Hypervisor 会简单地将宿主机中CPU的类型和特性直接传递给客户机使用而 QEMU/KVM 在默认情况下会向客户机提供一个名为qemu64 或qemu32 的基本 CPU模型。QEMU/KVM 的这种策略会带来一些好处如可以对CPU 特性提供一些高级的过滤功能还可以将物理平台根据提供的基本 CPU模型进行分组(如将几台 IvyBridge 和 Sandybridge 硬件平台分为一组都提供相互兼容的SandyBridge 或qemu64的CPU模型)从而使客户机在同一组硬件平台上的动态迁移更加平滑和安全。 通过如下的命令行可以查看当前的 QEMU 支持的所有 CPU 模型。
# 查看当前的 QEMU 支持的所有 CPU 模型
[rootnode -]# qemu-system-x86 64 -cpu ?
# 指定使用Broadwell模型
[rootnode -]# qemu-system-x86 rhel7.img -cpu Broadwell -smp 8 -m 16G -enable-kvm
# -enable-kvm 这个参数用来开启KVM硬件加速功能CPU绑定和亲和性
通常在SMP系统中Linux内核的进程调度器根据自有的调度策略将系统中的一个进程调度到某个CPU上执行。那么在不同的时间片上进程的执行可能会在不同的CPU上运行这样就会带来缓存命中失效导致性能下降。但从另一方面来看设置CPU亲和性之后由于进程的运行固定到某个CPU上会破坏各CPU的负载均衡SMP的调度效率也会有所降低。
# 可以先查看QEMU pid和psr运行在几号CPU上
[rootnode ~]# ps -eLo psr,ruser,pid,args | grep qemu
# 上面命令带参数不易记的话也可以先ps查pid然后pidstat -p 进程号查运行CPU号
# 然后将进程绑定到指定CPU上这里指定3号CPU
[rootnode -]# taskset -pc 3 72260CPU优化
AVX/AVX2/AVX512(Advanced Vector Extensions高级矢量扩展)指令集。 XSAVE指令集用于保存和恢复处理器扩展状态动态迁移保存处理器状态然后在迁移后恢复处理器的执行状态。 AES(Advanced Encryption Standard高级加密标准)指令集用于对电子数据进行加密。 注以上不作太多解释具体可以参考相关资料。
# 查看CPU是否支持
[rootnode ~]# cat /proc/cpuinfo | grep -E avx|xsave|aes创建客户机时可以使用 “-cpu qemu64,aes” 来添加新特性。也可以通过 “-cpu host” 参数来完全暴露宿主机的CPU特性