Поиск по сайту:

Система работает медленно? Как узнать, привязан ли Linux к памяти, процессору или вводу-выводу


Система работает медленно? Если это так, ваша система будет привязана либо к памяти, либо к процессору, либо к вводу-выводу. Эта статья покажет вам быстрый способ узнать, какой из трех это, что позволит вам сделать обоснованные улучшения производительности системы.

Память, вычислительные ресурсы (ЦП) или ограничения ввода-вывода?

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

Например, если у вас есть очень старый и медленный диск — например, все еще довольно распространенный вращающийся диск со скоростью вращения 5400 об/мин, часто называемый жестким диском или жестким диском, — этот диск может быть узким местом. в вашей системе.

Думайте об этом как о трубах, по которым течет вода. Представьте себе память вашей системы, вычислительный блок (ваш ЦП или центральный процессор — главный чип/процессор в вашей системе) и диски (как часть системы ввода-вывода или ввода-вывода) в виде водопроводных труб. Теперь представьте, что самые медленные компоненты — это меньшая труба, а самые быстрые компоненты — большая труба. Если вам нужно передать 10 литров через каждую трубу, то самая медленная труба займет намного больше времени, чем самая большая.

В Linux основными узкими местами являются память (ОЗУ), вычисления (ЦП) или ввод-вывод (дисковые операции). В случае с памятью скорость может быть фактором, но ее нехватка — это большая проблема. Что касается ЦП, то на старом оборудовании каждое ядро ЦП работает намного медленнее, и их может не хватить. Для ввода-вывода проблемой может быть чтение с медленных жестких дисков, а также чрезмерная запись на диск.

Есть инструменты, которые можно использовать, чтобы легко узнать, связана ли система с памятью, вычислениями (ЦП) или вводом-выводом. Все, что вам нужно, это htop и iotop, два полуграфических инструмента, которые можно легко установить в Linux.

Установка htop и iotop

Чтобы установить htop и iotop в вашем дистрибутиве Linux на основе Debian/Apt (например, Ubuntu и Mint), выполните следующие действия:

sudo apt установить htop iotop

Чтобы установить htop и iotop в вашем дистрибутиве Linux на основе RedHat/Yum (например, RedHat и Fedora), выполните следующие действия:

sudo yum установить htop iotop

Ограничение ЦП

Легко увидеть, привязана ли система к процессору или нет. Просто введите \\htop\\ в командной строке и нажмите Enter. Затем посмотрите на красочные полосы ЦП в верхней части экрана. Если у вашего процессора 16 потоков, будет 16 полос.

Простой вопрос, на который нужно ответить, заключается в том, все ли они почти «заполнены» (около 100%) или есть достаточно места для перемещения:

Если полоски заполнены, система явно привязана к ЦП. Также обратите внимание, что полоски памяти (Mem) и подкачки (Swp) ни в коем случае не заполнены: это не проблема производительности, связанная с памятью.

Чтобы получить немного больше информации и тенденций, вы можете посмотреть на число «Средняя загрузка». Хотя это число является весьма произвольным, небольшое знакомство с вашей системой и общее понимание того, что если какое-либо из этих трех чисел превышает количество потоков в вашей системе более чем в два раза, система изо всех сил пытается не отставать, имеет большое значение здесь.

Первое среднее значение нагрузки — это среднее значение за 1 минуту, следующее — среднее значение за 5 минут, а последнее — среднее значение за 15 минут. В этом случае 1-минутная загрузка составляет 270, что почти в 17 раз превышает количество потоков: наша система сильно привязана к ЦП.

Наконец, интересное число, которое стоит проверить, — это количество задач (и, в меньшей степени, потоков). В то время как точные нижняя и верхняя отметки зависят от возможностей базового оборудования/машины, если количество задач чрезмерно велико, ваш ЦП может сильно переключать контекст (переход от обработки одной задачи к другой).

Если вы хотите узнать больше о том, что обозначают различные цвета в htop, см. раздел Цветовые полосы в htop — что они означают?

Память ограничена

Сразу же при доступе к htop легко увидеть, привязана ли система к памяти или нет. Просто посмотрите на полосы памяти (Mem) и подкачки (Swp), упомянутые ранее.

Если полоса памяти полностью заполнена, а полоса подкачки заполнена, например, на 50%, система почти наверняка сильно переключается. Подкачка — это процесс обмена содержимым основной памяти с диском (с использованием специального файла подкачки или раздела подкачки), потому что он заполнен, и, вообще говоря, он очень медленный. Как только система запустится и продолжит подкачку, она станет чрезмерно медленной.

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

