有关OOM killer和磁盘缓存的问题
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
-
- 帖子: 39
- 注册时间: 2015-06-27 23:08
- 系统: Ubuntu Kylin 16.04
有关OOM killer和磁盘缓存的问题
本人内存较小(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
比如,用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
-
- 论坛版主
- 帖子: 5230
- 注册时间: 2007-01-14 16:23
Re: 有关OOM killer和磁盘缓存的问题
你为啥不设swap呢
#include <stdio.h>
void main()
{
double world;
unsigned letter;
short stay;
long memories;
printf("I miss you.\n");
}
void main()
{
double world;
unsigned letter;
short stay;
long memories;
printf("I miss you.\n");
}
-
- 帖子: 39
- 注册时间: 2015-06-27 23:08
- 系统: Ubuntu Kylin 16.04
Re: 有关OOM killer和磁盘缓存的问题
之前是设了swap的(1GB),但是因为硬盘读写速度很慢,当内存用量超过1.5 G后如果执行了大量I/O操作(比如用kwrite开一个很大的文件)机器仍然会卡死,所以干脆就取消了,省得消耗硬盘寿命……onlylove 写了:你为啥不设swap呢
-
- 论坛版主
- 帖子: 18279
- 注册时间: 2009-08-04 16:33
Re: 有关OOM killer和磁盘缓存的问题
其實 多慮了省得消耗硬盘寿命
硬盤生命力 比你想像中 耐久許多
因為 swap 而把硬盤操壞的案例 很少見
反而是 系統檔案 / 資料檔案 建議要備存
-
- 帖子: 39
- 注册时间: 2015-06-27 23:08
- 系统: Ubuntu Kylin 16.04
Re: 有关OOM killer和磁盘缓存的问题
寿命确实不是大问题。关键是,有没有swap都会卡,而且加了swap之后OOM时响应速度更慢。
我所疑惑的是,为什么同样的硬件,同样是OOM,Windows能及时结束占用内存过多的进程(而且用不用pagefile.sys影响不大),而Linux非常困难。
据说Android除了OOM监控外,还有一套Lowmem监控,不知道能不能拿来用在其他发行版上。
我所疑惑的是,为什么同样的硬件,同样是OOM,Windows能及时结束占用内存过多的进程(而且用不用pagefile.sys影响不大),而Linux非常困难。
据说Android除了OOM监控外,还有一套Lowmem监控,不知道能不能拿来用在其他发行版上。
-
- 帖子: 39
- 注册时间: 2015-06-27 23:08
- 系统: Ubuntu Kylin 16.04
Re: 有关OOM killer和磁盘缓存的问题
沉了
难道只能从代码层面进行修改吗?
难道只能从代码层面进行修改吗?
-
- 帖子: 2284
- 注册时间: 2013-05-26 6:58
- 系统: Debian 9
Re: 有关OOM killer和磁盘缓存的问题
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.
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.
上次由 科学之子 在 2016-03-31 17:18,总共编辑 2 次。
-
- 帖子: 2284
- 注册时间: 2013-05-26 6:58
- 系统: Debian 9
Re: 有关OOM killer和磁盘缓存的问题
wtz 写了:寿命确实不是大问题。关键是,有没有swap都会卡,而且加了swap之后OOM时响应速度更慢。
我所疑惑的是,为什么同样的硬件,同样是OOM,Windows能及时结束占用内存过多的进程(而且用不用pagefile.sys影响不大),而Linux非常困难。
据说Android除了OOM监控外,还有一套Lowmem监控,不知道能不能拿来用在其他发行版上。
Windows也有OOM了?同样是OOM,Windows能及时结束占用内存过多的进程(而且用不用pagefile.sys影响不大)
根据我的常识如果不开swap,不应该卡,最多只是OOM
卡的话,很可能就是文件缓存空间太低,硬盘速度又太慢
-
- 帖子: 2284
- 注册时间: 2013-05-26 6:58
- 系统: Debian 9
Re: 有关OOM killer和磁盘缓存的问题
这仅仅是理论推测,实际效果楼主可以亲自测试看看1.3:如果使用了ZRAM就不要再分配任何速度低于ZRAM的设备作为交换空间,否则应该使用ZSWAP代替ZRAM
推测理由就是ZRAM占满之后就只能使用低速交换设备
更晚换出的页面往往是更热的,这就造成了zram已满时无法存放新的更热页面,更热的页面只能换出到低速设备上.
而被占满的高速ZRAM则继续存放着老页面
swappiness=100这个最佳值也是我这里实测的结果.
swappiness的测试讨论贴:viewtopic.php?f=122&t=476483
在进行这个测试以前,我一直以为swappiness=1是最流畅的(新内核如果swappiness为0则可能发生OOM).
测试环境是单纯使用zram作为交换设备,如果是普通的交换分区或zswap,就不敢妄言了.
-
- 帖子: 39
- 注册时间: 2015-06-27 23:08
- 系统: Ubuntu Kylin 16.04
Re: 有关OOM killer和磁盘缓存的问题
谢谢您的用心回复。科学之子 写了: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高大上
其实桌面占用资源多一些也没什么,只要系统在内存超额的时候能更果断地做出决策就好~个人感觉内核最好能设置文件缓存区的最低大小,这样对老机器可能就更友好了。
-
- 帖子: 2284
- 注册时间: 2013-05-26 6:58
- 系统: Debian 9
Re: 有关OOM killer和磁盘缓存的问题
说实话,我非常不理解为何在无swap的情况下OOM速度会慢,是不是根本就没有发生OOM?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高大上
其实桌面占用资源多一些也没什么,只要系统在内存超额的时候能更果断地做出决策就好~个人感觉内核最好能设置文件缓存区的最低大小,这样对老机器可能就更友好了。
系统卡只是因为桌面环境的相关组件IO负荷过高,磁盘缓存又太小
内存本来是用来运行程序指令的,而非作为磁盘缓存,如果本末倒置的话速度会更慢.个人感觉内核最好能设置文件缓存区的最低大小,这样对老机器可能就更友好了
为什么设置为512M?怕OOM吗?
-
- 帖子: 2284
- 注册时间: 2013-05-26 6:58
- 系统: Debian 9
-
- 帖子: 2284
- 注册时间: 2013-05-26 6:58
- 系统: Debian 9
Re: 有关OOM killer和磁盘缓存的问题
sudo -i
echo 1>/proc/sys/vm/laptop_mode
以上简单方法试试看,可以这个本来是给笔记本用的,原理是减少硬盘访问来提高电池的续航能力.
不知道这个是否会减少硬盘IO从而提高响应速度.
更复杂的:viewtopic.php?p=3155601#p3155601
但很多都是理论推测,能否实际运用我也不清楚
echo 1>/proc/sys/vm/laptop_mode
以上简单方法试试看,可以这个本来是给笔记本用的,原理是减少硬盘访问来提高电池的续航能力.
不知道这个是否会减少硬盘IO从而提高响应速度.
更复杂的:viewtopic.php?p=3155601#p3155601
但很多都是理论推测,能否实际运用我也不清楚
-
- 帖子: 893
- 注册时间: 2011-02-14 17:46
Re: 有关OOM killer和磁盘缓存的问题
1.5GB的RAM不适合当前的linux desktop,很可能不是改参数能解决的
-
- 帖子: 893
- 注册时间: 2011-02-14 17:46
Re: 有关OOM killer和磁盘缓存的问题
这真的只是你的猜测了科学之子 写了: Windows也有OOM了?
根据我的常识如果不开swap,不应该卡,最多只是OOM
卡的话,很可能就是文件缓存空间太低,硬盘速度又太慢
没有swap分区或文件很容易被kswapd0卡死的,google有个搜索提示是"kswapd0 cpu 100"