Системный таймер windows 10 что это

Осмысленная настройка опции HPET в Windows 10 может значительно влиять на увеличение или уменьшение производительности вашей системы в играх и работе.

Содержание

  1. Как ускорить компьютер в играх? Отключите одну настройку
  2. Что такое HPET?
  3. Тестирование и сравнение
  4. Как отключить/включить HPET?
  5. 1. Через командную строку Windows
  6. Через диспетчер устройств
  7. Через сторонние твикеры/бенчмарки
  8. Бонусом
  9. Как установить таймер выключения Windows
  10. Как поставить компьютер на таймер с помощью команды «Выполнить»
  11. Как создать ярлык таймера выключения Windows 10
  12. Как выключить компьютер по таймеру с помощью планировщика Windows
  13. Автовыключение компьютера Windows с помощью сторонних программ
  14. Программа PowerOff Timer
  15. Программа Shutdown
  16. Заключение
  17. Системный таймер в Windows: большое изменение
  18. Прерывания таймера и смысл их существования
  19. Десятилетия безумия
  20. timeGetTime
  21. Новая недокументированная реальность
  22. Научный эксперимент
  23. Последствия
  24. Как увеличить FPS в играх, отключив HPET?
  25. High Precision Event Timer (HPET) – высокоточный таймер событий
  26. Что будет если отключить HPET?
  27. Увеличится ли fps в играх и приложениях при отключении hpet?
  28. Безопасно ли отключать HPET?
  29. При отключении HPET могут ли быть проблемы в онлайн играх?
  30. Если, отключив HPET, увеличивается фпс, то зачем вообще его нужно включать? И зачем тогда он включен по умолчанию?
  31. Как отключить HPET?
  32. Способ 1. Через BIOS или UEFI
  33. Способ 2. Через командную строку
  34. Способ 3. Используя диспетчер задач Windows
  35. Нужно ли отключать HPET?
  36. Что значит HPET Mode? HPET mode 32 или 64 что выбрать?
  37. Внимание пользователей ноутбуков

Как ускорить компьютер в играх? Отключите одну настройку

Осмысленная настройка опции HPET в Windows 10 может значительно влиять на увеличение или уменьшение производительности вашей системы в играх и работе. Рассказываем, как проверить и оттюнить свой ПК.

kak uskorit kompyuter v igrah otklyuchite odnu nastrojku 12 04 20 23 49 58

Если количество кадров в секунду вас уже не устраивает, и посещают мысли, что пора бы менять видеокарту или процессор для улучшения производительности в играх — мысли эти, безусловно, правильные. Но для начала можно попробовать заняться оптимизацией настроек системы. Удивительно, но иногда они дают заметный результат. Хотя, тут, как это часто бывает в мире ПК, рецепт сработавший на одной конфигурации, стоит проверять затем на каждой конкретной — новый результат может оказаться немного иным.

Опытом настройки ПК и инструкциями мы делимся регулярно в нашем Telegram-канале. Сегодня расскажем про то, как удалось разогнать связку из процессора Intel Core i5-9600KF, материнской платы Asus Prime Z390-P и видеокарты Sapphire Pulse Radeon RX 5700 XT.

Впрочем, тут стоит ещё проверить, изначально, включена ли та самая настройка у вас или уже деактивирована по-умолчанию. Отдадим почести парням из PRO Hi-Tech, после видео которых мы решили провести этот эксперимент на своей системе и поделиться результатами с нашими читателями.

Что такое HPET?

Сегодня схема HPET интегрирована в чип южного моста. Если ранее можно было управлять HPET через BIOS, то современные версии уже в большинстве случаев не дают такой настройки. К старым операционным системам в данном случае стоит относить от Microsoft те, что вышли раньше Windows 7.

Может случиться, что HPET активна на аппаратном уровне и одновременно включена в Windows. Отключение её в системе может сказаться на производительности.

Тестирование и сравнение

Для проверки теории использовали встроенный бенчмарк Metro Exodus, выбрав Extreme-профиль настроек графики, DirectX11 и разрешение 1920×1080 пикселей. Слева направо результаты с выключенным параметром HPET и затем включённым.

kak uskorit kompyuter v igrah otklyuchite odnu nastrojku 13 04 20 13 43 19

kak uskorit kompyuter v igrah otklyuchite odnu nastrojku 13 04 20 13 43 22

Кроме того, прогнали тест в бенчмарке TimerBench 1.3.3.

HPET активна. Здесь уже для бенчмарка выбрали разрешение 3840×2160 пикселей.

kak uskorit kompyuter v igrah otklyuchite odnu nastrojku 13 04 20 13 47 10

kak uskorit kompyuter v igrah otklyuchite odnu nastrojku 13 04 20 13 47 12

kak uskorit kompyuter v igrah otklyuchite odnu nastrojku 13 04 20 13 47 15

Те же условия, но HPET деактивирована.

kak uskorit kompyuter v igrah otklyuchite odnu nastrojku 13 04 20 13 48 30

kak uskorit kompyuter v igrah otklyuchite odnu nastrojku 13 04 20 13 48 34

kak uskorit kompyuter v igrah otklyuchite odnu nastrojku 13 04 20 13 48 38

Как отключить/включить HPET?

Мы нашли 3 способа.

1. Через командную строку Windows

Запустите командную строку от имени администратора. Открываем меню пуск, набираем с клавиатуры «cmd», выбираем администраторский вариант.

Чтобы отключить введите команды:

bcdedit /set disabledynamictick yes

Чтобы заново включить используйте:

bcdedit /set disabledynamictick no

Через диспетчер устройств

Используем сочетание клавиш Win+Break, затем в открывшемся окне выбираем ссылку «Диспетчер устройств». В разделе «Системные устройства» находим «High Precision Event Timer» (Высокоточный таймер событий), открываем контекстное меню по клику правой кнопкой мыши и деактивируем устройство.

kak uskorit kompyuter v igrah otklyuchite odnu nastrojku 13 04 20 13 54 19

Через сторонние твикеры/бенчмарки

Мы использовали TimerBench 1.3.3, который позволяет управлять HPET через свой интерфейс. У вас тоже появится такая возможность, если решите проверить работу на своей системе и сравнить результаты до и после. Скачать приложение можно по ссылке.

Бонусом

Кроме того, у нас были ещё несколько статей об оптимизации системы для игр. Справедливость информации, описанной в них тоже стоит проверять для каждой конфигурации отдельно. Ознакомиться с ними можно по следующим ссылкам:

Тогда можно поддержать её лайком в соцсетях. На новости сайта вы ведь уже подписались? 😉

Или закинуть денег на зарплату авторам.

Или хотя бы оставить довольный комментарий, чтобы мы знали, какие темы наиболее интересны читателям. Кроме того, нас это вдохновляет. Форма комментариев ниже.

Что с ней так? Своё негодование вы можете высказать на zelebb@gmail.com или в комментариях. Мы постараемся учесть ваше пожелание в будущем, чтобы улучшить качество материалов сайта. А сейчас проведём воспитательную работу с автором.

Если вам интересны новости мира ИТ также сильно, как нам, подписывайтесь на наш Telegram-канал. Там все материалы появляются максимально оперативно. Или, может быть, вам удобнее «Вконтакте» или Twitter? Мы есть также в Facebook.

Источник

Как установить таймер выключения Windows

Как поставить компьютер на таймер с помощью команды «Выполнить»

Самый быстрый способ настроить автоотключение компьютера — воспользоваться встроенным инструментом Windows, который называется «Shutdown». Сделать это можно через встроенное системное меню «Выполнить».

После этого Windows также уведомит вас об отмене запланированного завершения работы.

Стоит отметить, что данный способ выключения компьютера по таймеру не очень удобен тем, что каждый раз при его запуске вам необходимо будет в уме конвертировать время в минуты или часы, а также можно легко запутаться при вводе трудно запоминаемой команды, что требует ее записи в отдельный текстовый файл для последующего копирования.

Чтобы этого избежать, проще всего заранее настроить несколько таких «выключателей» с помощью ярлыков на рабочем столе или для их хранения в отдельной папке.

Как создать ярлык таймера выключения Windows 10

Для создания команд выключения компьютера Windows 10 вы можете сделать множество таких ярлыков с различным временем запланированного выключения, а также дополнительно — один общий ярлык для отмены выключения, указав при его создании значение «C:WindowsSystem32shutdown.exe-a» в поле «Расположение объекта».

Как выключить компьютер по таймеру с помощью планировщика Windows

Еще один способ настроить автовыключение компьютера по расписанию — воспользоваться встроенным планировщиком заданий Windows.

Рассказываем, как настроить автоотключение:

Автовыключение компьютера Windows с помощью сторонних программ

Если вышеперечисленные способы кажутся вам неудобными или по какой-то причине для вас не подходят, тогда рекомендуем воспользоваться сторонними программами. Самый простой способ — установить бесплатные утилиты из магазина приложений Microsoft Store.

Перейдите в магазин Microsoft Store через меню «Пуск» вашего компьютера, набрав в поиске «Microsoft Store» или воспользуйтесь разделом Топ бесплатных приложений на сайте microsoft.com. Для скачивания и установки необходимых программ достаточно ввести в соответствующее поле на сайте слово «Shutdown» и выбрать одно из предложенных решений.

Программа PowerOff Timer

Одно из таких решений из магазина приложений Microsoft Store — утилита PowerOff Timer.

Таймер выключения питания позволяет выключить/перезагрузить или перевести компьютер в спящий режим в определенное время. При назначении автоотключения таймер отключения питания будет свернут в системном трее Windows и продолжит работу в фоновом режиме. Если вы щелкните правой кнопкой мыши на его значке, открывшееся меню позволит вам немедленно отменить или изменить время завершения работы одним щелчком мыши.

Для установки программы перейдите на сайт microsoft.com и нажмите на кнопку «Получить» рядом с обзором программы PowerOff Timer. Сайт перенаправит вас в магазин приложений Microsoft Store.

После перехода в магазин приложений нажмите на кнопку «Получить» и дождитесь, пока приложение скачается и установится на ваш компьютер.

Если после установки ярлык приложения не появился на рабочем столе вашего компьютера, вы можете самостоятельно найти таймер сна Windows в меню «Пуск» и отправить его ярлык на рабочий стол, открыв выпадающее меню программы с помощью правой кнопки мыши и выбрав соответствующий пункт «Создать ярлык».

Программа Shutdown

Еще одно решение для автовыключения компьютера из магазина приложений Microsoft Store — бесплатная утилита Shutdown. Программа имеет интуитивно понятный интерфейс и выделяется на фоне конкурентов ярким визуальным оформлением.

Отличительной особенностью программы также является полное управление с помощью мыши без использования клавиатуры. Просто передвиньте ползунок управления программы на требуемый уровень и выберите одно из нужных действий: «Выключение», «Сон» или «Перезагрузка».

Для быстрого доступа к программе вы также можете создать ярлык программы на рабочем столе или закрепить ее на панели задач Windows.

Заключение

Функция автоотключения компьютера может оказаться полезной для самых разных задач. Неважно, скачиваете ли вы сериалы по ночам или хотите ограничить время, проведенное ребенком в компьютерной игре, — теперь вы знаете, как сделать это проще всего и всегда сможете самостоятельно настроить таймер выключения Windows.

Источник

Системный таймер в Windows: большое изменение

Поведение планировщика Windows значительно изменилось в Windows 10 2004 без каких-либо предупреждений и изменения документации. Вероятно, это поломает несколько приложений. Такое происходит не первый раз, но эта перемена посерьёзнее.

Если вкратце, то вызовы timeBeginPeriod из одного процесса теперь влияют на другие процессы меньше, чем раньше, хотя эффект ещё присутствует.

Думаю, что новое поведение — это по сути улучшение, но оно странное, и заслуживает того, чтобы быть задокументированным. Честно предупреждаю — у меня только результаты собственных экспериментов, поэтому могу только догадываться о целях и каких-то побочных эффектах этого изменения. Если какие-либо из моих выводов неверны, пожалуйста, дайте знать.

Прерывания таймера и смысл их существования

image loaderВо-первых, немного контекста о дизайне операционных систем. Желательно, чтобы программа могла засыпать, а позже — просыпаться. На самом деле это не следует делать очень часто — потоки обычно ждут событий, а не таймеров, — но иногда необходимо. Итак, в Windows есть функция Sleep — передайте ей желаемую продолжительность сна в миллисекундах, и она разбудит процесс:

Стоит подумать о том, как это реализуется. В идеале при вызове Sleep(1) процессор переходит в спящий режим. Но как операционная система разбудит поток, если процессор спит? Ответ — аппаратные прерывания. ОС программирует микросхему — аппаратный таймер, который затем запускает прерывание, которое пробуждает процессор, и ОС затем запускает ваш поток.

