我正在使用 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 作为主机。
我在多台设备上检测到了这种行为。
编辑:添加了表示速度差异的图表。