Исправляем HPET и повышаем производительность в Windows 10/11
Если вы увлекались киберспортом или оптимизацией Windows, то наверняка слышали о влияние высокоточного системного таймера HPET на общую производительность ПК. Но знаете ли вы, что, начиная с Windows 10 22H2 и Windows 11, компания Microsoft изменила классическую логику работы системного таймера, и прошлые команды, которые ранее позволяли существенно повысить производительность, более не работают. В этом небольшом материале вы узнаете, как исправить эту проблему и вернуть привычное поведение системного таймера HPET/TSC в новых версиях Windows, существенно ускорив работу своего компьютера.
![](https://img.ixbt.site/live/images/original/07/17/73/2023/11/24/d20cf310ad.png?w=877)
Как было раньше
Чтобы не нагружать вас лишней технической информацией, достаточно будет сказать, что ранее отключение или изменение значений системного таймера HPET глобально влияло на все процессы в Windows, существенно повышая отклик и плавность работы приложений и игр. Теперь же частота прерывания системного таймера HPET/TSC не функционирует на глобальном уровне ОС и не зависит от других процессов. Короче говоря, таймер теперь работает лишь для запущенных на переднем фоне приложений и не может опускаться ниже принудительно заданных значений, что существенно ломает многие старые игры и не позволяет пользователю добиться былой производительности. Подробнее почитать про всё это вы можете, перейдя по ссылке.
Исправляем HPET
1. Нажимаем Win+R и вводим команду regedit. В появившемся окне переходим в раздел kernel и создаём новый параметр Dword32 с именем GlobalTimerResolutionRequests и значением 1 в шестнадцатеричной системе счисления. Или воспользуйтесь заранее уже готовым файлом с нужными настройками.
![](https://img.ixbt.site/live/images/original/07/17/73/2023/11/24/9fa2224de9.png?w=877)
2. Нажимаем правым кликом мыши на «Пуск» и выбираем «Диспетчер устройств». Для отключения HPET и активации таймера TSC мы должны в разделе «Системные устройства» отключить «Высокоточный таймер событий» иногда он подписан как High Precision Even Timer. Правый клик мыши>>"Отключить устройство".
![](https://img.ixbt.site/live/images/original/07/17/73/2023/11/24/e034880674.png?w=877)
3. Теперь нам осталось только ввести команды для отключения встроенного программного таймера Windows и технологии экономии электроэнергии для ноутбуков. Вновь нажимаем Win+R и вводим команду CMD.
В появившемся окне вводим команды:
bcdedit /set disabledynamictick yes
bcdedit /set useplatformtick yes
bcdedit /set useplatformclock false
bcdedit /deletevalue useplatformclock
![](https://img.ixbt.site/live/images/original/07/17/73/2023/11/26/7248ae506a.png?w=877)
После перезагрузки ПК вы сразу почувствуете разницу в отклике Windows и плавности работы мыши. Однако, чтобы ещё сильнее ускорить работу компьютера, необходимо принудительно зафиксировать значения системного таймера TSC на минимальных значениях.
4. Выполним установку системной службы Windows, отвечающей за минимальное значение системного таймера.
![](https://img.ixbt.site/live/images/original/07/17/73/2023/11/24/2504a7bd92.png?w=877)
- Скачиваем и извлекаем папку архива в корень любого диска.
- Переходим в папку установщика и запускаем не от имени администратора файл Installer.bat.
- В появившемся окне выбираем желаемый таймер. Я советую 2 или 4.
- Дожидаемся окончания установки. (После установки не удалять папку установщика).
- Проверяем значение таймера, нажав 8.
- Если всё прошло успешно, то значение системного таймера будет равняться 0.5 мс.
![](https://img.ixbt.site/live/images/original/07/17/73/2023/11/24/22ebf61733.png?w=877)
Откат изменений
Если вы заметили отрицательный эффект от отключения системного таймера HPET, то удалите в реестре Windows запись GlobalTimerResolutionRequest и вновь включите «Высокоточный таймер событий» в «Диспетчере устройств». Не забыв удалить системную службу таймера и ввести в cmd следующие команды:
bcdedit /deletevalue disabledynamictick
bcdedit /deletevalue useplatformtick
Заключение
Вот, собственно, и всё! Всего за пару не хитрых шагов мы исправили оплошность корпорации Microsoft, вернув себе классическое поведение системного таймера Windows, существенно ускорив работу приложений и игр. Не говоря уже о самой ОС. Уважайте свободу, используйте только проверенное ПО и ни в коем случае не позволяйте компаниям диктовать вам свои условия. С вами был Павел. Ещё увидимся!
![](https://img.ixbt.site/live/images/original/07/17/73/2023/11/24/04e5c8558b.png?w=877)
Обновление
Я провёл дополнительное тестирование в новых играх, используя Windows 10 версии 22H2 (1945.3636). И могу с уверенностью утверждать, что принудительное отключение высокоточного системного таймера HPET позволяет добиться лучшей производительности не только в старых, но и в новых играх. Например, дважды прогоняя встроенный бенчмарк Cyberpunk 2077, отчётливо видна разница в минимальном и среднем FPS. Не говоря уже про отсутствие эффекта «Желе». Миф подтверждён: HPET следует принудительно отключать для максимальной плавности в играх и рабочем ПО!
Источник: hdqwalls.com
157 комментариев
Добавить комментарий
https://www.mediafire.com/file/kk7v8e65vqvrzvd/prerivania+(2).reg
https://www.mediafire.com/file/pc14y0cw3inyhdw/STRservice+Install+3+(1).zip
Жаль недавним пользователям не даёт повышать рейтинг автора…
На 5800X3D фпс в тесте киберпанк в 11 винде — немного подрос
Я, конечно, киберкатлет тоже не особо, но не стал бы оскорблять их таким сравнением
Ну и к сожалению результат скорее отрицательный. ) Win11, 13700k, 32@7400, RTX2070. Talos Principle 2 — 4K, DLSS, High: 42-45FPS до, 37-40FPS после.
https://www.youtube.com/watch?v=s03MJwEbgRA
А всё остальное спокойно работает на операционных системах с яйцами пингвина
Откуда вы эту ересь берете?
HPET ON=Желе.
https://www.xbitlabs.com/how-to-get-better-latency-in-windows/
Не удается открыть данные конфигурации загрузки.
Отказано в доступе.
c:\Windows\System32>bcdedit /set useplatformtick yes
Не удается открыть данные конфигурации загрузки.
Отказано в доступе.
C:\Windows\system32>bcdedit /set disabledynamictick yes
Операция успешно завершена.
C:\Windows\system32>bcdedit /set useplatformtick yes
Операция успешно завершена.
Спасибо. ))
https://photo.sibnet.ru/upload/imggreat/17009136047618111.jpg
Видимо, какие-то нюансы всё-таки есть. Да и у буржуев есть немало научных статей, утверждающих, что под виндой этот таймер проблемный.
https://photo.sibnet.ru/upload/imggreat/17009161148518111.jpg
https://photo.sibnet.ru/upload/imggreat/17009163655418111.jpg
Большое спасибо. ))
А если я такую настройку сделаю, разницу замечу или можно не дергаться?
Задачи: инет, офис, 2D-графика (не много), VS/VSCode, IntellijIDEA, (C++, Python, Kotlin, Go). Программирую для души.
Стоит ковырять систему?
Основной ноут на i12500H 16/512. Его ковырять не вижу смысла — отлично со своими задачами справляется.
А вот второй 14" на Celeron 4020 4/SSD 256+eMMC 64 — явный тормоз. Так что даже чуть-чуть ускорить и то будет польза…
Тормоз потому, что это Атом, 2 ядра 2 потока.
Turbo Speed:
2.8 GHz
Для работы у меня другая машина.
Нельзя что-то нее требующее аутентификации, ну или хотя бы ссылку на гугл
https://www.mediafire.com/file/kk7v8e65vqvrzvd/prerivania+(2).reg
https://www.mediafire.com/file/pc14y0cw3inyhdw/STRservice+Install+3+(1).zip
Лично я отчётливо вижу падение среднего fps. чяднт?
На скриншоте и в файле GlobalTimerResolutionRequests
Где правильно?????????????
Удалите сервис (через тот же батник) — папка удалится.
ЗЫ:
Применил «улучшающий твик». В Superposition получил 45 FPS. Даже при открытии браузерной игры мыша рывками пошла.
Отменил твик и вернул все назад как было — Superposition выдал положенные 60.
Где то на пару фпс лучше, где то так же, а где хуже, на глаз все так же.
Ничего не отключаю.
https://youtu.be/U1c-Poax6ng?si=EcUjAdzIgl6ivkS5
Но больше чем уверен, что на практике, без монимторинга в углу ты ничего не заметишь.
Из ветки Ryzen 3x00 на оверах
Не удается открыть данные конфигурации загрузки.
Отказано в доступе.»
Как с этим бороться?
Перезагрузил. И… Никаких изменений не заметил. Цифры теста такие же и остались.
Наверное, у меня ноут не настолько сильно загружен, чтобы разницу увидеть…
ClockRes v2.0 — View the system clock resolution
Copyright © 2009 Mark Russinovich
SysInternals — www.sysinternals.com
Maximum timer interval: 15.625 ms
Minimum timer interval: 0.500 ms
Current timer interval: 1.000 ms
.
. If service is installed correctly
. current timer should read 0.500 ms
я скачал TimerResolution там принудительно ставится 0.500
Решил снова включить ничего не поменялось хотя до этого всё было хорошо
Теперь даже при выключенном или включенном ФПС низкий, хз что делать
также целостность винды проверить командой
p.s запускал не от админа
Может что-то из перечисленного поможет?
не меняется на 0.500
почему?
Люди, подскажите как и где это менять!?
Если удалить путь, то значение возвращается в дефолтное. Поправьте если я не прав.
bcdedit /set disabledynamictick yes (выключает динамический тик)
bcdedit /set useplatformtick yes (включает RTC тик, который не динамический тик)
bcdedit /set useplatformclock false (отключает HPET, хотя уже по умолчанию стоит TSC clock)
bcdedit /deletevalue useplatformclock (удаляет прошлую запись и переводит в useplatformclock к значению по умолчанию, т.е. HPET-disable, TSC-enable)
По крайней мере так в 23H2.
Если все верное, что я написал, то зачем дублировать.
Достаточно будет на дефолтном BCD выполнить:
bcdedit /set useplatformtick Yes (чтобы включить RTC тик, который статичный), а вместо HPET уже работает TSC.
При установке С# или C++ версий в STRservice Install 3 на Ryzen 5800x / 6900XT (Windows 11 Enterprise IOT) рисует:
Current Timer Interval: 1ms
— Изначально пробовал 2 вариант — показало 1ms;
— Удалил 2 вариант и поставил 4 — показало ту же 1ms.
Если я не ошибаюсь, Timer Bench 1.5 показал уменьшение максимального Frame Time c 30 до 4.
Однако, Current Timer Interval 0.5 не рисует.
Подскажите, пожалуйста, в чём может быть дело. Спасибо!
Вот ссылка на Результаты (Google Фото): https://photos.app.goo.gl/cd26Q4sAMnbVetZT6
1) какую лучше версию для моей конфигурации установить;
2) я изменил название папки с «STRservice Install 3» (лежит она в корне на С:\) — критично ли это;
3) параметр свойств для SetTimerResolutionService.exe «от Администратора» сделать до установки / запуска или после;
4) батник может всё же от Администратора тоже запускать.
Большое спасибо!
Ничем не отличаются, это одна реализация на разных ЯП. Версия на C++ потребляет меньше всех, но требует VC Redicst 2010. Все остальные привязаны к NET. Fraemwork.
Нет, но избегайте кириллицы.
Попробуйте и так и так. Windows 11 весьма паршивая ОС.
Смотрите предыдущий ответ.
Попробовал разное — вот что из этого получилось:
— при запуске Батника «от Администратора» — установка не производится — файл не создаётся и командная строка, соответственно, рисует, что файл не найден;
— при выставлении параметра свойств для установочных SetTimerResolutionService.exe «от Администратора» в подпапках — ничего не меняется, Current Timer Interval — 1ms, и это, оказывается, в моменте. Если несколько раз подёргать «check the current resolution», то в большинстве запросов сразу после установки он показывается как максимальный 15.625ms, а иногда — 1ms;
— пока писал сообщение решил многочисленными запросами подёргать «check the current resolution» — ни разу не показал 15.625, всегда 1ms… Это какая-то шутка :D;
— добавление параметра «от Администратора» для! установленного SetTimerResolutionService.exe ничего не меняет, та же 1ms.
Можете что-то посоветовать?
Как вообще понимать такое поведение и результат?
Спасибо!
Актуально для процессоров Ryzen и Intel с миниядрами. Для остальных конфигураций, HPET лучше не трогать!
Введите команды из инструкции. Проверьте FPS в любом популярном игровом бенчмарке.
Если не заметите разницы, то откатите представленными командами выше и вновь введите bcdedit /enum.
У меня 2080 ti и Quest 3, подключаю через кабель type-c/type-c напрямую в virtual link port на видеокарте. Крайний раз, драйвера устанавливал при помощи NVClean, отключив Hdcp и ещё включив MSI line. Через Msi tool 3 удостоверился что всё включено ( MSI line ), выставил режим High для видеокарты. Также USB type c порт ( Virtual link ) имеет MSI line строку ( минус 14 или около того ), на этом порте тоже можно ставить режим High или не обязательно? Я к тому, что это High режим он получается даст ещё меньше задержки при передаче данных?
Если знаете, прокомментируйте пожалуйста.
Добавить комментарий