Цель 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 Гбит / с между целью и инициатором. Любые идеи?
источник
Ответы:
Краткий ответ: это результаты задержки в сети и последовательной рабочей нагрузки (как вы наложили, используя
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 запросов. Тогда сообщите здесь результаты.источник