Summary: | [e2k] проблема настройки iSER/RoCE на Mellanox ConnectX-4 Lx | ||||||
---|---|---|---|---|---|---|---|
Product: | Альт Сервер | Reporter: | svmoskalen | ||||
Component: | Ошибки работы | Assignee: | Michael Shigorin <mike> | ||||
Status: | CLOSED FIXED | QA Contact: | qa-p8 <qa-p8> | ||||
Severity: | normal | ||||||
Priority: | P5 | CC: | bircoph, boyarsh, mike, rider, shrek, svmoskalen | ||||
Version: | 9.0 | ||||||
Hardware: | e2k | ||||||
OS: | Linux | ||||||
See Also: | http://bugzilla.altlinux.org/show_bug.cgi?id=46468 | ||||||
Bug Depends on: | 41955 | ||||||
Bug Blocks: | |||||||
Attachments: |
|
Description
svmoskalen
2022-01-25 21:40:25 MSK
(Ответ для svmoskalen на комментарий #0) > в списке включенных модулей ядра не хватает модуля ib_ucm, > его нет в дистрибутиве. Мы работаем в т.ч. с ConnectX-3/4, но как Ethernet, а не Infiniband-интерфейсами (сейчас под рукой и свича-то такого нет для проверки). Модуль ib_ucm был удалён ещё из ядра Linux 5.3 (поправил вики): http://kernelnewbies.org/Linux_5.3 http://git.kernel.org/linus/a1a8e4a85cf7daff8b26c7b8698442ef677b4f97 В Альт 9.0 для Эльбрус применяется ядро 4.9, в 9.2 -- 5.4; хорошо бы уточнить на всякий `uname -r` и/или версию дистрибутива, на которую оформлена эта бага. В любом случае посмотрел и ib_ucm.ko в ядрах под e2k у нас был, но в 3.14.79-elbrus-8c-alt13.72.9 из p8_e2k; состав infiniband/core/ в 4.9 и 5.4 уже одинаковый. Антон, Андрей, есть какие соображения по состоянию поддержки IB у нас сейчас? (In reply to Michael Shigorin from comment #1) > Антон, Андрей, есть какие соображения по состоянию поддержки IB у нас сейчас? Я не слежу за этим вопросом. Могу только сказать, что была серьёзная переработка фабрик и многое сейчас живёт в rdma-core. Возможно, на стороне ядра тоже были изменения. Если очень нужно, могу заняться этим вопросом, но нужен стенд с оборудованием. В Эльбрусовых ядрах 5.4 все фичи по IB включены (кроме отладочной CONFIG_INFINIBAND_IPOIB_DEBUG_DATA, которая лупит по производительности даже будучи деактивированной).
> Антон, Андрей, есть какие соображения по состоянию поддержки IB у нас сейчас?
По идее всё должно быть хорошо, но в стендартный цикл тестирования наших ядер, насколько я знаю, проверка infinibend не входит, так что не знаю.
Скорее всего я чрезмерно конкретно вопрос задал, Infiniband не нужен, перефразирую: Целевая задача такая: настроить следующую цепочку протоколов FS -> Ethernet -> iSER -> Ethernet -> RoCE -> RAID Controller с одного сервера на другой: сервер1 Elbrus 8c2(AltLinux 9.0 MLX5) -> сервер2 Elbrus 8c(ElbrusLinux 6.0 MLX4 LSI Logic/Symbios Logic MegaRAID SAS-3) Иду по инструкции https://www.altlinux.org/RoCE#Подготовка в которой есть ссылка уже на страницу https://www.altlinux.org/Infiniband, про которую я писал ранее. Базовые вопросы какие пакеты ставить?(не все команды далее по инструкции работают) Какие модули ядра подключать?(С этим вроде бы уже разобрались) Нужно ли переконфигурировать ядро? Например в пункте 1: ядро, собранной с поддержкой нужных IB устройств (в нашем случаеmlx4_core, mlx4_ib) mlx4_ib нет в настройках ядра, нужно ли его добавлять и переконфигурировать ядро Да и для mlx5 в инструкции нужно уже предусмотреть вариант настройки. Вторым шагом будет использование altLinux в качестве target iSER В итоге хотелось бы получить обновленную рабочую инструкцию в стиле от А до Я такого решения. P.S. возможно bug tracker не место для такого обсуждения, тогда просьба направить на правильный ресурс. (In reply to svmoskalen from comment #5) > Скорее всего я чрезмерно конкретно вопрос задал, Infiniband не нужен, > перефразирую: > Целевая задача такая: > настроить следующую цепочку протоколов > FS -> Ethernet -> iSER -> Ethernet -> RoCE -> RAID Controller > с одного сервера на другой: > сервер1 Elbrus 8c2(AltLinux 9.0 MLX5) -> сервер2 Elbrus 8c(ElbrusLinux 6.0 > MLX4 LSI Logic/Symbios Logic MegaRAID SAS-3) > Иду по инструкции https://www.altlinux.org/RoCE#Подготовка > в которой есть ссылка уже на страницу https://www.altlinux.org/Infiniband, > про которую я писал ранее. > Базовые вопросы какие пакеты ставить?(не все команды далее по инструкции > работают) Инструкция писалась для c7 и ConnextX-3. Общие принципы остались те же, конкретные команды могли измениться. Я не могу обновить пошаговую инструкцию без стенда. > Какие модули ядра подключать?(С этим вроде бы уже разобрались) > Нужно ли переконфигурировать ядро? Думаю, что нет. > Например в пункте 1: ядро, собранной с поддержкой нужных IB устройств (в > нашем случаеmlx4_core, mlx4_ib) > mlx4_ib нет в настройках ядра, нужно ли его добавлять и переконфигурировать > ядро Что за ядро у вас? Задавали же уже вопрос. Приведите вывод `uname -a`. Для справки: в ядре 5.4.163-elbrus-* модуль mlx4-ib есть. В сильно старых ядрах не все карты mellanox поддерживались на Эльбрусе из-за ошибок сборки модулей. > Да и для mlx5 в инструкции нужно уже предусмотреть вариант настройки. > Вторым шагом будет использование altLinux в качестве target iSER > В итоге хотелось бы получить обновленную рабочую инструкцию в стиле от А до > Я такого решения. Для этого нужен стенд и выделенное время (замечу, что я НЕ сотрудник техподдержки и у меня другие задачи; инструкцию по IB писал просто потому, что есть практический опыт работы с IB). В общих чертах поднятие iSER target не отличается от других дистрибутивов (в ядре поддержка есть, targetcli для Эльбрусов собран). информацию о ядре сообщу чуть позже, в данный момент стенд мне не доступен (Ответ для svmoskalen на комментарий #5) > Целевая задача такая: Спасибо, что сформулировали -- порой до этого шага трудно добраться "назад". > (не все команды далее по инструкции работают) В таких случаях для ускорения разбора бывает полезно пошагово перечислить: "делаю 1, 2, 3, дальше написано 4, а выходит IV": мы-то сможем воспроизвести, когда сделаем стенд с вами или с коллегами из Mellanox. > Нужно ли переконфигурировать ядро? Не стоит, но и впрямь надо понять его версию. Из того, что наблюдали: на 804 машине и 10GE с i82599ES под ядром 5.4-1.9 порой теряются пакеты; под 5.4-2.12 интерфейс не работает вообще; под 5.4-2.20 работает отлично. > Да и для mlx5 в инструкции нужно уже предусмотреть вариант настройки. Кстати, Вы тоже так можете по результатам проверки :) (довольно многие инженеры участвуют в улучшении нашей вики -- точечно или целыми страницами -- чтобы затем иметь под рукой заведомо актуальную документацию для себя же) > Вторым шагом будет использование altLinux в качестве target iSER > В итоге хотелось бы получить обновленную рабочую инструкцию в стиле > от А до Я такого решения. Инструкциями всё-таки скорее поддержка занимается по соответствующим контрактам, ну или профильные интеграторы -- но как минимум бага на вики-страничку уже принята и частично исправлена, осталось добиться собственно работы. > P.S. возможно bug tracker не место для такого обсуждения, тогда просьба > направить на правильный ресурс. Это через ваших закупщиков и наших продажников (переслал на всякий), а тут интерфейс "инженер-инженер". Обычно эти механизмы друг друга дополняют. Для решения описанной мной задачи нужен пакет tgt для архитектуры e2k(для x86 он есть) в Эльбрус Linux он также присутствует Есть возможность его добавить? с tgt все получилось: "Следующие дополнительные пакеты будут установлены: perl-Config-General scsitarget-utils" Теперь не стартует сервис tgt с драйвером iser: Что из нижеперечисленного я делаю не правильно? Делаю так(при чем в Elbrus Linux это работает): добавляю конфиг: #vim /etc/tgt/conf.d/test.conf <target iqn.2022-01.com.example:yakhont.target01> driver iser direct-store /dev/sdb incominguser логин пароль </target> далее старт сервиса - неуспешный Лог(sudo journalctl -r -u tgt): -- Logs begin at Fri 2022-02-11 10:15:02 MSK, end at Tue 2022-02-15 17:34:59 MSK. -- фев 15 16:11:09 test1alt10 systemd[1]: Failed to start tgtd iSCSI target daemon. фев 15 16:11:09 test1alt10 systemd[1]: tgt.service: Failed with result 'exit-code'. фев 15 16:11:09 test1alt10 systemd[1]: tgt.service: Main process exited, code=killed, status=9/KILL фев 15 16:11:09 test1alt10 systemd[1]: tgt.service: Killing process 7742 (tgtd) with signal SIGKILL. фев 15 16:11:09 test1alt10 systemd[1]: tgt.service: State 'stop-sigterm' timed out. Killing. фев 15 16:09:39 test1alt10 systemd[1]: tgt.service: Control process exited, code=exited, status=22/n/a фев 15 16:09:39 test1alt10 tgt-admin[7746]: exited with code: 22. фев 15 16:09:39 test1alt10 tgt-admin[7746]: tgtadm -C 0 --lld iser --op new --mode target --tid 1 -T > фев 15 16:09:39 test1alt10 tgt-admin[7746]: Command: фев 15 16:09:39 test1alt10 tgt-admin[7751]: tgtadm: can't find the driver фев 15 16:09:39 test1alt10 tgtd[7742]: tgtd: mtask_execute(496) driver iser is in state: error фев 15 16:09:34 test1alt10 tgtd[7742]: tgtd: bs_init(393) use pthread notification фев 15 16:09:34 test1alt10 tgtd[7742]: tgtd: work_timer_start(146) use timer_fd based scheduler фев 15 16:09:34 test1alt10 tgtd[7742]: tgtd: iser_ib_init(3431) Failed to initialize RDMA; load kernel module> фев 15 16:09:34 test1alt10 systemd[1]: Starting tgtd iSCSI target daemon... фев 15 16:01:26 test1alt10 systemd[1]: Failed to start tgtd iSCSI target daemon. фев 15 16:01:26 test1alt10 systemd[1]: tgt.service: Failed with result 'exit-code'. фев 15 16:01:26 test1alt10 systemd[1]: tgt.service: Main process exited, code=killed, status=9/KILL фев 15 16:01:26 test1alt10 systemd[1]: tgt.service: Killing process 5759 (tgtd) with signal SIGKILL. фев 15 16:01:26 test1alt10 systemd[1]: tgt.service: State 'stop-sigterm' timed out. Killing. фев 15 15:59:56 test1alt10 systemd[1]: tgt.service: Control process exited, code=exited, status=22/n/a фев 15 15:59:56 test1alt10 tgt-admin[6087]: exited with code: 22. фев 15 15:59:56 test1alt10 tgt-admin[6087]: tgtadm -C 0 --lld iser --op new --mode target --tid 1 -T > фев 15 15:59:56 test1alt10 tgt-admin[6087]: Command: фев 15 15:59:56 test1alt10 tgt-admin[6193]: tgtadm: can't find the driver фев 15 15:59:56 test1alt10 tgtd[5759]: tgtd: mtask_execute(496) driver iser is in state: error фев 15 15:59:51 test1alt10 tgtd[5759]: tgtd: bs_init(393) use pthread notification фев 15 15:59:51 test1alt10 tgtd[5759]: tgtd: work_timer_start(146) use timer_fd based scheduler фев 15 15:59:50 test1alt10 tgtd[5759]: tgtd: iser_ib_init(3431) Failed to initialize RDMA; load kernel module> фев 15 15:59:48 test1alt10 systemd[1]: Starting tgtd iSCSI target daemon... -- Reboot -- список загруженных модулей ядра, не меньше чем в Elbrus Linux # lsmod | grep '\(ib_\|rdma\|mlx\|scsi\|iser\)' ВК1: mlx5_ib 802816 0 mlx5_core 2703360 1 mlx5_ib tls 176128 1 mlx5_core mlxfw 49152 1 mlx5_core rdma_ucm 69632 0 ib_uverbs 315392 2 rdma_ucm,mlx5_ib iscsi_tcp 36864 0 libiscsi_tcp 49152 1 iscsi_tcp ib_umad 61440 0 ib_iser 106496 0 libiscsi 147456 3 libiscsi_tcp,iscsi_tcp,ib_iser scsi_transport_iscsi 167936 4 libiscsi_tcp,iscsi_tcp,ib_iser,libiscsi rdma_cm 167936 2 ib_iser,rdma_ucm configfs 110592 2 rdma_cm iw_cm 102400 1 rdma_cm ib_cm 212992 1 rdma_cm ib_core 794624 8 rdma_cm,iw_cm,ib_iser,ib_umad,rdma_ucm,ib_uverbs,mlx5_ib,ib_cm ipv6 1527808 54 rdma_cm,ib_core Из того что заметил: нет пакета libmlx5/libmlx4 - в отличие от Elbrus Linux P.S если указать драйвер iscsi - сервис стартует нормально Прочитал здесь: https://github.com/fujita/tgt/blob/master/doc/README.iser To run iser, you'lll need the binary form of these libraries, libibverbs.so and librdmacm.so along with device specific user space library such as libmlx4 for Mellanox ConnectX HCAs. в моем случае это libmlx5 а не libmlx4. А ее нет, банальное копирование этой библиотеки из Elbrus Linux не спасает. (Ответ для svmoskalen на комментарий #10) > с tgt все получилось: В смысле достаточно scsitarget-utils? > Теперь не стартует сервис tgt с драйвером iser: > Что из нижеперечисленного я делаю не правильно? Не в курсе, поскольку не сталкивался с iSCSI или вообще, или давно. Валера, там часом нет чего очевидного тебе? > Из того что заметил: > нет пакета libmlx5/libmlx4 - в отличие от Elbrus Linux Посмотрел -- на x86 входит в собранные из rdma-core бинарные пакеты (PS re comment 12 -- там же и libmlx5): contents_index.x86_64:/usr/lib64/libmlx4.so rdma-core-devel contents_index.x86_64:/usr/lib64/libmlx4.so.1 libibverbs contents_index.x86_64:/usr/lib64/libmlx4.so.1.0.38.0 libibverbs В версии 28, которая сейчас в p10_e2k, их там ещё не было. В версии 34 уже появились, но от предшествующих ей не получалось малой кровью оторвать хотелку pandoc (это haskell, который на e2k уже одним человеком забустраплен, но нигде ещё не собран штатным порядком). Попытаемся забороть обновку, раз такое дело. Валера, в comment 10 часом нет чего очевидного тебе? (Ответ для Michael Shigorin на комментарий #13) > > нет пакета libmlx5/libmlx4 - в отличие от Elbrus Linux > contents_index.x86_64:/usr/lib64/libmlx4.so.1 libibverbs Дело не в версии, а в util/udma_barrier.h; смотрим. Created attachment 10314 [details] rdma-core-e2k.patch Илья сделал следующий патч для rdma-utils 38.0: http://git.altlinux.org/gears/r/rdma-core.git?p=rdma-core.git;a=commitdiff;h=1c714832512108e90614088aa678d00acfdedc69 Надо сверить с тем, что сделали в МЦСТ для сборки этих providers; запросил. В bug 46468 comment 0 сообщают, что эта проблема решена. |