Функции WaitForSingleObject и WaitForMultipleObjects также имеют значения таймаута, и эти таймауты реализуются с использованием того же механизма.

Если много потоков ждут таймеров, то ОС может запрограммировать аппаратный таймер на индивидуальное время для каждого потока, но это обычно приводит к тому, что потоки просыпаются в случайное время, а процессор так нормально и не засыпает. Энергоэффективность CPU сильно зависит от времени его сна (нормальное время от 8 мс), и случайные пробуждения тому не способствуют. Если несколько потоков синхронизируют или объединяют свои ожидания таймера, то система становится более энергоэффективной.

Существует множество способов объединения пробуждений, но основной механизм в Windows — глобальное прерывание таймера, тикающего с постоянной скоростью. Когда поток вызывает Sleep(n), то ОС запланирует запуск потока сразу после первого прерывания таймера. Это означает, что поток может в конечном итоге проснуться немного позже, но Windows — это не ОС реального времени, она вообще не гарантирует определённое время пробуждения (в это время ядра процессора могут быть заняты), поэтому вполне нормально проснуться чуть позже.

Интервал между прерываниями таймера зависит от версии Windows и железа, но на всех моих машинах он по умолчанию составлял 15,625 мс (1000 мс/64). Это означает, что если вызвать Sleep(1) в какое-то случайное время, то процесс будет разбужен где-то между 1,0 мс и 16,625 мс в будущем, когда сработает следующее прерывание глобального таймера (или через одно, если это сработало слишком рано).

Короче говоря, природа задержек таймера такова, что (если только не используется активное ожидание процессора, а его, пожалуйста, не используйте) ОС может пробуждать потоки только в определённое время с помощью прерываний таймера, а Windows использует регулярные прерывания.

Некоторым программам не подходит такой большой разброс в задержках ожидания (WPF, SQL Server, Quartz, PowerDirector, Chrome, Go Runtime, многие игры и т. д.). К счастью, они могут решить проблему с помощью функции timeBeginPeriod, которая позволяет программе запросить меньший интервал. Есть также функция NtSetTimerResolution, которая позволяет устанавливать интервал меньше миллисекунды, но она редко используется и никогда не требуется, поэтому не буду больше её упоминать.

Десятилетия безумия

Вот сумасшедшая вещь: timeBeginPeriod может вызвать любая программа, и она изменяет интервал прерывания таймера, при этом прерывание таймера — это глобальный ресурс.

Представим, что процесс А находится в цикле с вызовом Sleep(1). Это неправильно, но это так, и по умолчанию он просыпается каждые 15,625 мс, или 64 раза в секунду. Затем появляется процесс B и вызывает timeBeginPeriod(2). Это заставляет таймер срабатывать чаще, и внезапно процесс А просыпается 500 раз в секунду вместо 64-х раз в секунду. Это безумие! Но именно так всегда работала Windows.

В этот момент, если бы появился процесс C и вызвал timeBeginPeriod(4), это ничего бы не изменило — процесс A продолжал бы просыпаться 500 раз в секунду. В такой ситуации правила устанавливает не последний вызов, а вызов с минимальным интервалом.

Таким образом, вызов timeBeginPeriod от любой работающей программы может установить глобальный интервал прерывания таймера. Если эта программа завершает работу или вызывает timeEndPeriod, то вступает в силу новый минимум. Если одна программа вызывает timeBeginPeriod(1), то теперь это интервал прерывания таймера для всей системы. Если одна программа вызывает timeBeginPeriod(1), а другая timeBeginPeriod(4), то всеобщим законом становится интервал прерывания таймера в одну миллисекунду.

image loaderЭто имеет значение, потому что высокая частота прерываний таймера — и связанная с ней высокая частота планирования потоков — может впустую расходовать значительную мощность CPU, как обсуждалось здесь.

Одним из приложений, которому необходимо планирование на основе таймера, является веб-браузер. В стандарте JavaScript есть функция setTimeout, которая просит браузер вызвать функцию JavaScript через несколько миллисекунд. Для реализации этой и других функций Chromium использует таймеры (в основном WaitForSingleObject с таймаутами, а не Sleep). Это часто требует повышенной частоты прерываний таймера. Чтобы это не слишком сказывалось на времени автономной работы, Chromium недавно модифицировали таким образом, чтобы при работе от батареи частота прерываний таймера не превышала 125 Гц (интервал 8 мс).

timeGetTime

Функция timeGetTime (не путать с GetTickCount) возвращает текущее время, обновлённое прерыванием таймера. Процессоры исторически не очень хороши в ведении точного времени (их часы специально колеблются, чтобы не служить FM-передатчиками, и по другим причинам), поэтому для поддержания точного времени CPU часто полагаются на отдельные генераторы тактовых импульсов. Чтение с этих чипов стоит дорого, поэтому Windows поддерживает 64-битный счётчик времени в миллисекундах, обновляемый прерыванием таймера. Этот таймер хранится в общей памяти, поэтому любой процесс может дёшево считывать оттуда текущее время, не обращаясь к генератору тактовых импульсов. timeGetTime вызывает ReadInterruptTick, который по сути просто считывает этот 64-битный счётчик. Все просто!

Поскольку счётчик обновляется прерыванием таймера, мы можем его отследить и найти частоту прерывания таймера.

Новая недокументированная реальность

С выпуском Windows 10 2004 (апрель 2020 года) некоторые из этих механизмов слегка изменились, но очень запутанным образом. Сначала появились сообщения, что timeBeginPeriod больше не работает. На самом деле всё оказалось куда сложнее.

Первые эксперименты дали смешанные результаты. Когда я запустил программу с вызовом timeBeginPeriod(2), то clockres показал интервал таймера 2,0 мс, но отдельная тестовая программа с циклом Sleep(1) просыпалась около 64 раз в секунду вместо 500 раз, как в предыдущих версиях Windows.

Научный эксперимент

Тогда я написал пару программ для изучения поведения системы. Одна программа (change_interval.cpp) просто сидит в цикле, вызывая timeBeginPeriod с интервалами от 1 до 15 мс. Она удерживает каждый интервал в течение четырёх секунд, а затем переходит к следующему, и так по кругу. Пятнадцать строк кода. Легко.

Другая программа (measure_interval.cpp) запускает несколько тестов для проверки, как её поведение изменяется при изменении change_interval.cpp. Программа отслеживает три параметра.

image loader

Это означает, что timeBeginPeriod по-прежнему устанавливает интервал глобального таймера во всех версиях Windows. Из результатов timeGetTime() можно сказать, что прерывание срабатывает с такой скоростью по крайней мере на одном ядре процессора, и время обновляется. Обратите также внимание, что 2.0 в первой строке для 1909 года тоже было 2.0 в Windows XP, затем 1.0 в Windows 7/8, а затем вроде опять вернулось к 2.0?

Однако поведение планировщика резко меняется в Windows 10 2004. Ранее задержка для Sleep(1) в любом процессе просто равнялась интервалу прерывания таймера, за исключением timeBeginPeriod(1), давая такой график:

image loader

В Windows 10 2004 соотношение между timeBeginPeriod и задержкой сна в другом процессе (который не вызывал timeBeginPeriod) выглядит странно:

image loader

Точная форма левой части графика неясна, но она определённо уходит в противоположную сторону от предыдущего!

Последствия

Как было указано в обсуждении reddit и hacker-news, вероятно, левая половина графика представляет собой попытку максимально точно имитировать «нормальную» задержку, учитывая доступную точность глобального прерывания таймера. То есть с интервалом прерывания 6 миллисекунд задержка происходит примерно на 12 мс (два цикла), а с интервалом прерывания 7 миллисекунд — примерно на 14 мс (два цикла). Однако измерение фактических задержек показывает, что реальность ещё более запутанна. При прерывании таймера, установленном на 7 мс, задержка Sleep(1) в 14 мс даже не самый распространённый результат:

image loader

Некоторые читатели могут обвинить случайный шум в системе, но когда частота прерывания таймера 9 мс и выше, шум равен нулю, так что это не может быть объяснением. Попробуйте сами запустить обновлённый код. Особенно противоречивыми кажутся интервалы прерывания таймера от 4 мс до 8 мс. Вероятно, измерения интервалов следует выполнять с помощью QueryPerformanceCounter, поскольку на текущий код беспорядочно влияют изменение правил планирования и изменение точности таймера.

Всё это очень странно, и я не понимаю ни логики, ни реализации. Может, это и ошибка, но я в этом сомневаюсь. Думаю, что за этим стоит сложная логика обратной совместимости. Но самый эффективный способ избежать проблем совместимости — это документировать изменения, желательно заранее, а здесь правки сделаны без какого-либо уведомления.

Это не повлияет на большинство программ. Если процесс хочет более быстрое прерывание таймера, то он сам должен вызвать timeBeginPeriod. Тем не менее, могут возникнуть следующие проблемы:

Источник

Как увеличить FPS в играх, отключив HPET?

Немногие знают, как можно увеличить FPS в играх, отключив HPET. В это статье разберём, что такое HPET и что будет, если отключить эту функцию, а также, безопасно ли это.

High Precision Event Timer (HPET) – высокоточный таймер событий

HPET – это тип таймера, который используется в ПК. Это непрерывно работающий таймер, который постоянно отсчитывает, т.е. работает не как одноразовое устройство, которое отсчитывает до нуля, вызывает одно прерывание и затем останавливается. Поскольку HPET сравнивает фактическое значение таймера и запрограммированное целевое значение на равенство, а не на «больше или равно», прерывания могут быть пропущены, если целевое время уже прошло, когда значение компаратора записывается в регистр микросхемы. Схема HPET в современных ПК интегрирована в чип южного моста.

Отложенный вызов процедур (задержка DPC) позволяет программам быстро помещать действия в очередь в планировщике процессора, которые через какое-то время будут обработаны.

Например, отрисовка видеокадра (video frame) на экране может быть выполнена, как только данные будут готовы и время кадра (frame time) достигнуто. Конечно, всё это делается за какие-то доли секунд и не замечается многими людьми.

Что будет если отключить HPET?

Отключение HPET позволяет осуществлять неограниченный ввод-вывод и приводит к очень сырому и чрезвычайно отзывчивому соединению между вами и вашей машиной. Это также удаляет микро заикания и подвисания экрана.

1000 секунда = 1 миллисекунда
HPET ON: задержка между 100-150 мс
HPET OFF: задержка между 5-15 мс

Выходит, что с включённой функцией таймера HPET происходит потеря 3-4 кадра в секунду, соответственно, с выключенной функцией снижается вероятность «зависания».

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

Увеличится ли fps в играх и приложениях при отключении hpet?

Отключение этого параметра (даже через командную строку) может существенно повлиять на производительность в играх и приложениях. В некоторых случаях ваш FPS может сильно увеличиться (например, с 30 до 100).

Безопасно ли отключать HPET?

Да, это абсолютно безопасно. Это ничего не повредит и не приведёт к нежелательным побочным эффектам. Вы всегда сможете вернуть всё обратно.

Есть мнение, что даже необходимо отключить HPET, так как компьютер не использует этот аппаратный компонент активно и не делает ничего полезного, он просто сидит и тормозит процессор. Сняв вес с вашего процессора, он будет быстрее, и ваш компьютер в целом будет работать более плавно, что будет в основном заметно в играх, но также и в любой задаче, которую вы выполняете на своём компьютере. Это улучшит работу ПК, не оказывая негативного влияния.

При отключении HPET могут ли быть проблемы в онлайн играх?

К сожалению, вас могут заподозрить в использовании читов (возможно, но не факт), поэтому будьте осторожны, отключайте на свой страх и риск.

Если, отключив HPET, увеличивается фпс, то зачем вообще его нужно включать? И зачем тогда он включен по умолчанию?

Это было лучше для более старых ОС, для звуковых карт PCI с низкой задержкой или интерфейсов захвата и т. д. Для игр это увеличивает накладные расходы и, как правило, даёт меньше FPS.

Как отключить HPET?

Способ 1. Через BIOS или UEFI

Очень часто таймер можно отключить через BIOS или UEFI, найдя, к примеру, функцию HPET Support или High Precision Event Timer (название может немного отличаться, в зависимости от вашей материнской платы):

lazy placeholder

lazy placeholder

Способ 2. Через командную строку

В Windows 10 также можно отключить HPET через командную строку от имени администратора после ввода следующих команд:

bcdedit /deletevalue useplatformclock
bcdedit /set disabledynamictick yes

Чтобы внести изменения необходимо перезагрузить компьютер.

Если вы хотите повторно включить HPET, используйте следующие команды:

bcdedit /set useplatformclock true
bcdedit /set disabledynamictick no

Способ 3. Используя диспетчер задач Windows

