2009-02-16 103 views
6

我想用GNU coreutil top的公式来计算CPU使用率的百分比。 但是,顶部正在使用一些half_total来计算百分比,即将百分比加0.5。top命令的CPU使用率计算

在顶部的source的utils.c,以下行(在3.8β1,它是在行号:459): -

*总分++ =(int)的((* diff文件++ * 1000 + half_total)/ total_change);

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

任何人都可以解释这个平均值是如何计算的?或至少有一些指针,我可以得到帮助?

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

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

回答

6

这是做整数值四舍五入的方式,因为分工丢弃小数部分。

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

+0

但是“10x”部分呢? – Sabya 2009-02-16 11:27:00