当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 2 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 把交换分区设置到zram上,空间被占用后居然还能动态回收?原理是?
帖子发表于 : 2016-02-23 19:23 

注册: 2013-05-26 6:58
帖子: 2157
系统: Debian 9
送出感谢: 893
接收感谢: 30
把交换分区设置到zram上,空间被占用后居然还能动态回收?原理是?
引用:
测试方法是这样的:
我用watch跟踪free 和zram的mem_used_total的变化
然后用C语言写了一个不停申请1024*1024字节的内存块,直到被内核杀死

发现不论是手动停止还是被内核杀死,zram的内存竟然可以回收?
free显示内存占用猛跌
zram的mem_used_total文件的数值也猛跌
但根据这个链接的说法貌似应该无法回收?
https://segmentfault.com/a/1190000000380500

zswap.txt也说zsmalloc无法回收
https://www.kernel.org/doc/Documentation/vm/zswap.txt

如果我没弄错的话,zram也是用zsmalloc来管理内存吧?
就算zsmalloc这个API支持类似标准库的free
zram作为一个定长块设备居然还能在空间被使用之后回收?

Wed Feb 24 02:21:31 CST 2016补充:
硬着头皮看了看内核代码:
zram_drv.c:
代码:
.swap_slot_free_notify = zram_slot_free_notify

swapfile.c:
代码:
disk->fops->swap_slot_free_notify(p->bdev,
                          offset);

貌似足以说明问题了,zram上设置swap不论是测试还是看代码,似乎都可以在swap空闲时释放zram占用的内存(水平有限,释放效率无法判断,仍然无法理解"回收更困难")


最后由 科学之子 编辑于 2016-02-24 4:58,总共编辑了 3 次

页首
 用户资料  
 
2 楼 
 文章标题 : Re: 把交换分区设置到zram上,空间被占用后居然还能动态回收?原理是?
帖子发表于 : 2016-02-23 21:47 
头像

注册: 2008-09-18 13:11
帖子: 2781
送出感谢: 1
接收感谢: 453
你中文理解需要加强
引用:
而 zram 比 zswap 压缩率更高,代价是 page reclaim 更困难
回收更困难 = 无法回收?

英文阅读理解更待提高。你的“zsmalloc无法回收”应该是来自于这句
引用:
zsmalloc does not implement compressed page eviction, so once zswap fills it
cannot evict the oldest page, it can only reject new pages.
你把eviction/evict理解成free那种了。可以往前翻几段,看看它具体是怎么个evict法

在上面的先入为主下,一件很简单的事你都忘了:zram设计出来的初衷不就为了1)省内存2)减少swap次数也就是磁盘IO从而提升性能。如果按你想的那样一旦被某个进程占用了,其他进程都别再想用了,那岂不是对内存的巨大浪费?剩下更少的普通内存岂不是会导致更频繁的swap?这和设计初衷完全相悖了

引用:
zram作为一个定长块设备居然还能在空间被使用之后回收?

块设备和能不能回收空间之间没关系。磁盘一样是块设备,如果哪天填满了,又没有其他存储设备可以移动文件(eviction),需要腾空间你怎么办?



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

当前时区为 UTC + 8 小时


在线用户

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


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

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

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