虚拟化实战:VM设计之二内存机制

虚拟机需要配置多大的内存合适?怎样才能最佳利用主机的物理内存?怎么把握Over-Commitment的度?本文从概念到实战来阐述如何做好虚拟机上内存资源规划。

一如何分配内存?

首先我们明确一些概念。

上图分三层,他们分别是是App层,OS层和Hypervisor层。对于物理服务器而言,所有的内存资源都分配给单独的操作系统和上面运行的应用。应用将请求先发送给操作系统,然后操作系统调度物理的内存资源。

我们以下面一个场景为例,来分析内存在各层中是如何分配的。

假设我们先启动ESXi主机,这时Hypervisor加载物理内存,这和任何其他操作系统加载物理内存的原理一样。在这一层Hypervisor加载的内存称作“Machine memory”。然后我们在该ESXi主机上创建了虚拟机,并为其设置4G内存(Configured Memory Size),这也称为“Guest Physical Memory”,由于这是Virtual Hardware为该虚拟机所分配的内存。对于操作系统而言,这和物理内存没有区别,就认为自己是完全控制该4G内存的。然后我们启动该VM,上面的OS开始运行。之后运行一个应用,该应用通过系统调用(syscall)向OS发出请求,然后获得内存。这里称作“Virtual Memory”

上面说的是内存分配的过程,那么内存是如何释放的呢?

App通过系统调用告诉OS来释放不需要的内存。可OS认为所有设置在虚拟机上的内存都是专门分配给自己的,并不会释放Guest Physical Memory,而是创建一个Free List来记录该内存是可以被重新分配的。而Hypervisor根本无法访问这个Free list。所以根本无法释放物理内存。

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Servers/virtualization/

二 Hypervisor如何释放物理内存?

这下问题来了,根本别指望通过Guest来能释放物理内存。那究竟Hypervisor是怎么释放内存的呢?主要有下面几个技术:

TPS (Transparent Page Sharing)TPS缺省是一直自动运行的。比如一台ESXi主机上运行多个虚拟机,他们的OS和App很类似,必然很多内存页的内容是一样的,Hypervisor就会比较这些页面,在物理内存去除冗余,仅仅保留单个页面的信息。从而减少了物理内存的消耗。

Blooning

在虚拟机上安装的VMtools就包括了ballooningdriver。它告诉Hypervisor哪些不活动的内存页面可以被收回。这对虚拟机上应用的性能是没有任何影响的。关于Blooning技术的原理,delxu的博文图解VMware内存机制解释的非常清楚,赞一个。我在此不再赘述。

Compression:缺省是启动的。在启动Swaping之前系统会尝试将虚拟内存页面压缩,如果小于2KB,可以保存在虚拟机的Comression Cache内。

Swapping:

如果在TPS,blooning和Compression都用上了的情况下,仍然有物理内存不足的情况。那么不得已最后一招就是Swapping。因为页面交换和Disk进行的,这对应用性能很可能造成大的负面影响。参见Frank Denneman博文Impactof host local VM swap on HA and DRS

时间: 2024-08-30 15:33:49

虚拟化实战:VM设计之二内存机制的相关文章

xen虚拟化实战系列(二)之xen虚拟机安装

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1284591 xen虚拟化实战系列文章列表 xen虚拟化实战系列(一)之xen虚拟化环境安装xen虚拟化实战系列(二)之xen虚拟机安装xen虚拟化实战系列(三)之xen虚拟机复制xen虚拟化实战系列(四)之xen虚拟机扩展磁盘空间一法xen虚拟化实战系列(五)之xen虚拟机扩展磁盘空间再一法xen虚拟化实战系列(六)之x

xen虚拟化实战系列(十二)之xen虚拟机高可用之在线迁移

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1286643 xen虚拟化实战系列文章列表 xen虚拟化实战系列(一)之xen虚拟化环境安装xen虚拟化实战系列(二)之xen虚拟机安装xen虚拟化实战系列(三)之xen虚拟机复制xen虚拟化实战系列(四)之xen虚拟机扩展磁盘空间一法xen虚拟化实战系列(五)之xen虚拟机扩展磁盘空间再一法xen虚拟化实战系列(六)之x

