我正在尝试使用 GNU coreutil top 的公式来计算 CPU 使用百分比。 但是 top 使用一些 half_total 来计算百分比,即在百分比上增加 0.5。
在顶部的 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。
谁能解释一下这个平均值是如何计算出来的?或者至少有一些我可以获得帮助的指示?
附言:
为什么我们不能只使用 (*diffs++/total_change) * 100
来获得所需的百分比?
Top 的源代码位于:- http://downloads.sourceforge.net/unixtop/top-3.8beta1.tar.gz?modtime=1210117842&big_mirror=0
最佳答案
这是对整数值进行舍入的方法,因为除法会丢弃小数部分。
当您添加除数的一半时,这相当于浮点除法,如果小数部分为 0.5 或更大则向上舍入。
关于linux - top命令的CPU使用率计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/552976/