我们从以下6 个特征对本文进行分析:
1. 内存优化技术
-
页面级去重: 这种传统方法侧重于识别和合并跨虚拟机 (VM) 或进程的相同内存页面。它分析原始内存内容以查找重复项,而无需考虑数据的更高层次结构。该技术可能效率很高,但没有考虑语义相似性。
-
对象级去重: 这种更复杂的方案超越了原始内存并识别跨 VM 的重复应用程序二进制文件和库。它认识到这些对象通常包含可共享的相同代码段,即使它们位于不同 VM 的不同内存地址中。这提供了更细粒度的去重,具有更高的空间节约潜力,但需要额外的处理来识别对象。
2. 目标资源
-
应用程序二进制文件和库: 此类别包括应用程序使用的可执行代码和预编译库。这些对象通常占用了大量内存,并且经常在 VM 之间包含冗余代码。针对这些对象进行去重可以显着提高云环境中的内存密度,其中许多租户运行类似的软件。
-
通用内存页面: 此更广泛的类别涵盖 VM 或进程中的所有内存页面。页面级去重技术分析所有内存页面,无论其内容如何。这可能不如对象级去重有效,尤其是在处理不同 VM 上的不同工作负载时。
3. 隔离机制
-
基于 Hypervisor 的: 这种方法利用 Hypervisor,它是在物理机上管理多个 VM 的软件层。Hypervisor 可以拦截内存访问并识别跨 VM 的重复页面以进行去重。但是,如果受损的 VM 可以绕过 Hypervisor 控件,则仅依赖 Hyperv