Escalonador BPF do Linux (sched_ext) recebe patches preparatórios para suporte a sub-escalonadores

Escrito por
Emanuel Negromonte
Emanuel Negromonte é Jornalista, Mestre em Tecnologia da Informação e atualmente cursa a segunda graduação em Engenharia de Software. Com 14 anos de experiência escrevendo sobre...

Preparando o Linux sched_ext para sub-escalonadores hierárquicos com patches de limpeza e refatoração

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.

Compartilhe este artigo
Emanuel Negromonte é Jornalista, Mestre em Tecnologia da Informação e atualmente cursa a segunda graduação em Engenharia de Software. Com 14 anos de experiência escrevendo sobre GNU/Linux, Software Livre e Código Aberto, dedica-se a descomplicar o universo tecnológico para entusiastas e profissionais. Seu foco é em notícias, tutoriais e análises aprofundadas, promovendo o conhecimento e a liberdade digital no Brasil.