HP DL380 G7 + Smart Array P410i + sysbench-> RAID 10性能不佳


8

我正在运行的系统具有较低的IO利用率:

  1. 惠普DL380G7(24gb RAM)
  2. 具有512mb电池支持的写缓存的Smart Array p410i
  3. RAID10中的6个SAS 10k rpm 146gb驱动器
  4. Debian Squeze linux,ext4 + LVM,hpacucli已安装

iostat(cciss / c0d1 = raid10阵列,dm-7 = 60G用于测试的lvm分区):

设备:rrqm / s wrqm / sr / sw / s rMB / s wMB / s avgrq-sz avgqu-sz等待svctm%util
cciss / c0d0 0,00 101,20 0,00 6,20 0,00 0,42 138,58 0,00 0,00 0,00 0,00
cciss / c0d1 0,00 395,20 3,20 130,20 0,18 2,05 34,29 0,04 0,26 0,16 2,08
dm-0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-2 0,00 0,00 3,20 391,00 0,18 1,53 8,87 0,04 0,11 0,05 1,84
dm-3 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-4 0,00 0,00 0,00 106,80 0,00 0,42 8,00 0,00 0,00 0,00 0,00
dm-5 0,00 0,00 0,00 0,60 0,00 0,00 8,00 0,00 0,00 0,00 0,00
dm-6 0,00 0,00 0,00 2,80 0,00 0,01 8,00 0,00 0,00 0,00 0,00
dm-1 0,00 0,00 0,00 132,00 0,00 0,52 8,00 0,00 0,02 0,01 0,16
dm-7 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-8 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00

hpacucli“ ctrl全部显示配置”

插槽0(嵌入式)中的Smart Array P410i(sn:5001438011FF14E0)

   阵列A(SAS,未使用的空间:0 MB)


      逻辑驱动器1(136.7 GB,RAID 1,确定)

      物理驱动器1I:1:1(端口1I:box 1:托架1,SAS,146 GB,确定)
      物理驱动器1I:1:2(端口1I:box 1:托架2,SAS,146 GB,确定)

   阵列B(SAS,未使用空间:0 MB)


      逻辑驱动器2(410.1 GB,RAID 1 + 0,确定)

      物理驱动器1I:1:3(端口1I:box 1:托架3,SAS,146 GB,确定)
      物理驱动器1I:1:4(端口1I:box 1:托架4,托架4,SAS,146 GB,正常)
      物理驱动器2I:1:5(端口2I:box 1:托架5,SAS,146 GB,确定)
      物理驱动器2I:1:6(端口2I:box 1:托架6,SAS,146 GB,确定)
      物理驱动器2I:1:7(端口2I:box 1:托架7,SAS,146 GB,确定)
      物理驱动器2I:1:8(端口2I:box 1:托架8,SAS,146 GB,确定)

   SEP(供应商ID PMCSIERA,型号SRC 8x6G)250(WWID:5001438011FF14EF)

hpacucli“ ctrl全部显示状态”

插槽0中的Smart Array P410i(嵌入式)
   控制器状态:正常
   缓存状态:确定
   电池/电容器状态:正常

Sysbench命令

sysbench --init-rng = on --test = fileio --num-threads = 16 --file-num = 128 --file-block-size = 4K --file-total-size = 54G --file-test -mode = rndrd --file-fsync-freq = 0 --file-fsync-end =关闭运行--max-requests = 30000

Sysbench结果

sysbench 0.4.12:多线程系统评估基准

使用以下选项运行测试:
线程数:16
从计时器初始化随机数生成器。


额外的文件打开标志:0
128个文件,每个432Mb
文件总大小为54Gb
块大小4Kb
随机IO的随机请求数:30000
组合随机IO测试的读/写比:1.50
使用同步I / O模式
做随机读取测试
线程开始了!
做完了

执行的操作:30000个读,0个写,0个其他= 30000合计
读取117.19Mb写入0b传输总数117.19Mb(935.71Kb / sec)
  233.93请求/秒

测试执行摘要:
    总时间:128.2455s
    活动总数:30000
    事件执行所花费的总时间:2051.5525
    每个请求的统计信息:
         最小值:0.00ms
         平均:68.39ms
         最多:2010.15ms
         大约 95%:660.40毫秒

线程公平性:
    事件(avg / stddev):1875.0000 / 111.75
    执行时间(avg / stddev):128.2220 / 0.02

测试期间的iostat

avg-cpu:%user%nice%system%iowait%steal%idle
           0,00 0,01 0,10 31,03 0,00 68,86

