Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 2 А.Гладченко - использование Hyper Threading  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5503
Блог
Можешь дать ссылку на статью, где научно обосновано, что HT - зло для MSSQL?
27 мар 08, 10:03    [5465421]     Ответить | Цитировать Сообщить модератору
 Re: 2 А.Гладченко - использование Hyper Threading  [new]
Crimean
Member

Откуда:
Сообщений: 13147
DeColo®es
Можешь дать ссылку на статью, где научно обосновано, что HT - зло для MSSQL?


не даст. ибо временами как раз HT - добро. имхо очень от камней зависит
27 мар 08, 10:04    [5465431]     Ответить | Цитировать Сообщить модератору
 Re: 2 А.Гладченко - использование Hyper Threading  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5503
Блог
Crimean
DeColo®es
Можешь дать ссылку на статью, где научно обосновано, что HT - зло для MSSQL?
не даст. ибо временами как раз HT - добро. имхо очень от камней зависит
Даст, обещал.
Чуть ли не насильно.
Но в 6 вечера после "лонча" подходить к компьютеру желания уже ни у кого не было :)
27 мар 08, 10:13    [5465497]     Ответить | Цитировать Сообщить модератору
 Re: 2 А.Гладченко - использование Hyper Threading  [new]
Alex-00000
Guest
http://team-madalf.com/lofiversion/index.php?t29059.html

Сообщение было отредактировано: 27 мар 08, 10:37
27 мар 08, 10:23    [5465558]     Ответить | Цитировать Сообщить модератору
 Re: 2 А.Гладченко - использование Hyper Threading  [new]
Александр Гладченко
Member

Откуда:
Сообщений: 10824
Блог
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 с включенной и выключенной гиперпоточностью.
27 мар 08, 10:33    [5465656]     Ответить | Цитировать Сообщить модератору
 Re: 2 А.Гладченко - использование Hyper Threading  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5503
Блог
Огромный респект, с лонча успел забыть, учто речь шла о статье в течнете. :)
27 мар 08, 10:44    [5465773]     Ответить | Цитировать Сообщить модератору
 Re: 2 А.Гладченко - использование Hyper Threading  [new]
Crimean
Member

Откуда:
Сообщений: 13147
да уж, обосновано просто железобетонно

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


я так что угодно обосную! вообще это вредно, но всегда проверяйте - может это полезно. ад2!
27 мар 08, 10:48    [5465813]     Ответить | Цитировать Сообщить модератору
 Re: 2 А.Гладченко - использование Hyper Threading  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5503
Блог
Хотя некоторые моменты....
Получение страницы данных, уже кэшированной из буферного пула, с максимальной производительностью выполняется в течение половины миллисекунды; получение одного блока с диска в оптимальной среде занимает от 2 до 4 миллисекунд.
Может быть, все-таки микромекунд?

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

Ошибки страниц ОЗУ идеальны для SQL Server, поскольку для использования данных, полученных в качестве части запроса, они должны находиться в буферном кэше. 
или скорее, с терминологией напутали. :(
27 мар 08, 10:51    [5465847]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: 2 А.Гладченко - использование Hyper Threading  [new]
Antoshka
Member

Откуда:
Сообщений: 828
Изменилось ли что-нибудь в плане сабжа на современных процессорах?
31 авг 12, 15:25    [13095700]     Ответить | Цитировать Сообщить модератору
 Re: 2 А.Гладченко - использование Hyper Threading  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5503
Блог
Antoshka,

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

ПРосто теперь гораздо чаще эффективнее все-таки включать. :)
3 сен 12, 00:14    [13102856]     Ответить | Цитировать Сообщить модератору
 Re: 2 А.Гладченко - использование Hyper Threading  [new]
Александр Гладченко
Member

Откуда:
Сообщений: 10824
Блог
Моё личное отношение к HT изменилось (как и сама технология), раньше мне нужны были убедительные причины, что бы его включать, а теперь наоборот, должно произойти нечто из ряда вон выходящее, чт о бы я его отключил :)
3 сен 12, 14:40    [13105988]     Ответить | Цитировать Сообщить модератору
 Re: 2 А.Гладченко - использование Hyper Threading  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Александр Гладченко
Моё личное отношение к HT изменилось (как и сама технология), раньше мне нужны были убедительные причины, что бы его включать, а теперь наоборот, должно произойти нечто из ряда вон выходящее, чт о бы я его отключил :)


вот оно как повернулось
3 сен 12, 15:05    [13106257]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: 2 А.Гладченко - использование Hyper Threading  [new]
Alexander Us
Member

Откуда:
Сообщений: 1180
Имеется cервер с 2 процессорами Xeon Gold 6134, SQL 2008R2, Ent

Есть ли смысл выключить hyper therading если сontext switches >= ~15.000 ?
6 сен 21, 16:47    [22368457]     Ответить | Цитировать Сообщить модератору
 Re: 2 А.Гладченко - использование Hyper Threading  [new]
tunknown
Member

Откуда:
Сообщений: 819
Есть ли разница при выключении HT для случаев большого кеша L2, малого количества одновременных пользователей и преимущественно однопоточной нагрузки при MAXDOP=1 на сервер или на все запросы?

Про что-то подобное я спрашивал ранее в сообщении.
6 сен 21, 22:13    [22368604]     Ответить | Цитировать Сообщить модератору
 Re: 2 А.Гладченко - использование Hyper Threading  [new]
aleks222
Member

Откуда:
Сообщений: 1865
tunknown
Есть ли разница при выключении HT для случаев большого кеша L2, малого количества одновременных пользователей и преимущественно однопоточной нагрузки при MAXDOP=1 на сервер или на все запросы?

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


