Há um patch do agendador de kernel do Linux agora na fila por meio da ramificação sched/core do TIP que pode ajudar no agendamento de tarefas em processadores AMD com vários caches de último nível (LLCs/cache L3) por matriz. Essa pequena melhoria veio após a descoberta de um desenvolvedor do kernel Linux em seu desktop AMD Zen 2.

Esta alteração que deve ser mesclada para o Linux 6.5 agora que está no branch sched/core de tip/tip.git é uma implementação select_idle_sibling() multi-LLC-aware. Atualmente, quando o escalonador procura uma CPU ociosa no domínio do escalonador, ele não procuraria fora do grupo atual de núcleos que compartilham um LLC. Mas agora, com esta versão multi-LLC, ele considerará outras LLCs caso a LLC local fique vazia.

O patch do antigo engenheiro de kernel do Linux, Peter Zijlstra, explica:

sched/fair: Multi-LLC select_idle_sibling()

[Desenvolvedor Linux Tejun Heo] relatou que, quando direciona filas de trabalho para um LLC específico em sua máquina Zen2 com 3 núcleos/LLC e 4 LLCs no total, ele obtém um tempo ocioso significativo.

Isto é, claro, por causa de como select_idle_sibling() não considerará nada fora do LLC local e, como todas essas tarefas são de execução curta, o balanceador de carga ocioso periódico é ineficaz.

E embora seja bom manter o cache de trabalho local, é melhor não ter tempo ocioso significativo. Portanto, faça com que select_idle_sibling() tente outros LLCs dentro do mesmo nó quando o local estiver vazio.

Aqueles com sistemas AMD modernos em particular e que desejam testar este patch antes do esperado A janela de mesclagem do Linux 6.5 pode ser encontrada em a ramificação sched/core.

Categories: IT Info