为什么kswapd在空闲系统上使用高CPU?

我有一个闲置的Linux centOS系统,但kswapd正在使用100%的CPU。

我所有运行的是一个单一的bash会议与顶级运行….我有32G内存,但kswapd不断使用100%的CPU超过4个小时。

AFAICS这既不涉及免费的RAM也不SWAP。 我们在这里遇到了同样的问题,有时候会碰到生产机器,并且有大量的RAM空闲,经常超过700 MB,没有脏缓冲区同步,使用0字节的SWAP。 由于一些未知的竞争条件,它显然看起来像是一个严重的内核BUG。

目前我们运行CentOS Kernel 2.6.18-194.el5,并试图用一些更新的内核来取代它,因为我们认为这可能有帮助。

更新:

RedHat已经确认这是2.6.18-194.el5的内核问题

解决scheme:

 Minimum: kernel-2.6.18-194.32.1.el5 contains the immediate bugfix Better: kernel-2.6.18-238.el5 contains additional kswapd-related bugfixes Best: kernel-2.6.18-348.4.1.el5 latest kernel which runs with RHEL 5.5 without change 

同时还有一个脚本 ,能够很好地检测到100%的CPU情况。 我们每分钟监测一次,通知我们情况。 如果情况持续太久,受影响的机器将会完全locking,因为使用100%的CPU越来越难以进行处理,直到机器完全无法pipe理。

目前已知解决该问题的唯一方法是手动硬重启受影响的机器。 /sbin/reboot失败,因为机器经常关机。

要从任何root shell命令行硬盘重新启动计算机而不直接访问控制台,请执行以下操作:

 echo 10 > /proc/sys/kernel/panic echo 1 > /proc/sys/kernel/sysrq echo s > /proc/sysrq-trigger sleep 5 echo s > /proc/sysrq-trigger sleep 1 echo b > /proc/sysrq-trigger 

请记住,在使机器停顿之后执行此操作,以便不再有进程写入磁盘。 这将防止fsck重新启动后运行严重麻烦。

对不起,没有真正的解决办法,但HTH。 请记住,也许可能有其他的东西导致kswapd的CPU占用率超过这里所描述的100%。 所以在这种情况下自动重新启动可能是一个坏主意。