我有一台旧笔记本电脑,旧的奔腾双核(我认为)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 杀手不会杀死重要的东西。两种方法:
kill 12345
在另一个终端中键入(12345
其中 是显示的“PID”top
),或者- 在 中
top
,按k,出现提示时输入 PID,然后按Enter两次。
这是不言而喻的,但杀死进程时要小心。通常最好使用 Quit 命令正常退出应用程序,这样您就一定不会丢失任何未保存的工作。