Низкая загрузка ЦП, но высокий сигнал ожидания

8

У меня есть сервер с 16 процессорами, который настроен с max degree of parallelism8 и 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, потому что приложение выполняет некоторые складские запросы, которые требуют дополнительных потоков.
Крис Вудс
источник
Спасибо Аарон! Я буду искать запросы с высокой продолжительностью и низкой загрузкой процессора.
Крис Вудс

Ответы:

2

Ответ сообщества Wiki создан на основе комментариев Аарона к вопросу .

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

Высокая загрузка ЦП может быть показателем, но из того, что вы объяснили, я бы сказал, что для начала рассмотрим запросы с большой продолжительностью, но низкой ЦП. CXPACKETОжидание иногда ассоциируются с запросом ждет всех нитей до конца , прежде чем он может объединить результаты (данные наклона).

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

Пол Уайт
источник