Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Анализ работы NUMA  [new]
Den_KP
Member

Откуда:
Сообщений: 208
Добрый день!
Подскажите как можно проанализировать работу NUMA, для правильной установки степени параллелизма на сервере?
6 апр 18, 13:54    [21318783]     Ответить | Цитировать Сообщить модератору
 Re: Анализ работы NUMA  [new]
МуМу
Member

Откуда:
Сообщений: 1120
Есть ли у вас разные инстансы, сколько ЦПУ идет на одну БД и т.д. и т.п?
Нужно мониторить нагрузку, а концептуально это нагрузка СУБД и потоки данных не должны "размываться" по разным НУМА узлам. Рекомендация очень общая , но ведь и вопрос такой же.
6 апр 18, 15:35    [21319235]     Ответить | Цитировать Сообщить модератору
 Re: Анализ работы NUMA  [new]
МуМу
Member

Откуда:
Сообщений: 1120
В большинстве случаев без качественного анализа MSSQL сделает эффективней распределение нагрузки чем корявые настройки(как правило настройка без понимания приносит больше вреда чем пользы).
6 апр 18, 15:38    [21319243]     Ответить | Цитировать Сообщить модератору
 Re: Анализ работы NUMA  [new]
архивариус
Member

Откуда:
Сообщений: 149
Den_KP,

/*************************************************************************
Author          :   Dennis Winter (Thought: Adapted from a script from "Kin Shah")
Purpose         :   Recommend MaxDop settings for the server instance
Tested RDBMS    :   SQL Server 2008R2

**************************************************************************/
declare @hyperthreadingRatio bit
declare @logicalCPUs int
declare @HTEnabled int
declare @physicalCPU int
declare @SOCKET int
declare @logicalCPUPerNuma int
declare @NoOfNUMA int
declare @MaxDOP int

select @logicalCPUs = cpu_count -- [Logical CPU Count]
    ,@hyperthreadingRatio = hyperthread_ratio --  [Hyperthread Ratio]
    ,@physicalCPU = cpu_count / hyperthread_ratio -- [Physical CPU Count]
    ,@HTEnabled = case 
        when cpu_count > hyperthread_ratio
            then 1
        else 0
        end -- HTEnabled
from sys.dm_os_sys_info
option (recompile);

select @logicalCPUPerNuma = COUNT(parent_node_id) -- [NumberOfLogicalProcessorsPerNuma]
from sys.dm_os_schedulers
where [status] = 'VISIBLE ONLINE'
    and parent_node_id < 64
group by parent_node_id
option (recompile);

select @NoOfNUMA = count(distinct parent_node_id)
from sys.dm_os_schedulers -- find NO OF NUMA Nodes 
where [status] = 'VISIBLE ONLINE'
    and parent_node_id < 64



IF (@NoofNUMA > 1 AND @HTEnabled = 0)
    SET @MaxDOP= @logicalCPUPerNuma;
ELSE IF (@NoofNUMA > 1 AND @HTEnabled = 1)
--    SET @MaxDOP=round( @NoofNUMA  / @physicalCPU *1.0,0) /* ?! */
--    SET @MaxDOP=round( @physicalCPU *1.0 / @NoofNUMA ,0) /* ?! так наверное должно быть */
    SET @MaxDOP=round( @logicalCPUPerNuma *1.0 / @NoofNUMA ,0) /* ?! так наверное должно быть */
	;
	ELSE IF (@HTEnabled = 0)
		SET @MaxDOP=@logicalCPUs;
	ELSE IF (@HTEnabled = 1)
		--SET @MaxDOP=@physicalCPU;
		SET @MaxDOP=@logicalCPUPerNuma;

IF (@MaxDOP > 8) /* ? наверное 8 было 10*/
    SET @MaxDOP=8;
IF (@MaxDOP = 0)
    SET @MaxDOP=1;




PRINT 'logicalCPUs : '         + CONVERT(VARCHAR, @logicalCPUs);
PRINT 'hyperthreadingRatio : ' + CONVERT(VARCHAR, @hyperthreadingRatio);
PRINT 'physicalCPU : '         + CONVERT(VARCHAR, @physicalCPU);
PRINT 'HTEnabled : '           + CONVERT(VARCHAR, @HTEnabled);
PRINT 'logicalCPUPerNuma : '   + CONVERT(VARCHAR, @logicalCPUPerNuma);
PRINT 'NoOfNUMA : '            + CONVERT(VARCHAR, @NoOfNUMA);
PRINT '---------------------------';
Print 'MAXDOP setting should be : ' + CONVERT(VARCHAR, @MaxDOP);


imho с этой цифры можно начинать
6 апр 18, 16:14    [21319377]     Ответить | Цитировать Сообщить модератору
 Re: Анализ работы NUMA  [new]
Eleanor
Member

Откуда:
Сообщений: 2622
С плохой настройкой NUMA сталкивались только раз, когда сисадмины несимметрично установили память на нодах. Sql Server плохо воспринял разный объем памяти на них.
В остальных случаях Sql Server сам эффективно работал с NUMA.
6 апр 18, 16:17    [21319384]     Ответить | Цитировать Сообщить модератору
 Re: Анализ работы NUMA  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 886
Den_KP,
Для чего?
Какие проблемы?
Что не так сейчас?
Для установки степени параллелизма не надо анализировать NUMA, нужно анализировать и тестировать ваши запросы с разным уровнем maxdop и исходя этого устанавливать.
Возможно вам maxdop нужно установить для пару запросов, а для других по умолчанию сойдет или 1.
9 апр 18, 01:25    [21322191]     Ответить | Цитировать Сообщить модератору
 Re: Анализ работы NUMA  [new]