Глупые вопросы.
НТ - это аппаратная поддержка быстрого переключения между потоками/задачами.
Вреда от нее быть не может по-определению.
Когда-то, в былинные времена, когда HT только появился, MS SQL путал НТ с ядрами процессора и неоптимально использовал.
Это было так давно, что тебя наверное еще не было.
Но дурацкое предубеждение осталось.

Сообщение было отредактировано: 7 сен 21, 06:51
7 сен 21, 07:00    [22368644]     Ответить | Цитировать Сообщить модератору
 Re: 2 А.Гладченко - использование Hyper Threading  [new]
vikkiv
Member

Откуда: EU
Сообщений: 3016
зависит от доминирующего типа нагрузок,
например если узкое звено кэш (буфер памяти и его скорость) а расчётная часть лёгкая и при этом характер запроса предполагает только последовательное выполнение операций (последующие вычисления зависят/могут выполняться только после предыдущих) - то HT зло т.к. ведёт к падению эффективности из-за более долгого времени ожидания данных (расчётная мощность недогружена)

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

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

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

если процессор недогружен то отключение HT так-же как и включение, (т.е. изменение состояния) не имеет смысла т.к. цикл всё равно будет холостой а его наличие не забирает существенных ресурсов
если процессор перегружен, т.е. очередь на выполнение операций большая (не зависит или от множества разных пользователей или малого количества но большая параллельность) то зависит от характера нагрузок,
- а) при этом кэш не является узким звеном (т.е. тяжелая расчётная часть и пропускной способности кэша достаточно) - то наличие HT больше добро
- б) кэш узкое звено - то наличие активного HT вполне может быть злом т.к. ведёт к падению эффективности полезного использования ресурса из-за излишней передачи данных (перетиранию нужных в кэше) и простою остальных сегментов в ожидании получения этих данных
7 сен 21, 08:01    [22368650]     Ответить | Цитировать Сообщить модератору
 Re: 2 А.Гладченко - использование Hyper Threading  [new]
Александр Гладченко
Member

Откуда:
Сообщений: 10824
Блог
vikkiv,

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

Для многопоточных нагрузок Интел обещает прирост производительности до 30%. Другие источники для иных задач наблюдали 20%.
Если нагрузка мизерная - разницы можете не заметить.
7 сен 21, 10:10    [22368681]     Ответить | Цитировать Сообщить модератору
 Re: 2 А.Гладченко - использование Hyper Threading  [new]
aleks222
Member

Откуда:
Сообщений: 1865
vikkiv

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


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

Так можно договориться до вредности многоядерности.
7 сен 21, 12:21    [22368758]     Ответить | Цитировать Сообщить модератору
 Re: 2 А.Гладченко - использование Hyper Threading  [new]
Alexander Us
Member

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

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

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

Попытаюсь выключить HT и посмотреть эффект.
7 сен 21, 13:37    [22368809]     Ответить | Цитировать Сообщить модератору
 Re: 2 А.Гладченко - использование Hyper Threading  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9179
HT рекомендовали отключать на машинах и процессорах 2005-2008 поколений. На последних выпусках не встречал таких рекомендаций.
7 сен 21, 15:38    [22368892]     Ответить | Цитировать Сообщить модератору
 Re: 2 А.Гладченко - использование Hyper Threading  [new]
Александр Гладченко
Member

Откуда:
Сообщений: 10824
Блог
Alexander Us,

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

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
8 сен 21, 11:00    [22369135]     Ответить | Цитировать Сообщить модератору
 Re: 2 А.Гладченко - использование Hyper Threading  [new]
Alexander Us
Member

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

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

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


MEMORYCLERK%
CACHESTORE_OBJCP63
OBJECTSTORE_LOCK_MANAGER24
MEMORYCLERK_SQLGENERAL10
MEMORYCLERK_SQLBUFFERPOOL1
MEMORYCLERK_SQLQERESERVATIONS0


Кроме того, на высокое значение сontext switches на SQL2008 может влиять таймер.
Тут пишут, что помогла установка флага t8038
8 сен 21, 12:10    [22369187]     Ответить | Цитировать Сообщить модератору
 Re: 2 А.Гладченко - использование Hyper Threading  [new]
tunknown
Member

Откуда:
Сообщений: 819
Alexander Us
Имеется cервер с 2 процессорами Xeon Gold 6134, SQL 2008R2, Ent
Если у вас избыточное соличество потоков, то может быть стоит разделить сокеты на cpu и i/o affinity. Так шедулеру не придётся перекидывать активность по шине на соседние 24.75 MB L2 кеша. Особенно, если сервер под sql и ничего больше на нём нет. Тем более, в 2008 R2 это ещё, кажется, настраивалось отдельно.

Хотя, эксперименты на боевом сервере...
8 сен 21, 13:37    [22369273]     Ответить | Цитировать Сообщить модератору
 Re: 2 А.Гладченко - использование Hyper Threading  [new]
Александр Гладченко
Member

Откуда:
Сообщений: 10824
Блог
Alexander Us,
Комментарий простой, у вас очень сильный перекос использования памяти между процессорными узлами. Это точно не уменьшает число переключений :)
Смотрите схему подключения PCI слотов к сокетам и смотрите, как и какие устройства подключены к процессорам.
Если дисковый контроллер всего один, можно трейсфлагом попробовать вообще отключить поддержку NUMA.
Когда такой перекос, движок вынужден страницы в кеш тащить с другого сокета через QPI, который бывает ещё и с очередями (можно наблюдать в coreinfo). Это может в разы замедлить логические чтения и на порядки поднять число переключений контекста.

Сообщение было отредактировано: 8 сен 21, 14:42
8 сен 21, 14:52    [22369325]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить