Я пытаюсь создать программу на C / C ++, которая будет вести себя как топ-команда в Linux.Я провел некоторые исследования и уже знал, как подсчитать загрузку ЦП процесса.Мы можем получить использование процессора, вычислив stime + utime из / proc / [PID] / stat в текущее время и через несколько секунд.Затем вычислите различия между временем и временем и разделите результат на разницу времени безотказной работы, после чего мы получим процент использования ЦП.Это будет так просто на одном процессе / многопоточном процессе.
Проблема в случае, подобном httpd, где он работает как многопроцессорный.Когда веб-сервер занят, httpd разветвляет дочерние процессы для обслуживания группы запросов.Затем я подсчитываю общее количество процессов, скажем, 500. Я хочу рассчитать использование ЦП этих процессов, но суммировать их, чтобы я увидел только 1 httpd Использование ЦП.Но если я сделаю алгоритм, как я упоминал выше, когда число процессов уменьшится до <500 через несколько секунд, я получу отрицательные значения, так как вычисление будет таким (например, я выбираю случайное число, просто чтобыдать вам краткое описание): </p>
Uptime: 155123, No of processes : 500, Stime + Utime total of 500 processes : 3887481923874
Uptime: 155545, No of processes : 390, Stime + Utime total of 390 processes : 2887123343874
Если вы посмотрите на пример выше, дельта Stime + Utime приведет к отрицательному значению, так как число процессов уменьшается, и даст меньшее значение через несколько миллисекунд,Я просто хочу знать, есть ли другой способ рассчитать такой процесс поведения, как это?Спасибо.