top 命令的 CPU 使用率计算

Posted

技术标签:

【中文标题】top 命令的 CPU 使用率计算【英文标题】:top command's CPU usage calculation 【发布时间】:2010-10-07 20:49:45 【问题描述】:

我正在尝试使用 GNU coreutil top 的公式来计算 CPU 使用率的百分比。 但是 top 是使用一些 half_total 来计算百分比,即百分比加 0.5。

在top的source的utils.c中,下面一行(在3.8 beta1,在行号:459):-

*out++ = (int)((*diffs++ * 1000 + half_total) / total_change);

这转化为: ( (*diffs++ * 1000) / total_change ) + 1/2 因此,它总是给出一个数字,即:“10 倍百分比,加上 0.5”。所以如果百分比是x,它将返回10x+0.5。

谁能解释这个平均值是如何计算的?或者至少是一些我可以得到帮助的指针?

PS: 为什么我们不能只使用(*diffs++/total_change) * 100 来获得所需的百分比?

Top的源代码位于:- http://downloads.sourceforge.net/unixtop/top-3.8beta1.tar.gz?modtime=1210117842&big_mirror=0

【问题讨论】:

【参考方案1】:

这是对整数值进行四舍五入的方法,因为除法会丢弃小数部分。

当您将除数的一半相加时,这相当于浮点除法,如果小数部分为 0.5 或更大,则四舍五入。

【讨论】:

但是“10x”部分呢? 因为这个值是百分之一。

以上是关于top 命令的 CPU 使用率计算的主要内容,如果未能解决你的问题,请参考以下文章

Linux监视CPUGPU使用情况

Linux监视CPUGPU使用情况

Linux监视CPUGPU使用情况

Load和CPU利用率

Load和CPU利用率

Load和CPU利用率