作为一个系统管理程序(hypervisor),Linux® 有几个创新,2.6.32 内核中一个有趣的变化是 KSM(Kernel Samepage Merging) 允许这个系统管理程序通过合并内存页面来增加并发虚拟机的数量。Linux UKSM 是国人自主研发的一个 Linux 内核相关项目,这个项目对服务器和桌面应用都可以显著的减少 Linux 系统冗余的内存,已经在 RHEL6、CentOS 6、Ubuntu 12.04 等系统充分验证和测试过。Linux相同页面合并机制(KSM)使得内存中相同的页面,可以通过修改页表的方式合并成一个。通常这个机制被应用在有众多虚拟机(目前仅支持 KVM)或者有很多冗余内存数据的场景(如有很多类似数据工作集的并行科学计算)里面。但是,目前它的实现方式仍然比较简陋,UKSM的出现,彻底消除了KSM原本局限,真正使得这项技术能被更多的普通用户使用。
众所周知,Android 内核衍生自Linux,但因平台特性,Android Kernel与 Linux Kernel演变出分歧,KSM和UKSM是意在解决内存冗余占用问题开发出的两个内核模块,他们在安装运行多个虚拟机宿主Host上表现相当出色。尤其是UKSM,较于KSM,有较高的性能、透明度和安全性,被广大Kernel内核开发人员和大型服务器用户所青睐。
我们的产品内存有限,合并冗余的内存占用,从内存优化的角度出发,KSM和UKSM无疑是比较好的选择。以下我们针对KSM和UKSM的表现作出测试,以作为UKSM和KSM是否登录产品的决策依据。
说明:KSM在Android Kernel 3.10时代就已经集成,内核开关为 CONFIG_KSM,依赖开关为CONFIG_MMU,UKSM为国人解决服务器冗余内存占用研发,可供参考的版本为0.1.2.3-for-v3.1 ~~~0.1.2.5-for-v3.18。
测试条件:
1.机型:(1G RAM/ MT6580);
2.平台:Android 7.1;
3.内核:Kernel 3.18
测试步骤:
测试机在内核中集成uksm模块,对比机关闭uksm模块,打开ksm开关,使用原生ksm模块做内存合并。测试机与对比机测试方法相同。正常开机开