2013-01-22 55 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.*)))