Я измеряю скорость произвольной записи для устройства EMMC с помощью fio.

Я тестирую несколько размеров блоков с несколькими размерами ввода-вывода.

После нескольких итераций для всех тестовых случаев на необработанном устройстве emmc я создаю логический том, используя все устройство emmc, и запускаю те же тесты для этого тома (например, /dev /new_vol_group /new_logical_volume)

Я ожидал небольшого снижения производительности с LVM, но случилось самое странное.

Для небольших размеров io случайные скорости записи довольно похожи между raw и LVM. Когда размер ввода-вывода увеличивается (особенно, когда размер равен удвоенному количеству оперативной памяти), скорость произвольной записи для необработанного устройства значительно уменьшается, но это не относится к 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 в два раза превышает количество оперативной памяти на хосте.

Примечание: я использую fio-3.1 для тестирования производительности, Ubuntu 18.04 LTS в качестве хоста.
Я обнаружил это поведение на нескольких устройствах.

Изменить: Добавлены графики, представляющие различия в скорости.

Скорость произвольной записи LVM повторяет устройство исходного формата Скорость произвольной записи LVM повторяет устройство исходного формата

Скорость произвольной записи необработанного устройства Скорость произвольной записи необработанного устройства

0