Existe agora, ou possivelmente em andamento, uma maneira de dizer ao SQL Server para permanecer dentro de um nó NUMA, seja em todo o servidor ou no nível de consulta? Basicamente a mesma funcionalidade do MAXDOP, mas MAXNUMA?
No momento, a menos que eu esteja totalmente ausente, quando uma consulta for paralela, ela poderá usar todos os processadores que puder ver. Apenas imaginando se existe uma maneira de restringi-lo a um ou dois ou 'x' nós NUMA. Eu posso realmente não querer minhas consultas espalhadas por mais de 80 processadores lógicos :)
Isso é mais uma curiosidade do que uma pergunta "me ajude a quebrar minha coisa quebrada".
Você pode usar a "afinidade do processador" do SQL Server para limitar o processamento a um único nó NUMA. Consulte a
<process affinity>
seção doALTER SERVER CONFIGURATION
comando nesta página do MSDN para obter mais detalhes.Por padrão, o SQL Server tenta manter o processamento da consulta contido em um determinado nó NUMA se a consulta for paralela onde MAXDOP <= número de núcleos por nó NUMA. A indicação aqui é configurar MAXDOP para um valor razoável; certamente não mais do que o número de núcleos por nó NUMA. Há muitos recursos para ajudar a calcular um MAXDOP razoável; incluindo as respostas da minha pergunta .
Não há nenhuma dica que faça isso, mas o SQL Server pode ser configurado para fazer o que você descreve. Consulte Lógica de decisão de posicionamento de consulta paralela do SQL Server pela equipe de suporte e atendimento ao cliente do Microsoft SQL Server para obter detalhes. A tabela abaixo é reproduzida desse post:
Além disso, de NUMA Connection Affinity e Parallel Queries no mesmo blog: