CPUの使用率のグラフからSoftIRQ(Software interrupts)が抜けてしまっていたので追加して、いくつか修正を加えた。

softirq_cpu2.png

↑午前2時ぐらいからちゃんとでるようになってる。通信が多いサーバではインパクトがある変更かもしれません。

Net-SNMP(UCD-SNMP-MIB)のCPU使用率に関する項目は

  • UCD-SNMP-MIB::ssCpuRawUser.0 = Counter32: 428160510
  • UCD-SNMP-MIB::ssCpuRawNice.0 = Counter32: 381268
  • UCD-SNMP-MIB::ssCpuRawSystem.0 = Counter32: 95049839
  • UCD-SNMP-MIB::ssCpuRawIdle.0 = Counter32: 1753791119
  • UCD-SNMP-MIB::ssCpuRawWait.0 = Counter32: 5234407
  • UCD-SNMP-MIB::ssCpuRawKernel.0 = Counter32: 94121787
  • UCD-SNMP-MIB::ssCpuRawInterrupt.0 = Counter32: 256622
  • UCD-SNMP-MIB::ssCpuRawSoftIRQ.0 = Counter32: 671430

これだけあります。Linux では /proc/stat を参照していて、

cpu  428160511 381268 94121788 1753791119 5234407 256622 671430
     user      nice   system   idle       iowait  intr   soft

と関連付けられます。

各項目について調べていると、 ssCpuRawSystem が system + iowait + interrupts + softirq の合計値という説明をみますが、これは新しいNet-SNMPでは間違った説明です。Net-SNMP 5.4 からは ssCpuRawSystemが system の数値となり、sCpuRawKernelは常に「0」と表示されます。(Linux 2.6系において)

そこでssCpuRawKernelを捨ててグラフを作ればいいと思ったのですが、残念なことに CentOS5系はまだ Net-SNMP 5.3系。仕方がないのでCloudForecastではNet-SNMPのバージョンを取得し、5.4以上かどうかで処理を分けるようにしました。

グラフ上の項目とMIBは、5.3以下では

  • User => ssCpuRawUser
  • Nice => ssCpuRawNice
  • System => ssCpuRawKernel
  • Idle => ssCpuRawIdle
  • Wait => ssCpuRawWait
  • Intr => ssCpuRawInterrupt
  • SoftIRQ => ssCpuRawSoftIRQ

となり、5.4以上では

  • User => ssCpuRawUser
  • Nice => ssCpuRawNice
  • System => ssCpuRawSystem
  • Idle => ssCpuRawIdle
  • Wait => ssCpuRawWait
  • Intr => ssCpuRawInterrupt
  • SoftIRQ => ssCpuRawSoftIRQ

となっています。


この実装をするにあたり、CloudForecastのプラグインにあとからRRDの項目を追加する機構をいれました。追加データ1つにつき新しいRRDファイルが一個できます。これまではRRDファイルを一度作ってしまうと項目を足す事ができず、最初の設計で悩むことが多かったのですが、これで監視項目の追加もずいぶん楽になりました。使い方は CloudForecast::Data::Basic を参考にして頂けたらと思います。

このブログ記事について

このページは、Masahiro Naganoが2012年6月 7日 23:55に書いたブログ記事です。

ひとつ前のブログ記事は「GrowthForecast のデータストアに MySQL が使えるようになりました」です。

次のブログ記事は「SQLite のパフォーマンスチューニング、または DBIx::Sunny 0.16 の話」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

OpenID対応しています OpenIDについて
Powered by Movable Type 4.27-ja