在下面的屏幕截图中,整体 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
在下面的屏幕截图中,整体 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 正在使用 0.576 个 cpu。差异可能是整个系统的数据收集与收集每个进程数据之间的竞争条件。
编辑:根据您的更新,您似乎有 16 个核心。
这就是你的 3% 的来源。
如果将所有空闲百分比相加并从 1600% 中减去,则结果也约为 57.5%。
您可以尝试在 top 运行时按数字 1 看看会发生什么。
编辑:
无名先生说得好。
top 是在说“如果你有一个 CPU 内核,那么它的繁忙率为 57.5%。”
但是你有 16 个核心。所以这个 57 数字分布在各处,mysqld 是多线程的,一切都......
有点混乱。但我认为这是因为 top 会发现显示每个核心的信息更加困难......想象一个具有 16 个或更多核心的 top 信息行!
此外,如果您将所有“%us”CPU 时间加起来
这就是 3% 数字的来源……
有没有人推荐
htop
?并不是说它比以前的答案更能帮助解决这个特定问题,但我觉得有义务在htop
我看到有人仍在使用时提及top
!我不知道您的顶部是否正在合并您拥有的任何多个 CPU,但这仍然没有多大意义。
可能发生的情况是 top 不会同时获得每个进程的值和总 CPU 使用率。在读取进程信息和读取全局信息之间,有一小段时间 mysql 可能已经停止或开始使用大量 CPU。这很可能只是一个简单的竞争条件。
当然,这必须发生足够长的时间才能让您注意到,所以我猜这可能只是顶部某处的一个奇怪的错误或内核的会计。
us: 用户空间 - 你在内核之上运行什么 sy: 系统调用 - 内核内部运行什么 ni: reniced 进程 id: 空闲 wa: 等待 i/o hi: 硬件中断 - 处理硬件花费了多少时间si:软件中断 - 处理软件创建的中断(系统调用等)花费了多少时间