虚拟机内存工作原理_VCP6.0_第1页
虚拟机内存工作原理_VCP6.0_第2页
虚拟机内存工作原理_VCP6.0_第3页
虚拟机内存工作原理_VCP6.0_第4页
免费预览已结束,剩余7页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.虚拟机内存工作原理Windows环境内存名词释义Windows内存管理概述在现代计算机系统中,内存是指 CPU 可以直接访问的随机存储器。在硬件上 , CPU 通过一组地址线连接到内存上,这组地址线称为内存总线 。 而在软件上 , CPU 的许多指令允许用内存单元地址作为指令的操作数,实现直接操纵这些内存单元。内存地址 ,在 Intelx86 体系结构中 ,内存地址有三种类型:物理地址 即内存存储器的索引, CPU 操纵内存芯片时,通过地址线管脚加上电信号来读或写相应的内存单元。在 Intel x86体系结构上 ,物理地址是一个32 位或 36 位的无符号整数 。虚拟地址 :在 32 位系统

2、上 ,虚拟地址空间可以达到4GB 大小 ,也就是说 ,整个空间可以有 232=4294967296个字节单元 。Intel x86芯片内有专门的电路负责把一个虚拟地址转译成物理地址。逻辑地址 。 逻辑地址包含两部分:段和偏移 。段指定了在整个地址空间中的一个基地址、段空间的大小、属性 。 与寻址相关的是段的基址和大小。偏移部分指定了一个逻辑地址相对于段基址的偏移量。此偏移量不能超过段的边界。因此,逻辑地址的实际地址是段基址加上偏移量。 Intel x86芯片也有专门的电路把逻辑地址转译成一个虚拟地址或物理地址。把一个地址告诉CPU,让它访问相对应的物理内存单元,这一过程是操作系统和CPU相互协

3、作来完成的。CPU 最终需要的是一个物理地址,它必须把软件指令中的地址转译成物理地址 ,在转译过程中可能会涉及一些数据结构,甚至涉及I/O 操作 。.专业学习资料.从操作系统的角度来看,一方面 ,它需要有效地管理所有的物理内存,使得当一个进程需要内存时 ,能够分配足够的内存单元给这一进程;另一方面 ,正如上一章所讲,进程代表一个相对独立的任务,它有一个逻辑上独立的地址空间。不同进程的地址空间应该是相互隔离的 。 实现每个进程都有自己的私有地址空间。当系统中进程数量增加以后,所需内存数量往往超过了总的物理内存,在这种情况下,操作系统须合理地安排内存的使用,使得内存紧缺时,既不会波及系统本身的稳定

4、性,同时也不会严重影响系统的性能。当发生这种情况时,一般的做法是把不紧急的进程中的数据或代码先存放到硬盘( pagefile )中,从而把它们占用的物理内存腾出来给紧急的进程使用,或者交给系统使用。当内存紧缺的状况缓解时,系统再把硬盘(pagefile )中的进程数据或代码装回到已经空闲下来的内存单元中,从而使这些进程有机会继续运行。这两个过程称为内存换出和换入 。 几乎所有的多进程操作系统都支持这种内存管理。内存基本单元总是字节Bytes 。 每个内存地址指向一个字节,地址值加 1 以后指向下一个字节 。 物理内存的地址是固定的,故让进程使用物理地址来访问内存将使得进程的动态分配难以有效实施

5、,因为内存单元与进程将通过物理地址紧密地联系在一起了,从而内存的回收和再分配将受限于特定的进程和物理地址。为打破这种关联关系,思路是让进程使用虚拟地址 ,而虚拟地址和物理地址之间通过一个映射表 来完成转译 。1.1 pagefile:即 windows安装过程中创建的分页文件,见下图 。.专业学习资料.注: Linux 中 Swap (交换分区 ),类似 Windows的 pagefile ,当物理内存不足时,把一部分硬盘空间虚拟成内存使用,解决物理内存容量不足的情况。Android是基于 Linux 的操作系统 ,故也可使用Swap 分区来提升系统运行效率。VMware ESXi 上创建的虚

6、拟机会自动根据虚拟机的内存大小创建一个同等大小的swap文件 ,这个文件通常和虚拟机镜像文件在同一个目录,文件名 : *.vswp 。 比如创建一个内存为 8GB 的 VM , *.vswap会自动创建 ,且大小为8GB,保存在同1 个 datastore中。1.2 虚拟内存 : Windows可使用的内存总称,包括物理内存和分页文件。从 win NT 开始,普通的应用程序已无法直接访问物理内存,只能访问 虚拟内存 ,再由CPU 将虚拟内存地址转换为物理内存地址。所以运行软件和游戏,访问的都是虚拟内存。(驱动程序应能直接访问物理内存)应用程序能使用一系列虚拟地址来访问大于可用物理内存的内存缓冲

7、区。当物理内存的供应量变小时,内存管理器会将物理内存页(通常 4KB)保存到磁盘文件。数据或代码页会根据需要在物理内存与磁盘之间移动。.专业学习资料.案例 :pagefile的应用 (物理内存16G , pagefile 16G)应用程序内存扫描启动物理内存剩余量活跃 /闲置PagefileA20GNOB8GYES8G7G/1G1GC6GYES2G5G/1G1GD4GYES2G+OS 回收 2GTotal 应用占用了32G,应用程序X 无法启动 。 极限之后会出现:蓝屏或重启 。VMware虚拟机环境内存利用技术若VM 启动时只需要?是否能够开启1GB 内存 ,按需分配VMM 虚拟机监控程序V

8、MkernelVM1.共8台VM9全负载配置 2GB内存配置 2GB内存若 VM 将 2GB内存全部用完,16GB物理内存Vmkernel 不会增加内存供给。办法:使用 VM1 的pagefile。当VM9 启动,出现内存过量配置, VMkernel 会启动内存的调度机制,第一步:透明页共享(TPS),回收 0.8GB内存;第二步: balloon;第三步:交换文件( Swap)。* 注:每个 VM 是一个进程, VMkernel 对所有 VM 都是平等的,内存没有过量配置的情况下,内存的调度机制完全不会启动。1、透明页共享 TPS.专业学习资料.透明页共享是虚拟化中的内存管理技术之一 ,是指

9、将1 台主机上的冗余内存页精简为1 个页面,而其它页面用指针代替,从而达到释放内存空间的目的。该技术的核心要点:相同类型操作系统中,相同服务或是进程所消耗的内存,只保留1 份 。TPS 不能用于内存很大的页面,因为通常情况下,只有小内存页才能完全相同。 VMware的ESXi 是按照 4KB 为单位进行内存切片的。内存回收的速度取决于扫描的速度,在 ESXi 的高级设置中可以 设置 TPS 扫描的速度和时间间隔。故最好将相同OS 的 VM 配置在1 台 ESXi 主机上 ,以便更好的使用TPS 节省内存 。案例:当多个 VM 运行相同的Windows server 2008R2在同一个ESXi

10、 主机上时 ,就会有存储完全相同的进程或服务的内存页面。虚拟机管理程序会在每个内存页面上分配哈希值, 并一位一位的进行比较 ,一旦不同页面的哈希值相匹配,就说明存在相同的内存页面。如果虚拟机管理程序确认了同一主机上的多个虚拟机有完全相同的内存页面,它会保留其中一份,而其它页面用指针代替 。 这样就释放了很多内存空间。另外 ,如果虚拟机上指针所代表的信息发生变化,虚拟机管理程序就会向内存信息写入一个新的页面,同时改变指针信息。2、气球膨胀 ( Ballooning)依据 VMware Tools在 Guest OS 中的气球驱动( balloon driver)来回收内存。当需要从该虚拟机回收内

11、存时,气球膨胀从Guest OS中请求内存 ,分配给气球驱动的内存可被hypervisor安全的回收 , Guest OS自行决定将哪些内存swapping交换到硬盘上以保证分配给气球驱动内存。显然需要安装VMware Tools才能实现气球回收内存,通过这种方式回收内存较慢,依赖于 Guest OS内存分配的速度。附件 1: VM 内存调度机制 -balloonVM 内存调度机制 -balloon.专业学习资料.在内存没有过量配置的情况下,内存的调度机制完全不会启动,就没有内存回收措施。因为主机总的物理内存大于所有VM 配置内存的总额的情况下,每台虚机想要多少内存,都能得到满足 ,所以不需要

12、调度机制。以下研究的VMware 的内存调度机制,都是在内存过量配置的情况下发生的。案例 :发生在一个有智慧的水池(Host) 中,水池有不少水(4GB 物理内存 ),里面还有2个水箱 (配置了 2 台 VM) ,水箱有一定的容量(配置内存是4GB),原本是空的 (没有开机 )。1 、充裕 HOST memory保障 VM memory使用的情况现在水箱1 里面要养鱼了 ,必须放点水进去以便鱼可以存活(开机了 )。 最少需要1GB内存 。 于是水箱1(VM1) 就向水池 (Host) 要水 (物理内存 ),水池里面有足够的水,就满足了水箱 1 的要求 。 现在水箱1 有 1GB 的活水 ,而水

