Поиск по сайту:

Cpustat — отслеживает загрузку процессора путем запуска процессов в Linux


Cpustat — мощная программа измерения производительности системы для Linux, написанная с использованием языка программирования Go. Он пытается эффективно выявить загрузку и насыщенность ЦП, используя метод «Насыщение использования и ошибки» (USE) (методология анализа производительности любой системы).

Он извлекает выборки с более высокой частотой каждого процесса, выполняемого в системе, а затем суммирует эти выборки с более низкой частотой. Например, он может измерять каждый процесс каждые 200 мс и суммировать эти выборки каждые 5 секунд, включая минимальные, средние и максимальные значения для определенных показателей.

Рекомендуется к прочтению: 20 инструментов командной строки для мониторинга производительности Linux

Cpustat выводит данные двумя возможными способами: в виде простого текстового списка суммарного интервала и красочной панели с прокруткой для каждой выборки.

Как установить Cpustat в Linux

Чтобы использовать cpustat, в вашей системе Linux должен быть установлен Go (GoLang). Нажмите ссылку ниже, чтобы выполнить шаги по установке GoLang, если у вас его нет. он установил:

  1. Установите GoLang (язык программирования Go) в Linux

После установки Go введите команду go get ниже, чтобы установить его. Эта команда установит двоичный файл cpustat в ваш GOBIN. переменная:

go get github.com/uber-common/cpustat

Как использовать Cpustat в Linux

Когда процесс установки завершится, запустите cpustat следующим образом с правами root, используя команду sudo, если вы управляете системой как пользователь без полномочий root, в противном случае вы получите следующую ошибку:

$GOBIN/cpustat
This program uses the netlink taskstats interface, so it must be run as root.

Примечание. Чтобы запустить cpustat, а также все другие программы Go, установленные в вашей системе, как и любые другие команды, включите GOBIN в переменной среды PATH. Откройте ссылку ниже, чтобы узнать, как установить переменную PATH в Linux.

  1. Узнайте, как навсегда установить переменные PATH ` в Linux

Вот как работает cpustat; каталог /proc запрашивается для получения текущего списка идентификаторов процессов для каждого интервала и:

  • для каждого PID прочитайте /proc/pid/stat, затем вычислите разницу с предыдущим примером.
  • если это новый PID, прочитайте /proc/pid/cmdline.
  • для каждого PID отправьте сообщение netlink, чтобы получить статистику задач и вычислить разницу с предыдущим примером.
  • выберите /proc/stat, чтобы получить общую статистику системы.

Опять же, каждый интервал сна корректируется с учетом количества времени, затраченного на получение всех этих статистических данных. Кроме того, для каждой выборки также фиксируется время, необходимое для масштабирования каждого измерения по фактическому времени, прошедшему между выборками. Это попытка учесть задержки в самом cpustat.

При запуске без каких-либо аргументов cpustat по умолчанию отображает следующее: интервал выборки: 200 мс, суммарный интервал: 2 с (10 выборок), отображаются 10 частых процессов, пользовательский фильтр: все, pid-фильтр: все как показано на скриншоте ниже:

sudo $GOBIN/cpustat 

Из приведенного выше вывода следует следующее: значения общесистемных сводных показателей, отображаемых перед полями:

  • usr – минимальное/среднее/максимальное время работы в пользовательском режиме в процентах от процессора.
  • sys – минимальное/среднее/максимальное время работы в системном режиме в процентах от процессора.
  • nice – минимальное/среднее/максимальное время работы в пользовательском режиме с низким приоритетом в процентах от процессора.
  • idle – минимальное/среднее/максимальное время работы в пользовательском режиме в процентах от процессорного времени.
  • iowait – минимальное/среднее/максимальное время задержки ожидания дискового ввода-вывода.
  • prun – минимальное/среднее/максимальное количество процессов в работоспособном состоянии (аналогично средней нагрузке).
  • pblock – минимальное/среднее/максимальное количество процессов, заблокированных при дисковом вводе-выводе.
  • pstart – количество процессов/потоков, запущенных за этот суммарный интервал.

Тем не менее, судя по приведенному выше выводу, для данного процесса разные столбцы означают:

  • имя – общее имя процесса из /proc/pid/stat или /proc/pid/cmdline.
  • pid – идентификатор процесса, также называемый «tgid».
  • min – наименьшая выборка пользовательского+системного времени для pid, измеренная из /proc/pid/stat. Масштаб — это процент процессора.
  • max – наивысшая выборка времени пользователя и системы для этого pid, также измеренная из /proc/pid/stat.
  • usr — среднее время пользователя для pid за суммарный период, измеренное из /proc/pid/stat.
  • sys — среднее системное время для pid за суммарный период, измеренное из /proc/pid/stat.
  • nice — указывает текущее значение «nice» для процесса, измеренное из /proc/pid/stat. Выше означает «лучше».
  • runq – время, в течение которого процесс и все его потоки оставались работоспособными, но ожидали запуска, измеряется на основе статистики задач через netlink. Масштаб — это процент процессора.
  • iow – время, в течение которого процесс и все его потоки были заблокированы дисковым вводом-выводом, измеренное на основе статистики задач через netlink. Масштаб — это процент использования ЦП, усредненный за суммарный интервал.
  • swap — время, затраченное процессом и всеми его потоками на ожидание замены, измеренное на основе статистики задач через netlink. Масштаб — это процент использования ЦП, усредненный за суммарный интервал.
  • vcx и icx – общее количество добровольных переключений контекста процессом и всеми его потоками за суммарный интервал, измеренное на основе статистики задач через netlink.
  • rss – текущее значение RSS, полученное из /proc/pid/stat. Это объем памяти, который использует этот процесс.
  • ctime — сумма времени процессора пользователя+sys, затраченного ожидающими дочерними процессами, которые завершили работу в течение этого суммарного интервала, измеренная из /proc/pid/stat.

Обратите внимание, что длительные дочерние процессы часто могут сбить с толку это измерение, поскольку время сообщается только тогда, когда дочерний процесс завершается. Однако это полезно для измерения влияния частых заданий cron и проверок работоспособности, когда время ЦП часто потребляется многими дочерними процессами.

  • thrd — количество потоков в конце суммарного интервала, измеренное из /proc/pid/stat.
  • sam – количество выборок для этого процесса, включенных в суммарный интервал. Процессы, которые недавно были запущены или завершились, могли быть видны для меньшего количества выборок, чем суммарный интервал.

Следующая команда отображает 10 основных процессов пользователя root, запущенных в системе:

sudo $GOBIN/cpustat -u root

Чтобы отобразить вывод в необычном режиме терминала, используйте флаг -t следующим образом:

sudo $GOBIN/cpustat -u roo -t

Чтобы просмотреть наибольшее количество процессов x (по умолчанию — 10), вы можете использовать флаг -n. Следующая команда показывает 20 самых популярных процессов Linux, запущенных в системе:

sudo $GOBIN/cpustat -n 20 

Вы также можете записать профиль ЦП в файл, используя параметр -cpuprofile, как показано ниже, а затем использовать команду cat для просмотра файла:

sudo $GOBIN/cpustat -cpuprofile cpuprof.txt
cat cpuprof.txt

Чтобы отобразить справочную информацию, используйте флаг -h следующим образом:

sudo $GOBIN/cpustat -h

Дополнительную информацию можно найти в репозитории cpustat на Github: https://github.com/uber-common/cpustat.

Вот и все! В этой статье мы показали вам, как установить и использовать cpustat, полезный инструмент для измерения производительности системы для Linux. Поделитесь с нами своими мыслями в разделе комментариев ниже.