我们有一个服务器:
SSD硬盘是4个全新的2.5“Intel 530,具有540MB / s的读取速度和490MB / s的写入速度
但这是raid 10的读取速度的testing结果:
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甚至不是单个磁盘的速度!
改变一些设置后,在答案中提到我有下面的结果:
(任何人都知道为什么它显示4GB而不是400MB的读取速度?!)
编辑:看起来像命令是错误的,我们应该已经使用-s144g这个数量的内存,这就是为什么它显示4GB(如由ewwhite的意见build议)
[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 /秒
最后有人希望,我们已经禁用了raid控制器的caching,并且在没有运气的情况下做了一些其他的事情,但是因为我们重新加载了服务器并重新安装了操作系统,所以我们忘记安装ewwhite的答案中提到的“tuned-utils” ewwhite为你提出的这个令人敬畏的包)
安装tuned-utils
并selectenterprise-storage
configuration文件后,读取速度现在是〜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 /秒
任何build议对于非常慢的写入速度?
写入速度仍然非常低(〜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
虽然其他答案在这里有一些问题,但是您的具体问题是由于平台限制和操作系统configuration:
您在惠普智能arraysP410 RAID控制器上使用消费型 SATA固态硬盘来限制吞吐量。 这些控制器上的SATA磁盘运行速度为3.0Gbps(3G),而不是6.0Gbps(6G)。 所以这是影响英特尔SSD读取速度的障碍; 每个驱动器300MB / s或更less。
Smart Array P410控制器在与SSD一起使用时有特定的要求和最佳实践 。 简而言之,控制器可以达到50,000 IOPS,为您的SSD容量禁用arrays加速器,性能在〜6驱动器上达到顶峰。
磁盘性能并不总是与顺序读写速度有关。 尝试使用适当的工具,如iozone或bonnie ++进行基准testing。 您仍然可以获得多个驱动器的随机I / O优势。
在操作系统级别,安装tuned-utils软件包并将configuration文件设置为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
哦,亲爱的,从哪里开始?
有这么多的参与,你需要很好的理解一切。 只是抛出一堆磁盘对RAID控制器不会产生你正在寻找的结果。
这不容易回答。 但至less,这是一个你必须看的东西的清单:
由于对整个RAID(无视FS)的吞吐量远低于单个磁盘,所以很可能是您错误地设置了您的写入策略; 控制器可能正在等待所有的磁盘来确认写入(除非你有控制器电池备份RAM,这可能是你最好的利益)。