Источник: Как получить общее использование ЦП приложения из /proc/pid/stat?
Чтобы вычислить использование ЦП для конкретного процесса, вам понадобится следующее:
/proc/uptime#1время работы системы (в секундах)
/proc/[PID]/stat#14 utime- время процессора, затрачиваемое на код пользователя, измеренное в тактовых импульсах#15 stime- время процессора, затрачиваемое на код ядра, измеренное в тактовых импульсах#16 cutime- Ожидаемое детскоевремя процессора, затрачиваемое на код пользователя (в часах)#17 cstime- Ожидаемое детскоевремя процессора, затраченное на код ядра (в тактах синхронизации)#22 starttime- время начала процесса, измеренное в тактовых импульсах
- Hertz (количество тактов в секунду) вашей системы.
- В большинстве случаев
getconf CLK_TCKможет использоваться для возврата количества тактов. sysconf(_SC_CLK_TCK)Вызов функции C может также использоваться для возврата значения герца.
- В большинстве случаев
Сначала мы определяем общее время, затрачиваемое на процесс:
total_time = utime + stime
Мы также должны решить, хотим ли мы включить время от дочерних процессов. Если мы это сделаем, добавим эти значения вtotal_time:
total_time = total_time + cutime + cstime
Затем мы получаем общее время, прошедшее с момента запуска процесса:
seconds = uptime - (starttime / Hertz)
Наконец, мы вычисляем процент использования ЦП:
cpu_usage = 100 * ((total_time / Hertz) / seconds)