4

LinuxでCPUを(とりわけ)監視するために使用するJava監視アプリケーションがあります。

プロセスの CPU 使用率を取得するために Sigar を使用しています。 http://cpansearch.perl.org/src/DOUGM/hyperic-sigar-1.6.3-src/docs/javadoc/org/hyperic/sigar/Sigar.html#getProcCpu%28long%29

ただし、これはプロセス レベルにすぎません。htop は、アプリケーション内のスレッドと、それぞれが使用している CPU の割合を示しています。

Sigarでそれを行うことは可能ですか?

マルチコア ボックスを使用している場合、コアごとの CPU 使用率を取得できますか?

CPU が長時間 100% で実行されている場合にアラートを出し、スレッド リストで原因の可能性があるものを特定したいと考えています。

4

1 に答える 1

0

JMX を使用して Java ランタイムからこの情報を取得できますが、CPU 負荷は標準の Java API の一部ではないようで、次のようにキャストする必要がありますcom.sun.management.OperatingSystemMXBean

OperatingSystemMXBean osBean = ManagementFactory.getOperatingSystemMXBean();
double loadAverage = osBean.getSystemLoadAverage();
System.out.println("Load average: " + loadAverage);

if (osBean instanceof com.sun.management.OperatingSystemMXBean)
{
    com.sun.management.OperatingSystemMXBean sunOsBean = (com.sun.management.OperatingSystemMXBean)osBean;
    double cpuLoad = sunOsBean.getSystemCpuLoad();
    System.out.println("CPU load: " + cpuLoad);
}
于 2014-06-11T22:32:58.003 に答える