Skip to content

Latest commit

 

History

History
52 lines (35 loc) · 2.96 KB

File metadata and controls

52 lines (35 loc) · 2.96 KB

Как получить общее использование ЦП приложения из /proc/pid/stat?

Источник: Как получить общее использование ЦП приложения из /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)

proc cpu