Я новичок в cgroups и пытаюсь получить статистику контейнера с помощью cgroups. Раньше я использовал docker stats
, но пытался собрать аналогичные метрики и с cgroups
.
В статистике докера раздел статистики процессора выглядит следующим образом:
"cpu_usage": {
"total_usage": 27120642519,
"percpu_usage": [27120642519],
"usage_in_kernelmode": 4550000000,
"usage_in_usermode": 19140000000
},
"system_cpu_usage": 42803030000000,
И метрика % процессора рассчитывается с использованием приведенного ниже уравнения:
cpuDelta = float64(v.CpuStats.CpuUsage.TotalUsage - previousCPU)
systemDelta = float64(v.CpuStats.SystemUsage - previousSystem)
cpuPct = cpuDelta/systemDelta
Я ищу контрольные группы для сбора systemUsage
и totalUsage
, но, похоже, у них нет похожих показателей:
cgroups имеет псевдофайл cpuacct.stats, в котором есть галочки user
и system
, но они совпадают только с usage_in_user_mode
и usage_in_kernel_mode
из вывода docker stats
.
и псевдофайл cpuacct.usage_per_cpu имеет использование на процессор, что соответствует total_usage
из выходных данных статистики докера выше.
$cat cpuacct.stat
user 1914
system 455
$cat cpuacct.usage_percpu
27120642519
Но я не мог найти способа выяснить, как собрать «systemUsage» из cgroups.
Любые наводки будут очень полезны!
Спасибо!