发新帖

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

duanyao / 2017-6-28 21:58
浏览: 2075 / 回复: 66
楼主: duanyao

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

[复制链接]

59

主题

2273

帖子

9142

积分

d-rw-rw-r--

Rank: 8Rank: 8

积分
9142
wangyong 官方管理员 发表于 2017-6-30 09:07:47 来自移动端 | 显示全部楼层
duanyao 发表于 2017-6-29 10:05
不知道你们的解决思路是什么,能否透露一二?

我觉得在现阶段,linux 桌面在内存耗尽的时候丢失数据是无 ...

andriod的解决方案是所有应用都要遵守他的sdk,系统可以随时杀死进程,所以应用会主动保存数据,把保存数据的问题踢给应用开发厂商。桌面linux应用没有统一标准,当然有一天都用深度adk就可以办到了,哈哈哈哈

13

主题

761

帖子

1952

积分

-rw-rw-r--

Rank: 5Rank: 5

积分
1952
duanyao 发表于 2017-6-30 10:04:37 | 显示全部楼层
wangyong 发表于 2017-6-30 09:07
andriod的解决方案是所有应用都要遵守他的sdk,系统可以随时杀死进程,所以应用会主动保存数据,把保存数 ...

深度自己无疑可以先做起来,这会成为一项杀手级特性的。然后推动它成为 freedesktop.org 的标准,那么其它的 linux 桌面应用也可以加入进来。内存不足通知从原理上说不需要依赖特定 sdk,用 domain socket、dbus 或许都是可行的;自动保存数据就由应用自己实现了,用什么技术都行,不限制。

5

主题

212

帖子

747

积分

-r--r--r--

Rank: 3Rank: 3

积分
747
q1377195627 发表于 2017-6-30 12:11:51 | 显示全部楼层
kirigaya 发表于 2017-6-30 08:51
可能是因为我用的ssd吧,而且6G从来没用到超过4G上。

我也是ssd好不,而且内存关ssd啥事,该炸还是炸 ,clion日常1-2g,chrome日常好几g

48

主题

1657

帖子

5616

积分

drw-r--r--

Rank: 7Rank: 7Rank: 7

积分
5616
QQ
kirigaya 超级版主 发表于 2017-6-30 13:27:42 | 显示全部楼层
q1377195627 发表于 2017-6-30 12:11
我也是ssd好不,而且内存关ssd啥事,该炸还是炸 ,clion日常1-2g,chrome日常好几g ...

既然你要跑java,就别嫌弃内存了,加钱吧。

点评

试试 46 楼的程序吧  发表于 2017-6-30 21:22

5

主题

212

帖子

747

积分

-r--r--r--

Rank: 3Rank: 3

积分
747
q1377195627 发表于 2017-6-30 20:30:07 | 显示全部楼层
本帖最后由 q1377195627 于 2017-6-30 20:56 编辑
kirigaya 发表于 2017-6-30 13:27
既然你要跑java,就别嫌弃内存了,加钱吧。

然而我绝大多数内存是chrome吃的

13

主题

761

帖子

1952

积分

-rw-rw-r--

Rank: 5Rank: 5

积分
1952
duanyao 发表于 2017-6-30 21:20:05 | 显示全部楼层
本帖最后由 duanyao 于 2017-6-30 21:30 编辑

还没有经历过内存不足卡死,或者喜欢作死的小伙伴,可以试试这个小程序:

http://launchpadlibrarian.net/23372552/memory_overcommit.cc

来源是 ubuntu 的一个 bug 报告 https://bugs.launchpad.net/ubuntu/+source/linux/+bug/159356
下载后用 c++ 编译,运行。你需要输入每次分配的内存大小,单位 M,直接回车表示与上次相同。
如果剩余物理内存很多可以500M每步,剩余500M左右时改为100M每步,剩余100M左右时改为30M每步,而且不要太快。这很重要,如果最后阶段步子太大、太快,很容易被OOM killer 迅速杀掉。
剩余物理内存用系统监视器或free看就行。

在我的机器(机械硬盘)上,如果关闭 earlyoom (systemctl stop earlyoom),它几乎 100% 能卡死。之前我用的方法(浏览器开很多页面、开虚拟机、android-studio)太繁琐了,还是这个好。

为了从卡死中恢复,可以这么做:在运行 memory_overcommit.cc 之前,先执行
sudo sysctl kernel.sysrq=1
在卡死后,按下组合键 alt + sysrq + r  然后按 alt + sysrq + f ,这是为了手工执行 oom killer。oom killer 可能要延迟几秒钟才执行,所以不要急不可耐的反复按 alt + sysrq + f ,以免杀掉很多无辜进程。sysrq 就是 print screen 键。

4

主题

51

帖子

264

积分

-r--r-----

Rank: 2

积分
264
wcss2010 发表于 2017-7-1 12:05:00 | 显示全部楼层
谢了,先收藏

83

主题

1396

帖子

4844

积分

-rw-rw-rw-

Rank: 6Rank: 6

积分
4844
herdde 发表于 2017-7-12 19:20:13 | 显示全部楼层
"用 android-studio 编译一个大工程时,它先后杀掉了 chrome、 firefox、vs code,编译得以顺利完成。",它怎么知道哪个软件是自己需要的,哪些可以杀掉?

13

主题

761

帖子

1952

积分

-rw-rw-r--

Rank: 5Rank: 5

积分
1952
duanyao 发表于 2017-7-12 19:29:23 | 显示全部楼层
herdde 发表于 2017-7-12 19:20
"用 android-studio 编译一个大工程时,它先后杀掉了 chrome、 firefox、vs code,编译得以顺利完成。",它 ...

