发新帖

发现一个能有效避免内存不足导致的卡死的软件:earlyoom

duanyao / 2017-6-28 21:58
浏览: 1419 / 回复: 58
查看: 1419|回复: 61

发现一个能有效避免内存不足导致的卡死的软件:earlyoom

[复制链接]
收藏
跳转到指定楼层
本帖最后由 duanyao 于 2017-7-12 18:20 编辑

网站: https://github.com/rfjakob/earlyoom

文档的解说已经很详细了,不过因为是英文,我简单介绍一下:
Linux 内核中的 oom-killer 严重不靠谱,往往触发得太迟。在它工作之前,系统往往已经没救了,或者用户已经被卡得失去耐心,按了重启键。
earlyoom 是个用户态服务,顾名思义它会较早的触发(默认条件是可用物理内存和交换分区都不足10%),杀掉内存消耗最多的进程,避免系统卡死。

我试了一下还是挺有效的,用 android-studio 编译一个大工程时,它先后杀掉了 chrome、 firefox、vs code,编译得以顺利完成。

建议 deepin 预装这个软件,我相信它能避免相当数量的卡死问题。

补充:想了一下,还是把我这些年调查内存不足导致卡死的问题是做的笔记发上来。很凌乱,没什么条理,不过里面的很多链接应该是有参考价值的。
发上来的主要目的是说明:我并非是偶尔看到一个软件就兴冲冲的推荐了,这后面是有大量铺垫的。 linux_memory_swap_thrashing.zip (11.27 KB, 下载次数: 56)

评分

参与人数 2贡献 +2 收起 理由
chaojun56 + 1 加分鼓励 : )
bnbvb + 1 感谢解答 : )

查看全部评分

199

主题

1万

帖子

3万

积分

d-rw-rw-r--

Rank: 8Rank: 8

积分
34342
jingle 官方管理员 发表于 2017-6-29 09:14:44 | 显示全部楼层
谢谢推荐,先研究下。
欢迎来到深度科技社区!

发帖求助前,请先阅读:【必读】FAQ & 如何快速获取帮助?

48

主题

1459

帖子

5039

积分

-rw-rw-rw-

Rank: 6Rank: 6

积分
5039
QQ
kirigaya 发表于 2017-6-29 09:27:08 | 显示全部楼层
我觉得还是加钱升内存才是解决之道。自从加了2G内存,6G情况下就没卡过。

40

主题

201

帖子

655

积分

-r--r--r--

Rank: 3Rank: 3

积分
655
jeryjian861011 发表于 2017-6-29 09:27:54 | 显示全部楼层
希望能内置在系统里,这样我们这些小白就不会因为不懂怎样配置软件而头痛

199

主题

1万

帖子

3万

积分

d-rw-rw-r--

Rank: 8Rank: 8

积分
34342
jingle 官方管理员 发表于 2017-6-29 09:37:03 | 显示全部楼层
刚才讨论了 这个方案可能谁kill其他的应用 导致数据丢失,已经有大神在解决了
欢迎来到深度科技社区!

发帖求助前,请先阅读:【必读】FAQ & 如何快速获取帮助?

21

主题

433

帖子

1652

积分

-rw-rw-r--

Rank: 5Rank: 5

积分
1652
udfk007 志愿者 发表于 2017-6-29 09:46:49 | 显示全部楼层
kirigaya 发表于 2017-6-29 09:27
我觉得还是加钱升内存才是解决之道。自从加了2G内存,6G情况下就没卡过。

8G内存的我,该卡时也卡。

9

主题

549

帖子

1425

积分

-rw-r--r--

Rank: 4

积分
1425
duanyao 发表于 2017-6-29 09:54:11 | 显示全部楼层
kirigaya 发表于 2017-6-29 09:27
我觉得还是加钱升内存才是解决之道。自从加了2G内存,6G情况下就没卡过。

