2月29日,遇到一台运行 kernel-xen 的机器 load 异常高,但没有正在运行的进程的问题。ps 命令结果中,有大量如下进程:
root 31246 2817 0 Feb18 ? 00:00:00 crond
root 31247 31246 0 Feb18 ? 00:00:00 /bin/bash /usr/bin/run-parts /etc/cron.hourly
root 31248 31247 0 Feb18 ? 00:00:00 /bin/bash /etc/cron.hourly/mcelog.cron
root 31249 31247 0 Feb18 ? 00:00:00 awk -v progname=/etc/cron.hourly/mcelog.cron progname {????? print progname ":\n"?
root 31250 31248 0 Feb18 ? 00:00:00 cat /sys/hypervisor/uuid
我亲自 cat 了一下那个文件,也卡住了。查看 /proc/$pid/status 文件,发现状态是 disk sleep。搜索了一下,发现有人报告过这个 bug:https://bugzilla.redhat.com/show_bug.cgi?id=522827 。该报告的意思是 mcelog 不应该去读 uuid 这个文件。但我以为,这应该是内核的 bug 吧?既然提供了这个文件,为啥不让读呢?