> Как пользоваться программой top в Linux (Go)
Уровень: senior · Роль: backend · Категория: Технические вопросы
Компании: VK
Стек: Go
> Пример ответа
Утилита top - это интерактивный монитор процессов в Linux, который показывает в реальном времени загрузку CPU, памяти, список запущенных процессов и другую системную информацию. Для backend-разработчика на Go она незаменима при отладке производительности.
Основные команды внутри top:
-
h- справка по горячим клавишам. -
q- выход. -
k- завершить процесс (ввести PID и сигнал, например, 9 для SIGKILL). -
r- изменить приоритет (renice) процесса. -
1- показать загрузку каждого ядра CPU. -
M- сортировка по использованию памяти (%MEM). -
P- сортировка по использованию CPU (%CPU). -
u- фильтр по имени пользователя. -
c- показать полный путь к команде (вместо сокращённого имени). -
Shift + W- сохранить текущие настройки в~/.toprc.
Ключевые поля вывода:
-
PID- идентификатор процесса. -
%CPU- процент использования CPU процессом (относительно одного ядра, может превышать 100% на многопоточных приложениях). -
%MEM- процент используемой физической памяти. -
VIRT- виртуальная память (включая shared libraries, mmap и т.д.). -
RES- резидентная память (физическая память, занятая процессом). -
SHR- разделяемая память (например, библиотеки). -
S- состояние процесса (R - running, S - sleeping, D - uninterruptible sleep, Z - zombie).
Пример использования для Go-приложения:
Запустите top, нажмите u и введите имя пользователя, от которого запущено ваше Go-приложение. Если процесс потребляет много CPU, нажмите P для сортировки по CPU. Если память - M. Для детального анализа можно нажать f и добавить/убрать поля (например, nTH для числа потоков, что важно для Go-горутин, отображаемых как потоки в top).
Важно: top показывает системные потоки (каждый поток Go-приложения - отдельная строка, если не включено объединение). Для Go-приложений с большим числом горутин это может быть шумно. В таких случаях удобнее использовать htop (с поддержкой дерева процессов) или atop для долгосрочного мониторинга.
> Похожие задачи по backend
Какие бывают виды HTTP-запросов и их семантика
Какие виды уведомлений используются в системах (SMS, push, email и т.д.)
Что означает строка load average в Linux
Что такое аннотация в Go и зачем она нужна
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью