### vsphere 5 内存管理
#### 一、透明页面共享 (Transparent Page Sharing, TPS)
在虚拟化环境中,多个虚拟机(VM)可能会运行相同或相似的操作系统及应用程序,这导致它们共享大量相同的内存页。为了提高内存利用率,vSphere 5 引入了一项名为**透明页面共享 (Transparent Page Sharing, TPS)**的技术。
- **工作原理**:TPS 技术通过比较不同虚拟机中的内存页内容来识别重复的数据,并只保留一个副本。该过程不会影响正在运行的应用程序或操作系统。
- **示例**:
- 在进行 TPS 分析之前(Before TPS),假设存在两个不同的虚拟机 vCenter-VM01 和 vCenter-VM02,它们各自拥有多个物理页编号(PPN)和机器页编号(MPN)。
- TPS 通过哈希函数对内存页内容进行计算,并将哈希值存储在哈希表中。
- 如果发现两个或多个虚拟机的内存页具有相同的哈希值,则这些页被视为共享页,并且只保留一份。
- 比如,在图示中,两个虚拟机的内存页都经过了 TPS 处理,其结果是减少了内存占用。
- **关键概念**:
- **PPN**: 物理页编号(Physical Page Number),由操作系统管理。
- **MPN**: 机器页编号(Machine Page Number),由 Hypervisor 或硬件虚拟化层管理。
- **LPN**: 逻辑页编号(Logical Page Number),由应用程序访问。
- **Hash Function**: 哈希函数用于计算内存页的内容摘要,从而快速比对页的相似度。
- **Hash Table**: 存储哈希值的表格,用于查找重复的内存页。
#### 二、软件 MMU 虚拟化 (Software MMU Virtualization)
- **定义**:软件 MMU 虚拟化是指通过软件方式实现内存管理单元(MMU)的功能,从而支持虚拟机之间的内存隔离和管理。
- **实现机制**:
- **Shadow Page Tables**: 阴影页表是一种技术,用于在虚拟机监控器(VMM)级别维护虚拟机的页表副本,以确保虚拟机的内存地址空间独立于宿主机。
- **VMM (Virtual Machine Monitor)**: 虚拟机监视器或称为 hypervisor,是位于硬件和操作系统之间的软件层,负责管理和调度虚拟机资源。
- **Nested Page Tables**: 嵌套页表用于支持嵌套虚拟化场景,即在一个虚拟机内部运行另一个虚拟机。
- **Extended Page Tables (EPT)**: Intel 的扩展页表功能,允许 VMM 直接控制内存页表,从而提高性能。
- **Rapid Virt Indexing (RVI)**: AMD 提供的一种类似 EPT 的功能,用于提高虚拟化环境中的内存管理效率。
- **应用场景**:
- 在 vSphere 5 中,通过使用软件 MMU 虚拟化技术,能够有效地管理和分配内存资源给多个虚拟机,同时确保每个虚拟机之间的内存隔离性。
#### 三、内存过量分配 (Memory Overcommitment)
- **定义**:内存过量分配是指在物理主机上分配给虚拟机的内存总量超过物理主机实际可用的物理内存量。
- **优点**:
- 提高资源利用率。
- 支持更多的虚拟机运行在同一台物理服务器上。
- **实现机制**:
- **Ballooning**: 通过安装在虚拟机上的 VMware Tools 可以动态调整虚拟机的内存大小。当主机内存紧张时,Ballooning 技术可以将一部分内存从不活跃的虚拟机中回收,供其他更活跃的虚拟机使用。
- **Reclamation**: 内存回收策略用于自动释放未使用的内存页。
- **Host Swapping**: 将虚拟机的部分内存内容移动到物理主机的交换分区,以便为其他虚拟机释放更多内存。
- **Memory Ballooning**: 通过调整虚拟机的内存大小,使得物理主机能够在内存不足时回收部分内存。
- **关键组件**:
- **vCenter Server**: 用于集中管理多台 ESXi 主机的中央管理系统。
- **ESXi Host Monitoring**: 提供关于 ESXi 主机内存使用情况的实时监控数据。
- **VMware Tools**: 安装在虚拟机内的工具集,用于优化虚拟机与 ESXi 主机之间的通信并提供额外的功能。
#### 四、内存压缩 (Memory Compression)
- **定义**:内存压缩技术通过压缩内存中的数据来减少实际占用的物理内存量,从而增加可用内存。
- **工作原理**:
- 当物理内存不足时,vSphere 5 会尝试压缩不活跃的内存页。
- 压缩后的数据被存储在物理内存中,而未压缩的原始数据则可能被移至磁盘交换空间。
- 该过程对用户和应用程序来说是透明的。
- **优点**:
- 在不影响性能的前提下,增加了可用的物理内存。
- 减少了对物理内存的需求,提高了内存的使用效率。
#### 五、内存置换 (Memory Swapping)
- **定义**:内存置换是指将虚拟机的部分内存内容移动到物理主机的交换分区,以便为其他虚拟机释放更多内存。
- **实现机制**:
- **ESXi Mem**: ESXi 内核的内存管理模块负责执行内存置换操作。
- **Page File**: 一种用于存放临时数据的文件,通常位于硬盘上。
- **Swap Partition**: 专门用于存储虚拟机被置换出的内存内容的分区。
- **关键概念**:
- **Before Swapping**: 在进行内存置换之前的状态。
- **After Swapping**: 在完成内存置换之后的状态。
- **ESXi Mem**: ESXi 的内存管理组件。
- **Host Memory**: 物理主机的总内存。
- **Guest Memory**: 虚拟机使用的内存。
#### 六、内存预留和限制 (Memory Reservation and Limit)
- **定义**:内存预留和限制是指为虚拟机设置最小和最大内存使用量,以确保其获得稳定的内存资源。
- **实现机制**:
- **Reservation**: 为虚拟机预留的最小内存量。
- **Limit**: 虚拟机可以使用的最大内存量。
- **Configured**: 设置的内存配置。
- **Shares**: 决定了当物理内存资源紧张时,不同虚拟机之间如何分配剩余的内存资源。
- **关键组件**:
- **Worst Case Allocation**: 在最坏的情况下,虚拟机能够获得的内存量。
- **Overhead Reservation**: 除了虚拟机自身内存之外,还需要为虚拟机的运行预留的一部分额外内存。
- **Physical Memory (PMEM)**: 物理主机的总内存容量。
#### 七、内存管理单元 (MMU) 活动 (MMU Activity)
- **定义**:MMU 活动是指内存管理单元在虚拟化环境中的活动状态。
- **关键概念**:
- **VMkernel Swapping Activity**: VMkernel 执行的内存置换活动。
- **COS Swapping Activity**: Client-Operating System 执行的内存置换活动。
- **VMs Swapping Activity**: 虚拟机自身的内存置换活动。
- **Balloon Driver Enabled**: 是否启用了气球驱动程序,用于动态调整虚拟机的内存大小。
- **应用场景**:
- 监控 MMU 活动可以帮助管理员了解虚拟机和物理主机的内存使用情况,并据此作出适当的资源调配决策。
#### 结论
vSphere 5 的内存管理技术覆盖了从硬件层面到软件层面的各种方法,旨在提高内存资源的利用效率,同时确保虚拟机的稳定性和性能。通过实施诸如透明页面共享 (TPS)、内存过量分配、内存压缩以及内存预留和限制等策略,vSphere 5 能够在资源有限的情况下最大化地支持虚拟机的运行需求。这对于数据中心和云服务提供商来说尤其重要,因为它们通常需要管理大量的虚拟机实例。通过有效管理内存资源,不仅可以提高硬件投资回报率,还能提升用户体验和服务质量。