A equipe de engenheiros da Huawei e HiSilicon continua a avançar no desenvolvimento de patches para habilitar o controle de Simultaneous Multi-Threading (SMT) em processadores ARM64 no Kernel Linux. Esses controles, que são comuns em sistemas x86, agora estão sendo estendidos para servidores ARM64, como o Huawei Kunpeng e o Kirin 9000S, para permitir que os usuários ativem ou desativem o SMT em tempo de execução. Essa capacidade oferece maior flexibilidade para lidar com questões de segurança e otimização de desempenho.
A mais recente série de patches (v6) inclui várias melhorias após extensas revisões e testes. Os engenheiros destacam que o controle SMT pode ser particularmente útil para melhorar o desempenho de CPU em cargas de trabalho single-thread, além de potencialmente reduzir o consumo de energia. Essas atualizações também são vistas como uma resposta às preocupações com vulnerabilidades de segurança que afetam CPUs com suporte a SMT.
Principais aspectos do patch v6:
- Novo método
topology_is_primary_thread()
: Agora, há uma implementação padrão deste método para identificar o thread primário em sistemas com SMT, simplificando o gerenciamento da topologia de CPU. - Compatibilidade com sistemas OF e ACPI: O patch foi aprimorado para detectar e gerenciar corretamente o número de threads SMT em sistemas baseados tanto em Open Firmware (OF) quanto em ACPI. Isso assegura que o controle SMT funcione de forma robusta em diferentes plataformas de hardware.
- Habilitação do HOTPLUG_SMT para ARM64: Este recurso permite a desativação e ativação de threads SMT em tempo de execução, otimizando o uso da CPU conforme a necessidade.
Além disso, os engenheiros testaram esses patches em hardware ARM64 real e em máquinas virtuais baseadas em QEMU, tanto em sistemas ACPI quanto OF, garantindo que o suporte SMT seja funcional e estável.
Mudanças significativas nas revisões anteriores:
- Na versão v5, foi removida a dependência da configuração
CONFIG_SMP
, já que ela está sempre ativada em sistemas ARM64. Também foi corrigido o comportamento em sistemas assimétricos com múltiplas chamadas decpu_smt_set_num_threads()
, e adicionada uma detecção de topologia SMT heterogênea para emitir alertas em caso de suporte parcial. - Na versão v4, foi implementado o método padrão
topology_is_primary_thread()
e feitas outras correções de build e erros de configuração, com base em relatórios de testes automáticos. - A versão v3 se focou em corrigir erros de compilação e configurações relatados pelo sistema de teste automatizado, garantindo maior robustez.
Com essas atualizações, o controle de SMT no ARM64 se aproxima do que já existe no mundo x86, com benefícios claros para otimização de desempenho e gestão de segurança, especialmente em servidores de alto desempenho.