下一篇 上一篇 目录

9. 性能

本 HOWTO 已弃用;Linux RAID HOWTO 由 linux-raid 社区维护,以 wiki 形式发布在 http://raid.wiki.kernel.org/

本节包含来自真实系统使用软件 RAID 的一些基准测试。其中也有关于基准测试软件的一般信息。

基准测试样本使用 bonnie 程序完成,并且始终在文件大小为机器物理 RAM 两倍或更大的情况下进行。

此处的基准测试测量单个大型文件上的输入和输出带宽。 如果关注大型读取/写入的最大 I/O 吞吐量,那么了解这一点很好。 然而,这些数字很少能告诉我们,如果阵列用于新闻缓冲池、Web 服务器等等,性能会如何。 始终牢记,基准测试数字是运行“合成”程序的结果。 很少有真实世界的程序会像 bonnie 那样工作,尽管这些 I/O 数字看起来不错,但它们并非最终的真实世界应用程序性能指标。 甚至差得很远。

目前,我只有来自我自己的机器的结果。 设置如下:

三块 U2W 磁盘挂载在 U2W 控制器上,UW 磁盘挂载在 UW 控制器上。

似乎不可能让 SCSI 总线在这个系统上推送超过 30 MB/s 的速度,无论是否使用 RAID。 我猜测,因为系统相当老旧,内存带宽很差,因此限制了可以通过 SCSI 控制器发送的数据量。

9.1 RAID-0

读取顺序块输入写入顺序块输出。 在所有测试中,文件大小为 1GB。 测试在单用户模式下完成。 SCSI 驱动程序配置为不使用标记命令队列。


Chunk 大小Block 大小读取 kB/s写入 kB/s
4k1k 19712 18035
4k4k 34048 27061
8k1k 19301 18091
8k4k 33920 27118
16k1k 19330 18179
16k2k 28161 23682
16k4k 33990 27229
32k1k 19251 18194
32k4k 34071 26976

>由此看来,RAID chunk 大小似乎没有太大的区别。 然而,ext2fs block 大小应该尽可能大,在 IA-32 上为 4kB(例如,页面大小)。

9.2 使用 TCQ 的 RAID-0

这次,SCSI 驱动程序配置为使用标记命令队列,队列深度为 8。 其他所有设置与之前相同。


Chunk 大小Block 大小读取 kB/s写入 kB/s
32k4k 33617 27215

没有进行更多测试。 TCQ 似乎略微提高了写入性能,但实际上并没有太大的区别。

9.3 RAID-5

阵列配置为在 RAID-5 模式下运行,并进行了类似的测试。


Chunk 大小Block 大小读取 kB/s写入 kB/s
8k1k 11090 6874
8k4k 13474 12229
32k1k 11442 8291
32k2k 16089 10926
32k4k 18724 12627

现在,chunk 大小和 block 大小似乎都真正产生了影响。

9.4 RAID-10

RAID-10 是“镜像条带”,或者说,是由两个 RAID-0 阵列组成的 RAID-1 阵列。 chunk 大小是 RAID-1 阵列和两个 RAID-0 阵列的 chunk 大小。 我没有进行 chunk 大小不同的测试,尽管这应该是一个完全有效的设置。


Chunk 大小Block 大小读取 kB/s写入 kB/s
32k1k 13753 11580
32k4k 23432 22249

没有进行更多测试。 文件大小为 900MB,因为涉及的四个分区每个为 500MB,这在此设置中没有 1G 文件的空间(在两个 1000MB 阵列上进行 RAID-1)。

9.5 新的基准测试工具

要检查 RAID 系统的速度和性能,请勿使用 hdparm。 它不会对阵列进行真正的基准测试。

请查看此处描述的工具,而不是 hdparm:IOzone 和 Bonnie++。

IOzone 是一个小型、通用且现代化的工具。 它对 read, write, re-read, re-write, read backwards, read strided, fread, fwrite, random read, pread, mmap, aio_readaio_write 操作进行文件 I/O 性能基准测试。 不用担心,它可以在 OSDL STP 中的任何 ext2、ext3、reiserfs、JFS 或 XFS 文件系统上运行。

您还可以使用 IOzone 来显示吞吐量性能,作为文件系统中进程数和磁盘数的函数,这在 RAID 条带化方面很有趣。

尽管 IOzone 的文档以 Acrobat/PDF、PostScript、nroff 和 MS Word 格式提供,但我们将在此处介绍一个 IOzone 在操作中的优秀示例

iozone -s 4096 
这将运行一个使用 4096KB 文件大小的测试。

这是 IOzone 给出的输出质量示例

        File size set to 4096 KB
        Output is in Kbytes/sec
        Time Resolution = 0.000001 seconds.
        Processor cache size set to 1024 Kbytes.
        Processor cache line size set to 32 bytes.
        File stride size set to 17 * record size.
                                                            random  random    bkwd  record  stride            
              KB  reclen   write rewrite    read    reread    read   write    read rewrite    read   fwrite frewrite   fread  freread
            4096       4   99028  194722   285873   298063  265560  170737  398600  436346  380952    91651   127212  288309   292633
现在您只需要了解使 IOzone 适用于 RAID 基准测试的功能:涉及 RAID 的文件操作是 read strided。 上面的示例显示 read strided 的速度为 380.952Kb/秒,所以您可以自己研究一下。

Bonnie++ 似乎更侧重于对单个驱动器而不是 RAID 进行基准测试,但它可以测试 32 位机器上超过 2Gb 的存储,并测试文件 creat, stat, unlink 操作。


下一篇 上一篇 目录