Linux md 与 LVM 性能

Linux md 与 LVM 性能

我正在尝试调整我的 NAS,运行 openfiler,并且想知道为什么 RAID 5 中的 4 个 WD RE3 驱动器的读取性能相对较差。

编辑:请注意,我说的是缓冲磁盘读取速度,而不是缓存速度

编辑:改变格式以明确有两组输出。

当我在元设备上运行 hdparm 时,我获得了我所期望的性能水平,下降到音量,速度只有三分之一!

有人知道原因吗?LVM 真的那么糟糕吗?

院长

元设备 /dev/md0 结果

[root@nas2 等]# hdparm -tT /dev/md0
/dev/md0:
 缓存读取时间:4636 MB,耗时 2.00 秒 = 2318.96 MB/秒
 缓冲磁盘读取时间:3.01 秒内读取 524 MB = 174.04 MB/秒

卷组 /dev/mapper/vg1-vol1 结果

[root@nas2 etc]# hdparm -tT /dev/mapper/vg1-vol1
/dev/mapper/vg1-vol1:
 缓存读取时间:4640 MB,2.00 秒 = 2320.28 MB/秒
 缓冲磁盘读取时间:3.01 秒内读取 200 MB = 66.43 MB/秒

编辑:请参阅 hdparm 手册页中的部分内容,其中表明这是对顺序读取性能的完全有效的测试,这也是我正在尝试解决的问题。

-t 执行设备读取计时,用于基准测试和比较。为了获得有意义的结果,应在设备上重复此操作 2-3 次,否则
              不活跃的系统(没有其他活动进程),至少有几兆字节的可用内存。这显示了通过缓冲区读取的速度
              缓存到磁盘,而无需事先缓存任何数据。此测量表明驱动器在以下情况下能够维持连续数据读取的速度
              Linux,无需任何文件系统开销。为了确保测量准确,在处理 -t 期间使用 BLKFLSBUF 刷新缓冲区缓存
              如果还指定了 -T 标志,则基于 -T 结果的校正因子将合并到 -t 报告的结果中
              手术。

答案1

LVM 的默认预读设置是真的悲观。尝试blockdev --setra 8192 /dev/vg1/vol1看看这会让您的 LVM 性能提升多少。使用 LVM 总会降低性能;我们在正确配置的系统上测量到大约 10% 的底层块设备性能。

答案2

我没有很好的解释,但我可以确认结果。

RAID 测试(raid5、4x1.5TB 驱动器)

root@enterprise:# hdparm -tT /dev/md2
/dev/md2:
 Timing cached reads:   2130 MB in  2.00 seconds = 1065.81 MB/sec
 Timing buffered disk reads:  358 MB in  3.00 seconds = 119.15 MB/sec
root@enterprise:# hdparm -tT /dev/md2
/dev/md2:
 Timing cached reads:   2168 MB in  2.00 seconds = 1084.54 MB/sec
 Timing buffered disk reads:  358 MB in  3.01 seconds = 119.10 MB/sec

对使用 md2 作为物理设备的卷进行测试。

root@enterprise:# hdparm -tT /dev/mapper/vg2-data
/dev/mapper/vg2-data:
 Timing cached reads:   2078 MB in  2.00 seconds = 1039.29 MB/sec
 Timing buffered disk reads:  176 MB in  3.03 seconds =  58.04 MB/sec
root@enterprise:# hdparm -tT /dev/mapper/vg2-data
/dev/mapper/vg2-data:
 Timing cached reads:   2056 MB in  2.00 seconds = 1028.06 MB/sec
 Timing buffered disk reads:  154 MB in  3.03 seconds =  50.81 MB/sec

我做了改变由 womble 提出并看到了这样的结果。

root@enterprise:# blockdev --setra 8192 /dev/mapper/vg2-data

root@enterprise:# hdparm -tT /dev/mapper/vg2-data
/dev/mapper/vg2-data:
 Timing cached reads:   2106 MB in  2.00 seconds = 1053.82 MB/sec
 Timing buffered disk reads:  298 MB in  3.00 seconds =  99.26 MB/sec
root@enterprise:# hdparm -tT /dev/mapper/vg2-data
/dev/mapper/vg2-data:
 Timing cached reads:   2044 MB in  2.00 seconds = 1022.25 MB/sec
 Timing buffered disk reads:  280 MB in  3.03 seconds =  92.45 MB/sec

答案3

确保进行同类比较。

hdparm -t从设备开头读取,如果您给它整个磁盘(并且它是旋转的盘片),这也是磁盘中最快的部分。

确保将其与磁盘开头的 LV 进行比较。

要查看映射,请使用pvdisplay -m

(好吧,当然,数字上的差异可能可以忽略不计。但至少想一想:)

答案4

您可以使用 blktrace(如果是在 I/O 中)或 oprofile(如果是在 CPU 中)找出 hdparm 的时间花在哪里。了解 LVM 设置也会有所帮助(pvdisplay、vgdisplay、lvdisplay)。

相关内容