我认为并不是(我有8G内存)。用户很多时候无法预测一个程序会使用多少内存,比如开一个网页用多少内存?这要看网页的复杂程度和浏览器的实现,以及一些偶然因素。还有就是软件的内存泄漏,这是多少内存也救不了的。 操作系统绝对不应该因为普通应用程序的问题而卡死。

4

主题

681

帖子

2035

积分

drw-r--r--

Rank: 7Rank: 7Rank: 7

积分
2035
WangYaohua 超级版主 发表于 2017-6-29 09:55:33 | 显示全部楼层
小内存就不要考虑使用chrome了,另外,也可以试试  https://github.com/Nefelim4ag/systemd-swap
Deepin Developer

81

主题

2568

帖子

1万

积分

dr--r--r--

Rank: 7Rank: 7Rank: 7

积分
10169
noahsai 发表于 2017-6-29 10:01:42 | 显示全部楼层
WangYaohua 发表于 2017-6-29 09:55
小内存就不要考虑使用chrome了,另外,也可以试试  https://github.com/Nefelim4ag/systemd-swap ...

胡说,昨晚我还在用1g内存的上网本用chrome逛淘宝~~完全没事。
只不过,我用的是xfce4,dde和deepin相关的全卸载了
来,慢慢吠,比如那条叫什么丧钟的什么。

9

主题

549

帖子

1425

积分

-rw-r--r--

Rank: 4

积分
1425
duanyao 发表于 2017-6-29 10:05:17 | 显示全部楼层
jingle 发表于 2017-6-29 09:37
刚才讨论了 这个方案可能谁kill其他的应用 导致数据丢失,已经有大神在解决了 ...

不知道你们的解决思路是什么,能否透露一二?

我觉得在现阶段,linux 桌面在内存耗尽的时候丢失数据是无法完全避免的,问题只在于丢失的多少。
要么是一两个耗内存的应用被杀死而丢数据,要么是整个系统硬重启而丢数据,前者总还是好一些。

我觉得目前最优雅的解决方案,还是 android 的 low memory killer (当然 iOS 也类似),在内存接近耗尽时,先通知所有应用,让它们保存状态,等一段时间后再杀死非前台的应用。然而 linux 桌面似乎还没有类似的通知机制(也可能我不知道,但显然没有广泛采用),所以 earlyoom 似乎是现阶段相对靠谱的方案了。希望未来能引入类似 android 的机制。

9

主题

549

帖子

1425

积分

-rw-r--r--

Rank: 4

积分
1425
duanyao 发表于 2017-6-29 10:11:23 | 显示全部楼层
WangYaohua 发表于 2017-6-29 09:55
小内存就不要考虑使用chrome了,另外,也可以试试  https://github.com/Nefelim4ag/systemd-swap ...

我的内存并不小(8G),另外我开那么多耗内存的程序当然是为了测试。
另外重点并不是“小于xG内存就不要用y软件”了,因为软件太多了,光是基于 blink/webkit 内核的程序就一大堆(vs code,electron等),重点是任何情况下,操作系统不应该被普通应用搞死。

1

主题

242

帖子

671

积分

-r--r--r--

Rank: 3Rank: 3

积分
671
wtz 发表于 2017-6-29 10:17:02 | 显示全部楼层
http://forum.ubuntu.org.cn/viewtopic.php?f=48&t=476652

9

主题

549

帖子

1425

积分

-rw-r--r--

Rank: 4

积分
1425
duanyao 发表于 2017-6-29 10:34:35 | 显示全部楼层

这个帖子很老了,讨论的问题和解决方案并不超出我的认知范围。我关注这个问题也有好几年了,查阅了很多资料,自己也做了一些测试,确认不论打开或关闭 swap 分区、调整 swap 参数等都是无效的,最近又确认 OOM killer 是经常无效的,earlyoom 看来是比较有希望的。

这两个问答希望感兴趣的人读一读(其实 earlyoom 的文档也引用了它们):

https://unix.stackexchange.com/q ... -on-forced-swapping

