top命令CPU使用率计算

时间:2009-02-16 11:14:30

标签: linux cpu gnu-coreutils top-command

我正在尝试使用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 :(得分:6)

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

当你加一半除数时,这相当于一个浮点除法,如果小数部分为0.5或更大,则向上舍入。