Низкая производительность iSCSI с дисками SSD и сетью 10 Gbe

10

Цель iSCSI

Ubuntu 14.04 (Trusty Tahr) с 16 ГБ ОЗУ и 16-ядерным ЦП в качестве цели iSCSI с поддержкой LVM с использованием трех SSD-дисков Samsung, каждый из которых способен выполнять 65 тыс. Операций ввода-вывода в секунду с использованием контроллера LSI 6 Гбит / с со встроенным кешем.

Тест на SSD-диске в целевой программе:

fio --filename=/dev/sdd --direct=1 --sync=1 --rw=write --bs=4k --numjobs=10 --iodepth=1 --runtime=60 --time_based --group_reporting --name=ssd-max

iops=65514

Где sddнастроен аппаратный RAID 0 с использованием трех твердотельных накопителей Samsung 850 EVO.

инициатор

Я экспортировал 500 ГБ LUN на клиент Ubuntu 14.04 с 32 ГБ ОЗУ и 8 ядерными процессорами.

Контрольный показатель по экспортированному LUN

fio --filename=/dev/sdg --direct=1 --sync=1 --rw=write --bs=4k --numjobs=10 --iodepth=1 --runtime=60 --time_based --group_reporting --name=client-max

iops=2400

При выполнении DAS и по сети происходит значительное снижение производительности, я ожидал не менее 10 тыс. Операций ввода-вывода в секунду.

Связь между целью и инициатором составляет менее 1 мс, а iperf показывает пропускную способность сети 9,2 Гбит / с.

Я понимаю, что при записи 4k будет иметь место снижение производительности, поскольку перед записью на диск все данные должны пройти через сетевой стек как инициатора, так и цели, но это недопустимое падение с 65k до 2k.

Где может быть проблема? У меня есть сетевой адаптер Ethernet 10 Гбит / с между целью и инициатором. Любые идеи?

Кевин Паркер
источник
2
Недостаточно информации, и наши хрустальные шары слишком дороги, чтобы тратить их на неоплачиваемых клиентов. Если вам нужна помощь, предоставьте значимую информацию, которая поможет вам разобраться в проблемах.
TomTom
Я отредактировал свой вопрос, если у вас есть время, вы можете помочь мне с вашими предложениями.
Кевин Паркер
Поскольку сетевой адаптер и процессор, вероятно, являются узким местом в любой программной настройке iSCSI, вы можете упомянуть, что они собой представляют.
Ракслице

Ответы:

20

Краткий ответ: это результаты задержки в сети и последовательной рабочей нагрузки (как вы наложили, используя direct=1, sync=1и iodepth=1).

Длинный ответ: используется direct=1, sync=1и iodepth=1вы создали последовательную рабочую нагрузку, поскольку новые записи не могут быть поставлены в очередь до того, как предыдущая запись была зафиксирована и подтверждена. Другими словами, скорость отправки записей строго зависит от задержки в сети. Простая pingмежду двумя машинами вполне может превышать 0,2 мс, особенно если использовать протокол более высокого уровня, такой как TCP (и iSCSI поверх него). Предполагая, что общая задержка сети составляет около 0,33 мс, максимальное значение IOPS составляет около 3000. Это без учета других источников задержки (например, самих дисков), поэтому оно соответствует тому, что вы записали.

Попробуйте это: выполнить первый бенчмарк без --direct=1 --sync=1, а другой с этими опциями, но с увеличением iodepthдо 32 запросов. Тогда сообщите здесь результаты.

shodanshok
источник