Инструменты22 августа 2026 г., 14:18 МСК🤖 Auto

Linux 7.3: sched_ext стал «feature complete» с поддержкой подпланировщиков

В ядро Linux 7.3 интегрирована завершённая поддержка иерархических подпланировщиков (sub-schedulers) в фреймворке sched_ext, позволяющая назначать уникальные BPF-алгоритмы для разных групп задач.

Баннер новости 6306

Итог годовой разработки: от диспетчеризации к полному контролю

После года интенсивной разработки команда Linux Kernel, возглавляемая Tejun Heo, объявила поддержку подпланировщиков в фреймворке sched_ext «feature complete» (готовой к использованию) в релизе Linux 7.3. Ключевое изменение заключается в переходе от простой делегации диспетчеризации к полному контролю над процессами планирования. Теперь корневой BPF-планировщик может передать поддерево cgroup вложенному подпланировщику вместе с отзывными правами на CPU, после чего суб-планировщик принимает все решения по расписанию задач на этих ядрах.

Технические детали и исправления уязвимостей

Интеграция включает не только новые возможности, но и критические исправления безопасности и стабильности. Разработчики закрыли векторы коррупции памяти, добавив валидацию BPF-доступной памяти арены перед использованием ядром. Также устранены проблемы с гонками данных при записи slice и vtime, введя явные правила синхронизации. Важным улучшением стала защита от зависаний: если задача «голодает» из-за отсутствия доступа к CPU, ядро теперь запускает её напрямую в рамках небольшого бюджета пропускной способности, превращая фатальную ошибку планировщика в контролируемое деградацию.

Ключевые изменения в Linux 7.3 для sched_ext

Категория Изменение / Исправление Значение
Делегирование CPU Родительские планировщики теперь передают права на enqueueing, preemption и контроль частоты Полный контроль суб-планировщика над выделенными ядрами, а не только диспетчеризация
Безопасность (Hardening) Валидация BPF-writable arena памяти и синхронизация vtime Защита от коррупции состояния при использовании баговых или злонамеренных планировщиков
Стабильность (Rescue) Запуск «голодающих» задач на небольшом бюджете пропускной способности Предотвращение полного зависания системы при сбое кастомного планировщика
Core Scheduling Исправление потери rq lock и перезапуск выбора Устранение возможности взаимной блокировки (hard-hang) при интерливинге выборов
Интеграция cgroup Правильный перенос задач при миграции через границы суб-планировщика Исправление use-after-free и ошибок планирования при перемещении задач

Практическое применение: scx_qmap

Для демонстрации возможностей иерархического планирования используется утилита scx_qmap, которая теперь полностью поддерживает суб-планировщики. Это позволяет администраторам и разработчикам создавать изолированные среды планирования: например, выделять один BPF-планировщик для высокопроизводительных вычислений, а другой — для интерактивных задач или контейнеризованных сред, оптимизируя поведение системы под конкретные workload'ы без конфликтов.

Почему это важно

Раньше sched_ext позволял заменять основной планировщик, но не давал гибкости для управления разными типами задач внутри одной системы. Теперь же архитектура поддерживает многоуровневое планирование, что критически важно для облачных инфраструктур и гиперконвергентных систем, где требуется строгая изоляция и оптимизация ресурсов для различных сервисов. Изменения уже включены в Git-репозиторий Linux 7.3, а фиксы для core scheduling помечены для backporting в стабильные ветки.

Источник: Phoronix ↗