RAID 10时SSD(Intel 530)的读取/写入速度非常慢


11

说明:

我们有一个服务器:

  • 型号:HP ProLiant DL160 G6
  • 4个240GB SSD(RAID-10)
  • 72GB DDR3内存
  • 2个L5639
  • HP P410 RAID控制器(256MB,V6.40,Rom版本:8.40.41.00)

SSD驱动器是4个全新的2.5“ Intel 530,读取速度为540MB / s,写入速度为490MB / s

  • CentOS的6
  • 文件系统是ext4

但这是RAID 10读取速度的测试结果:

hdparm -t /dev/sda

/dev/sda:
 Timing buffered disk reads:  824 MB in  3.00 seconds = 274.50 MB/sec
[root@localhost ~]# hdparm -t /dev/mapper/vg_localhost-lv_root

/dev/mapper/vg_localhost-lv_root:
 Timing buffered disk reads:  800 MB in  3.01 seconds = 266.19 MB/sec

这是为了提高写入速度:

dd bs=1M count=512 if=/dev/zero of=test conv=fdatasync
512+0 records in
512+0 records out
536870912 bytes (537 MB) copied, 4.91077 s, 109 MB/s

我们希望RAID 10的读取速度为1GB,但270MB甚至不是单个磁盘的速度!

问题:

  1. 为什么这么慢?
  2. 是因为RAID控制器吗?

更新1-相同的读/写速度:

如答案中所述更改某些设置后,我得到以下结果:

(任何人都知道为什么它显示4GB而不是400MB的读取速度吗?!)

编辑:看起来该命令是错误的,并且我们应该使用-s144g来表示此数量的ram,这就是为什么它显示4GB(如ewwhite的注释中所建议的)

[root@192 ~]# iozone -t1 -i0 -i1 -i2 -r1m -s56g
        Iozone: Performance Test of File I/O
                Version $Revision: 3.408 $
                Compiled for 64 bit mode.
                Build: linux

        Record Size 1024 KB
        File size set to 58720256 KB
        Command line used: iozone -t1 -i0 -i1 -i2 -r1m -s56g
        Output is in Kbytes/sec
        Each process writes a 58720256 Kbyte file in 1024 Kbyte records

        Children see throughput for  1 initial writers  =  135331.80 KB/sec
        Children see throughput for  1 rewriters        =  124085.66 KB/sec
        Children see throughput for  1 readers          = 4732046.50 KB/sec
        Children see throughput for 1 re-readers        = 4741508.00 KB/sec
        Children see throughput for 1 random readers    = 4590884.50 KB/sec
        Children see throughput for 1 random writers    =  124082.41 KB/sec

但是旧hdparm -t /dev/sda命令仍然显示:

定时缓冲磁盘读取:3.00秒内810 MB = 269.85 MB /秒

更新2(已调整实用程序包)-读取速度现在为600MB / s:

终于有了希望,我们从raid控制器中禁用了缓存,并且较早地做了一些其他事情,但是没有运气,但是由于我们重新加载了服务器并再次安装了操作系统,因此我们忘记安装ewwhite的答案中建议的“ tuned-utils”(谢谢。 ewwhite为您建议的这个很棒的软件包)

