DU 为何会导致 CPU 使用率过高?

DU 为何会导致 CPU 使用率过高?

在 CentOS 6.5 上,由于 /home 的磁盘使用计划而运行,但du -sk /home导致CPU 使用率达到 100%。此外,在它完成之前,另一个 du 开始运行,并且堆积如山,使系统瘫痪。sh -c (du -sk \/home) 2>/dev/nulldu

从那时起,我禁用了自动检查,但我du -sk /home也无法手动运行。du在其他目录上运行良好(快速)(尽管 /home 是最大的 - 4912620 - 它不应该花费那么长时间)

我想知道为什么 DU 会导致 /home 上的 CPU 使用率过高


更新 1:完全重启(主机+客户机)解决了该问题。

更新2:问题又回来了。du 运行时,CPU 使用率几乎一半一半地分布在 (us) 和 (sy) 之间。(wa) 从未超过 1%。此外,IOWAIT 显示仅磁盘写入

答案1

我无法确切地告诉你原因,但我会采取以下措施来缩小发生的情况的范围:

cd /home
for i in * ; do echo "Starting in ${i}..." ; du -s ${i} ; done

这将对目录内的每个命令运行“du -s” /home,并向您显示它将要执行的操作。这也假设您使用 sh 或 bash 作为 shell。

当您找到导致问题的目录后,再移入一个目录,看看那里发生了什么。还请记住,这不会在您启动 for 循环的级别检查隐藏(“点”)目录。您可能还需要检查这些目录,或者修改 glob 表达式以包含它们。

答案2

当我遇到这个帖子

root> modprobe vhost_net root> echo vhost_net > /etc/modules

由于某种原因,virtio 接口之前没有加载驱动程序。现在一切都好了。

相关内容