Отключить HPET можно воспользовшись диспетчером устройств, найдя таймер в системных устройствах и отключив, зайдя в свойства:

lazy placeholder

lazy placeholder

Нужно ли отключать HPET?

Я никому не говорю, нужно ли вам включить или отключить HPET, так как это может иметь разные эффекты в зависимости от вашего оборудования. Конечно, я не гарантирую, что это что-то изменит для всех и приведёт к колоссальному росту производительности. В некоторых случаях ваша система с отключением HPET можно начать работать менее стабильно (либо могут появиться дополнительные проблемы), а в некоторых более отзывчиво, поэтому нужно наблюдать за этим, если вы решите отключить таймер. В любом случае необходимо разумно отключать или включать какие-либо параметры или функции и следить за тем, как после этого стал работать ваш ПК, это касается всего, не только HPET.

Что значит HPET Mode? HPET mode 32 или 64 что выбрать?

lazy placeholder

Если вы включили таймер, то в некоторых случаях вы сможете выбрать mode 32-bit или 64-bit, данная опция всего-навсего уточняет режим работы счётчиков: 32-разрядный или 64-разрядный. Если у вас установлена 32-разрядная система, то выбирайте 32-bit mode, а если 64-разрядная, то 64-bit mode.

Внимание пользователей ноутбуков

Отключение HPET, уменьшение разрешения таймера в Windows 10 приведет к увеличению расхода батареи. А как сохранить батарею ноутбука и увеличить продолжительность его работы читайте в моей статье.

Источник

Как в Windows 10 можно отключить высокоточный таймер событий или HPET

HPET – элемент компьютера, который располагается на южном мосту материнской платы. Он представляет собой таймер обратного отчета, призванный оптимизировать синхронизацию между ПК и ПО. В то же время все чаще встречается мнение о том, что этот компонент не нужен, и пользователи ищут способ, как отключить HPET в операционной системе Windows 10. Деактивацию элемента можно выполнить самостоятельно, но для начала нужно понять, что за этим последует.

Что будет, если отключить HPET

Рекомендации в отключении HPET изначально появились на форумах, посвященных видеоиграм. Авторы публикаций приводили доказательства того, что после деактивации компонента увеличивается частота кадров в играх, да и сам интерфейс визуально становится более плавным.

screenshot_1

Стоит отметить, что слова не расходятся с делом, и отключение HPET действительно приводит к положительным изменениям в функционировании ПК. Но зачем тогда эта функция по умолчанию активируется производителем? Таймер изначально предназначался для старых операционных систем (Windows 7 и младше), в которых не была решена проблема задержки операций на программном уровне. В Windows 10 подобный вопрос не встает, а потому нет особого смысла в использовании HPET.

Также необходимо осветить вопрос безопасности отключения таймера. В большинстве случаев его деактивация сказывается на работе компьютера положительно. Однако все будет зависеть от настроек, внесенных производителем, а потому есть вероятность, что отключение компонента приведет к потере FPS, а не увеличению этого показателя.

screenshot_2

Как отключить?

Несмотря на то, что HPET является аппаратным компонентом компьютера, для его отключения не нужно разбирать устройство или обращаться в сервисный центр. Операция выполняется встроенными средствами ОС. Вы можете выбрать один из представленных ниже вариантов и произвести деактивацию в соответствии с алгоритмом.

Через BIOS или UEFI

BIOS (UEFA) – виртуальная среда компьютера, существующая параллельно с операционной системой. Обычно ее используют для решения проблем, связанных с работой ОС, но в то же время она помогает отключить HPET. Для выполнения операции вам потребуется:

  • Перезагрузить компьютер.
  • Во время следующего включения зажать клавишу «F2» или «Del» (зависит от производителя материнской платы).

screenshot_3

  • После попадания в BIOS перейти в раздел «Power Management Setup».
  • Отключить компонент «HPET Support».

screenshot_4

Вообще, названия пунктов меню, а также опции, отвечающей за работу таймера, может отличаться в зависимости от версии BIOS. Как бы то ни было, вам необходимо искать упоминание HPET. Там, где оно присутствует, выполняется та самая деактивация, о которой идет речь.

Командная строка

Откровенно говоря, отключение через BIOS – далеко не самый удобный вариант решения проблемы, поскольку владелец компьютера должен иметь хотя бы минимальное представление о работе вспомогательного меню. Поэтому можно рассмотреть альтернативный метод деактивации таймера, который предполагает использование стандартного интерфейса Windows 10:

  • Щелкните ПКМ по значку «Пуск».
  • Запустите Командную строку с правами администратора.

screenshot_6

  • Введите запрос «bcdedit /deletevalue useplatformclock».
  • Нажмите на клавишу «Enter».
  • Аналогичным образом обработайте команду «bcdedit /set disabledynamictick yes».

screenshot_7

Не исключено, что деактивация таймера скажется негативным образом на работе компьютера. Это стандартная ситуация, напрямую зависящая от производителя устройства и предусмотренных им настроек. Поэтому не лишним будет отметить, как повторно активировать HPET. Операция также выполняется через Командную строку, но на этот раз пользователю требуется обработать другие запросы, а именно:

  • bcdedit /set useplatformclock true;

screenshot_8

  • bcdedit /set disabledynamictick no.

screenshot_9

Команды нужно вводить поочередно, нажимая после каждой на клавишу «Enter». Также по завершении операции рекомендуется перезагрузить компьютер, чтобы изменения вступили в силу.

Применение Диспетчера задач

Если способ с применением Командной строки тоже покажется вам сложным, в запасе останется самый простой вариант. В данном случае предлагается обратиться к одному из диспетчеров Windows 10, а точнее – к «Диспетчеру устройств»:

  • Кликните ПКМ по значку «Пуск».
  • Запустите «Диспетчер устройств».

screenshot_10

  • Раскройте вкладку «Системные устройства».
  • Найдите в списке «Высокоточный таймер событий» и откройте его свойства.

screenshot_11

  • Нажмите на кнопку «Отключить».

Как в Windows 10 можно отключить высокоточный таймер событий или HPET

Аналогичным способом вы сможете повторно активировать компонент, если вдруг появится такая необходимость. Кроме того, не забывайте перезагружать компьютер после внесения изменений в настройки устройства.



Для работы проектов iXBT.com нужны файлы cookie и сервисы аналитики.
Продолжая посещать сайты проектов вы соглашаетесь с нашей
Политикой в отношении файлов cookie

С популяризацией соревновательных игр геймеры со всего мира стали искать нетипичные способы превзойти оппонента. Потому как давно известно, что личностные качества и опыт — это лишь малая часть, влияющая на возможность победы. В этом материале вы узнаете, как оптимизировать Windows для получения идеальной плавности, чтобы стать быстрее всех в соревновательных играх!

Содержание

  • Внимание!
  • Актуальность драйверов
    • Установка и обновление
  • Геймерская настройка Windows
    • Мышь и клавиатура
      • Cкрытые настройки реестра
      • Сглаживание мыши и отклик наведения
      • Скорость курсора
      • Приоритет исполнения и задержка ввода
    • Перенос исполнения ввода
    • DPC Latency
      • Лишнии устройства и задержка
      • Звук
      • Электропитание
      • Парковка ядер
      • Твик приоритета прерывания
    •  
  • Meltdown/Spectre/Zombieload
  • Пинг
  • Системные таймеры и Hpet
  • Заключение

Внимание!

Гайд рассчитан на создание игровой системы с минимальным внесением изменений в работу ОС, так что вы можете без опасений что-то сломать, следовать всем рекомендациям.

Актуальность драйверов

Нельзя приступать к оптимизации, не будучи уверенным в актуальности драйверов нашего ПК. Ведь известно, что от свежести драйверов зависит не только правильность работы устройства, но и производительность всей системы в целом.

Установка и обновление

Индексация оборудования
Установка
Результат
  1. Скачиваем и устанавливаем желаемую версию Snappy Driver Installer.
  2. Извлекаем файлы архива в любую папку.
  3. Запускаем файл SDI_x64_R2000.exe (64-bit) или SDI_R2201.exe (32-bit). (Желательно от имени администратора).
  4. Производим индексацию оборудования.
  5. Выполняем установку всего, что нашлось и перезагружаем ПК.

PS. Более подроно о установке драйвера и чем он является, вы всегда можете найти здесь.

После установки всех драйверов необходимо выполнить «правильную» найстройку устройств ввода и Windows. Что я имею в виду?

Геймерская настройка Windows

В современных версиях операционной системы Windows часто не учитывается геймерская направленность, потому как сама ОС изначально заточена для разных задач. Выполним по порядку базовые настройки ОС для геймера.

Мышь и клавиатура

Отключим мешающие алгоритмы поведения мыши для повышения точности её наводки и срабатывания в игре.

  1.  Нажимаем Win+R и в появившемся окне вводим команду control.
  2. В старой панели управления заходим в выделенные разделы.

Настройка клавиатуры
Настройка мыши
Настройка мыши

Снимаем галочки, что отвечают за акселерацию и лишние темы мыши, и повышаем скорость работы клавиатуры.

По идее, большинство гайдов на этом и заканчиваются. Но есть проблема. Даже выполнив все эти действия, мы не получим правильного перемещения нашего грызуна и желаемого отклика. Чтобы всё исправить, необходимо задействовать скрытые настройки в реестре.

Cкрытые настройки реестра

Вновь задействуем Win+R и вводим команду regedit. В появившемся окне поэтапно вносим изменения ниже. Правда если вам лень заниматься всей этой магией вручную, то вы всегда можете запустить этот файл (от администратора) в котором я уже прописал все настройки заранее.

Сглаживание мыши и отклик наведения
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USERControl PanelMouse]
"MouseSpeed"="0"
"MouseThreshold1"="0"
"MouseThreshold2"="0"

Эти параметры отключат повышенную точность указателя, когда скорость курсора увеличивается вслед за физическим увеличением скорости передвижения грызуна в руке. Зачем это нужно? При стандартных настройках мышка сама доводится до нужного объекта, если вы немного ошиблись или не довели. Для шутеров подобное поведение грызуна приносит большие проблемы с прицеливанием. Дополнительно советую также изменить параметр «MouseHoverTime»=«0» — это помогает убрать задержку при наводке на объекты в системе.

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USERControl PanelMouse]
"SmoothMouseXCurve"=hex:
  00,00,00,00,00,00,00,00,
  C0,CC,0C,00,00,00,00,00,
  80,99,19,00,00,00,00,00,
  40,66,26,00,00,00,00,00,
  00,33,33,00,00,00,00,00
"SmoothMouseYCurve"=hex:
  00,00,00,00,00,00,00,00,
  00,00,38,00,00,00,00,00,
  00,00,70,00,00,00,00,00,
  00,00,A8,00,00,00,00,00,
  00,00,E0,00,00,00,00,00

В Windows 10 существует старый баг, когда разница между физическим перемещением мыши и перемещением курсора зависит от масштабирования экрана. Чтобы исправить ситуацию, принудительно изменим параметры SmoothMouseXCurve и SmoothMouseYCurve, которые отвечают за ускорение мыши по горизонтали и вертикали в режиме масштабирования 1 к 1.

Скорость курсора
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USERControl PanelMouse]
"MouseSensitivity"="10"

Этот параметр отвечает за скорость перемещения курсора, его не рекомендуется изменять, ибо от него зависят многие параметры для расчёта движения мыши. Он всегда должен быть равен 10.

Приоритет исполнения и задержка ввода
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesmouclassParameters]
"MouseDataQueueSize"=dword:00000014

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceskbdclassParameters]
"KeyboardDataQueueSize"=dword:00000014

Параметры MouseDataQueueSize и KeyboardDataQueueSize отвечают за количество информации, которая может храниться в буфере драйвера мыши и клавиатуры. Чем меньше значение, тем быстрее новая информация будет обрабатываться. Принцип работы похож на очередь кадров в видеокарте, когда мы принудительно убираем фоновую подготовку очереди кадров, чтобы сразу получать настоящий. В нашем случае оптимальным значением будет 20.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesmouclassParameters]
"ThreadPriority"=dword:0000001f

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceskbdclassParameters]
"ThreadPriority"=dword:0000001f

Выставим обработку драйверов клавиатуры и мыши в режиме реального времени.

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USERControl PanelAccessibility]
"StickyKeys"="506"

[HKEY_CURRENT_USERControl PanelAccessibilityToggleKeys]
"Flags"="58"

[HKEY_CURRENT_USERControl PanelAccessibilityKeyboard Response]
"DelayBeforeAcceptance"="0"
"AutoRepeatRate"="0"
"AutoRepeatDelay"="0"
"Flags"="122"

