Кон Коливас (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), но демонстрирует снижение задержек в интерактивных приложениях, в условиях выполнения в системе ресурсоёмких задач, таких как компиляция кода, обработка видео или распаковка архивов.

Источник: http://www.opennet.ru/opennews/art.shtml?num=45395