Высокий контекст переключается на коробке SQL Server
У нас есть сервер с 2 процессорами Quad Xeon 5550. Единственное приложение, установленное на сервере, - это сервер SQL. Загрузка ЦП редко превышает 40%, а скорость транзакций составляет 2000 транзакций в секунду.
Длина очереди процессора также составляет около 2. Все кажется нормальным, за исключением переключателей контекста, которые имеют в среднем 88 000 и максимум 232 000 в рабочее время.
Я читал в документах SQL-сервера, что номер переключателя контекста больше 15 000 указывает на проблему с процессором. Это на самом деле проблема, хотя счетчики процессора кажутся нормальными?
2 ответа
Я вижу, что это процессор Nehalem с гиперпоточностью.
В последний раз, когда мы спрашивали общее согласие, было отключить гиперпоточность по умолчанию для определенного блока SQL Server (и мы отключили его на нашем, с хорошими результатами). Просматривая несколько других сайтов, я слышу этот совет, повторяемый другими уважаемыми людьми.
Таким образом, вы можете сначала отключить гиперпоточность, а затем перемерить.
Я уверен, что вы, ребята, уже поняли это, но я хотел бы поделиться здесь ответом, потому что это ошибка сервера.
SQL Server имеет собственную функцию таймера и использует ее по умолчанию, а не таймер ОС /BIOS. Вы можете отключить это, но я не знаю, повлияет ли это на вашу способность SQL Server вводить точные данные времени (до 12 мс, iirc) в поля времени.
Отключите таймер SQL Server, зайдя в диспетчер конфигурации SQL Server, перейдите в службы SQL Server, щелкните правой кнопкой мыши экземпляр SQL Server и перейдите в Свойства.
В свойствах экземпляра перейдите на вкладку "Параметры запуска" и добавьте -t8038. Это включает флаг трассировки, который отключает таймер для этого экземпляра. Если у вас есть несколько экземпляров, вам придется делать это для каждого экземпляра, или вы все равно столкнетесь с переключением контекста.