Вновь отключим дополнительную задержку при нажатии клавиш мыши и клавиатуры, а также уберём залипание при двойном нажатии Shift.

Дополнительная часть самого муторного гайда подошла к концу. Переходим к следующему пункту настроек.

Перенос исполнения ввода

Вторым важным изменением, которое следует применить для мыши и клавиатуры — это выполнить перенос исполнения задач ввода с первого ядра CPU и активировать серверный режим опроса устройств (MSI). Зачем это нужно? Всё дело в задачах Windows, что обрабатываются первым ядром с устаревшим режимом прерывания. Такой режим работы устройства создаёт очередь исполнения и может вызывать задержки. 

Посмотреть что крутится на первом ядре, можно с помощью Latency Moon. Выполним перенос.

  1. Скачиваем и извлекаем файлы в любую папку.
  2. Запускаем файл MSI_util_v3.exe. (Желательно от имени администратора).
  3. Активируем режим MSI для, где есть надпись LineBased, Msi, MsX.
  4. Выставляем приоритет High для мыши.
  5. Применяем изменения (Apply) и перезагружаем ПК.

Таким нехитрым образом, мы задействовали серверный режим опроса устройств и немного прибавили плавности. Перейдём к переносу задачи с первого ядра.

  1. Скачиваем и извлекаем файлы.
  2. Запускаем файл intPolicy_x64.exe (Желательно от имени администратора).
  3. Находим в списке нужные устройства и кликаем пару раз. Если вышла ошибка, то это устройство поддерживает перенос.
  4. Переходим к редактированию через Set Mask и выделяем нужное ядро, применяем.
  5. Перезагружаем ПК.

Поздравляю! Если скука вас ещё не съела, то вы весьма сильны желанием стать быстрее всех. Шутка. Мы почти завершили редактирование параметров, влияющих на задержку ввода. Перейдём к DPC Latency.

DPC Latency

Чтобы не нагружать вас технической информацией, вам лишь следует знать, что чем ниже показатели DPC Latency, то тем выше плавность системы. Сравнить её можно с резким увеличением герцовки монитора. Фокус и состоит в том, что герцовка не увеличивается, а плавность прибавляется. Посмотреть свою задержку можно с помощью Latency Moon.

Лишнии устройства и задержка

Ранее я уже писал, какая Windows не геймерская ОС, которая так и ждёт, чтобы вставить очередную палку в колёса бедному геймеру. Система почему-то считает, что отключение устройства от питания или его затормаживание во время игры — это совершенно нормально. Отключим такое странное поведение и удалим лишние устройства.

  1. Заходим в диспетчер устройств.
  2. Вид, показать скрытые устройства.
  3. Удаляем все серые устройства из списка.
  4. Для всех остальных через правый клик убираем галочки в разделе управления.
  5. Перезагружаемся.

После перезагрузки вы сразу почувствуете увеличение плавности, так как система уже не будет заниматься управлением поведения наших устройств.

Звук

Переходя к теме звука, сто́ит отметить его весомую значимость в плане влияния на задержки ввода, так как всё, что выше 44100 Гц, начинает почему-то несоизмеримо грузить систему, если у вас нет отдельной звуковой карты. Я не знаю, связано ли это с усложнением синусоиды сигнала, но на технических форумах часто ссылаются на саму схему реализации звука в Windows. Ладно, всё это рассуждения, а нам пора переходить к исправлению проблемы.

  1. Переходим в старой панели управления во вкладку звук.
  2. Отключаем все неиспользуемые устройства, кроме вывода звука и микрофона.
  3. Через правый клик по активному устройству изменяем качество выводимого звука до 44100 Гц и аналогично у микрофона.
  4. Во вкладке звуки выставляем профиль без звука для отключения системных звуков Windows.

После данных измеений вы вновь должны ощутить прибавку в плавности.

Электропитание

Как я уже писал ранее, о Создатель, а это уже третий раз, что Windows ни разу не геймерская ОС и не заточена под нужды геймера. В настройках электропитания Windows содержатся механизмы, которые могут влиять на плавность и стабильность во время игровой сессии. К значимым механизмам, мешающих геймеру, можно отнести парковку ядер, настройки электросбережения, а также небольшие параметры, отвечающие за различные таймеры/функции, которые также влияют на DPC Latency.

Прежде чем приступать к исправлению, необходимо отредактировать параметры реестра для получения возможности изменения скрытых настроек. В этом нам поможет бесплатная утилита Power Settings Explorer.

  1. Скачиваем и извлекаем файлы.
  2. Запускаем файл PowerSettingsExplorer.exe (Желательно от имени администратора).
  3. Находим в списке USB3 Link Power Management, разрешить состояния снижения питания
     и NVIDIA Display Power Settings Technology (если у вас карта Nvidia).
  4. Снимаем галочки и переходим к редактированию схемы электропитания.

Переходя к схеме редактирования электропитания, желательно удалить все схемы, кроме «Высокая производительность».
Вводим в CMD команды:

powercfg -delete a1841308-3541-4fab-bc81-f71556f20b4a
powercfg -delete 381b4222-f694-41f0-9685-ff5bb260df2e

Параметры электропитания:

  • Жёсткий Диск — Отключать жёсткий диск через — Состояния (мин): 0 мин.
  • Internet Explorer — Частота таймера JavaScript — Значение: Максимальная производительность.
  • Параметры фона рабочего стола — Слайд-шоу — Значение: Приостановлено.
  • Параметры адаптера беспроводной сети — Режим энергосбережения — Значение: Максимальная производительность.
  • Сон — Сон после — Значение: Никогда.
  • Cон — Разрешить таймеры пробуждения — Значение: Никогда.
  • Параметры USB — Параметры временного отключения USB-порта — Значение: Запрещено.
  • Параметры USB — USB 3 Link Power Mangement — Значение: Off.
  • PCI Express — Управление питанием состояния связи — Значение: Откл.
  • Управление питанием процессора — Разрешить состояние снижения питания — Значение: Выкл.
  • Управление питанием процессора — Минимальное состояние процессора — Настройка: 100%.
  • Управление питанием процессора — Политика охлаждения системы — Значение: Активный.
  • Управление питанием процессора — Максимальное состояние процессора — Настройка: 100%.
  • Экран — Отключить экран через — Значение: Никогда.
  • Экран — Время ожидания до отключения экрана блокировки — Значение: 0 Мин.

Некоторые параметры могут отсутствовать или дополняться в зависимости от оборудования. Всё, что нам теперь осталось сделать со схемой электропитания — это отключить парковку ядер.

Парковка ядер

В Windows со времён Windows Vista, если я не ошибаюсь, существует механизм парковки ядер, который был призван обеспечить продление жизни ноутбуков путём отключения или снижения производительности ядер процессора. В игровых сессиях работа этого алгоритма может привести к падению FPS. Чтобы избежать этой проблемы, необходимо вновь лесть в реестр, но мы воспользуемся бесплатной утилитой Unpark-CPU.

  1. Скачиваем и извлекаем файлы.
  2. Запускаем файл UnparkCpu.exe (Желательно от имени администратора).
  3. Передвинем ползунок в правую сторону.
  4. Нажимаем Unpakr All и применить (Apply).
  5. Перезагружаем ПК.

С доведением до ума настроек электропитания мы закончили. Можно переходить к отключению заплаток процессора.

Твик приоритета прерывания
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlPriorityControl]
"IRQ8Priority"=dword:00000001

Это небольшой твик для установки повышенного приоритета прерывания. Вновь используем regedit или готовый файл.

Meltdown/Spectre/Zombieload

В своё время много шума наделало обнаружение уязвимостей для процессоров Intel и AMD, но ещё больший шум наделали патчи, которые «исправляли» дыры с существенной потерей производительности CPU. Если вы не Джеймс Бонд и не читаете этот материал с рабочего ПК, то смело отключайте патчи, ибо кто им дал право резать наш FPS.

Windows Registry Editor Version 5.00

; отключение патчей Meltdown и Spectre
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management]
"FeatureSettings"=dword:00000001
"FeatureSettingsOverride"=dword:00000003
"FeatureSettingsOverrideMask"=dword:00000003

; отключение патча Zombieload v2
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerKernel]
"DisableTsx"=dword:00000000

Опять вносим наши изменения в параметры реестра через regedit или скачиваем и применяем заранее готовый файл. После перезагрузки мы должны получить прибавку в работе процессора от 5 до 30% в зависимости от поколения CPU. Перейдём к пингу.

Пинг

Windows очень любит надёжность, поэтому она плевать хотела на то, что вы геймер, ибо её алгоритмы задействованы на подтверждение получения и отправки пакетов с одной лишь ей ве́домой логикой задержки. Заставим систему сделать упор на скорость приёма и отправку пакетов.

  1. Переходим в старой панели управления во вкладку центр управления.
  2. Изменить параметры адаптера.
  3. Через правый клик по активному устройству нажимаем свойства.
  4. Убираем все галочки кроме (TCP/IPv4).
  5. По кнопке настроить, во вкладке дополнительно, отключаем электросбережения.
  6. Применяем.

Это основные параметры, которые отвечают за торможение интернета. Я напоминаю, что в зависимости от производителя и новизы сетевого адаптера, некоторых из них может и не быть. Перейдём к завершающему шагу настроек интернета. 

Windows также через реестр регулирует работу интернета вне зависимости от настроек вашей сетевой карты. Таких параметров пара сотен, и изменять их вручную — это ад. Воспользуемся бесплатной утилитой TCP Optimizer 4.

  1. Скачиваем и запускаем TCPOptimizer.exe (Желательно от имени администратора).
  2. Выставляем в интерфейсе программы Optimal или как на скриншоте.
  3. Применяем.
  4. Перезагружаем ПК.

Мы выполнили изменение множества настроек, отвечающих за отклик и время жизни пакета, не говоря уже об изменении алгоритма передачи, и добились снижения итогового пинга. Настройку интернета для геймера можно официально объявить закрытой. Перейдём к последним пунктам.

Системные таймеры и Hpet

Разрешение таймера по умолчанию в Windows составляет 15,6 мс — это является весьма высоким значением, которое приводит к лишнему энергопотреблению и траты впустую большого количества вычислительных мощностей — замедляя работу вашего компьютера! Хотя некоторые мультимедийные программы и игры сами могут фиксировать значение таймера для увеличения производительности, но они никогда не выставляют его меньше 1 мс. Чтобы исправить эту проблему и принудительно назначить время таймера для повышения производительности и отклика, а также чтобы не возиться с лишним ПО, выполним установку фоновой службы, которая и станет отвечать за наш таймер.

  1. Скачиваем и извлекаем файлы на диск.
  2. Переходим в папку и запускаем файл Installer.bat (Желательно от имени администратора).
  3. Выбираем в списке желаемый таймер, я советую 2.
  4. Дожидаемся окончания установки. (После установки не удалять!).
  5. Можно закрыть ПО.

Значение нынешнего таймера после установки можно проверить нажав 8 в интерфейсе ПО.

С постоянным таймером закончили. В Windows существует ещё множество таймеров, отвечающих за производительность. Одним из главных можно назвать Hpet. Конечно, в интернете бытует мнение, что его лучше не трогать, но главное — не отключать его в BIOS, а в самой Windows это даже нужно делать для избавления от стартеров и для увеличения FPS.

Вводим в CMD команды:

bcdedit /set disabledynamictick yes
bcdedit /set useplatformtick yes

Отключаем в диспетчере устройств таймеры.

Иногда он может быть подписан как High Precision Even Timer или Высокоточный таймер событий. Аналогично советую отключить Intel Management, ибо он также сильно тормозит систему. Перезагружаем ПК и проверяем драйверы через Snappy Driver Installer. Там должны будут появиться наши таймеры. Обновляем таймеры и вновь отключаем их в диспетчере устройств.

Фанфары, гром и молния! Поздравляю с завершением сокращённого гайда по оптимизации Windows без поломки. Вы можете гордиться собой! Вы были упорны и стали быстрее всех!

Заключение

Кто-то назовёт автора сумасшедшим и не простит отсутствия итогов всего ада выше, но я могу поставить честь и совесть, а также 14-летний опыт оптимизации Windows-систем, что выполнив все эти действия, вы станете быстрее всех! Конечно, можно было бы применить ещё некоторые твики и ПО для очистки и удаления телеметрии, но тогда бы гайд разросся ещё больше, и был бы шанс поломать систему. В общем, пользуйтесь и будьте быстрее всех.

Осмысленная настройка опции HPET в Windows 10 может значительно влиять на увеличение или уменьшение производительности вашей системы в играх и работе. Рассказываем, как проверить и оттюнить свой ПК.

Как ускорить компьютер в играх? Отключите одну настройку

