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 могут быть сильно искажены буферизацией и могут не достичь ожидаемой глубины ввода / вывода.