一、 核心概念:理解vCPU与物理CPU的关系
1、物理CPU (pCPU): 服务器上实实在在的物理处理器,有固定的核心数(Cores)和线程数(Threads,如Intel超线程技术)。
2、虚拟CPU (vCPU): 分配给虚拟机的虚拟处理器,对虚拟机内的操作系统和应用来说,vCPU看起来就和物理CPU一样。
3、关系: vCPU本质上是主机物理CPU时间的切片,虚拟化层(Hypervisor)通过调度器,将多个vCPU的执行请求调度到数量更少的物理CPU核心上去运行。
最重要的原则:不要过度分配(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)。
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
评论