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

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

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

我尝试将交换优先级设置为-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

在此输入图像描述

我的系统:

NAME="Linux Mint"
VERSION="18.1 (Sonya)"

答案1

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

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

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

对于系统的交换性:它按预期工作。该行为的原因是您使用了大量内存 - 这可能是您获得的 95% - 并且然后某物别的正在请求大量新 RAM,迫使 95% 的大部分进行交换并一路战斗。

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

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

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

答案2

简而言之,交换不会帮助你,解决这个问题最有效的方法是扩大记忆如果你保持系统环境不变。

现在回答你刚才提到的问题。

1. 为什么“vm.swappiness=100”内存没有换出?

首先,您应该了解 Linux 中的 swap 是如何工作的。当内核感觉内存不足时,有两种方法可以回收内存来缓解这种情况。

  1. 交换匿名页面
  2. 回收缓存页面

'vm.swappiness' 只是控制内核交换内存页面的积极程度(交换更多匿名页面或回收更多缓存页面)

那么,又来了一个问题,内核如何确定要交换哪个匿名页呢?策略比较复杂,可以参考代码这里根据你的内核版本。用一句话概括策略,交换最不活动的页面。如果没有内核认为可以交换的非活动页面怎么办?

这就是为什么您的系统没有换出您想象的那么多内存的原因。

2. 强制内存交换有帮助吗?

不。并且没有通用的方法来强制交换内存,内核接管它。

答案3

如果系统是笔记本电脑,则其键盘系统请求钥匙可能无法工作,除非有额外的功能键,(其作用类似于转移键),被按下。

每当一个应用程序(或一组应用程序)占用超过 16GB RAM 时,通常最好找到一个不太臃肿的应用程序。

相关内容