Если количество кадров в секунду вас уже не устраивает, и посещают мысли, что пора бы менять видеокарту или процессор для улучшения производительности в играх — мысли эти, безусловно, правильные. Но для начала можно попробовать заняться оптимизацией настроек системы. Удивительно, но иногда они дают заметный результат. Хотя, тут, как это часто бывает в мире ПК, рецепт сработавший на одной конфигурации, стоит проверять затем на каждой конкретной — новый результат может оказаться немного иным.

Опытом настройки ПК и инструкциями мы делимся регулярно в нашем Telegram-канале. Сегодня расскажем про то, как удалось разогнать связку из процессора Intel Core i5-9600KF, материнской платы Asus Prime Z390-P и видеокарты Sapphire Pulse Radeon RX 5700 XT.

Впрочем, тут стоит ещё проверить, изначально, включена ли та самая настройка у вас или уже деактивирована по-умолчанию. Отдадим почести парням из PRO Hi-Tech, после видео которых мы решили провести этот эксперимент на своей системе и поделиться результатами с нашими читателями.

Что такое HPET?

HPET (англ. High Precision Event Timer, таймер событий высокой точности) — тип таймера, используемый в персональных компьютерах. Совместно разработан Intel и Microsoft, и стал внедряться в чипсеты персональных компьютеров с 2005 года. Ранее назывался Intel как мультимедийный таймер (англ. multimedia timer). Название HPET было выбрано для исключения путаницы с программными таймерами, появившимися в Windows 3.0, которые также назывались Multimedia Timers.

Сегодня схема HPET интегрирована в чип южного моста. Если ранее можно было управлять HPET через BIOS, то современные версии уже в большинстве случаев не дают такой настройки. К старым операционным системам в данном случае стоит относить от Microsoft те, что вышли раньше Windows 7.

Может случиться, что HPET активна на аппаратном уровне и одновременно включена в Windows. Отключение её в системе может сказаться на производительности.

Тестирование и сравнение

Для проверки теории использовали встроенный бенчмарк Metro Exodus, выбрав Extreme-профиль настроек графики, DirectX11 и разрешение 1920×1080 пикселей. Слева направо результаты с выключенным параметром HPET и затем включённым.

Как ускорить компьютер в играх? Отключите одну настройку

Как ускорить компьютер в играх? Отключите одну настройку

Кроме того, прогнали тест в бенчмарке TimerBench 1.3.3.

HPET активна. Здесь уже для бенчмарка выбрали разрешение 3840×2160 пикселей.

Те же условия, но HPET деактивирована.

Как отключить/включить HPET?

Мы нашли 3 способа.

1. Через командную строку Windows

Запустите командную строку от имени администратора. Открываем меню пуск, набираем с клавиатуры «cmd», выбираем администраторский вариант.

Чтобы отключить введите команды:

bcdedit /deletevalue useplatformclock

bcdedit /set disabledynamictick yes

Чтобы заново включить используйте:

bcdedit /set useplatformclock true

bcdedit /set disabledynamictick no

Через диспетчер устройств

Используем сочетание клавиш Win+Break, затем в открывшемся окне выбираем ссылку «Диспетчер устройств». В разделе «Системные устройства» находим «High Precision Event Timer» (Высокоточный таймер событий), открываем контекстное меню по клику правой кнопкой мыши и деактивируем устройство.

Как ускорить компьютер в играх? Отключите одну настройку

Через сторонние твикеры/бенчмарки

Мы использовали TimerBench 1.3.3, который позволяет управлять HPET через свой интерфейс. У вас тоже появится такая возможность, если решите проверить работу на своей системе и сравнить результаты до и после. Скачать приложение можно по ссылке.

Бонусом

Кроме того, у нас были ещё несколько статей об оптимизации системы для игр. Справедливость информации, описанной в них тоже стоит проверять для каждой конфигурации отдельно. Ознакомиться с ними можно по следующим ссылкам:

  • Простой способ ускорить компьютер в играх;
  • Игровой режим Windows 10 — не всегда хорошо;
  • В Windows 10 можно увеличить количество кадров в играх.

Источник: PRO Hi-Tech.

👍 / 👎

Тогда можно поддержать её лайком в соцсетях. На новости сайта вы ведь уже подписались? ;)

Или хотя бы оставить довольный комментарий, чтобы мы знали, какие темы наиболее интересны читателям. Кроме того, нас это вдохновляет. Форма комментариев ниже.

Что с ней так? Своё негодование вы можете высказать на zelebb@gmail.com или в комментариях. Мы постараемся учесть ваше пожелание в будущем, чтобы улучшить качество материалов сайта. А сейчас проведём воспитательную работу с автором.

Если вам интересны новости мира ИТ так же сильно, как нам, подписывайтесь на Telegram-канал. Там все материалы появляются максимально оперативно. Или, может быть, удобнее «Вконтакте»?

Читайте нас где удобно

Ещё на эту тему было

  • Как запретить OneDrive перехватывать клавишу PrtSc?
  • Microsoft сделает Windows более безопасной
  • Как передавать файлы со смартфона на ПК и обратно по Bluetooth?
  • Приложение просмотра фото Windows желтит кадры. Как починить?
  • Windows 11, наконец, догнала по скорости работы windows 10
  • Поддерживает ли ваш ПК DirectStorage? Microsoft выпустила утилиту для проверки
  • Windows 11 может получить новый инструмент контроля приватности
  • Скачать Windows 11 и Windows 10 с сайта Microsoft из России больше невозможно
  • В обновлении Windows 11 появятся папки на рабочем столе, как в Android
  • Обновление Windows 11 даст больше эффектов прозрачности для сторонних приложений

Для тех, кто долистал

Ай-ти шуточка бонусом. До анонса iPhone 5 осталось несколько часов. Дизайнерский отдел Samsung уже точит карандаши и подготовил кальку.

Немногие знают, как можно увеличить FPS в играх, отключив HPET. В это статье разберём, что такое HPET и что будет, если отключить эту функцию, а также, безопасно ли это.

High Precision Event Timer (HPET) – высокоточный таймер событий

HPET – это тип таймера, который используется в ПК. Это непрерывно работающий таймер, который постоянно отсчитывает, т.е. работает не как одноразовое устройство, которое отсчитывает до нуля, вызывает одно прерывание и затем останавливается. Поскольку HPET сравнивает фактическое значение таймера и запрограммированное целевое значение на равенство, а не на «больше или равно», прерывания могут быть пропущены, если целевое время уже прошло, когда значение компаратора записывается в регистр микросхемы. Схема HPET в современных ПК интегрирована в чип южного моста.

Отложенный вызов процедур (задержка DPC) позволяет программам быстро помещать действия в очередь в планировщике процессора, которые через какое-то время будут обработаны.

Например, отрисовка видеокадра (video frame) на экране может быть выполнена, как только данные будут готовы и время кадра (frame time) достигнуто. Конечно, всё это делается за какие-то доли секунд и не замечается многими людьми.

Что будет если отключить HPET?

Отключение HPET позволяет осуществлять неограниченный ввод-вывод и приводит к очень сырому и чрезвычайно отзывчивому соединению между вами и вашей машиной. Это также удаляет микро заикания и подвисания экрана.

1000 секунда = 1 миллисекунда
HPET ON: задержка между 100-150 мс
HPET OFF: задержка между 5-15 мс

Выходит, что с включённой функцией таймера HPET происходит потеря 3-4 кадра в секунду, соответственно, с выключенной функцией снижается вероятность «зависания».

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

Увеличится ли fps в играх и приложениях при отключении hpet?

Отключение этого параметра (даже через командную строку) может существенно повлиять на производительность в играх и приложениях. В некоторых случаях ваш FPS может сильно увеличиться (например, с 30 до 100).

Безопасно ли отключать HPET?

Да, это абсолютно безопасно. Это ничего не повредит и не приведёт к нежелательным побочным эффектам. Вы всегда сможете вернуть всё обратно.

Есть мнение, что даже необходимо отключить HPET, так как компьютер не использует этот аппаратный компонент активно и не делает ничего полезного, он просто сидит и тормозит процессор. Сняв вес с вашего процессора, он будет быстрее, и ваш компьютер в целом будет работать более плавно, что будет в основном заметно в играх, но также и в любой задаче, которую вы выполняете на своём компьютере. Это улучшит работу ПК, не оказывая негативного влияния.

При отключении HPET могут ли быть проблемы в онлайн играх?

К сожалению, вас могут заподозрить в использовании читов (возможно, но не факт), поэтому будьте осторожны, отключайте на свой страх и риск.

Если, отключив HPET, увеличивается фпс, то зачем вообще его нужно включать? И зачем тогда он включен по умолчанию?

Это было лучше для более старых ОС, для звуковых карт PCI с низкой задержкой или интерфейсов захвата и т. д. Для игр это увеличивает накладные расходы и, как правило, даёт меньше FPS.

Как отключить HPET?

Способ 1. Через BIOS или UEFI

Очень часто таймер можно отключить через BIOS или UEFI, найдя, к примеру, функцию HPET Support или High Precision Event Timer (название может немного отличаться, в зависимости от вашей материнской платы):

Способ 2. Через командную строку

В Windows 10 также можно отключить HPET через командную строку от имени администратора после ввода следующих команд:

bcdedit /deletevalue useplatformclock
bcdedit /set disabledynamictick yes

Чтобы внести изменения необходимо перезагрузить компьютер.

Если вы хотите повторно включить HPET, используйте следующие команды:

bcdedit /set useplatformclock true
bcdedit /set disabledynamictick no

Способ 3. Используя диспетчер задач Windows

Отключить HPET можно воспользовшись диспетчером устройств, найдя таймер в системных устройствах и отключив, зайдя в свойства:

Нужно ли отключать HPET?

Я никому не говорю, нужно ли вам включить или отключить HPET, так как это может иметь разные эффекты в зависимости от вашего оборудования. Конечно, я не гарантирую, что это что-то изменит для всех и приведёт к колоссальному росту производительности. В некоторых случаях ваша система с отключением HPET можно начать работать менее стабильно (либо могут появиться дополнительные проблемы), а в некоторых более отзывчиво, поэтому нужно наблюдать за этим, если вы решите отключить таймер. В любом случае необходимо разумно отключать или включать какие-либо параметры или функции и следить за тем, как после этого стал работать ваш ПК, это касается всего, не только HPET.

Что значит HPET Mode? HPET mode 32 или 64 что выбрать?

Если вы включили таймер, то в некоторых случаях вы сможете выбрать mode 32-bit или 64-bit, данная опция всего-навсего уточняет режим работы счётчиков: 32-разрядный или 64-разрядный. Если у вас установлена 32-разрядная система, то выбирайте 32-bit mode, а если 64-разрядная, то 64-bit mode.

Внимание пользователей ноутбуков

Отключение HPET, уменьшение разрешения таймера в Windows 10 приведет к увеличению расхода батареи. А как сохранить батарею ноутбука и увеличить продолжительность его работы читайте в моей статье.

Содержание

  1. HPET: что это и как с его помощью оптимизировать Windows
  2. Функции аппаратного таймера
  3. Как сменить значение таймера и ускорить Windows
  4. Как ускорить компьютер в играх? Отключите одну настройку
  5. Что такое HPET?
  6. Тестирование и сравнение
  7. Как отключить/включить HPET?
  8. 1. Через командную строку Windows
  9. Через диспетчер устройств
  10. Через сторонние твикеры/бенчмарки
  11. Бонусом
  12. Полезные советы о том ,как ускорить Windows 10
  13. Оптимизация Windows для игр
  14. Внимание!
  15. Тестовый ПК и Linux
  16. Выводы

HPET: что это и как с его помощью оптимизировать Windows

HPET был введен компаниями Intel и Microsoft в 2005 году. Это аппаратный таймер, который находится в пределах южного моста – компонента, отвечающего за связь процессора с жестким диском, видеокартой, оптическим приводом и другими устройствами для обеспечения максимальной пропускной способности.

Функции аппаратного таймера

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

В частности, задача HPET состоит в синхронизации мультимедийных потоков, обеспечении плавного воспроизведения аудио и видео в операционной системе и разгрузке таймеров процессора.

Симптомом неправильной работы HPET (или полного его бездействия) являются, например, регулярные секундные зависания Windows. Компьютер со временем начинает медленно работать. В такой ситуации следует задуматься над изменением параметров указанной функции.

Как сменить значение таймера и ускорить Windows

Сначала нужно определить, поддерживает ли ее в целом наша платформа. Здесь все просто – Windows Vista и новые версии поддерживают HPET, XP делает это частично, старые «окна» вообще не используют этот дополнительный таймер. В случае сомнений следует заглянуть в BIOS.

