我怎样才能让 Linux 不再崩溃并仅仅终止进程?

我怎样才能让 Linux 不再崩溃并仅仅终止进程?

Firefox(和 flash)往往会在随机时间占用大量内存,导致我的电脑崩溃,我疯狂地等待 oom_killer 启动并终止进程,[1] 而我自己却无法终止 Firefox。我已禁用交换,但这只会让情况变得更糟。它会崩溃数小时后才终止任何进程,这毫无意义。为什么它不刷新大量缓存并继续运行?

我可以禁用缓存吗?我可以让它停止抖动吗?我只想在内存不足时让最大的内存占用者死掉。

[1] 别介意它实际上并不针对 Firefox,而是继续杀死 X 或我的桌面环境。

答案1

定期删除缓存。这样,当进程请求少量内存时,您的计算机就不会忙于一次缓存少量数据。这会降低计算机的整体速度,但至少您不会坐在那里等待闪存吞噬您。

while sleep 30; do vmstat && echo 3 > /proc/sys/vm/drop_caches && vmstat; done


Nov 11 10:40:59 eeyore kernel: [604280.360966] icedove-bin invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0, oom_score_adj=0
Nov 11 10:40:59 eeyore kernel: [604280.606183] Out of memory: Kill process 12767 (firefox-bin) score 325 or sacrifice child
Nov 11 10:40:59 eeyore kernel: [604280.607749] Killed process 12914 (plugin-containe) total-vm:187036kB, anon-rss:14488kB, file-rss:0kB
Nov 11 10:41:23 eeyore kernel: [604305.020890] Xorg invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0, oom_score_adj=0
Nov 11 10:41:24 eeyore kernel: [604305.096299] Out of memory: Kill process 12767 (firefox-bin) score 325 or sacrifice child
Nov 11 10:41:24 eeyore kernel: [604305.096308] Killed process 482 (plugin-containe) total-vm:61124kB, anon-rss:2420kB, file-rss:0kB
Nov 11 10:41:30 eeyore kernel: [604311.107726] python invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0, oom_score_adj=0
Nov 11 10:41:30 eeyore kernel: [604311.531604] Out of memory: Kill process 12767 (firefox-bin) score 325 or sacrifice child
Nov 11 10:41:30 eeyore kernel: [604311.533284] Killed process 12767 (firefox-bin) total-vm:1388764kB, anon-rss:659040kB, file-rss:0kB

答案2

我发现早期它可以达到目的并且有很多选择。

答案3

您可以使用 thrash-protect,可从以下网址获取:

https://steemit.com/linux/@tobixen/thrash-protect-a-linux-utility-to-prevent-thrashing

相关内容