我正在测量带有fio的EMMC设备的随机写入速度。
我正在使用多个io尺寸测试多个块大小。
对原始emmc设备上的所有测试用例进行多次迭代后,我使用整个emmc设备创建一个逻辑卷,并在该卷上运行相同的测试。(例如/ dev / new_vol_group / new_logical_volume)
我期待LVM略有性能开销,但最奇怪的事情发生了。
对于小的io大小,原始和LVM之间的随机写入速度非常相似。当IO大小增加时(特别是当大小为ram的两倍时),原始设备的随机写入速度会大大降低,但LVM的情况并非如此。当文件大小增加时,LVM的随机写入速度没有降低。
因此LVM比原始设备快得多,特别是对于大型文件大小的随机写访问。这仅适用于随机写入。我没有看到顺序读写或随机读取测试的这种行为。
这是我的fio文件
ioengine=libaio
direct=1
buffered=0
iodepth=1
numjobs=1
ramp_time=5
startdelay=5
runtime=90
time_based
refill_buffers
randrepeat=1
我能想到的唯一原因就是缓存,但是当io大小是主机上ram数量的两倍时,缓存不会对这些测试造成太大影响。
注意:我使用fio-3.1进行基准测试,使用Ubuntu 18.04 LTS作为主机。
我在多个设备上检测到此行为。
编辑:添加表示速度差异的图表。
如果你仍在缓存一半的数据,它的速度可能是2-6GB / s,平均而言,磁盘的实际速度仍然会增加很多结果
—
Xen2050
然后相同的缓存应该适用于非lvm分区,对吧?
—
可以
我认为这取决于测试方法,只是使用文件可能会在任何地方缓存,但设备可能不会。一个体面的测试程序可能无论如何都可以避免缓存,但我不确定lvm的所有细节。无论如何,使用/不使用lvm的实际速度结果是多少?重复测试给出了相同的差异,也许只是“随机噪音”?
—
Xen2050
嗯,您是在对文件系统使用fio还是直接对原始设备映射器设备使用fio?此外,您的fio作业文件看起来不完整 - 您是否也在命令行中指定了内容?最后来自不同运行的不同fio输出是什么(例如,在当前问题中,我无法看到原始分区与LVM的延迟统计信息)?
—
匿名
嗨@Anon,我添加了直方图,用于原始设备和LVM映射器设备之间的速度比较。你是对的我也在命令行上指定东西,我认为它们不重要。
—
灿