服务器虚拟化CPU怎么设置?

一、 核心概念:理解vCPU与物理CPU的关系

1、物理CPU (pCPU): 服务器上实实在在的物理处理器,有固定的核心数(Cores)和线程数(Threads,如Intel超线程技术)。

2、虚拟CPU (vCPU): 分配给虚拟机的虚拟处理器,对虚拟机内的操作系统和应用来说,vCPU看起来就和物理CPU一样。

3、关系: vCPU本质上是主机物理CPU时间的切片,虚拟化层(Hypervisor)通过调度器,将多个vCPU的执行请求调度到数量更少的物理CPU核心上去运行。

二、 配置原则:如何合理分配vCPU

最重要的原则:不要过度分配(Overcommitment),尤其是对CPU密集型应用。

初始评估与规划

评估工作负载 首先要了解虚拟机内将要运行什么应用。

CPU密集型 数据库(如Oracle, SQL Server)、计算渲染、科学计算等,这类应用需要更多、更专享的CPU资源。

内存密集型 缓存服务器(如Redis)、数据库(也可能同时是)。

I/O密集型 文件服务器、流媒体服务器。

普通应用 Web服务器(如Nginx/Apache)、应用服务器、域控制器等,通常负载不高。

基准测试 如果可能,在物理机上先对应用进行压力测试,了解其单实例的CPU占用情况。

从少开始一个黄金法则是:从1-2个vCPU开始,如果性能不足,再逐步增加,分配过多的vCPU反而可能因为调度等待导致性能下降。

关键配置参数详解

在创建或编辑虚拟机时,你会遇到以下几个关键设置:

vCPU数量

* 直接决定虚拟机内部能看到的核心数。

* 必须是**插槽数 * 每插槽核心数 = 总vCPU数**,通常保持“每插槽核心数”为1,插槽数等于总vCPU数即可,除非软件授权依赖于CPU插槽数量。

CPU核心数每插槽

* 这主要用于满足某些操作系统或软件的许可要求(有些许可是按物理插槽收费的),技术上,1个插槽8核心和8个插槽1核心对性能没有影响。

CPU保留(Reservation)

含义 为保证该虚拟机一定能获得的CPU资源(MHz/GHz)。

使用场景关键业务虚拟机(如生产数据库)设置保留,确保即使主机压力很大,该VM也能获得最低保障的CPU时间,设置保留会导致这部分资源无法分配给其他VM。

CPU限制(Limit)

含义 该虚拟机最多能使用的CPU资源(MHz/GHz)。

使用场景 限制非关键或测试环境的虚拟机,防止其占用过多资源而影响其他关键VM,通常不建议设置,除非有明确需求。

CPU份额(Shares)

含义 当物理CPU发生资源争用时,分配资源的相对优先级,份额越高,在争用时获得的CPU时间越多。

使用场景 用于区分不同虚拟机的服务质量(QoS),给生产系统设置“高”份额(如4000),测试系统设置“低”份额(如1000),当CPU空闲时,份额不生效;只有在争用时才按比例分配。

三、 在不同平台上的设置步骤(示例)

在 VMware vSphere/ESXi 中:

1、 右键单击虚拟机 ->编辑设置

2、 展开CPU 选项。

3、CPU数量: 设置虚拟处理器的数量。

4、高级CPU: 点击这里可以更详细地设置“每插槽核心数”。

5、资源选项卡 ->CPU

保留 设置保证的MHz资源。

限制 设置上限(默认是无限制)。

份额 选择“低”、“正常”、“高”或自定义(数值)。

在 Microsoft Hyper-V 中:

1、 右键单击虚拟机 ->设置

2、 选择处理器

3、处理器数量: 设置虚拟处理器的数量。

4、资源控制

虚拟机保留 相当于保留(Reservation)。

虚拟机限制 相当于限制(Limit)。

相对权重 相当于份额(Shares)。

在 Proxmox VE 中:

1、 单击虚拟机 ->硬件 ->处理器 ->编辑

2、核心: 设置vCPU总数。

3、类别: 选择CPU类型(如host表示透传主机CPU特性)。

4、 点击高级 选项:

CPU单位 相当于份额(Shares)的权重(默认是1024)。

CPU限制 输入一个小数(如0.5表示使用50%的一个核心),相当于限制(Limit)。

四、 最佳实践与常见误区

1、误区:vCPU越多越好

真相 vCPU过多会导致Hypervisor调度更复杂,等待时间变长,可能增加CPU就绪时间(%RDY),反而降低性能,只为虚拟机分配其工作负载真正需要的数量。

2、监控与调整

使用虚拟化平台的管理工具(如vCenter, PRTG)持续监控关键指标

CPU使用率 虚拟机自身的CPU使用情况。

CPU就绪时间(CPU Ready/%RDY)这是最重要的性能指标之一,它表示vCPU已经准备好运行,但物理CPU暂时不可用的等待时间,如果持续高于5%(VMware建议),说明vCPU可能分配过多或主机CPU资源不足。

CPU协同停止(Co-Stop) 在VMware中,指多vCPU虚拟机等待所有vCPU同时调度所花费的时间,过高也说明vCPU可能过多。

3、考虑NUMA架构

* 现代多路服务器都是NUMA架构(非统一内存访问),对于需要大量vCPU(例如超过单个NUMA节点的物理核心数)和内存的虚拟机,应启用vNUMA功能,让Hypervisor和Guest OS感知NUMA拓扑,以避免远程内存访问带来的性能损失,通常现代Hypervisor会自动处理得很好。

4、保持VMware Tools/Virtual Machine Guest Services更新

* 这些增强驱动和工具能优化虚拟机的CPU和I/O调度,提升性能。

1、从少开始: 新建VM先分配1-2个vCPU。

2、按需分配: 根据应用的实际监控数据逐步增加vCPU,并观察CPU Ready值的变化。

3、使用份额(Shares)进行软性调控: 优先使用份额来区分业务优先级,而不是轻易使用限制(Limit)。

4、为关键VM设置保留(Reservation): 确保核心业务的性能底线。

5、持续监控: 关注CPU使用率CPU Ready时间,它们是调整配置的重要依据。

通过遵循这些原则和步骤,您可以更科学、合理地设置服务器虚拟化中的CPU,从而在密度、性能和稳定性之间找到最佳平衡点。

文章摘自:https://idc.huochengrm.cn/fwq/15699.html

评论