Почему игры фризят на Windows 11 (и как найти настоящую причину)

Фриз — это опоздавший кадр, а не низкая частота кадров: причины, которые оставляют след, как понять, какая из них твоя, и что делать с каждой.

Счётчик показывает 160. Игру всё равно дёргает — доля секунды, за которую картинка замирает, прицел оказывается не там, куда ты его вёл, а потом всё снова в порядке. Счётчик при этом не шелохнулся — поэтому ничего из того, что ты делаешь ради его повышения, не помогает.

Этот разрыв и есть тема всей страницы. Фриз — это опоздавший кадр, а не низкая частота кадров. Счётчик кадров усредняет за секунду, поэтому один кадр длиной 90 мс растворяется среди 159 коротких рядом с ним. Число, описывающее то, что ты почувствовал, — это время кадра, а фриз — это кадр, который сильно медленнее своих соседей.

Сначала честная фраза. Две из десяти причин ниже соответствуют одной галочке в w0a: значение планировщика в причине 8 и фоновая запись игры в причине 9. Обе галочки лишь ставят настройку туда, где ей место, и на машине, которую никто не настраивал, первая не находит, что менять. Был ли твой фриз одной из них, скажет только запись до и после.

Сначала разберись, какая из трёх проблем у тебя

Их называют одним и тем же словом, а общего у них почти нет.

Получи запись, прежде чем что-то менять

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

Причины, одна за другой

1. Драйвер, удерживающий ядро процессора

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

Как это понять: измерить. Раздел ядра в Как читать тест задержки перечисляет каждый драйвер, удержавший ядро, по самому долгому удержанию и с именем файла. Начиная примерно с 1 мс драйвер вытесняет отчёты ввода; от 4 мс и выше машина не удержит ровное время кадра, что бы ты ещё ни менял.

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

2. Компиляция шейдеров

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

Как это понять: хуже всего в первые минуты сессии или карты, по ходу игры сходит на нет и возвращается после обновления драйвера или игры. Если твои фризы на нет не сходят — это не оно; Фризы компиляции шейдеров — развёрнутая версия.

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

3. Диск, с которого игра подгружает данные

Игра, подтягивающая ассеты по мере твоего движения, фризит, когда чтение медленное, и опоздавшим оказывается тот кадр, который ждал эти данные.

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

4. Давление на память

Когда RAM заполняется, Windows выгружает страницы на диск, и возвращающиеся страницы ощущаются как рывки. Менее очевидный случай — предел выделения: когда общий объём памяти, который Windows может раздать, подходит к концу, диспетчер памяти отбирает страницы у ещё работающих программ, и игра чувствует эти отъёмы как подвисания меньше секунды. И то и другое становится лучше в тот момент, когда ты закрываешь браузер с сорока вкладками.

5. Работает что-то ещё

Рабочий процесс Центра обновления Windows, задача обслуживания, запланированная проверка на вредоносные программы, забытый экспорт видео. Эта работа не прекращается, когда запускается игра: она встаёт в очередь к тому же ядру, что и поток отрисовки, и поэтому проявляется всплесками времени кадра, а не снижением среднего. Переждать — законное решение.

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

6. Нагрев и лимиты мощности

Когда чип упирается в свой потолок по температуре или по мощности, частота раз за разом опускается и снова поднимается, и изнутри это ощущается как волнистые времена кадров. Решение принимает сама прошивка, не спрашивая Windows. Начинается это не сразу, а спустя какое-то время, и следует за тем, насколько тепло в комнате.

7. Дисплей

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

8. Значение планировщика, оставшееся от старой программы

Win32PrioritySeparation решает, как долго поток удерживает процессор и насколько больше времени получает приложение на переднем плане. Значения с длинными или фиксированными квантами или с долей переднего плана ниже 3:1 меняют то, как процессор делится между игрой и всем остальным; что это делает со временем кадра, не измерялось. Карточка Память и системные значения по умолчанию на странице Fix возвращает значение Windows по умолчанию.

9. Оверлеи и слой записи

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

10. Матч, а не машина

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

Две причины, для которых у w0a есть галочка

Причина 8: «Держать приоритет активного окна на правильном значении (Win32PrioritySeparation)» (страница «Оптимизации»)

Одно значение DWORD: Win32PrioritySeparation в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl.

Справка Microsoft о нём — архивная страница, написанная для Windows 2000; она описывает шесть битов, которые читаются тремя парами и записываются как AABBCC:

ПараЧто решаетЗначения
AA (два старших бита)Как долго поток может работать за один раз01 дольше, 10 короче, 00 или 11 — значение по умолчанию для редакции (на редакции для рабочих станций — короче)
BB (два средних)Меняется ли эта длительность01 переменная, 10 фиксированная, 00 или 11 — значение редакции по умолчанию (на редакции для рабочих станций — переменная)
CC (два младших)Насколько больше времени получает программа на переднем плане00 поровну (и фиксированно), 01 2:1, 10 или 11 3:1. Используется, только когда средняя пара означает «переменная».

Причина 9: «Отключить Xbox Game DVR» (страница «Оптимизации»)

ЗначениеЧто пишет галочкаЗначение Windows по умолчанию (его возвращает карточка восстановления)
HKCU\System\GameConfigStore, GameDVR_Enabled01
HKLM\SOFTWARE\Policies\Microsoft\Windows\GameDVR, AllowGameDVR0отсутствует
HKCU\Software\Microsoft\Windows\CurrentVersion\GameDVR, AppCaptureEnabled01
HKCU\Software\Microsoft\GameBar, ShowStartupPanel0отсутствует
HKCU\Software\Microsoft\GameBar, UseNexusForGameBarEnabled0, кроме Ryzen X3D с двумя CCDотсутствует

Все — DWORD. На процессоре X3D с двумя CCD галочка не трогает последнее значение: конвейер записи всё равно выключается, но часть Game Bar, которую слушает драйвер AMD, продолжает работать. Это предосторожность, а не доказанная причина, и сообщение галочки говорит, по какому пути она пошла. Ryzen X3D, Game Bar и парковка ядер объясняет, почему эта часть важна на таких чипах.

Проверь сам

Эти команды только читают:

reg query "HKLM\SYSTEM\CurrentControlSet\Control\PriorityControl" /v Win32PrioritySeparation
reg query "HKCU\System\GameConfigStore" /v GameDVR_Enabled
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\GameDVR"
reg query "HKLM\SOFTWARE\Policies\Microsoft\Windows\GameDVR" /v AllowGameDVR
reg query "HKCU\Software\Microsoft\GameBar"

Как читать ответы:

Что со всем этим делает сканер

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

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

Что причиной не является

Всё это бесконечно ходит по рукам как средство от фризов, и w0a отказывается писать каждое из этих значений — по задокументированным причинам:

На машине, которой памяти хватает, чистильщик памяти не меняет ничего измеримого.

Похожие статьи

Играешь в CS2? Какие параметры запуска ещё что-то делают и где в меню видео на самом деле лежат кадры: Как повысить FPS в CS2 и откуда берутся микрофризы: чек-лист по замерам

w0a не меняет ни одной настройки Windows, пока ты не попросишь, а твик сохраняет старое значение, прежде чем записать новое. Сообщить мне

Эта страница помогла?

Чего не хватило или что не сработало? Мы читаем каждый такой ответ.

Если эта страница не решила проблему, напиши нам — скажи, какую статью ты читал, и мы её исправим.