发新帖

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

duanyao / 2017-6-28 21:58
浏览: 3134 / 回复: 70
楼主: duanyao

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

  [复制链接]

5

主题

215

帖子

769

积分

-r--r--r--

Rank: 3Rank: 3

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

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

48

主题

2069

帖子

6649

积分

drw-r--r--

Rank: 7Rank: 7Rank: 7

积分
6649
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

主题

215

帖子

769

积分

-r--r--r--

Rank: 3Rank: 3

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

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

16

主题

1305

帖子

3324

积分

-rw-rw-rw-

Rank: 6Rank: 6

积分
3324
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 键。

5

主题

61

帖子

336

积分

-r--r-----

Rank: 2

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

104

主题

1672

帖子

5574

积分

-rw-rw-rw-

Rank: 6Rank: 6

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

16

主题

1305

帖子

3324

积分

-rw-rw-rw-

Rank: 6Rank: 6

积分
3324
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 当做报警器。

26

主题

385

帖子

1748

积分

-rw-rw-r--

Rank: 5Rank: 5

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

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

48

主题

2069

帖子

6649

积分

drw-r--r--

Rank: 7Rank: 7Rank: 7

积分
6649
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没卡死的路过~

16

主题

1305

帖子

3324

积分

-rw-rw-rw-

Rank: 6Rank: 6

积分
3324
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 崩溃的现象一般是突然退出到登录界面,而不是长时间卡死。

26

主题

385

帖子

1748

积分

-rw-rw-r--

Rank: 5Rank: 5

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

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

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

26

主题

385

帖子

1748

积分

-rw-rw-r--

Rank: 5Rank: 5

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

2个网页,


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

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

16

主题

1305

帖子

3324

积分

-rw-rw-rw-

Rank: 6Rank: 6

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

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

5

主题

105

帖子

555

积分

-r--r--r--

Rank: 3Rank: 3

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

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

5

主题

105

帖子

555

积分

-r--r--r--

Rank: 3Rank: 3

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

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

16

主题

1305

帖子

3324

积分

-rw-rw-rw-

Rank: 6Rank: 6

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

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

26

主题

385

帖子

1748

积分

-rw-rw-r--

Rank: 5Rank: 5

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

好,多谢

0

主题

2

帖子

17

积分

-r--------

Rank: 1

积分
17
Ssxfc 发表于 2017-10-13 10:55:09 | 显示全部楼层
请问 运行之后要一直开着终端吗

240

主题

1万

帖子

4万

积分

drw-r--r--

Rank: 7Rank: 7Rank: 7

积分
44134
jingle 超级版主 发表于 2017-10-13 11:41:15 | 显示全部楼层
Ssxfc 发表于 2017-10-13 10:55
请问 运行之后要一直开着终端吗

不用

3

主题

30

帖子

100

积分

-r--------

Rank: 1

积分
100
kppom 发表于 2017-10-18 13:18:38 | 显示全部楼层
我平时专门用于跑重载CPU计算的虚拟机,CPU100%,Memory只剩60M的情况下仍然跑的很欢。我没有明细那的观察到杀后台的征兆,同时Chrome也是可以运行的,就是会卡(没CPU了)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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