Java получает процент использования процессора ядрами - PullRequest
0 голосов
/ 05 июня 2018

Я хочу получить общее использование процессора всеми ядрами.Мне нужно напечатать что-то вроде этого:

Cpu 1: 33%
Cpu 2: 12%
Cpu 3: 66%
Cpu 4: 100%

Я пытался использовать этот код:

OperatingSystemMXBean operatingSystemMXBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
int availableProcessors = operatingSystemMXBean.getAvailableProcessors();
long prevUpTime = runtimeMXBean.getUptime();
long prevProcessCpuTime = operatingSystemMXBean.getProcessCpuTime();
double cpuUsage;
try
{
    Thread.sleep(500);
}
catch (Exception ignored) { }

operatingSystemMXBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
long upTime = runtimeMXBean.getUptime();
long processCpuTime = operatingSystemMXBean.getProcessCpuTime();
long elapsedCpu = processCpuTime - prevProcessCpuTime;
long elapsedTime = upTime - prevUpTime;

cpuUsage = Math.min(99F, elapsedCpu / (elapsedTime * 10000F * availableProcessors));
System.out.println("Java CPU: " + cpuUsage);

Но этот код дает мне вывод, как это: Java CPU: 27.504911422729492.Может ли кто-нибудь помочь мне с этим?

1 Ответ

0 голосов
/ 05 июня 2018

JavaSysMon использует подход, специфичный для ОС, например, в Linux он анализирует /proc/cpuinfo для перечисления ядер.Для фактического использования ядра процессора он анализирует файл /proc/stat (см. LinuxMonitor ).

...