xen虚拟化实战系列(十)之xen虚拟机双网卡配置

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1286463 xen虚拟化实战系列文章列表 xen虚拟化实战系列(一)之xen虚拟化环境安装xen虚拟化实战系列(二)之xen虚拟机安装xen虚拟化实战系列(三)之xen虚拟机复制xen虚拟化实战系列(四)之xen虚拟机扩展磁盘空间一法xen虚拟化实战系列(五)之xen虚拟机扩展磁盘空间再一法xen虚拟化实战系列(六)之x

《软件测试技术实战:设计、工具及管理》—第1章 1.1节软件测试的基本理论

第1篇 软件测试设计技术 软件测试技术实战:设计.工具及管理 如何把用户的需求转换为软件测试设计,这是软件测试工程师的工作重心所在.本书第一篇通过6个章节来讲述一下如何进行软件测试设计. 本篇共分以下几个章节. 第1章,软件测试的基本知识:首先讲解一些软件测试的基本知识,如果你对软件测试的基本概念已经非常熟悉了,那么就可以简单浏览,甚至跳过本章的内容. 第2章,传统的软件测试的设计方法:本章主要介绍软件测试中最经典的5个黑盒测试方法(等价类/边界值.决策表.状态转换图.决策树和正交测试法)和7个

VMware内存机制的空闲内存税算法

我曾经在vmsky的论坛发表过一篇探讨VMware内存机制的帖子(见此http://bbs.vmsky.com/thread-23285-1-2.html),最后探讨的例子是一个考虑了空闲内存税(Idle Memory Tax,以下简称IMT)情况下的内存分配计算,但遗憾的是当时猜想的算法是错误的.今天在阅读了Carl的关于内存机制的论文后,深感有必要重新说明一下. 空闲内存税(Idle Memory Tax)是VMware为了更有效地利用主机内存而设置的,它在计算如何分配主机内存的时候,将VM

xen虚拟化实战系列(一)之xen虚拟化环境安装

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1284516 xen目前还是RHEL/CentOS/OEL5.X支持情况比较好.RHEL6.X就默认不支持了,但是也可以通过安装xen的源进行安装.本文采用OEL5.8 x64进行环境配置.今后将发布一个系列的纯文本配置xen实战配置文章,这里不讨论半虚拟化,完全虚拟化等概念,只讲实战,以此对xen学习做一个总结.   x

xen虚拟化实战系列(六)之xen虚拟机破解密码

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1285969 xen虚拟化实战系列文章列表 xen虚拟化实战系列(一)之xen虚拟化环境安装xen虚拟化实战系列(二)之xen虚拟机安装xen虚拟化实战系列(三)之xen虚拟机复制xen虚拟化实战系列(四)之xen虚拟机扩展磁盘空间一法xen虚拟化实战系列(五)之xen虚拟机扩展磁盘空间再一法xen虚拟化实战系列(六)之x

java-Java里iterator迭代器的用法和内存机制不太明白

问题描述 Java里iterator迭代器的用法和内存机制不太明白 为什么声明一个iterator的类型的引用等于对象的iterator方法?不太明白第八行的意思求解答 解决方案 等于的不是方法,而是方法的返回值.看设计模式中的工厂模式和迭代器模式. 举一个例子, class A { public MyIterator iterator() { return new MyIterator(); } } ... A a = new A(); Iterator iter = a.iterator()

xen虚拟化实战系列(十一)之xen虚拟机磁盘文件挂载

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1286477 xen虚拟化实战系列文章列表 xen虚拟化实战系列(一)之xen虚拟化环境安装xen虚拟化实战系列(二)之xen虚拟机安装xen虚拟化实战系列(三)之xen虚拟机复制xen虚拟化实战系列(四)之xen虚拟机扩展磁盘空间一法xen虚拟化实战系列(五)之xen虚拟机扩展磁盘空间再一法xen虚拟化实战系列(六)之x