В дополнительных параметрах (Advanced) должна быть опция Configuration PCH или HPET Mode (название может немного отличаться в зависимости от версии BIOS и производителя материнской платы). Нам нужно найти High Precision Timer, ACPI HPET Table или похожее. Здесь можно ее включить или отключить.

Тем не менее Windows имеет тенденцию к перезаписи установленных параметров и использовать HPET, несмотря на настройки в Биосе. Поэтому после загрузки системы нужно открыть командную строку с правами администратора. Для ее вызова в Windows 10 кликните правой кнопкой на меню Пуск и выберите соответствующий пункт.

HPET сможете включить с помощью команды:

bcdedit /set useplatformclock true

Это единственный таймер, который активируется через Windows. Для его отключения используйте команду:

bcdedit /deletevalue useplatformclock

Тогда операционная система будет вынуждена использовать таймеры, встроенные непосредственно в процессор.

Важно: в этом обзоре речь не идет о том, что HPET должен быть полностью включен или выключен. Если вы столкнулись с проблемами зависания системы – медленно открываются программы или рывки в работе компьютера — то следует проверить, работает ли HPET, и попробовать разные настройки. Полученный результат будет зависеть от точного определения причины указанной проблемы.

Как ускорить компьютер в играх? Отключите одну настройку

Осмысленная настройка опции HPET в Windows 10 может значительно влиять на увеличение или уменьшение производительности вашей системы в играх и работе. Рассказываем, как проверить и оттюнить свой ПК.

Если количество кадров в секунду вас уже не устраивает, и посещают мысли, что пора бы менять видеокарту или процессор для улучшения производительности в играх — мысли эти, безусловно, правильные. Но для начала можно попробовать заняться оптимизацией настроек системы. Удивительно, но иногда они дают заметный результат. Хотя, тут, как это часто бывает в мире ПК, рецепт сработавший на одной конфигурации, стоит проверять затем на каждой конкретной — новый результат может оказаться немного иным.

Опытом настройки ПК и инструкциями мы делимся регулярно в нашем Telegram-канале. Сегодня расскажем про то, как удалось разогнать связку из процессора Intel Core i5-9600KF, материнской платы Asus Prime Z390-P и видеокарты Sapphire Pulse Radeon RX 5700 XT.

Впрочем, тут стоит ещё проверить, изначально, включена ли та самая настройка у вас или уже деактивирована по-умолчанию. Отдадим почести парням из PRO Hi-Tech, после видео которых мы решили провести этот эксперимент на своей системе и поделиться результатами с нашими читателями.

Что такое HPET?

Сегодня схема HPET интегрирована в чип южного моста. Если ранее можно было управлять HPET через BIOS, то современные версии уже в большинстве случаев не дают такой настройки. К старым операционным системам в данном случае стоит относить от Microsoft те, что вышли раньше Windows 7.

Может случиться, что HPET активна на аппаратном уровне и одновременно включена в Windows. Отключение её в системе может сказаться на производительности.

Тестирование и сравнение

Для проверки теории использовали встроенный бенчмарк Metro Exodus, выбрав Extreme-профиль настроек графики, DirectX11 и разрешение 1920×1080 пикселей. Слева направо результаты с выключенным параметром HPET и затем включённым.

Кроме того, прогнали тест в бенчмарке TimerBench 1.3.3.

HPET активна. Здесь уже для бенчмарка выбрали разрешение 3840×2160 пикселей.

Те же условия, но HPET деактивирована.

Как отключить/включить HPET?

Мы нашли 3 способа.

1. Через командную строку Windows

Запустите командную строку от имени администратора. Открываем меню пуск, набираем с клавиатуры «cmd», выбираем администраторский вариант.

Чтобы отключить введите команды:

bcdedit /set disabledynamictick yes

Чтобы заново включить используйте:

bcdedit /set disabledynamictick no

Через диспетчер устройств

Используем сочетание клавиш Win+Break, затем в открывшемся окне выбираем ссылку «Диспетчер устройств». В разделе «Системные устройства» находим «High Precision Event Timer» (Высокоточный таймер событий), открываем контекстное меню по клику правой кнопкой мыши и деактивируем устройство.

Через сторонние твикеры/бенчмарки

Мы использовали TimerBench 1.3.3, который позволяет управлять HPET через свой интерфейс. У вас тоже появится такая возможность, если решите проверить работу на своей системе и сравнить результаты до и после. Скачать приложение можно по ссылке.

Бонусом

Кроме того, у нас были ещё несколько статей об оптимизации системы для игр. Справедливость информации, описанной в них тоже стоит проверять для каждой конфигурации отдельно. Ознакомиться с ними можно по следующим ссылкам:

Если вам интересны новости мира ИТ также сильно, как нам, подписывайтесь на наш Telegram-канал. Там все материалы появляются максимально оперативно. Или, может быть, вам удобнее «Вконтакте» или Twitter? Мы есть также в Facebook.

Полезные советы о том ,как ускорить Windows 10

Всем привет , решил написать эту статью дабы помочь некоторым людям со слабыми ПК ускорить работоспособность вашей системы. Тут вы скорее всего не увидите чего-то такого , что превратит ваш ПК в зверя , это лишь те советы, которые помогли лично мне.

1)Первым делом давайте отключим все ненужные программы которые могут работать в фоне и тормозить винду. Для этого нажимаем комбинация клавиш WIN + I , или в поиске введите «Параметры» Далее переходим в «Конфиденциальность» и во всех вкладках вырубайте весь ненужный шлак. Не тронутой оставляйте только вкладку микрофон. Обязательно выключить все в разделе «Фоновые приложения».

Так же в разделе персонализация — цвета , можете выключить эффект прозрачности , и вместо обоев поставить сплошной цвет.

2)Отключение «Разрешить индексировать содержимое файлов на диске»

Переходим в проводник , кликаем правой кнопкой мыши по всем вашим дискам и снимаем галочку с этого пункта .

3)Полное отключение всякой не нужной фигни от Microsoft.

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

Они крайне просты ,я думаю вы с ними легко разберетесь.

В чем суть. Некоторый хлам например ваши интернеты Mail.ru , любят запускаться вместе с вашим компьютером , тем самым тормозя запуск системы. Для того чтобы этого не допустить , открываем диспетчер задач (клацаем правой кнопкой мыши по панеле задач , запустить диспетчер задач), далее раздел автозагрузка , и там выключаем все то, что не должно загружаться с виндой . Опять же все на ваше усмотрение.

5)Отключение визуальных эффектов системы.

В поиске введите — «Панель управления» далее найдите пункт система , кликните на «дополнительные параметры системы», потом во вкладке быстродействие жмите параметры , и ставьте галочку на «Обеспечить наилучшее быстродействие» + поставьте галочку на сглаживание неровностей шрифтов.

6)И не отходя от кассы давайте настроим файл подкачки.

Справа от визуальных эффектов находится вкладка «дополнительно» Нажимайте на неё , если стоит галочка «размер по выбору системы , то снимайте ее , и в ручную указывайте файл подкачки . Я советую ставить файл подкачки в зависимости от вашей оперативной памяти .

  • (2 гига )2048 — 4096
  • (4 гига )4096 — 8192
  • (8 гига )8192 -16384

High Precision Event Timer (HPET) – высокоточный таймер событий

Отключение этого параметра (даже через командную строку) может существенно повлиять на производительность в играх и приложениях. В некоторых случаях ваш FPS может сильно увеличиться (например, с 30 до 100).

Способы отключения. Через BIOS (Если вы ничего там не понимаете , то и не лезьте туда и попробуйте другой способ)

В биосе значение HPET Support поставьте на Disabled.

Способ номер два:

В поиске введите «CMD» — Запустить от имени администратора. И вводите вот эти команды :

bcdedit /deletevalue useplatformclock
bcdedit /set disabledynamictick yes

Оптимизация Windows для игр

Сегодня мы установим и оптимизируем Windows 10 для лучшей игровой производительности, а также посмотрим на результат наших трудов.

Внимание!

Тестовый ПК и Linux

  • Процессор: Intel Pentium G4560 2/4 3.5 Гигагерц
  • Видеокарта: Nvidia Geforce 1050 2Gb
  • Оперативная память: 2×4 2400
  • Материнская плата: H110M-DGS R3.0 Bios 7.50
Выбор редакции Windows

Зоопарк Windows-систем хоть и не большой по сравнению с Linux, но и здесь нужен осознанный выбор, ибо от выбора зависит не только цена лицензии, но и общее потребление ресурсов компьютера, а также наличие фишек. Рассматривать устаревшие системы Windows 7-8.1 смысла никакого нет. Оптимизации в коде работы планировщика Windows 10 и работы над системой сжатия памяти, ставят крест на старых системах в плане игровой производительности.

Основные редакции:

Windows 10 Home (Домашняя) — стандартная версия для обычных пользователей, должна быть лучшей в плане игровой производительности и незагажанности системы, но напичкана процессами-службами по сбору данных пользователя. Не рекомендуется геймерам и киберкотлетам.

Windows 10 Pro (Профессональная) — расширенная версия, что подходит как для обычных пользователей, так и для системных администраторов, дополнительно напичкана софтом для администрирования разного рода задач. Потребляет чуть больше домашней версии.

Windows 10 LTSC (Корпоративная-Enterprise) — версия, лишенная большинства новых фич и мусора, базируется для стабильности на устаревшем ядре с опозданием 1-2 года от основной редакции, является лучшим выбором для игроков желающим выжать максимум из компьютера и не желающим резать свой пинг из-за телеметрии. Не продается в розницу физическим лицам, предназначана для работы на маломощных системах предприятия и банкомантах.

Сравнение потребления оперативной памяти

Сравнение нагрузки на центральный процессор

Сравнение занимаемого места папки Windows

Отчётливо видно, что версия Windows 10 LTSC является самой малопожирающей из тройки и весьма иронично, что, не прибегая к веселому роджеру, обычному пользователю её не достать. Автор также весьма ошарашен принудительной регистрацией на сервесах Microsoft при установке системы с активным интернет-соединением и невозможности создания локального пользователя во всех системах кроме LTSC. Базой для нашей игровой оптимизации послужит LTSC.

Задействуем все ядра центрального процессора

Нажимаем Ctrl+Shift+Esc, в появившемся окне нажимаем Файл>>Запустить новую задачу и вводим Msconfig.

Устанавливаем, как на скриншоте.

Не обращайте внимание на Windows 8.1.

В новом окне идём во вкладку загрузка и жмём по кнопке дополнительные параметры.
Ставим нужное количество работающих ядер (В моём случае их 4).

Жмем OK и уходим на перезагрузку.

Мы заставили систему в принудительном порядке использовать все ресурсы центрального процессора, многие «программисты» говорят, что это ненужный костыль, но они ошибаются, ибо это до жути увеличивает скорость загрузки системы.

Установка драйверов оборудования

Необходимо удостовериться в свежести программной части вашего компьютера, а именно обновить драйверы. Свежесть драйверов прямо влияет на FPS. Конечно, можно рассчитывать на автоматизированное средство обновления драйверов Microsoft, но оно часто имеет не самые свежие выпуски.

Я использую Snappy driver installer — это бесплатный инструмент от бывшего разработчика Drivers Pack, но в отличие от последнего, Snappy полностью бесплатен и лишён какой-либо рекламы. После скачивания архива, разархивируем его в любую папку и запускаем файл SDI_x64_R2000.exe. Ставим галочки как у меня.

Устанавливаем все драйверы, кроме драйверов видеокарты, это важно.

Правильная установка видеодрайверов Nvidia

Почему вы не должны использовать драйверы с офф сайта Nvidia? Современные пак драйверов Nvidia включает в себя средства телеметрии Nvidia и лишние модули, что влияют на производительность. К счастью, существует способ вырезать всю эту гадость и установить чистый видеодрайвер. Это муторно, но уже есть умельцы, что автоматизировали этот способ. Проста скачиваю Nvidia Driverpack Repack by cuta и устанавливаю чистый драйвер без какой-либо телеметрии и лишних служб.

Электропитание

Изначально Windows лишь отчасти игровая платформа и стандартные настройки электропитания выбраны не для выжимки максимума, а на умеренное электропитание. Для исправления ситуации будет использоваться автоматизированный скрипт, что добавит правильно настроенный профиль электропитания.

Извлекаем содержание архива на Диск C.

Запускаем Power Plans.cmd от имени админа.

Скачать скрипт.
Мы успешно добавили новую схему электропитания и уменьшили DPC Latency.

Убераем телеметрию Windows

Для блокирования слежки будем использовать Blackbird и Shutup 10 .
Запускаем Blackbird и просто нажимаем ENTER. Дожидаемся конца изменений. Перезагружаемся.
Запускаем Shutup 10 и отключаем всё, кроме доступа к микрофону.

Данные изменения существенно понизят пинг и нагрузку на центральный процессор, но сломают новую панель управления.

