Тестирование производительности Linux сервера с Sysbench
Для того, чтобы получить быстрое представление о производительности системы, а тем более сравнить её с другой, можно воспользоваться простой консольной утилитой sysbench.
На углубленном курсе «Архитектура современных компьютерных сетей» вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Установка sysbench
Во времена Centos программу приходилось ставить либо вручную, либо из стороннего репозитория. В Debian Sysbench можно установить из базового репозитория:
# apt install sysbench
Если в вашей системе нет этого пакета, то можно подключить отдельный репозиторий, который предлагают разработчики. Инструкция есть в официальном репозитории на github.
Тестирование CPU
Для CPU, судя по man утилиты, есть только один тест — —cpu-max-prime, генератор простых чисел. Можно указать верхнюю границу чисел, а можно этого не делать. По умолчанию запускается в одном потоке на одном ядре CPU на 10 секунд с лимитом в 10000:
# sysbench cpu run
Смотрим на events per second и total number of events, чем больше, тем лучше.
Тест производительности оперативной памяти
Тест памяти с помощью sysbench выглядит следующим образом:
# sysbench memory run
Смотреть надо на Total operations или transferred MiB/sec. В абсолютных значениях это мало что скажет. Подойдёт для сравнения двух серверов.
Тестирование диска в Linux с помощью sysbench
С тестированием диска не всё очевидно и просто. Там уже имеет смысл заморочиться с параметрами, так надо учесть системный кэш, кэш гипервизора, если он есть, кэш рейд контроллера, если он используется и т.д. То есть надо немного разбираться в теме, иначе можно получить неверные представления о результатах теста. Как минимум, надо задать размер тестового файла больше оперативной памяти сервера и выбрать тип операций для теста. Например, запустим тест на последовательную запись суммарного объёма файлов в 10G:
# sysbench fileio --file-total-size=10G --file-test-mode=seqwr run
По умолчанию запись идёт в один поток. В результатах смотреть надо на 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 много, в рамках короткой заметки это всё не рассказать. Надеюсь, показал главное — этой утилитой достаточно легко пользоваться. Не надо долго разбираться. Можно быстро оценить производительность, сравнить разные виртуальные машины или конфигурации mysql / postgresql.
Заключение
Такая вот простая и полезная утилита. Я во время написания заметки гонял её на двух разных VPS. По памяти и процу разница была примерно в 1,5-2 раза. А по диску почти идентично. Когда ты арендуешь виртуалку, невозможно оценить, насколько стоимость будет соотноситься с производительностью. Только на тестах можно это увидеть.
Sysbench, кстати, можно гонять и в Windows, в WSL. Я погонял на своём рабочем ноуте в виртуалке HyperV и в WSL. Тесты по CPU и Памяти идентичны в пределах стат погрешностей. Сделал несколько прогонов. Думал, что по диску будет разница, но тоже нет. Тесты последовательной записи проходят идентично. Другие не делал.
На углубленном курсе «Архитектура современных компьютерных сетей» вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Помогла статья? Подписывайся на telegram канал автора
Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.
Qiziqarli malumotlar
Тестирование производительности Linux сервера с Sysbench