top命令的CPU使用率计算

6
我想使用GNU coreutil top的公式来计算CPU使用率百分比。但是top使用了一些half_total,用于计算百分比,它会将0.5添加到百分比中。
在top的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个回答

6

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

当您加上一半的除数时,相当于进行浮点数除法并在小数部分大于或等于0.5时向上舍入。


但是"10x"部分呢? - Sabya
因为该值是以千分之一的百分比表示的。 - starblue

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接