本节书摘来华章计算机《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一书中的第1章 ,第1.2.2节,[美] 克里斯托弗·库塞克(Christopher Kusek) 著 吕南德特·施皮斯(Rynardt Spies)姚海鹏 刘韵洁 译, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1.2.2 内存
内存是一个有限的资源。当建立内存基准时,通常会有一个固定的模式。所有事情是平等的,如果你发现应用程序、工作负载以及用例没有明显的变化,你就可以预测内存的消耗量及需求量了。
VMware懂得内存在架构中的重要性,所以VMware多年来进行了大量的投资。不管是内存过量使用、压缩还是膨胀,内存本身就是一种被分配的资源。但值得一提的是,虽然你可以在一个只有64 GB的RAM的系统上分配128 GB的RAM,但这并不意味着你总是应该这样做。对应用来说,建立内存基准是一种微妙的平衡。如果你配置了太少的内存,系统最终将交换到磁盘;如果你配置了太多的内存,最终将给系统过量提供。这种微妙的平衡经常被看作内存分配的最佳点。对大多数人来说,这个过程往往是相当随意的,取决于应用程序和操作系统。当运行32位应用程序时这样做很容易,因为系统无法处理超过3~4GB的RAM,一般建议固定分配4GB的内存。
当涉及64位操作系统和能够使用大量内存的应用程序时,你可能会假设在实际运行它并随意分配资源。结果是,一个可能只需要512MB或768MB的虚拟机被分配了1GB、2GB、4GB或更多的RAM。更进一步,如果过量构建或者过量配置如Exchange 2010这样的应用,最小都有可能是12GB、24GB甚至36GB的RAM。
图1-2显示一个分配4GB内存的Exchange 2003服务器的工作负载样例。
我们分析这30天中此应用程序的基准,最低约327MB,最高平均可达到1.6GB的内存分配。如同这个系统一样,所有工作负载都可能经历一个“尖峰”,可用4GB但需求超过了5.6GB,但这可以看成偶然出现的异常情况。
幸运的是,VMware使用的内存增强的方法(第5章)能够使一个意外的尖峰不会对虚拟机的操作系统和应用程序产生破坏性的影响,如6月22日的尖峰(图1-2)。
还有一个方面VMware没有忽视,那就是它可以让你足够了解,你是否为架构做出正确的决定以及这些决定的度量。通过vCenter,你可以深入了解正在运行的应用程序使用内存的细节(图1-3)。
通过图1-3我们能立刻知道,此应用程序在前30天使用低于2GB内存且运行良好,甚至在它的最高点。在虚拟机的vCenter中使用性能选项卡等工具,可以让你方便地建立基准。与物理服务器不同的是,物理服务器内存的获得需要通过虚拟化进行重大更改,而我们可以简单地关闭主机,添加额外内存,或者如果一开始碰巧供应不足我们可以把它重新联机。
需要确定的重要一点是,当我们为虚拟机分配内存时,永远不会有“错误的”分配。你可能为一个特定的客户分配了过少或过多的内存,但这些决定不是一成不变的。如果有需要,你可以自由地后退一步,重新增加或减少所分配的内存量。