Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Анализ работы NUMA / 17 сообщений из 17, страница 1 из 1
06.04.2018, 13:54
    #39626790
Den_KP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ работы NUMA
Добрый день!
Подскажите как можно проанализировать работу NUMA, для правильной установки степени параллелизма на сервере?
...
Рейтинг: 0 / 0
06.04.2018, 15:35
    #39626869
МуМу
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ работы NUMA
Есть ли у вас разные инстансы, сколько ЦПУ идет на одну БД и т.д. и т.п?
Нужно мониторить нагрузку, а концептуально это нагрузка СУБД и потоки данных не должны "размываться" по разным НУМА узлам. Рекомендация очень общая , но ведь и вопрос такой же.
...
Рейтинг: 0 / 0
06.04.2018, 15:38
    #39626872
МуМу
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ работы NUMA
В большинстве случаев без качественного анализа MSSQL сделает эффективней распределение нагрузки чем корявые настройки(как правило настройка без понимания приносит больше вреда чем пользы).
...
Рейтинг: 0 / 0
06.04.2018, 16:14
    #39626905
архивариус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ работы NUMA
Den_KP,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
/*************************************************************************
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 с этой цифры можно начинать
...
Рейтинг: 0 / 0
06.04.2018, 16:17
    #39626907
Eleanor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ работы NUMA
С плохой настройкой NUMA сталкивались только раз, когда сисадмины несимметрично установили память на нодах. Sql Server плохо воспринял разный объем памяти на них.
В остальных случаях Sql Server сам эффективно работал с NUMA.
...
Рейтинг: 0 / 0
09.04.2018, 01:25
    #39627338
Slava_Nik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ работы NUMA
Den_KP,
Для чего?
Какие проблемы?
Что не так сейчас?
Для установки степени параллелизма не надо анализировать NUMA, нужно анализировать и тестировать ваши запросы с разным уровнем maxdop и исходя этого устанавливать.
Возможно вам maxdop нужно установить для пару запросов, а для других по умолчанию сойдет или 1.
...
Рейтинг: 0 / 0
09.04.2018, 07:10
    #39627352
aleksrov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ работы NUMA
Slava_Nik,

maxdop 1 чаще всего плохо. Откуда берется этот 1, каждый 2ой о нем пишет.
Я за все время не видел ни одной полностью OLTP системы (я не говорю что таких нет, я не видел :) ) чтобы можно было смело ставить 1. Если у вас большинство запросов выгодает от 1, так вы и ставьте cost treshold повыше, но не урезайте сервер совсем.
...
Рейтинг: 0 / 0
09.04.2018, 12:48
    #39627478
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ работы NUMA
maxdop ставьте меньше или равным количеству ядер в узле.
maxdop ставят 1, если анализ графа дедлока свидетельствует о вине параллелизма.
...
Рейтинг: 0 / 0
09.04.2018, 13:16
    #39627497
aleksrov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ работы NUMA
Владислав Колосов,

Это же вроде бага, когда запрос дедлочит сам себя?
Я счастливый человек, мне такое не встречалось.
...
Рейтинг: 0 / 0
09.04.2018, 13:55
    #39627518
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ работы NUMA
aleksrovЭто же вроде бага, когда запрос дедлочит сам себя?

дедлок из-за параллелизма совсем не тоже, что дедлочит сам себя
...
Рейтинг: 0 / 0
09.04.2018, 14:31
    #39627550
Den_KP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ работы NUMA
архивариус,

Спасибо за направление
...
Рейтинг: 0 / 0
09.04.2018, 14:34
    #39627552
Den_KP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ работы NUMA
Slava_Nik,

У MicroSoft есть интересная штука WRAP вроде, довелось увидеть логи и как раз в одном из них было что выбрано значение по умолчанию и стоит обратить внимание.
Еще случай знаю, была группа баз и в какой то момент она начала кушать все ресурсы сервера и остальные инстансы стали голодать, чтобы такого не произошло повторно изменили значение для параллелизма.
...
Рейтинг: 0 / 0
09.04.2018, 14:44
    #39627559
Александр Гладченко
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ работы NUMA
Den_KPДобрый день!
Подскажите как можно проанализировать работу NUMA, для правильной установки степени параллелизма на сервере?

Общая рекомендация MS задавать maxdop на уровне сервера не больше половины числа логических процессоров одного узла NUMA.
Если нужно будет больше, можно непосредственно в коде запроса указать хинтом, значение в котором заменит серверную установку.
Если запросов, которым помогает высокий параллелизм не мало, заведите для таких отдельную ресурсную группу и в Регуляторе Ресурсов укажите для них своё значение параллелизма - эта установка не изменится даже хинтами.
...
Рейтинг: 0 / 0
09.04.2018, 16:28
    #39627607
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ работы NUMA
Александр Гладченко,

интересно, не знал о такой рекомендации, но опытным путем установил половину. Это количество определил по замедлению сокращения времени выполнения запроса, т.е. падению эффективности добавления новых процессоров в запросе. Можно "дожать" 20-30%, но ценой удвоения процессорных ресурсов.
...
Рейтинг: 0 / 0
09.04.2018, 16:38
    #39627613
архивариус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ работы NUMA
Александр ГладченкоDen_KPДобрый день!
Подскажите как можно проанализировать работу NUMA, для правильной установки степени параллелизма на сервере?
Общая рекомендация MS задавать maxdop на уровне сервера не больше половины числа логических процессоров одного узла NUMA.

приведенный мной скрипт так и считает (если логическая ошибка не вкралась)
...
Рейтинг: 0 / 0
09.04.2018, 17:06
    #39627624
aleksrov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ работы NUMA
Добавлю, что при 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/
...
Рейтинг: 0 / 0
10.04.2018, 15:48
    #39628000
Александр Гладченко
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ работы NUMA
Общая рекомендация - это то, с чего можно начинать. Потом следите за реальным положением дел: перекосы памяти между нодами, процент работы процессоров в режиме ядра, CXPACKET и т.д. На основании этого подбирайте оптимальное для Вас значение.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Анализ работы NUMA / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]