У меня есть сервер с 16 процессорами, который настроен с max degree of parallelism
8 и max worker threads
нулевой настройкой.
В течение определенного часа мой сигнал ожидания составлял 20%, но загрузка процессора моей ОС за это время не превышала 25%. Может кто-нибудь объяснить, почему мои ожидания сигнала были так высоки?
У моего поставщика лучшая в своем классе система подсчета очков, которая предполагает, что мы ожидаем 10% сигналов или меньше, или мы потеряли контроль. Как я могу исправить это (без добавления дополнительных процессоров)?
- У нас не более 8 процессоров на узел NUMA, поэтому Trace Flag 8048 не применяется.
- Наибольшее ожидание экземпляра составляет
CXPACKET
(70%), затемPREEMPTIVE_OS_PIPEOPS
(20%) cost threshold for parallelism
установлен на 50. Должен ли я его поднять? К чему?- Это физическая машина (не виртуальная машина), выделенная для SQL Server.
- Я использую инструмент мониторинга для выявления наиболее часто выполняемых запросов и процедур. Хочу ли я посмотреть на высокую загрузку процессора, высокую скорость ввода-вывода или большую продолжительность? Обычно наше приложение интенсивно использует ввод-вывод, поэтому я настраиваю высокий уровень ввода-вывода. Но так как проблема заключается в ожидании сигнала, мне нужно смотреть на высокую загрузку процессора?
- Я надеялся избежать рекомендации Макса Вернона понизить
MAXDOP
до 4, потому что приложение выполняет некоторые складские запросы, которые требуют дополнительных потоков.
sql-server
performance
Крис Вудс
источник
источник
Ответы:
Ответ сообщества Wiki создан на основе комментариев Аарона к вопросу .
Если у вас нет проблем с производительностью, высокий процент
CXPACKET
ожиданий может быть лишь индикатором того, что большая часть запросов идет параллельно, а не проблемой.Высокая загрузка ЦП может быть показателем, но из того, что вы объяснили, я бы сказал, что для начала рассмотрим запросы с большой продолжительностью, но низкой ЦП.
CXPACKET
Ожидание иногда ассоциируются с запросом ждет всех нитей до конца , прежде чем он может объединить результаты (данные наклона).Если вы можете изменить запросы и процедуры, вы можете установить более высокое значение
MAXDOP
для складских задач, которые в этом нуждаются, и установить глобальноеMAXDOP
нижнее значение. Однако я бы сделал это только в крайнем случае. Вы действительно хотите делать такие типы явных подсказок, когда вы исчерпали все возможности или не можете вносить изменения в код, запросы или схемы базы данных.источник