powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / 2 А.Гладченко - использование Hyper Threading
24 сообщений из 24, страница 1 из 1
2 А.Гладченко - использование Hyper Threading
    #35216588
Фотография DeColo®es
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можешь дать ссылку на статью, где научно обосновано, что HT - зло для MSSQL?
...
Рейтинг: 0 / 0
2 А.Гладченко - использование Hyper Threading
    #35216594
Crimean
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeColo®esМожешь дать ссылку на статью, где научно обосновано, что HT - зло для MSSQL?

не даст. ибо временами как раз HT - добро. имхо очень от камней зависит
...
Рейтинг: 0 / 0
2 А.Гладченко - использование Hyper Threading
    #35216626
Фотография DeColo®es
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Crimean DeColo®esМожешь дать ссылку на статью, где научно обосновано, что HT - зло для MSSQL?не даст. ибо временами как раз HT - добро. имхо очень от камней зависитДаст, обещал.
Чуть ли не насильно.
Но в 6 вечера после "лонча" подходить к компьютеру желания уже ни у кого не было :)
...
Рейтинг: 0 / 0
2 А.Гладченко - использование Hyper Threading
    #35216670
Alex-00000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
2 А.Гладченко - использование Hyper Threading
    #35216728
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeColo®esМожешь дать ссылку на статью, где научно обосновано, что HT - зло для MSSQL?

Раз уж обещал, даю: http://technet.microsoft.com/ru-ru/magazine/cc137784.aspx

Технология гиперпоточностиНа технологии гиперпоточности стоит остановиться из-за того, как она влияет на SQL Server. Технология гиперпоточности фактически предоставляет операционной системе для одного физического процессора два логических процессора. По сути, технология гиперпоточности арендует время физических процессоров для полного использования возможностей каждого процессора. На веб-узле Intel ( http://www.intel.com/cd/corporate/techtrends/emea/rus/369646.htm ) представлено гораздо более подробное описание работы технологии гиперпоточности.
В системах SQL Server DBMS фактически обрабатывает собственные чрезвычайно эффективные очереди и потоки для операционной системы, поэтому в системах с уже существующей высокой загрузкой процессоров технология гиперпоточности только еще больше перегружает физические ЦП. Когда SQL Server осуществляет постановку в очередь нескольких запросов для работы с несколькими планировщиками, операционной системе приходится переключать контекст потоков команд для обеспечения соответствия выполняемым запросам, даже если два логических процессора принадлежат одному физическому процессору. Если показатель «Контекстных переключений/сек» превышает 5000 для одного физического процессора, следует серьезно рассмотреть вопрос об отключении гиперпоточности в системе и повторном тестировании производительности.
Только в очень редких случаях приложения с высокой загрузкой процессора в SQL Server могут эффективно использовать гиперпоточность. Перед реализацией изменений в рабочих системах необходимо всегда проверять приложения в SQL Server с включенной и выключенной гиперпоточностью.
...
Рейтинг: 0 / 0
2 А.Гладченко - использование Hyper Threading
    #35216783
Фотография DeColo®es
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Огромный респект, с лонча успел забыть, учто речь шла о статье в течнете. :)
...
Рейтинг: 0 / 0
2 А.Гладченко - использование Hyper Threading
    #35216805
Crimean
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да уж, обосновано просто железобетонно

обоснованиеПеред реализацией изменений в рабочих системах необходимо всегда проверять приложения в SQL Server с включенной и выключенной гиперпоточностью.

я так что угодно обосную! вообще это вредно, но всегда проверяйте - может это полезно. ад2!
...
Рейтинг: 0 / 0
2 А.Гладченко - использование Hyper Threading
    #35216819
Фотография DeColo®es
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя некоторые моменты....
Код: plaintext
Получение страницы данных, уже кэшированной из буферного пула, с максимальной производительностью выполняется в течение половины миллисекунды; получение одного блока с диска в оптимальной среде занимает от  2  до  4  миллисекунд.
Может быть, все-таки микромекунд?

Код: plaintext
Найдя страницу данных в буферном пуле, процессор получит данные и выполнит необходимые операции. Это называется ошибкой страницы ОЗУ.
Хм... Как-то нелогично, видимо, проблема перевода, где-то "не" пропустили...

Код: plaintext
Ошибки страниц ОЗУ идеальны для SQL Server, поскольку для использования данных, полученных в качестве части запроса, они должны находиться в буферном кэше. 
или скорее, с терминологией напутали. :(
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
2 А.Гладченко - использование Hyper Threading
    #37938955
Antoshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изменилось ли что-нибудь в плане сабжа на современных процессорах?
...
Рейтинг: 0 / 0
2 А.Гладченко - использование Hyper Threading
    #37940678
Фотография DeColo®es
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antoshka,

Если вкратце, то принципиально ничего.
В том плане, что как и раньше, нужно проверять для каждой конкретной задачи, что будет эффективнее - включить или выключить HT.

ПРосто теперь гораздо чаще эффективнее все-таки включать. :)
...
Рейтинг: 0 / 0
2 А.Гладченко - использование Hyper Threading
    #37941356
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Моё личное отношение к HT изменилось (как и сама технология), раньше мне нужны были убедительные причины, что бы его включать, а теперь наоборот, должно произойти нечто из ряда вон выходящее, чт о бы я его отключил :)
...
Рейтинг: 0 / 0
2 А.Гладченко - использование Hyper Threading
    #37941419
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр ГладченкоМоё личное отношение к HT изменилось (как и сама технология), раньше мне нужны были убедительные причины, что бы его включать, а теперь наоборот, должно произойти нечто из ряда вон выходящее, чт о бы я его отключил :)

