No kernel do Linux, a documentação para CONFIG_NUMA
diz:
Enable NUMA (Non Uniform Memory Access) support.
he kernel will try to allocate memory used by a CPU on the
local memory controller of the CPU and add some more
NUMA awareness to the kernel.
For 64-bit this is recommended if the system is Intel Core i7
(or later), AMD Opteron, or EM64T NUMA.
Eu tenho um processador Intel Core i7, mas o AFAICT possui apenas um nó NUMA:
$ numactl --hardware
available: 1 nodes (0)
node 0 cpus: 0 1 2 3 4 5 6 7
node 0 size: 16063 MB
node 0 free: 15031 MB
node distances:
node 0
0: 10
Então, qual é o objetivo de ter CONFIG_NUMA=y
, quando o i7 possui apenas um nó NUMA?
fonte
CONFIG_NUMA
paracore i7
?Primeiro, observe que o Intel Core i7 é apenas uma designação de marketing e a frase Intel Core i7 (ou posterior) é muito vaga. Então, o que isso poderia significar?
As
Kconfig
edições de texto de ajuda do kernel Linux mencionando um Intel Core 7i , depois corrigido para o Intel Core i7 , foram feitas em novembro de 2008. O log de confirmação diz:Ele pode razoavelmente se referir apenas aos processadores Intel Core i7 lançados ou anunciados por especificação naquele momento. Seriam os processadores Bloomfield , baseados na microarquitetura Nehalem , que transferiram o controlador de memória da Northbridge para a CPU (que a AMD havia feito em 2003 com o Opteron / AMD64) e introduziram o QuickPath Interconnect / QPI (como pendente do HyperTransport da AMD) para interconexão CPU / CPU e CPU / IOH (hub IO, ex-Northbridge).
As CPUs Bloomdale i7 foram as primeiras entradas no novo esquema de nomenclatura Core i {3,5,7} . Portanto, quando o texto do documento do Linux foi escrito, o i7 não se referiu especificamente ao Core i7 em vez do i5 (primeiro em 09/2009) ou i3 (primeiro em 01/2010), mas com toda a probabilidade da nova microarquitetura Nehalem com seu controlador de memória integrado e QPI.
Há um comunicado de imprensa da Intel de 11/2008 no i7 ( Intel lança o processador mais rápido do planeta ) que afirma que o processador Core i7 mais do que duplica a largura de banda de memória das plataformas Intel "Extreme" anteriores , mas não menciona nem o NUMA .
Acho que o motivo é que o NUMA não importa para PCs de mesa, nem mesmo para os "extremos".
O NUMA é importante para servidores caros que possuem vários soquetes de CPU (não apenas vários núcleos em um soquete) com faixas dedicadas de acesso à memória física (não apenas um controlador de memória), para que cada CPU tenha sua memória local dedicada, que é "mais próxima" do que a memória das outras CPUs. (Pense em 8 soquetes, 64 núcleos, 256 GB de RAM.) NUMA significa que uma CPU também pode acessar a memória remota (a memória local de outra CPU) além de sua própria memória local, embora a um custo mais alto. NUMA é a síntese de uma arquitetura de memória compartilhada como SMP, onde toda a memória está igualmente disponível para todos os núcleos, e uma arquitetura de memória distribuída como MPP (Massively Parallel Processing), que fornece a cada nó um bloco de memória dedicado. É MPP, mas parece SMP para o aplicativo.
As placas-mãe de desktop não têm soquetes duplos e as CPUs de desktop Intel, incluindo edições extremas i7, não possuem o link QPI adicional para a configuração de soquete duplo.
Verifique o artigo QPI da Wikipedia para ver como o QPI é relevante para o NUMA:
A maneira como uma CPU Intel Nehalem em uma placa de servidor com vários soquetes torna o acesso à memória não local é via QPI. Também no artigo sobre NUMA :
Verifique este relatório em 11/2008 para ver se a Intel desativou um dos dois links QPI no i7, desativando a configuração de soquete duplo, onde o NUMA se aplica:
Então, eu me afastei da sua pergunta relacionada aos meus resultados de pesquisa do Google ... Você está perguntando por que os documentos do Linux começaram a recomendar ativá-lo no final de 2008? Não tenho certeza se esta pergunta tem uma resposta comprovadamente correta ... Teríamos que perguntar ao redator do documento. A ativação do NUMA não beneficia os usuários de CPU de desktop, mas também não os prejudica significativamente, enquanto ajuda os usuários com vários soquetes. Por que não? Esta poderia ter sido a lógica. Constatou que isso refletia em uma discussão sobre a desativação do NUMA no rastreador do Arch Linux ( FS # 31187 - [linux] - desativa o NUMA dos arquivos de configuração ).
O autor do documento também pode ter pensado no potencial NUMA da arquitetura Nehalem, do qual, quando o documento foi escrito, os processadores Core i7 11/2008 (920, 940, 965) eram os únicos representantes; os primeiros chips Nehalem para os quais a NUMA realmente faria sentido provavelmente são os processadores Xeon do primeiro trimestre de 2009 com duplo link QPI, como o Xeon E5520 .
fonte
Eu acho que se você usar o
--show
switch, pode fazer mais sentido:Então você pode controlar o uso de physcpubind's assim:
Isso limitaria o aplicativo
myapp
aos 2 primeiros núcleos da CPU. Meu sistema é um i5 com 4 núcleos.Referências
fonte
Eu tenho pesquisado a mesma coisa no meu PC de mesa enquanto construí meu kernel por conta própria. Decidi desativar o NUMA após muita pesquisa. Minha CPU é um Core i7 3820 que possui 8 processadores com HT. Esta página ajudou-me a tomar minha decisão.
desativar o NUMA dos arquivos de configuração
Em resumo, o NUMA só vale a pena se você tiver mais de um soquete de CPU (independentemente dos núcleos). Há um impacto muito pequeno no poder de processamento em máquinas com 1 soquete de CPU, mesmo com vários núcleos, mas é quase imperceptível, portanto a maioria das distribuições o deixa ativado, pois proporcionará um enorme benefício para servidores e máquinas com mais de um soquete.
fonte
Em um PC com no máximo uma CPU, o NUMA é totalmente inútil. Sinta-se livre para desativá-lo em seu próprio kernel.
Você sempre pode controlar a ligação da CPU pelo conjunto de tarefas (1) .
fonte