SSD Raid производительность

Disks: 10xSSD Ultrastar SS200 960GB 12GB/s Raid 0, 6, 10.
Controller: LSI Syncro 9380-8e
Filesystem: ext4 without LVM
System: Centos 7
2x E5620  @ 2.40GHz
32GB RAM
fio-2.1.10: --iodepth=32 --ioengine=libaio --rw=randrw --bs=4k --size 10000M -numjobs=10

В начале тестирования у меня было около 60 тыс. IOPS в рейде 0, через 2-3 минуты счетчик падает до 2-5 тыс. IOPS.

Начните:

 Jobs: 10 (f=10): [mmmmmmmmmm] [10.6% done] [123.6MB/123.6MB/0KB /s] [31.7K/31.7K/0 iops] [eta 13m:40s]

После:

 Jobs: 10 (f=10): [mmmmmmmmmm] [14.5% done] [4839KB/4723KB/0KB /s] [1209/1180/0 iops] [eta 14m:18s]

Вершина в этот момент:

 top - 09:19:06 up  4:45,  2 users,  load average: 10.41, 5.78, 2.41
 Tasks: 282 total,   2 running, 280 sleeping,   0 stopped,   0 zombie
 %Cpu(s):  0.6 us,  3.5 sy,  0.0 ni, 42.8 id, 52.9 wa,  0.0 hi,  0.3 si,       0.0 st
 KiB Mem : 32769764 total,   214292 free,   334168 used, 32221304 buff/cache
 KiB Swap: 16515068 total, 16515068 free,        0 used. 31963788 avail Mem

Я думаю, что это низкая производительность для 10 ssd (60K iops rw), даже каждый диск может обрабатывать 30-40 iops.

Я пробовал 2 разных контроллера, 3 типа рейда, windows и linux - у меня один и тот же результат тестирования. В чем моя проблема? Как понять, почему производительность слишком низкая и почему у меня огромные потери производительности? Я слышал о резервной области SSD, но я все еще не понимаю, как перенастроить его.

1 ответ

Этому заданию fio разрешено выполнять буферизованные записи, и, таким образом, данные записи могут быть буферизованы в ОЗУ и отправлены только на диск (посредством обратной записи) в более поздний момент. Учитывая это, одним из объяснений может быть то, что первоначально большая часть ввода-вывода идет в ОЗУ, но затем в какой-то момент буфер ОЗУ начинает сбрасываться, и данные фактически должны отправляться в резервное хранилище, вызывая новый ввод-вывод в буфер. приходится ждать, ведя к более медленной скорости.

Также обратите внимание, что, как указывает документация fio, libaio ioengine может не быть асинхронным при использовании режима буферизованного ввода-вывода, и вы используете его для ввода-вывода в файловую систему ext4 (которая снова может вызывать больше блокировок).

Наконец, вы уверены, что ваш контроллер поддерживает iodepth 320 (32 x 10) - это возможно, но стоит проверить...

TLDR; результаты работы fio могут быть сильно искажены буферизацией и могут не достичь ожидаемой глубины ввода / вывода.

Другие вопросы по тегам