vSphere 资源管理
1 CPU
1.1 ESXi Host 中 CPU 的概念
概念 | 说明 |
---|---|
socket 颗 | 物理上的名词,有些主板能插多颗 CPU ,一个 socket 可以有多个 core |
core 核 | 可以称之为内核,一个物理内核可以划分出多个 LCPU |
LCPU 逻辑 CPU | 在一个物理内核上同一时间能够执行的并发任务只能有一个,这个任务被称为LCPU,1台 VM 至少对应一个 active LCPU |
vCPU/vSMP 虚拟CPU | 任何 vCPU 都无法独占一个物理内核的资源 |
1.2 vCPU 在 ESXi Host 主机的运行示意图
![ESXi Host 主机的 CPU 运行示意图][vcpu]
虚拟机为什么挂死的时候会自动重启,因为ESXi会强行释放死进程
1.3 VM 的 NUMA 技术对性能的影响
NUMA 全称 Non-Uniform Memory Access,允许指定的内存访问,直接被定位到与内存相关的本地CPU上,通常一个NUMA节点会包含CPU和Memory两个组件
当资源足够的时候,访问会在内部完成,不需要额外的资源调度开销
当内存访问需求超过了NUMA的上限时,会导致跨节点访问,性能就会衰减
1.4 超线程与 vCPU
不建议开启超线程,资源调度会消耗太多资源
2 内存
物理概念:
- MMU Memory management Unit
- RVI Rapid Virt.Indexing(AMD) 最大限度区隔虚拟机内存与物理内存之间的物理隔离,存放于VMM
- EPT Extended Page Tables(Intel) 最大限度区隔虚拟机内存与物理内存之间的物理隔离,存放于VMM
虚拟化概念:
- VMM Virtual Machine Mointor 每一台虚拟机都会产生一个VMM,虚拟机的内存区块映射到VMM,再映射到物理内存;随着虚拟机的开机而产生,关机而结束
- MPN Machine Page Number ESXi机器上的内存区块(ESXi主机上开销的内存)
- PPN Physical Page Numbers 虚拟机从物理内存拿到的物理内存区块(可以理解为虚拟机实际占用的物理内存)
- LPN Logical Page Numbers 虚拟机操作系统内存区块(可以理解创建虚机时设置的内存)
2.1 内存回收技术
内存回收技术依照下表的顺序依次执行,执行顺序如下表所示:
顺序 | 技术 | 简述 |
---|---|---|
5 | swapped | 把虚拟机的内存放在交换文件中 |
4 | Local Host-Level Cache | |
3 | Ballooned Driver | 尽可能减少性能损耗的情况下提升物理内存利用率 |
2 | Compression | 内存压缩技术 |
1 | TPS | 透明页面共享 |
![示意图1][示意图1]
![示意图2][示意图2]
2.1.1 TPS(Transparent Page Shareing)
通过将相同部分的虚拟机内存地址段映射到同一个物理内存地址,实现内存层面的消重,达到内存利用率提升的目的
ESXi 默认开启 TPS
![TPS工作示意图][TPS]
2.1.2 Ballooned Driver
作为内存回收技术的阶梯式组件之一,Balloon Driver 工作运行于 Guest OS,当 ESXi Host 的物理内存资源不足时,通过 TPS 无法满足内存服用要求后,系统可以启动这个Ballon Driver,此时,Balloon Driver 将会从 Virtual Machine 这边回收 Unused 与 Inactive 部分的内存
工作层面:
- VMkernel + VMM 的主机级别层面
- Virtual Machine Guest OS 层面
工作组件支持:
- Balloon Drivers in VMware Tools
- Virtual Machine Monitor
- Windows Pagefiles/Linux Swap Partition
内存回收逻辑:
正常运行状态下,当发生内存回收需求时,Vmkernel 会向 Guest OS 这边请求内存回收,这个请求动作由 VMM 通过 VMware Tools 来完成,默认情况下,会抽取 Unused 和 Inactive 状态下的 Guest Physical Memory, 它的激活顺序如下:
![激活顺序][激活顺序]
限制:
- 默认状态下,最大能回收65%的物理内存资源
- 调整参数后最大可回收75%的物理内存资源,参数: Mem.CtlMaxPercent
2.1.3 Memory Compression
Memory Compression 会帮助我们将要被Swapped Out 的页面再执行前先在 Compression Cache 空间里执行一次压缩,从而实现空间的节省。当这些被压缩的页面需要重新被访问时,则会执行一次解压缩的动作,但是,这个过程的发生,并不在存储或者磁盘上,因此总体性能的影响有,但是并不如想象的大。
系统会执行检测,当确认Swapped Out 的页面的压缩比大于等于 50% 时,将会激活,否则将不被执行。
Memory Compression 是针对于虚拟机的概念,它分散于 ESXi 每一台虚拟机的物理内存部分
工作架构示意图:
![Memory Compression][Memory Compression]
当虚拟机需要对压缩内存进行写操作时,需要先解压,然后再写入,相应的提高了 CPU 的性能损耗,解压缩过程中会有延迟,性能会有所下降
- Memory Compression 指挥针对压缩比大于50%的页面执行压缩
- 针对压缩比大于75%的页面,将会以1KB大小的形式存放
- 压缩执行指令由VMkernel的CPU World来完成
- 压缩不会导致Swapped Out的页面跑到磁盘上
- 被压缩的页面再次被访问时会有解压缩的过程
- 可以针对VM级别设定压缩比例
- 该功能可以禁用
2.1.4 Local Host-Level Cache(Host SSD Swap)
当TPS、Balloon Driver、Memory Compression 都不管用时,如果 Memory 依然不足,则系统将会执行 Swapped Out 的动作,此时,系统会强行将 VM 的 Active Memory Swap 到 Disk 上,已解决燃眉之需:
Host-Level SSD Swap 则发生再激发 Swapped Out 动作之后,Swapped Active Memory 到 xxx.vswp 之前
vSphere Flash Read Cache :
可控都高于 LHC
工作原理:
利用SSD盘强大的IOPS支持,帮助 VM 资源不足的情况下,将写入Disk里面的Swap信息从写入到传统的SSD盘里面,变成写入到SSD盘里,相当于给每台VM额外制备了一个内存缓存区,由于这个内存缓存区由SSD盘构成,记住SSD强大的读写性能,尤其是读性能,可以再物理内存资源不足的情况下,最大限度降低性能的损耗
配置要求:
- SSD盘
- vSphere 版本要求
- 预先分配空间
- 大小限制
2.1.5 Swapped Out
ESXi 主机的 VM 文件夹会生成两个和内存相关的文件:
文件 | 作用 | 备注 |
---|---|---|
vmx-xxxxxx.vswp | ESXi 运行虚拟机进程时物理内存不够情况下,用来使用的 | 约等于 VMM 内存开销大小 |
xxxxxx.vswp | 虚拟机 Swap Out 时,用来跑内存的 | 随着虚机的开机而产生,关机而消失,约等于分配内存大小 |