Red Hat Training

A Red Hat training course is available for RHEL 8

20.2. Determinação da topologia do sistema

Na computação moderna, a idéia de uma CPU é enganosa, pois a maioria dos sistemas modernos tem vários processadores. A topologia do sistema é a forma como esses processadores estão conectados uns aos outros e a outros recursos do sistema. Isto pode afetar o desempenho do sistema e das aplicações, e as considerações de ajuste de um sistema.

20.2.1. Tipos de topologia de sistema

A seguir estão os dois tipos primários de topologia utilizados na computação moderna:

Topologia Simétrica Multi-Processador (SMP)
A topologia SMP permite que todos os processadores tenham acesso à memória no mesmo período de tempo. Entretanto, como o acesso à memória compartilhada e igualitária força inerentemente o acesso à memória em série de todas as CPUs, as restrições de escala do sistema SMP são agora geralmente vistas como inaceitáveis. Por esta razão, praticamente todos os sistemas de servidores modernos são máquinas NUMA.
Topologia de Acesso à Memória Não-Uniforme (NUMA)

A topologia NUMA foi desenvolvida mais recentemente do que a topologia SMP. Em um sistema NUMA, múltiplos processadores são agrupados fisicamente em um soquete. Cada soquete tem uma área dedicada de memória e processadores que têm acesso local a essa memória, estes são referidos coletivamente como um nó. Os processadores no mesmo nó têm acesso de alta velocidade ao banco de memória desse nó, e acesso mais lento aos bancos de memória que não estão em seu nó.

Portanto, há uma penalidade de desempenho ao acessar a memória não-local. Assim, aplicações sensíveis ao desempenho em um sistema com topologia NUMA devem acessar memória que esteja no mesmo nó que o processador que executa a aplicação, e devem evitar acessar memória remota sempre que possível.

Aplicações com múltiplas roscas sensíveis ao desempenho podem se beneficiar de serem configuradas para executar em um nó NUMA específico em vez de em um processador específico. Se isto é adequado depende de seu sistema e dos requisitos de sua aplicação. Se vários threads de aplicação acessarem os mesmos dados em cache, então a configuração desses threads para execução no mesmo processador pode ser adequada. Entretanto, se várias threads que acessam e armazenam dados diferentes executam no mesmo processador, cada thread pode despejar os dados em cache acessados por uma thread anterior. Isto significa que cada thread 'falha' o cache e desperdiça tempo de execução, recuperando os dados da memória e substituindo-os no cache. Use a ferramenta perf para verificar se há um número excessivo de falhas no cache.