Usando a API Sigar para obter o uso da CPU da JVM
Estou usando o Sigar para obter o uso da CPU da JVM atual em execução em um servidor de aplicativos e armazená-lo para visualização histórica desses dados, mas sempre obtenho 0% de porcentagem da CPU.
Enquanto isso, mantenho minha visualVM aberta para monitorar o uso da CPU, e vejo a porcentagem da CPU mudando periodicamente em visualVM enquanto ela sempre reporta 0% usando Sigar.
Aqui está o código que estou executando periodicamente:
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());
Este código sempre dá 0%.
O que estou fazendo errado neste caso? Como posso obter Sigar para exibir o uso da CPU semelhante ao uso exibido no VisualVM?
Tentei adicionar
cpu.gather(sigar, pId);
depois de chamar getProcCpu (pid), mas eu continuo recebendo apenas dois valores (0.0 e 9.08729312E-315), mesmo se eu continuar aumentando e diminuindo a carga no servidor ...