Вычисление использования ЦП указанной функции c в контейнере без использования docker api? - PullRequest
1 голос
/ 14 июля 2020

Я просмотрел различные ссылки на переполнение стека, а также другие, и я нашел один шаблон или общий c способ расчета использования процессора. Одна из ссылок ниже

https://github.com/moncho/dry/blob/07244d36010d1029ee03bda29fa5aec6449ebf61/docker/stats.go#L168

Я пытаюсь вычислить то же самое, самостоятельно. Но кажется, что всякий раз, когда я вычисляю значение, оно даже не близко, может ли кто-нибудь проверить подход один раз? & Если нет, может ли кто-нибудь помочь мне с подходом?

Я хочу рассчитать процессор для определенного c временного интервала, просто чтобы привести пример. def something_get_execute () Я хочу рассчитать использование процессора только для этой c функции.

Для того же, что я делаю после этого, Получение значений для пользователя и системы отсюда:

/sys/fs/cgroup/cpu,cpuacct/cpuacct.stat

Перед выполнением функции и после ее выполнения. После этого я получаю дельту для контейнера, используя следующую формулу:

container_cpu_delta = (cpuacct.stat_final_user - cpuacct.stat_initial_user) / (cpuacct.stat_final_system - cpuacct_stat_initial_system)

Тем временем я делаю то же самое, чтобы получить значение для хоста до и после выполнения функции, я получаю значение для пользователя и системы из:

/proc/stat

grep в первой строке, и я получаю 1-й и 3-й параметры

cpu 205434 341 56826 3122952 48119 0 25640 0 0 0
i.e 205434 & 56826

И выполняю тот же расчет

host_cpu_delta = (proc_stat_final_user - proc_stat_init_user)/(proc_stat_final_system-proc_stat_init_user)

& Затем, наконец, я делаю

cpu_percentage = (container_cpu_delta/host_cpu_delta) * no_of_cores (am bit confused about this cores allocated to container or cores on the host)

Однако есть некоторые наблюдения:

Так много раз я видел разницу

(cpuacct.stat_final_user - cpuacct.stat_initial_user) 

т.е. контейнер больше

(proc_stat_final_user - proc_stat_init_user)

Host, что я буду чувствовать немного странно. Поскольку значения хоста также содержат цикл контейнера. Не знаете, какие ядра использовать при вычислении, процессор, выделенный контейнеру, или все процессоры на хосте? Все, что я делаю внутри контейнера, например, чтение всех значений. Пожалуйста, дайте мне знать, если что-то упущено в расчетах, это будет большим подспорьем.

Большое спасибо :)

...