尽管 `vm.swappiness=100`,Mint 系统冻结,但交换未充分利用

Ole*_*iak 8 swap linux-mint freeze

由于内存不足,我的 Mint 18.1 系统经常冻结大约 10 分钟,根据显示冻结时内存使用率为 100% 的小部件。SysRq +“饲养瘦大象非常无聊”组合不起作用。

我曾尝试将交换优先级设置为 -1,但这并不能解决冻结问题。

我的交换分区几乎没有被使用,即使在高负载和vm.swappiness=100,甚至在使用 95% 以上的 RAM 时也是如此。强制增加交换使用会解决冻结问题,如果是这样,我如何强制更多使用交换?

->free -m
              total        used        free      shared  buff/cache   available
Mem:          15874       12243         412        1255        3218        1724
Swap:         16207           5       16201

->swapon -s
Filename                Type        Size    Used    Priority
/dev/dm-3             partition 16596476    6068    -1
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我的系统:

NAME="Linux Mint"
VERSION="18.1 (Sonya)"
Run Code Online (Sandbox Code Playgroud)

LSe*_*rni 3

显然,你这里有两个问题。

REISUB 序列不工作可能是由于 magic SysRq 未激活造成的 - 检查一下

cat /proc/sys/kernel/sysrq

# List of possible values in /proc/sys/kernel/sysrq:

#  0 - disable sysrq completely
#  1 - enable all functions of sysrq
#    >1 - bitmask of allowed sysrq functions (see below for detailed function description):
#      2 - enable control of console logging level
#      4 - enable control of keyboard (SAK, unraw)
#      8 - enable debugging dumps of processes etc.
#     16 - enable sync command
#     32 - enable remount read-only
#     64 - enable signalling of processes (term, kill, oom-kill)
#    128 - allow reboot/poweroff
#    256 - allow nicing of all RT tasks
Run Code Online (Sandbox Code Playgroud)

对于经典 REISUB,您需要 4 (R) + 64 (E,I) + 16 (S) + 32 (U) + 128 (B) = 244 (效果与瘦象版本相同;作为助记符,它是BUSIER 倒着拼写)。

对于系统的交换性:它按预期工作。该行为的原因是您使用了大量内存 - 这可能是您获得的 95% - 然后其他东西正在请求大量新 RAM,迫使这 95% 中的大部分进行交换并与所有内存作斗争方式。

你能做的最好的事情就是安装更多的内存。否则,看看您是否可以驯服小进程,使其达到 95%,或者大进程进一步消耗 40-50%。该top实用程序可能会帮助您。

作为一个奇特的解决方案,您可以增加明显的交换性,并通过一些监视系统的进程来“削减”小鱼,如果大猪没有运行并且内存占用太大,则开始分配和释放大量内存- 比如说,所有剩余内存加上 64M,强制将 64M 的小内存放入缓存,然后 +128M,依此类推,直到分配延迟超出给定的时间阈值或大内存开始运行。

如果您真的想这样做,这个答案可以给您一个良好的开始。