当我在浏览器中打开很多选项卡时,我的系统会在几分钟内无响应。 我无法移动鼠标光标,或终止进程或 close 任何打开的标签。 当时,我只好强行重置系统。 当然,我用 一个标签 和 大吊带 扩展,但它们也没有太大帮助。 我经常内存不足。 在寻找解决此问题的解决方案时,我遇到了 早期OOM. 对于那些想知道的人,当它绝对没有其他选择时,它将杀死一个无响应系统中最大的进程。 早期 OOM 每秒检查 10 次可用内存和空闲交换量。 如果两者都低于 10%,它将杀死最大的进程。
内容
为什么要早期OOM? 为什么不内置OOM杀手?
在深入之前,让我简单解释一下OOM杀手,也称为 这出去 这F 米埃默里杀手。 OOM 杀手是内核在系统内存严重不足时使用的进程。 OOM 杀手的主要任务是继续杀死进程,直到释放足够的内存以供内核尝试运行的其余进程顺利运行。 OOM 杀手将选择对系统最不重要的最佳进程,并释放最大内存并杀死它们。 我们可以在中查看每个进程的oom_score /proc 目录下 PID 部分。
例子:
$ cat /proc/10299/oom_score 1
任何进程的 oom_score 值越高,在系统内存不足时被 OOM Killer 杀死的可能性就越高。
Early OOM 的开发者声称它比内核 OOM 杀手有一大优势。 如前所述,Linux oom 杀手会杀死得分最高的进程,因此 Chrome 浏览器将永远是 oom 杀手的第一个受害者。 为了避免这种情况,早期 OOM 使用 /proc/*/状态 代替 echo f > /proc/sysrq-触发器. 他还声称手动触发 oom 杀手可能在最新的 Linux 内核中根本不起作用。
安装早期 OOM
早期的 OOM 在 AUR 中可用,因此您可以使用 Arch Linux 及其衍生产品中的任何 AUR 帮助程序安装它。
使用 耶:
$ yay -S earlyoom
启用并启动 Early OOM 守护进程:
$ sudo systemctl enable earlyoom
$ sudo systemctl start earlyoom
在其他 Linux 发行版上,手动编译和安装它,如下所示。
$ git clone https://github.com/rfjakob/earlyoom.git $ cd earlyoom $ make $ sudo make install
使用早期 OOM 杀死无响应 Linux 系统中的最大进程
运行以下命令启动早期 OOM:
$ earlyoom
如果您是从源代码编译的,请运行以下命令来启动 Early OOM:
$ ./earlyoom
示例输出将是:
earlyoom 0.12 mem total: 3863 MiB, min: 386 MiB (10 %) swap total: 2047 MiB, min: 204 MiB (10 %) mem avail: 1770 MiB (45 %), swap free: 2047 MiB (99 %) mem avail: 1773 MiB (45 %), swap free: 2047 MiB (99 %) mem avail: 1772 MiB (45 %), swap free: 2047 MiB (99 %) mem avail: 1773 MiB (45 %), swap free: 2047 MiB (99 %) mem avail: 1772 MiB (45 %), swap free: 2047 MiB (99 %) mem avail: 1773 MiB (45 %), swap free: 2047 MiB (99 %) mem avail: 1771 MiB (45 %), swap free: 2047 MiB (99 %) mem avail: 1773 MiB (45 %), swap free: 2047 MiB (99 %) mem avail: 1784 MiB (46 %), swap free: 2047 MiB (99 %) [...]
正如您在上面的输出中看到的,Early OOM 将显示您拥有多少内存和交换空间、最小值是多少、可用内存量以及空闲交换空间量。 请记住,它将一直运行,直到您按 CTRL+C 手动停止。
如果内存和交换都达到 10% 以下,Early OOM 会自动杀死最大的进程,直到系统有足够的内存才能平稳运行。 您还可以根据需要配置最小百分比值。
要将可用内存最小值设置为总数的 PERCENT,请运行:
$ earlyoom -m <PERCENT_HERE>
要将可用交换最小值设置为总数的 PERCENT,请运行:
$ earlyoom -s <PERCENT_HERE>
有关更多详细信息,请参阅帮助部分。
$ earlyoom -h earlyoom 0.12 Usage: earlyoom [OPTION]... -m PERCENT set available memory minimum to PERCENT of total (default 10 %) -s PERCENT set free swap minimum to PERCENT of total (default 10 %) -M SIZE set available memory minimum to SIZE KiB -S SIZE set free swap minimum to SIZE KiB -k use kernel oom killer instead of own user-space implementation -i user-space oom killer should ignore positive oom_score_adj values -d enable debugging messages -v print version information and exit -r INTERVAL memory report interval in seconds (default 1), set to 0 to disable completely -p set niceness of earlyoom to -20 and oom_score_adj to -1000 -h this help text
现在,您无需担心最高内存消耗进程。
资源:
- 早期 OOM GitHub 存储库
- Unix 和 Linux 堆栈交换
感谢您的光临!
帮助我们帮助您:
- 订阅我们的电子邮件通讯: 立即注册
- 支持 OSTechNix: 通过贝宝捐款
- 下载免费的电子书和视频: TradePub 上的 OSTechNix
- 联系我们: 红迪网 | Facebook | 推特 | 领英 | RSS订阅
祝你有美好的一天!!
CLIearly OOMKill 进程LinuxOOM内存不足