0

これは少しトリッキーです。特定の時点での使用率の割合で 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 使用率に応じて、かなりフラットで、減少したり増加したりしているはずです。私は確かに成長傾向を期待していません. しかし、私は何かを見逃しているかもしれないので、助けを求めてここに来ています。

4

1 に答える 1

4

によって報告される値は/proc/stat、システムが最初に起動されてから各カテゴリの作業に費やされた CPU 時間の合計の尺度です。ある時点での CPU アクティビティの測定値を取得するには、これらの値の導関数を取得する必要があります。

asPercent(derivative(stats.app01.cpu.total.user),
          sumSeries(derivative(stats.app01.cpu.total.*)))
于 2013-04-17T17:29:37.370 に答える