MENU

kswapd0 cpu负载过高的解决方法

March 25, 2024 • 已被 519 位童鞋围观过 • 转载摘抄

我一台 1 核 1G 内存的VPS,最近总是出现 CPU 满载的情况,重启后恢复正常,过几个小时后又会满载,导致在上面运行的一些自动任务执行失败。

使用 top 命令查看,发现是 kswaod0 进程占用了大量 CPU 资源。这个进程是和虚拟内存相关的,在网上查到的资料:

kswapd0 占用过高是因为物理内存不足,使用 swap 分区与内存换页操作交换数据,导致 CPU 占用过高。
解决办法:
01、禁止 swap
02、扩大内存

但是我这台机器根本没有开启 swap,所以我怀疑应该是物理内存不够,系统想调用 swap 内存而调用不到。我尝试开启 swap 虚拟内存:

[root@do-sp ~]# dd if=/dev/zero of=/home/swap bs=1MB count=1024
1024+0 records in
1024+0 records out
1024000000 bytes (1.0 GB) copied, 4.40974 s, 232 MB/s
[root@do-sp ~]# mkswap /home/swap
Setting up swapspace version 1, size = 999996 KiB
no label, UUID=c1c88cea-1832-4fef-ae18-3eee2d7314dd
[root@do-sp ~]# chmod 600 /home/swap
[root@do-sp ~]# swapon /home/swap

复制

然后运行 top,看到负载马上就降低了。

看来 kswapd0 负载过高,还有一种可能性是因为没有开启 swap 虚拟内存,而物理内存不够使用。所以小内存的 VPS 还是尽量开启 swap 内存吧。

Last Modified: March 26, 2024