Использование Sigar API для получения загрузки процессора JVM
Я использую Sigar, чтобы получить информацию о загрузке ЦП текущей запущенной JVM на сервере приложений и сохранить ее для исторического просмотра этих данных, но я всегда получаю 0% загрузки ЦП.
В то же время я держу свой VisualVM открытым для мониторинга использования процессора, и я вижу, как периодически% CPU изменяется в visualVM, в то время как он всегда сообщает 0% с помощью Sigar.
Вот код, который я периодически запускаю:
Sigar sigar = new Sigar();
ProcCpu cpu = null;
long pId = sigar.getPid(); // This one gives me the same process ID that I see in visualVM
try {
cpu = sigar.getProcCpu(pId);
}
catch (SigarException se) {
se.printStackTrace();
}
System.out.print(cpu.getPercent());
Этот код всегда дает 0%.
Что я делаю не так в этом случае? Как я могу заставить Sigar отображать загрузку процессора, аналогичную загрузке, отображаемой в VisualVM?
Я пытался добавить
cpu.gather(sigar, pId);
после вызова getProcCpu (pid), но я продолжаю получать только два значения (0.0 и 9.08729312E-315), даже если я продолжаю увеличивать и уменьшать нагрузку на сервер ...