Intel está corrigindo o cluster Sub-NUMA para Linux para que funcione com RDT

intel-corrigindo-corrige

A Intel está trabalhando em uma correção para o cluster Sub-NUMA no Linux, que visa melhorar o desempenho e a eficiência de energia dos processadores que suportam essa funcionalidade. O cluster Sub-NUMA é uma forma de dividir um socket físico em dois ou mais domínios NUMA, cada um com sua própria memória e controlador de cache. Isso permite que as aplicações sejam alocadas em um domínio NUMA específico, reduzindo a latência e o consumo de energia ao acessar a memória local.

No entanto, o cluster Sub-NUMA também afeta o comportamento do RDT (Resource Director Technology), que é uma tecnologia da Intel que permite monitorar e controlar o uso de recursos como cache e largura de banda de memória por parte das aplicações. O RDT depende de um identificador chamado COS (Class Of Service), que é atribuído a cada núcleo lógico do processador. O COS define quais recursos estão disponíveis para o núcleo e como eles são compartilhados com outros núcleos.

O problema é que, atualmente, o Linux não considera o cluster Sub-NUMA ao atribuir o COS aos núcleos. Isso significa que núcleos em diferentes domínios NUMA podem ter o mesmo COS, o que pode causar conflitos ou desperdícios de recursos. Por exemplo, se dois núcleos em domínios NUMA distintos têm o mesmo COS, eles podem competir pelo mesmo cache ou largura de banda de memória, mesmo que cada domínio NUMA tenha seu próprio conjunto de recursos. Ou, se um núcleo em um domínio NUMA tem um COS que limita o uso de cache, ele pode estar desperdiçando cache que não é usado por nenhum outro núcleo no mesmo domínio NUMA.

Para resolver esse problema, a Intel propôs uma correção para o kernel Linux que faz com que o COS seja atribuído levando em conta o cluster Sub-NUMA. Assim, cada domínio NUMA terá seu próprio espaço de COS, evitando conflitos ou desperdícios de recursos. A correção também permite que os usuários configurem o RDT de forma mais granular, podendo definir políticas específicas para cada domínio NUMA. A correção ainda está em fase de revisão e testes, mas espera-se que ela seja integrada ao kernel Linux em breve.

O cluster Sub-NUMA é uma funcionalidade que está presente nos processadores Intel Xeon Scalable de segunda e terceira geração, e que pode trazer benefícios para aplicações que demandam alto desempenho e eficiência energética. Com a correção proposta pela Intel, o Linux poderá aproveitar melhor essa funcionalidade, oferecendo mais flexibilidade e controle para os usuários do RDT.

Qual a diferença entre NUMA e Sub-NUMA?

NUMA é a sigla para Non-Uniform Memory Access, que significa Acesso Não Uniforme à Memória. É uma arquitetura de computação paralela que permite que vários processadores acessem diferentes bancos de memória de forma independente, reduzindo a contenção e aumentando o desempenho.

Sub-NUMA é uma variação do NUMA que divide os bancos de memória em sub-regiões menores, chamadas de clusters. Cada cluster tem uma latência menor para acessar sua própria memória do que as outras memórias do sistema. Isso permite que os processadores sejam agrupados em sub-núcleos, que podem compartilhar dados mais rapidamente entre si.

A vantagem do Sub-NUMA é que ele pode reduzir o impacto da latência da memória em aplicações que exigem muita comunicação entre os processadores. A desvantagem é que ele requer um gerenciamento mais complexo dos recursos do sistema e pode causar um desbalanceamento de carga se as aplicações não forem bem distribuídas pelos clusters.