当使用交换时,kswapd 经常使用 100% CPU

Zaz*_*Zaz 14 linux swap cpu-usage linux-kernel

大多数情况下,当我的计算机开始需要交换时,我会看到 CPU 使用率大幅飙升(kswapd0始终使用 99%-100% CPU)。根据top,时间花在sy(系统/内核)而不是wa(IO等待)上。

我在具有 2GB RAM 的 C720 上运行 Linux 4.0.4-2-ARCH,在 SSD 上运行 6GB 交换。

无论是否打开丢弃页面(TRIM),我似乎都有这个问题。

是否有任何设置我应该检查或调整以查看是否可以解决此问题?

有什么办法可以调试问题吗?类似于strace内核线程?


使用默认的 Arch Linux 设置运行:

/proc/sys/vm/swappiness= 60
/proc/sys/vm/vfs_cache_pressure= 100
/sys/kernel/mm/transparent_hugepage/enabled=[always] madvise never

sho*_*hok 13

这似乎是一个比较 普遍的 问题

当问题发生时,您能否检查发出以下命令是否停止它: echo 1 > /proc/sys/vm/drop_caches

如果它有效,您可以将其安排为定期 cron 作业作为解决方法。

  • 这有效并且非常有帮助,但是**它在做什么**?我在一台资源非常少的机器上,这个问题一直出现(并且很难通过 ssh 使用我的计算机),但我不知道发生了什么。将其安排为 cron 作业似乎是解决故障的一种方式...... (4认同)
  • 不幸的是,这没有效果,`/proc/sys/vm/drop_caches` 保持在 `1`。 (2认同)

poi*_*ige 0

这是准答案——评论太长,但还不是一个现成的答案

\n\n

mkswap1)不使用6G而是更少,例如1或2 GiB(您可以通过不调整交换分区大小来设置大小) \xe2\x80\x94 尝试过吗?什么结果?

\n\n

2) 什么是sysctl vm.swappiness, sysctl vm.vfs_cache_pressure

\n\n

3) 什么是cat /sys/kernel/mm/transparent_hugepage/enabled

\n\n

注意,您是否意识到在这种设置中(没有那么多 RAM,巨大的交换空间),您的 SSD 会严重磨损。

\n\n

PS 我建议尝试使用 UltraKSM,但它需要修补内核。我确实有一些自己的构建(基于实时BFS),但它们是基于.deb基于系统的,同时它们可以很容易地在不同的系统上使用(通常你只需要解压 s.deb并制作相应的 initrd /initramfs,对于不熟悉 Linux 方面的人来说可能会很麻烦)

\n\n

(待续)

\n