aleksrov
Member

Откуда:
Сообщений: 948
Slava_Nik,

maxdop 1 чаще всего плохо. Откуда берется этот 1, каждый 2ой о нем пишет.
Я за все время не видел ни одной полностью OLTP системы (я не говорю что таких нет, я не видел :) ) чтобы можно было смело ставить 1. Если у вас большинство запросов выгодает от 1, так вы и ставьте cost treshold повыше, но не урезайте сервер совсем.
9 апр 18, 07:10    [21322248]     Ответить | Цитировать Сообщить модератору
 Re: Анализ работы NUMA  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7383
maxdop ставьте меньше или равным количеству ядер в узле.
maxdop ставят 1, если анализ графа дедлока свидетельствует о вине параллелизма.
9 апр 18, 12:48    [21323171]     Ответить | Цитировать Сообщить модератору
 Re: Анализ работы NUMA  [new]
aleksrov
Member

Откуда:
Сообщений: 948
Владислав Колосов,

Это же вроде бага, когда запрос дедлочит сам себя?
Я счастливый человек, мне такое не встречалось.
9 апр 18, 13:16    [21323272]     Ответить | Цитировать Сообщить модератору
 Re: Анализ работы NUMA  [new]
msLex
Member

Откуда:
Сообщений: 7726
aleksrov
Это же вроде бага, когда запрос дедлочит сам себя?


дедлок из-за параллелизма совсем не тоже, что дедлочит сам себя
9 апр 18, 13:55    [21323415]     Ответить | Цитировать Сообщить модератору
 Re: Анализ работы NUMA  [new]
Den_KP
Member

Откуда:
Сообщений: 208
архивариус,

Спасибо за направление
9 апр 18, 14:31    [21323639]     Ответить | Цитировать Сообщить модератору
 Re: Анализ работы NUMA  [new]
Den_KP
Member

Откуда:
Сообщений: 208
Slava_Nik,

У MicroSoft есть интересная штука WRAP вроде, довелось увидеть логи и как раз в одном из них было что выбрано значение по умолчанию и стоит обратить внимание.
Еще случай знаю, была группа баз и в какой то момент она начала кушать все ресурсы сервера и остальные инстансы стали голодать, чтобы такого не произошло повторно изменили значение для параллелизма.
9 апр 18, 14:34    [21323657]     Ответить | Цитировать Сообщить модератору
 Re: Анализ работы NUMA  [new]
Александр Гладченко
Member

Откуда:
Сообщений: 10711
Блог
Den_KP
Добрый день!
Подскажите как можно проанализировать работу NUMA, для правильной установки степени параллелизма на сервере?


Общая рекомендация MS задавать maxdop на уровне сервера не больше половины числа логических процессоров одного узла NUMA.
Если нужно будет больше, можно непосредственно в коде запроса указать хинтом, значение в котором заменит серверную установку.
Если запросов, которым помогает высокий параллелизм не мало, заведите для таких отдельную ресурсную группу и в Регуляторе Ресурсов укажите для них своё значение параллелизма - эта установка не изменится даже хинтами.
9 апр 18, 14:44    [21323714]     Ответить | Цитировать Сообщить модератору
 Re: Анализ работы NUMA  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7383
Александр Гладченко,

интересно, не знал о такой рекомендации, но опытным путем установил половину. Это количество определил по замедлению сокращения времени выполнения запроса, т.е. падению эффективности добавления новых процессоров в запросе. Можно "дожать" 20-30%, но ценой удвоения процессорных ресурсов.
9 апр 18, 16:28    [21324195]     Ответить | Цитировать Сообщить модератору
 Re: Анализ работы NUMA  [new]
архивариус
Member

Откуда:
Сообщений: 149
Александр Гладченко
Den_KP
Добрый день!
Подскажите как можно проанализировать работу NUMA, для правильной установки степени параллелизма на сервере?

Общая рекомендация MS задавать maxdop на уровне сервера не больше половины числа логических процессоров одного узла NUMA.

приведенный мной скрипт так и считает (если логическая ошибка не вкралась)
9 апр 18, 16:38    [21324221]     Ответить | Цитировать Сообщить модератору
 Re: Анализ работы NUMA  [new]
aleksrov
Member

Откуда:
Сообщений: 948
Добавлю, что при Soft Numa рекомендации немного другие
Your mileage may vary but, here is a testing results from the SQL Server 2016 test harness: "With HT aware auto soft-NUMA, we get up-to 30% gain in query performance when DOP is set to the number of physical cores on a socket (12 in this case) using Automatic Soft NUMA."
https://blogs.msdn.microsoft.com/psssql/2016/03/30/sql-2016-it-just-runs-faster-automatic-soft-numa/
9 апр 18, 17:06    [21324287]     Ответить | Цитировать Сообщить модератору
 Re: Анализ работы NUMA  [new]
Александр Гладченко
Member

Откуда:
Сообщений: 10711
Блог
Общая рекомендация - это то, с чего можно начинать. Потом следите за реальным положением дел: перекосы памяти между нодами, процент работы процессоров в режиме ядра, CXPACKET и т.д. На основании этого подбирайте оптимальное для Вас значение.
10 апр 18, 15:48    [21327000]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить