vSphere 基础知识学习之内存虚拟化 原理
2016-08-04 16:02
204 查看
当运行一个虚拟机时,vSphere的VMKernel为虚拟机生成一段可编址的连续内存,与普通操作系统提供给上层应用使用的内存具有相同的属性特征。引入内存虚拟化之后,同样的内存地址空间,允许VMkernel同时运行多个虚拟机并保证它们之间使用内存的独立性。
vmware vSphere的三层内存映射结构如下图所示:
图:内存三层映射
ESXi 裸机体系结构的强大功能主要体现在内存优化方面,这些功能可提高内存使用效率。ESXi 主机的内存管理支持安全地过量分配内存。分配给每个虚拟机的内存总和可超过主机上安装的物理内存总和。ESXi 主机采用了几种有效方法来支持安全的内存过量分配。例如,过量分配率为 2:1 时,通常只会对性能产生非常小的影响。
图:内存的过量分配
内存通常是最有限的资源,vSphere VMkernel 管理服务器的 RAM,可进行多种资源节约操作。通过 VMware 设计的若干功能,vSphere 可支持实现 RAM 的高效使用和更高的整合率,包括透明页共享、客户机内存回收和内存压缩。实现过量分配的内存管理机制如下:
透明页共享TPS(Transparent page sharing)
TPS 是 VMware 独有的一种内存优化方法。VMkernel 可检查虚拟机存储的每个内存页面,以便识别相同的页面,并仅存储一个页面副本。
图:透明页共享
气球内存回收
ESXi 主机使用一种随 VMwareTools 提供的内存释放驱动程序,该程序安装在每个虚拟机中。如果内存不足,则 VMkernel 将选择一个虚拟机并扩充其内存,也就是说,它会通知该虚拟机中的释放驱动程序从客户操作系统要求更多的内存。客户操作系统通过生成内存满足这一需求,然后 VMkernel 会将释放出的页面分配给其他虚拟机。
图:气球内存回收
内存压缩
当内存过量分配时,内存压缩可以帮助提高虚拟机性能。默认情况下已启用该功能。因此当主机内存过量分配时,ESXi 会在尝试将该页面交换到磁盘前压缩虚拟页面并将其存储在内存中。
图:内存压缩
主机级SSD交换文件
每个虚拟机都包含一个 VMkernel 交换文件。如果多个虚拟机需要完全使用分配给它们的内存,则 ESXi 主机将根据为每个虚拟机指定的内存资源设置,按比例将其内存区域交换到本地或网络固态驱动器 (SSD) 设备中。
将虚拟机内存分页移到磁盘中: 如非必要, 系统不会使用 VMkernel 交换空间, 因为这种方式的性能很差。
图:交换文件
综上所述,对内存的调度管理功能满足了如下需求:
单个虚拟机能够支持扩展到最大4TB的内存;
可以灵活分配调度物理服务器上的内存资源,如可按MB大小分配给虚拟机内存资源;
对内存的调度应能实现虚机按需使用,随用随取,不用即释放,使得计算资源能被充分利用;
具有合理的内存调度机制,能够实现内存的过量使用,支持不同虚拟机中内存相同数据部分的页面共享技术,保障内存资源的充分利用;
在虚拟机操作系统支持的前提下,应能支持虚拟机的内存热添加技术;
支持内存压缩技术,减少虚拟内存在虚拟机高压力内存状态下交换到磁盘上的概率,从而提升性能;
vmware vSphere的三层内存映射结构如下图所示:
图:内存三层映射
ESXi 裸机体系结构的强大功能主要体现在内存优化方面,这些功能可提高内存使用效率。ESXi 主机的内存管理支持安全地过量分配内存。分配给每个虚拟机的内存总和可超过主机上安装的物理内存总和。ESXi 主机采用了几种有效方法来支持安全的内存过量分配。例如,过量分配率为 2:1 时,通常只会对性能产生非常小的影响。
图:内存的过量分配
内存通常是最有限的资源,vSphere VMkernel 管理服务器的 RAM,可进行多种资源节约操作。通过 VMware 设计的若干功能,vSphere 可支持实现 RAM 的高效使用和更高的整合率,包括透明页共享、客户机内存回收和内存压缩。实现过量分配的内存管理机制如下:
透明页共享TPS(Transparent page sharing)
TPS 是 VMware 独有的一种内存优化方法。VMkernel 可检查虚拟机存储的每个内存页面,以便识别相同的页面,并仅存储一个页面副本。图:透明页共享
气球内存回收
ESXi 主机使用一种随 VMwareTools 提供的内存释放驱动程序,该程序安装在每个虚拟机中。如果内存不足,则 VMkernel 将选择一个虚拟机并扩充其内存,也就是说,它会通知该虚拟机中的释放驱动程序从客户操作系统要求更多的内存。客户操作系统通过生成内存满足这一需求,然后 VMkernel 会将释放出的页面分配给其他虚拟机。图:气球内存回收
内存压缩
当内存过量分配时,内存压缩可以帮助提高虚拟机性能。默认情况下已启用该功能。因此当主机内存过量分配时,ESXi 会在尝试将该页面交换到磁盘前压缩虚拟页面并将其存储在内存中。图:内存压缩
主机级SSD交换文件
每个虚拟机都包含一个 VMkernel 交换文件。如果多个虚拟机需要完全使用分配给它们的内存,则 ESXi 主机将根据为每个虚拟机指定的内存资源设置,按比例将其内存区域交换到本地或网络固态驱动器 (SSD) 设备中。将虚拟机内存分页移到磁盘中: 如非必要, 系统不会使用 VMkernel 交换空间, 因为这种方式的性能很差。
图:交换文件
综上所述,对内存的调度管理功能满足了如下需求:
单个虚拟机能够支持扩展到最大4TB的内存;
可以灵活分配调度物理服务器上的内存资源,如可按MB大小分配给虚拟机内存资源;
对内存的调度应能实现虚机按需使用,随用随取,不用即释放,使得计算资源能被充分利用;
具有合理的内存调度机制,能够实现内存的过量使用,支持不同虚拟机中内存相同数据部分的页面共享技术,保障内存资源的充分利用;
在虚拟机操作系统支持的前提下,应能支持虚拟机的内存热添加技术;
支持内存压缩技术,减少虚拟内存在虚拟机高压力内存状态下交换到磁盘上的概率,从而提升性能;
相关文章推荐
- 概率图模型-原理与技术 第二章 基础知识 学习笔记
- 虚拟化学习笔记-基础知识
- c语言学习之基础知识点介绍(十八):几个修饰关键字和内存分区
- c语言学习之基础知识点介绍(十九):内存操作函数
- Linux设备驱动程序——Linux设备驱动程序——内存和I/O基础知识学习:(2)内核中相关基础知识学习
- c语言学习之基础知识点介绍(十):内存空间模型、地址解释及指针变量
- OC基础:内存(进阶):retain.copy.assign的实现原理 分类: ios学习 OC 2015-06-26 17:36 58人阅读 评论(0) 收藏
- Linux设备驱动程序——内存和I/O基础知识学习:(1)内核中相关基础知识学习
- Hadoop学习之HBase基础知识、操作和原理
- 开始学习asp.net,一些基础的知识。
- java基础知识学习
- XML基础知识学习六(XML 确认)
- 《JAVA2核心技术 卷一 基础知识(原书第七版)》《Core java2,Volume I-Fondamentsls Seven Edition》 学习笔记(一)
- [学习笔记]servlet基础知识整理
- XML基础知识学习七(XML 浏览器(Netscape、Explorer))
- 网络基础知识讲座之五:学习生成树协议
- XML基础知识学习十(微软的XML解析器)
- XML基础知识学习五(XML 属性)
- 通过例子学习正则表达式(一)--基础知识
- 学习Windows程序必须知道的基础知识