国人的开源内核项目PKSM发布0.1版本!

介绍

开源内核项目PKSM(Anon-Page Kernel Samepage Merging)针对KSM/UKSM的合并效率不高等不足,采用全新的处理机制和实现方式,非常高效的减少linux系统冗余内存,特别适合服务器和桌面系统应用。

项目主页:http://code.google.com/p/pksm/

作者微博:http://weibo.com/figo0406 

1. 功能

1.对用户透明

自动添加全系统的用户进程的匿名页面到PKSM中,因此不在需要用户修改用户程序(使用madvise系统调用来添加用户进程到KSM系统中)。

2. 高效的匿名内存页面检测

自动检测匿名页面的创建和释放,使用新的算法和机制来直接处理linux内核创建/释放匿名页面。PKSM不再需要浪费大量的CPU来遍历所有的VMA区域来查找可用的匿名页面。KSM/UKSM会浪费很多CPU来遍历系统所有的VMA区域去查找可用的匿名页面,而PKSM则不需要考虑这些。

3. 考虑内容全零页面

现在pksmd将全零内存块视作特殊的内存页面,并将他们合并到一个特殊的不能交换的pksm zero page(从UKSM借用的)。

4. 周期性检查内存块的内容

Pksm将不稳定的匿名页面放入一个FIFO队列中,周期性地检查其这些匿名页面的校验值, 如果发现内容发生变化, 那麽这些页面会重新进行比较和合并。系统默认每20分钟检查完所有的不稳定的匿名页面。

2. 安装和使用

2.1 安装

Archlinux

如果你使用Archlinux发行版,您可以通过ARU来安装. https://aur.archlinux.org/packages/linux-pksm/

自己编译内核

如果你使用其他linux发行版本,那麽您可能需要自己编译内核了。请下载PKSM的patch,并且在内核中 打开pksm的相关选项。

[figo@figo linux-3.6]$ make menuconfig

Processor type and features--->
     [*] Enable KSM for page merging
       Choose PKSM/KSM strategy (AnonPage-KSM for page merging)  ---> 
          (X) AnonPage-KSM for page merging

2.1 使用

PKSM在内核启动的时候默认打开,您不需要做额外的操作。您还可以通过/proc/meminfo信息查看到PKSM为您节省了多少物理内存。

[figo@figo ~]$ cat /proc/meminfo
    KsmSharingPages?: 45924 kB
另外,PKSM的相关控制参数和统计信息在以下目录中: /sys/kernel/mm/pksm
  • run 控制内核线程pksmd是否开启。缺省是开启的,如果你想关闭可以:echo 0 > run
  • pages_shared 有多少个不同的物理页面处在被共享的状态
  • pages_sharing 有多少个虚拟页面指向以上的共享页面,差不多可以等效看作你节省的内存。
  • page_zero_sharing 有多少个零页面被共享

最后,让我们向在内核方面孜孜不倦的进行研究和推进的人们致敬,也希望更多的人参与到其中。

国人的开源内核项目PKSM发布0.1版本!

原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/44795.html

(0)
上一篇 2021年8月5日
下一篇 2021年8月5日

相关推荐

发表回复

登录后才能评论