Почему игры фризят на Windows 11 (и как найти настоящую причину)
Фриз — это опоздавший кадр, а не низкая частота кадров: причины, которые оставляют след, как понять, какая из них твоя, и что делать с каждой.
Игры на Windows 11 дёргаются, когда отдельные кадры приходят с опозданием, и эта страница разбирает десять причин: от драйвера, который удерживает ядро процессора, и компиляции шейдеров до диска, памяти, фоновой работы, нагрева и самого матча. Чтобы найти настоящую, сделай запись времени кадров, прежде чем что-то менять: счётчик среднего FPS фриз не покажет.
Счётчик показывает 160. Игру всё равно дёргает — доля секунды, за которую картинка замирает, прицел оказывается не там, куда ты его вёл, а потом всё снова в порядке. Счётчик при этом не шелохнулся — поэтому ничего из того, что ты делаешь ради его повышения, не помогает.
Этот разрыв и есть тема всей страницы. Фриз — это опоздавший кадр, а не низкая частота кадров. Счётчик кадров усредняет за секунду, поэтому один кадр длиной 90 мс растворяется среди 159 коротких рядом с ним. Число, описывающее то, что ты почувствовал, — это время кадра, а фриз — это кадр, который сильно медленнее своих соседей.
Сначала честная фраза. Две из десяти причин ниже соответствуют одной галочке в w0a: значение планировщика в причине 8 и фоновая запись игры в причине 9. Обе галочки лишь ставят настройку туда, где ей место, и на машине, которую никто не настраивал, первая не находит, что менять. Был ли твой фриз одной из них, скажет только запись до и после.
Сначала разберись, какая из трёх проблем у тебя
Их называют одним и тем же словом, а общего у них почти нет.
- Рывки. База в порядке, и время от времени случается что-то длинное. Вот это и есть тема этой страницы.
- Неровная база. Ничего драматичного, но игра никогда не ощущается плавной. Это проблема процентилей: Высокий средний FPS, но плохие 1% low.
- Просадка. Частота кадров падает и остаётся внизу секунды или минуты. Причины совсем другие: Внезапные просадки FPS в играх.
Получи запись, прежде чем что-то менять
Недели на это уходят именно из-за догадок. Запись той игры, в которую ты действительно играешь, там, где она действительно фризит, превращает «что бы это могло быть» в «что произошло на этом всплеске» — и она же становится тем «до», по которому судят каждое последующее изменение. Как читать результаты бенчмарка разбирает, как это сделать.
Что вызывает фризы в играх?
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. Используется, только когда средняя пара означает «переменная». |
- Значение Windows по умолчанию:
0x2(двоичное 000010). На редакции для рабочих станций это значит более короткие переменные интервалы, причём программа на переднем плане получает втрое больше времени, чем фоновая. Та же справка даёт0x26(100110: короче, переменно, 3:1) для варианта в параметрах быстродействия, отдающего предпочтение программам, и0x18(011000: дольше, фиксированно, поровну) для варианта, отдающего предпочтение фоновым службам. - Что делает галочка: сначала читает значение. Значение, которое уже даёт переднему плану долю 3:1, без более длинных интервалов и без фиксированных интервалов, остаётся ровно как есть, и галочка так и говорит. Переписывается, на
0x26, только значение, которое не проходит одно из этих трёх условий. На собственном значении Windows по умолчанию галочка ничего не пишет: на клиентской редакции0x2уже планирует так, как просит0x26. - Когда вступает в силу: после перезагрузки. Ядро превращает это значение в свою таблицу планирования при загрузке, так что изменение в реестре ничего не меняет в уже работающем планировщике, и галочка, когда пишет, просит перезагрузку.
- Путь назад: карточка Память и системные значения по умолчанию записывает обратно
2и просит перезагрузку. Заодно она возвращает и другие значения памяти и планировщика по умолчанию.
Причина 9: «Отключить Xbox Game DVR» (страница «Оптимизации»)
| Значение | Что пишет галочка | Значение Windows по умолчанию (его возвращает карточка восстановления) |
|---|---|---|
HKCU\System\GameConfigStore, GameDVR_Enabled | 0 | 1 |
HKLM\SOFTWARE\Policies\Microsoft\Windows\GameDVR, AllowGameDVR | 0 | отсутствует |
HKCU\Software\Microsoft\Windows\CurrentVersion\GameDVR, AppCaptureEnabled | 0 | 1 |
HKCU\Software\Microsoft\GameBar, ShowStartupPanel | 0 | отсутствует |
HKCU\Software\Microsoft\GameBar, UseNexusForGameBarEnabled | 0, кроме Ryzen X3D с двумя CCD | отсутствует |
Все — DWORD. На процессоре X3D с двумя CCD галочка не трогает последнее значение: конвейер записи всё равно выключается, но часть Game Bar, которую слушает драйвер AMD, продолжает работать. Это предосторожность, а не доказанная причина, и сообщение галочки говорит, по какому пути она пошла. Ryzen X3D, Game Bar и парковка ядер объясняет, почему эта часть важна на таких чипах.
- Когда вступает в силу: для этой галочки w0a не просит перезагрузки.
- Чем платишь: записью Game Bar. Если Win+G перестал открываться или запись нужна обратно, карточка Game Bar / запись игр снова включает Game Bar и Game DVR со значениями Windows по умолчанию.
- Что говорит сканер фризов: он отмечает как информацию, когда
GameDVR_EnabledилиAppCaptureEnabledвсё ещё включены; на чистой установке оба равны 1, так что это значение по умолчанию, а не неисправность. Он читает и третье значение,HistoricalCaptureEnabled(фоновая запись), но только чтобы выбрать формулировку; галочка это значение не пишет.
Проверь сам
Эти команды только читают:
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"
Как читать ответы:
- Значения печатаются в шестнадцатеричном виде:
Win32PrioritySeparation REG_DWORD 0x26означает0x26. 0x2— значение Windows по умолчанию, а0x26— вариант из справки, отдающий предпочтение программам; на клиентской редакции оба планируют одинаково.0x18— вариант, отдающий предпочтение фоновым службам: более длинные фиксированные интервалы и никакой доли для переднего плана, а это как раз то, о чём причина 8. Любое другое значение запиши шестью двоичными цифрами и прочитай по таблице выше.- Для Game DVR
0x0означает «выключено» (галочка), а0x1— «включено» (значение Windows по умолчанию). - Если запрос
AllowGameDVRвместо строки завершается ошибкой, значения политики нет — а это и есть значение Windows по умолчанию.
Что со всем этим делает сканер
Что ищет сканер фризов прогоняет эти проверки по тому, что Windows и твои драйверы уже записали, и помечает каждую находку как доказанную, вероятную, кандидата или непроверенную. Две вещи, которые стоит знать: сканер, который всегда находит десять проблем, продаёт тебе решения, а проверка, которая не смогла выполниться, считается отдельно, а не считается по-тихому чистой.
Потом меняй одну вещь и снимай запись той же сцены заново. Пять изменений и одно измерение не говорят ничего о том, какое из них сработало, а всё, что не сдвинуло число, стоит отменить.
Что причиной не является
Всё это бесконечно ходит по рукам как средство от фризов, и w0a отказывается писать каждое из этих значений — по задокументированным причинам:
DisablePagingExecutive,LargeSystemCacheиDisablePageCombiningменяют диспетчер памяти ядра;NtfsMemoryUsageменяет пул драйвера NTFS;IoPageLockLimitиSecondLevelDataCache— тоже допущения ядра. Значения уровня ядра — правило продукта: они не пишутся никогда.GlobalTimerResolutionRequestsживёт вSession Manager\kernel— разделе, который продукт отвергает целиком.MSISupportedпереключает режим прерываний устройства; если выставить его неправильно, результатом может стать чёрный экран.FeatureSettingsOverrideиFeatureSettingsOverrideMaskотключают защиту от Spectre и Meltdown.OverlayTestModeиDisableOverlaysотключают многоплоскостное наложение (MPO). На реальной машине с Windows 11 25H2 они наглухо и воспроизводимо замораживали CS2.TdrDelayиTdrDdiDelayудлиняют сторожевой таймер графического драйвера, от чего каждое зависание лишь длится дольше;TdrLevelотключает восстановление.
На машине, которой памяти хватает, чистильщик памяти не меняет ничего измеримого.
Похожие статьи
- Внезапные просадки FPS в играх
- Фризы компиляции шейдеров
- Как читать тест задержки
- Что ищет сканер фризов
- Высокий средний FPS, но плохие 1% low
- Задержка DPC: когда фризит сам драйвер
- Отмена того, что изменила w0a
Играешь в CS2? Какие параметры запуска ещё что-то делают и где в меню видео на самом деле лежат кадры: Как повысить FPS в CS2 и откуда берутся микрофризы: чек-лист по замерам
3 дня Pro — активируются прямо в приложении через Discord, без карты: Как работает бесплатный триал
Эта страница помогла?
Чего не хватило или что не сработало? Мы читаем каждый такой ответ.
Отправляется только то, что ты напишешь, вместе с названием этой страницы. Наш сервер также записывает IP-адрес подключения, чтобы ограничить злоупотребления, и удаляет его вместе с сообщением. Пожалуйста, не пользуйся этим полем, если тебе меньше 16 лет. Политика конфиденциальности
Если эта страница не решила проблему, напиши нам — скажи, какую статью ты читал, и мы её исправим.