首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >硬件RAID5设置中5个SSD的低随机读IOP

硬件RAID5设置中5个SSD的低随机读IOP
EN

Server Fault用户
提问于 2019-02-13 00:12:07
回答 1查看 809关注 0票数 3

我们有5个东芝Px04Srb192 SSD(270 K随机读取IOP按规格),设置在硬件Raid5。运行fio是给250 K IOP,这是远远低于我的预期。

代码语言:javascript
复制
/fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=/ae/disk1/test --bs=4k --iodepth=96 --numjobs=1 --size=8g --readwrite=randread

test: (g=0): rw=randread, bs=4K-4K/4K-4K, ioengine=libaio, iodepth=96
fio-2.0.9
Starting 1 process
Jobs: 1 (f=1): [r] [100.0% done] [961.6M/0K /s] [246K/0  iops] [eta 00m:00s]
test: (groupid=0, jobs=1): err= 0: pid=342604: Tue Feb 12 23:58:01 2019
  read : io=8192.0MB, bw=991796KB/s, iops=247948 , runt=  8458msec
  cpu          : usr=10.88%, sys=87.74%, ctx=437, majf=0, minf=115
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.1%
     issued    : total=r=2097152/w=0/d=0, short=r=0/w=0/d=0

Run status group 0 (all jobs):
   READ: io=8192.0MB, aggrb=991795KB/s, minb=991795KB/s, maxb=991795KB/s, mint=8458msec, maxt=8458msec

Disk stats (read/write):
  sdb: ios=2083688/0, merge=0/0, ticks=265238/0, in_queue=265020, util=98.53

lspci -nn | grep RAID
18:00.0 RAID bus controller [0104]: LSI Logic / Symbios Logic MegaRAID Tri-Mode SAS3508 [1000:0016] (rev 01)

我原以为5个SSD的IOPs至少是个人SSD的2倍。是那么回事吗?有什么建议可以解释为什么我们看到低IOP吗?

EN

回答 1

Server Fault用户

发布于 2019-02-14 06:24:29

(你的fio版本很古老!请参阅https://github.com/axboe/fio/releases以查看上游已达到什么程度.)

你在其他答案中得到的反馈是好的,但我想强调这一点:

代码语言:javascript
复制
  cpu          : usr=10.88%, sys=87.74%, ctx=437, majf=0, minf=115

如果我们将您的用户空间和内核系统百分比相加,我们将得到98.62%。有一个强烈的建议是,您没有更多的CPU时间来发送更多的I/O(请注意,您已经在使用我通常反对的更快的gtod_reduce=1条,但在您的情况下,它看起来是合适的)。

不过还有几件事..。

代码语言:javascript
复制
  sdb: ios=2083688/0, merge=0/0, ticks=265238/0, in_queue=265020, util=98.53

这意味着您的RAID控制器呈现的“磁盘”非常繁忙(看看util百分比)。这是需要记住的事情。

您是否通过文件系统(/ae/disk1/)中的文件执行I/O操作?如果是这样的话,您是否知道文件系统会增加一些开销,并且可能不会提供您所期望的O_DIRECT行为?您可能希望从在块级别(即/dev/sdb)执行I/O开始,并以您的方式来确定任何开销是什么(警告:小心--如果使用不当,fio可能会破坏数据)。

如果你真的要走得更快,我想你需要:

  • 在块设备级别执行I/O操作。
  • 使用多个线程或进程(例如通过增加numjobs)。这样,fio线程/进程可能会迁移到不同的CPU(但请注意,一切都需要付出代价).
  • 开始调整提交和收获I/O的批次。
  • 开始调整内核。

正如我所说,大多数人都需要这么长的时间,这是很少见的,但也许你是例外之一:-)。fio邮件列表中的线程回复"推荐的压力测试工作文件PCI“提到了以下内容:

您可能会看到使用线程(线程)而不是进程的好处(每个磁盘的负载更多)。每个磁盘还可能需要使用多个线程。有关更多选项,请参见http://fio.readthedocs.io/en/latest/fio_doc.htmlhttps://www.spinics.net/lists/fio/msg05451.htmlhttp://marc.info/?l=linux-kernel&m=140313968523237&w=2都给出了使用fio驱动高负载的人的例子,因此这些示例可能更有用。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/953632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档