[个人猜测已补充]zram,不开物理swap,内存即将耗尽时最流畅的swappiness值居然是100?为什么?

其它类软件,非上述版软件
回复
科学之子
帖子: 2284
注册时间: 2013-05-26 6:58
系统: Debian 9

[个人猜测已补充]zram,不开物理swap,内存即将耗尽时最流畅的swappiness值居然是100?为什么?

#1

帖子 科学之子 » 2016-03-12 21:39

zram,不开物理swap,内存即将耗尽时最流畅的swappiness值居然是100?为什么?
zram,不开物理swap,内存即将耗尽时swappiness设置为100居然最流畅?为什么?
肚子饿了,我先吃点东西,个人猜测和更详细的描述稍后发布

Sat Mar 12 22:59:14 CST 2016补充:
测试环境:
物理内存总量:1989MB(被集成显卡吃掉32MB)
虚拟机内存总量:1491MB(XP虚拟机)

下面是我的分析与猜测(不一定正确,欢迎指正或提出不同想法):
首先压缩和解压算法的耗时是不会随内核swappiness参数变化的.

:Faint
发现这个事情虽然直觉上感觉自己理解了,但比较感性,甚至越想越混乱...
感觉都呼吸困难了...

下面我用最简单但可能也是最模糊的语言描述一下我的分析与猜测(如果您有更清晰易懂的描述欢迎补充指正):
1:
swappiness=100时,一开始最卡,但当热页面稳定之后swappiness会继续频繁少量的交换冷页面
此时尽管频繁交换,但由于数据量少,不会卡,并且由于交换的是冷页面,对用户体验的影响也是最小化的(你可以简单的理解为几乎没有影响)
2:
swappiness=1时尽量避免发生交换,但每次交换时的数据量比swappiness=100热页面稳定时大,并且频繁发生,这就严重影响用户体验了
3:
zram速度与内存十分接近(在我的E5500CPU上约每秒400MB,双核并行理想状态下是800MB/s)
冷页面很少被使用,即使冷页面被使用也会较快响应,而且冷页面被使用之后极可能成为热页面,热页面的响应速度和普通内存页无异
4:
用曲线化的CPU监视工具可以发现swappiness值较小时CPU的波动更明显
而swappiness较大时CPU波动更加平稳

形象而可能不严谨的描述:
swappiness=100时,用户不操作时也频繁但少量的交换一些冷页面(对用户影响最小的页面);
用户操作时发生交换的数量就会较少,甚至不会因为用户的操作发生波动
swappiness=1时,只有在响应用户操作(即必要)时进行交换,如果用户不操作,交换也不会发生;
但用户一动就会发生"必要"的交换,这样的结果就是用户感觉很卡,虽然确实最小限度的发生交换

进一步简化描述(可能不严谨):
swappiness=1时所有交换几乎都发生在用户需要进行操作时
swappiness=100时大部分交换发生在系统空闲(用户盯着电脑屏幕看,没有输入)时,所以用户进行操作时交换的数据量也就较少了.
上次由 科学之子 在 2016-03-13 1:46,总共编辑 1 次。
头像
kashu
帖子: 451
注册时间: 2014-02-07 17:31
系统: Xubuntu 14.04.5 64位

Re: zram,不开物理swap,内存即将耗尽时swappiness设置为100居然最流畅?为什么?

#2

帖子 kashu » 2016-03-12 22:08

