FERRAMENTAS LINUX: O Driver de gráficos Intel vê um agendamento justo de baixa latência inspirado em parte por BFS / MuQSS

terça-feira, 9 de junho de 2020

O Driver de gráficos Intel vê um agendamento justo de baixa latência inspirado em parte por BFS / MuQSS




Confira !!



O desenvolvedor de longa data de driver gráfico Intel Linux, Chris Wilson, enviou no domingo uma grande série de patches que apresenta um novo agendador justo de baixa latência para o driver gráfico do kernel Intel.

Esse código de agendamento de baixa latência é inspirado em parte pelo ex-agendador de CPU do BFS Linux e sua encarnação atual como MuQSS . Aqui está como Chris resume essa nova implementação do planejador:
O primeiro "planejador" foi uma classificação topográfica de solicitações em ordem de prioridade. A ordem de execução era determinística, a solicitação de prioridade mais alta enviada mais cedo seria executada primeiro. A prioridade herdada garantiu que as inversões fossem mantidas afastadas e nos permitiu aumentar dinamicamente as prioridades (por exemplo, para flip-flops interativos).
O esquema minimalista de divisão do tempo foi uma tentativa de introduzir imparcialidade entre solicitações de execução longa, despejando a solicitação ativa no final de uma divisão do horário e movendo-a para o final de sua fila de prioridades (garantindo a manutenção de dependências). Para solicitações de execução curta de muitos clientes de igual prioridade, o esquema ainda é muito requisitado para envio de FIFO e tão injusto quanto antes.
Para impor justiça, precisamos de uma métrica externa que garanta que os clientes sejam intercalados, não executamos uma cadeia longa do cliente A antes de executar qualquer cliente B. Isso pode ser imposto pelos clientes usando cercas baseadas em um relógio externo , ou seja, eles enviam trabalho apenas para um "quadro" no intervalo de quadros, em vez de enviar o máximo de trabalho possível. A abordagem padrão do SwapBuffers é semelhante ao armazenamento em buffer duplo, onde, como um quadro está sendo executado, o próximo está sendo enviado, de modo que sempre haja no máximo dois quadros por cliente no pipeline. Mesmo esse esquema exibe injustiça sob carga, pois um único cliente executará dois quadros consecutivos antes do próximo e, com clientes suficientes, os prazos serão perdidos.
A idéia introduzida pelo BFS / MuQSS é que a justiça seja introduzida pela medição com um relógio externo. Cada solicitação, quando estiver pronta para executar, recebe um prazo virtual e a ordem de execução é determinada pelo prazo mais cedo. A prioridade é usada como uma dica, em vez de uma ordem estrita, em que solicitações de alta prioridade têm prazos anteriores, mas não necessariamente anteriores ao trabalho pendente. Assim, o trabalho é executado em ordem de 'prontidão', com divisão do tempo para rebaixar o trabalho de longa duração.
O calcanhar do Achille deste agendador é sua forte preferência por baixa latência e favorecendo novas filas. Embora fosse fácil dominar o agendador antigo, inundando-o com muitos pedidos por um curto período de tempo, o novo agendador pode ser dominado por um cliente 'síncrono' que aguarda a conclusão de cada um de seus pedidos antes de enviar o próximo. Como esse cliente não tem histórico, é sempre considerado pronto para execução e recebe um prazo anterior às solicitações de execução longa.

Por enquanto, o agendador está sentado como parte desses 28 patches . Será interessante ver como vai a revisão e se esse código aprimorado do agendador de gráficos Intel será mantido em breve.



Até a próxima !!

Nenhum comentário:

Postar um comentário