К основному контенту

Команда top в linux: подробный разбор и что такое Load Average

Команда top — это мощный инструмент для мониторинга процессов и использования ресурсов системы в реальном времени. Она показывает загрузку процессора, использование памяти, список процессов и другую важную информацию.


1. Запуск top и его интерфейс

Простое выполнение команды:

top

После запуска появится таблица с данными о системе и процессах.

Выход из top:
Нажмите q для выхода.


2. Основные разделы вывода top

Вывод top делится на несколько частей:

1. Строка общей информации (Summary Information)

Верхние строки содержат общие показатели системы.

Пример вывода:

top - 15:32:45 up 3 days, 4:21, 1 user, load average: 0.72, 0.85, 0.90
  • 15:32:45 — текущее время.
  • up 3 days, 4:21 — время работы системы (3 дня, 4 часа 21 минута).
  • 1 user — количество пользователей в системе.
  • load average: 0.72, 0.85, 0.90 — средняя загрузка системы за 1, 5 и 15 минут. Значение > 1 означает, что есть процессы, ожидающие выполнения.

Как читать Load Average в Linux на разных конфигурациях систем

Команда uptime или top в Linux показывает Load Average, который отображает среднюю загрузку системы за последние 1, 5 и 15 минут. Например:

load average: 0.75, 1.20, 1.10

Как интерпретировать Load Average?

Load Average (LA) показывает количество процессов, которые:

  • выполняются (исполняются на CPU),
  • ожидают выполнения (в очереди на CPU),
  • ожидают ввода-вывода (I/O wait).

Оценка нагрузки:

  • LA < 1 на одноядерной системе — система загружена слабо.
  • LA = 1 на одноядерной системе — загружена на 100%, но без очереди.
  • LA > 1 на одноядерной системе — процессы ждут CPU (очередь).
  • LA = N на N-ядерной системе — CPU загружены на 100%.
  • LA > N на N-ядерной системе — очередь на CPU или интенсивный ввод-вывод.

Различие для многопроцессорных и многоядерных систем

В современных системах многоядерность и многопроцессорность влияют на интерпретацию LA:

  1. Одноядерный процессор (1 CPU, 1 Core)

    • LA = 1 → 100% загрузки, но без задержек.
    • LA > 1 → система перегружена, процессы ждут CPU.
  2. Многоядерный процессор (1 CPU, N Cores)

    • LA = N (число ядер) → 100% загрузка без ожидания.
    • LA > N → процессорное время перегружено.
  3. Многопроцессорная система (M CPUs, N Cores per CPU)

    • Общее количество потоков (vCPU) = M * N.
    • LA = M * N → процессоры загружены на 100%, но без очереди.
    • LA > M * N → процессы ждут ресурсов.

Пример

На сервере с 2 CPU, 8 ядер каждый (итого 16 vCPU):

  • Load Average: 4.00, 3.50, 2.80 → система загружена примерно на 25%.
  • Load Average: 16.00, 17.50, 18.00 → 100% загрузка CPU.
  • Load Average: 32.00, 35.00, 34.00 → перегрузка, есть очередь процессов.

Как определить обоснованность нагрузки?

  • Используйте htop, top, iostat для анализа CPU и I/O.
  • vmstat 1 показывает количество процессов в ожидании (r).
  • Если высокая LA, но CPU idle > 0%, это может быть I/O-задержка.

Наблюдения и выводы:

  • Оценка LA зависит от количества ядер (vCPU).
  • Если LA > доступных ядер, возможны задержки.
  • Если LA высок, но CPU idle > 0% — проблема в I/O, а не в CPU.

2. Информация о CPU (Процессоре)

%Cpu(s): 1.3 us, 0.2 sy, 0.0 ni, 98.3 id, 0.2 wa, 0.0 hi, 0.0 si, 0.0 st
  • us (user) — время, затраченное на пользовательские процессы.
  • sy (system) — время, затраченное на системные процессы.
  • ni (nice) — время, отданное процессам с изменённым приоритетом.
  • id (idle) — время простоя процессора.
  • wa (iowait) — время ожидания ввода/вывода (если высокое, возможно, узкое место в диске).
  • hi (hardware interrupts) — время обработки аппаратных прерываний.
  • si (software interrupts) — время обработки программных прерываний.
  • st (steal time) — время, украденное виртуализацией (важно для виртуальных машин).

