当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 6 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 如何监视swap情况,当特定swap设备发生IO时调用指定程序?
帖子发表于 : 2016-05-01 14:34 

注册: 2013-05-26 6:58
帖子: 2158
系统: Debian 9
送出感谢: 894
接收感谢: 30
如何监视swap情况,当特定swap设备发生IO时调用指定程序?
有没有类似中断或HOOK之类的方法?
主要是希望当硬盘的swap设备发生IO时调用程序去swapoff 高优先级的zram,借此实现粗糙的LRU
Shell脚本循环好像也能实现,但如果能有类似中断的方法感觉应该会更好


_________________
Linux桌面优化综合贴[2017.09.18](欢迎各位补充或指正误区)
[2016.03.10]会C语言但看不懂英文文档的点这里,一个用C语言编写的简陋学习工具
单硬盘通过iso文件实机安装Debian的方法
重启或操作fcitx时失去响应的一个解决方法,不妨试试看


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 如何监视swap情况,当特定swap设备发生IO时调用指定程序?
帖子发表于 : 2016-05-01 19:14 

注册: 2011-02-14 17:46
帖子: 907
送出感谢: 3
接收感谢: 124
先写入磁盘,用zram的意义何在?
swapoff的代价(特别是在有内存压力的时候)有多高?
如果只是想先写入磁盘,为何不调priority?


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 如何监视swap情况,当特定swap设备发生IO时调用指定程序?
帖子发表于 : 2016-05-01 21:09 

注册: 2013-05-26 6:58
帖子: 2158
系统: Debian 9
送出感谢: 894
接收感谢: 30
rosynirvana 写道:
先写入磁盘,用zram的意义何在?
swapoff的代价(特别是在有内存压力的时候)有多高?
如果只是想先写入磁盘,为何不调priority?

我的意思是类似HOOK一样,HOOK住硬盘的swap设备,如果它被访问了就说明内存短缺了zram满了
然后swapoff zram.
关于swapoff的压力,我还没的测试过,不过可以调节每个zram设备的大小,想象中应该不是很有压力,待测哈
而且不一定非要压力很大才swapoff,可以提前进行这一操作

本帖的目的是想HOOK硬盘的swap设备,这样感觉比循环应该更有效率.
本帖想通过"事件"而非"循环"来实现监视目的.


_________________
Linux桌面优化综合贴[2017.09.18](欢迎各位补充或指正误区)
[2016.03.10]会C语言但看不懂英文文档的点这里,一个用C语言编写的简陋学习工具
单硬盘通过iso文件实机安装Debian的方法
重启或操作fcitx时失去响应的一个解决方法,不妨试试看


最后由 科学之子 编辑于 2016-05-01 22:36,总共编辑了 1 次

页首
 用户资料  
 
4 楼 
 文章标题 : Re: 如何监视swap情况,当特定swap设备发生IO时调用指定程序?
帖子发表于 : 2016-05-01 22:08 

注册: 2011-02-14 17:46
帖子: 907
送出感谢: 3
接收感谢: 124
我知道你所谓hook是什么,恰当的表达是“向内核注册一个事件,满足后让内核唤醒进程”,最简单的方法是inotify监视一个swap文件;
使用swap设备并不一定说明内存短缺了,和vm.swappiness的设置有关;
把一个zram设备swapoff了,zram中存储的东西必须找个地方存起来,真的觉得这个代价不高?比LRU逆转高多了。



_________________
评价: 3.7% 科学之子
 
页首
 用户资料  
 
5 楼 
 文章标题 : Re: 如何监视swap情况,当特定swap设备发生IO时调用指定程序?
帖子发表于 : 2016-05-01 23:50 

注册: 2013-05-26 6:58
帖子: 2158
系统: Debian 9
送出感谢: 894
接收感谢: 30
rosynirvana 写道:
我知道你所谓hook是什么,恰当的表达是“向内核注册一个事件,满足后让内核唤醒进程”,最简单的方法是inotify监视一个swap文件;
使用swap设备并不一定说明内存短缺了,和vm.swappiness的设置有关;
把一个zram设备swapoff了,zram中存储的东西必须找个地方存起来,真的觉得这个代价不高?比LRU逆转高多了。


关于事件,是否有办法监视某个swap设备的可用空间低于多少呢?
打算优先级最低的zram设备空间低于某个数值后就开始swapoff
要是直接监视硬盘上的swap文件的话,硬盘就已经被访问了.

"使用swap设备并不一定说明内存短缺了,和vm.swappiness的设置有关;"
我当时表述有误,意思是硬盘中的swap被使用表明zram满了

"把一个zram设备swapoff了,zram中存储的东西必须找个地方存起来,真的觉得这个代价不高?比LRU逆转高多了。"
swapoff具体如何搬运的我不清楚,是把内存仅用作搬运数据到其它swap文件的buffer?还是能装下的部分不管冷热直接就swap in了?
所以我打算写个小程序把我的想法实现,实测看看效果如何.


_________________
Linux桌面优化综合贴[2017.09.18](欢迎各位补充或指正误区)
[2016.03.10]会C语言但看不懂英文文档的点这里,一个用C语言编写的简陋学习工具
单硬盘通过iso文件实机安装Debian的方法
重启或操作fcitx时失去响应的一个解决方法,不妨试试看


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 如何监视swap情况,当特定swap设备发生IO时调用指定程序?
帖子发表于 : 2016-05-02 1:24 

注册: 2011-02-14 17:46
帖子: 907
送出感谢: 3
接收感谢: 124
监视的本质是挂在某些vfs operations上面的,也就是说,可以让一个文件read的时候发送提示,write的时候发送提示,stat的时候发送提示……
所以说可以在write inotify之后stat一下

swapoff是直接读进内存里,内存不够会re-insert swap设备。至于其他swap文件的buffer,swap文件一定有buffer吗……
如果真的感觉不出把一个swap device的东西倒回RAM中,远远比LRU的影响大,建议尝试一点中等规模的项目培养一下感觉



_________________
评价: 3.7% 科学之子
 
页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 6 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译