Entre os muitos novos recursos interessantes do Kernel Linux 6.1 está a fusão do código Multi-Gen LRU "MGLRU" como o que se tornou uma das melhores inovações do kernel para 2022 para revisar o código de recuperação de página do kernel do Linux. Os resultados de desempenho já são muito promissores e o MGLRU está sendo usado com sucesso no Google e em outras grandes implantações. O trabalho ainda não acabou para avançar ainda mais o kernel nesta área.
O MGLRU está ótimo para o Linux 6.1 e continua evoluindo. O engenheiro do Google, Yu Zhao, que liderou os patches MGLRU para o kernel Linux upstream na semana passada, enviou um novo conjunto de aprimoramentos.
Os patches mais recentes de Yu Zhao cobrem o memcg LRU. Veja como ele resume esse trabalho de recurso adicional:
Um memcg LRU é um por nó LRU de memcgs. É também um LRU de LRUs, pois cada combinação de nó e memcg possui um LRU de fólios (consulte mem_cgroup_lruvec()).
O seu objetivo é melhorar a escalabilidade da recuperação global, que é crítica para o superalocamento de memória em todo o sistema em data centers. Observe que a recuperação de memcg está atualmente fora do escopo.
A sua sobrecarga de memória é um ponteiro para cada vetor LRU e insignificante para cada nó. Em termos de passagem de memcgs durante a recuperação global, melhora a complexidade de melhor caso de O(n) para O(1) e não afeta a complexidade de pior caso O(n). Portanto, em média, possui uma complexidade sublinear em contraste com a atual complexidade linear.
...
Em termos de valorização global, tem duas características distintas:
1. Sharding, que permite que cada thread comece em um memcg aleatório (na geração antiga) e melhora o paralelismo;
2. Equidade eventual, que permite a recuperação direta para resgate e reduz a latência sem afetar a imparcialidade por algum tempo.
Até agora, os resultados do teste são limitados, mas com um script de teste de amostra para medir a eficácia, o MGLRU está em muito boa forma.
Nenhum comentário:
Postar um comentário