设备:rrqm / s wrqm / sr / sw / s rMB / s wMB / s avgrq-sz avgqu-sz等待svctm%util
cciss / c0d0 0,00 0,10 0,00 0,60 0,00 0,00 9,33 0,00 0,00 0,00 0,00
cciss / c0d1 0,00 46,30 208,50 1,30 0,82 0,10 8,99 29,03 119,75 4,77 100,00
dm-0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-2 0,00 0,00 0,00 51,60 0,00 0,20 8,00 49,72 877,26 19,38 100,00
dm-3 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-4 0,00 0,00 0,00 0,70 0,00 0,00 8,00 0,00 0,00 0,00 0,00
dm-5 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-6 0,00 0,00 0,00 0,00 0,00 0,00 0,00 7,00 0,00 0,00 100,00
dm-1 0,00 0,00 0,00 0,00 0,00 0,00 0,00 7,00 0,00 0,00 100,00
dm-7 0,00 0,00 208,50 0,00 0,82 0,00 8,04 25,00 75,29 4,80 100,00
dm-8 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00

Bonnie ++ v1.96

cmd:/ usr / sbin / bonnie ++ -c 16 -n 0

一次写入一个字节...完成
智能写作...完成
重写...完成
一次读取一个字节...完成
智能阅读...完成
开始...完成...完成...完成...完成...完成...
版本1.96--顺序输出---顺序输入--随机-
并发16-每Chr--块--重写--每Chr--块--寻求-
机器尺寸K /秒%CP K /秒%CP K /秒%CP K /秒%CP K /秒%CP /秒%CP
seo-db 48304M 819 99 188274 17 98395 8 2652 78 201280 8 265.2 1
延迟14899us 726ms 15194ms 100ms 122ms 665ms

1.96,1.96,seo-db,16,1337541936,48304M ,, 819,99,188274,17,98395,8,2652,78,201280,8,265.2,1 ,,,,,,,,,,,,, ,,, 14899us,726ms,15194ms,100ms,122ms,665ms ,,,,,

问题

因此,sysbench每秒显示234次随机读取。
我希望至少是400。
瓶颈可能是什么?LVM?
另一个带有mdadm raid1 + 2x 7200rpm驱动器的系统每秒显示200多次随机读取...

谢谢你的帮助!


条带大小是多少?iostat似乎sysbench只能在一个物理驱动器上工作。
德米特里·丘巴罗夫

hpacucli说,条带大小为256k。iostat的DM-x设备不是物理驱动器,而是lvm分区。DM-7是60gb的lvm分区,我在其中运行sysbench。
Oleg Golovanov

使用此特定sysbench命令行,您到底要测试什么?您是否在模拟实际使用场景?
ewwhite

我正在模拟内部使用4kb块的PostgreSql数据库。我的应用程序对大数据文件进行了大量随机读取/写入操作(在测试时应用程序停止了)
Oleg Golovanov 2012年

Answers:


10

根据硬件规格,您的系统肯定表现不佳。我将该sysbench实用程序加载到了几个运行CentOS 5/6的HP ProLiant DL380 G6 / G7空闲服务器上,以检查其性能。这些是普通的固定分区,而不是LVM。(由于HP Smart Array控制器提供的灵活性,我通常不使用LVM)

DL380 G6在Smart Array P410控制器上具有6磁盘RAID 1 + 0阵列,并具有5​​12MB电池支持的缓存。DL380 G7具有2磁盘企业SLC SSD阵列。文件系统是XFS。我使用了与您相同的sysbench命令行:

sysbench --init-rng=on --test=fileio --num-threads=16 --file-num=128 --file-block-size=4K --file-total-size=54G --file-test-mode=rndrd --file-fsync-freq=0 --file-fsync-end=off --max-requests=30000 run

我的结果是在6个磁盘上每秒进行1595次随机读取
在SSD上,结果是每秒39047次随机读取。完整结果在这篇文章的结尾...

  • 至于您的设置,首先让我惊讶的是您的测试分区的大小。您即将用54GB的测试文件填充60GB的分区。我不确定ext4是否有90%以上的性能问题,但这是您修改和重新测试的最快方法。(或使用较小的一组测试数据)

  • 即使使用LVM,此控制器/磁盘设置上也有一些可用的调整选项。检查预读并将I / O调度程序设置从默认cfq更改为截止日期或无操作是有帮助的。请在以下位置查看问题和答案:Linux-实际硬件RAID控制器调整(scsi和cciss)

  • 您的RAID控制器缓存比率是多少?我通常使用75%/ 25%的写入/读取余额。这应该是一个快速测试。6磁盘阵列在18秒内完成。您的时间超过了2分钟。

  • 您可以在有问题的分区/阵列上运行bonnie ++iozone测试吗?看看系统上是否还有其他瓶颈会很有帮助。我对sysbench并不熟悉,但是我认为这些其他工具可以使您更好地了解系统功能。

  • 文件系统挂载选项可能会有所不同,但我认为问题可能比这更深。

