设为首页 收藏本站
查看: 932|回复: 0

[经验分享] [VMware KA] 理解 VMware 内存资源管理

[复制链接]

尚未签到

发表于 2018-6-6 15:40:25 | 显示全部楼层 |阅读模式
  

  在虚拟化应用中,内存是最为宝贵的资源。同CPU和存储资源管理相比,虚拟化的内存资源管理更为复杂。
  一、内存回收:
  VMware ESX hypervisor(管理程序)能够截获虚拟机第一次访问某内存,将物理内存填零后分配给虚拟机,但是hypervisor无法得知虚拟机中哪些内存是空闲的。hypervisor不断的将内存分配给虚拟机,当在内存超配(memory overcommitment)的情况下主机物理内存将可能耗尽,因此hypervisor需要从虚拟机中回收(reclaim)内存,ESX hypervisor使用以下机制回收内存:
  


  •   透明页共享(Transparent Page Sharing):当多个虚拟机在一个主机上运行时,可能有些内存页是一样的,比如一样的Guest OS。hypervisor通过周期性的扫描内存页生成hash值在内存hash总表中查找,一旦hash匹配就会进行完整比较,确认内存页完全一样后hypervisor会删除冗余内存页以指针代之,类似于存储中的重复数据删除功能。当某虚拟机对共享内存页试图写时,hypervisor会复制一个这个虚拟机的专有页来修改,保证共享页不被破坏。这种内存回收的速度取决于扫描的速度,在ESX(i)的高级设置中可以设置扫描速度和时间间隔。所以最好将相同或者相近的OS部署在一台host上面,以便更好的使用TPS节省内存。
      

  •   气球膨胀(Ballooning):由于hypervisor无法得知虚拟机中哪些内存是空闲的,因此依靠VMware Tools在Guest OS中的气球驱动(balloon driver)来回收内存。当需要从该虚拟机回收内存时,气球膨胀从Guest OS中请求内存,分配给气球驱动的内存可被hypervisor安全的回收,Guest OS自行决定将哪些内存swapping交换到硬盘上以保证分配给气球驱动内存。显然需要安装VMware Tools才能实现气球回收内存,通过这种方式回收内存较慢,依赖于Guest OS内存分配的速度。
      

  •   内存交换(Hypervisor Swapping):当虚拟机启动时就会创建一个内存swap文件,文件大小为最大内存交换量(虚拟机配置内存-内存预留)。当上面两种回收方式不能满足需求时,hypervisor会进行swapping将虚拟机的物理内存交换到硬盘上。hypervisor并不知道将哪些内存交换好,Guest OS也不知道哪些内存被交换了,这将极大的影响虚拟机的性能,当出现这种情况时说明需要加内存了。
      

  •   内存压缩(Memory Compression):这是4.1的新功能,对内存的交换的优化。如果swapping的内存页是可压缩的,则将其压缩后存储在压缩缓存区中,这样再次访问这个被swapping的内存时仅需要解压缩,而不是从硬盘读取,这将快的多。不能压缩或压缩缓冲区满则会与硬盘进行真正的swapping。在ESX(i)的高级设置中可以设置压缩缓存的大小等。


  •   当主机可用内存高于等于6%时,hypervisor仅使用透明页共享回收内存(当没有设置虚拟机内存限制时)。如果虚拟机设定了内存限制,则hypervisor使用ballooning甚至swapping回收内存直到低于限定值。
  •   当主机可用内存接近4%时,hypervisor使用ballooning回收内存,一般情况下可以及时的回收内存,让可用内存保持在4%以上。
  •   如果ballooning不足以回收内存,主机可用内存接近2%时,hypervisor在ballooning回收内存的基础上增加使用swapping(并激活内存压缩)加速内存回收,让可用内存保持在4%以上。
  •   罕见的当主机可用内存只有1%时,hypervisor除了继续使用ballooning和swapping回收内存,还禁止所有虚拟机申请更多内存。
  

  

  二、虚拟机内存分配
  VMware ESX(i)提供了三个参数来控制虚拟机的内存分配(虚拟机设置-资源-内存)

  •   “限制(Limit)”限定了分配给虚拟机物理内存的上限,如果虚拟机使用的内存超过该限定值则hypervisor强制回收内存,默认是无限制,即已虚拟机内存大小为限。虚拟机硬件设置中的内存对于大多数Guest OS是不能热添加的,有的能热添加但是要使用添加的内存还要重启Guest OS,只有少数Guest OS能热添加并使用的,因为这个需要Guest  OS识别,因此对Guest OS要求高。但是内存限制可以在虚拟机运行时随意的调整,Guest OS无需感知是透明的。
      

  •   “预留(Reservation)”是保证分配给虚拟机最低物理内存的下限,即hypervisor至多从虚拟机回收内存到预留值为止,不再继续回收,保证一个基本的内存可避免性能降低到无法忍受。
      

  •   “份额(Shares)”是当主机内存过量使用时,虚拟机可获得的物理内存是通过一个公式计算得到的,份额是其中一项。默认份额=虚拟机内存*10。


  •   公式:ρ=份额/(活动内存+k*空闲内存),ρ就是该虚拟机可获得物理内存比例的分子,分母是所有虚拟的ρ的和。
    k是惩罚因子,k=1/(1-IMT),IMT为空闲内存税(Idle Memory Tax),默认IMT=75%,即k=4,IMT值可以在ESX(i)的高级设置中修改。
    显然份额越大,活动内存比例越高则ρ越大,可获得的物理内存越多。hypervisor从ρ最小的虚拟机开始回收内存。
  参考文献:
Understanding Memory Resource Management in VMware ESX 4.1
空闲内存税的算法

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-519468-1-1.html 上篇帖子: VMware在使用桥接方式时无法联网 下篇帖子: VMware Workstation 10技术预览版试用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表