3. Информация о памяти

MiB Mem : 16000.0 total, 4000.0 free, 8000.0 used, 4000.0 buff/cache
  • total — общий объём оперативной памяти.
  • free — свободная память.
  • used — используемая память.
  • buff/cache — память, используемая под кэш.
MiB Swap: 8000.0 total, 6000.0 free, 2000.0 used. 5000.0 avail Mem
  • Swap total — общий объём подкачки.
  • Swap free — свободный объём подкачки.
  • Swap used — используемый объём подкачки.
  • avail Mem — доступная память для новых процессов.

4. Таблица процессов

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1234 root 20 0 500000 25000 5000 S 5.3 1.2 1:23.45 apache2
  • PID — ID процесса.
  • USER — пользователь, запустивший процесс.
  • PR (Priority) — приоритет процесса.
  • NI (Nice) — значение "Nice" (низкое значение — более высокий приоритет).
  • VIRT (Virtual Memory) — виртуальная память, используемая процессом.
  • RES (Resident Memory) — реальная память (без подкачки).
  • SHR (Shared Memory) — разделяемая память.
  • S (State) — состояние процесса:
    • R — выполняется (running)
    • S — спит (sleeping)
    • D — не прерываемый сон (waiting for IO)
    • Z — зомби-процесс (zombie)
    • T — остановлен (stopped)
  • %CPU — использование CPU процессом.
  • %MEM — использование RAM процессом.
  • TIME+ — время работы процесса.
  • COMMAND — команда, запустившая процесс.

3. Горячие клавиши для управления top

В top можно управлять выводом с помощью горячих клавиш.

Фильтрация и сортировка

  • P — сортировка по CPU.
  • M — сортировка по памяти.
  • N — сортировка по PID.
  • T — сортировка по времени работы.

Фильтрация по процессам

  • u — отобразить процессы конкретного пользователя (ввести имя пользователя).
  • o — задать условие фильтрации (например, PID=1234).
  • / — поиск по строке (например, искать nginx).

Изменение отображения

  • f — настроить колонки.
  • X — изменить цвет выделения активного процесса.
  • z — включить/выключить цветной режим.

Управление процессами

  • k — завершить процесс (ввести PID и сигнал, например 9).
  • r — изменить приоритет процесса (ввести PID и новый Nice).

Дополнительные опции

  • h — показать справку.
  • q — выйти.

4. Запуск top с параметрами

Команду top можно запустить с разными опциями:

  • Отображение определённого количества обновлений и выход:

    top -n 10

    (выведет 10 обновлений и закроется)

  • Отображение процессов конкретного пользователя:

    top -u username
  • Изменение частоты обновления (по умолчанию 3 сек):

    top -d 1

    (обновлять раз в 1 секунду)

  • Вывод в лог-файл (без интерактивного режима):

    top -b -n 5 > top_output.txt

    (записывает 5 обновлений в файл)


5. Вывод в удобочитаемом формате

Если нужно вывести данные в человекочитаемом виде, используйте:

top -b -n 1 | head -20

(выведет первые 20 строк в статичном формате)


Недостатки top:
  1. Интерфейс неинтуитивен – стандартный top может быть сложным для восприятия из-за большого количества информации без удобной группировки.
  2. Отсутствие цветового выделения – тяжело быстро анализировать данные, особенно под нагрузкой.
  3. Нет поддержки мыши – навигация осуществляется только клавиатурой, что может быть неудобно.
  4. Ограниченные возможности сортировки – можно отсортировать процессы, но нет продвинутых фильтров.
  5. Нет детализации по потокам (threads) – по умолчанию отображаются только процессы, а не потоки.
  6. Нельзя сохранять настройки – после выхода приходится заново настраивать сортировку и отображение.
  7. Нет исторических данных – показывает только текущие метрики, без возможности анализа изменений во времени.