earlyoom 与 linux 内核的 OOM killer 选择进程的算法差不多。一个因素是内存占用,内存多的进程优先被杀掉;另一个因素是进程的 oom_adj 属性值,越大越容易被杀掉,oom_adj 可以由进程自己或系统来设置。

Chrome 把自己的渲染进程的 oom_adj  设置的很高,所以一般是第一个被杀掉的。因此你可以把 Chrome 当做报警器。

21

主题

292

帖子

1380

积分

-rw-r--r--

Rank: 4

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

16G内存,i5处理器,只开2个chrome,一个gedit,半个小时内卡死2次,强制 电源关机2次的路过

48

主题

1657

帖子

5616

积分

drw-r--r--

Rank: 7Rank: 7Rank: 7

积分
5616
QQ
kirigaya 超级版主 发表于 2017-7-17 17:27:29 | 显示全部楼层
zhaozhendong 发表于 2017-7-17 17:19
16G内存,i5处理器,只开2个chrome,一个gedit,半个小时内卡死2次,强制 电源关机2次的路过 ...

i3处理器,6G内存,跑chrome 5个常驻页面,后台一个wine qq,一个qtcreator,一个topbar没卡死的路过~

13

主题

761

帖子

1952

积分

-rw-rw-r--

Rank: 5Rank: 5

积分
1952
duanyao 发表于 2017-7-17 17:35:37 | 显示全部楼层
本帖最后由 duanyao 于 2017-7-17 17:36 编辑
zhaozhendong 发表于 2017-7-17 17:19
16G内存,i5处理器,只开2个chrome,一个gedit,半个小时内卡死2次,强制 电源关机2次的路过 ...

2个chrome 是指开了2个网页?那一般不应该占用很多内存啊,你可以用系统监视器看看。如果不是内存占用的问题,就要考虑是不是 xorg 崩溃了,通常是显卡驱动的问题。
不过 xorg 崩溃的现象一般是突然退出到登录界面,而不是长时间卡死。

21

主题

292

帖子

1380

积分

-rw-r--r--

Rank: 4

积分
1380
zhaozhendong 发表于 2017-7-17 17:39:08 | 显示全部楼层
kirigaya 发表于 2017-7-17 17:27
i3处理器,6G内存,跑chrome 5个常驻页面,后台一个wine qq,一个qtcreator,一个topbar没卡死的路过~ ...

只是偶尔卡,不是很影响,

还能用,能处理好最好,处理不了,也能用,用了1周,也就卡死过3次,还能接受。

21

主题

292

帖子

1380

积分

-rw-r--r--

Rank: 4

积分
1380
zhaozhendong 发表于 2017-7-17 17:39:46 | 显示全部楼层
duanyao 发表于 2017-7-17 17:35
2个chrome 是指开了2个网页?那一般不应该占用很多内存啊,你可以用系统监视器看看。如果不是内存占用的问 ...

2个网页,


只是偶尔卡,不是很影响,

还能用,能处理好最好,处理不了,也能用,用了1周,也就卡死过3次,还能接受。

13

主题

761

帖子

1952

积分

-rw-rw-r--

Rank: 5Rank: 5

积分
1952
duanyao 发表于 2017-7-17 18:10:01 | 显示全部楼层

1周3次已经很高了,我觉得1年3次还凑合。
你可以装上 earlyoom ,如果以后任然卡死,重启后用 sudo deepin-feedback-cli 收集一下日志,发到论坛里。

4

主题

99

帖子

512

积分

-r--r--r--

Rank: 3Rank: 3

积分
512
bsidb 发表于 2017-7-17 20:22:41 | 显示全部楼层
duanyao 发表于 2017-6-29 12:02
为了减少数据丢失的问题,可以暂时借鉴 Windows 的内存不足提示。比如在可用内存 12%-15%触发提示框, ...

对,Windows这个方案算是比较好的了。在系统自身不卡死的情况下提醒用户,交给用户处理。

4

主题

99

帖子

512

积分

-r--r--r--

Rank: 3Rank: 3

积分
512
bsidb 发表于 2017-7-17 20:29:44 | 显示全部楼层
duanyao 发表于 2017-7-12 19:29
earlyoom 与 linux 内核的 OOM killer 选择进程的算法差不多。一个因素是内存占用,内存多的进程优先被杀 ...

不过Chrome这样做也有缺陷:有的工作环境是基于Web的,网页突然崩溃会导致编辑的文字或表格丢失,也很烦人。

13

主题

761

帖子

1952

积分

-rw-rw-r--

Rank: 5Rank: 5

积分
1952
duanyao 发表于 2017-7-17 23:06:18 | 显示全部楼层
bsidb 发表于 2017-7-17 20:29
不过Chrome这样做也有缺陷:有的工作环境是基于Web的,网页突然崩溃会导致编辑的文字或表格丢失,也很烦 ...

这就要靠 Web 应用实现自动保存了。

21

主题

292

帖子

1380

积分

-rw-r--r--

Rank: 4

积分
1380
zhaozhendong 发表于 2017-7-18 08:49:40 | 显示全部楼层
duanyao 发表于 2017-7-17 18:10
1周3次已经很高了,我觉得1年3次还凑合。
你可以装上 earlyoom ,如果以后任然卡死,重启后用 sudo deepi ...

好,多谢

0

主题

2

帖子

13

积分

-r--------

Rank: 1

积分
13
Ssxfc 发表于 2017-10-13 10:55:09 | 显示全部楼层
请问 运行之后要一直开着终端吗
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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