新闻资讯

kvm 虚拟机 cpu 参数是什么

控制 | 2025-02-28

KVM 虚拟机的 CPU 参数对于虚拟机的性能和功能起着关键作用,了解这些参数有助于根据实际需求进行合理配置 。

vcpu

vcpu表示虚拟处理器的个数,即虚拟机可使用的 CPU 核心数量 。在创建虚拟机时,需根据虚拟机的应用负载和性能需求来设置vcpu数量 。对于运行简单办公应用的虚拟机,分配 1 - 2 个vcpu可能就足够 ;而对于运行大数据分析、科学计算等对 CPU 性能要求较高的应用,可能需要分配 4 个或更多的vcpu 。在配置文件中,通过标签来设置,如4表示为虚拟机分配 4 个虚拟处理器 。

memory

memory用于设置虚拟内存的大小 ,属性unit用于指定内存单位,属性值支持KiB(2^10 字节)、MiB(2^20 字节)、GiB(2^30 字节)、TiB(2^40 字节)等 。根据虚拟机运行的操作系统和应用程序的内存需求来合理设置memory大小 。一般来说,运行 Windows 系统的虚拟机,建议分配至少 2GB 内存 ;对于运行企业级应用的虚拟机,可能需要 8GB 或更多内存 。在配置文件中的示例为4,表示为虚拟机分配 4GB 内存 。

cpu

cpu标签用于设置虚拟处理器模式 ,其属性mode表示虚拟 CPU 的模式 ,主要有以下两种:
1、 host - passthrough:表示虚拟 CPU 的架构和特性与主机保持一致 。在这种模式下,虚拟机可以充分利用主机 CPU 的特性,性能表现较好 。当主机 CPU 支持超线程、AVX 指令集等特性时,虚拟机也能使用这些特性 。在配置文件中,使用来设置 。
2、 custom:表示虚拟 CPU 的架构和特性由此cpu元素控制 。当选择custom模式时,可以进一步通过子元素来详细配置 CPU 的相关参数 。

cpu 子元素

1、 topology:topology是cpu的子元素,用于描述虚拟 CPU 模式的拓扑结构 。其属性socket、cores、threads分别描述了虚拟机具有多少个 CPU socket,每个 CPU socket 中包含多少个处理核心(core),每个处理器核心具有多少个超线程(threads),属性值为正整数且三者的乘积等于虚拟 CPU 的个数 。对于一个配置为 4 个虚拟 CPU,分布在两个 CPU socket 中,且每个 socket 有 2 个核心,不支持超线程的虚拟机,在配置文件中的设置为
2、 model:当mode为custom时,model子元素用于描述 CPU 的模型 。不同的 CPU 模型具有不同的性能和特性 。在某些特定的应用场景中,可能需要指定特定的 CPU 模型,以满足应用对 CPU 指令集等方面的要求 。如Kunpeng - 920表示将虚拟 CPU 的类型设置为 Kunpeng - 920 。
3、 feature:当mode为custom时,feature子元素用于描述某一特性的使能情况 。属性name表示特性的名称,属性policy表示这一特性的使能控制策略,主要有以下几种:
• force:表示强制使能该特性,无论主机 CPU 是否支持该特性 。
• require:表示使能该特性,当主机 CPU 不支持该特性并且 hypervisor 不支持模拟该特性时,创建虚拟机失败 。
• optional:表示该特性的使能情况与主机上该特性的使能情况保持一致 。
• disable:禁用该特性 。
• forbid:禁用该特性,当主机支持该特性时创建虚拟机失败 。例如,表示禁用pmull特性 。

配置示例

1、 虚拟 CPU 个数为 4,处理模式为host - passthrough,虚拟内存为 8GiB,4 个 CPU 分布在两个 CPU socket 中,且不支持超线程的配置如下:

4 8

2、 虚拟内存为 8GiB,虚拟 CPU 个数为 4,处理模式为custom,model 为 Kunpeng - 920,且禁用pmull特性的配置如下:

4 8 Kunpeng - 920

拓展阅读

1、 如何根据应用场景选择合适的 KVM 虚拟机 CPU 参数:对于轻量级应用,如网页浏览、文本处理等,可分配较少的vcpu和内存 ;对于计算密集型应用,如视频编码、大数据分析,需分配较多的vcpu和较大内存 。根据应用对 CPU 特性的需求,选择合适的cpu模式和子元素配置 。
2、 KVM 虚拟机 CPU 参数调整对性能有什么影响:增加vcpu数量和内存大小,在一定程度上能提升虚拟机性能,但也会增加宿主机资源消耗 。合理调整cpu模式和子元素配置,如启用特定 CPU 特性,可优化性能,但错误配置可能导致兼容性问题或性能下降 。
3、 在运行过程中可以修改 KVM 虚拟机的 CPU 参数吗:在某些情况下可以修改 。对于支持热插拔的 CPU 参数,如vcpu数量,在虚拟机运行时可以通过virsh setvcpus命令进行调整 。但修改内存大小等参数,可能需要先停止虚拟机,然后修改配置文件,再重新启动虚拟机 。