A melhor forma de calcular o MAXDOP no SQL Server vai depender do footprint do seu processador e do NUMA NODE configurado para sua instância.
Para facilitar melhor a sua e a nossa vida, eu vou deixar disponível aqui um script que já faz o cálculo de todas as informações necessárias para trazer o resultado que estamos querendo obter. Veja abaixo:
DECLARE @RELACAOHYPERTHREADING BIT DECLARE @CPULOGICOS INT DECLARE @HTATIVADO INT DECLARE @CPUFISICO INT DECLARE @SOCKET INT DECLARE @CPULOGICOPORNUMA INT DECLARE @NODENUMA INT SELECT @CPULOGICOS = CPU_COUNT -- [Contador Lógico de CPU] , @RELACAOHYPERTHREADING = HYPERTHREAD_RATIO -- [Hyperthread Ratio] , @CPUFISICO = CPU_COUNT / HYPERTHREAD_RATIO -- [Contador Físico de CPU] , @HTATIVADO = CASE WHEN CPU_COUNT > HYPERTHREAD_RATIO THEN 1 ELSE 0 END -- HTAtivado FROM SYS.DM_OS_SYS_INFO OPTION (RECOMPILE); SELECT @CPULOGICOPORNUMA = Count(PARENT_NODE_ID) -- [NumeroDeProcessadoresPorNuma] FROM SYS.DM_OS_SCHEDULERS WHERE [STATUS] = 'VISIBLE ONLINE' AND PARENT_NODE_ID < 64 GROUP BY PARENT_NODE_ID OPTION (RECOMPILE); SELECT @NODENUMA = Count(DISTINCT PARENT_NODE_ID) FROM SYS.DM_OS_SCHEDULERS -- Encontrar Nº de NUMA Nodes WHERE [STATUS] = 'VISIBLE ONLINE' AND PARENT_NODE_ID < 64 -- Recomendações .... SELECT --- 8 or less processors and NO HT enabled CASE WHEN @CPULOGICOS < 8 AND @HTATIVADO = 0 THEN 'A configuração MAXDOP deve ser : ' + Cast(@CPULOGICOS AS VARCHAR(3)) --- 8 ou mais processadores e NO HT habilitado WHEN @CPULOGICOS >= 8 AND @HTATIVADO = 0 THEN 'A configuração MAXDOP deve ser : 8' --- 8 ou mais processadores e HT ativado e NO NUMA WHEN @CPULOGICOS >= 8 AND @HTATIVADO = 1 AND @NODENUMA = 1 THEN 'A configuração MAXDOP deve ser : ' + Cast(@CPULOGICOPORNUMA / @CPUFISICO AS VARCHAR(3 )) --- 8 ou mais processadores e HT ativado e NUMA WHEN @CPULOGICOS >= 8 AND @HTATIVADO = 1 AND @NODENUMA > 1 THEN 'A configuração MAXDOP deve ser : ' + Cast(@CPULOGICOPORNUMA / @CPUFISICO AS VARCHAR(3 )) ELSE '' END AS Recommendations