Linux, как загрузить процессор
Обновлено: 21.11.2024
В настоящее время я занимаюсь отладкой установки Cacti и хочу создать загрузку ЦП для отладки графиков использования ЦП.
Есть ли лучший метод тестирования/использования системных ресурсов под нагрузкой?
@NateKoppenhaver: Да, похоже, это возможно, если включить их в сеансы экрана. Но я бы предпочел более сложное решение, если это возможно.
@oKtosiTe cat /dev/random имеет побочный эффект истощения энтропии в /dev/random. Бывают случаи, когда вам нужно сохранять энтропию, я бы не хотел, чтобы это было моей загрузкой процессора.
@oKtosiTe То, что сказал Рич Хомолка, верно, но дело не только в том, что это плохо, но и в том, что это бесполезно, потому что это заблокирует почти сразу и перестанет потреблять ресурсы процессора.
16 ответов 16
Попробуйте стресс. Это в значительной степени эквивалент Windows Consumer.exe :
Нет необходимости устанавливать какие-либо дополнительные пакеты, ваша старая добрая оболочка может сделать это самостоятельно.
Этот однострочный код загрузит ваши четыре ядра 1 на 100%:
Это работает очень просто: запускаются четыре бесконечных цикла. Каждый из них повторяет нулевую инструкцию ( : ). Каждый цикл может загрузить ядро ЦП на 100%.
Если вы используете bash , ksh93 и другие оболочки, поддерживающие диапазоны (т. е. не dash или более старые версии ksh ), вы можете использовать этот непереносимый синтаксис:
Замените 4 количеством ЦП, которое вы хотите загрузить, если оно отличается от 4 .
Предполагая, что при запуске одного из этих циклов у вас уже не было запущенного фонового задания, вы можете остановить генерацию нагрузки с помощью этой команды:
Отвечая на комментарий @underscore_d, вот расширенная версия, которая значительно упрощает остановку загрузки, а также позволяет указать тайм-аут (по умолчанию 60 секунд). Control - C также уничтожит все неконтролируемые циклы. Эта функция оболочки работает, по крайней мере, под bash и ksh .
1 Обратите внимание, что если ЦП поддерживает более одного потока на ядро (гиперпоточность), ОС распределяет нагрузку на все виртуальные ЦП. В этом случае поведение загрузки зависит от реализации (каждый поток может быть зарегистрирован как занятый на 100 % или нет)..
Я хочу создать почти 100% нагрузку на машине с Linux. Это четырехъядерная система, и я хочу, чтобы все ядра работали на полной скорости. В идеале загрузка ЦП будет длиться определенное время, а затем остановится. Я надеюсь, что в bash есть какая-то хитрость. Я думаю о каком-то бесконечном цикле.
23 ответа 23
Я использую стресс для таких вещей, вы можете указать, сколько ядер нужно использовать на максимум... это также позволяет нагружать память и диск.
Пример нагрузки на 2 ядра в течение 60 секунд
стресс --cpu 2 --timeout 60
@bfred.it Ваши ядра могут использовать гиперпоточность, фактически удваивая количество ядер (4 физических и 4 виртуальных ядра). Вы также можете протестировать виртуальные устройства для теста с полной нагрузкой.
sudo apt-get install stress в системах на базе Debian для полноты картины. Использовал это для тестирования мода охлаждения на комплекте Intel i7 NUC.
Вы также можете
Чтобы запустить больше из них, чтобы загрузить больше ядер, попробуйте разветвить его:
Повторите команду в фигурных скобках столько раз, сколько потоков вы хотите создать (здесь 4 потока). Простое нажатие на ввод остановит его (просто убедитесь, что для этого пользователя не запущен другой dd, иначе вы тоже уничтожите его).
На самом деле это сработало лучше всего в моей ситуации. Это также работало в Cygwin. По какой-то причине другие решения не будут сильно нагружать ЦП. Добавление счетчика и параллельное выполнение четырех процессов сработало отлично. Он увеличил загрузку процессора до 100%, а затем сбросил до нуля без какой-либо помощи. Всего четыре строки кода и «подождите».
Чтение из /dev/zero и запись в /dev/null — не очень хороший генератор нагрузки — вам нужно запустить их много, чтобы создать значительную нагрузку. Лучше сделать что-то вроде dd if=/dev/urandom | bzip2 -9 >> /dev/null . /dev/urandom требует значительно больше усилий для генерации вывода, а bzip2 потратит много усилий на его сжатие, поэтому общее использование ЦП намного выше, чем «заполнить блок нулями, а затем выбросить его».< /p>
Я думаю, что это проще. Откройте терминал, введите следующее и нажмите Enter.
Чтобы полностью использовать современные процессоры, одной строки недостаточно, вам может потребоваться повторить команду, чтобы исчерпать всю мощность процессора.
Чтобы покончить со всем этим, просто поставьте
Идея изначально была найдена здесь, хотя она предназначалась для пользователей Mac, но она должна работать и для *nix.
+1 Отлично работает, спасибо! Стоит добавить: эта команда будет максимально использовать один гиперпоток на ядро процессора.Таким образом, двухъядерный процессор (каждое ядро имеет 2 потока) будет получать общую нагрузку 25 % на команду yes (при условии, что в противном случае система простаивала).
Добавим к этому, что каждая итерация этой команды добавляет 25-процентную нагрузку на ЦП (Android) до 4 итераций, а остальные не имеют никакого эффекта (даже с точки зрения тактовой частоты).
Несмотря на то, что я опоздал на вечеринку, этот пост находится среди первых результатов поиска Google "создать загрузку в Linux".
Результат, помеченный как решение, можно использовать для создания нагрузки на систему, я предпочитаю использовать sha1sum /dev/zero, чтобы наложить нагрузку на ядро процессора.
Идея состоит в том, чтобы вычислить хеш-сумму из бесконечного потока данных (например, /dev/zero, /dev/urandom, . ). Этот процесс будет пытаться максимально использовать процессорное ядро, пока процесс не будет прерван. Чтобы создать нагрузку для большего количества ядер, можно объединить несколько команд.
Независимо от того, используете ли вы сервер для приложения или просто локальный компьютер, вы хотите, чтобы ваш компьютер работал как можно лучше. Вот почему вы должны следить за использованием процессора, диска и памяти вашего компьютера. Мониторинг таких вещей, как использование памяти и использование диска, на самом деле довольно прост. Сколько места на диске у вас осталось? Ваш диск фрагментирован? Достаточно ли у вас оперативной памяти для приложений, которые вы используете? Вы регулярно меняете память?
На эти вопросы легко ответить, и их следует задавать. Но некоторые вопросы сложнее, особенно если речь идет о метриках ЦП. Конечно, есть простые показатели, такие как общее использование ЦП. Но если вы используете Linux, у вас есть более эзотерические (а иногда и более полезные) показатели, такие как загрузка ЦП. В этом посте мы поговорим о том, что на самом деле означает метрика загрузки ЦП и как вы можете использовать ее для оптимизации своих серверов.
Загрузка ЦП и использование ЦП
Первое, что нужно понять, это то, что загрузка ЦП — это не то же самое, что использование ЦП. Несмотря на то, что они могут звучать похоже, они совершенно разные. Использование ЦП — это измерение в процентах того, сколько времени ЦП тратит на активные вычисления. Например, если у вас есть программа, которая требует непрерывной вычислительной мощности в течение 54 из последних 60 секунд, использование вашего ЦП на одном ядре составит 90%. Вместо этого, если бы программе требовалось всего шесть секунд времени обработки на одном ядре, использование составило бы 10%.
Большинство компаний стараются поддерживать загрузку ЦП своих серверов как можно ближе к 100 %. Большинство серверов продаются по общей вычислительной мощности, и если ваш сервер использует только 30% ЦП, вы платите за слишком большую мощность процессора. Вы можете понизить уровень своего процессора до более низкого уровня, сэкономить деньги и не увидеть снижения качества производительности вашего сервера.
Нагрузка ЦП
Загрузка ЦП отличается. Вместо измерения процента времени, в течение которого ЦП работает, загрузка ЦП измеряет, сколько программ используют или ожидают процессорного ядра одновременно. Полностью бездействующий процессор будет иметь значение загрузки, равное 0. В нашем предыдущем примере у нас было бы одноминутное время загрузки 0,9 и 0,1 соответственно. Это довольно интуитивно понятно. Однако неинтуитивным в отношении загрузки ЦП является то, что значение 1 не обязательно означает полную загрузку.
Вместо этого то, что представляет собой «полную» загрузку ЦП, зависит от того, сколько потоков операционной системы может иметь ваш ЦП. Большинство ЦП в наши дни представляют собой более одного ядра ЦП, выполняя более одного потока ЦП. Если ваш ЦП имеет четыре ядра, то загрузка ЦП, равная 1, не является полностью загруженным ЦП. Вместо этого он будет загружен только на четверть. Вместо этого загрузка вашего ЦП будет считаться полной для вашего ЦП, если значение нагрузки равно 4, а не 1.
Стоит отметить, что Linux не делает различий между многоядерными и многопроцессорными системами. Если у вас 2 процессора, каждый с одним логическим ядром, для Linux это то же самое, что и 1 процессор с 2 логическими ядрами.
Расшифровка загрузки процессора Linux
Запуск программы, отображающей общую загрузку ЦП Linux, поначалу может вызвать некоторые затруднения. Если вы запустите такую команду, как uptime или top, вы можете увидеть значение загрузки ЦП, которое выглядит как 1,68 0,55 5,91. Если вы не знаете, что ищете, это выглядит как шум. К счастью, это на самом деле довольно легко расшифровать. Здесь три значения, и мы рассмотрим их последовательно.
Первое значение — 1,68. Это значение загрузки ЦП в последнюю минуту. Как мы упоминали ранее, это показатель того, сколько программ использовали процессорное время в последнюю минуту. Таким образом, за последнюю минуту на этой машине было в среднем 1,68 программы, либо использующих время обработки ЦП, либо ожидающих времени обработки ЦП. Если это однопоточный процессор, значит компьютер перегружен. Пользователи ждут, пока их программы запустятся на ЦП, и испытывают снижение производительности.Если вместо этого это двухъядерный компьютер или четырехъядерный, пользователи могут получить процессорное время так быстро, как им это нужно, в последнюю минуту.
Второе значение равно 0,55. Это измерение за последние 5 минут. Как мы уже обсуждали ранее, показатель ниже 1 означает, что ЦП провел некоторое время в этом окне в полном бездействии. В этом случае ЦП простаивал почти половину времени. Если мы оптимизируем наш процессор, чтобы он постоянно что-то делал, это плохой знак.
Последнее число – 5,91 – за последние 15 минут. Если вы используете восьмиядерный процессор, то это число не особенно шокирует. Если вы используете двухъядерный процессор, то число вроде 5,91 означает, что ваш процессор сильно перегружен. Пользователи регулярно ждут процессорного времени и, вероятно, испытывают значительное снижение производительности.
Вот небольшая удобная таблица, в которой указано, какое значение имеют ваши значения нагрузки для общей нагрузки вашей системы:
Загрузка ЦП Unix и Linux
Если вы привыкли измерять загрузку ЦП в Unix, некоторые из этих цифр могут показаться вам завышенными. Это связано с тем, что Unix и Linux по-разному измеряют загрузку процессора. Unix измеряет загрузку ЦП непосредственно как меру программ, которые активно используют или ожидают обработки ЦП. Linux измеряет вещи немного по-другому, и понимание того, как это работает, является ключом к хорошему системному администрированию.
Linux измеряет загрузку ЦП, просматривая как программы, которые в настоящее время используют или ожидают процессорного времени, так и программы, находящиеся в состоянии ожидания.
Например, программа, ожидающая сетевого запроса или дискового ввода-вывода, не будет учитываться при расчете нагрузки на ЦП в Unix. В линуксе так и есть. Является ли это лучшим или худшим подходом, зависит от вашего варианта использования. Если вы не хотите измерять ничего, кроме общего использования ЦП, Unix предлагает лучший интерфейс. Но если у вас есть программа, которая заблокирована на 30 секунд в ожидании сетевого запроса или загрузки каких-то данных с диска, Linux сообщит вам об этом. Unix вообще никогда не обнаружит эти данные.
Оптимизация загрузки ЦП
Не существует панацеи для оптимизации загрузки ЦП. Это процесс, к которому нужно подходить комплексно. Как и использование ЦП, когда вы находитесь на сервере, вы хотите быть близким к 100%, но не выше. Иногда процесс оптимизации загрузки ЦП довольно прост. Возможно, ваш сервер будет использовать только два потока одновременно. В этом случае оптимизировать нагрузку на сервер не сложнее, чем иметь двухъядерный процессор. Вам может понадобиться более быстрый процессор, чтобы эти программы выполнялись вовремя, но вам никогда не понадобится более двух ядер.
Однако большинство систем на самом деле не ограничиваются ровно двумя активными потоками. Большинство серверов намного сложнее. И одна из реальных задач — поддерживать как можно меньшее количество ядер, потому что это экономит ваши деньги, не снижаясь слишком низко и не ухудшая пользовательский опыт. Возможно, вам нужно оптимизировать код, который запускает ваш сервер. Иногда вам нужно определить, сколько времени программы расходуется на ожидание таких вещей, как запросы к базе данных. Возможно, вам действительно нужно увеличить количество ядер вашего процессора. Серверы с узким местом могут быть вызваны рядом причин и могут быть устранены несколькими способами.
Отслеживание загрузки ЦП
Если вы хотите оптимизировать загрузку ЦП, первым шагом в этом процессе является отслеживание показателей. Вам нужна актуальная и историческая информация, которая говорит вам, имеют ли какие-либо внесенные вами изменения желаемый эффект. Мониторинг также сообщает вам, когда вы поставили слишком низкую цель, и ваши пользователи не получают ожидаемого приоритета. Вот тут-то и появляется Скалир.
Используя Scalyr, вы получаете данные в простом для понимания формате. Вы не просто получите простую числовую распечатку. Вместо этого вы получите красивое изображение, показывающее общую загрузку ЦП с течением времени. Это может быть особенно полезно, так как помогает определить конкретные окна, которые наиболее требовательны к вашему процессору. Оптимизация производительности вашего сервера означает его детальное понимание, а не только на высоком уровне.
Как загружен ваш процессор?
Мониторинг и оптимизация загрузки ЦП – важная часть эффективного использования памяти сервера. К сожалению, это также трудоемкий ручной процесс. Как уже отмечалось, большинство команд Linux обеспечивают загрузку ЦП только в течение 15-минутных окон. Это хорошая вещь; вы не хотели бы, чтобы окна были намного шире, чем это. Вам будет трудно получить от них какую-либо полезную информацию. Однако следить за загрузкой процессора в течение 15-минутных периодов довольно сложно.
Чтобы быть хорошим системным администратором, нужно понимать свой сервер со всех сторон.Знание того, как интерпретировать загрузку ЦП и как ее оптимизировать, является ключевой частью максимизации инвестиций вашей компании в серверы. Прежде чем вы сможете это сделать, вам нужно понять, какова на самом деле загрузка ЦП вашего сервера. Нет лучшего дня, чем сегодня, чтобы начать отслеживать загрузку ЦП вашего сервера. Вы можете начать составлять план оптимизации уже сегодня.
Понравилась эта статья? Подпишитесь на нас в LinkedIn, Twitter, YouTube или Facebook, чтобы увидеть контент, который мы публикуем.
Понимание использования процессора ЦП важно для измерения общей производительности системы. От энтузиастов Linux до системных администраторов крайне важно знать, как контролировать загрузку ЦП в Linux из командной строки.
Это руководство познакомит вас с несколькими вариантами проверки использования ЦП Linux.
- Компьютер под управлением Linux (например, Ubuntu и CentOS)
- Доступ к учетной записи пользователя с правами sudo
- Командная строка (Ctrl-Alt-T в Ubuntu, Меню > Приложения > Утилиты > Терминал в CentOS)
- (необязательно) Установщик пакетов, например apt или yum, обычно включенный по умолчанию
Примечание. Используйте одну из 5 доступных в Linux команд для проверки использования памяти.
Как проверить загрузку ЦП из командной строки Linux
команда top для просмотра загрузки процессора Linux
Откройте окно терминала и введите следующее:
Система должна отреагировать, отобразив список всех запущенных в данный момент процессов. Он также будет отображать пользователей, задачи, загрузку ЦП и использование памяти.
Этот список может часто меняться по мере запуска и завершения фоновых задач. Одним из полезных переключателей является запуск top с ключом –i:
Это скрывает все бездействующие процессы, упрощая сортировку по списку.
Чтобы выйти из верхней функции, нажмите букву q на клавиатуре.
Некоторые другие полезные команды во время работы top включают:
- M — сортировать список задач по использованию памяти
- P — отсортировать список задач по загрузке процессора
- N — отсортировать список задач по идентификатору процесса
- T — отсортировать список задач по времени выполнения
Чтобы получить помощь с top , нажмите букву h во время его работы. Или вы можете ввести следующее в командной строке:
Отобразится справочная страница для команды top.
Команда mpstat для отображения активности процессора
Mpstat является частью программного пакета под названием sysstat. Большинство дистрибутивов на основе RHEL включают этот программный пакет.
Для систем Debian и Ubuntu необходимо установить пакет sysstat.
В окне терминала введите следующее:
Позвольте процессу завершиться.
Если вы используете более старую (4.x или более старую) версию CentOS или производную от Red Hat, вы можете использовать up2date для установки sysstat:
Для более новых (5.x и более поздних) установок CentOS или Red Hat sysstat можно установить с помощью следующей команды:
После завершения процесса вы можете использовать команду mpstat в терминале следующим образом:
Система будет отображать использование каждого процессора (или ядра процессора).
Первая строка представляет собой набор меток столбцов. Вторая строка — это значение для каждого столбца:
- %usr — % использования ЦП на уровне пользователя
- %nice – % использования ЦП для пользовательских процессов с пометкой "хороший"
- %sys — процент использования ЦП на уровне системы (ядра Linux)
- %iowait — процент использования ЦП в режиме ожидания при чтении/записи диска.
- %irq — % загрузки ЦП при обработке аппаратных прерываний.
- %soft — % загрузки ЦП при обработке программных прерываний
- %steal – % использования ЦП вынужден ждать, пока гипервизор обработает другие виртуальные процессоры
- %guest — процент использования ЦП, потраченный на запуск виртуального процессора.
- %idle – % использования ЦП в режиме простоя (без процессов и без ожидания чтения/записи на диск)
Вы можете добавить переключатели в команду mpstat.
Переключатель –P позволяет указать один процессор для отчета:
Это покажет вам отчет для первого процессора (ЦП 0).
Эта команда покажет вам общее количество, как и основная команда mpstat. Он также будет отображать процессы по отдельным процессорам.
Команда mpstat делает снимок загрузки ЦП.
Чтобы сделать серию снимков, используйте число для обозначения интервала и второе число для указания количества отчетов:
В этом примере будет создано 7 снимков с интервалом в 5 секунд каждый.
Команда sar для отображения загрузки ЦП
Инструмент sar — это утилита для управления системными ресурсами. Он не ограничивается строго использованием ЦП, но вы можете использовать параметр -u для отслеживания производительности ЦП.
Используйте следующую команду, чтобы указать sar отслеживать загрузку ЦП с заданными интервалами:
Опция –u указывает отображать загрузку ЦП. 5 указывает, что он должен отображаться каждые 5 секунд.Это будет работать бесконечно. Для отмены нажмите Ctrl-C.
Команда iostat для среднего использования
В терминале введите следующее:
Система отобразит среднюю загрузку ЦП с момента последней загрузки. Он также будет отображать нагрузку ввода/вывода (активность чтения/записи диска).
Дополнительную информацию о iostat можно найти на страницах руководства по Linux.
Другие параметры мониторинга производительности процессора
Инструмент мониторинга Nmon
Nmon – это инструмент мониторинга, разработанный Найджелом Гриффитсом из IBM. Чтобы установить Nmon в Ubuntu, введите следующее:
Для установки в CentOS введите следующее:
Команда для запуска nmon:
Это запустит утилиту и отобразит все параметры. Чтобы просмотреть загрузку ЦП, нажмите букву c. Чтобы переключиться обратно, снова нажмите c. Чтобы просмотреть список команд, нажмите h. Чтобы выйти, нажмите q.
Графическая утилита
Многие серверные системы не тратят циклы процессора на графический интерфейс пользователя (GUI).
Однако у вас может быть облегченный графический интерфейс или вы можете использовать клиентскую систему Linux. Некоторые версии, например Ubuntu, имеют встроенный графический инструмент мониторинга.
Чтобы запустить системный монитор Ubuntu, введите в окне терминала следующее:
При этом запускается приложение, похожее на диспетчер задач, в котором вы можете отслеживать задачи и использование ЦП.
Обычно в графическом интерфейсе есть приложение «диспетчер задач» или «системный монитор». Это можно использовать для мониторинга использования ЦП в режиме реального времени.
Существует множество различных способов проверки загрузки ЦП в Linux.
В этом руководстве описаны основные методы с использованием встроенных инструментов Linux или сторонних приложений. Эти команды помогут вам отслеживать использование процессора и производительность вашей системы, предоставляя вам больший контроль.
Читайте также: