Добавить в корзинуПозвонить
Найти в Дзене
Герман Геншин

Linux начал "тупить"? Рассказываю, как одним быстрым приёмом найти и нейтрализовать главных виновников через терминал

Любая программа, которую вы запускаете на компьютере с Linux, тратит вашу оперативку и гонит процессор. Стоит какому-нибудь приложению начать "обжираться" ресурсами — и тормозит всё. Вот как вычислить такого нарушителя за пару минут. ОЗУ и мощность процессора не безграничны. Каждый раз, когда вы открываете программу, появляется отдельный процесс. К ним добавляются служебные процессы системы, разные элементы интерфейса и прочие ваши приложения. Всем им нужна память и доля процессора. Linux вместе с процессором стараются раздавать память разумно, а нагрузку по ядрам распределять честно. Но если программа написана криво или вдруг начинает "чудить", она может сожрать всю память или нагрузить CPU под завязку. В такие моменты важно быстро найти и обезвредить заболевший процесс. Linux любит использовать свободную память под кеш, отчего кажется, будто свободного места не осталось. Но это нормально: при необходимости кеш освобождается, и программа запускается. Если же память уходит куда-то сли
Оглавление

Кратко

Любая программа, которую вы запускаете на компьютере с Linux, тратит вашу оперативку и гонит процессор. Стоит какому-нибудь приложению начать "обжираться" ресурсами — и тормозит всё. Вот как вычислить такого нарушителя за пару минут.

Как процессы делят ресурсы между собой

ОЗУ и мощность процессора не безграничны. Каждый раз, когда вы открываете программу, появляется отдельный процесс. К ним добавляются служебные процессы системы, разные элементы интерфейса и прочие ваши приложения. Всем им нужна память и доля процессора.

Linux вместе с процессором стараются раздавать память разумно, а нагрузку по ядрам распределять честно. Но если программа написана криво или вдруг начинает "чудить", она может сожрать всю память или нагрузить CPU под завязку.

В такие моменты важно быстро найти и обезвредить заболевший процесс.

Если память тает на глазах

Linux любит использовать свободную память под кеш, отчего кажется, будто свободного места не осталось. Но это нормально: при необходимости кеш освобождается, и программа запускается. Если же память уходит куда-то слишком быстро — стоит насторожиться.

free: наглядно о том, сколько памяти у вас осталось

Команда free покажет вам сводку по оперативке. Добавьте опцию -h — так вывод будет легко читать.

Я трижды выполнил free в одном терминале, а во втором специально запускал программу, которая "сжирала" всю память.

-2

Свободная память уходит прямо на глазах. Нужно срочно узнать, кто так балуется.

/proc/meminfo: вся правда о памяти в деталях

Утилиты вроде top и htop берут данные о памяти из файла /proc/meminfo. Его вы можете посмотреть напрямую через cat или less — увидите подробную таблицу всех видов памяти.

-3

Набор данных может немного отличаться в зависимости от версии ядра и железа, но ключевые параметры есть всегда. Этот способ помогает понять, на что уходит память, но не укажет, какая именно программа "кушается".

vmstat: динамика памяти в реальном времени

Команда vmstat покажет, как расходуется виртуальная память в динамике.

Хотите четыре снимка с интервалом 5 секунд (в удобных мегабайтах)? Пишите такую команду:

-4

Находим прожорливые процессы через top и htop

top и htop — наглядные приборные панели вашей системы: в таблице видно, сколько ресурсов съедает каждая программа.

-5

Чтобы отсортировать процессы по объёму потребляемой памяти — нажмите Shift+M.

-6

В моём случае программа gobble запущена дважды — и вместе съедает две трети всей памяти. Пора с ней попрощаться!

Нажимаете "k" — и система предложит завершить нужный процесс.

-7

Появится запрос на PID — по умолчанию останется тот, что стоит первым (ведь мы уже отсортировали по памяти). Просто жмите Enter.

-8

Дальше просят номер сигнала: пишите 9 (это SIGKILL), снова Enter — и процесс уничтожен.

Повторите для второго — и gobble исчезнет из списка.

В htop всё аналогично: выделяете стрелками нужный процесс, жмёте "k", выбираете слева 9 SIGKILL и подтверждаете Enter.

-9

ps: выводим топ-10 самых "прожорливых"

ps не просто покажет PID интересного вам процесса, но и его "родителя". Если тот породил кучу "детей" — зачастую проще прикончить самого "Босса".

Я использую опции -e (показать все процессы) и -o (выбрать нужные поля). Удобно сразу отсортировать по объёму памяти.

Чтобы не захламлять терминал, через head выводим только 10 наиболее "тяжёлых".

-10

Когда процессор вдруг греется без видимой причины

Искать процессы, грузящие процессор, почти так же просто, как и пожирателей памяти: ищем разгулявшийся PID — и отправляем в нокаут.

Ловим CPU-"вампиров" через top и htop

По умолчанию top и htop сортируют процессы по загрузке CPU (столбец %CPU). Если вдруг сменили порядок — верните его Shift+P.

-11

Например, процесс drain не даёт отдышаться CPU, всё время держится на пике. Нашли виновника? Сразу жмите "k" — и спать ему!

Следим за нагрузкой на CPU с помощью mpstat

Важно не поубивать лишнего — особенно системные процессы! mpstat покажет, куда уходит загрузка процессора: на ваши программы или внутренние задачи системы.

Если mpstat ещё не установлен — на Fedora ставьте так:

На Manjaro команда будет такой:

Чтобы посмотреть стату по всем ядрам каждые 2 секунды (5 раз подряд), используйте -P all.

Как видно, всю нагрузку создают именно пользовательские процессы — а системные тут почти ни при чём. В шестой строке — средние значения замеров.

ps: кому достался весь процессор?

ps легко адаптируется и к поиску процессорных хищников. Просто слегка исправьте прошлую команду — теперь сортируем по CPU.

Строчку с самим ps можете игнорировать — это он пробежал только что. А вот следующая программа прямо сейчас "жжёт" процессор. Знаете её PID — уничтожайте через kill, top или htop.

Держите систему под контролем!

В обычном режиме ваш Linux-компьютер работает шустро и стабильно, а процессы ведут себя прилично. Но если вдруг чувствуете, что всё стало подтормаживать — проверьте ресурсы этими инструментами. Может, в фоне завёлся кто-то чересчур жадный до трёх процессорных блюд и пяти порций памяти.

Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!

Премиум подписка - это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь

Также подписывайтесь на нас в: