Prepare-se para uma mudança significativa no kernel Linux. Um patch para o alocador SLUB foi colocado na fila para a próxima janela de mesclagem do Kernel Linux 6.10.
Este patch promete ajudar a reduzir o consumo de memória em cenários extremos.
Desenvolvido pelo engenheiro da Huawei, Chen Jun, este patch é um avanço significativo na gestão de memória. Chen Jun detalhou o funcionamento do patch:
Quando a função kmalloc_node() é chamada sem __GFP_THISNODE e o nó de destino não tem memória suficiente, o SLUB aloca um fólio de um nó diferente do nó solicitado. No entanto, como o fólio alocado não pertence ao nó solicitado, ele é desativado e adicionado à lista de placas parciais do nó ao qual pertence na próxima alocação.
Este comportamento pode resultar em uso excessivo de memória quando o nó solicitado tem memória insuficiente. Para evitar isso, o patch implementa uma nova lógica:
1- Tenta obter uma placa parcial do nó de destino apenas tendo __GFP_THISNODE em pc.flags para get_partial().
2- Se o passo 1 falhar, tenta alocar um novo bloco do nó de destino com o GFP_NOWAIT | __GFP_THISNODE de forma oportunista.
3- Se o passo 2 falhar, tenta novamente com o gfpflags originais.
Em testes realizados em uma VM QEMU com quatro des NUMA, cada um com 1 GB de memória, Chen descobriu que o número de objetos alocados via /proc/slabinfo caiu de 13.519.712 para 4.200.768 objetos. Isso representa apenas 31% do número original de objetos alocados encontrados nos kernels Linux atuais neste caso extremo.
O patch está atualmente no branch “for-next” do repositório SLAB.git, aguardando a janela de mesclagem do Kernel Linux 6.10 que chegará em meados de maio.
Descubra mais sobre esta revolução na gestão de memória no Kernel Linux 6.10. A era da eficiência de memória começa aqui!
Até a próxima !!
Nenhum comentário:
Postar um comentário