Значения времени SQL Server может быть неправильным, при использовании служебных программ или технологий, изменяющих частоты Процессора


Обзор


Microsoft SQL Server 2005 использует счетчик ЦП с высоким разрешением для обеспечения возможности синхронизации микросекунд. Микросекунды — одна миллионная секунды (или одна тысячная миллисекунды). Тем не менее значения времени SQL Server неверно при использовании технологий, изменяющих тактовая частота ЦП. Например эта проблема может возникнуть при использовании любого из следующих технологий:
  • Процессор степпинга
  • AMD Cool'n'Quiet технологии
  • Различные схемы управления питанием
Эта статья содержит дополнительные сведения для решения этой проблемы и методы.

Симптомы


При использовании инструкции SET STATISTICS времени для отображения сервера выполнения синтаксического анализа и времени компиляции можно получить неверные значения. Например можно заметить гораздо больше, чем время ЦП, затраченное время от времени выполнения SQL Server. Эта проблема может повлиять на точность настройки производительности. Эта проблема возникает при использовании одной из технологий, перечисленных в разделе «Аннотация» на сервере.

Причина


Данная проблема возникает вследствие изменения частоты Процессора при использовании этих технологий. SQL Server 2005 использует счетчик ЦП с высоким разрешением для обеспечения синхронизации микросекунд. Если тактовая частота ЦП изменяется для экономии электроэнергии и сокращению тепла, вычисляемые значения длительности могут быть неправильными.

Решение


Сведения о пакете обновления

Чтобы устранить эту проблему, получите последний пакет обновления для SQL Server 2005. Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:
913089 как получить последний пакет обновления для SQL Server 2005
Примечание. В Пакет обновления 3 для SQL Server 2005 и более поздних пакетов обновления штампа времени процессора не используется. Эти версии SQL Server 2005 используется более надежный таймер с максимальной точностью 1 миллисекунде.

Статус


Впервые эта ошибка была исправлена в Пакет обновления 3 для SQL Server 2005.

Временное решение


SQL Server 2005 требует известных и стабильных данных точки при проведении точной производительности. Если на компьютере включены динамические корректировки частоты ЦП, их можно отключить процессоры управление постоянной частоты скорость перед началом для мониторинга и настройки производительности SQL Server. Чтобы сделать это, используйте следующие методы.

Настройка схемы управления питанием на компьютере принудительно ЦП остается в максимальной частоты

Чтобы сделать это, выполните следующие действия.
  1. Нажмите кнопку Пуск, выберите пункт выполнить, введите команду Powercfg.cplи нажмите кнопку ОК.
  2. В диалоговом окне Свойства: Электропитание щелкните Всегда в списке схемы управления питанием .
  3. Нажмите кнопку ОК.
Уход может возникнуть. Уход является расхождение между значениями частоты Процессора. Дополнительные сведения см в разделе «Уход». В этом случае необходимо перезапустить Microsoft Windows для повторной синхронизации частот всех ЦП, после изменения схемы управления питанием.

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

В следующей таблице перечислены примеры сценариев.
Номер ПроцессораИнструкции, чтобы включить соответствие процессоров
02 ЦПEXEC sp_configure 0x00000003 «affinity mask»
GO
изменить конфигурацию
GO
04 ЦПEXEC sp_configure 'маска схожести», 0x0000000F
GO
изменить конфигурацию
GO
08 ЦПEXEC sp_configure 'маска схожести», 0x000000FF
GO
изменить конфигурацию
GO
16 ЦПEXEC sp_configure 0x0000FFFF «affinity mask»
GO
изменить конфигурацию
GO
32 ЦПEXEC sp_configure 0xFFFFFFFF «affinity mask»
GO
изменить конфигурацию
GO
Примечание. Это может быть недостаточно для отключения функций вариации частоты ЦП на уровне BIOS. Различные служебные программы независимых производителей для изменения частоты Процессора. Некоторые реализации включить корректировки частоты, даже если ЦП в разделе Параметры схемы Максимальная мощность. В этом случае необходимо отключить эти служебные программы независимых производителей при выполнении быстродействия в SQL Server 2005.

Используйте сторонние утилиты и драйверы для синхронизации частоты Процессора и счетчиков ЦП часов

В редких случаях может потребоваться обновление от производителя для устранения проблем частоты ЦП системы. Рекомендуется проверить систему для обновления BIOS, встроенного по и микрокода Если вы подозреваете, что система может возникнуть проблема.

Дополнительные сведения