https://superuser.com/questions/ ... vent-earlier/708430

4

主题

681

帖子

2035

积分

drw-r--r--

Rank: 7Rank: 7Rank: 7

积分
2035
WangYaohua 超级版主 发表于 2017-6-29 10:49:13 | 显示全部楼层
noahsai 发表于 2017-6-29 10:01
胡说,昨晚我还在用1g内存的上网本用chrome逛淘宝~~完全没事。
只不过,我用的是xfce4,d ...

你装个chrome不用还更没事呢
Deepin Developer

4

主题

681

帖子

2035

积分

drw-r--r--

Rank: 7Rank: 7Rank: 7

积分
2035
WangYaohua 超级版主 发表于 2017-6-29 10:50:20 | 显示全部楼层
duanyao 发表于 2017-6-29 10:11
我的内存并不小(8G),另外我开那么多耗内存的程序当然是为了测试。
另外重点并不是“小于xG内存就不要 ...

这句话没毛病
Deepin Developer

4

主题

681

帖子

2035

积分

drw-r--r--

Rank: 7Rank: 7Rank: 7

积分
2035
WangYaohua 超级版主 发表于 2017-6-29 10:50:26 | 显示全部楼层
duanyao 发表于 2017-6-29 10:11
我的内存并不小(8G),另外我开那么多耗内存的程序当然是为了测试。
另外重点并不是“小于xG内存就不要 ...

这句话没毛病
Deepin Developer

9

主题

549

帖子

1425

积分

-rw-r--r--

Rank: 4

积分
1425
duanyao 发表于 2017-6-29 11:10:32 | 显示全部楼层
本帖最后由 duanyao 于 2017-6-29 11:11 编辑

补充:想了一下,还是把我这些年调查内存不足导致卡死的问题是做的笔记发上来(见一楼的附件)。很凌乱,没什么条理,不过里面的很多链接应该是有参考价值的。
发上来的主要目的是说明:我并非是偶尔看到一个软件就兴冲冲的推荐了,这后面是有大量铺垫的。

15

主题

761

帖子

2397

积分

-rw-rw-r--

Rank: 5Rank: 5

积分
2397
QQ
jdocker 发表于 2017-6-29 11:19:42 来自移动端 | 显示全部楼层
duanyao 发表于 2017-6-29 11:10
补充:想了一下,还是把我这些年调查内存不足导致卡死的问题是做的笔记发上来(见一楼的附件)。很凌乱,没 ...

这个确实可以单独发帖,支持。

81

主题

2568

帖子

1万

积分

dr--r--r--

Rank: 7Rank: 7Rank: 7

积分
10169
noahsai 发表于 2017-6-29 11:20:18 | 显示全部楼层
WangYaohua 发表于 2017-6-29 10:49
你装个chrome不用还更没事呢

哈,很好。
来,慢慢吠,比如那条叫什么丧钟的什么。

0

主题

14

帖子

210

积分

-r--r-----

Rank: 2

积分
210
raphaelzhang 发表于 2017-6-29 11:32:55 | 显示全部楼层
楼主有心了,谢谢

主要的问题在于深度桌面的目标用户是普通用户,在普通用户没有知晓的情况下突然杀死一个进程实际上是蛮惊悚的,在系统设计上不好。

对于熟悉Linux的人来说,在桌面遇到了响应慢的问题,比较常见的方法是tty -> top -> kill,这个很快的。

对于普通用户来说,比较好的方式是通过任务管理器杀进程。

对于内核的oom-killer来说,其实它主要的用途是长期无人值守运行的机器上杀进程,因为没有交互,所以等待时间略长也没啥。当然,这对于桌面这种人机交互多的来说确实不好,在这个意义上,earlyoom是有用的,但是就像之前说的那样,普通用户应该用任务管理器,高手会tty->top->kill,所以有点鸡肋。最主要的是,用户应该有决定权,而不是无法控制哪个程序被杀。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回列表 返回版块 返回顶部