Как правильно спарсить вывод systemd-cgtop?

Здравствуйте!

Понадобилось собирать статистику по группам cgroups и рисовать графики.
Решил парсить вывод "systemd-cgtop -b -n 1", но возникла проблема - использование CPU начинает отображаться только со второго прохода (такая же ситуация, кстати, при парсинге обычного top).

"systemd-cgtop -b -n 2" - показывает то что нужно, но при перенаправлении вывода в файл, туда пишется только содержимое первого экрана.

Вопрос: как правильно парсить вывод таких программ? Буду благодарен за любые подсказки.
  • Вопрос задан
  • 52 просмотра
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
использование CPU начинает отображаться только со второго прохода (такая же ситуация, кстати, при парсинге обычного top

Это не проблема, это так работают счетчики - любая программа типа top или systemd-cgtop сперва считывает показания счетчиков, а через две секунды считывает их заново, получая среднестатистическую нагрузку на CPU, и по этому уже выводит инфу.
Найти нагрузку другим способом Линукс не предусматривает. Так же как и вытащить более детальное распределение слайсов времени по процессам.

systemd-cgtop -b -n 2
У меня попадает вроде оба экрана.

Вы можете попробовать разве что самостоятельно считывать сразу счетчики
читайте /proc/stat, /proc/sched_debug (возможно даже только его вам хватит), /proc_schedstat, вычислите какие цифры вам нужны и считывайте с той частотой, какая вам нужна.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы