当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 56 篇帖子 ]  前往页数 1, 2, 3, 4  下一页
作者 内容
1 楼 
 文章标题 : 有关OOM killer和磁盘缓存的问题
帖子发表于 : 2016-03-21 14:24 

注册: 2015-06-27 23:08
帖子: 36
系统: Ubuntu Kylin 16.04
送出感谢: 2
接收感谢: 4
本人内存较小(1.5G),且不用swap分区。有时候不小心程序开多了会导致硬盘狂转,鼠标、键盘完全失去响应,连杀进程的机会都没有(不考虑使用SysRq,因为有时候正在编辑文档)。

比如,用kwrite打开一个非常大的文本文件,通过htop监控可以发现内存用量升至1.35G左右后硬盘灯就开始常亮(之前是闪亮)。理论上OOM killer应该能在此时结束内存用量较大的进程,但是此时似乎没有发挥作用(可用于操作的资源不足?)。 同时,发现内存用量升高伴随磁盘缓存区降低,降到一定程度就导致I/O压力急剧增加(似乎与换页操作有关?)。

查了一些内核vm的参数(oom_kill_allocating_task、dirty_background_ratio、min_free_kbytes 等)并尝试修改,但效果不明显。

个人觉得可能需要从两方面入手:提高 OOM killer 的执行效率、设置磁盘缓存的最小值。

请各路高人予以指点,谢谢!


附上软/硬件参数:
CPU:Core 双核 1.6 G
内存:1.5 G,DDR2
硬盘:5400rpm,SATA1.0
【短期内不会考虑升级硬件】
内核:4.4
桌面:KDE


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 有关OOM killer和磁盘缓存的问题
帖子发表于 : 2016-03-21 14:51 

注册: 2007-01-14 16:23
帖子: 4255
送出感谢: 0 次
接收感谢: 107
你为啥不设swap呢


_________________
#include <stdio.h>
void main()
{
double world;
unsigned letter;
short stay;
long memories;
printf("I miss you.\n");
}


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 有关OOM killer和磁盘缓存的问题
帖子发表于 : 2016-03-21 18:03 

注册: 2015-06-27 23:08
帖子: 36
系统: Ubuntu Kylin 16.04
送出感谢: 2
接收感谢: 4
onlylove 写道:
你为啥不设swap呢

之前是设了swap的(1GB),但是因为硬盘读写速度很慢,当内存用量超过1.5 G后如果执行了大量I/O操作(比如用kwrite开一个很大的文件)机器仍然会卡死,所以干脆就取消了,省得消耗硬盘寿命……


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 有关OOM killer和磁盘缓存的问题
帖子发表于 : 2016-03-21 19:07 

注册: 2009-08-04 16:33
帖子: 16893
送出感谢: 21
接收感谢: 1827
引用:
省得消耗硬盘寿命

其實 多慮了
硬盤生命力 比你想像中 耐久許多
因為 swap 而把硬盤操壞的案例 很少見
反而是 系統檔案 / 資料檔案 建議要備存


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 有关OOM killer和磁盘缓存的问题
帖子发表于 : 2016-03-21 19:55 

注册: 2015-06-27 23:08
帖子: 36
系统: Ubuntu Kylin 16.04
送出感谢: 2
接收感谢: 4
寿命确实不是大问题。关键是,有没有swap都会卡,而且加了swap之后OOM时响应速度更慢。

我所疑惑的是,为什么同样的硬件,同样是OOM,Windows能及时结束占用内存过多的进程(而且用不用pagefile.sys影响不大),而Linux非常困难。

据说Android除了OOM监控外,还有一套Lowmem监控,不知道能不能拿来用在其他发行版上。


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 有关OOM killer和磁盘缓存的问题
帖子发表于 : 2016-03-25 10:09 

注册: 2015-06-27 23:08
帖子: 36
系统: Ubuntu Kylin 16.04
送出感谢: 2
接收感谢: 4
沉了 :Sad
难道只能从代码层面进行修改吗?


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 有关OOM killer和磁盘缓存的问题
帖子发表于 : 2016-03-31 4:53 

注册: 2013-05-26 6:58
帖子: 2158
系统: Debian 9
送出感谢: 894
接收感谢: 30
1.1:这么小内存,推荐用ZRAM或ZSWAP
1.2:swappiness值设置为100(除了腾出空间给文件缓存,这个数值在我的环境下实测也是最流畅的)
1.3:如果使用了ZRAM就不要再分配任何速度低于ZRAM的设备作为交换空间,否则应该使用ZSWAP代替ZRAM
2.1:单纯从内存角度看,在没有交换空间的情况下确实不应该卡,最多就是结束掉某些进程(结束算法我不太了解)
2.2:个人猜测可能是内存即将耗尽,但没有触发OOM,导致文件缓存机制的可用内存极少,因此出现了硬盘狂转的现象
3:如果设置了交换空间,打开很多程序之后出现硬盘狂转但无OOM发生,这是正常现象,因为交换空间的作用就是保证系统不会因为内存不足崩溃.(不知是否正确?)
4.1:如果愿意的话,可以试试看换Debian+LXDE,它相比Ubuntu有更高的可定制性,Bug也少(有些Bug会导致卡慢),会更加流畅.
4.2:LXDE是一个非常轻量且易用的桌面环境,默认界面风格类似WinXP.


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


