akalifa
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Судя по найденной информации, причиной нашей проблемы со временем, является некорректная работа функции Windows - QueryPerformanceCounter c некоторыми моделями процессоров. Исправление: Run -> cmd -> bcdedit /set {default} USEPLATFORMCLOCK on После применения вышеописанного действия, скачки времени прекратились и в настоящее время не наблюдаются. Оказывается, эта проблема известная, просто мало кто заглядывает в журнал событий и обращает внимание на переводы времени. Я, так или иначе, надеюсь, что ноги растут именно отсюда. В некоторых многоядерных процессорах AMD и Intell (у нас интел, 4 ядра) есть какие-то непонятки с синхронизацией времени между потоками (ядрами). Происходить это может по разным причинам. 1 - работает механизм изменения тактовой частоты процессора для энергосбережения. 2 - кривые драйвера чипсета и процессора. 3 - кривая прошивка биоса. Операционная система, того не зная, использует резервы функции QueryPerformanceCounter. В свою очередь QPC использует TSC. TSC - это счетчик времени высокого разрешения для измерения продолжительности всякой ерунды, и, в том числе, ЗАДЕРЖЕК, которые можно использовать программно. Майкрософт утверждает, что использовать TSC неправильно, т.к. QueryPerformanceCounter может возвращать некорректные значения. Они говорят, что при помощи команды /usepmtimer, прописанной в файл Boot.ini операционка перейдет на другой механизм расчета времени - PM_Timer и таймер событий высокой точности HPET. Так же, в базе знаний упоминается некий патч, который, как я понял, переводит операционку на использование других счетчиков другим методом. |