![Linux md 与 LVM 性能](https://linux22.com/image/497476/Linux%20md%20%E4%B8%8E%20LVM%20%E6%80%A7%E8%83%BD.png)
我正在尝试调整我的 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)。