powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Анализ работы NUMA
17 сообщений из 17, страница 1 из 1
Анализ работы NUMA
    #39626790
Фотография Den_KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Подскажите как можно проанализировать работу NUMA, для правильной установки степени параллелизма на сервере?
...
Рейтинг: 0 / 0
Анализ работы NUMA
    #39626869
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ли у вас разные инстансы, сколько ЦПУ идет на одну БД и т.д. и т.п?
Нужно мониторить нагрузку, а концептуально это нагрузка СУБД и потоки данных не должны "размываться" по разным НУМА узлам. Рекомендация очень общая , но ведь и вопрос такой же.
...
Рейтинг: 0 / 0
Анализ работы NUMA
    #39626872
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В большинстве случаев без качественного анализа MSSQL сделает эффективней распределение нагрузки чем корявые настройки(как правило настройка без понимания приносит больше вреда чем пользы).
...
Рейтинг: 0 / 0
Анализ работы NUMA
    #39626905
архивариус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Анализ работы NUMA
    #39626907
Eleanor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С плохой настройкой NUMA сталкивались только раз, когда сисадмины несимметрично установили память на нодах. Sql Server плохо воспринял разный объем памяти на них.
В остальных случаях Sql Server сам эффективно работал с NUMA.
...
Рейтинг: 0 / 0
Анализ работы NUMA
    #39627338
Slava_Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den_KP,
Для чего?
Какие проблемы?
Что не так сейчас?
Для установки степени параллелизма не надо анализировать NUMA, нужно анализировать и тестировать ваши запросы с разным уровнем maxdop и исходя этого устанавливать.
Возможно вам maxdop нужно установить для пару запросов, а для других по умолчанию сойдет или 1.
...
Рейтинг: 0 / 0
Анализ работы NUMA
    #39627352
aleksrov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slava_Nik,

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

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

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

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

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

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

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

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


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