Например, может быть занято 20%, но памяти осталось много. Это может указывать на то, что операционная система переместила некоторые низкочастотные области памяти на диск, чтобы оптимизировать основную память. Поскольку много свободной памяти остается свободной, эта ситуация не вызывает беспокойства.

Существует также исключение из полосы памяти, которая выглядит довольно заполненной, и это кэширование. Ваша система может быть настроена на резервирование x объема памяти для кэширования.

Другой способ быстро проверить это — запустить free -g в командной строке (или free -m для машин с меньшим объемом памяти, таких как Raspberry Pi):

Это легко прочитать: 62 гигабайта памяти, 25 используются, 12 свободны и 24 выделены в настоящее время для буферов и кеша. Доступные 32 — это приблизительная сумма фактически свободных (12) и всего, что назначено буферам и кешу (24), за вычетом того, что уже используется (не показано), или, другими словами, 12 + 24=36 и 32 доступно, поэтому около 4 гигабайт используются буферами и кэшированием.

Обратите внимание, что мы также можем видеть, сколько места подкачки было зарезервировано (10 гигабайт) и сколько используется здесь: 0 в настоящее время и, следовательно, 10 свободных.

Привязка ввода/вывода

Допустим, вы проверяете htop и видите это:

Система выглядит загруженной, но не достаточно загруженной, чтобы ее можно было считать загруженной ЦП. Используемая/свободная память и полосы подкачки тоже выглядят нормально. Давайте проверим iotop дальше. Для этого вам нужно использовать sudo iotop для запуска iotop, так как iotop требует sudo.

Верхние две полосы наиболее полезны для быстрого анализа того, борется ли система с пропускной способностью диска и, следовательно, ограничена ли она вводом-выводом.

Хотя число M/s не является сверхвысоким с точки зрения современных SSD, постоянное чтение и запись нескольких мегабайт в секунду на медленный жесткий диск — это довольно интенсивный ввод-вывод!

Это число при просмотре в течение некоторого времени вместе со списком процессов под ним (чтобы увидеть, кто является наиболее активными пользователями) и верхней частью вывода htop (с точки зрения ЦП и памяти) дает хорошее общее представление о том, является ли система связана с памятью, ЦП или вводом-выводом.

Устранение проблем с производительностью

Системные изменения, необходимые для устранения проблем с производительностью, всегда зависят от системы и конкретной ситуации. Несколько примеров:

Система привязана к диску/вводу/выводу? Возможно, имеет смысл остановить некоторые службы журналов с интенсивной записью, обновить систему ввода-вывода (например, добавив карту SATA в старый компьютер), перейти на более быстрое устройство хранения (например, диск на базе NVMe вместо HDD), или просто найти более быстрый SSD.

Система привязана к памяти/подкачке? Например, может иметь смысл запускать меньше виртуальных машин, запускать менее требовательные к памяти процессы или добавлять больше физических аппаратных модулей памяти.

Система привязана к ЦП? Используйте нижний список процессов в htop, чтобы найти процесс, который загружает ЦП. Вы даже можете завершить его прямо из htop, используя клавишу F9.

Если проблема заключается в самом ЦП (т.е. ЦП явно не справляется с самыми основными задачами, связанными с системой), замена оборудования немного сложнее. Нужно найти более быстрый процессор, совместимый с сокетом на материнской плате, и даже в этом случае прирост производительности может быть небольшим. Возможно, пришло время обновить систему в целом.

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

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

Например, если старая или дешевая карта контроллера ввода-вывода требует 80% процессорного времени только для обработки данных, а диск, подключенный к ней, представляет собой медленный HDD-диск, который используется на 80% своих возможностей, даже при пропускной способности более дешевая карта ввода-вывода, то обе они создают общую проблему, которая также не будет решена путем решения. И то, и другое необходимо будет исправить, прежде чем система снова станет работоспособной.

Подведение итогов

Независимо от того, являетесь ли вы инженером DevOps или пользователем Linux на домашнем компьютере, знание того, как быстро проанализировать, связана ли ваша система с памятью, ЦП или вводом-выводом, поможет вам внедрить более качественные изменения в программное и аппаратное обеспечение, чтобы удовлетворить возникающие проблемы с производительностью.