加载中...

KSM(Kernel Samepage Merging)是 Linux 2.6.32 引入的内存去重机制:内核线程周期性扫描登记过的内存区域,发现内容完全相同的页后合并为一份只读共享页,原有映射改为写时复制。
ksmd 线程用红黑树组织稳定页与候选页,通过内容比较找到重复;合并后任一进程写入该页即触发 COW 复制,正确性不受影响。进程需通过 madvise(MADV_MERGEABLE) 显式声明可合并区域。
KSM 为虚拟化而生:同一宿主机上运行多台相同操作系统的虚拟机时,内核、库文件对应的内存页高度重复,KVM/QEMU 配合 KSM 可节省可观内存,提高超售密度。容器场景因共享页缓存,收益相对有限。
扫描与比较消耗 CPU,合并页的 COW 断开带来延迟;更重要的是,去重造成的时间差异可被用作跨虚拟机侧信道(如 FLUSH+RELOAD 类攻击的前提),多租户公有云因此普遍关闭 KSM。

登录 后参与讨论
暂无讨论,来发表第一条评论吧