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

Ole*_*nov 8 performance debian lvm hp hp-smart-array

我有一个低 IO 利用率的运行系统:

  1. HP DL380G7(24GB 内存)
  2. Smart Array p410i 带有 512mb 电池支持的写缓存
  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 await 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 all show config"

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

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


      逻辑驱动器 1(136.7 GB,RAID 1,正常)

      物理驱动器 1I:1:1(端口 1I:box 1:bay 1, SAS, 146 GB, OK)
      物理驱动器 1I:1:2(端口 1I:box 1:bay 2, SAS, 146 GB, OK)

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


      逻辑驱动器 2(410.1 GB,RAID 1+0,正常)

      物理驱动器 1I:1:3(端口 1I:box 1:bay 3, SAS, 146 GB, OK)
      物理驱动器 1I:1:4(端口 1I:box 1:bay 4, SAS, 146 GB, OK)
      物理驱动器 2I:1:5(端口 2I:box 1:bay 5, SAS, 146 GB, OK)
      物理驱动器 2I:1:6(端口 2I:box 1:bay 6, SAS, 146 GB, OK)
      物理驱动器 2I:1:7(端口 2I:box 1:bay 7, SAS, 146 GB, OK)
      物理驱动器 2I:1:8(端口 2I:box 1:bay 8, SAS, 146 GB, OK)

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

hpacucli "ctrl 所有显示状态"

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

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.39 毫秒
         最大:2010.15ms
         大约 95 个百分位:660.40ms

线程公平:
    事件 (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 await 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

邦妮++ v1.96

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

一次写入一个字节...完成
聪明地写作...完成
重写...完成
一次读取一个字节...完成
智能阅读……完成
开始他们...完成...完成...完成...完成...完成...
版本 1.96 ------顺序输出------ --顺序输入- --随机-
并发 16 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
机器尺寸 K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %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 次随机读取...

谢谢你的帮助!

eww*_*ite 10

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

DL380 G6 在 Smart Array P410 控制器上有一个 6 磁盘 RAID 1+0 阵列,带有 512MB 电池后备缓存。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
Run Code Online (Sandbox Code Playgroud)

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

  • 至于您的设置,我首先想到的是您的测试分区的大小。您几乎用 54GB 的测试文件填满了 60GB 的分区。我不确定 ext4 在 90+% 时是否有问题,但这是您修改和重新测试的最快方法。(或使用较小的一组测试数据)

  • 即使使用 LVM,此控制器/磁盘设置也有一些调整选项可用。检查预读并将I/O 调度程序设置从默认cfq更改为截止日期noop很有帮助。请参阅以下问题和答案: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)
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

  • 我将调度程序从 cfq 更改为 noop,并且基准测试结果显着增加!)) 现在 sysbench 为我显示 1500+ 随机读取/秒......非常感谢 :) (3认同)