Программы, которые используют функцию QueryPerformanceCounter, могут выполняться плохо

В этой статье данная статья позволяет решить проблему, которая возникает на 32-битных компьютерах и компьютерах на основе x64, на которые включена технология AMD Cool'n'Quiet в BIOS.

Применяется к:   Windows Server 2012 R2, Windows 10 — все выпуски
Исходный номер КБ:   895980

Симптомы

В следующих операционных системах:

  • Windows Server 2000
  • Windows XP
  • Windows Server 2003
  • Windows Сервер 2000 гостевой O.S.
  • Windows Xp гость O.S.
  • Windows Сервер 2003 гостевой O.S.

Программа, использующая QueryPerformanceCounter функцию для запроса системного времени, может выполняться плохо.

Например:

При использовании команды ping для отправки пакетов протокола сообщений управления Интернетом (ICMP) на удаленный компьютер время ответа может быть отрицательным. Например, следующая команда ping может генерировать следующие ответы:

C:\>ping x.x.x.x

Результат:

Pinging x.x.x.x с 32 битами данных:

Ответ от x.x.x.x: bytes=32 time=-59ms TTL=128
Ответ от x.x.x.x: bytes=32 time=-59ms TTL=128
Ответ от x.x.x.x: bytes=32 time=-59ms TTL=128
Ответ от x.x.x.x: bytes=32 time=-59ms TTL=128

Кроме того, при использовании счетчиков производительности для логического диска или физического диска может неправильно показываться высокое значение задержки.

Примечание

Эта проблема возникает на компьютере, который работает на основе x86 версии Windows или x64-версии Windows.

Причина

Эта проблема возникает, когда на компьютере включена технология AMD Cool'n'Quiet (двойные ядра AMD) в BIOS или некоторых многоядерных процессорах Intel. Многоядерные или многопроцессорные системы могут столкнуться со смещением счетчика времени (TSC), когда время между различными ядрами не синхронизировано. В операционных системах, которые используют TSC в качестве ресурса хронометража, может возникнуть проблема.

Решение

Чтобы устранить эту проблему, обратитесь к поставщику оборудования, чтобы узнать, доступно ли новое обновление драйвера и прошивки для устранения проблемы.

Примечание

Установка драйвера может добавить переключатель /usepmtimer в Boot.ini файле. Этот переключатель обсуждается в разделе "Обходное решение".

Обходной путь

Чтобы решить эту проблему, обновим BIOS на компьютере. Или измените файл Boot.ini, чтобы использовать переключатель /usepmtimer. Для этого выполните следующие действия:

  1. Войдите на компьютер с помощью учетной записи с административными учетными данными.

  2. Нажмите кнопку Начните, нажмите кнопку Запустить, notepad c:\boot.ini введите, а затем нажмите кнопку ОК.

  3. В Boot.ini файле строка, которая начинается с "по умолчанию", расположена в разделе "[загрузчик загрузки]". В этой строке указывается расположение операционной системы по умолчанию. Строка может отображаться следующим образом:

    default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS
    

    В разделе "[операционные системы]" найдите строку для операционной системы, соответствующую строке "по умолчанию". Например, если на компьютере работает Microsoft Windows Server 2003, Enterprise x64 Edition, строка должна напоминать следующее:

    multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003 Enterprise x64 Edition" /fastdetect /NoExecute=OptIn
    
  4. В конце строки добавьте пробел и введите /usepmtimer. Теперь строка должна напоминать следующую.

    multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003 Enterprise x64 Edition" /fastdetect /NoExecute=OptIn /usepmtimer
    
  5. Сохраните файл, а затем Блокнот.

  6. Перезагрузите компьютер.

Ниже приводится пример Boot.ini для системы, которая содержит переключатель /usepmtimer.

[boot loader]  
timeout=0  
default=multi(0)disk(0)rdisk(0)partition(2)\\WINDOWS  
[operating systems]  
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003 Enterprise x64 Edition" /fastdetect /NoExecute=OptIn /usepmtimer

Примечание

Файл Boot.ini расположен в корневой папке системного диска.
Использование параметра /UsePmTimer может привести к снижению производительности.

Техническая поддержка x64-версий Microsoft Windows

Если оборудование пришло с уже установленной Windows x64, производитель оборудования предоставляет техническую поддержку и помощь для Windows x64. В этом случае производитель оборудования предоставляет поддержку, так как Windows x64 был включен с вашим оборудованием. Производитель оборудования мог настроить установку Windows x64 с помощью уникальных компонентов. Уникальные компоненты могут включать определенные драйверы устройств или могут включать необязательные параметры для максимальной производительности оборудования. Корпорация Майкрософт предоставит необходимую помощь, если вам потребуется техническая помощь с помощью Windows x64. Однако вам может потребоваться связаться с производителем напрямую. Ваш производитель лучше всего может поддерживать программное обеспечение, установленное производителем на оборудовании. Если вы приобрели Windows x64, например версию Microsoft Windows Server 2003 x64 отдельно, обратитесь в Корпорацию Майкрософт за технической поддержкой.

Заявление об отказе от ответственности за сведения о продуктах сторонних производителей

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