FreeBSD Status Report
Report Entry
Модернизация HPC-портов FreeBSD
Ссылки:
sysutils/slurm-wlm URL: https://cgit.freebsd.org/ports/tree/sysutils/slurm-wlm/
net/ucx URL: https://cgit.freebsd.org/ports/tree/net/ucx/
net/openmpi URL: https://cgit.freebsd.org/ports/tree/net/openmpi/
benchmarks/py-reframe-hpc URL: https://cgit.freebsd.org/ports/tree/benchmarks/py-reframe-hpc/
sysutils/py-clustershell URL: https://cgit.freebsd.org/ports/tree/sysutils/py-clustershell/
SchedMD bug 25911: proctrack/freebsd-reaper URL: https://bugs.schedmd.com/show_bug.cgi?id=25911
SchedMD bug 25912: configless OS-specific Include files URL: https://bugs.schedmd.com/show_bug.cgi?id=25912
openucx/ucx#11549: UCS/SYS portability fixes for non-Linux platforms URL: https://github.com/openucx/ucx/pull/11549
hpc/mpifileutils#664: Portability fixes for FreeBSD/non-Linux builds URL: https://github.com/hpc/mpifileutils/pull/664
Контакт: Generic Rikka <rikka.goering@outlook.de>
Этот отчёт продолжает инициативу по модернизации HPC-портов FreeBSD, цель которой — сделать FreeBSD практичной и поддерживаемой платформой для современных стеков программного обеспечения высокопроизводительных вычислений (HPC). В предыдущих кварталах основное внимание уделялось приведению стека Slurm, PMIx, PRRTE и UCX в актуальное состояние и заполнению пробелов в окружающей экосистеме. Работа этого квартала была сосредоточена на трёх вещах: поддержании актуальности планировщика и библиотек связи (включая исправления безопасности), углублении специфичной для FreeBSD поддержки среды выполнения в UCX и обеспечении комбинации Open MPI/UCX, а также передаче первых нативных для FreeBSD функций Slurm в вышестоящий проект SchedMD.
Выполненная работа
-
sysutils/slurm-wlm обновлён трижды: с 26.05.1 до 26.05.2, а затем до 26.05.4, в соответствии с вышестоящими выпусками. Обновление до 26.05.4 также устраняет семь CVE. Благодаря проверке HDF5 на этапе конфигурации, принятой в вышестоящий проект в прошлом квартале, устаревшие нижестоящие патчи HDF5 можно было удалить, а нижестоящий
patch-configureбыл существенно сокращён. Оставшийся нижестоящий патч conmgr для FreeBSD был перебазирован, и был добавлен недостающий include<signal.h>, чтобы набор тестов собирался во FreeBSD. -
В sysutils/slurm-wlm включён
slurmrestd. Он был отключён, поскольку считалось, что он не собирается во FreeBSD, но с текущим Slurm он собирается без каких-либо дополнительных патчей переносимости. Теперь порт поставляетslurmrestdвместе с плагинами REST/OpenAPI. -
net/ucx обновлён с 1.20.1 до 1.22.0. Ранее в этом квартале порт получил защиту вокруг специфичной для Linux реализации netlink, а поддержка
ucx_vfsбыла улучшена для FreeBSD путём заменыfusermount3наmount_fusefs/umount, использования совместимого с FreeBSD определения возможностей FUSE и исправления обработки вспомогательных данных UNIX-сокетов (SCM_RIGHTSи учётных данных узла). Последующее исправление для inotify-наблюдения VFS было предоставлено Laurent Chardon. -
В net/openmpi введена опция UCX, позволяющая собирать Open MPI с net/ucx во FreeBSD (работа Laurent Chardon, основанная на тестировании и отчётах в рамках этой инициативы). Это также исправило падение OMPIO
sharedfp/sm. -
benchmarks/py-reframe-hpc обновлён дважды: с 4.10.0 до 4.10.2, а затем до 4.10.3.
-
sysutils/py-clustershell обновлён с 1.9.3 до 1.10.1, включая исправления непереносимых тестов.
-
В SchedMD передан
proctrack/freebsd-reaper— новый плагин отслеживания процессов Slurm, построенный на API процесса-сборщикаprocctl()FreeBSD. Демон шага получает статус сборщика, отслеживает потомков через смены групп процессов и вложенных сборщиков и сигнализирует отслеживаемому дереву процессов во время очистки. На тестовом узле FreeBSD он очищал осиротевшие, устойчивые к SIGTERM и вложенные дочерние процессы так же, какproctrack/pgid, и дополнительно обрабатывал экранирования черезsetsid,setpgid, двойной fork и вложенные демоны, которыеproctrack/pgidне обрабатывает. Регрессия с зомби-процессами была повторно протестирована, и узел вернулся в состояние IDLE без тайм-аута и без draining. -
В SchedMD передана поддержка
%oдля имён файловIncludeв конфигурации Slurm.Include slurm-%o.confвыбираетslurm-FreeBSD.confво FreeBSD иslurm-Linux.confв Linux, так что гетерогенный configless-кластер может хранить одну авторитетную конфигурацию наslurmctld. Это уже работает на смешанном кластере FreeBSD/Fedora с использованием соответствующих патчей порта.
Ведущаяся работа
-
Обработка отзывов рецензирования по открытым вышестоящим pull-запросам UCX (переносимость UCS/SYS для не-Linux платформ) и mpifileutils (защита API только для Linux), чтобы ещё больше сократить локальные наборы патчей портов.
-
Взаимодействие с SchedMD по поводу переданных
proctrack/freebsd-reaperи configless%oInclude.
Планы на будущее
-
Зафиксировать оставшиеся вышестоящие pull-запросы и продолжать выявлять проблемы переносимости FreeBSD, чтобы исправлять их в вышестоящем проекте, а не патчить локально.
-
Перенести патчи Slurm, принятые SchedMD, в порт и удалить соответствующие нижестоящие изменения.
-
Продолжать внимательно отслеживать вышестоящие выпуски Slurm, UCX, Open MPI, PMIx и PRRTE.
-
Задокументировать эталонное развёртывание Slurm + Open MPI + PMIx + PRRTE + UCX во FreeBSD, включая смешанную configless-конфигурацию FreeBSD/Linux, чтобы снизить барьер для новых площадок.
Последнее изменение: 6 ноября 2026 г. от Vladlen Popolitov