在前面那帖子里(https://ubuntu.org.cn/viewtopic.php?p=3157413#p3157413),我刚好要说,如果设置了zram后,肯定得要把我现在的swappiness从0改成100的……
我觉得,这样才能更好地利用zram的「压缩」特性

zram,不开物理swap,内存即将耗尽时swappiness设置为100居然最流畅?为什么?

我还没用过zram。
那个问题是不是有个字打错了“zram,不开物理swap,内存即将耗尽时swappiness设置为100居然也很流畅?为什么?”


OS: Xubuntu 14.04.5 LTS 64-bit
CPU: Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz
RAM: 12GB DDR3 1333MHz
128GB SSD + 2TB HDD
神舟优雅A480B-I5B 购于 2012.08

YouTube频道:https://www.youtube.com/channel/UCGSPXZ ... DuDYX8L6Qg
科学之子
帖子: 2284
注册时间: 2013-05-26 6:58
系统: Debian 9

Re: zram,不开物理swap,内存即将耗尽时swappiness设置为100居然最流畅?为什么?

#3

帖子 科学之子 » 2016-03-12 22:59

kashu 写了:在前面那帖子里(https://ubuntu.org.cn/viewtopic.php?p=3157413#p3157413),我刚好要说,如果设置了zram后,肯定得要把我现在的swappiness从0改成100的……
我觉得,这样才能更好地利用zram的「压缩」特性

zram,不开物理swap,内存即将耗尽时swappiness设置为100居然最流畅?为什么?

我还没用过zram。
那个问题是不是有个字打错了“zram,不开物理swap,内存即将耗尽时swappiness设置为100居然也很流畅?为什么?”
没有打错字,最流畅的就是100,设置为1是最卡的(中间的数值我就没测试过了,应该不会出错吧?)
我在整理思路分析这个现象产生的原因
科学之子
帖子: 2284
注册时间: 2013-05-26 6:58
系统: Debian 9

Re: zram,不开物理swap,内存即将耗尽时swappiness设置为100居然最流畅?为什么?

#4

帖子 科学之子 » 2016-03-13 1:54

kashu 写了:在前面那帖子里(https://ubuntu.org.cn/viewtopic.php?p=3157413#p3157413),我刚好要说,如果设置了zram后,肯定得要把我现在的swappiness从0改成100的……
我觉得,这样才能更好地利用zram的「压缩」特性

zram,不开物理swap,内存即将耗尽时swappiness设置为100居然最流畅?为什么?

我还没用过zram。
那个问题是不是有个字打错了“zram,不开物理swap,内存即将耗尽时swappiness设置为100居然也很流畅?为什么?”
更新了个人猜测
:Faint
不知道有没有表述清楚
甚至也不确定自己是否真正理解正确了,虽然直觉上感觉自己理解了.
头像
kashu
帖子: 451
注册时间: 2014-02-07 17:31
系统: Xubuntu 14.04.5 64位

Re: [个人猜测已补充]zram,不开物理swap,内存即将耗尽时最流畅的swappiness值居然是100?为什么?

#5

帖子 kashu » 2016-04-24 6:41

我没用zram。我系统里现在设置的是zswap,使用25%的内存空间,不使用默认的lzo压缩,而是换成了速度最快的 lz4 compressor。

我参考的是下面这些资料:
https://events.linuxfoundation.org/site ... on2013.pdf
https://www.kernel.org/doc/Documentation/vm/zswap.txt
https://en.wikipedia.org/wiki/Zswap
https://wiki.archlinux.org/index.php/Zswap
https://bbs.archlinux.org/viewtopic.php?id=208656

上面那个PDF中介绍到的zswap的3个case截图:
图片

图片

图片


OS: Xubuntu 14.04.5 LTS 64-bit
CPU: Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz
RAM: 12GB DDR3 1333MHz
128GB SSD + 2TB HDD
神舟优雅A480B-I5B 购于 2012.08

YouTube频道:https://www.youtube.com/channel/UCGSPXZ ... DuDYX8L6Qg
科学之子
帖子: 2284
注册时间: 2013-05-26 6:58
系统: Debian 9

Re: [个人猜测已补充]zram,不开物理swap,内存即将耗尽时最流畅的swappiness值居然是100?为什么?

#6

帖子 科学之子 » 2016-04-24 14:45

kashu 写了:我没用zram。我系统里现在设置的是zswap,使用25%的内存空间,不使用默认的lzo压缩,而是换成了速度最快的 lz4 compressor。

我参考的是下面这些资料:
https://events.linuxfoundation.org/site ... on2013.pdf
https://www.kernel.org/doc/Documentation/vm/zswap.txt
https://en.wikipedia.org/wiki/Zswap
https://wiki.archlinux.org/index.php/Zswap
https://bbs.archlinux.org/viewtopic.php?id=208656

上面那个PDF中介绍到的zswap的3个case截图:
图片

图片

图片
如果zram本身够用,我个人感觉没必要使用swap,除有极端高负荷环境连续运行之类的要求.
理由是zswap是使用的树,而zram使用的是顺序表来维护数据结构
不论是寻址效率还是并行效率(我很难想想树可以像顺序表那样高效的并行分割查找,因为树查找总是从根节点开始,难道每次查找都要检查锁?效率何在?)感觉都比zswap强
以上仅仅是我根据相关资料的个人推测,不一定正确.
头像
kashu
帖子: 451
注册时间: 2014-02-07 17:31
系统: Xubuntu 14.04.5 64位

Re: [个人猜测已补充]zram,不开物理swap,内存即将耗尽时最流畅的swappiness值居然是100?为什么?

#7

帖子 kashu » 2016-04-24 19:47

科学之子 写了: 如果zram本身够用,我个人感觉没必要使用swap,除有极端高负荷环境连续运行之类的要求.
理由是zswap是使用的树,而zram使用的是顺序表来维护数据结构
不论是寻址效率还是并行效率(我很难想想树可以像顺序表那样高效的并行分割查找,因为树查找总是从根节点开始,难道每次查找都要检查锁?效率何在?)感觉都比zswap强
以上仅仅是我根据相关资料的个人推测,不一定正确.

太高深了,我没看懂

网上那些砖家们都说zswap是“Linux中透明的内存压缩技术”,又跟我说lz4 compressor速度最快,还说配置是最简单的,而且是动态分配的pool,我也不知道到底是好是坏,然后我就稀里糊涂地用上了…… :em03


OS: Xubuntu 14.04.5 LTS 64-bit
CPU: Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz
RAM: 12GB DDR3 1333MHz
128GB SSD + 2TB HDD
神舟优雅A480B-I5B 购于 2012.08

YouTube频道:https://www.youtube.com/channel/UCGSPXZ ... DuDYX8L6Qg
科学之子
帖子: 2284
注册时间: 2013-05-26 6:58
系统: Debian 9

Re: [个人猜测已补充]zram,不开物理swap,内存即将耗尽时最流畅的swappiness值居然是100?为什么?

#8

帖子 科学之子 » 2016-04-24 22:35

kashu 写了:
科学之子 写了: 如果zram本身够用,我个人感觉没必要使用swap,除有极端高负荷环境连续运行之类的要求.
理由是zswap是使用的树,而zram使用的是顺序表来维护数据结构
不论是寻址效率还是并行效率(我很难想想树可以像顺序表那样高效的并行分割查找,因为树查找总是从根节点开始,难道每次查找都要检查锁?效率何在?)感觉都比zswap强
以上仅仅是我根据相关资料的个人推测,不一定正确.

太高深了,我没看懂

网上那些砖家们都说zswap是“Linux中透明的内存压缩技术”,又跟我说lz4 compressor速度最快,还说配置是最简单的,而且是动态分配的pool,我也不知道到底是好是坏,然后我就稀里糊涂地用上了…… :em03
zswap虽然是动态分配,但是zswap的结构是"树",感觉如果空间占满的话空间效率不如zram的顺序表
因为树要用额外的指针数据来维护其结构
头像
kashu
帖子: 451
注册时间: 2014-02-07 17:31
系统: Xubuntu 14.04.5 64位

Re: [个人猜测已补充]zram,不开物理swap,内存即将耗尽时最流畅的swappiness值居然是100?为什么?

#9

帖子 kashu » 2016-04-24 23:37

科学之子 写了: zswap虽然是动态分配,但是zswap的结构是"树",感觉如果空间占满的话空间效率不如zram的顺序表
因为树要用额外的指针数据来维护其结构

我先用一段时间看看效果如何吧

我看别人的实测,效果好像还蛮好的:
http://lwn.net/Articles/537422/

我的笔记本物理内存12GB,现在之所以想要启用这个zswap功能,主要是想把zswap作为一个类似于“减冲区”或“安全气囊”一样的东西,当碰到内存拮据时,且内存数据无奈要被swap out到硬盘中的swap分区之前能够稍微好受一些,也能尽量减小数据被swap out到硬盘中及对硬盘的压力/伤害。虽然现在已启用了zswap,但如果我平时能比较好地把握内存的使用率,这个zswap可能也不会有太多的机会能被真正用上。


OS: Xubuntu 14.04.5 LTS 64-bit
CPU: Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz
RAM: 12GB DDR3 1333MHz
128GB SSD + 2TB HDD
神舟优雅A480B-I5B 购于 2012.08

YouTube频道:https://www.youtube.com/channel/UCGSPXZ ... DuDYX8L6Qg
科学之子
帖子: 2284
注册时间: 2013-05-26 6:58
系统: Debian 9

Re: [个人猜测已补充]zram,不开物理swap,内存即将耗尽时最流畅的swappiness值居然是100?为什么?

#10

帖子 科学之子 » 2016-04-25 0:09

kashu 写了:
科学之子 写了: zswap虽然是动态分配,但是zswap的结构是"树",感觉如果空间占满的话空间效率不如zram的顺序表
因为树要用额外的指针数据来维护其结构

我先用一段时间看看效果如何吧

我看别人的实测,效果好像还蛮好的:
http://lwn.net/Articles/537422/

我的笔记本物理内存12GB,现在之所以想要启用这个zswap功能,主要是想把zswap作为一个类似于“减冲区”或“安全气囊”一样的东西,当碰到内存拮据时,且内存数据无奈要被swap out到硬盘中的swap分区之前能够稍微好受一些,也能尽量减小数据被swap out到硬盘中及对硬盘的压力/伤害。虽然现在已启用了zswap,但如果我平时能比较好地把握内存的使用率,这个zswap可能也不会有太多的机会能被真正用上。
为什么您对我的感谢是英文提示?您用的是英文版的论坛界面?
头像
kashu
帖子: 451
注册时间: 2014-02-07 17:31
系统: Xubuntu 14.04.5 64位

Re: [个人猜测已补充]zram,不开物理swap,内存即将耗尽时最流畅的swappiness值居然是100?为什么?

#11

帖子 kashu » 2016-04-25 0:39

科学之子 写了: 为什么您对我的感谢是英文提示?您用的是英文版的论坛界面?

嗯,在用户设置里,论坛语言改成英文的了

这是我看到的两个关于zswap的比较好、比较权威的中文译文和中文视频:
zram和zswap有不一样的适用硬件平台/场景,我更倾向使用zswap。 :em01
http://www.csdn.net/article/a/2013-03-21/15814539
http://www.infoq.com/cn/presentations/m ... disk-speed


OS: Xubuntu 14.04.5 LTS 64-bit
CPU: Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz
RAM: 12GB DDR3 1333MHz
128GB SSD + 2TB HDD
神舟优雅A480B-I5B 购于 2012.08

YouTube频道:https://www.youtube.com/channel/UCGSPXZ ... DuDYX8L6Qg
科学之子
帖子: 2284
注册时间: 2013-05-26 6:58
系统: Debian 9

Re: [个人猜测已补充]zram,不开物理swap,内存即将耗尽时最流畅的swappiness值居然是100?为什么?

#12

帖子 科学之子 » 2016-04-25 1:00

kashu 写了:
科学之子 写了: 为什么您对我的感谢是英文提示?您用的是英文版的论坛界面?

嗯,论坛语言改成英文的了

这是我看到的两个关于zswap比较好、比较权威的中文译文和中文视频:
zram和zswap有不一样的适用硬件平台,我的情况应该是比较适合使用zswap。 :em01
http://www.csdn.net/article/a/2013-03-21/15814539
http://www.infoq.com/cn/presentations/m ... disk-speed
"讲稿"需要注册才能下载?
感觉除了硬件平台,算法本身也有适用性,如果zram够用的话我会优先选择只有zram而非zswap
否则就是zswap+普通swap,完全不用zram做交换设备(因为如果用zram搭配普通swap设备的话,会出现LRU的相反现象,最老页面在内存里,较新页面却被置换到慢速设备)
再补充一些我掌握的资料:
新版内核的zram也支持lz4,由于其实现方式的关系,内存中的数据在相同算法下zram的压缩效果要好于zswap
zswap的优点是可以根据LRU去swap out
https://www.kernel.org/doc/Documentation/vm/zswap.txt
https://www.kernel.org/doc/Documentatio ... malloc.txt
新版内核可以选择压缩池的类型,zsmalloc就是zram的实现方式,但貌似依然是动态分配(用zswap的zsmalloc感觉还不如直接用zram,因为它靠树来维护结构,感觉资源浪费会大一些,而且并行效率也不确定是否能像zram一样,并且zswap的zsmalloc和zram一样,无法根据LRU算法去swap out)
rosynirvana
帖子: 893
注册时间: 2011-02-14 17:46

Re: [个人猜测已补充]zram,不开物理swap,内存即将耗尽时最流畅的swappiness值居然是100?为什么?

#13

帖子 rosynirvana » 2016-04-30 1:51

很容易解释
只看两个极端情况
vm.swappiness = 1,被动swap,那么系统swap的时候已经没什么内存了,这时候同样没内存给zram用
vm.swappiness = 100,主动swap,有不活跃的页 -> 分配内存 -> 压缩到内存中去 -> 原来的页可用
回复