O inovador subsistema de escalonamento extensível do Kernel Linux, o sched_ext, está passando por uma “arrumação de casa” em preparação para o kernel 6.19. Uma nova série de patches do mantenedor Tejun Heo não traz grandes funcionalidades para o usuário final, mas realiza um trabalho de base crucial que permitirá a criação de sub-escalonadores — ou escalonadores hierárquicos — no futuro.
Limpando o passado e preparando o futuro
O sched_ext é um escalonador extensível que usa o framework BPF para permitir que políticas de escalonamento sejam implementadas diretamente no kernel de forma modular e segura. Essa flexibilidade abre portas para soluções mais sofisticadas e especializadas, como sub-escalonadores que operam hierarquicamente em diferentes níveis do sistema, adaptando-se a necessidades específicas de workloads complexos.
A primeira etapa desse patchset é uma limpeza de código importante. Macros de compatibilidade antigas, que mantinham suporte para versões prévias das chamadas BPF no sched_ext (como as kfuncs de nomes antigos scx_bpf_dispatch*
que foram renomeadas para scx_bpf_dsq*
), foram removidas. Isso simplifica a base e prepara o terreno para mudanças futuras sem legado atrapalhando o progresso.
Outra mudança-chave é focada no limite técnico do BPF: funções kfunc só aceitam até cinco argumentos, o que se tornava um gargalo para funcionalidades mais complexas. Para driblar essa limitação, algumas funções como scx_bpf_dsq_insert_vtime()
foram refatoradas para receber seus parâmetros agrupados numa struct. Assim, abre-se espaço para incluir novas informações futuras — algo essencial para suportar a lógica hierárquica, onde o kernel precisará indicar a qual sub-escalonador uma operação pertence.
Preparação para hierarquias e permissões
Além das mudanças de compatibilidade e dos ajustes para argumentos, o patchset inclui o acréscimo de novas kfuncs — exemplos são scx_bpf_task_set_slice()
e scx_bpf_task_set_dsq_vtime()
. Essas funções permitirão que sub-escalonadores modificarem, no futuro, o timeslice (quantidade de tempo que uma tarefa pode utilizar a CPU) de uma tarefa apenas se tiverem autorização para tal. Isso reforça o modelo de permissões, tão crítico em uma arquitetura onde múltiplos escalonadores coabitam e precisam manter isolamento e controle claros.
Um trabalho invisível, mas estratégico
À primeira vista, essas mudanças podem passar despercebidas para quem não acompanha o desenvolvimento interno do kernel. Não há aqui uma nova funcionalidade para o usuário ativar nem uma mudança visível no desempenho imediato. Porém, assim como preparar uma fundação sólida antes de construir um prédio alto, essa série de patches é essencial para possibilitar que o Linux sched_ext BPF evolua para suportar complexidades maiores, como o suporte a sub-escalonadores hierárquicos, que prometem flexibilizar e incrementar o escalonamento de tarefas de formas ainda inéditas no kernel Linux.
Em outras palavras: é o começo de uma transformação importante, e um passo vital para que o subsistema sched_ext continue avançando e abra caminho para soluções escaláveis e poderosas — tudo isso mantendo a segurança e performance que o BPF proporciona.