Какая команда в Linux показывает проценты загрузки CPU?
Комментарии (2)
Ответ сгенерирован нейросетью и может содержать ошибки
Анализ команд для мониторинга загрузки CPU в Linux
В Linux не существует какой-то одной команды, которая бы показывала только проценты загрузки CPU. Мониторинг нагрузки на процессор — это комплексная задача, и для её решения существует целый арсенал инструментов, каждый со своей спецификой. Важное замечание: ключевые показатели — это не один общий процент, а разбивка по типам нагрузки (пользовательские процессы, система, ожидание ввода-вывода и др.). Список основных команд, которые должен знать DevOps Engineer, представлен ниже.
Основные и наиболее часто используемые команды
1. top / htop
Это интерактивные мониторинговые утилиты, предоставляющие динамическую, обновляемую в реальном времени картину. top входит в базовый набор практически любого дистрибутива, а htop — его более удобный и наглядный наследник.
- В
topобщая строка загрузки CPU (например,%Cpu(s): 12.5 us, 6.2 sy, ...) показывает агрегированные проценты по всем ядрам с детализацией:
* **`us`** (user) — время выполнения пользовательских процессов.
* **`sy`** (system) — время выполнения процессов ядра.
* **`id`** (idle) — процент простоя.
* **`wa`** (wait) — время ожидания I/O.
* и другие (ni, hi, si, st).
- Пример запуска
topдля быстрого анализа:top -bn1 | grep "%Cpu"
Эта команда (-b — batch mode, -n1 — один цикл) выведет строку с загрузкой и завершит работу, что идеально для скриптов.
2. mpstat (из пакета sysstat)
Одна из лучших команд для детального анализа загрузки каждого CPU-ядра по отдельности. Показывает расширенную статистику, включая время работы на различных частотах, проценты прерываний и многое другое.
# Показать агрегированную статистику по всем ядрам (-P ALL) каждую секунду, 3 раза
mpstat -P ALL 1 3
Вывод будет содержать столбцы %user, %nice, %system, %iowait, %steal, %idle для каждого логического процессора.
3. vmstat
Команда дает сводную информацию не только о процессоре, но и о памяти, свопе, дисковом и прерываниях. Очень полезна для быстрой комплексной оценки.
# Вывод статистики каждую секунду
vmstat 1
Колонки, относящиеся к CPU:
r— количество процессов, ожидающих выполнения (runqueue).us,sy,id,wa,st— аналогичноtop, но в процентном соотношении.
Специализированные и современные инструменты
4. sar (System Activity Reporter, часть sysstat)
Мощнейший инструмент для сбора, архивации и анализа исторических данных, в том числе и по CPU. Как DevOps, вы часто будете использовать его для расследования инцидентов "задним числом", если настроен сбор статистики через cron.
# Показать среднюю загрузку CPU за текущий день
sar
# Показать детальную статистику за определенное время (например, с 10:00 до 11:00)
sar -P ALL -s 10:00:00 -e 11:00:00
5. pidstat
Показывает загрузку CPU не глобально, а в разрезе отдельных процессов и потоков. Незаменим для идентификации "прожорливых" процессов.
# Показать загрузку CPU по процессам каждые 2 секунды
pidstat -u 2
# Показать загрузку по отдельным потокам указанного процесса
pidstat -t -p <PID> 1
6. Использование файловой системы /proc
Вся информация ядра о системе доступна через виртуальную файловую систему /proc. Необработанные данные о CPU можно получить из /proc/stat. Это основа, на которой работают многие из перечисленных выше утилит.
# Посмотреть сырые данные по CPU
cat /proc/stat
# Первая строка 'cpu' показывает сводку по всем ядрам.
# Для расчета процентов загрузки в скриптах берут два снимка с интервалом, вычисляют разницу значений и делят на общее прошедшее время.
Рекомендации для DevOps Engineer
- Для интерактивного мониторинга вручную используйте
htop(удобнее) илиtop. - Для скриптов и автоматизации берите
mpstat -P ALL 1 1илиtop -bn1. Данные из/proc/stat— для кастомных низкоуровневых решений. - Для детального анализа в реальном времени на уровне процессов и потоков применяйте
pidstat. - Для расследования проблем после их возникновения — ваш лучший друг
sar(при условии работающегоsysstat). - Помните, что высокая загрузка CPU в
%user/%systemговорит о вычислительной нагрузке, а высокий%iowaitили%steal(в виртуальных средах) указывает на проблемы с дисками или конкуренцию за физические ресурсы на гипервизоре соответственно.
Таким образом, выбор конкретной команды зависит от контекста: нужна ли вам сводная или детальная информация, данные в реальном времени или исторические, анализ глобальной загрузки или конкретного процесса. Компетентный DevOps должен свободно владеть всем этим инструментарием.