top — это мощный инструмент мониторинга, полезный для диагностики проблем и контроля за ресурсами. Для более детального анализа можно использовать htop, который даёт улучшенный интерфейс.

Альтернативы top (кроме htop):

  1. atop – подробный мониторинг процессов, включая использование диска и сети.
  2. glances – кроссплатформенный мониторинг с возможностью работы в веб-интерфейсе.
  3. nmon – удобный инструмент для анализа производительности системы (CPU, память, сеть, диск).
  4. iotop – показывает процессы, активно использующие диск.
  5. btop – улучшенный htop с красивым интерфейсом и графиками.
  6. vtop – использует графику для отображения загрузки CPU и памяти, написан на Node.js.
  7. pidstat – детальный анализ потребления ресурсов процессами, включая использование CPU и I/O.

Комментарии

Популярные сообщения из этого блога

Настройка и подключение IPSec в Windows

Настройка IPSec на Windows включает в себя создание правил безопасности и фильтров для защиты сетевого трафика. Ниже — пошаговое руководство. Включение службы IPSec Перед настройкой убедитесь, что служба IPSec Policy Agent запущена: Нажмите Win + R , введите services.msc и нажмите Enter . Найдите IPsec Policy Agent . Если она не работает, нажмите ПКМ → Свойства . Установите Тип запуска: Автоматически , затем нажмите Запустить . Настройка политики IPSec через «Локальную политику безопасности» Нажмите Win + R , введите secpol.msc , нажмите Enter . Перейдите в Политики IP-безопасности в локальном компьютере . В правом окне нажмите Создать политику IP-безопасности → Далее . Укажите имя политики (например, "IPSec VPN"), снимите флажок Активировать правило по умолчанию , нажмите Далее . Нажмите Добавить , чтобы создать правило. Транспортный или туннельный режим : Если IPSec для защищенной локальной сети – выберите Транспортный режим . Если IPSec для VPN – выберите Туннельн...

Как найти и изменить репозитарии для CentOS 8

В CentOS 8 официальные репозитории (BaseOS, AppStream и Extras) управляются с помощью dnf и файлов конфигурации в /etc/yum.repos.d/ . Вот как их найти и изменить: 1. Просмотр текущих репозиториев dnf repolist Если нужно увидеть подробную информацию: dnf repolist all 2. Изменение репозиториев Файлы конфигурации репозиториев находятся в /etc/yum.repos.d/ . Например, основной репозиторий может быть в файле CentOS-AppStream.repo . Открыть его можно так: nano /etc/yum.repos.d/CentOS-AppStream.repo Внутри можно изменить: enabled=1 → включает репозиторий enabled=0 → отключает репозиторий baseurl= или mirrorlist= → задать новый источник пакетов 3. Замена недоступных репозиториев CentOS 8 достиг конца поддержки , и официальные зеркала больше не работают. Вместо них можно подключить Vault или AlmaLinux/Rocky Linux : Использование архивного репозитория CentOS Vault Создайте резервную копию старых .repo файлов: mkdir /root/repo-backup && mv /etc/yum.repos.d/*.repo /root/repo-backu...

Что такое Redfish API? Развертывание серверов через Redfish API: подробное руководство с примерами

Введение в Redfish API Redfish API — это стандартный интерфейс управления серверами, разработанный DMTF (Distributed Management Task Force). Он предоставляет RESTful API для взаимодействия с серверными системами, включая включение/выключение, мониторинг состояния и развертывание операционной системы. Этот API позволяет автоматизировать управление серверами без необходимости физического доступа или использования устаревших интерфейсов, таких как IPMI. Требования Прежде чем приступить к работе, необходимо подготовить следующее: Сервер с поддержкой Redfish (например, HPE iLO, Dell iDRAC, Lenovo XClarity, Cisco UCS и др.). Доступ к Redfish API через сеть. Учетные данные для аутентификации. Инструмент для работы с API (cURL, Postman, Python с библиотекой requests ). Подключение и аутентификация Для взаимодействия с Redfish API используется стандартный HTTP-запрос с аутентификацией по логину и паролю. Например, для проверки работоспособности интерфейса можно выполнить GET-запрос ...