Тестирование производительности Linux сервера с Sysbench

Тестирование производительности Linux сервера с Sysbench

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

Онлайн-курс по устройству компьютерных сетей

На углубленном курсе «Архитектура современных компьютерных сетей» вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Установка sysbench

Во времена Centos программу приходилось ставить либо вручную, либо из стороннего репозитория. В Debian Sysbench можно установить из базового репозитория:

# apt install sysbench

Установка sysbench

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

Тестирование CPU

Для CPU, судя по man утилиты, есть только один тест — —cpu-max-prime, генератор простых чисел. Можно указать верхнюю границу чисел, а можно этого не делать. По умолчанию запускается в одном потоке на одном ядре CPU на 10 секунд с лимитом в 10000:

# sysbench cpu run

Тест CPU в Linux

Смотрим на events per second и total number of events, чем больше, тем лучше.

Тест производительности оперативной памяти

Тест памяти с помощью sysbench выглядит следующим образом:

# sysbench memory run

Тестирование оперативной памяти в Linux

Смотреть надо на Total operations или transferred MiB/sec. В абсолютных значениях это мало что скажет. Подойдёт для сравнения двух серверов.

Тестирование диска в Linux с помощью sysbench

С тестированием диска не всё очевидно и просто. Там уже имеет смысл заморочиться с параметрами, так надо учесть системный кэш, кэш гипервизора, если он есть, кэш рейд контроллера, если он используется и т.д. То есть надо немного разбираться в теме, иначе можно получить неверные представления о результатах теста. Как минимум, надо задать размер тестового файла больше оперативной памяти сервера и выбрать тип операций для теста. Например, запустим тест на последовательную запись суммарного объёма файлов в 10G:

# sysbench fileio --file-total-size=10G --file-test-mode=seqwr run

Тестирование диска в Linux с помощью sysbench

По умолчанию запись идёт в один поток. В результатах смотреть надо на Throughput written, MiB/s, total number of events. Тут ещё на Latency имеет смысл посмотреть. Важный параметр для дисков.

Посмотреть все доступные настройки можно так:

# sysbench fileio help

В целом, там более-менее всё понятно по описанию. Можно менять количество потоков, размер блоков, типы операций, использование флагов sync, dsync или direct. Если вам всё это не знакомо, имеет смысл изучить. Это нужная база для понимания работы в Linux с дисками.

После работы тестов диска, остаются тестовые файлы. Их надо удалить либо вручную, либо автоматически:

# sysbench fileio --file-total-size=10G --file-test-mode=seqwr cleanup

Запускаете ту же команду, только на конце не run, а cleanup.

Тестирование производительности Mysql или Postgresql

Список доступных тестов Mysql или PostgreSQL можно посмотреть в директории /usr/share/sysbench/. Перед началом тестов, надо создать тестовую базу:

> create database sbtest;

Я буду подключаться локально, авторизация через root уже настроена. Наполняем тестовую базу данными. Будут 16 таблиц по 10000 строк в каждой.

# sysbench 
--db-driver=mysql 
--mysql-user=root 
--mysql-db=sbtest 
--mysql-host=127.0.0.1 
--mysql-port=3306 
--tables=16 
--table-size=10000 
/usr/share/sysbench/oltp_read_write.lua prepare

Смотрим, что получилось:

# du -sh /var/lib/mysql/sbtest/
161M /var/lib/mysql/sbtest/

После этого запускаем сам тест oltp_read_write на 10 секунд:

# sysbench 
--db-driver=mysql 
--mysql-user=root 
--mysql-db=sbtest 
--mysql-host=127.0.0.1 
--mysql-port=3306 
--tables=16 
--table-size=10000 
--threads=4 
--time=10 
--events=0 
--report-interval=1 
/usr/share/sysbench/oltp_read_write.lua run

sysbench

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

Заключение

Такая вот простая и полезная утилита. Я во время написания заметки гонял её на двух разных VPS. По памяти и процу разница была примерно в 1,5-2 раза. А по диску почти идентично. Когда ты арендуешь виртуалку, невозможно оценить, насколько стоимость будет соотноситься с производительностью. Только на тестах можно это увидеть.

Sysbench, кстати, можно гонять и в Windows, в WSL. Я погонял на своём рабочем ноуте в виртуалке HyperV и в WSL. Тесты по CPU и Памяти идентичны в пределах стат погрешностей. Сделал несколько прогонов. Думал, что по диску будет разница, но тоже нет. Тесты последовательной записи проходят идентично. Другие не делал.

Онлайн-курс по устройству компьютерных сетей.

На углубленном курсе «Архитектура современных компьютерных сетей» вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Qiziqarli malumotlar
Тестирование производительности Linux сервера с Sysbench