powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Размывание однопоточной нагрузки по ядрам
8 сообщений из 8, страница 1 из 1
Размывание однопоточной нагрузки по ядрам
    #39883786
tunknown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дано: сервер только под MSSQL без дополнительных сервисов и процессор, допустим, на 4ГГц с 8 ядрами.
Есть однопоточный запрос или запрос с OPTION (MAXDOP 1). MSSQL выполняет его в один поток, но виндовс его будет выполнять на всех 8 ядрах. В Диспетчере задач будет видна общая загрузка процессора 12.5%=100%/8 и пилообразный график по всем ядрам. Если назначить в MSSQL affinity на одно ядро, то будет 100% загрузки одного и около 0 по остальным. Выглядит так, что поядерный кеш постоянно сбрасывается и процессор не выходит на turbo частоту, как при загрузке только одного ядра. Получаем потерю производительности, б о льшую при мегабайтном поядерном L2 кеше, меньшую при 256 КБ кеше. Например, в моём тестовом случае процессор нагружен на все ядра на частоте 3.32ГГц, хотя мог(?) бы на одно на 4.3ГГц.

Есть ли возможность в виндовсе влиять на размывание загрузки ядер хотя бы косвенным образом?


Во времена Win XP шедулер ядра, кажется, тоже перекидывал один поток с ядра на ядро, но делал это существенно реже. Ясно, что Микрософт заботится о размывании горячего ядра по кристаллу и прочем выравнивании нагрузки на процессоры с разным группированием ядер.
...
Рейтинг: 0 / 0
Размывание однопоточной нагрузки по ядрам
    #39883793
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tunknown,

запрос монолитен только у воображении, на самом деле сервер выполняет большое количество разнородных задач. При всем при том происходит переключение workers. Это штатная ситуация, не надо её бояться.
...
Рейтинг: 0 / 0
Размывание однопоточной нагрузки по ядрам
    #39883807
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, поставьте в настройках питания сервера производительный режим, чтобы не сбрасывал частоту.
...
Рейтинг: 0 / 0
Размывание однопоточной нагрузки по ядрам
    #39883816
tunknown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей АлексеевичНу, поставьте в настройках питания сервера производительный режим, чтобы не сбрасывал частоту.Уже стоит, мин=100% и макс=100%. Даже если бы это помогло, то это не повлияло бы на размытие нагрузки ядер.
...
Рейтинг: 0 / 0
Размывание однопоточной нагрузки по ядрам
    #39883826
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(4.3ГГц - 3.32ГГц) / 3.32ГГц = 30% прироста
(3.32ГГц * 8 - 3.32ГГц) / 3.32ГГц = 700% прироста

Не туда копаете, короче.
...
Рейтинг: 0 / 0
Размывание однопоточной нагрузки по ядрам
    #39883827
d7i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничего Вы тут не поделаете. ОС Windows сама регулирует нагрузку как ей хочется.
Я уже экспериментировал с affinity, но это всего лишь "сходство, родственность", т.е. пожелание, а не жесткое указание.
Поэтому работает только в очень редких случаях и непродолжительное время, а далее Windows просто игнорирует Ваши пожелания.
Се ля ви...
...
Рейтинг: 0 / 0
Размывание однопоточной нагрузки по ядрам
    #39884004
tunknown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поскольку кеши L1/L2 заданы на двухпоточное ядро, то при определённой нагрузке с обращением команд к памяти кеши "уменьшаются" в два раза. Немного сгладить влияние упомянутой пилы можно отключив HyperThreading на Intel. На AMD ядра устроены по другому и отключить двухпоточность, как я понял, нельзя.
AMD Ryzen 7 3700X
Код: plaintext
1.
2.
3.
4.
The number of CPU cores	8
The number of threads	 16 
Level 1 cache size    	 8  x 32 KB 8-way set associative instruction caches
8 x 32 KB 8-way set associative data caches
Level 2 cache size    	 8  x 512 KB 8-way set associative unified caches
Intel Core i7-9800X
Код: plaintext
1.
2.
3.
4.
The number of CPU cores	8
The number of threads	 16 
Level 1 cache size    	 8  x 32 KB 8-way set associative instruction caches
8 x 32 KB 8-way set associative data caches
Level 2 cache size    	 8  x 1 MB 16-way set associative caches


Поэтому, если число одновременно выполняемых запросов (не просто залогиненных пользователей) соответствует числу ядер, то многопоточность нужно отключать. В редких случаях при наличии массовых параллельных планов этот совет не годится.

Хитрости, подобные NtSetTimerResolution , пока оставим в стороне.
...
Рейтинг: 0 / 0
Размывание однопоточной нагрузки по ядрам
    #39884133
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tunknown,

это теория, в моей практике hyperthreading улучшает ситуацию по нагрузке. Известны ли какие-либо практические тесты с включенной и отключенной многопоточностью?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Размывание однопоточной нагрузки по ядрам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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