CFS e políticas em tempo real

0

Estou tentando implementar um algoritmo em tempo real no Linux.

Eu estudei as políticas de Tempo Real do Linux: sched_rr , sched_fifo .

Então eu vou mais fundo e encontrei o Completely Fair Scheduler. Eu deduzi que, se eu uso o CFS, perco a previsibilidade, já que a CFS se preocupa apenas com a justiça.

Se eu quiser implementar rigorosamente um algoritmo de agendamento em tempo real, não devo usar o CFS. Estou correcto ? Em caso afirmativo, o que o Linux Scheduler deve usar?

    
por Qwerto 11.07.2018 / 18:54

1 resposta

1

O CFS compartilha a largura de banda de maneira justa entre diferentes cargas de trabalho simultâneas, de modo a oferecer cargas de trabalho interativas que atraem baixas latências. Tempo real significa cumprir um prazo, que soa como, mas não é o mesmo que, baixa latência. Como o CFS não oferece prazo, ele não é adequado para o tempo real. Sugiro que você analise o agendador SCHED_DEADLINE . É um agendador de tempo real razoavelmente bom para uso geral para tarefas periódicas ou esporádicas com prazos.

As tarefas SCHED_DEADLINE têm a prioridade mais alta de todas e, portanto, antecipam todas as outras tarefas. SCHED_RR e SCHED_FIFO são programados de acordo com a prioridade de 1 a 99, onde um número maior antecipa prioridades mais baixas. SCHED_OTHER é a prioridade 0, que é menor do que a anterior e, portanto, esse agendador CFS obtém apenas CPU como sobrando das tarefas em tempo real. Agendadores em tempo real podem alocar no máximo 95% da largura de banda da CPU, deixando as tarefas SCHED_OTHER com 5% da largura de banda (a menos que sejam alteradas via sysctl). Há também SCHED_BATCH e SCHED_IDLE, que dizem ao agendador para dar desvantagens diferentes em relação a SCHED_OTHER. A página man do Linux sched (7) dá mais detalhes.

    
por 11.07.2018 / 20:44