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

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

Сообщение Anonymous »

Я разрабатываю систему мониторинга ресурсов для игры, используя 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?
< /li>
Можно ли каким-либо образом учитывать «логические процессоры» и ядра, на которых выполняется процесс, для получения более точных показаний?
< /li>
Предоставляет ли OSHI возможность идентифицировать ядра, которые использует процесс, и рассчитывать загрузку ЦП на основе этих конкретных ядер?


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

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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