这有点棘手。我试图在某个时间点绘制CPU使用百分比。为此,我从/proc/stat
获取样本 - 这些是绝对样本,它们看起来像这样:
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使用率而下降和增长。我当然不希望有增长的趋势。但是我可能会遗漏一些东西因此我会转向这里寻求帮助。
答案 0 :(得分:4)
/proc/stat
报告的值是自系统首次启动以来每类工作所花费的CPU时间总量的度量。为了测量某个时间点的CPU活动,您需要获取这些值的导数。
asPercent(derivative(stats.app01.cpu.total.user),
sumSeries(derivative(stats.app01.cpu.total.*)))