Внешний вид

Ваша система станет уродливой, но быстрее.

Этот Компьютер>>Свойства>>-Дополнительные параметры системы.

Дополнительно>>Быстродействие>>Параметры>>Визуальные эффекты>>Обеспечить наилучшее быстродействие.

Уменьшаем задержку ввода

Полезный твик для киберкотлет и любителей плавной мышки, ибо обеспечивает возрастание плавности из воздуха, путём включения серверного опроса устройств и перераспределения задач с загруженного первого ядра. По дефолту многие системные процессы обрабатываются первым ядром и это вызывает повышения времени-очереди на выполнение поступающей задачи от процесса. Признаками такой задержки является телепортирование врагов в онлайн-играх и плохая индексация попаданий. MSI util v 2 правит ветки реестра и включает фикс, вам необходимо лишь поставить галочки на желаемых устройствах.

Твикиры

Для настройки и кастомизации системы с отключением гадости, будет использоваться два проверенных твикера, а именно Win 10Tweaker и UWT 4. Программы простые и не требуют пояснений, просто следуйте описанию и ставьте галочки.

Отключаем HPET и Manager Intel

Данное отключение существенно повысит производительность.
Мой компьютер>>правый клик>>свойства>>диспетчер устройств>>системные устройства.
Правый клик на Hpet (Иногда подписан как высокоточный таймер событий) и Intel manager, всё отключаем и радуемся жизни.

Вводим по очереди в командную строку.

bcdedit /deletevalue useplatformclock

bcdedit /set useplatformtick yes

Выключаем динамические тики

bcdedit /set disabledynamictick yes

Результат работы

Произведем сравнение на примере CS:GO.

200 230

30 FPS из воздуха это отличный буст.

Выводы

Весьма грустно наблюдать засилье мусора и телеметрии в современной Windows 10, а принуждение к сервисам, что мне не нужны, лишь отнимает время. Кастомизация и выпиливание лишнего занимает уйму времени, что в той же Linux делается в две команды в терминале. Совет простой — используйте Linux, чтобы ваш пк был только ваш. С вами был Павел.


🚥 Оптимизация задержек

  • Отключение таймера HPET
  • Включение MSI mode
  • Приоритизация прерываний
  • Приоритизация драйверов
  • Распараллеливание драйверов по ядрам

Отключение таймера HPET

Основная проблема в Windows с которой нам нужно бороться – это использование таймера HPET [?], что уже создаёт лишнюю абстракцию, т.к. это является заменой стандартного таймера RTC [?] или того же HPET (реализаций много, это не так важно), который уже встроен во все современные материнские платы и является аппаратным. В этом и кроется проблема – Windows всё равно тянет одеяло на себя и использует свой программный таймер, так или иначе.

Изначально идея нового таймера здравая и хорошая – добиться более высокой точности для управления прерываниями [?] для мультимедийных программ, хотя у него и намного больше применений, в том числе он отвечает за счёт времени и многое другое. Но мы бы тут не собрались, если бы он работал так как задумывалось. Проблем таймер создаёт достаточно [Проблемы с HPET]. Если вкратце, то значение выдаваемое таймером должно быть строго фиксированным, но в виду своей странной реализации оно имеет плавающее значение и периодические меняется, из-за чего прерывания происходят в разное время, что и вызывает запоздания, а они в свою очередь микрофризы и микролаги, особенно это заметно при использовании игр или высоконагруженных приложений (рендер, обработка фотографий и т.п.).

Некоторые мультимедийные программы, а так же игры могут сами фиксировать данный параметр для увеличения плавности [?], поэтому мы его сами зафиксируем на минимально возможном значении в 0.5ms, для всей системы в том числе.

‼️ Ни в коем случае не отключайте данный таймер в BIOS – там он должен быть включён для корректной работы системы в целом. В новых версиях BIOS подобная настройка включена по-умолчанию и зачастую её изменение не возможно. Подробную информацию как изменить параметры в BIOS можно найти в руководстве к материнской плате или в интернете.

Для того чтобы отключить HPET в Windows необходимо использовать встроенную утилиту bcdedit. Но сперва нам надо убедиться, что таймер в Windows активен:

Проверка активности таймера HPET с помощью BCDEdit

Если у вас нет значений useplatformtick и disabledynamictick или они установлены как No, то первым шагом для нас будет их отключение:

bcdedit /set disabledynamictick yes
bcdedit /set useplatformtick yes

Сброс значений по-умолчанию

bcdedit /set disabledynamictick no > nul
bcdedit /set useplatformtick no > nul

Пример правильного отключения таймера HPET в Windows:

Пример правильного отключения таймера HPET в Windows с помощью BCDEdit


Теперь, отключив таймер в Windows, нам надо зафиксировать его в значении 0.5ms – для этого необходимо использовать утилиту Intelligent Standby List Cleaner [скачать]. Здесь можно увидеть, что значение нашего таймера Current timer resolution постоянно изменяется, что не есть хорошо и именно это нам надо исправлять.

Пример не настроенного таймера в Intelligent Standby List Cleaner:

Пример не настроенного таймера в Intelligent Standby List Cleaner

Для правильной настройки необходимо установить следующие параметры:

  • Start ISCL minimized and auto-Start monitoring включено
  • Launch ISCL on user logon (TaskSheduler) включено
  • Enable custom timer resolution включено
  • Wanted timer resolution установлено в 0.50

Так же здесь можно настроить очищение системного кэша памяти [?]. Для этого необходимо изменить параметр Free memory is lower than, который отвечает за минимальное значение свободной памяти – оптимальным значением является размер вашей памяти разделённый на 2, после достижения которого кэш памяти будет очищен. Параметр The list size is at least отвечает за минимальный размер кэшированный памяти и его рекомендуется оставлять дефолтным — равным 1024 Mb.

Если лень считать

(4 Gb)  4096  /2 = 2048
(8 Gb)  8192  /2 = 4096
(16 Gb) 16384 /2 = 8192
(24 Gb) 24576 /2 = 12288
(32 Gb) 32768 /2 = 16384

⚠️ Во избежание дополнительных микрофризов при очищении кэша памяти, если у вас её мало или же её очень активно используют программы, данную настройку лучше протестировать с разными параметрами и найти оптимальную для вашего сценария использования.

После настройки надо нажать Start и проверить зафиксирован ли таймер – значение Current timer resolution должно быть строго равно 0.5ms и не изменяться. Значение может обновится с задержкой!

Пример правильной настройки Intelligent Standby List Cleaner:

Пример правильной настройки Intelligent Standby List Cleaner

Включение MSI mode

💡 Для дальнейшей настройки необходимо ознакомиться c
Определение IRQ,
Определение USB Host Controller.

А зачем нам ещё включать какой-то MSI mode [?]? Всё очень просто, если раньше на одно устройство выделялось всего 4 прерывания [Страдания по IRQ], то с помощью MSI стало возможным увеличить их до 32, что значительно ускоряет общение между устройствами.

Почти все последние драйверы, от нормальных производителей, используют изначально режим прерывания MSI, тем более это обязательное условие для PCI Express железок. Но для ускорения всей системы так же не лишним будет включение MSI и для USB Host Controller.

Для включения MSI mode мы будем использовать утилиту MSI Util v2 [скачать]. Ищем здесь нашу видеокарту и USB Host Controller (если по названию не получается найти, то в строке с именем так же указан Device ID). Ставим галочку в столбце MSI, так же меняем Interrupt priority на Hight, после чего жмём кнопку Apply.

Пример настройки MSI с помощью MSI Util v2:

Пример настройки MSI с помощью MSI Util v2

‼️ Нельзя устанавливать использование MSI mode для всех ваших устройств, иначе устройства могут работать не корректно.

⚠️ Данная настройка сбрасывается на дефолтное значение после обновления драйвера nVidia!

Приоритизация прерываний

💡 Для дальнейшей настройки необходимо ознакомиться c
Работа с реестром,
Определение IRQ.

Продолжая тему прерываний, далее нам необходимо настроить приоритет прерываний для конкретно заданных устройств – этим в Windows занимается IRQL [?]. Проблема приоритизации всегда имеет место быть, т.к. каждое устройство считает себя важней остальных и это порождает некоторые проблемы [Проблемы IRQL].

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlPriorityControl]
; видеокарта
"IRQ***Priority"=dword:00000001 ; none
; USB Host Controller
"IRQ***Priority"=dword:00000002 ; none

Значения по-умолчанию:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlPriorityControl]
"IRQ***Priority"=-
"IRQ***Priority"=-

В качестве имени параметра мы используем IRQ***Priority, где *** надо заменить на IRQ (несколько цифр) нашей видеокарты и USB Host Controller.

✨ Для видеокарты рекомендуется ставить значение равным 1, для USB Host Controller – значение 2 [Приоритеты IRQ].

Приоритизация драйверов

💡 Для дальнейшей настройки необходимо ознакомиться c
Работа с реестром.

Следующим шагом после настройки приоритетов IRQL [?] необходимо указать приоритет для каких сервисов (в нашем случае драйверов) необходимо выполнять прерывания в первую очередь. Когда происходит прерывание, Windows, используя IRQL для определения приоритета прерывания, проверяет может ли прерывание обслуживаться в данный момент или нет, если условие выполняется, то приоритет потока начинает его выполнение. Всё что ниже по приоритету – ставиться в очередь. Таким образом мы зафиксируем критически важные сервисы, прерывания от которых необходимо обрабатывать в первую очередь.

Windows Registry Editor Version 5.00

; DirectX Graphics Kernel
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesDXGKrnlParameters]
"ThreadPriority"=dword:0000000f

; драйвер видеокарты nVidia
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesnvlddmkmParameters]
"ThreadPriority"=dword:0000001f

; USB3 HUB Driver
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesUSBHUB3Parameters]
"ThreadPriority"=dword:0000000f

; USB xHCI Compliant Host Controller
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesUSBXHCIParameters]
"ThreadPriority"=dword:0000000f

Значения по-умолчанию:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesDXGKrnlParameters]
"ThreadPriority"=-

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesnvlddmkmParameters]
"ThreadPriority"=-

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesUSBHUB3Parameters]
"ThreadPriority"=-

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesUSBXHCIParameters]
"ThreadPriority"=-

✨ В качестве параметра установите значения равным 15 (f) (что соответствует Hight), если система работает стабильно, то можно повысить приоритет установив параметр равным 31 (1f) (что соответствует Realtime) [Процессы и потоки в Windows] для nvlddmkm.

Распараллеливание драйверов по ядрам

💡 Для дальнейшей настройки необходимо ознакомиться c
Определение IRQ,
Определение USB Host Controller.

Самое сложное осталось позади и теперь мы будет освобождать первое ядро, куда Windows зачем-то добавляет почти все драйверы. Этим мы с одной стороны разгрузим ядро, а с другой так же уменьшим задержки.

Для этого нам понадобиться утилита Interrupt Affinity Policy Tool [скачать].

✨ При использовании утилиты будут периодически появляться сообщения об ошибке – их можно спокойно игнорировать, т.к. программа давно не обновлялась и на работу программы они никак не влияют.

Сообщение об ошибке в утилите Interrupt Affinity Policy Tool

Пример списка устройств в утилите Interrupt Affinity Policy Tool:

Пример списка устройств в утилите Interrupt Affinity Policy Tool

В этом списке надо найти свою видеокарту и USB Host Controller (название может не соответствовать, поэтому искать лучше по полю Location Info), нажать Set Mask и выбрать ядро на которое будет назначен драйвер. Выбирать надо на любое ядро отличное от первого.

Пример установки ядра для драйвера устройства в утилите Interrupt Affinity Policy Tool

⚠️ На CPU, где включен Hyper-Threading [?] / SMT [?], ядра и потоки в программе чередуются – CPU 0 — Ядро 1, CPU 1 — Поток 1, CPU 2 — Ядро 2, CPU 3 — Поток 2 и т.д., соответственно, чтобы выбрать третье ядро надо указать CPU 4 и CPU 5. На CPU без Hyper-Threading/SMT ядра, само собой, указаны без потоков.

Сообщение о перезагрузке драйвера в утилите Interrupt Affinity Policy Tool

После выбора ядра появится сообщение о том, что можно перезагрузить драйвер – нажимаем Yes. В зависимости от устройства может моргнуть экран или произойти переопределение устройств – это нормально, после этого утилита сообщит, что всё прошло успешно.

‼️ Нельзя переносить все драйверы на другие ядра, этим вы лишь можете добиться появления BSOD [?]!

⚠️ Данная настройка сбрасывается на дефолтное значение после обновления драйвера nVidia!

Системное администрирование, Разработка под Windows, Игры и игровые приставки


