KernelDedup

Feed Rss

0.1.1.x

 对于大部分用户来说,UKSM的使用意味着安装内核,然后重启。其缺省设置基本上能符合大部分台式机用户的需求。你可以下载一个简单的测试程序来测试效果。

如果你发现大部分时间uksmd在你的机器上占用了太多的CPU,你可以尝试降低scan_batch_pages参数的值,如下面所述:

 

在安装了UKSM内核的系统中,uksmd是主要的工作进程。其基本的工作模式是:扫描合并一定数量的内存页面,休眠一段时间,然后继续。

UKSM的相关控制参数和统计信息在以下目录中:

该目录中主要的控制接口含义如下:

用户可以修改的接口:

  • run  控制工作进程uksmd是否开启。缺省是开启的,如果你想关闭可以:echo 0 > run
  • scan_batch_pages  每次休眠之前,一次性扫描的页面数量。此参数直接关系uksmd的CPU占用,但是不和之成线性正比关系,尝试用2倍或者减半的方式调整。
  • sleep_millisecs  每次休眠多长时间再开始工作,以毫秒(千分之一秒)计算。
  • thrash_threshold  你能允许的抖动页面的百分比,这个值越大,那么uksmd可能浪费的CPU越多,但是 不一定  能带来更多的内存节省。
  • min_scan_ratio  在一个内存区域当前没有发现很多冗余页面的时候,对这个区域的最低的采样比率。这个接口的单位是 1/125。
  • usr_spt_enabled 目前尚未有实际意义,将来打算作为在线BUG追踪和自动参数优化而设计。此接口启用当前包含极低流量的不包含任何用户隐私的无含义消息回馈。为早期接口测试,目前缺省是开启状态。
  • usr_spt_flags  预留接口,目前尚未有实际意义。
  • usr_spt_msg  预留接口,目前尚未有实际意义。

用户只读的UKSM相关的信息:

  • full_scans  采样覆盖全部内存区域的次数。
  • hash_strength  自适应增量采样算法的当前的强度,值越低,那么当前合并的速度将会越快。
  • pages_scanned 当前已经扫描了多少页面。
  • pages_shared 有多少个不同的物理页面处在被共享的状态
  • pages_sharing 有多少个虚拟页面指向以上的共享页面,差不多可以等效看作你节省的内存
  • sleep_times  uksmd已经休眠了多少次

0.1.1版本以后我们特殊考虑全0的页面,用户可以通过

来查看,当前已经有多少全0的页面被合并(节省出来)。