Crystal disk mark это хорошая программа, однако ее возможностей не хватает для того чтобы воссоздать реальную работу на сервере и замерять производительность дисковой системы в условиях, которые будут похожи на реальные.
Нам нужно протестировать систему, которая в дальнейшем будет использоваться как сервер 1C или сервер базы данных.
Для этой цели лучше всего использовать программу Iometer. Она хоть и давно не обновляется, но цели свои выполняет хорошо.
Настроек у этой программы много, поэтому мы разберем только те, которые нужны нам.
- Worker. Процесс, который обращается к жестким дискам. Рекомендуется выставлять их столько же, сколько есть физических ядер в системе. По умолчанию программа так и делает.
- Targets. Список дисков, которые есть в системе. Если диск желтого цвета, значит это логический диск. Бирюзовый цвет - физический диск, на котором не созданы логические разделы. Для тестирования лучше использовать логические диски, поскольку Windows может накладывать свои ограничения, которые не будут заметны на физических дисках. Если диск перечеркнут, это означает что на нем нету созданного тестового файла и он будет создан при начале теста.
- Кнопка для копирования worker
- Кнопка для удаления worker
- Maximum disk size. Размер области, которую мы хотим протестировать. Задается в секторах. Один сектор равен 512 байтам. На скриншоте задана область с размером 8 388 608 секторов, что равняется 4GB. Для того чтобы получить размер в гигабайтах нужно разделить количество секторов на 2 097 152.
- # of Outstanding I/Os. Размер очереди дисковых запросов. Базы данных генерируют очень много дисковых запросов и этот параметр отвечает за количество этих дисковых запросов. 64 - это хорошо нагруженная база данных.
- Write IO Data Pattern. Параметр отвечающий за то, что будет писаться в тестовый файл.
- Repeating bytes. Повторение одних и тех же символов
- Pseudo random. Блок случайных символов, который будет повторяться в каждой дисковой операции
- Full random. Полностью случайные данные.
Этот параметр важен для некоторых RAID контроллеров. Чтобы получить максимально корректные данные, лучше всегда использовать режим Full random.
Настройки теста можно задавать несколькими способами:
- Индивидуально для каждого worker. Для этого нужно становиться на каждого worker в секции 1 и задавать нужные параметры. Удобно когда хочется задать разные параметры для разных worker.
- Одинаковые для всех worker. Для этого нужно стать на manager в 1 секции (HarleyLaptop на скриншоте) и задать нужные параметры. При этом важно учитывать что тестируемые диски в секции 2 нужно все равно задавать индивидуально для каждого worker.
- Третий способ тоже для все worker, но более удобный чем второй. Нужно удалить все worker кроме одного, задать настройки для одного worker и потом скопировать его чтобы worker было столько же сколько и физических ядер.
На странице Access specifications выбираем Database pattern. По умолчанию его в программе нет. Загрузить можно из файла настроек.
На странице настроек теста указываем только Run time - продолжительность теста. Чем больше значение тем точнее будет результат.
Запускается тест нажатием на кнопку с зеленым флажком.
На странице результатов есть две настройки отображения
- Results since. Способ подсчета результатов.
- Start of test. Выводит усредненные результаты с начала теста.
- Last Update. Выводит результаты последней операции.
- Update frequency. Частота с которой будут обновляться результаты.
В секции Results Display выводятся результаты теста.
В каждом показателе можно щелкнуть на кнопку с названием результата и выбрать произвольный параметр. В нашем тесте мы используем такие показатели
- Total I/O per second. Количество IOPS в секунду. Ключевой показатель при работе с базами данных, поскольку базы генерируют большое количество операций над небольшими порциями данных. В среднем одному пользователю базы данных требуется 500-700 IOPS.
- Total MBs per Second (Decimal). Количество мегабайт в секунду. Не самый информативный показатель. Может сбивать с толку тем, что на SSD указана намного большая сокрость. Однако обычно производители и тесты показывают скорость линейного чтения, которое не имеет никакого отношения к работе базы данных.
- Average I/O Response Time (ms). Среднее время выполнения операции в милисекундах. Чем меньше этот показатель, тем лучше. В случае базы данных может быть довольно критично, поскольку задержка одной операции, которая выполняется в рамках транзакции, может задержать все остальные операции в других транзакциях. IOmeter не может воспроизвести такие ситуации, поэтому важно следить за этим параметром при выборе конфигурации дисковой подсистемы.
- Maximum I/O Response Time (ms). Максимальное время выполнения операции в милисекундах.
- % CPU utilization. Процент загрузки процессоров.
- Total Error count. Количество ошибок произошедшее во время выполнения операций. Должно равняться 0.
В настройках есть разделение показателей на операции чтения и записи, однако в данном случае нет смысла их выводить, поскольку в Database pattern задано 67/33 соотношение операций чтения и записи, соответственно результаты будут получаться в таком же соотношении.