Я провожу бенчмаркинг узлов, поскольку мы создаем распределенную файловую систему. Поскольку файлы будут распределены и реплицированы на многих узлах, мы используем raid0 на самих узлах. Однако я получаю какие-то странные цифры производительности, и мне интересно, может ли сообщество StackOverflow помочь выяснить, почему. Я использую fio в качестве инструмента для бенчмаркинга; обратите внимание, что версия 1.38 у меня не работает, и мне нужно было использовать версию 1.59 или 1.60.
Вот мой файл конфигурации fio:
[global]
directory=/mnt/gluster
lockfile=readwrite
ioengine=libaio
iodepth=8
rw=randrw
nrfiles=200
openfiles=30
runtime=900
[file]
filesize=16-8k/8M-512M
size=1GiB
Для raid0 с использованием программного raid я получил следующие результаты (вырезав только самое необходимое):
read : io=285240KB, bw=324535 B/s, iops=79 , runt=900011msec
write: io=283532KB, bw=322592 B/s, iops=78 , runt=900011msec
На raid1 с использованием программного raid я получил следующие результаты:
read : io=683808KB, bw=778021 B/s, iops=189 , runt=900000msec
write: io=488184KB, bw=628122 B/s, iops=153 , runt=795864msec
Производительность одного диска по-прежнему выше производительности RAID0:
read : io=546848KB, bw=622179 B/s, iops=151 , runt=900018msec
write: io=486736KB, bw=591126 B/s, iops=144 , runt=843166msec
LVM, распределенный по четырем дискам с экстентами по 4 КБ:
read : io=727036KB, bw=827198 B/s, iops=201 , runt=900007msec
write: io=489424KB, bw=604693 B/s, iops=147 , runt=828800msec
Аппаратный RAID0 (HighPoint RocketRaid 2470)
read : io=326884KB, bw=371918 B/s, iops=90 , runt=900008msec
write: io=328824KB, bw=374125 B/s, iops=91 , runt=900008msec
Обратите внимание, что первые четыре результата выше получены только на контроллерах SATA материнской платы. Однако я воспроизвел результаты с программным RAID после перехода на карту RocketRaid. Это диски SATA емкостью 1 ТБ. Запуск многопоточных тестов дал примерно такие же результаты. Есть ли причина, по которой RAID0 будет работать так медленно? Я думал, что он обеспечит производительность случайного ввода-вывода, которая будет выше, чем у одного диска или RAID1.
Продолжение: Основываясь на некоторых предложениях Джо из Scalable Informatics (хороший парень, покупайте его вещи!), я изменил свой тест, чтобы использовать более глубокую очередь и более случайный размер блока.
[global]
directory=/mnt/glusterfs
lockfile=readwrite
ioengine=libaio
iodepth=32
rw=randrw
numjobs=8
[file]
filesize=16-8k/8M-512M
blocksize_range=64k-1M
size=1GiB
nrfiles=50
openfiles=8
runtime=900
И в итоге карта HighPoint RocketRaid 2740 — отстой.
- Производительность одного диска (материнская плата SuperMicro SATA): 43,2 МБ/с чтение, 42,6 МБ/с запись
- MD Raid 0 (RocketRAID используется как HBA, с загруженными драйверами или без них): 53,1 МБ/с чтение, 54,1 МБ/с запись
- RocketRaid Raid 0: 29,4 МБ/с чтение, 29,2 МБ/с запись
- MD RAID 0 (материнская плата SATA): 58,0 МБ/с чтение, 58,3 МБ/с запись
Производительность при подключении к карте RocketRaid снизилась по всем показателям.
Я оставлю этот вопрос открытым — в течение следующей недели или двух мы получим новый набор карт RAID для тестирования, и я все еще ищу советы по оптимизации, чтобы получить производительность, превышающую производительность одного диска, на который, похоже, не было дано исчерпывающего ответа.
решение1
Вы можете столкнуться с проблемой размера полосы, когда записанные или прочитанные данные занимают слишком много места на одном диске — см.программное обеспечение RAID howtoдля получения подробной информации. Вы можете проверить, так ли это, посмотрев на выводiostat.
Если вы хотите проверить производительность линейного доступа, попробуйте использовать «hdparm -t» или dd для тестирования — это должно показать показатели производительности, которые примерно вдвое превышают производительность одного диска.
решение2
Я думал, что он обеспечит производительность случайного ввода-вывода, превосходящую производительность одного диска или RAID1.
Нет, если блоки, которые вы ищете случайным образом, больше размера полосы, то это должно быть примерно со скоростью одного диска. Что все еще не объясняет ваши результаты, которые хуже, чем у одного диска.
Отвикипедия.
Для операций чтения и записи, превышающих размер полосы, таких как копирование файлов или воспроизведение видео, диски будут стремиться к одной и той же позиции на каждом диске,поэтому время поиска массива будет таким же, как и у одного диска. Для операций чтения и записи, меньших размера полосы, таких как доступ к базе данных, диски смогут выполнять поиск независимо.