Полевой справочник по каждой цифре в htop — от load average до зомби

Петерис Рокс убивает процессы один за другим, пока его Linux-машина не остаётся почти голой, — всё ради ответа на вопрос, который top никогда не проговаривает: какой из них вообще можно убить?

Вкратце

Разбор 2019 года расшифровывает каждое поле в htop и top: load average — это сглаженное среднее числа готовых к работе плюс непрерываемых задач, а не процент CPU, а колонка состояния S идёт от R до неубиваемого D и безобидного зомби Z.

Самая острая мысль: VIRT — это иллюзия. RES — настоящая резидентная память; виртуальный размер считает mmap-области, которых процесс никогда не касается.

Комментарии превратили это в тред про инструменты: btop, nmon, настройки дерева процессов.

load average врёт, а VIRT врёт ещё сильнее

htop до эксперимента с убийством процессов, работает много служб
htop до эксперимента с убийством процессов, работает много служб

Разбор 2019 года от Петериса Рокса берёт каждое поле в htop и top и объясняет, что оно на самом деле измеряет. Load average — не процент CPU: это экспоненциально сглаженное скользящее среднее за 1, 5 и 15 минут по процессам, которые работают или застряли в непрерываемом сне. На одном ядре 1,0 означает полную загрузку. Счётчик задач существует потому, что ядро Linux называет процессы «задачами», а Shift+H прячет и показывает потоки.

htop сразу после входа в систему
htop сразу после входа в систему

На памяти справочник ставит своё знамя. VIRT считает каждую mmap-область, которую процесс резервирует, но может ни разу не тронуть, поэтому регулярно завышает потребление. RES — настоящая резидентная память в RAM, а SHR — copy-on-write часть, которую можно делить. Колонка S сообщает состояние: R значит работу, S прерываемый сон, D непрерываемое ожидание ввода-вывода, которое обычно не убить, Z уже завершившийся зомби, держащий лишь PID. Niceness идёт от −20 до 19, каждый шаг стоит примерно десять процентов времени CPU, а PRI равен просто 20 плюс NI.

Стержень статьи — один эксперимент: можно ли это убить? Автор шлёт процессам SIGTERM (15), затем SIGKILL (9), который не перехватит ни одна программа, и смотрит, как целый рабочий стол ужимается до голой системы. Зомби сопротивляется обоим, потому что нельзя убить то, что уже мертво.

htop после убийства несущественных процессов
htop после убийства несущественных процессов

Последняя подстава косметическая: через PuTTY псевдографика и цвета требуют правильных настроек терминала, иначе индикаторы отрисовываются как мусор.

Настройки терминала PuTTY для корректной отрисовки htop
Настройки терминала PuTTY для корректной отрисовки htop

Комментарии превратили разбор в перестрелку инструментов

Урок про память зашёл сильнее всего — читатель наблюдал ту же ловушку в браузере:

«Резидентный размер — самая надёжная метрика. Всё прочее может ошибочно раздуваться … безобидными memory-mapped файлами … У Chrome была эта проблема какое-то время.» — комментатор, вспоминающий, как Chrome чинил mmap

Активный пользователь предложил два дефолта, которые хотел бы видеть в htop:

«Я отключаю пользовательские потоки … включаю вид дерева процессов … и то, и другое должно быть поведением htop по умолчанию.» — ежедневный пользователь htop

Затем тред уплыл к преемникам.

«Я относительно недавно перешёл на btop … похоже, он показывает ещё и потребляемые ватты» — senior-инженер по машинному обучению

Это откликнулось на прямо высказанное пожелание:

«Немного глупо, что видишь load average, но не количество ватт, которые потребляет твоя система.» — один читатель

Шесть лет спустя статью всё ещё добавляют в закладки, потому что поля, которые она расшифровывает, не изменились. Изменилось то, что btop, nmon и компания теперь рисуют ватты, GPU и диски, которые htop так и не научился показывать.

Получайте такие разборы каждый день

Главные истории Hacker News — на email, в Telegram или RSS.

Следующая новость · 17 из 22 Читать дальше
🚀Tech

Command & Conquer Generals нативно перенесли на iPhone, iPad и Apple Silicon

Стратегия в реальном времени 2003 года теперь идёт на iPhone без изменений: её вызовы DirectX 8 проходят через четыре графических слоя, прежде чем добраться до Apple Metal. Без эмуляции, без стриминга.

★ 377 · 💬 147 · github.com · 3 мин