我们刚刚购买了一个新的 24 驱动器 RAID 阵列和一个LSI 9285-8e
RAID 控制器。我们看到了 2 件对我们来说似乎很奇怪的事情。
写入速度比读取速度更快(使用
ext4
或xfs
文件系统)。读取速度有一个拐点,当读取大小(
dd
)大于 128Kbytes 时,性能会下降约 30%。
512k
以下是字节 RAID 条带大小和文件系统的最新测试结果xfs
:
dd bs=1024k if=junk of=/dev/null => 9.11s = 1.4 GB/s
dd bs=512k if=junk of=/dev/null => 9.38s = 1.3 GB/s
dd bs=256k if=junk of=/dev/null => 9.78s = 1.3 GB/s
dd bs=128k if=junk of=/dev/null => 7.03s = 1.8 GB/s
dd bs=64k if=junk of=/dev/null => 6.77s = 1.9 GB/s
dd bs=32k if=junk of=/dev/null => 6.79s = 1.9 GB/s
dd bs=16k if=junk of=/dev/null => 6.49s = 1.9 GB/s
dd bs=8k if=junk of=/dev/null => 6.91s = 1.8 GB/s
dd bs=4k if=junk of=/dev/null => 6.46s = 1.9 GB/s
(仅供参考,对于上面显示的所有尺寸,写入速度均为 2.2 GB/s)
我目前正在使用 RAID0,但使用 RAID6 得到的结果几乎相同。
这只是正在安装的新服务器。没有其他应用程序在运行,也没有网络连接导致任何中断。此安装在 OpenSuSE 11.4 上。我们可以进行随机读取测试,但由于我们的目的是流式传输视频(例如 4K 3D 或 8K),我们实际上只担心顺序读取。
有什么想法可以加快读取速度吗?
答案1
RAID 卡已指定 (PDF)写入速度比读取速度快,所以没有什么不寻常的事情发生。我猜想 1GB 的板载缓存被用作写入缓冲区,以帮助消除相对较慢的硬盘造成的任何寻道延迟。但在读取时,您显然总是需要等待磁盘获取数据。
至于读取速度的拐点,这可能是由于链中某处的缓存被填满。英特尔 CPU L2 缓存通常为 256 kB(每个核心),L3 缓存更大(核心之间共享)。假设可执行文件dd
和操作系统在测试期间需要的任何其他内容至少为一个字节,并且永远不会超过 128kB。这意味着 128KB(或更小)块大小测试基本不受 CPU 的阻碍,但由于频繁的 L3 缓存(或主内存)查找延迟,256kB 块大小的性能可能会显著降低。这可能是巧合,但它符合您的测试数据。