最后由 科学之子 编辑于 2016-03-31 17:18,总共编辑了 2 次

页首
 用户资料  
 
8 楼 
 文章标题 : Re: 有关OOM killer和磁盘缓存的问题
帖子发表于 : 2016-03-31 6:02 

注册: 2013-05-26 6:58
帖子: 2158
系统: Debian 9
送出感谢: 894
接收感谢: 30
wtz 写道:
寿命确实不是大问题。关键是,有没有swap都会卡,而且加了swap之后OOM时响应速度更慢。

我所疑惑的是,为什么同样的硬件,同样是OOM,Windows能及时结束占用内存过多的进程(而且用不用pagefile.sys影响不大),而Linux非常困难。

据说Android除了OOM监控外,还有一套Lowmem监控,不知道能不能拿来用在其他发行版上。


引用:
同样是OOM,Windows能及时结束占用内存过多的进程(而且用不用pagefile.sys影响不大)

Windows也有OOM了?
根据我的常识如果不开swap,不应该卡,最多只是OOM
卡的话,很可能就是文件缓存空间太低,硬盘速度又太慢


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


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 有关OOM killer和磁盘缓存的问题
帖子发表于 : 2016-04-02 1:50 

注册: 2013-05-26 6:58
帖子: 2158
系统: Debian 9
送出感谢: 894
接收感谢: 30
引用:
1.3:如果使用了ZRAM就不要再分配任何速度低于ZRAM的设备作为交换空间,否则应该使用ZSWAP代替ZRAM

这仅仅是理论推测,实际效果楼主可以亲自测试看看
推测理由就是ZRAM占满之后就只能使用低速交换设备
更晚换出的页面往往是更热的,这就造成了zram已满时无法存放新的更热页面,更热的页面只能换出到低速设备上.
而被占满的高速ZRAM则继续存放着老页面

swappiness=100这个最佳值也是我这里实测的结果.
swappiness的测试讨论贴:http://forum.ubuntu.org.cn/viewtopic.php?f=122&t=476483
在进行这个测试以前,我一直以为swappiness=1是最流畅的(新内核如果swappiness为0则可能发生OOM).
测试环境是单纯使用zram作为交换设备,如果是普通的交换分区或zswap,就不敢妄言了.


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



_________________
评价: 3.7% wtz
 
页首
 用户资料  
 
10 楼 
 文章标题 : Re: 有关OOM killer和磁盘缓存的问题
帖子发表于 : 2016-04-02 13:30 

注册: 2015-06-27 23:08
帖子: 36
系统: Ubuntu Kylin 16.04
送出感谢: 2
接收感谢: 4
科学之子 写道:
1.1:这么小内存,推荐用ZRAM或ZSWAP
1.2:swappiness值设置为100(除了腾出空间给文件缓存,这个数值在我的环境下实测也是最流畅的)
1.3:如果使用了ZRAM就不要再分配任何速度低于ZRAM的设备作为交换空间,否则应该使用ZSWAP代替ZRAM
2.1:单纯从内存角度看,在没有交换空间的情况下确实不应该卡,最多就是结束掉某些进程(结束算法我不太了解)
2.2:个人猜测可能是内存即将耗尽,但没有触发OOM,导致文件缓存机制的可用内存极少,因此出现了硬盘狂转的现象
3:如果设置了交换空间,打开很多程序之后出现硬盘狂转但无OOM发生,这是正常现象,因为交换空间的作用就是保证系统不会因为内存不足崩溃.(不知是否正确?)
4.1:如果愿意的话,可以试试看换Debian+LXDE,它相比Ubuntu有更高的可定制性,Bug也少(有些Bug会导致卡慢),会更加流畅.
4.2:LXDE是一个非常轻量且易用的桌面环境,默认界面风格类似WinXP.


谢谢您的用心回复。

我设了一个512M的zram作为交换分区,然后又把swappiness改为100,系统终于可以自行kill内存超额的进程了(虽然要等待一分钟左右)。

另外,我之前也尝试过LXDE,但总觉得没有KDE高大上 :em06

其实桌面占用资源多一些也没什么,只要系统在内存超额的时候能更果断地做出决策就好~个人感觉内核最好能设置文件缓存区的最低大小,这样对老机器可能就更友好了。


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 有关OOM killer和磁盘缓存的问题
帖子发表于 : 2016-04-02 21:38 