Microsoft SQL Server 2000 и более ранних версиях SQL Server использовать механизмы синхронизации Windows. Механизмы синхронизации с помощью значения с точностью до миллисекунд. Обычно это точность равна 10 или 15 мс тем не менее, точность может быть мере 55 ms. Запросы SQL Server часто завершить в течение одной цифрой миллисекунды или занимает время микросекунд. Эта точность требуется таймер высокого разрешения. Таким образом эти версии отчета SQL Server во время некоторых запросов как 0 мс, поэтому сложно для контроля производительности и настройки производительности SQL Server в более ранних версиях SQL Server.

SQL Server 2005 повышает точность с помощью счетчика ЦП с высоким разрешением для обеспечения синхронизации микросекунд. При использовании технологий, перечисленных в разделе «Аннотация», значения времени отчета может быть неправильным.

Эта проблема может повлиять на следующие объекты и компоненты:
  • События трассировки:
    • События Attention
    • События в узел сохраненные процедуры
    • События в узле TSQL
    • События в узле объектов
    • События в узле проводки
  • Динамические административные представления:
    • sys.dm_exec_query_stats
    • sys.dm_exec_requests
    • sys.dm_exec_sessions
    • sys.dm_io_pending_io_requests

    • sys.dm_os_ring_buffers
    • sys.dm_os_sys_info
    • sys.dm_io_virtual_file_stats
    • sys.dm_os_wait_stats
  • Инструкция SET STATISTICS времени
  • Системной таблице sysprocesses
После установки Пакет обновления 2 (SP2) для SQL Server 2005, SQL Server записывает сообщение об ошибке в журнал ошибок, когда SQL Server обнаруживает, что синхронизация между процессорами таймеров с высоким разрешением. Сообщение об ошибке указывает, что временные параметры производительности может быть неточным и пользователей следует использовать данные о производительности с осторожностью.

Текст сообщения об ошибке подобное одному из следующих сообщений об ошибке:
Сообщение об ошибке 1
Счетчик временных меток ЦП на планировщике с идентификатором 2 не синхронизируется с другими процессорами.
Сообщение об ошибке 2
Частота временной метки ЦП изменилось с 191469 на 1794177 тактов в миллисекунду. Будут использоваться новые частоты
SQL Server используется оператор счетчика штампа реального времени (RDTSC) для получения 64-разрядный счетчик тактов Процессора. Это значение можно разделить по частоте Процессора для преобразования значения в значения миллисекунд. Варианты синхронизации может возникнуть в случае изменения частоты Процессора или отклонений.

Процессор степпинга

Процессор степпинга определяется как преднамеренные изменения в тактовая частота Процессора. Процессор степпинга может быть известен также как технологии Intel SpeedStep или AMD PowerNow! Технология. Когда Процессор степпинга происходит, скорость ЦП может увеличить или уменьшить с шагом как 50 МГц для экономии электроэнергии и сокращению тепла. ЦП, которые находятся в том же узле неоднородной памяти (NUMA) доступ не изменять частоты независимо друг от друга.

В следующей таблице показано, как изменяется степпинг Процессора может повлиять на время вычислений.
ДействиеИмпульсов RDTSCТактов в миллисекунду (частота)Время часов стены
Запустить пакет12000
Частота шаг вниз2001001ms
Конец пакета5003ms
ИТОГИ5004ms
SQL Server записывает импульсов RDTSC на начало и конец импульсов RDTSC. Затем SQL Server делит значение частоты импульсов.

В этом примере следующие вычисления времени происходят при использовании значение частоты 100 или 200:
  • Частота 200: 500/200 = 2,5 мс
  • Частота 100: 500/100 = 5 мс
Ни один из вычисления времени соответствует фактическое время по часам 4 мс.

Если это вычисление используется в RPC: завершена неправильно отображаются столбцы данных трассировки событий, длительности и времени окончания . RPC: завершена событие захватывает начальное время по часам и счетчик фиксирует ЦП. Для получения высокого разрешения времени, чем в SQL Server 2005, продолжительность и время окончания столбцы данных в SQL Server предоставляет Windows трассировки рассчитываются с использованием затраченное счетчик тактов Процессора. В столбце время окончания рассчитывается путем сложения столбец продолжительность в столбце время запуска . В этом примере в столбце время окончания вычисляется добавлением неправильно 2,5 мс или 5 мс для времени начала.

Уход

