2013-01-22 58 views
0

这是一个棘手的问题。我试图在某个时间点绘制CPU使用率的百分比。要做到这一点,我把样品从/proc/stat - 这是绝对的样品,他们看起来是这样的:Graphite plot CPU使用率

app01.cpu.total.user 45997117 1358816118 
app01.cpu.total.nice 165511   1358816118 
app01.cpu.total.system 36679893 1358816118 
app01.cpu.total.idle 3519926642 1358816118 
app01.cpu.total.iowait 3854916   1358816118 
app01.cpu.total.irq 2553   1358816118 
app01.cpu.total.softirq 189828   1358816118 
app01.cpu.total.steal 4497297   1358816118 
app01.cpu.total.guest 0   1358816118 

功能我用显示这些是:

scale(divideSeries(stats.app01.cpu.total.user,sumSeries(stats.app01.cpu.total.*)), 100) 

哪些应该基本上显示导致百分比。我注意到,我得到相同的结果时,我绘制这样的图表:

asPercent(stats.app01.cpu.total.user,sumSeries(stats.app01.cpu.total.*)) 

我这个问题是,我注意到,曲线在不断增加 - 由微小的一部分,但它的增长 - 我可以真的不明白为什么。事实上,它应该是相当平坦的,并且取决于采样时CPU的使用情况而下降和增长。我当然不会期望增长的趋势。但我可能会错过一些东西,因此我在这里寻求帮助。

回答

4

/proc/stat报告的值是系统第一次引导后各类工作中CPU时间总量的度量。为了在某​​个时间点获得CPU活动的度量值,您需要获取这些值的导数。

asPercent(derivative(stats.app01.cpu.total.user), 
      sumSeries(derivative(stats.app01.cpu.total.*)))