УРОВЕНЬ ТЕХНИКИ Недавно я изучал довольно высокие времена ожидания CXPacket, из-за которых я использовал SQL Sentry для тщательного мониторинга активности процессора.
В результате я обратил внимание на то, что у нас наблюдается резкий скачок в переключении контекста. Ниже приведен 5-минутный образец, но этот шаблон очень распространен в течение дня.
Как вы можете видеть, это довольно часто всплески. Теперь мое понимание этого заставит меня поверить, что это будет результатом нагрузки на процессор. Однако за это время с трудом справляюсь с 60%.
После некоторых исследований это привело меня к мысли, что это происходит в результате гиперпоточности. Я знаю, что прочитал ранее некоторые опасности гиперпоточности. Однако это было написано очень давно.
Короче говоря. Является ли гиперпоточность вероятным виновником такого всплеска переключения контекста? Возможно ли, что переключение контекста отрицательно влияет на мои параллельные запросы? Должен ли я отключить гиперпоточность в моей среде?
ОБНОВЛЕНИЕ, хотя эта конкретная вещь происходит в моей среде, вопрос по своей сути является более универсальным. Насколько влияют высокие уровни переключения контекста на параллельные запросы? Может ли гиперпоточность стать причиной такого рода проблем?
В конечном итоге большая часть того, что я нахожу в Интернете, предполагает, что гиперпоточность и SQL Server не являются хорошими друзьями, однако в большинстве случаев эта информация чрезвычайно устарела.
Моя система Было много вопросов о конфигурации, поэтому я рассмотрю их здесь, чтобы их можно было исключить. У нас есть настройки энергопотребления на обеих ОС на биоуровне. Наш Maxdop установлен на 8, а порог стоимости параллелизма - 25. У нас 32 логических ядра и 16 физических. Также это по большей части сценарий загрузки хранилища данных.
Ответы:
Часто указывает только на то, что определенные запросы выполняются с параллелизмом; Ожидание CXPACKET на сервере не является непосредственным признаком проблем, хотя они могут быть признаком другой проблемы.
Если на сервере размещено хранилище данных или база данных отчетов, которая получает небольшой объем запросов, но обрабатывает большие объемы данных, параллелизм может существенно сократить время, необходимое для выполнения этих запросов. Однако, напротив, если на сервере размещена база данных OLTP, которая содержит множество небольших запросов и транзакций, параллелизм может снизить пропускную способность и негативно повлиять на производительность.
Когда это возможно, лучше всего изолировать и устранить неполадки базового типа ожидания, поскольку это приведет к общему повышению пропускной способности системы. Опять же, ожидания CXPACKET в большинстве случаев являются просто симптомом проблемы, а не реальной проблемой.
DMV sys.dm_os_latch_stats содержит информацию о конкретных ожиданиях защелки, которые произошли в экземпляре, и, если один из ожиданий верхней защелки является ACCESS_METHODS_DATASET_PARENT, в сочетании с CXPACKET, LATCH_ * и SOS_SCHEDULER_YIELD, типы ожидания в качестве верхнего уровня параллелизм в системе является причиной узких мест во время выполнения запроса, и для решения проблем может потребоваться уменьшение параметра «максимальная степень параллелизма» sp_configure.
Эта статья в TechNet Magazine устарела, но в ней говорится, что стоит попробовать отключить гиперпоточность, если вы превышаете 5000 в секунду на процессор:
Оптимизация производительности процессора SQL Server. Автор Zach Nichter.
источник