空闲内存税的算法

文章转自Live空间(http://delxu.spaces.live.com/blog/cns!D04F87F9ED029F69!2583.entry)和51cto技术博客(http://delxu.blog.51cto.com)首发。转发时务必表明出处,顺便给博主做个广告,文章写的真的很好,深入浅出,期待看到更好的博文,再次表示对博主的感谢!!!
空闲内存税的算法(VMware内存机制探讨之补充)

delxu原创文档,转载请注明出处 http://delxu.space.live.com
我曾经在vmsky的论坛发表过一篇探讨VMware内存机制的帖子(见此 http://bbs.vmsky.com/thread-23285-1-2.html),最后探讨的例子是一个考虑了空闲内存税(Idle Memory Tax,以下简称IMT)情况下的内存分配计算,但遗憾的是当时猜想的算法是错误的。今天在阅读了 Carl的关于内存机制的论文后,深感有必要重新说明一下。
空闲内存税(Idle Memory Tax)是VMware为了更有效地利用主机内存而设置的,它在计算如何分配主机内存的时候,将VM中空闲内存(Idle Memory)和活动内存(Active Memory)区别对待,对空闲内存做惩罚性的计算,使得具有较多空闲内存的VM将获得较少的内存份额。
在<vSphere Resource Management Guide> p98页上如此解释:
Mem.IdleTax, Specifies the idle memory tax rate, as a percentage. This tax effectively charges virtual machines more for idle memory than for memory they are actively using. A tax rate of 0 percent defines an allocation policy that ignores working sets and allocates memory strictly based on shares. A high tax rate results in an allocation policy that allows idle memory to be reallocated away from virtual machines that are unproductively hoarding it.
default:  75
这段解释说明了IMT是一个百分比的数字,介于0-100之间,IMT为0的时候,忽略working set,完全按照shares来分配内存。
那么,这个默认的75%的惩罚税到底有什么影响呢?
Carl的论文中提到一个很重要的参数:份额内存比 ρ
image
其中
ρ是shares-per-page ratio,就是单位内存的份额比重
f是活动内存占总内存的比重
k是惩罚因子, k=1/(1-IMT),比如IMT是75%,则 k=4
P是内存总Page数, S是份额
这个公式不太好理解,让我们换一种写法,就容易理解了。
P是VM配置的总内存, f是活动内存的比重,因此 P・f就是活动内存数, P・(1- f)就是空闲内存数,于是上面的公式可以表述为:
image
当主机内存不足的时候,ESX主机会找 ρ最小的那台VM来要回内存(reclaim)。
举个例子来说明。
Host有4GB内存,VM1和VM2各自配置了4GB内存,配置份额都是40960。VM2运行1个耗内存的程序,没有空闲内存,VM2的ρ=10。VM1有50%的空闲内存,也就是2GB空闲,2GB活动,IMT是默认的75%,K=4,ρ=40960/(2048+4*2048)=4
因为VM1和VM2的配置内存相同,所以VM1和VM2能争到的内存比是4:10,也就是VM1可以获得1.14GB主机物理内存,而VM2可以获得2.86GB内存。
当然。实际应用当中的内存分配并不是如同计算这样死板的,而是一个连续的不断调整的过程。
参考文档:
(1) Carl, A. Waldspurger, 2002, Memory Resource Management in VMware ESX Server
http://waldspurger.org/carl/papers/esx-mem-osdi02.pdf
(2) VMware Inc. Understanding Memory Resource Management in VMware® ESX™ Server
http://www.vmware.com/files/pdf/perf-vsphere-memory_management.pdf

你可能感兴趣的:(vmware,算法,职场,内存,休闲)