在Unix'top'命令中被CPU值困惑

在下面的屏幕截图中,整体CPU报告为3%,但mysqld进程报告为57%。 这是整个3%的57%,因此mysqld只使用了大约1.5%的CPU?

顶部截图http://img.skitch.com/20090620-cih33piwnnrke6aw41y9p1phwr.jpg

更新 :下面的评论者要求我按'1'键并发布结果: 1键http://img.skitch.com/20090620-gayja43s44qtw2wkw4aq642e8c.jpg

57.6%意味着mysqld使用一个cpu的.576。 差异可能是整个系统的数据收集和收集每个过程数据之间的竞争条件。

编辑:基于你的更新看起来像你有16个核心。

57.5% => .575/16 = .036 = 3.6%. 

所以这就是你的3%来自哪里

如果将所有的闲置百分比加在一起,从1600%减去,那么也就是57.5%。

你可以尝试按顶部运行时的数字1,看看会发生什么。

编辑:

未知先生说得好。

顶部是“如果你有一个CPU核心,这将是57.5%的繁忙”。

但你有16个核心。 所以这个57这个数字遍布全国各地,mysqld是multithreading的,一切都…

有点混乱。 但是我认为这是因为top会发现每个核心的信息显示都比较困难…想象一下16个或更多内核的顶级信息行!

另外,如果你加起来所有的“%us”CPU时间

 1.7+1.0+2.3+1.0+7.4+11.1+15.1+8.7 = 48.3 48.3/16 = 3.01875 

这是3%的数字来自…

有没有人推荐htop ? 这并不是说这个问题比以前的答案更有帮助,但是我觉得htop我会看到有人还在使用top

我不知道你的顶端是否合并了你拥有的任何多个CPU,但是这样做还是没有多大意义。

可能发生的情况是,top不能同时获得每个进程的值和总CPU使用率。 在读取进程信息和读取全局信息之间,mysql可能已经停止或开始使用大量的CPU。 这可能只是一个简单的竞赛条件。

当然,这可能发生的时间已经足够长了,所以我猜测这可能只是顶级或内核会计中的一个奇怪的错误。

us:用户空间 – 你在内核上运行的是什么sy:系统调用 – 内核中运行的是什么ni:reniced进程id:空闲wa:等待I / O hi:硬件中断 – 花费多less时间处理硬件si:软件中断 – 花费多less时间处理软件创build的中断(系统调用等)