本节书摘来华章计算机《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一书中的第1章 ,第1.2.1节,[美] 克里斯托弗·库塞克(Christopher Kusek) 著 吕南德特·施皮斯(Rynardt Spies)姚海鹏 刘韵洁 译, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1.2.1 CPU基础设施基准
从基础架构的角度来看,通常会根据服务器能够支持的内核和CPU的数量,以及能够处理的内存插槽数量来选择服务器。根据这些就能决定VMware vSphere集群可以支持vCPU的最大数量,以及能够提供给虚拟机的最大内存。从而能够确定虚拟机能够支持的最高配置。
例如,如果你要将一个旧设备再利用,它每台服务器最大可用四核,并且RAM最大为16 GB。可以确定,它将无法提供一个具有32 vCPU、64 GB RAM的单一虚拟机。所以,可见你的虚拟配置达不到最大vSphere主机的可用资源—记住,vSphere以及它为虚拟机保留的开销也需要可用的资源。
一旦确定能够支持的最高配置,你很快就会认识到可接受的最低配置通常会低于先前认为的界限。在建立应用程序基准的过程中,你还会发现,“制造商建议的最佳实践”的最好情况是保守的,而最坏情况则是完全欺骗!
又如,多少次你听到过一个应用程序因为太忙而需要一定量的资源,只为了让你发现那些资源没有得到充分利用?
那么,这是否意味着当我们为应用程序分配vCPU时一定存在一个最好的配置?让我们研究vCPU的参数究竟意味着什么特征。从图1-1可以看到,CPU的主要相关参数是CPU的数量、CPU处理能力、CPU共享、CPU限制、CPU保留。不考虑设备,基础架构可以给主机分配CPU数量以及指定分享和限制。在大多数情况下,这些你完全可以通过关注分配给主机的CPU的数量和工作量而获得。
分析CPU使用、争用和工作负载有助于建立应用程序基准。需要指出的重要一点是,实际上,一个被监控的CPU可能会出现尖峰,所以最好使用监测工具(如esxtop、vCenter Operations Manager或内置在vCenter中的性能工具)来不断收集数据。我们已经看到许多用户报告说,他们的应用是低于分配标准的,因为他们在Windows任务管理器中看到了CPU的尖峰。其实,CPU尖峰预计是肯定会发生的。
现在,监控CPU的使用,最重要的就是不做任何操作,不要调整、修改分配好的共享或者内核的数量。就像我们点了一份菜单然后等待,耐心很重要,这样才能确定应用程序的使用基准。
作者Christopher Kusek分享了一个小故事,关于他如何测试每一步来建立一个应用的基准。正如在我们的设想中认为的,一个工程师或者架构师是极度保守的,出于同样的原因,我们也希望只使用所需要的资源。他有一个非常密集型的应用,有一个监控工具从他的100多个vCenter服务器中收集数据,还有上千个ESXi主机操作这些数据中心。因为非常庞大,他认为原始分配的两个vCPU和8GB的内存无法良好运行,所以只要有一个IT工具能够承担他认为合适的中断,他马上就将vCPU的数量增加至8个,内存增加至16GB。
这样就可以看到经过一段时间(建立基准)的运行,在不影响应用程序性能下,系统能达到的峰值。他选择利用历史数据的收集和报告,通过vCenter操作管理和vCenter的性能标签来收集数据。VMware vSphere特别好的一点是可以持续计算出它所需要的资源。经过一小段时间后,可以确定这个系统最多使用5个vCPU和12GB内存便可以高效运行。
这时Christopher将系统下调至这个需求,并且基于他的基准,他不仅知道了运行的工作量,同时知道了预期峰值。这样,他就知道了运行这个特定的应用程序所需的资源,不会因为配置不达标而影响性能,也不会因为超标而浪费资源。
你会发现,对你的虚拟环境来说,vCPU的分配是最重要的方面之一,尤其是当考虑到第4章中的CPU调度程序时。其中在聚集频率方面不能节省,同时在分配逻辑vCPU数量方面不能浪费(同时调度复杂度>1或2 vCPU=+++%RDY%),因为CPU确实是一个有限的资产,如果没有性能指示则不能“被共享”。