SSD Raid 性能

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

测试开始时,我在 raid 0 中有大约 60k IOPS,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 种类型的 raid、Windows 和 Linux 系统 - 测试结果相同。我的问题是什么?如何理解为什么性能太低以及为什么我的性能下降很大?我听说过 SSD 备用区域,但我仍然不明白如何重新配置​​它。

答案1

该 fio 作业被允许执行缓冲写入,因此写入数据可以在 RAM 中缓冲,并且稍后才发送到磁盘(通过写回)。鉴于此,一种解释可能是最初大部分 I/O 都进入 RAM,但随后在某个时候 RAM 缓冲区开始刷新,数据实际上必须发送到后备存储,导致新 I/O 进入缓冲区必须等待,从而导致速度变慢。

还要注意的是,fio 文档指出,使用缓冲 I/O 时,libaio ioengine 可能不是异步的模式并且您正在使用它对 ext4 文件系统进行 I/O(这又会引发更多阻塞)。

最后,您确定您的控制器支持 320(32 x 10)的 iodepth 吗 - 它可能支持,但值得检查...

TLDR;fio 作业的结果可能因缓冲而严重扭曲,并且可能无法达到预期的 I/O 深度。

相关内容