Я измеряю скорость произвольной записи для устройства 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 повторяет устройство исходного формата