内存过量使用
已完成
- 3 分钟
在内存虚拟化中,实际内存的合计大小可能会超过物理内存的实际大小。 此概念通常称为内存过量使用。 内存过量使用可确保现用的实际内存充分利用物理内存(假设多个 VM 同时运行)。 事实上,如果不采用内存超分配,虚拟机监控程序只能运行总内存实际大小小于物理内存的虚拟机。 例如,图 3 显示了一个具有 4 GB 物理内存的虚拟机监控程序以及三个虚拟机,每个虚拟机都有 2 GB 的实际内存。 如果不采用内存过量使用技术,虚拟机监控程序只能运行一个 VM,因为它没有足够的物理内存可同时分配给两个 VM。 虽然每个 VM 只需要 2 GB 内存,而虚拟机监控程序具有 4 GB 物理内存,但虚拟机监控程序通常需要额外的内存(例如,用于维护各种虚拟化数据结构),因此无法提供此内存。

图 3:具有 4 GB 物理内存的虚拟机管理程序,支持同时运行三个虚拟机,总共使用 6 GB 的实际内存
为此,在实际情况中,某些 VM 可能负载较轻,而另一些可能负载较重。 负载较轻的 VM 可能导致某些页面处于闲置状态,而负载较重的 VM 可能导致内存页面崩溃。 为了应对这种情况,虚拟机监控程序可以从闲置的 VM 中取走(或窃取)非活动的物理内存页面,并将其提供给负载较重的 VM。 但随之而来的副作用是,虚拟机监控程序通常会向被盗/回收的非活动物理内存页面写入零,以避免在 VM 之间泄露信息。