вот оно как повернулось
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
2 А.Гладченко - использование Hyper Threading
    #40095544
Alexander Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется cервер с 2 процессорами Xeon Gold 6134, SQL 2008R2, Ent

Есть ли смысл выключить hyper therading если сontext switches >= ~15.000 ?
...
Рейтинг: 0 / 0
2 А.Гладченко - использование Hyper Threading
    #40095608
tunknown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ли разница при выключении HT для случаев большого кеша L2, малого количества одновременных пользователей и преимущественно однопоточной нагрузки при MAXDOP=1 на сервер или на все запросы?

Про что-то подобное я спрашивал ранее в сообщении .
...
Рейтинг: 0 / 0
2 А.Гладченко - использование Hyper Threading
    #40095628
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tunknown
Есть ли разница при выключении HT для случаев большого кеша L2, малого количества одновременных пользователей и преимущественно однопоточной нагрузки при MAXDOP=1 на сервер или на все запросы?

Про что-то подобное я спрашивал ранее в сообщении .


Глупые вопросы.
НТ - это аппаратная поддержка быстрого переключения между потоками/задачами.
Вреда от нее быть не может по-определению.
Когда-то, в былинные времена, когда HT только появился, MS SQL путал НТ с ядрами процессора и неоптимально использовал.
Это было так давно, что тебя наверное еще не было.
Но дурацкое предубеждение осталось.
...
Рейтинг: 0 / 0
2 А.Гладченко - использование Hyper Threading
    #40095630
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зависит от доминирующего типа нагрузок,
например если узкое звено кэш (буфер памяти и его скорость) а расчётная часть лёгкая и при этом характер запроса предполагает только последовательное выполнение операций (последующие вычисления зависят/могут выполняться только после предыдущих) - то HT зло т.к. ведёт к падению эффективности из-за более долгого времени ожидания данных (расчётная мощность недогружена)

ещё насколько запараллелится запрос или операции зависимы и след. может выполнятся только после предыдущей (зависит от результатов предыдущего шага)
- при высокой параллельности это будет наверное более ближе к сценарию со множеством пользователей.

серии однопоточных последовательных тяжелых расчётных операций не требующих существенного объёма памяти от одного пользователя будет всё равно включено HT или нет (или даже дополнительные ядра или второй/третий/... CPU), незадействованный ресурс просто будет простаивать.

далее всё зависит от необходимого баланса характера нагрузки между сегментами:
- требуемая интенсивность расчётных операций
- объём необходимого кэша (и его скорость/пропускная способность)
ещё есть нюанс что у некоторых процессоров AVX-512 инструкции поддерживаются не всеми ядрами

если процессор недогружен то отключение HT так-же как и включение, (т.е. изменение состояния) не имеет смысла т.к. цикл всё равно будет холостой а его наличие не забирает существенных ресурсов
если процессор перегружен, т.е. очередь на выполнение операций большая (не зависит или от множества разных пользователей или малого количества но большая параллельность) то зависит от характера нагрузок,
- а) при этом кэш не является узким звеном (т.е. тяжелая расчётная часть и пропускной способности кэша достаточно) - то наличие HT больше добро
- б) кэш узкое звено - то наличие активного HT вполне может быть злом т.к. ведёт к падению эффективности полезного использования ресурса из-за излишней передачи данных (перетиранию нужных в кэше) и простою остальных сегментов в ожидании получения этих данных
...
Рейтинг: 0 / 0
2 А.Гладченко - использование Hyper Threading
    #40095650
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vikkiv,

Маленький кеш и без HT зло...

Для многопоточных нагрузок Интел обещает прирост производительности до 30% . Другие источники для иных задач наблюдали 20% .
Если нагрузка мизерная - разницы можете не заметить.
...
Рейтинг: 0 / 0
2 А.Гладченко - использование Hyper Threading
    #40095692
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vikkiv

- б) кэш узкое звено - то наличие активного HT вполне может быть злом т.к. ведёт к падению эффективности полезного использования ресурса из-за излишней передачи данных (перетиранию нужных в кэше) и простою остальных сегментов в ожидании получения этих данных


Очередные ученые сказки. Не имеющие практического смысла.
Если ОСи надо переключить потоки - она переключит. И другой поток "перетрет".
С НТ переключит быстрее.

