torutkのブログ

ソフトウェア・エンジニアのブログ

Javaプログラム中からCPU使用率を取る

前世紀からの課題の一つ。JNIを使ってネイティブメソッドを作るのが当初の解決策でした。

SNMPを使って取得するという案もあるかなぁと思って数年が経過していました。

その後、JMXでSunのJava実行系では、プロセスのCPU使用率が取れるようになっています(jconsoleでグラフ表示あり)。ただ、これは接続したJavaプログラムのプロセスが使用したCPU使用率であり、システムのCPU使用率ではありません。

日経バイトが昨年廃刊になったときに、定期購読の残金を日経NETWORK購読に回していました。2006.9の特集記事「速習SNMP」を読んで、SNMPをかじってみると、MIBツリーの中にCPU使用率っぽいカウンタをいくつか見つけました。

  • ssCpuUser
  • ssCpuSystem
  • ssCpuIdle

また、SNMP関係のWebを見ていると、

  • laLoad

をCPU使用率(負荷)として使用しているものがありました。

このあたりから、すこし調査してみようと思います。