13、池里面只剩下3GB 的水了 。.专业学习资料.水箱 1 里面多丢了些鱼(启动新的应用 ),原来 1GB 的水不够用了,于是水箱 1 就继续向水池要水 ,水池 HOST 里面还有足够的水,就又满足了水箱1 的要求 。 现在水箱1 里面有 3GB 的水 ,而水池里面只剩下1GB 的水了 。解释 :要注意的是 ,此时 VM1 里面的应用程序都是活动的(active) ,所以这些内存都属于活跃状态 ,叫做活动内存(Active Memory)。2 、VM 闲置的 memory不会主动归还HOST经过了一段时间以后,水箱 1 里面的鱼被捕走了,现在水箱1 不需要那么多水也足够养活剩下的鱼了。但是水池并不

14、知道水箱1 的状况 。 于是水箱1 还是有那么多水。.专业学习资料.解释 : VM1 的某些应用结束后,释放了部分内存,但是这些内存释放动作是在VM 的Guest OS 层面释放的 ,故 Host 并不知道有内存被释放了,这些内存没有归还Host ,仍然由 VM1 占有 。 VM1 中就有一部分内存属于idle( 空闲的 )memory ,另外一些正在使用的内存就是 active memory。当然 ,就 VM1 自己的 Guest OS 看起来 ,有 3GB 空闲内存 (idlememory) , 1GB 的活动内存 ;而此时就Host 看来,只看见有3GB 内存是分配给了VM1 的 。Ho

15、st 通过 VMware Tools中的驱动 ,每隔一定的时间(ESX4 中默认是 60 秒)去扫描一下VM1 的内存使用状态,以了解活动内存(active memory)的情况 。3 、 Balloon或 Swap 内存调度机制水箱 2 中养鱼了 (VM2 开机 ),水箱 2 也开始从水池中抽水。但是水池 HOST 里面的水不能枯竭 ,因此水池有警戒水位,第一条警戒水位是6% ,当下降到第一警戒水位以下并仍然在不停下降时,就要开动调水机制从其他水箱反抽水。解释 : VM2 开机时也需要1GB 内存 ,在启动时 ,它也不断向Host 请求内存 。Host 则将自己的内存源源不断地分配给VM2

16、,直到下降到第一条警戒位6% 。 Host 内存有 4 种状态,分别是 High, Soft, Hard和 Low ,它们间的分界线分别是6%, 4%, 2% 和 1% 。 可用内存高于 6%时,不会启动Balloon或 Swap 机制 。 当低于 6% 向 4% 逼近时 , Balloon 机制就启动了 。.专业学习资料.向哪个水箱抽水呢?谁的水最富裕就向谁抽。解释 :如何判断呢 ?刚才我们说过, Host 每隔一定时间就会扫描Guest OS 的内存使用状况 ,此时, Host 会计算 ( VM tools)每个 VM 的份额内存比 ,对 最小的那台虚机启动气球驱动 ,气球开始膨胀。于是

17、,气球开始膨胀 ,并将多余的水挤出水箱。解释 : Balloon 驱动如同普通驱动那样,不断向 Guest OS 索取内存 , Guest OS 尽自己可能满足气球驱动,并优先将空闲部分的内存分配给它,注意,此时可能出现Guest OS 自己的物理内存不足,并引起 Guest OS 的 paging (内存分页 )机制 ,将一部分内存page.专业学习资料.out (页出 )到自己的 swap 中。这个例子中 , VM1 还有很多空闲内存,因此足够让主机回收并满足 VM2 的需求 。主机将比较气球膨胀获得的这部分内存的地址,如果原先是分配给VM1 独享的 , (也就是没有TPS 共享 ),那么

18、就可以收回。主机将不停的通过气球驱动收回内存,收回的目标是保持至少6% 的内存 。注意 :此时内存没有出现争用情况,因此 shares 仍然没有起作用,但是Overcommitment是存在的 ,所以会有reclaim ,会有 ballooning。Ballooning回收内存是比较慢的,通常需要几分钟。如果主机可用内存池的内存减少速度大于气球驱动返还主机的内存,那么可用内存会进一步下降 ,当突破 4%的第 2 警戒线时 ,进入到 hard 状态,主机就会启用第2 种回收机制 swapping (交换 ), 将 VM1 的一部分物理内存交换到swap 文件中 ,以加快回收内存的速度 。目的是将可用内存保持在4%的警戒线以上。如果可用内存继续下降到2%以下,进入到 low 状态的时候 ,ESX 不仅会继续加速Swapping ,还会阻止

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论