Накопитель Intel NVMe Снижение производительности с файловой системой xfs с размером сектора, отличным от 4096

Я работаю с картой NVMe в Linux (Ubuntu 14.04). Я обнаружил некоторое снижение производительности для карты Intel NVMe при форматировании в файловой системе xfs с размером сектора по умолчанию (512). или любой другой размер сектора меньше 4096.

В эксперименте я отформатировал карту с файловой системой xfs с параметрами по умолчанию. Я пробовал запустить fio с размером блока 64 КБ на платформе arm64 с размером страницы 64 КБ. Это используемая команда fio --rw=randread --bs=64k --ioengine=libaio --iodepth=8 --direct=1 --group_reporting --name=Write_64k_1 --numjobs=1 --runtime=120 --filename=new --size=20G

Я мог получить только следующие значения

Группа статуса выполнения 0 (все задания): READ: io = 20480 МБ, aggrb = 281670 КБ / с, minb = 281670 КБ / с, maxb = 281670 КБ / с, mint = 744454 мс, maxt = 74454 мс. Статистика диска (чтение / запись): nvme0n1: ios = 326821/8, merge = 0/0, ticks = 582640/0, ​​in_queue = 582370, util = 99,93%

Я пробовал форматировать следующим образом:

mkfs.xfs -f -s size=4096 /dev/nvme0n1

тогда значения были:

Группа статуса выполнения 0 (все задания): ЧТЕНИЕ: io = 20480 МБ, aggrb = 781149 КБ / с, minb = 781149 КБ / с, maxb = 781149 КБ / с, mint = 266 847 мсек, maxt = 26847 мсек. Статистика диска (чтение / запись): nvme0n1: ios = 326748/7, merge = 0/0, ticks = 200270/0, in_queue = 200350, util = 99,51%

Я не обнаружил снижения производительности при использовании с

  • Размер страницы 4k
  • Любой размер блока fio меньше 64 КБ
  • С ext4 fs с конфигами по умолчанию

В чем может быть проблема? Это какая-то проблема с выравниванием? Что мне здесь не хватает? Любая помощь приветствуется


person Christina Jacob    schedule 08.03.2016    source источник


Ответы (1)


Проблема в том, что размер собственного сектора вашего SSD составляет 4 КБ. Таким образом, размер блока вашей файловой системы должен быть установлен таким образом, чтобы операции чтения и записи были выровнены по границам секторов. В противном случае у вас будут блоки, охватывающие 2 сектора, и, следовательно, для возврата 1 блока потребуется 2 чтения сектора (вместо 1 чтения).

Если у вас есть твердотельный накопитель Intel, у новых из них есть переменный размер сектора, который вы можете установить с помощью инструмента Intel Solid State Drive DataCenter Tool. Но, честно говоря, 4096 все же, вероятно, все равно является истинным размером сектора диска, и вы получите наиболее стабильную производительность, используя его и настраивая свою файловую систему в соответствии с ним.

В ZFS в Linux для блоков 4K установлено значение ashift = 12.

person jasonjwwilliams    schedule 30.03.2016