FreeBSD Status Report

Report Entry

Модернизация HPC-портов FreeBSD

Контакт: 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 %o Include.

Планы на будущее

  • Зафиксировать оставшиеся вышестоящие pull-запросы и продолжать выявлять проблемы переносимости FreeBSD, чтобы исправлять их в вышестоящем проекте, а не патчить локально.

  • Перенести патчи Slurm, принятые SchedMD, в порт и удалить соответствующие нижестоящие изменения.

  • Продолжать внимательно отслеживать вышестоящие выпуски Slurm, UCX, Open MPI, PMIx и PRRTE.

  • Задокументировать эталонное развёртывание Slurm + Open MPI + PMIx + PRRTE + UCX во FreeBSD, включая смешанную configless-конфигурацию FreeBSD/Linux, чтобы снизить барьер для новых площадок.


Последнее изменение: 6 ноября 2026 г. от Vladlen Popolitov