Как точно рассчитать загрузку процессора процессом с помощью OSHI по сравнению с диспетчером задач? ⇐ JAVA

Программисты JAVA общаются здесь
Anonymous
Как точно рассчитать загрузку процессора процессом с помощью OSHI по сравнению с диспетчером задач?

Сообщение Anonymous »

osProcess Я разрабатываю систему мониторинга ресурсов для игры, используя LibGDX и библиотеку OSHI для получения информации об использовании процессора и памяти. Однако я сталкиваюсь с проблемами при сравнении значений использования ЦП, возвращаемых OSHI API, со значениями, показанными в диспетчере задач Windows.
В настоящее время я использую метод getProcessCpuLoadCumulative() для получить совокупное использование ЦП процессом, но возвращаемые значения значительно отличаются от значений, отображаемых в диспетчере задач. Я попробовал несколько подходов, но так и не смог получить совпадающие значения.
Вот код, который я использую для расчета использования ЦП:

Код: Выделить всё

public String getCPU() {
lastCPUCheckTime += Gdx.graphics.getDeltaTime();
if (lastCPUCheckTime >= UPDATE_INTERVAL) {
lastCPUCheckTime = 0;

// Get current process info
osProcess = operatingSystem.getProcess(operatingSystem.getProcessId());

// Get cumulative CPU usage
double cpuUsage = osProcess.getProcessCpuLoadCumulative(osProcess) * 100;

cachedCPU = String.format("%.2f%%", cpuUsage);
}
return cachedCPU;
}
Проблема в том, что значение ЦП, возвращаемое функцией getProcessCpuLoadCumulative(), не синхронизировано с тем, что я вижу в диспетчере задач. Например, хотя Диспетчер задач показывает загрузку ЦП моим процессом около 30%, значение, полученное через OSHI, может быть значительно ниже или выше.
Вопросы:
Как правильно рассчитать загрузку ЦП конкретным процессом с помощью OSHI, чтобы значение соответствовало значению, отображаемому в диспетчере задач Windows?
Есть ли какой-либо способ учесть «логические процессоры» и ядра, на которых выполняется процесс, для получения более точных показаний?
Предоставляет ли OSHI способ идентифицировать ядра, которые использует процесс, и рассчитывать загрузку ЦП на основе на этих конкретных ядрах?

Подробнее здесь: https://stackoverflow.com/questions/791 ... to-task-ma

Вернуться в «JAVA»