Кратко
Любая программа, которую вы запускаете на компьютере с Linux, тратит вашу оперативку и гонит процессор. Стоит какому-нибудь приложению начать "обжираться" ресурсами — и тормозит всё. Вот как вычислить такого нарушителя за пару минут.
Как процессы делят ресурсы между собой
ОЗУ и мощность процессора не безграничны. Каждый раз, когда вы открываете программу, появляется отдельный процесс. К ним добавляются служебные процессы системы, разные элементы интерфейса и прочие ваши приложения. Всем им нужна память и доля процессора.
Linux вместе с процессором стараются раздавать память разумно, а нагрузку по ядрам распределять честно. Но если программа написана криво или вдруг начинает "чудить", она может сожрать всю память или нагрузить CPU под завязку.
В такие моменты важно быстро найти и обезвредить заболевший процесс.
Если память тает на глазах
Linux любит использовать свободную память под кеш, отчего кажется, будто свободного места не осталось. Но это нормально: при необходимости кеш освобождается, и программа запускается. Если же память уходит куда-то слишком быстро — стоит насторожиться.
free: наглядно о том, сколько памяти у вас осталось
Команда free покажет вам сводку по оперативке. Добавьте опцию -h — так вывод будет легко читать.
Я трижды выполнил free в одном терминале, а во втором специально запускал программу, которая "сжирала" всю память.
Свободная память уходит прямо на глазах. Нужно срочно узнать, кто так балуется.
/proc/meminfo: вся правда о памяти в деталях
Утилиты вроде top и htop берут данные о памяти из файла /proc/meminfo. Его вы можете посмотреть напрямую через cat или less — увидите подробную таблицу всех видов памяти.
Набор данных может немного отличаться в зависимости от версии ядра и железа, но ключевые параметры есть всегда. Этот способ помогает понять, на что уходит память, но не укажет, какая именно программа "кушается".
vmstat: динамика памяти в реальном времени
Команда vmstat покажет, как расходуется виртуальная память в динамике.
Хотите четыре снимка с интервалом 5 секунд (в удобных мегабайтах)? Пишите такую команду:
Находим прожорливые процессы через top и htop
top и htop — наглядные приборные панели вашей системы: в таблице видно, сколько ресурсов съедает каждая программа.
Чтобы отсортировать процессы по объёму потребляемой памяти — нажмите Shift+M.
В моём случае программа gobble запущена дважды — и вместе съедает две трети всей памяти. Пора с ней попрощаться!
Нажимаете "k" — и система предложит завершить нужный процесс.
Появится запрос на PID — по умолчанию останется тот, что стоит первым (ведь мы уже отсортировали по памяти). Просто жмите Enter.
Дальше просят номер сигнала: пишите 9 (это SIGKILL), снова Enter — и процесс уничтожен.
Повторите для второго — и gobble исчезнет из списка.
В htop всё аналогично: выделяете стрелками нужный процесс, жмёте "k", выбираете слева 9 SIGKILL и подтверждаете Enter.
ps: выводим топ-10 самых "прожорливых"
ps не просто покажет PID интересного вам процесса, но и его "родителя". Если тот породил кучу "детей" — зачастую проще прикончить самого "Босса".
Я использую опции -e (показать все процессы) и -o (выбрать нужные поля). Удобно сразу отсортировать по объёму памяти.
Чтобы не захламлять терминал, через head выводим только 10 наиболее "тяжёлых".
Когда процессор вдруг греется без видимой причины
Искать процессы, грузящие процессор, почти так же просто, как и пожирателей памяти: ищем разгулявшийся PID — и отправляем в нокаут.
Ловим CPU-"вампиров" через top и htop
По умолчанию top и htop сортируют процессы по загрузке CPU (столбец %CPU). Если вдруг сменили порядок — верните его Shift+P.
Например, процесс drain не даёт отдышаться CPU, всё время держится на пике. Нашли виновника? Сразу жмите "k" — и спать ему!
Следим за нагрузкой на CPU с помощью mpstat
Важно не поубивать лишнего — особенно системные процессы! mpstat покажет, куда уходит загрузка процессора: на ваши программы или внутренние задачи системы.
Если mpstat ещё не установлен — на Fedora ставьте так:
На Manjaro команда будет такой:
Чтобы посмотреть стату по всем ядрам каждые 2 секунды (5 раз подряд), используйте -P all.
Как видно, всю нагрузку создают именно пользовательские процессы — а системные тут почти ни при чём. В шестой строке — средние значения замеров.
ps: кому достался весь процессор?
ps легко адаптируется и к поиску процессорных хищников. Просто слегка исправьте прошлую команду — теперь сортируем по CPU.
Строчку с самим ps можете игнорировать — это он пробежал только что. А вот следующая программа прямо сейчас "жжёт" процессор. Знаете её PID — уничтожайте через kill, top или htop.
Держите систему под контролем!
В обычном режиме ваш Linux-компьютер работает шустро и стабильно, а процессы ведут себя прилично. Но если вдруг чувствуете, что всё стало подтормаживать — проверьте ресурсы этими инструментами. Может, в фоне завёлся кто-то чересчур жадный до трёх процессорных блюд и пяти порций памяти.
Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!
Премиум подписка - это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь
Также подписывайтесь на нас в:
- Telegram: https://t.me/gergenshin
- Youtube: https://www.youtube.com/@gergenshin
- Яндекс Дзен: https://dzen.ru/gergen
- Официальный сайт: https://www-genshin.ru