- Стресс-тестирование систем в Linux – утилита stress-ng
- Основные особенности и возможности stress-ng
- Синтаксис stress-ng
- Основные опции stress-ng
- Тестирование процессора
- Тестирование дисковой подсистемы
- Тестирование памяти
- Комплексное тестирование
- Заключение
- Бенчмарки для Linux-серверов: 5 открытых инструментов
- Sysbench
- UnixBench
- Phoronix Test Suite
- Vdbench
- IOzone
- Стресс тест процессора в Linux
- Стресстест процессора в терминале Linux
Стресс-тестирование систем в Linux – утилита stress-ng
Для организации и проведения нагрузочного стресс-тестирования в Linux-системах существует утилита stress-ng. С помощью неё несложно сгенерировать реальную рабочую нагрузку на тестируемые подсистемы и, соответственно, оценить её возможности. Утилита, традиционно для Linux, предоставляет для работы интерфейс командной строки. Однако, это ни в коей мере не делает её неудобной. Со своими задачами она справляется на «отлично». В данной статье приведены инструкции, отражающие основы работы с утилитой stress-ng для некоторых самых распространённых ситуаций в стресс-тестировании систем на основе Linux.
Основные особенности и возможности stress-ng
Возможности, которыми обладает утилита stress-ng, довольно широки. Об этом свидетельствует огромное количество всевозможных опций, которыми её наделили разработчики.
Но ключевой особенностью stress-ng является то, что это полноценный инструмент со встроенными тестами. В отличие от многих других аналогов, при выполнении теста не производится обращений к сторонним и/или внешним ресурсам. Таким образом, stress-ng абсолютно самодостаточна. Практически в любом дистрибутиве Linux она доступна в стандартном репозитории и устанавливается с помощью системы управления пакетами (СУП) дистрибутива. Например, в Ubuntu:
Кроме всего прочего, stress-ng в своём составе очень качественные тесты для тестирования процессоров, в совокупности позволяющие наиболее полно сгенерировать нагрузку на CPU, используя такие методы как целочисленные и с плавающей запятой, битовые операции, комплексные вычисления и т. д.
Синтаксис stress-ng
Как уже было отмечено, stress-ng имеет настолько огромный набор опций, что в рамках данной статьи целесообразнее остановиться лишь на основных, позволяющих протестировать все основные подсистемы: CPU, виртуальную память, а также дисковую подсистему.
Синтаксис stress-ng довольно прост:
Задаёт конкретный метод тестирования виртуальной памяти. По-умолчанию выполняются все доступные для данной категории тесты, последовательно друг за другом. Подробнее в официальном руководстве по команде man stress-ng.
—vm-method mЗадаёт конкретный метод тестирования виртуальной памяти. По-умолчанию выполняются все доступные для данной категории тесты, последовательно друг за другом. Подробнее в официальном руководстве по команде man stress-ng.
Основные опции stress-ng
В таблице ниже указаны основные опции утилиты
Опция | Значение |
—class name | Задаёт тип теста. В качестве name указывается например cpu, memory, vm, io и другие. |
—metrics | Указывает, что по завершению теста должна быть выведена статистика основных метрик, отражающих поведение системы во время теста. |
—metrics-brief | То же, что и —metrics, но выводит ненулевые метрики. |
—cpu-method method | Задаёт метод генерации нагрузки для процессора. По-умолчанию выполняются все доступные для данной категории тесты, последовательно друг за другом. Более подробно об этой опции можно узнать, выполнив команду man stress-ng. |
—cpu N | Запускает для стресс-теста процессора N стрессоров для каждого его потока. |
—cpu-ops N | Указывает, через какое количество bogo-операций необходимо остановить тест CPU. |
—hdd-ops N | Указывает, через какое количество bogo-операций необходимо остановить тест жёстких дисков. |
—hdd-bytes N | Записывает N байт для каждого процесса работы с жёстким диском. По-умолчанию равно 1 Гб. |
—vm N | Запускает для стресс-теста виртуальной памяти N стрессоров. |
—vm-bytes N | Размещает N байт для каждого процесса работы с памятью. По-умолчанию равно 256 Мб. Объём также может быть указан в процентах от общего объёма виртуальной памяти в системе. Значения можно задавать в бфйтах, килобайтах, мегабайтах и гигабайтах, используя суффиксы b, k, m и g соответственно. |
—sequential N | Задает N количество потоков для выполнения тестов, если N не указано или равно 0, то количество потоков равно числу процессоров. |
Для удобства и быстрого составления необходимых тестов рекомендуется пользоваться также некоторыми вспомогательными опциями, например:
- что бы запустить несколько экземпляров каждого стресс-теста используется опция —all N, где N – необходимое количество экземпляров;
- для установки таймаута, т. е. времени продолжительности стресс-теста используется опция —timeout.
Тестирование процессора
Для подавляющего большинства ситуаций классическим примером стресс-теста можно использовать тест, выполняемый следующей командой:
В данном тесте задействованы 16 потоков для тестирования 16-поточного процессора. Вывод результатов может быть следующим:
Естественно количество потоков следует задавать в соответствии со спецификацией используемого процессора.
Тестирование дисковой подсистемы
Для проведения стресс-тестирования накопителей, таких как жёсткие диски можно для начала провести низкоуровневый тест ввода вывода
Вывод команды будет следующим
Еще один стресс-тест дисков можно выполнить командой
В данном случае будет запущено 5 стрессоров для жёстких дисков, которые будут остановлены по завершении 100 тыс. bogo-операций.
Во время тестирования можно смотреть загрузку командой iostat
Тестирование памяти
Что бы провести стресс-тест памяти используйте команду
После окончания мы получим результат проверки приблизительно следующего вида
Комплексное тестирование
Если необходимо провести комплексное стресс-тестирование, можно задействовать работу нескольких основных подсистем вместе одной командой:
Эта команда запустит тест для CPU в 8 потоков, тест виртуальной памяти с размещением в ней одного гигабайта данных, а также 4 стрессора для тестирования операций ввода/вывода.
Что бы запустить тестирование всего «железа», используется команда
Эта команда запустит все тесты. После выполнения результат будет выведен в консоль. Во время выполнения команды лучше компьютер не трогать
Заключение
В заключение стоит ещё раз отметить, что утилита stress-ng по своим возможностям очень универсальна и позволяет качественно протестировать любую систему. Приведенные выше примеры охватывают наиболее распространённые ситуации по нагрузочному тестированию Linux-систем. Для проведения специфичных или более сложных тестов рекомендуется обращаться к официальному руководству по использованию утилиты, доступному по команде man stress-ng.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Бенчмарки для Linux-серверов: 5 открытых инструментов
Сегодня мы расскажем об открытых инструментах для оценки производительности процессоров, памяти, файловых систем и систем хранения данных.
В список вошли утилиты, предлагаемые резидентами GitHub и участниками тематических тредов на Reddit, — Sysbench, UnixBench, Phoronix Test Suite, Vdbench и IOzone.
/ Unsplash / Veri Ivanova
Sysbench
Это — утилита для нагрузочного тестирования MySQL-серверов, основанная на проекте LuaJIT, в рамках которого разрабатывается виртуальная машина для языка Lua. Автор инструмента — программист и эксперт по MySQL Алексей Копытов. Проект начинался как хобби, но со временем обрел признание сообщества. Сегодня sysbench используют в своей работе крупные университеты и ИТ-организации вроде IEEE.
Во время конференции SECR-2017 (запись выступления есть на YouTube) Алексей рассказал, что sysbench позволяет оценить производительность базы данных при переносе на новое оборудование, обновлении версии СУБД или резком изменении числа запросов. В общем случае синтаксис команды для проведения теста выглядит следующим образом:
Эта команда определяет тип (cpu, memory, fileio) и параметры нагрузочного теста (количество потоков, число запросов, скорость обработки транзакций). В целом инструмент способен обрабатывать миллионы событий за секунду. Подробнее об архитектуре и внутреннем устройстве sysbench Алексей Копытов рассказал в одном из выпусков подкаста Software Development Podcast.
UnixBench
Набор инструментов для оценки производительности Unix-систем. Его представили инженеры из университета Монаша в 1983 году. С того момента поддержкой инструмента занималось множество людей, например, авторы журнала о микрокомпьютерных технологиях Byte Magazine и участник LKML Дэвид Ниеми (David Niemi). За выход следующей версии инструмента отвечает Энтони Воэлм (Anthony Voellm) из Microsoft.
UnixBench представляет собой набор индивидуальных тестов. Они сопоставляют скорость выполнения кода на машине под управлением Unix с производительностью эталонной системы, в роли которой выступает SPARCstation 20-61. На основе этого сравнения генерируется балл, определяющий производительность.
Среди доступных тестов числятся: Whetstone, который описывает эффективность операций с плавающей точкой, File Copy, оценивающий скорость копирования данных, и несколько 2D и 3D-бенчмарков. Полный список тестов можно найти в репозитории на GitHub. Многие из них используют для оценки производительность виртуальных машин в облаке.
Phoronix Test Suite
Этот комплекс тестов разработан авторами веб-ресурса Phoronix, на котором публикуются новости о дистрибутивах GNU/Linux. Впервые Test Suite представили в 2008 году — тогда он включал 23 различных теста. Позже разработчики запустили облачный сервис OpenBenchmarking.org, на котором пользователи могли публиковать собственные тестовые сценарии. Сегодня на нем представлено около 60 бенчмарк-наборов, в том числе связанных с машинным обучением и технологией ray-tracing.
Наборы специализированных скриптов позволяют протестировать отдельные компоненты системы. С их помощью можно оценить время компиляции ядра и кодирования видеофайлов, скорость сжатия архиваторов и др. Для запуска тестов достаточно написать соответствующую команду в консоли. Например, эта команда инициирует оценку производительности CPU:
Во время тестирования Test Suite самостоятельно контролирует состояние оборудования (температуру CPU и скорость вращения кулеров), защищая систему от перегрева.
/ Unsplash / Jason Chen
Vdbench
Инструмент для генерации I/O-нагрузки на дисковые системы, разработанный Oracle. Он помогает оценить производительность и целостность СХД (о том, как посчитать теоретическую производительность дисковой системы, мы подготовили краткую справку).
Работает решение следующим образом: на реальной системе запускается программа SWAT (Sun StorageTek Workload Analysis Tool), которая создает дамп со всеми обращениями к диску за определённый период. Записываются метка времени, тип операции, адрес и размер блока данных. Далее, используя файл с дампом, vdbench эмулирует нагрузку на любой другой системе.
Список параметров для управления утилитой есть в официальном документе Oracle. Исходный код утилиты можно найти на сайте компании.
IOzone
Консольная утилита для оценки производительности файловых систем. Она определяет скорость чтения, записи и перезаписи файлов. В разработке инструмента приняли участие десятки программистов, но автором его первой версии считается инженер Уильям Норкотт (William Norcott). Разработку поддержали такие компании, как Apple, NetApp и iXsystems.
Для управления потоками и их синхронизации во время тестирования инструмент использует стандарт POSIX Threads. По завершении работы IOzone выдает отчет с результатами или в текстовом формате, или в виде электронной таблицы (Excel). Также инструмент имеет в составе скрипт gengnuplot.sh, который строит по данным таблиц трехмерный график. Примеры таких графиков можно найти в документации к инструменту (стр. 11–17).
IOzone доступен в качестве тестового профайла в уже упомянутом Phoronix Test Suite.
Дополнительное чтение из наших блогов и социальных сетей:
Баг в Linux 5.1 приводил к потере данных — корректирующий патч уже вышел
Есть мнение: технология DANE для браузеров провалилась
Зачем нужен мониторинг?
Резервное копирование файлов: как подстраховаться от потери данных
Как перенести системный жесткий диск в виртуальную машину?
Все говорят об утечках ПД — чем поможет IaaS-провайдер
Короткий ликбез: как устроена ЭЦП
Справочная: как работает закон о персональных данных
Источник
Стресс тест процессора в Linux
Прогнал я тест Linpack и задумался: а не пора ли мне поменять термопасту на своём ноутбуке?
Да, по результатам нескольких тестов подряд (не буду захломлять статью картинками) видно, что процессор уходит в троттлинг (пропуск тактов и сброс частоты при нагреве), но вот, как быстро он начинает это делать?
Стресстест процессора в терминале Linux
Задавшись этим вопросом и поискав в интернете утилиты, я понял, что основная проблема в решении поставленной мной задачи — одновременный запуск, как минимум пары утилит и разбегающиеся глаза в двух окнах. И я пришёл к выводу, что мне больше подходит консольный вариант, нежели разноцветные окна открытых программ.
Начал я с sysbench:
sudo apt install sysbench
sysbench —num-threads=4 —test=cpu —cpu-max-prime=100000 run
- —num-threads=4 — это количество потоков, у меня двухъядерный четырёхпотоковый Intel® Core™ i7-640M, поэтому 4;
- —cpu-max-prime=100000 — это максимальное количество выполненных операций, я выставил в 100000, т.к. по умолчанию — 10000, слишком быстро завершают тест.
Потом я перешёл на Linpack. Так как процессор у меня от Intel и я имею некоторую долю лени (лень — двигатель прогресса), то я взял, скачал и распаковал готовый Intel-овский Linpack, предварительно создав в домашнем каталоге директорию linpack:
mkdir ./linpack
cd ./linpack
wget http://registrationcenter-download.intel.com/akdlm/irc_nas/9752/l_mklb_p_2018.3.011.tgz
tar -xvzf ./l_mklb_p_2018.3.011.tgz
Для AMD процессоров такой вариант я бы не стал пробовать, так как компилятор от Intel вставляет закладки, проверяющие процессор и если он не Intel. ну, подумаешь сотню-другую лишних инструкций процессор выполнит и заведомо проиграет в производительности. Для AMD лучше собрать Linpack из исходников, например, из этих. В данной статье сборку из исходников рассматривать не буду — читайте README в source code.
Вернёмся к Intel-овскому Linpack-у. Там много чего лишнего и мне не нужного, а то, что нужно рассмотрю относительно версии 2018.3.011. Сразу же перейду в нужную директорию, чтоб потом не набирать длинные команды:
Так как по умолчанию Intel-овский Linpack заточен под тестирование серверных Xeon-ов, создадим свой файл, который будет использоваться в качестве входных опций — просто уменьшим количество тестов, иначе устанем «пару-тройку дней» ждать завершения теста. У меня Linux Mint LMDE 3, поэтому я использую текстовый редактор xed, да и нравится он мне бОльшим функционалом, особенно, когда из-под root-а его запускать — он цвет на красный меняет. И так, создаём в этой же директории, в которую перешли, файл, например, my_test:
И в созданный файл копируем следующее содержимое:
Shared-memory version of Intel(R) Distribution for LINPACK* Benchmark. *Other names and brands may be claimed as the property of others.
Sample data file lininput_xeon64.
5 # number of tests
1000 2000 5000 10000 20000 # problem sizes
1000 2000 5008 10000 20000 # leading dimensions
4 2 2 2 1 # times to run a test
4 4 4 4 4 # alignment values (in KBytes)
Ну, и собственно запуск Linpack с созданным файлом:
./xlinpack_xeon64 -i ./my_test
Можно ещё заюзать stress-ng или stress, но поставленной мной задачи это всё-равно не решает. Вывода температуры, частот и времени от начала старта эти утилиты мне не показывают.
Температуру может показать sensors — подробнее про установку этой утилиты здесь. И эта утилита понадобится в дальнейшем рассмотрении моего вопроса. Линукс — велик и могуч: одна и та же задача может решаться по-разному. За Си мне лень было браться и я написал недостающую мне часть на BASH, ибо строк получилось не так уж и много. Без установленной sensors мой скрипт работать не будет. Фиксацию троттлинга естесственно не стал писать — его и так будет видно по сбросу частоты и температуре. Вот сам скрипт:
Сильно не ругайте за скидывание управляющих символов в stderr (1>&2), но это дело привычки, если вдруг потом вывод скрипта в файл отправлять, а там все эти ESC-апе последовательности точно не нужны, вот так и будет терминал цветным, а файл чистым. Что-то я отвлёкся.
Я создал файл chk в директории с linpack-ом и записал скрипт в него, Вы можете сделать тоже самое, за исключением xed, если у Вас его нет:
И собственно то, ради чего всё затевалось — тест Linpack cо скриптом:
./chk ./xlinpack_xeon64 -i ./my_test
Да, я вижу, одно ядро нагрелось до критического TDP в 105°C за 86 секунд, но это мне ни о чём не говорит, а вот то, что с 50°C до 80°C процессор нагревается за 2 секунды — это уже показатель: термопасту точно пора менять — два года не менял, а вот с системой охлаждения останется вопрос, который проявят тесты после замены термопасты и термопроводящих прокладок на моём ноутбуке.
Почему именно 80°C я взял за отправную точку? Да просто потому, что именно эта температура заложена в BIOS, как температуры начала скидывания частот, да ещё и начало включения кулера выставлена в 55°C в угоду энергосбережению, но BIOS — InsydeH20, да ещё и с проверкой своей хэш-суммы и белым списком девайсов — та ещё головная боль. будет программатор — займусь им вплотную.
Скрипт писал на скорую руку и с ориентиром на Linpack, но он так же свободно работает и с другими консольными утилитами. Вот запуск с вышеизложенным sysbench:
./chk sysbench —num-threads=4 —test=cpu —cpu-max-prime=100000 run
Как видно из скриншота sysbench не даёт полную нагрузку на процессор, в отличии от Linpack-а.
Вот запуск с утилитой stress (подробнее про stress — здесь):
./chk stress —cpu 16
Естественно выход/окончание теста с утилитой stress осуществляется вручную по CTRL+C, отсюда и Error: 1 выведенная моей переменной PS1 из-за подобной реализации выхода из скрипта через exit 1.
Скрипт можно запустить и без опций, но тогда он только температуру и частоты в почти реальном времени показывает:
В любом случае выход из скрипта осуществляется автоматически, по окончании теста или можно выйти, нажав CTRL + C:
В общем: поставленную для себя задачу я решил и даже лучше — появилась целая надстройка над тестовыми утилитами. Осталось ноутбук разобрать и поменять таки термопасту с прокладками: как вспомню — аж страшно становится.
Источник