Linux MD与LVM性能


8

我试图调整NAS,运行openfiler,想知道为什么我从RAID 5的4个WD RE3驱动器中获得相对较差的读取性能。

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

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

当我在元设备上运行hdparm时,我得到了我期望的性能水平,下降到该卷,这是速度的三分之一!

有人知道为什么吗?LVM不好吗?

院长

元设备/ dev / md0结果

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

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

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

编辑:请参阅hdparm手册页中的部分,该部分建议这对于顺序读取性能是完全有效的测试,这是我要解决的问题。

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

您是否尝试过类似的测试bonnie++
SaveTheRbtz

Answers:


10

LVM的默认预读设置确实很悲观。尝试blockdev --setra 8192 /dev/vg1/vol1看一下提高LVM性能的因素。您将始终使用LVM降低性能;我们在正确配置的系统上对其进行评估,其性能约为基础块设备性能的10%。


4

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

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

(当然,数量上的差异可以忽略不计。但是至少要考虑一下:)


事实证明,这是不可忽略的。如果我使用从范围0开始的卷,性能几乎是相同的。我确定这是答案的一部分。
迪恩·史密斯

实际上,如果安装了该卷,则性能会降低。如果卸载,则卷性能将与原始设备相匹配。但是,这似乎仍然有些奇怪。
迪恩·史密斯

0

hdparm -T创建的工作负载几乎不能代表任何用例,除了从单个大文件中进行流读取外。另外,如果您担心性能,请不要使用raid5。


3
正确,它并不代表实际的工作量,我不建议如此。但是,它对于比较原始设备的读取速度很有用。元设备和卷组的卷应具有可比较的原始顺序读取速度,而没有。这就是问题的重点。
迪恩·史密斯

0

您可以通过blktrace(如果在I / O中)或oprofile(如果在CPU中)找出hdparm在哪儿花费时间。了解LVM设置也会有所帮助(pvdisplay,vgdisplay,lvdisplay)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.