高機能なTV会議システムであるSOBA mierukaとSOBA CITYはJavaと言うプログラム言語で作成されています。
開発の中で少し、CPUの負荷を取得したいと思って調べてみましたが、なかなか良い情報が得られなかったので、今回のエントリーはいつもと趣旨を変更して、javaプログラムでcpu負荷を取得する方法を紹介したいと思います。
とは言ってもwindows全般のCPU負荷ではなく、javaプロセスのcpu負荷を取得しますので、ご注意下さい。
class Sample extends TimerTask{
com.sun.management.OperatingSystemMXBean result = (com.sun.management.OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean();
long prevUpTime;
long prevProcessCpuTime;
@Override
public void run() {
if (bean.getUptime() > prevUpTime) {
long elapsedCpu = result.getProcessCpuTime() – prevProcessCpuTime;
long elapsedTime = bean.getUptime() – prevUpTime;
float cpuUsage =
Math.min(99F,elapsedCpu / (elapsedTime * 10000F * result.getAvailableProcessors()));
System.out.println(cpuUsage);
prevProcessCpuTime = result.getProcessCpuTime();
prevUpTime = bean.getUptime();
}
}
}
う~ん改行がうまくいかないですね。