В последние годы технологии машинного обучения стремительно развиваются и внедряются во многие сферы, от распознавания образов до анализа больших объемов данных. Одной из последних и очень перспективных областей применения машинного интеллекта стала балансировка нагрузки в современных операционных системах, особенно в ядре Linux. Сложность современных вычислительных платформ, рост многопроцессорных систем с десятками и даже сотнями ядер, внедрение гетерогенных процессоров и необходимость обеспечивать требовательные к задержкам задачи требуют фундаментального пересмотра классических подходов к планированию и распределению ресурсов. Традиционные алгоритмы балансировки, разработанные ещё для систем с четырьмя и менее процессорными ядрами, сегодня уже не справляются с новыми вызовами. Рассмотрим, каким образом использование технологий машинного обучения способно перевернуть представления о тонком управлении вычислительной нагрузкой и обеспечить качественный скачок в эффективности работы современных систем.
Исторически в ядре Linux был внедрен так называемый полностью справедливый планировщик (Completely Fair Scheduler, CFS), появившийся в 2007 году. Его основная идея заключалась в равномерном распределении процессорного времени между всеми задачами, обеспечивая при этом предсказуемость и справедливость. Однако CFS был разработан для тех времён, когда обычный сервер или настольный компьютер имел 2, 4 или максимум 8 однотипных ядер. По мере роста числа процессорных ядер и усложнения архитектур другого рода появились альтернативы, призванные покрыть специфические задачи, например, BFS и MuQSS, направленные на улучшение интерактивности и снижение латентности при определённых сценариях. В 2023 году был представлен EEVDF – новый предсказуемый планировщик, призванный заменить CFS и повысить эффективность для новых задач.
Большой прорыв произошел в 2024 году с введением extensible scheduler class (sched_ext) – расширяемого класса планировщика, позволяющего интегрировать собственные алгоритмы планирования с помощью eBPF-функций непосредственно в ядро Linux. Это не просто улучшение старого планировщика, а создание платформы для экспериментов и внедрения новых идей, в том числе и основанных на машинном обучении. Одной из главных проблем современных вычислительных систем являются гетерогенные архитектуры, где наряду с традиционными высокопроизводительными ядрами присутствуют энергоэффективные, отличающиеся по архитектуре или набору инструкций. Такой подход применяется в мобильных устройствах, серверных платформах и даже в настольных компьютерах для повышения энергоэффективности. Не менее значимыми являются NUMA-системы, где скорость доступа к памяти различается в зависимости от расположения ядра и физической памяти.
При неправильном распределении нагрузки производительность может сильно падать из-за лишних задержек и накладных расходов. Применение традиционных планировщиков, неспособных учитывать эти тонкости и переменчивость задач и ресурсов, приводит к необходимости ручного закрепления задач за конкретными ядрами или разделения системы на статические сегменты, что неудобно и неэффективно с точки зрения администрирования и эксплуатации. В 2025 году на OSSNA был представлен проект по созданию нового типа планировщика под названием scx_rusty, основанного на машинном обучении. В качестве кейса был выбран проект Free5GC — открытая реализация ядра 5G-сети, отличающаяся строго предъявляемыми требованиями к задержкам и интенсивным использованием CPU. Реальные задачи Free5GC включают как CPU-интенсивные операции, так и критически чувствительные к латентности сетевые обработки.
Традиционные планировщики показывали себя недостаточно эффективными, зачастую вызывая перегрузки одних ядер и простои других. Простейший подход, предусматривающий разделение процессоров на «латентные» и «общие», также оказался изначально слишком грубым, не учитывающим приоритеты каждого из видов сетевого трафика. Голосовые вызовы, стриминговое видео и веб-трафик имели одинаковый уровень важности, что приводило к задержкам в критичных сценариях. Новый планировщик на базе машинного обучения анализировал множество параметров: приоритет каждой задачи, затраты процессорного времени, история использования CPU, текущая нагрузка на ядра, особенности распределения памяти в NUMA, а также частоту работы процессоров. Благодаря многомерному анализу, модель могла в режиме реального времени принимать решения о миграции задач с одного ядра на другое, избегая узких мест и сохраняя баланс между производительностью и энергопотреблением.
Важным техническим аспектом реализации стало преодоление ограничения ядра Linux — запрета на использование операций с плавающей точкой. Поскольку нейросетевые модели обычно требуют интенсивных вычислений с плавающей арифметикой, было принято решение использовать фиксированную арифметику, что позволило эффективно запустить алгоритмы внутри ядра без потерь производительности. Итоговый показатель производительности нового планировщика в тесте компиляции ядра вырос на 10 % по сравнению с EEVDF, а число миграций задач сократилось на 77 %. Сокращение миграций важно не только для производительности, но и для уменьшения накладных расходов и сохранения устойчивости системы. Машинное обучение выступает здесь как инструмент распознавания сложных шаблонов в многомерном пространстве состояний системы.
Классический алгоритм — это фиксированное правило, к которому подгоняются все задачи и архитектуры. Машинное же обучение позволяет подстраиваться под конкретный набор условий и требований, используя опыт прошлых решений. Это приводит к адаптивности, когда с развитием новых архитектур и появлением различных рабочих нагрузок планировщик будет переобучаться, совершенствуя свои решения. Эта модель способна учитывать до 15 параметров для каждой миграционной операции, объединяя их в цельную картину для баланса производительности, энергопотребления и надёжности. Таким образом, мы стоим на пороге новой эры планирования вычислительных ресурсов, где искусственный интеллект формирует основу управления системами.
Балансировка нагрузки с применением машинного обучения открывает путь к созданию по-настоящему адаптивных, эффективных и производительных платформ, способных самостоятельно подстраиваться под сложнейшие условия эксплуатации. Ввод cahanger sched_ext в ядро Linux и практические результаты, достигнутые на реальных проектах, доказывают, что этот подход давно перезрел и может стать стандартом будущего. Вместе с развитием новых технологий, увеличением числа ядер и внедрением гетерогенных систем искусственный интеллект в планировщиках будет играть всё более важную роль, обеспечивая инновационные возможности для оптимизации и повышения производительности ваших вычислительных инфраструктур.