Так можно договориться до вредности многоядерности.
...
Рейтинг: 0 / 0
2 А.Гладченко - использование Hyper Threading
    #40095723
Alexander Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222,

К сожалению нет четких критериев оценки кроме этих самых 5.000.
Остается только эксперементировать на продуктивной системе.
При том, что изменение HT требует перезагрузки всей машины.

Вот сейчас есть ситема, где на зеркале > 200.000 сontext switches / sec и 20% нагруженный проц.
Кроме зеркалирования другой нагрузки нет.

Попытаюсь выключить HT и посмотреть эффект.
...
Рейтинг: 0 / 0
2 А.Гладченко - использование Hyper Threading
    #40095766
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HT рекомендовали отключать на машинах и процессорах 2005-2008 поколений. На последних выпусках не встречал таких рекомендаций.
...
Рейтинг: 0 / 0
2 А.Гладченко - использование Hyper Threading
    #40095896
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Us,

А почему сразу на HT подозрения?
Посмотрите лучше перекос памяти между NUMA нодами, может у вас вся переферия к одному сокету подключена...

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
DECLARE @MEM INT
select @MEM = SUM (pages_kb) / 1024 from sys.dm_os_memory_clerks
where type IN ('MEMORYCLERK_SQLBUFFERPOOL', 'MEMORYCLERK_SQLQERESERVATIONS', 'OBJECTSTORE_LOCK_MANAGER', 'MEMORYCLERK_SQLGENERAL', 'CACHESTORE_OBJCP', 'OBJECTSTORE_XACT_CACHE', 'MEMORYCLERK_XTP') AND memory_node_id <> 64
select memory_node_id, CAST (SUM (pages_kb) / (@MEM * 10.24) AS TINYINT) AS [%]
from sys.dm_os_memory_clerks
where type IN ('MEMORYCLERK_SQLBUFFERPOOL', 'MEMORYCLERK_SQLQERESERVATIONS', 'OBJECTSTORE_LOCK_MANAGER', 'MEMORYCLERK_SQLGENERAL', 'CACHESTORE_OBJCP', 'OBJECTSTORE_XACT_CACHE', 'MEMORYCLERK_XTP') AND memory_node_id <> 64
group by memory_node_id
select type AS [MEMORYCLERK], CAST (SUM (pages_kb) / (@MEM * 10.24) AS TINYINT) AS [%]
from sys.dm_os_memory_clerks
where type IN ('MEMORYCLERK_SQLBUFFERPOOL', 'MEMORYCLERK_SQLQERESERVATIONS', 'OBJECTSTORE_LOCK_MANAGER', 'MEMORYCLERK_SQLGENERAL', 'CACHESTORE_OBJCP', 'OBJECTSTORE_XACT_CACHE', 'MEMORYCLERK_XTP') AND memory_node_id <> 64
group by type
ORDER BY 2 DESC
...
Рейтинг: 0 / 0
2 А.Гладченко - использование Hyper Threading
    #40095920
Alexander Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Гладченко,

У меня 2008R2, pages_kb нет.
Изменил в Вашем коде на (single_pages_kb + multi_pages_kb).

Буду признателен за комментарий результата:
memory_node_id%015185

MEMORYCLERK%CACHESTORE_OBJCP63OBJECTSTORE_LOCK_MANAGER24MEMORYCLERK_SQLGENERAL10MEMORYCLERK_SQLBUFFERPOOL1MEMORYCLERK_SQLQERESERVATIONS0

Кроме того, на высокое значение сontext switches на SQL2008 может влиять таймер.
Тут пишут , что помогла установка флага t8038
...
Рейтинг: 0 / 0
2 А.Гладченко - использование Hyper Threading
    #40095985
tunknown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Us
Имеется cервер с 2 процессорами Xeon Gold 6134, SQL 2008R2, Ent
Если у вас избыточное соличество потоков, то может быть стоит разделить сокеты на cpu и i/o affinity . Так шедулеру не придётся перекидывать активность по шине на соседние 24.75 MB L2 кеша. Особенно, если сервер под sql и ничего больше на нём нет. Тем более, в 2008 R2 это ещё, кажется, настраивалось отдельно.

Хотя, эксперименты на боевом сервере...
...
Рейтинг: 0 / 0
2 А.Гладченко - использование Hyper Threading
    #40096007
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Us,
Комментарий простой, у вас очень сильный перекос использования памяти между процессорными узлами. Это точно не уменьшает число переключений :)
Смотрите схему подключения PCI слотов к сокетам и смотрите, как и какие устройства подключены к процессорам.
Если дисковый контроллер всего один, можно трейсфлагом попробовать вообще отключить поддержку NUMA.
Когда такой перекос, движок вынужден страницы в кеш тащить с другого сокета через QPI, который бывает ещё и с очередями (можно наблюдать в coreinfo). Это может в разы замедлить логические чтения и на порядки поднять число переключений контекста.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / 2 А.Гладченко - использование Hyper Threading
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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