仅当确实需要时,如何禁用进程使用交换分区

仅当确实需要时,如何禁用进程使用交换分区

我的嵌入式系统有 2 GB RAM 和 100 MB 交换分区。在继续监控后,我发现 RAM 的平均内存使用量约为 50%。由于某种原因,系统开始使用 SWAP 内存并使用了几乎 40% (40 MB)。我想防止这样的事情发生,因为我的设备闪存在写入次数方面存在很大问题,并且我需要它使用约 10 年。运行这组命令后,我得到使用 SWAP 的进程列表:

for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | less​

我的系统文件/etc/sysctl.conf配置了参数 : vm.swappiness=1,所以根据我阅读的文章,只有在确实需要时才应该使用 SWAP 。 (我用 调查了结果vm.sappiness=0,但还没有结果。)

我知道有一种方法可以防止特定进程使用交换,但正确的方法是什么?

答案1

您可以设置每个进程的交换性cgroups

echo 0 > /sys/fs/cgroup/<your custom group>/memory.swappiness

无论如何我的建议是使用兹拉姆用于内存中的压缩交换。

答案2

我在两个系统上进行测试,我检测到之前使用了 40% 的 SWAP 选项:

vm.swappiness=0

这个选项确实很有帮助。过去 4 天我没有看到任何交换的使用

相关内容