注册: 2013-05-26 6:58
帖子: 2158
系统: Debian 9
送出感谢: 894
接收感谢: 30
wtz 写道:
科学之子 写道:
1.1:这么小内存,推荐用ZRAM或ZSWAP
1.2:swappiness值设置为100(除了腾出空间给文件缓存,这个数值在我的环境下实测也是最流畅的)
1.3:如果使用了ZRAM就不要再分配任何速度低于ZRAM的设备作为交换空间,否则应该使用ZSWAP代替ZRAM
2.1:单纯从内存角度看,在没有交换空间的情况下确实不应该卡,最多就是结束掉某些进程(结束算法我不太了解)
2.2:个人猜测可能是内存即将耗尽,但没有触发OOM,导致文件缓存机制的可用内存极少,因此出现了硬盘狂转的现象
3:如果设置了交换空间,打开很多程序之后出现硬盘狂转但无OOM发生,这是正常现象,因为交换空间的作用就是保证系统不会因为内存不足崩溃.(不知是否正确?)
4.1:如果愿意的话,可以试试看换Debian+LXDE,它相比Ubuntu有更高的可定制性,Bug也少(有些Bug会导致卡慢),会更加流畅.
4.2:LXDE是一个非常轻量且易用的桌面环境,默认界面风格类似WinXP.


谢谢您的用心回复。

我设了一个512M的zram作为交换分区,然后又把swappiness改为100,系统终于可以自行kill内存超额的进程了(虽然要等待一分钟左右)。

另外,我之前也尝试过LXDE,但总觉得没有KDE高大上 :em06

其实桌面占用资源多一些也没什么,只要系统在内存超额的时候能更果断地做出决策就好~个人感觉内核最好能设置文件缓存区的最低大小,这样对老机器可能就更友好了。

说实话,我非常不理解为何在无swap的情况下OOM速度会慢,是不是根本就没有发生OOM?
系统卡只是因为桌面环境的相关组件IO负荷过高,磁盘缓存又太小

引用:
个人感觉内核最好能设置文件缓存区的最低大小,这样对老机器可能就更友好了

内存本来是用来运行程序指令的,而非作为磁盘缓存,如果本末倒置的话速度会更慢.
为什么设置为512M?怕OOM吗?


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


页首
 用户资料  
 
12 楼 
 文章标题 : Re: 有关OOM killer和磁盘缓存的问题
帖子发表于 : 2016-04-02 23:46 

注册: 2013-05-26 6:58
帖子: 2158
系统: Debian 9
送出感谢: 894
接收感谢: 30
还有,推荐个shell脚本给楼主参考:http://forum.ubuntu.org.cn/viewtopic.php?f=21&t=476869
最好设置多个zram作为交换设备,数量与CPU(核心)数量相同.
这样有利于发挥多核的并行优势.


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


页首
 用户资料  
 
13 楼 
 文章标题 : Re: 有关OOM killer和磁盘缓存的问题
帖子发表于 : 2016-04-03 14:56 

注册: 2013-05-26 6:58
帖子: 2158
系统: Debian 9
送出感谢: 894
接收感谢: 30
sudo -i
echo 1>/proc/sys/vm/laptop_mode
以上简单方法试试看,可以这个本来是给笔记本用的,原理是减少硬盘访问来提高电池的续航能力.
不知道这个是否会减少硬盘IO从而提高响应速度.


更复杂的:http://forum.ubuntu.org.cn/viewtopic.php?p=3155601#p3155601
但很多都是理论推测,能否实际运用我也不清楚


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


页首
 用户资料  
 
14 楼 
 文章标题 : Re: 有关OOM killer和磁盘缓存的问题
帖子发表于 : 2016-04-03 15:09 

注册: 2011-02-14 17:46
帖子: 907
送出感谢: 3
接收感谢: 124
1.5GB的RAM不适合当前的linux desktop,很可能不是改参数能解决的



_________________
评价: 3.7% wtz
 
页首
 用户资料  
 
15 楼 
 文章标题 : Re: 有关OOM killer和磁盘缓存的问题
帖子发表于 : 2016-04-03 15:16 

注册: 2011-02-14 17:46
帖子: 907
送出感谢: 3
接收感谢: 124
科学之子 写道:
Windows也有OOM了?
根据我的常识如果不开swap,不应该卡,最多只是OOM
卡的话,很可能就是文件缓存空间太低,硬盘速度又太慢


这真的只是你的猜测了
没有swap分区或文件很容易被kswapd0卡死的,google有个搜索提示是"kswapd0 cpu 100"



_________________
评价: 3.7% 科学之子
 
页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 56 篇帖子 ]  前往页数 1, 2, 3, 4  下一页

当前时区为 UTC + 8 小时


在线用户

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


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

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

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