修改代码让Linux允许swappiness=200,更多交换页面到zram上

内核编译和嵌入式产品的设计与开发
回复
科学之子
帖子: 2239
注册时间: 2013-05-26 6:58
系统: Debian 9
送出感谢: 834 次
接收感谢: 31 次

修改代码让Linux允许swappiness=200,更多交换页面到zram上

#1

帖子 科学之子 » 2017-11-13 2:32

修改代码让Linux允许swappiness=200,更多交换页面到zram上
思路来源:https://lwn.net/Articles/690079/
具体步骤:
./linux-4.13.4/kernel/sysctl.c里查找swappiness
1.把对应结构体里的extra2的内容从one_hundred改成one_thousand
2.配置文件要从相应版本的官方Debian包来提取.
3.在内核源码根目录运行`make deb-pkg`然后就可以在内核源码根目录的上层目录找到生成的deb包,直接dpkg -i安装就行
个人试了试,貌似确实`free -h`显示的cache部分比swappiness=100变多约一倍,总体来说没什么感觉,貌似从卡在硬盘变成了卡在CPU上.
可能是我E5500 CPU太渣的原因.
需要注意swappiness最大只能到200,超过200则没有意义并可能产生不可预知的行为.
http://elixir.free-electrons.com/linux/ ... an.c#L2266
Thu Nov 23 13:34:45 CST 2017补充:
貌似swappiness=199不会出现的大量swap-out的情况
swappiness=199和swappiness=100的区别目前暂时未知.
科学之子
帖子: 2239
注册时间: 2013-05-26 6:58
系统: Debian 9
送出感谢: 834 次
接收感谢: 31 次

Re: 修改代码让Linux允许swappiness=200,更多交换页面到zram上

#2

帖子 科学之子 » 2018-02-12 0:53

原来用标准内核时因为zram作为swap时的策略不怎么激进(swappiness=100),lzo 和 deflate的区别并不明显,所以一直采用压缩效果较好但速度较慢的deflate来避免丢弃页缓存,使用1楼方法后算法也没改.
最近偶然尝试发现如果swappiness=199的情况下,使用lzo会比deflate快出不少,真正体现出了lzo的速度.
现在个人感觉swappiness=199的情况下已经很少发生页缓存丢弃,即使采用压缩效果较差的lzo算法也不会过多丢弃页缓存.
以上仅个人理解,如有错误欢迎指正.
回复

回到 “内核及嵌入式开发”