Автор BFS представил новый планировщик задач MuQSS для ядра Linux
Кон Коливас (Con Kolivas), автор планировщика задач BFS (Brain Fuck Scheduler), ориентированного на обеспечение оптимальной отзывчивости приложений на рабочем столе, представил первый публичный выпуск нового планировщика MuQSS (Multiple Queue Skiplist Scheduler), который позиционируется как следующий шаг в развитии BFS, адаптированный для современных реалий. MuQSS может выступать в качестве прозрачной замены BFS и также нацелен на повышение отзывчивости и интерактивности обычных пользовательских задач.
MuQSS изначально ориентирован на многопоточную обработку заданий и устраняет ограничения BFS, связанные с масштабируемостью на многоядерных системах. В MuQSS продолжено использование алгоритмов и упрощенной архитектуры BFS, которые переработаны для масштабирования на оборудовании с любым числом процессорных ядер и систем с любым числом активных процессов. Если в BFS применялась единая очередь ожидающих выполнения заданий, то в MuQSS применена схема с раздельными очередями для каждого ядра CPU, что позволило добиться более равномерного распределения нагрузки по ядрам CPU и избавиться от блокировок, охватывающих сразу все ядра CPU.
При этом удалось обойтись без сложных схем балансировки заданий между очередями, благодаря задействованию не требующего установки блокировок метода опроса очередей и применению списков с пропусками вместо ранее используемых связанных списков. В процессе обработки очереди MuQSS оценивает наличие в других очередях заданий с истекающим deadline и на лету принимает решение о выполнении, если это требуется для минимизации задержек или балансировки нагрузки на CPU.
MuQSS не претендует на роль полнофункциональной замены основного планировщика ядра Linux, ориентируясь только только на работу при выполнении специфичных для настольных систем задач. Например, не MuQSS отягощен поддержкой cgroups, справедливого распределения приоритетов и точного учета крайнего расчетного времени (deadline), но демонстрирует более высокую отзывчивость в тестах, оценивающих работу в интерактивных приложениях, при параллельном выполнении в системы таких задач как компиляция кода, обработка видео или распаковка архивов.