Уход является расхождения в значениях времени ЦП. Системах с несколькими процессорами могут создавать различные значения часов ЦП для той же точке во времени. Хотя это происходит не часто, процессоры могут возникнуть разделение часов со временем.

В следующем примере показано, как уход изменения могут повлиять на результат длительности столбца данных в трассировке SQL Server. В этом примере предполагается, что тактовая частота Процессора остается неизменным на 200 тактов в миллисекунду. В следующей таблице приведены события в этом сценарии.
ДействиеWindows запланированных ЦПRDTSC ПРОЦЕССОРА 12 ПРОЦЕССОРА RDTSCВремя часов стены
Запустить пакет110011000
Конец пакета290019004 мс
ИТОГИ4 мс
SQL Server записывает импульсов RDTSC точки старта и конечные точки. Затем SQL Server делит значение частоты импульсов RDTSC. В этом примере Windows расписание рабочий поток SQL Server на двух различных процессорах. Рабочий поток SQL Server, обслуживающий пакета сначала выполнялось первого Процессора (CPU 1).

Пакетное выполнение прервано на некотором этапе, но SQL Server отправляется выполнение пакетной очереди. Рабочий поток SQL Server, обслуживающий этот пакет в очередь готовых к выполнению попытку отправки SQL Server Windows отправляется поток для запуска на второй Процессор (2 Процессора). Рабочий поток SQL Server завершения выполняющихся на ЦП 2. Из-за уход ЦП конечное значение счетчика тактов, собранных из 2 ЦП было 1900 года, а не на 900. Это поведение можно избежать, если включить соответствие процессоров SQL Server.

В этом примере используются следующие вычисления времени:
  • Неверный но сообщила значение: (1900 – 100 = 1800) / 200 = 9 ms
  • Исправить значение: (900 – 100 = 800) / 200 = 4 мс
Значение столбца продолжительность для RPC: завершена событий будет считаться 9 ms вместо 4 мс, результатом является более чем дважды правильное значение 4 мс.

Уход предупреждающие сообщения добавляются в SQL Server 2005 для указания того, что выходные данные производительности, упомянутых ранее может быть надежным. В некоторых случаях не выполнявшегося SQL Server 2005 SP2 может сообщить предупреждающие сообщения о следующем:
  • Значение false, запуская предупреждающих сообщений
  • Уход может стать десятки миллисекунд, не вызывая эффект заметно системы
Будьте внимательны, чтобы при оценке выходные данные производительности и при сравнении выходные данные производительности на стене тактовые частоты. При наличии признаков другие проблемы производительности, обычно можно проигнорировать уход предупреждающих сообщений. Например обычно можно проигнорировать уход предупреждающие сообщения в следующих ситуациях:
  • Процессы выполняются должным образом.
  • Запросы SQL Server не работают в шаблонах странный durational.
  • Вы не видите знаки других узких мест.
Тем не менее прежде чем пропустить уход предупреждающие сообщения, мы рекомендуем Вам связаться с производителем, чтобы убедиться в том, что нет известных проблем RDTSC существует.

Можно использовать флаг трассировки 8033 (-T8033) для возврата для формирования отчетов в исходной версии SQL Server 2005 и SQL Server 2005 с пакетом обновления 1. Исходной версии SQL Server 2005 и SQL Server 2005 SP1 не предоставляют уход предупреждающих сообщений. Если на компьютере исходной версии SQL Server 2005 или SQL Server 2005 SP1 без проблем обычно можно проигнорировать сообщения.

Почему инструкция WAITFOR DELAY работает правильно? Как насчет периодических системные процессы?

Тайм-аут механизмы не подвержены высокого разрешения конструктора. SQL Server не использует таймер высокого разрешения для действий на основе таймера. Некоторые действия тайм-аута основаны на уменьшенное разрешение таймера, функция GetTickCount . Эти действия тайм-аута включают время ожидания блокировки, инструкция WAITFOR DELAY и обнаружение взаимоблокировок.
Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:

938448 сервер под управлением Windows Server 2003 могут возникнуть штамп времени счетчика уход Если сервер использует двухъядерных процессоров AMD Opteron или многопроцессорных процессоров AMD Opteron

895980 программ, которые используют функцию функции QueryPerformanceCounter может работать неправильно в Windows Server 2003 и Windows XP

Продукты независимых производителей, обсуждаемые в этой статье, производятся компаниями, независимыми от корпорации Майкрософт. Корпорация Майкрософт не дает никаких явных или подразумеваемых гарантий относительно производительности или надежности этих продуктов.