hpacucli输出...

Smart Array P410i in Slot 0 (Embedded)    (sn: 50123456789ABCDE)

   array A (SAS, Unused Space: 0 MB)

      logicaldrive 1 (838.1 GB, RAID 1+0, OK)

      physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS, 300 GB, OK)
      physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS, 300 GB, OK)
      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SAS, 300 GB, OK)
      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SAS, 300 GB, OK)
      physicaldrive 2I:1:5 (port 2I:box 1:bay 5, SAS, 300 GB, OK)
      physicaldrive 2I:1:6 (port 2I:box 1:bay 6, SAS, 300 GB, OK)

   SEP (Vendor ID PMCSIERA, Model  SRC 8x6G) 250 (WWID: 50123456789ABCED)

sysbench DL380 G6 6盘结果...

sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 16
Initializing random number generator from timer.

Extra file open flags: 0
128 files, 432Mb each
54Gb total file size
Block size 4Kb
Number of random requests for random IO: 30000
Read/Write ratio for combined random IO test: 1.50
Using synchronous I/O mode
Doing random read test
Threads started!
Done.

Operations performed:  30001 Read, 0 Write, 0 Other = 30001 Total
Read 117.19Mb  Written 0b  Total transferred 117.19Mb  (6.2292Mb/sec)
 1594.67 Requests/sec executed

Test execution summary:
    total time:                          18.8133s
    total number of events:              30001
    total time taken by event execution: 300.7545
    per-request statistics:
         min:                                  0.00ms
         avg:                                 10.02ms
         max:                                277.41ms
         approx.  95 percentile:              25.58ms

Threads fairness:
    events (avg/stddev):           1875.0625/41.46
    execution time (avg/stddev):   18.7972/0.01

sysbench DL380 G7 SSD结果...

sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 16
Initializing random number generator from timer.


Extra file open flags: 0
128 files, 432Mb each
54Gb total file size
Block size 4Kb
Number of random requests for random IO: 30000
Read/Write ratio for combined random IO test: 1.50
Using synchronous I/O mode
Doing random read test
Threads started!
Done.

Operations performed:  30038 Read, 0 Write, 0 Other = 30038 Total
Read 117.34Mb  Written 0b  Total transferred 117.34Mb  (152.53Mb/sec)
39046.89 Requests/sec executed

Test execution summary:
    total time:                          0.7693s
    total number of events:              30038
    total time taken by event execution: 12.2631
    per-request statistics:
         min:                                  0.00ms
         avg:                                  0.41ms
         max:                                  1.89ms
         approx.  95 percentile:               0.57ms

Threads fairness:
    events (avg/stddev):           1877.3750/15.59
    execution time (avg/stddev):   0.7664/0.00

感谢您的详细回答!您的结果太棒了……>>我通常不使用LVM,尤其是使用HP RAID控制器提供的灵活性时,这是什么意思?>>您的RAID控制器缓存比率是多少?75/25(默认))>>我认为问题比那更深...是的!我在主要文章末尾附加了bonnie ++ v1.96结果。看来效果不太好:(起初,我会尝试从LVM脱身,再次运行测试。如果它不会帮助-我想,有什么不对的RAID控制器。
奥列格·戈洛瓦诺威

您可以显示bonnie++命令行吗?
ewwhite

对不起这是我的错。命令行:/ usr / sbin / bonnie ++ -c 16 -n 0
Oleg Golovanov

3
我将调度程序从cfq更改为noop,基准测试结果大大提高了!))现在,sysbench为我显示1500+随机读取/秒...非常感谢:)
Oleg Golovanov 2012年

1
也可以尝试deadline...在数据库负载下,它可能比更好地运行noop,此外,/sys/block/cciss1/queue/iosched/如果您使用,则您中还有一些其他可调参数deadline有关更精细调整的更多详细信息,请参见这篇文章。通过这样做,我能够使测试达到每秒2600次随机读取。
ewwhite
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.