2009-02-16 140 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