Почему open-iscsi в два раза медленнее пишет, чем Samba через 10G Ethernet?

9

На моем локальном файловом сервере у меня есть raid-6 на жестких дисках 7x.

dd if=/dev/zero of=tempfile bs=1M count=2048 conv=fdatasync

Тест локальной скорости дает мне скорость записи 349 МБ / с.

Удаленная запись в Samba с SSD (скорость чтения> 2 Гбит / с) дает мне 259 МБ / с записей. Но удаленная запись на диск iSCSI (на инициаторе iSCSI в Win10) дает мне всего 151 Мбит / с.

raid6 config - размер фрагмента 128K, stripe_cache_size = 8191. Битовая карта с намерением записи находится на SSD (Samsung 860 PRO, 4096K битовый фрагмент).

Массив монтируется с опциями: rw,noatime,nobarrier,commit=999,stripe=128,data=writeback

Настройка open-iscsi: цель основана на файле 4Tb.

Любые намеки, почему iSCSI медленнее, чем Samba при записи? Любые советы о том, как улучшить скорость записи iSCSI?

Я предполагаю, что это как-то связано с желанием open-iscsi сбрасывать записи на диск после каждой операции, что увеличивает усиление записи на raid6 из-за чрезмерной четности перезаписей. Но я не уверен, как это исправить. Ускорить его важнее, чем безопасность записанных на данный момент данных на случай отключения электроэнергии.

В качестве примечания побольше, ietd iSCSI target имел возможность включить режим обратной записи (используя IOMode=wb), а постоянная скорость записи была намного выше. К сожалению, в настоящее время он не поддерживается.

BarsMonster
источник
2
На что похожа сеть? 10GigE? Какая версия ОС сервера, версия ядра? Какова цель и версия iscsi? итд, скст или лио? Open-iscsi предоставляет только инициатор, а не цель ... Что вы используете для измерения скорости записи? Какая файловая система используется на цели?
wazoox
В Windows 10 QoS удален с сетевой карты?
yagmoth555
2
Размещение конфигурации вашей цели iSCSI и любых настроенных сетевых настроек также будет разумным в этом случае. Вы также можете рассмотреть возможность тестирования с помощью инициатора open-iscsi на клиенте linux с современным ядром, чтобы провести четкое сравнение между инициаторами, использующими одну и ту же цель, поскольку существующий тест может быть слишком сужен инициатором Windows. Больше данных == лучше.
шпульницы
1
Но насколько фактический касаются вопроса: ISCSI и Samba очень разные, и вы используя уровень кэширования VFS при использовании Samba , который не существует в голом блочном устройстве. Я понимаю, что вы удивлены разницей в производительности, но вас больше волнует это сравнение или получение iSCSI для насыщения вашей сети? Если iSCSI - ваша главная задача, а производительность Samba - незначительная деталь для контекста, вы можете отредактировать вопрос, чтобы сделать его более понятным (и, возможно, получить лучшие ответы).
шпульницы
Вы использовали Windows 10 для теста, но я не вижу подробностей о машине, используемой где-либо. (а зачем использовать клиентскую ОС Windows для такого теста?)
yagmoth555

Ответы:

6

Прежде всего, RAID-6 является проблемой из-за вычисления двойной четности. Во-вторых, вы можете подключить iSCSI target дважды в MS iSCSI Initiator, включить RR или наименьшую глубину очереди (к сожалению, Win10 не поддерживает многопоточность, поэтому вместо этого вы можете протестировать ее с Windows Server).

На самом деле доступ на уровне блоков должен быть быстрее, чем доступ на уровне файлов. Какой тип инструмента для тестирования вы используете на сайте Windows? Я бы порекомендовал использовать diskpd или FIO. Кроме того, вы можете использовать что-то вроде Starwind в качестве гораздо более быстрой цели iSCSI.

https://www.starwindsoftware.com/starwind-virtual-san#Hyper-V

Штука
источник
2
Рейд 6 аппаратный, а не программный. Это больше не проблема производительности с 20 лет.
Нильс
RAID-6 это проблема? Расчет паритета происходит независимо от протокола.
Даниэль
2
RAID6 работает медленнее не из-за вычислений четности, а из-за так называемой «дыры в записи», являющейся результатом характера RAID четности чтения-изменения-записи.
BaronSamedi1958
3
«Raid 6 - это аппаратное обеспечение, а не программное обеспечение. Уже более 20 лет он больше не является проблемой производительности. - Нильс 21 марта в 10:05» -> Это просто неправда :( Читать это -> theithollow.com/
2012/03/21
1

iSCSI следует использовать на уровне блоков, описание вашей настройки звучит так, как будто вы используете файловую систему, помещаете в нее файл и затем запускаете этот файл как блочный уровень iSCSI.

Это далеко не идеал, и определенно не установка для сравнения скоростей. Попробуйте использовать lvm поверх raid6 для сегментирования пространства и остаться на блочном уровне для iSCSI, или используйте raid6 непосредственно как устройство iSCSI.

В текущей настройке данные передаются по сети, попадая в файл в файловой системе, который (скорее всего) не оптимизирован для этого типа рабочей нагрузки, а также передается другим процессам. Можно выполнить такую ​​настройку с iSCSI, но это следует рассматривать как неоптимизированное резервное решение.

hargut
источник
1

Обратите внимание, что ddэто очень простой тест, и он ОЧЕНЬ склонен к искажению. Например, вы ddпишете нули - если что-то имеет особый случай для данных, полных нулей (например, потому что это может выполнять сжатие), вы увидите фантастическую производительность, но переключитесь на запись ненулевых «реальных данных», и внезапно эта производительность может исчезнуть. ..

Чтобы ответить на ваш вопрос (как и при любом бенчмаркинге), вам действительно нужно выделить фрагменты, чтобы определить, что представляет проблему. Например, запись в файловую систему Windows напрямую (а не через iSCSI) также чрезвычайно быстрая? Если вы берете ту же аппаратную конфигурацию и запускаете Linux вместо Windows, это так же быстро или замедляется? Что произойдет, если вы перейдете к использованию инструмента тестирования, такого как fio ?

К сожалению, слишком много возможностей, чтобы иметь возможность ответить на такой вопрос хорошо ...

скоро
источник