Как мы тестируем серверы
Периодически в мою хабраленту попадают материалы о сравнительном тестировании разнообразных серверов, по прочтении которых возникает вопрос: "и что?". Что померили, в смысле, и как. Глядишь вот так, на результаты, полученные какой-нибудь SiSandra или PassMark и думаешь: а насколько эти тесты вообще имеют отношение к реальности? Или вот, скажем, мерили производительность дискового массива, а результаты получили для оперативной памяти...Таким образом и родилась мысль, что неплохо бы подобрать среду для тестирования такую, которая предоставит результаты не в виде сферовакуумных попугаев, а в чем-то менее абстрактном.
В общем-то, простейшие тесты производительности можно произвести так: запустить ресурсоемкую задачу и замерить время выполнения. Например, скомпилировать что-нибудь:
time make -j$(echo "$(grep processor /proc/cpuinfo|wc -l)*2"|bc)
Попутно можно снимать данные о нагруженности системы, температуру с датчиков... А еще неплохо бы поделиться результатами с общественностью, да так, чтобы любой мог повторить тот же самый бенчмарк на своем железе и наглядно сравнить. Да и централизованная система по раздаче тестов явно не помешает, чтобы не бегать по ssh или rdp по куче серверов.
Как нельзя лучше под задачу подходит Phoronix Test Suite : бенчмарк-среда с открытыми исходным кодом и возможностью выкладывать и обмениваться результатами в Сети через тот же openbenchmarking.org, предоставляющий уйму тестов для тех или иных компонентов, либо всей системы в целом.
Устанавливаем:
$wget http://phoronix-test-suite.com/releases/repo/pts.debian/files/phoronix-test-suite_6.0.1_all.deb $sudo dpkg -i phoronix-test-suite_6.0.1_all.deb $sudo apt-get -f install
Настраиваем тестирование без лишних запросов с выкладыванием результатов на openbenchmarking.org:
$phoronix-test-suite batch-setup These are the default configuration options for when running the Phoronix Test Suite in a batch mode (i.e. running phoronix-test-suite ba tch-benchmark universe). Running in a batch mode is designed to be as autonomous as possible, except for where you'd like any end-user interaction. Save test results when in batch mode (Y/n): y Open the web browser automatically when in batch mode (y/N): n Auto upload the results to OpenBenchmarking.org (Y/n): y Prompt for test identifier (Y/n): Y Prompt for test description (Y/n): n Prompt for saved results file-name (Y/n): n Run all test options (Y/n): y Batch settings saved.
Монтируем дисковый массив, на котором будет проводиться бенчмаркинг:
#mkfs.ext4 /dev/sda #mount /dev/sda /var/lib/phoronix-test-suite/installed-tests
Подготавливаем нужные нам тесты:
#phoronix-test-suite install-dependencies fio blogbench ramspeed compress-7zip ffmpeg scimark2 nginx apache pgbench build-linux-kernel
В принципе, можно запустить все одним пакетом, но такое тестирование займет достаточно длительное время:
echo 'ProLiant DL360p Gen8'| phoronix-test-suite batch-benchmark fio blogbench ramspeed compress-7zip ffmpeg scimark2 nginx apache pgbench build-linux-kernel
Веб-интерфейс
У phoronix есть вот такой веб интерфейс:
Запуcкается он так:
$phoronix-test-suite gui o start server run new script: /tmp/tmp.OkRpZQCQTj/web-server-launcher PHP 5.6.16-2 Development Server started at Thu Dec 24 11:13:54 2015 Listening on http://localhost:2737 Document root is /usr/share/phoronix-test-suite/pts-core/web-interface Press Ctrl-C to quit. WebSocket Server Active: localhost:2736 Launch: http://localhost:2737 Press [ENTER] to kill server...
Но лично мне он не понравился: как-то не слишком отзывчиво работает.
Также имеется бенчмарк-сервер Phoromatic, позволяющий запускать тестирование сразу на нескольких системах, собирая с них данные. Запускаем:
$phoronix-test-suite start-phoromatic-server Port 8961 chosen as random port for this instance. Change the default port via the Phoronix Test Suite user configuration file. Phoronix Test Suite v6.0.1 (Hammerfest) starting Phoromatic Server Phoronix Test Suite User-Data Directory Path: /home/c6/.phoronix-test-suite/ Phoronix Test Suite Configuration File: /home/c6/.phoronix-test-suite/user-config.xml Phoromatic Server Log File: /home/c6/.phoronix-test-suite/phoromatic.log WebSocket Server Active: localhost:8322 The Phoromatic Web Interface Is Accessible At: http://localhost:8961
Как видно, веб-интерфейс Phoromatic'a доступен по адресу http://localhost:8961 . Следуя рекомендации сервера, выполняем на тестируемых машинах:
$phoronix-test-suite phoromatic.connect 192.168.3.196:8961/MTHM9F phoronix-test-suite phoromatic.connect 192.168.3.196:8961/MTHM9F Phoronix Test Suite v6.0.1 Server IP: 192.168.3.196 Server HTTP Port: 8961 Account ID: MTHM9F
Далее, можно сформировать профиль тестирования, укомплектовав нужными тестами:
Обработка результатов
Что меня очень порадовало в Phoronix'e, так это как он представляет результаты: их экспортировать в csv для дальнейшей обработки, в pdf, либо автоматически выложить на сайт openbenchmarking.org. Если опция отправки результатов включена, то по окончании теста, phoronix предоставит ссылку:
Apache Benchmark 2.4.7: pts/apache-1.6.1 [Static Web Page Serving] Test 1 of 1 Estimated Trial Run Count: 3 Estimated Time To Completion: 9 Minutes (01:16 UTC) Running Pre-Test Script @ 01:07:34 Started Run 1 @ 01:07:39 Started Run 2 @ 01:08:26 Started Run 3 @ 01:09:15 [Std. Dev: 1.88%] Running Post-Test Script @ 01:10:02 Test Results: 21711.44 21062.92 21807.64 Average: 21527.33 Requests Per Second Results Uploaded To: http://openbenchmarking.org/result/1512249-D7S2-151224144
Не стоит забывать про синхронизацию времени: если сильно расходится, будут проблемы при сборке и выкачивании некоторых архивов.
Итак, провели некторое количество тестов, результаты автоматически отправляются на openbenchmarking.org.
Например, Apache Benchmark, демонстрирующий, сколько запросов в секунду потянет система: http://openbenchmarking.org/result/1601111-HA-1512285HA26
Так, здесь можно не только полюбоваться графиками и скачать отчет в нужном формате, но и добавить к сравнению результаты, проводимые другими пользователями:
А затем наглядно сравнить плюсы и минусы конфигураций:
Так, можно оценить производительность процессоров для кодировании видео и, скажем, подобрать себе конфигурацию под видеохостинг.
Или поглядеть табличку результатов систем других пользователей, проводивших данный тест:
Производительность оперативной памяти? Не проблема:
В общем, Phoronix Test Suite -- это мощная и удобная система для оценки производительности, на голову превосходящая всевозможные десктопные тестилки, в том числе и коммерческие.