【导语】在实际运维中,经常会遇到这样的情况。 虚拟化平台ESXi主机的化学CPU和显存使用率低,部分用户仍感觉速度慢。 虚拟化平台看到的ESXi主机CPU占用率的参考值是多少? 或者有什么具体的参考价值? 本文将带你绕过这些ESXi主机CPU使用的“坑”,让你真正了解虚拟化平台的CPU是否出问题,平台性能是否良好。 请记住,有时眼见为实。
[作者] ID:,《深度运维》原作者
说到CPU的使用率,就不得不考虑这个参数了。 这个参数可能欺骗了很多虚拟化管理员。 言归正传,开始正文。 参数“”有点模棱两可。 你很容易理解,“”指的是可以使用多少空闲的CPU。 “”越多越好。 然而,事实恰恰相反,越是“”,你的虚拟化平台的性能就越差。
的值是指虚拟机准备就绪但未能获得数学 CPU 调度的时间比率。 值越大,表示越多的虚拟机(或应用程序)在运行,没有可用的CPU资源运行物理机转换成vm虚拟机,这样的虚拟机(或应用程序)只能等待CPU资源。
1、高的原因有哪些?
CPU占用率高的原因比较好找,的原因真的很难想。
其实高的原因主要有两个,一是CPU严重过度分配,二是设置了CPU限制。
CPU 超额认购
主要原因是数学 CPU 中运行的活动虚拟 CPU (vCPU) 过多。 一般来说,分配比 pCPU 多的 vCPU 是正常且安全的,如果这个百分比很高,ESXi 调度程序就越难在不影响性能的情况下执行其任务。 当vCPU/pCPU的百分比为最佳CPU性能时,没有一刀切的法则,有一些指导性参数可供参考:
CPU 限制
除非在少数特定场景下使用 CPU 限制,否则通常不设置 CPU 限制。 如果在虚拟机资源设置中设置了CPU限制,当虚拟机耗尽其分配的CPU资源时,系统将有意保留该虚拟机,避免将其调度到PCPU。 无论 CPU 使用率如何,都会出现此问题。 在命令的输出中,有一个参数%MLMTD,表示虚拟机打算执行但由于有意限制还没有调度CPU时间的时间量。 因为如果运行起来,就会违反资源池、虚拟机或环境的限制设置。 这句话是不是有点绕,虽然是说如果设置了CPU限制,即使化学CPU空闲,也不会把资源分配给受限的虚拟机。 默认情况下,虚拟机资源限制级别比较高,所以即使有闲置资源,也不会违反限制规则。 通常 %MLMTD 的值应为 0.000%。 在大多数情况下,不需要指定限制。 如果指定了限制,可能会浪费空闲资源。 右图是在虚拟机上设置资源限制的形式。
CPU亲和力
CPU亲和性的目的是去除一些调度的灵活性,可以防止不同数学CPU之间的线程切换导致的缓存失效,提高缓存命中率,增强虚拟机的性能。 在虚拟机上设置 CPU 亲和力永远不会提高该虚拟机的 CPU 性能。 CPU 亲和性的另一个问题是禁用,CPU 亲和性是 ESXi 服务器为虚拟机手动指定特定内核的地方。 由于这种化学反应,内核无法在具有 CPU 亲和力的主机之间进行通信,也无法在必须在此内核上运行的 VM 之间进行通信。 这对分布式资源调度 (DRS) 集群有重大影响。
FT 通过创建和维护与此虚拟机相同且可以在发生故障转移时随时更换的其他虚拟机来确保此类虚拟机的持续可用性。 受保护的虚拟机称为主虚拟机。 在其他主机上创建并运行重复的虚拟机,称为辅助虚拟机。 主虚拟机不断复制到次虚拟机,使次虚拟机可以随时接管工作,从而提供故障保护。 主虚拟机和辅助虚拟机持续监控彼此的状态以确保故障得到维护。 如果运行主虚拟机的主机发生故障,系统将执行透明故障转移。 此时会立即激活次虚拟机来代替主虚拟机,启动新的次虚拟机,并手动重建故障冗余。 如果运行辅助虚拟机的主机发生故障,该主机也会立即被替换。 在任何一种情况下,用户都不会遭受服务中断和数据丢失。
如果FT的两台虚拟机之间的网络出现问题,时不时两台虚拟机之间的信息无法同步,那么CPU的性能就会提升来维持两台虚拟机之间的同步。 最佳做法是在两个虚拟机之间使用专用的高带宽网络。 它们之间的网络类似于racs之间的脉冲,脉冲网络尤为重要。 如果脉冲网络出现问题,将直接影响性能。
2. 常见的误区
有几种常见的误解,其中之一是超线程对性能的影响。 ESXi 调度程序将启用超线程的 CPU 视为完整核心,但超线程核心无法提供 100% 的性能。 通常,启用超线程的 CPU 只能提供真正化学 CPU 的 75% 的性能。 在启用超线程的 CPU 上估算超额率需要保守,不能按 100% 进行估算。 规划虚拟化平台资源时也应注意这一点。
二是有很多可用或GHz并不一定意味着你的平台没有问题。
活跃的 CPU 使用量不能涵盖一个虚拟机使用了多少核,也不能阻止其他虚拟机在特定时间段内使用它。 同样,虚拟机的CPU使用率和值也不一定正确。 虚拟机可能很严重,CPU使用率确实不高,所以为了更准确的了解CPU的具体情况,需要从中关注所有CPU的使用率和全球视野。
还有一个问题是启用DRS可以减少吗? 实际上DRS并不能减少,因为DRS没有考虑CPU调度。 DRS只是通过监控CPU和显存的使用情况来决定是否需要迁移,并没有考虑vCPU和pCPU之间的争用。
3、如何查看的值?
检查环境中有多少是非常简单的。 选择要查看的主机,选择性能,然后在图表选项中选择就绪,就可以看到当前的值。
但是从上图可以看出的实际值。 该值是所有虚拟机上所有 vCPU 的总和。 很难针对不同的主机和不同的环境确认具体的值来判断当前环境的是否有问题。 事实上,这个值在不同平台之间差异很大,很难确定哪个平台的性能最好。 所以你听到的值基本上是没有意义的。
使用基础输出之上的 %RDY 值以获得更好的判断。 但是,还需要考虑分配给每个虚拟机的vCPU数量,下一章会详细说明这个值的具体含义。
4. 的正常值是多少?
我们很容易看到CPU占用率,很难根据看出平台的CPU占用率是正常还是异常。
之前的版本官方建议每个vCPU的值要高于5%。 最新版本官方说只要CPU就绪时间小于10%就应该检测主机是否过载,或者是否真的需要分配虚拟机。 所有资源。
如上图,这里要注意,最后看到的值是每20s的数据,的度量单位是ms。 的估计方法是用20s减去某一时刻得到的值。 上图中某时刻看到的值为5876,虽然这是20s内的数据,但是用5876/20000=0.29就是29%,是参考值5%的6倍,将近3 10%的倍数。 但此时化工机的CPU使用率只有7%。 从表面上看,Chem CPU 似乎处于正常状态,此时平台的 CPU 已经出现了严重的问题。
更详细地说,客户端看到的性能图标中的默认时间间隔如下:
实时:20秒
最后三天:5 分钟(300 秒)
上周:30 分钟(1800 秒)
过去一个月:2 小时(7200 秒)
过去一年:1 天(86400 秒)
估计 比率
要按总值估算比率,请使用以下公式:
(CPU总值/(*1000)) 100=比率
例如:
一个虚拟机中一个虚拟机的实时统计可能有一个平均总值1000,用对应的值根据公式求出比率。
(1000/(20 秒*1000)) 100=5%
估计总 CPU 就绪值
要将比率转换为总值,请使用以下公式进行反向估算:
(CPU就绪率/100) 1000=CPU总值
例如:
如果虚拟机的比率为 5,则其在实时性能图表上的总 值估计如下:
(5/100)*20秒*1000=就绪
5、解决的方法有哪些?
A。 在每台主机上部署合理数量的虚拟机
b. 确保 pCPU 没有被 vCPU 过度分配太多。 如果CPU确实超配,应该根据实际情况减少化学引擎。
C。 不要使用CPU限制,CPU限制只适用于短期测试或问题分析
d. 不要使用CPU亲和性规则,CPU亲和性只适用于短期测试或问题分析
e. 使用故障(FT)时,必须使用最佳配置,尤其是在网络中
F。 确认 DRS 做什么和不做什么以及不能减少什么 DRS
6.总结
在维护虚拟化平台的过程中,不要轻易相信任何参数物理机转换成vm虚拟机,尤其是你听到的CPU使用率这个大“坑”,否则你可能已经入“坑”了,你可能会处在一个糟糕的境地坑。 再次指出,眼见不一定为实。 不要轻易下定论。 你应该一起判断多个参数。 您可以深入了解平台的性能。 最后祝大家好运,不要掉“坑”。
*免责声明:本文基于作者自身理解创作,具体环境详谈。
原标题:防止平台ESXi主机CPU占用的“坑”