Я бы посоветовал вам использовать утилиту vmstat для измерения нагрузки на процессор и ps для измерения загрузки процессора на процесс.
К сожалению, я точно не помню параметры командной строки, которые вы должны отправить, но я уверен, что вы сможете легко найти их сами.
Я реализовал аналогичную задачу несколько лет назад.Я запустил vmstat (с необходимыми параметрами командной строки) в фоновом режиме и прочитал его вывод.Итак, у меня было общее использование процессора и памяти.Кстати, vmstat «знает», что нужно периодически запускаться, поэтому вам даже не нужно реализовывать свой собственный цикл.Дополнительно я запустил ps (с необходимыми параметрами), чтобы измерить процессор интересного процесса
Итог: здесь 10% сценариев Java и 90% сценариев оболочки.
И последнее примечание.Общее использование ЦП может быть обнаружено с использованием чистого Java: ManagementFactory.getOperatingSystemMXBean().getSystemLoadAverage()
Возвращает среднее значение загрузки системы за последнюю минуту.Таким образом, если вам подходит разрешение 1 мин, используйте это вместо vmstat.В противном случае vmstat - это ваше решение.