重载导致 Linux mint 上用户启动的进程崩溃

重载导致 Linux mint 上用户启动的进程崩溃

我有一台旧笔记本电脑,旧的奔腾双核(我认为)2.3 ghz,运行 Linux mint 17.3 --- Mate

当笔记本电脑负载较重(例如视频解码)时,它可能会冻结几秒钟,但随后一些(最常见的是随机的)我手动启动的进程(而不是我的用户由系统(例如台式机)启动的进程)崩溃。看起来好像它们被正确关闭,因为文件写入进程总是完成其工作并且永远不会中断。

我无法列出任何崩溃的进程,因为它是随机的,但最常见的非图形进程会停止。像 Firefox 这样的东西往往会结束得更少。

答案1

您可能遇到的是OOM 杀手,这是正常 Linux 内存管理策略的一部分。当内存管理器(Linux 内核)无法再向用户态和内核进程提供内存时,OOM 杀手会使用一种算法,根据为每个进程计算的“坏度”值来选择一个或多个进程。

从用户的角度来看,这看起来像是程序的“随机”(非确定性)崩溃,包括像典型桌面环境一样的前台和后台应用程序。

视频解码非常消耗 CPU 资源,但触发 OOM 杀手的是记忆要求。您是否有任何选项可以减少视频解码器的内存使用量(也许通过使用较小的缓冲区)?除此之外,您唯一的(实际)防御是增加可用内存量,这可能意味着物理升级内存,或抢先关闭系统上其他消耗内存的进程。

追踪消耗内存的进程

您可以使用该命令跟踪占用内存的进程top -o %MEM。如果 Linux Minttop不支持该-o %MEM语法,只需top自行运行并使用<>键更改排序字段。

这项技术的一个很好的副作用是,您还可以在屏幕的前几行中看到有多少内存和交换空间可用top

top - 14:13:43 up 5 days,  4:00,  4 users,  load average: 0.00, 0.02, 0.05
Tasks: 168 total,   2 running, 166 sleeping,   0 stopped,   0 zombie
%Cpu(s):  4.0 us,  1.0 sy,  0.0 ni, 95.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   2049988 total,  1231344 used,   818644 free,   358072 buffers
KiB Swap:  2095100 total,   217588 used,  1877512 free.   450268 cached Mem

自己杀死进程

然后,您可以使用此信息抢先杀死(退出)任何使用大量内存的不需要的进程,因此 OOM 杀手不会杀死重要的东西。两种方法:

  1. kill 12345在另一个终端中键入(12345其中 是显示的“PID” top),或者
  2. 在 中top,按k,出现提示时输入 PID,然后按Enter两次。

这是不言而喻的,但杀死进程时要小心。通常最好使用 Quit 命令正常退出应用程序,这样您就一定不会丢失任何未保存的工作。

相关内容