2015-11-08 5 views
1

Я использую API удаленных API для загрузки статистики моих запущенных контейнеров. Для использования ЦП я получаю, например, следующее:Использование процессора Docker Container

"cpu_stats": { 
    "cpu_usage": { 
     "total_usage": 13039191340, 
     "percpu_usage": [ 
     13039191340 
     ], 
     "usage_in_kernelmode": 420000000, 
     "usage_in_usermode": 10480000000 
    }, 
    "system_cpu_usage": 8.8930204e+14, 
    "throttling_data": { 
     "periods": 0, 
     "throttled_periods": 0, 
     "throttled_time": 0 
    } 
    } 

Как рассчитать использование ЦП в процентах? Когда я делю «usage_in_kernelmode» на «total_usage», я получаю аналогичный результат с командой docker stats, но это правильный способ сделать это?

Спасибо :)

ответ

3

В конечном счете, все сводится к тому, что процессор использования вы хотите измерить.

Условия использования находятся в циклах. Циклы пользователей - это те, которые тратятся на выполнение приложений, включая системные приложения (например, демоны), выполняемые в пользовательском пространстве. Циклы ядра - это те, которые были потрачены на выполнение basic ОС или функции драйвера. Неосновные функции ОС выполняются в пространстве пользователя. Неучтенные для циклов, вероятно, неработающие циклы, те, которые потратили ничего полезного.

Таким образом, общий процент использования процессора (ядро + пользователь)/(idle + kernel + user) * 100. Использование пользовательского процессора (пользователь))/(idle + kernel + user) * 100. И вы можете угадать уравнение для использования системы%.

system_cpu_usage головоломки меня. Если он вместо total_usage относится к общим циклам, замените (idle + kernel + user) на это. Что меня озадачивает, если system_cpu_usage - это общее использование, то что такое черта total_usage?

+0

Эй, спасибо Тейлору :) Я понял это, наконец, но только просмотрев код статистики докеров: D «total_usage», кажется, время вычисления моего приложения/контейнера. Вы получаете другое свойство «precpu_stats», которое выглядит точно так же, как «cpu_stats», но показатели относятся к предыдущему тику. Затем я могу вычислить delta-total_usage и delta-system_usage, а окончательное решение - percent = (delta-total_usage/delta-system_usage) * percpu_usage.length * 100.0 – nxrd

+0

Спасибо, что сообщили нам. –

Смежные вопросы