Назад | Перейти на главную страницу

Производительность 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

В начале тестирования у меня было около 60k IOPS в рейде 0, через 2-3 минуты счетчик упал до 2-5k 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, но до сих пор не понимаю, как ее перенастроить.

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

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

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

TL; DR; результаты задания fio могут сильно искажаться из-за буферизации и могут не обеспечивать ожидаемую глубину ввода-вывода.