Como posso revisar as estatísticas do NUMA para minha workload em execução em instâncias do EC2?

4 minuto de leitura
0

Estou executando minha workload em instâncias baseadas em Nitro do Amazon Elastic Compute Cloud (Amazon EC2). Quero analisar as estatísticas de desempenho e acesso não uniforme à memória (NUMA).

Breve descrição

Os seguintes fatores afetam o desempenho de um aplicativo hospedado em uma instância do EC2:

  • Utilização excessiva da CPU
  • Uso de memória
  • O volume do EBS
  • Estatísticas de rede
  • Sem reconhecimento do NUMA

Na arquitetura NUMA, cada CPU tem acesso à sua própria memória atribuída, conhecida como memória local. Cada CPU também pode acessar a memória alocada a outras CPUs, conhecida como memória externa. Se os aplicativos hospedados em suas instâncias não reconhecerem o NUMA, o acesso à memória externa gerará custos adicionais e poderá afetar o desempenho. Entre em contato com o fornecedor do aplicativo para verificar se seu aplicativo tem reconhecimento do NUMA.

Resolução

Revisar as estatísticas do NUMA

Observação: para analisar outros componentes de performance além das estatísticas do NUMA, consulte Como soluciono problemas de conexões lentas com um site hospedado na minha instância do EC2?

Para revisar as estatísticas do NUMA, realize as seguintes etapas:

1.    Execute o comando a seguir para verificar se o tipo de instância estiver em um único nó NUMA ou multi-NUMA.

Observação: o tipo de instância é r5.16xlarge e tem 2 nós NUMA.

lscpu | grep -i numa
NUMA node(s): 2

2.    Execute o comando a seguir para instalar o pacote numactl:

sudo yum install numactl

3.    Execute o comando a seguir para revisar a topologia do NUMA:

sudo numactl -H

No exemplo de saída a seguir, a topologia do NUMA está dividida em dois nós, nó 0 e nó 1. O nó 0 tem 32 CPUs e 255.225 MB de memória atribuídos a ele. O nó 1 tem a outra metade das CPUs e 254.924 MB de memória atribuída. A distância do nó indica as latências no acesso às páginas de memória do outro nó.


available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
node 0 size: 255140 MB
node 0 free: 254794 MB
node 1 cpus: 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
node 1 size: 255225 MB
node 1 free: 254924 MB
node distances:
node   0   1
0:  10  21
1:  21  10

4.    Execute o comando a seguir para revisar as estatísticas do NUMA:

sudo numastat

Veja a seguir um exemplo da saída do comando:

node                       node0           node1
numa_hit                  314825          288025
numa_miss                      0               0
numa_foreign                   0               0
interleave_hit             37958           37620
local_node                311752          248476
other_node                  3073           39549

Para obter uma explicação detalhada de cada estatística, consulte A.11. NUMASTAT no Red Hat Customer Portal.

Aumentos nas estatísticas numa_foreign e numa_miss podem indicar que a aplicação em execução na instância do EC2 não reconhece o NUMA. Isso pode afetar o desempenho. Para resolver esse problema, desative o NUMA no nível do grub. Ou tente vincular a aplicação ao nó NUMA específico. Para obter mais informações, consulte Otimizações do sistema operacional.

Desativar permanentemente o NUMA 

Para desativar permanentemente o NUMA no Amazon Linux 2, CentOS7 ou RHEL 7, execute os seguintes comandos:

sudo vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="numa=off"
sudo grub2-mkconfig -o /etc/grub2.cfg
sudo reboot

Para desativar permanentemente o NUMA no Amazon Linux 2023, execute o seguinte comando:

# grubby --args "numa=off" —update-kernel DEFAULT
AWS OFICIAL
AWS OFICIALAtualizada há um ano