我们有一个48 GB RAM的ESXi 4.1服务器。
对于每个虚拟机,我们正在分配4GB的内存。 由于服务器将有13个虚拟机,我的经理认为这是错误的。
我将向他们解释ESXi实际上将pipe理内存本身,但他们问我为ESXi服务器本身分配了多less内存。
我没有分配任何(我甚至没有听说过为ESXi服务器本身分配内存的选项)。
如何为ESXi服务器分配内存? 它如何在虚拟机之间过度分配/分配RAM而没有问题?
这里不仅仅是ESXi的问题,
内存分配和overcommitment解释
请注意,pipe理程序不会预先分配所有内存 ,这取决于虚拟机的使用情况。 但是,值得了解的是,如果VM尝试分配和使用分配给它们的所有内存,会发生什么情况。
您的VM +主机尝试使用的最大值将是大约55 GB的 可能不同
还有一个方面需要考虑,那就是内存阈值。 默认情况下,VMware的目标是拥有6%的免费空间(高内存阈值)。 所以55GB的内存需要减less到45GB
这意味着如果虚拟机使用已分配的内存,主机将拥有大约10,500 MB的内存,需要从某个地方回收。 ESX有三件事可以find额外的10.5 GB。
内存回收方法
您应该阅读并理解VMware®ESX™Server中的“了解内存资源pipe理” 。
根据大量的因素,三者的组合将会/可能发生在过度承诺的主机上。 您需要testing您的环境并监控这些指标,以了解过度提交的影响。
一些值得了解的粗略规则(全部在上面的文章和其他资料中)。
在硬件辅助内存虚拟化(例如,Intel EPT硬件辅助和AMD RVI硬件辅助[6])系统中,ESX将自动备份具有大型主机物理页面(2MB连续内存区域,而不是常规页面4KB)的客户物理页面由于更less的TLB失误,性能更好。 在这样的系统中,ESX不会共享这些大页面,因为:1)find具有相同内容的两个大页面的概率是低的; 2)对于2MB页面进行逐位比较的开销远远大于为4KB的页面。 但是,ESX仍然为每个大页面中的4KB页面生成散列值。 由于ESX不会交换大页面,所以在主机交换期间,大页面将被分成小页面,以便这些预生成的散列可以用于在换出之前共享小页面。 简而言之,我们可能不会观察到硬件辅助内存虚拟化系统的任何页面共享,直到主机内存被过度使用。
在下一个气球踢(阈值是可configuration的,默认情况下这是当主机有6%以上的内存空闲(高和软件之间))。 确保安装驱动程序,并注意Java和一般的托pipe应用程序。 操作系统没有深入了解垃圾收集器下一步将做什么,它将最终击中已交换到磁盘的页面。 对于运行java应用程序的服务器来说,完全禁用swap以保证不会发生这种情况并不less见。 看一下vSphere内存pipe理的第17页,SPECjbb
虚拟机pipe理程序交换是三种方法中唯一保证 “内存”在一定时间内可供系统pipe理程序使用的方法。 如果1和2没有给它足够的内存以保持低于硬阈值(默认为2%的空闲内存),则会使用此选项。 当你通读性能指标(自己做的)时,你会发现这是三者中performance最差的。 目标是不惜一切代价避免它,因为对几乎所有应用程序的性能影响将非常明显,达到两位数的百分比
还有一个状态要注意低 (默认为1%)。 从手册中可以大大降低你的performance,
在less数情况下,如果主机可用内存低于低阈值,则pipe理程序将通过交换和内存压缩继续回收内存,并会阻止执行所有比目标内存分配消耗更多内存的虚拟机。
概要
要强调的关键是从白皮书中预测你的环境将如何performance。
testing你的平均情景,你是95%的百分点的情况下,最后你最大限度地了解你的环境将如何运行。
编辑1
值得添加的是,使用vSphere 4(或4.1无法调出),现在可以将虚拟机pipe理程序交换放置在本地磁盘上,但仍可以虚拟化虚拟机。 如果您使用共享存储,我强烈build议您将pipe理程序交换文件默认移动到本地磁盘上。 这可以确保当一台主机承受严重的内存压力时,最终不会影响同一共享存储上的所有其他vSphere主机/虚拟机。
编辑2
根据评论,事实上,ESX不会以粗体分配内存。
编辑3
多介绍一下内存阈值。
VMware(和其他虚拟化技术)根据各种algorithm在VM之间共享资源(内存,处理器时间,各种I / O)。
过度使用资源是有可能的,因为并不是所有的虚拟机都会使用所有的处理,内存或I / O。 VMware的资源pipe理指南可能是阅读ESXi中可能的最佳资源 。
您还可以通过为不同的资源加权不同的虚拟机来pipe理algorithm的影响 – 例如,您可以为应用程序服务器虚拟机赋予比文件服务器虚拟机更高的权重。 但是,开箱即用的设置将能够很好地处理大多数需求。 在某些情况下,在这里做一些configuration足以安抚那些不太明白的pipe理者,但是当然要小心并阅读你的VMware版本的文档,并理解你在做什么。 如果你的经理不需要进一步的定位,那么就使用默认值。
请注意,overcommitment并不总是一个好主意,特别是如果你已经在一台服务器上虚拟化了。 您应该监视您的ESXi资源中的资源使用情况,如果需要频繁使用任何一个或多个资源,则必要时添加其他主机/资源。
让你的VMWare ESXi安装来处理它。 由于使用内存膨胀,压缩和重复数据删除技术,您可以在VMWare系统上过度使用RAM资源。
如果虚拟机正在使用类似的操作系统,那么可以节省一些成本。 一定要启用来宾虚拟机内的VMWare工具来充分利用这些function。