安装tuned-utils并选择enterprise-storage配置文件后,读取速度现在为〜600MB / s +,但写入速度仍然很慢(〜160MB)(:

这是iozone -t1 -i0 -i1 -i2 -r1m -s144g命令的结果:

    Children see throughput for  1 initial writers  =  165331.80 KB/sec
    Children see throughput for  1 rewriters        =  115734.91 KB/sec
    Children see throughput for  1 readers          =  719323.81 KB/sec
    Children see throughput for 1 re-readers        =  732008.56 KB/sec
    Children see throughput for 1 random readers    =  549284.69 KB/sec
    Children see throughput for 1 random writers    =  116389.76 KB/sec

即使使用hdparm -t /dev/sda命令,我们也可以:

定时缓冲磁盘读取:3.00秒内1802 MB = 600.37 MB /秒

对于非常慢的写入速度有什么建议吗?

更新3-评论中要求提供一些信息:

写入速度仍然很低(〜150MB / s,甚至不到单个磁盘的1/3)

df -h和的输出fdisk -l

[root@192 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       441G  3.2G  415G   1% /
tmpfs            36G     0   36G   0% /dev/shm


[root@192 ~]# fdisk -l
Disk /dev/sda: 480.0 GB, 480047620096 bytes
255 heads, 63 sectors/track, 58362 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00040c3c

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1       58363   468795392   83  Linux

对于此测试,您可能应该指定服务器中安装的RAM数量的两倍。
ewwhite

您能告诉我们Smart Array P410控制器的固件版本吗?
ewwhite

@ewwhite感谢您的评论,固件版本为p410(256MB,V6.40),ROM版本为8.40.41.00,我的iozone命令是否错误?如果是,您能告诉我正确的命令进行测试吗?因为我尝试的所有内容都获得了GB的读取速度
2013年

这里有些错误。您只获得〜122MB / s的写入速度。您看到的4GB / s数字是来自缓存的操作,因此您的命令字符串应类似于iozone -t1 -i0 -i1 -i2 -r1m -s144g。:(
ewwhite

@ewwhite非常感谢,读取速度现在非常好(在我的问题中详细描述为更新2),但是写入速度非常令人失望,您对此有何建议?
2013年

Answers:


16

尽管这里的其他答案有些要点,但是您的特定问题是由于平台限制和操作系统配置所致:

  • 在HP Smart Array P410 RAID控制器上使用消费者 SATA SSD会限制吞吐量。SATA磁盘在这些控制器上的运行速度为3.0Gbps(3G),而不是6.0Gbps(6G)。因此,这是一个影响英特尔SSD读取速度的障碍。每个驱动器300MB / s或更小。

  • 与SSD一起使用时,Smart Array P410控制器具有特定的要求和最佳实践。简而言之,该控制器具有50,000 IOPS的能力,为您的SSD容量禁用了阵列加速器,并且在大约6个驱动器上性能达到最高。

  • 磁盘性能并不总是与顺序读取/写入速度有关。尝试使用适当的工具(例如iozonebonnie ++)进行基准测试。您仍然可以从多个驱动器中获得随机的I / O收益。

  • 在操作系统级别,安装tuned-utils软件包,并将配置文件设置为,enterprise-performance以消除文件系统中的写障碍,并为设置设置正确的I / O升降机。这里的其他问题也涵盖了这一点。

  • 看来您正在使用LVM。这也会产生影响...

这是运行G7 ProLiant的iozone报告 在同一HP Smart Array P410 RAID控制器上四个消费者6G SATA SSD(降速至3G速度)。

您应该看到〜470MB / s的写入速度和650MB / s +的读取速度。

[root@mdmarra /data/tmp]# iozone -t1 -i0 -i1 -i2 -r1m -s56g
        Iozone: Performance Test of File I/O
                Version $Revision: 3.394 $
                Compiled for 64 bit mode.
                Build: linux 

        Record Size 1024 KB
        File size set to 58720256 KB
        Command line used: iozone -t1 -i0 -i1 -i2 -r1m -s56g
        Output is in Kbytes/sec
        Each process writes a 58720256 Kbyte file in 1024 Kbyte records

        Children see throughput for  1 initial writers  =  478209.81 KB/sec
        Children see throughput for  1 rewriters        =  478200.84 KB/sec
        Children see throughput for  1 readers          =  677397.69 KB/sec
        Children see throughput for 1 re-readers        =  679523.88 KB/sec
        Children see throughput for 1 random readers    =  437344.78 KB/sec
        Children see throughput for 1 random writers    =  486254.41 KB/sec

非常感谢您,该型号是“ DL160 G6”,是的,涉及到背板:(我什至对这里的600MB感到满意,但270MB的速度确实很慢,您认为我应该怎么做,软件突击检查有帮助吗?
Ara

2
好的,对于DL160 G6,应该有两根电缆从RAID控制器连接到驱动器底板……8个驱动器插槽。您的问题是驱动器吞吐量,测试方法和服务器设置。尝试我在答案中列出的其他建议。
ewwhite

关于P410在SATA上仅做3G的情况以及特定的最佳做法,这很有意思。修改。(不过,就负面的性能影响而言,LVM不应成为沉重的打击因素,在此处也请注意: unix.stackexchange.com/questions/7122/…
Roman

1
@Ara ProLiant没有6G SATA控制器。这才是重点。除非您使用SAS SSD,否则您的SSD只能在此平台上以3G速度运行。
ewwhite

1
@Ara Software RAID将需要连接到不同的控制器,例如SAS HBA(例如LSI 9211-8i)...它将使您能够看到磁盘的全部带宽,但是SSD性能还有其他方面顺序读/写带宽。
ewwhite13年

12

哦,亲爱的,从哪里开始?

涉及的内容太多,您需要对所有内容都有很好的了解。仅仅将一堆磁盘扔向RAID控制器不会产生您想要的结果。

这很难回答。但至少,这是您必须查看的内容列表:

  • 控制器是否具有所需的吞吐量?(->数据表)
  • 控制器是否甚至有足够的主机带宽(即使在v1.0上也是如此,因为它是x8)
  • 系统的芯片组是否具有足够的吞吐量(CPU控制器)?(未知)
  • 您已指示Controller采用哪种写策略?(这很可能咬了你
  • 一切是否对齐(分区开始,LV,PV)?
  • 块大小是否统一?(RAID条带大小,块大小,FS块...)
  • 文件系统是否针对RAID设置进行了优化?(级别和块大小)

由于整个RAID(不考虑FS)的吞吐量显着低于单个磁盘,因此您可能错误地设置了写入策略。控制器可能正在等待所有磁盘确认写入(并且除非备份了控制器电池上的RAM,否则这可能是您的最大利益)。


这真的比我想的要难,我认为这就像将Raid Controller ram升级到512MB一样简单!,谢谢罗曼,让我检查一下您刚才所说的一些内容,希望找到原因
2013年

以上大多数都是针对边缘情况的有效故障排除策略,但不适用于原始海报配置的细节。此处的控制器具有所需的吞吐量和带宽,CPU正常,RAID控制器默认为25:75 R / W缓存比率(应完全禁用以用于SSD用途),CentOS6正确地对齐了分区,并且潜在的抽象太多了块大小“协调”。当前的三个问题是:6G磁盘以3G速度被限制,文件系统写屏障可能已启用,而I / O升降机是默认的CFQ。
ewwhite

1
不幸的是,在我回答时没有提到服务器模型。很高兴知道节流。我认为在这个特定的“基准”中,障碍和CFQ并不会花费很多,但是仍然提供了有价值的信息。
罗曼(Roman)

@Roman对不起,我之前没有提到该型号,我非常感谢您的帮助,我正在尝试您和ewwhite的指南达到500-600MB,我想这是在3G限制下我可以达到的最高速度
Ara

1
没问题 确保您按照ewwhite的答案中的链接进行操作,因为P410与SSD一起需要做一些特定的事情。另外,还要使四个磁盘均匀分布在从背板到控制器的两个连接上。
罗曼(Roman)
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.