Рекомендация: подборка платных и бесплатных курсов 3D-моделирования — https://katalog-kursov.ru/

Поведение планировщика Windows значительно изменилось в Windows 10 2004 без каких-либо предупреждений и изменения документации. Вероятно, это поломает несколько приложений. Такое происходит не первый раз, но эта перемена посерьёзнее.

Если вкратце, то вызовы timeBeginPeriod из одного процесса теперь влияют на другие процессы меньше, чем раньше, хотя эффект ещё присутствует.

Думаю, что новое поведение — это по сути улучшение, но оно странное, и заслуживает того, чтобы быть задокументированным. Честно предупреждаю — у меня только результаты собственных экспериментов, поэтому могу только догадываться о целях и каких-то побочных эффектах этого изменения. Если какие-либо из моих выводов неверны, пожалуйста, дайте знать.

Прерывания таймера и смысл их существования

Во-первых, немного контекста о дизайне операционных систем. Желательно, чтобы программа могла засыпать, а позже — просыпаться. На самом деле это не следует делать очень часто — потоки обычно ждут событий, а не таймеров, — но иногда необходимо. Итак, в Windows есть функция Sleep — передайте ей желаемую продолжительность сна в миллисекундах, и она разбудит процесс:

Sleep(1);

Стоит подумать о том, как это реализуется. В идеале при вызове Sleep(1) процессор переходит в спящий режим. Но как операционная система разбудит поток, если процессор спит? Ответ — аппаратные прерывания. ОС программирует микросхему — аппаратный таймер, который затем запускает прерывание, которое пробуждает процессор, и ОС затем запускает ваш поток.

Функции WaitForSingleObject и WaitForMultipleObjects также имеют значения таймаута, и эти таймауты реализуются с использованием того же механизма.

Если много потоков ждут таймеров, то ОС может запрограммировать аппаратный таймер на индивидуальное время для каждого потока, но это обычно приводит к тому, что потоки просыпаются в случайное время, а процессор так нормально и не засыпает. Энергоэффективность CPU сильно зависит от времени его сна (нормальное время от 8 мс), и случайные пробуждения тому не способствуют. Если несколько потоков синхронизируют или объединяют свои ожидания таймера, то система становится более энергоэффективной.

Существует множество способов объединения пробуждений, но основной механизм в Windows — глобальное прерывание таймера, тикающего с постоянной скоростью. Когда поток вызывает Sleep(n), то ОС запланирует запуск потока сразу после первого прерывания таймера. Это означает, что поток может в конечном итоге проснуться немного позже, но Windows — это не ОС реального времени, она вообще не гарантирует определённое время пробуждения (в это время ядра процессора могут быть заняты), поэтому вполне нормально проснуться чуть позже.

Интервал между прерываниями таймера зависит от версии Windows и железа, но на всех моих машинах он по умолчанию составлял 15,625 мс (1000 мс/64). Это означает, что если вызвать Sleep(1) в какое-то случайное время, то процесс будет разбужен где-то между 1,0 мс и 16,625 мс в будущем, когда сработает следующее прерывание глобального таймера (или через одно, если это сработало слишком рано).

Короче говоря, природа задержек таймера такова, что (если только не используется активное ожидание процессора, а его, пожалуйста, не используйте) ОС может пробуждать потоки только в определённое время с помощью прерываний таймера, а Windows использует регулярные прерывания.

Некоторым программам не подходит такой большой разброс в задержках ожидания (WPF, SQL Server, Quartz, PowerDirector, Chrome, Go Runtime, многие игры и т. д.). К счастью, они могут решить проблему с помощью функции timeBeginPeriod, которая позволяет программе запросить меньший интервал. Есть также функция NtSetTimerResolution, которая позволяет устанавливать интервал меньше миллисекунды, но она редко используется и никогда не требуется, поэтому не буду больше её упоминать.

Десятилетия безумия

Вот сумасшедшая вещь: timeBeginPeriod может вызвать любая программа, и она изменяет интервал прерывания таймера, при этом прерывание таймера — это глобальный ресурс.

Представим, что процесс А находится в цикле с вызовом Sleep(1). Это неправильно, но это так, и по умолчанию он просыпается каждые 15,625 мс, или 64 раза в секунду. Затем появляется процесс B и вызывает timeBeginPeriod(2). Это заставляет таймер срабатывать чаще, и внезапно процесс А просыпается 500 раз в секунду вместо 64-х раз в секунду. Это безумие! Но именно так всегда работала Windows.

В этот момент, если бы появился процесс C и вызвал timeBeginPeriod(4), это ничего бы не изменило — процесс A продолжал бы просыпаться 500 раз в секунду. В такой ситуации правила устанавливает не последний вызов, а вызов с минимальным интервалом.

Таким образом, вызов timeBeginPeriod от любой работающей программы может установить глобальный интервал прерывания таймера. Если эта программа завершает работу или вызывает timeEndPeriod, то вступает в силу новый минимум. Если одна программа вызывает timeBeginPeriod(1), то теперь это интервал прерывания таймера для всей системы. Если одна программа вызывает timeBeginPeriod(1), а другая timeBeginPeriod(4), то всеобщим законом становится интервал прерывания таймера в одну миллисекунду.

Это имеет значение, потому что высокая частота прерываний таймера — и связанная с ней высокая частота планирования потоков — может впустую расходовать значительную мощность CPU, как обсуждалось здесь.

Одним из приложений, которому необходимо планирование на основе таймера, является веб-браузер. В стандарте JavaScript есть функция setTimeout, которая просит браузер вызвать функцию JavaScript через несколько миллисекунд. Для реализации этой и других функций Chromium использует таймеры (в основном WaitForSingleObject с таймаутами, а не Sleep). Это часто требует повышенной частоты прерываний таймера. Чтобы это не слишком сказывалось на времени автономной работы, Chromium недавно модифицировали таким образом, чтобы при работе от батареи частота прерываний таймера не превышала 125 Гц (интервал 8 мс).

timeGetTime

Функция timeGetTime (не путать с GetTickCount) возвращает текущее время, обновлённое прерыванием таймера. Процессоры исторически не очень хороши в ведении точного времени (их часы специально колеблются, чтобы не служить FM-передатчиками, и по другим причинам), поэтому для поддержания точного времени CPU часто полагаются на отдельные генераторы тактовых импульсов. Чтение с этих чипов стоит дорого, поэтому Windows поддерживает 64-битный счётчик времени в миллисекундах, обновляемый прерыванием таймера. Этот таймер хранится в общей памяти, поэтому любой процесс может дёшево считывать оттуда текущее время, не обращаясь к генератору тактовых импульсов. timeGetTime вызывает ReadInterruptTick, который по сути просто считывает этот 64-битный счётчик. Все просто!

Поскольку счётчик обновляется прерыванием таймера, мы можем его отследить и найти частоту прерывания таймера.

Новая недокументированная реальность

С выпуском Windows 10 2004 (апрель 2020 года) некоторые из этих механизмов слегка изменились, но очень запутанным образом. Сначала появились сообщения, что timeBeginPeriod больше не работает. На самом деле всё оказалось куда сложнее.

Первые эксперименты дали смешанные результаты. Когда я запустил программу с вызовом timeBeginPeriod(2), то clockres показал интервал таймера 2,0 мс, но отдельная тестовая программа с циклом Sleep(1) просыпалась около 64 раз в секунду вместо 500 раз, как в предыдущих версиях Windows.

Научный эксперимент

Тогда я написал пару программ для изучения поведения системы. Одна программа (change_interval.cpp) просто сидит в цикле, вызывая timeBeginPeriod с интервалами от 1 до 15 мс. Она удерживает каждый интервал в течение четырёх секунд, а затем переходит к следующему, и так по кругу. Пятнадцать строк кода. Легко.

Другая программа (measure_interval.cpp) запускает несколько тестов для проверки, как её поведение изменяется при изменении change_interval.cpp. Программа отслеживает три параметра.

  1. Она спрашивает ОС, каково текущее разрешение глобального таймера, используя NtQueryTimerResolution.
  2. Она измеряет точность timeGetTime, вызывая его в цикле до тех пор, пока возвращаемое значение не изменится — и отслеживая величину, на которую оно изменилось.
  3. Она измеряет задержку Sleep(1), вызывая его в цикле в течение секунды и подсчитывая количество вызовов. Средняя задержка является просто обратной величиной числа итераций.

@FelixPetriconi провёл для меня тесты на Windows 10 1909, а я провёл тесты на Windows 10 2004. Вот очищенные от случайных флуктуаций результаты:

Это означает, что timeBeginPeriod по-прежнему устанавливает интервал глобального таймера во всех версиях Windows. Из результатов timeGetTime() можно сказать, что прерывание срабатывает с такой скоростью по крайней мере на одном ядре процессора, и время обновляется. Обратите также внимание, что 2.0 в первой строке для 1909 года тоже было 2.0 в Windows XP, затем 1.0 в Windows 7/8, а затем вроде опять вернулось к 2.0?

Однако поведение планировщика резко меняется в Windows 10 2004. Ранее задержка для Sleep(1) в любом процессе просто равнялась интервалу прерывания таймера, за исключением timeBeginPeriod(1), давая такой график:

В Windows 10 2004 соотношение между timeBeginPeriod и задержкой сна в другом процессе (который не вызывал timeBeginPeriod) выглядит странно:

Точная форма левой части графика неясна, но она определённо уходит в противоположную сторону от предыдущего!

Почему?

Последствия

Как было указано в обсуждении reddit и hacker-news, вероятно, левая половина графика представляет собой попытку максимально точно имитировать «нормальную» задержку, учитывая доступную точность глобального прерывания таймера. То есть с интервалом прерывания 6 миллисекунд задержка происходит примерно на 12 мс (два цикла), а с интервалом прерывания 7 миллисекунд — примерно на 14 мс (два цикла). Однако измерение фактических задержек показывает, что реальность ещё более запутанна. При прерывании таймера, установленном на 7 мс, задержка Sleep(1) в 14 мс даже не самый распространённый результат:

Некоторые читатели могут обвинить случайный шум в системе, но когда частота прерывания таймера 9 мс и выше, шум равен нулю, так что это не может быть объяснением. Попробуйте сами запустить обновлённый код. Особенно противоречивыми кажутся интервалы прерывания таймера от 4 мс до 8 мс. Вероятно, измерения интервалов следует выполнять с помощью QueryPerformanceCounter, поскольку на текущий код беспорядочно влияют изменение правил планирования и изменение точности таймера.

Всё это очень странно, и я не понимаю ни логики, ни реализации. Может, это и ошибка, но я в этом сомневаюсь. Думаю, что за этим стоит сложная логика обратной совместимости. Но самый эффективный способ избежать проблем совместимости — это документировать изменения, желательно заранее, а здесь правки сделаны без какого-либо уведомления.

Это не повлияет на большинство программ. Если процесс хочет более быстрое прерывание таймера, то он сам должен вызвать timeBeginPeriod. Тем не менее, могут возникнуть следующие проблемы:

  • Программа может случайно предположить, что у Sleep(1) и timeGetTime одинаковое разрешение, а это теперь не так. Хотя, такое предположение кажется маловероятным.
  • Программа может зависеть от маленького разрешения таймера, которого не получает. Было несколько сообщений о такой проблеме в некоторых играх — есть инструмент под названием Windows System Timer Tool и ещё один под названием TimerResolution 1.2. Они «исправляют» эти игры, повышая частоту прерываний таймера. Видимо, эти исправления больше не будут работать или будут работать не так хорошо. Возможно, это заставит разработчиков игр выпустить правильные патчи, но до тех пор изменение вызывает проблемы обратной совместимости.
  • В многопроцессной программе главная управляющая программа может повысить частоту прерываний таймера, а затем ожидать, что это повлияет на планирование дочерних процессов. Раньше это было разумное предположение, но теперь оно не работает. Именно так я сам узнал об этой проблеме. Продукт, о котором идёт речь, теперь вызывает timeBeginPeriod в каждом процессе, так что всё в порядке, но несколько месяцев программное обеспечение плохо работало по непонятной причине.

Жертва

Тестовая программа change_interval.cpp работает только в том случае, если никто не запрашивает более высокую частоту прерываний таймера. Поскольку и Chrome, и Visual Studio имеют привычку делать это, мне пришлось проделать большую часть моих экспериментов без доступа в интернет и программируя в блокноте. Кто-то предложил Emacs, но ввязываться в эту дискуссию выше моих сил.

Like this post? Please share to your friends:
  • Системный реестр содержит недопустимые пути файлов невозможно продолжить установку windows 10
  • Системные прерывания грузят процессор windows 10 майнинг
  • Системный реестр ос windows является иерархической базой данных в которой
  • Системный реестр ос windows что это
  • Системный реестр windows 10 как зайти