Чому ігри фризять на Windows 11 (і як знайти справжню причину)

Фриз — це кадр, який прийшов із запізненням, а не низька частота кадрів: причини, які лишають слід, як зрозуміти, яка з них твоя, і що робити з кожною.

Твій лічильник показує 160. Гру все одно смикає — частка секунди, коли картинка зупиняється, приціл опиняється не там, куди ти його вів, а потім усе знову гаразд. Лічильник при цьому не зрушив — і саме тому ніщо з того, що ти робиш, аби його підняти, не допомагає.

Ця розбіжність — і є вся тема цієї сторінки. Фриз — це кадр, який прийшов із запізненням, а не низька частота кадрів. Лічильник кадрів усереднює за секунду, тож один кадр, що тривав 90 мс, зникає серед 159 коротких поруч. Число, яке описує те, що ти відчув, — це час кадру, а фриз — це кадр, значно повільніший за сусідні.

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

Спершу з'ясуй, яка з трьох проблем у тебе

Їх називають одним словом, а спільного в них майже нічого.

Здобудь запис, перш ніж щось міняти

Саме через здогади це затягується на тижні. Запис тієї гри, у яку ти справді граєш, і саме там, де вона справді фризить, перетворює «що це могло б бути» на «що сталося на тому викиді» — і саме він стає тим «до», за яким судять кожну наступну зміну. Як читати результат бенчмарку розповідає як.

Причини, одна за одною

1. Драйвер, який тримає ядро процесора

Поки драйвер перебуває всередині переривання або відкладеного виклику, це ядро працює вище за будь-який пріоритет потоку, який взагалі існує: воно нічого не малює й не читає ввід, доки драйвер не відпустить. Цю причину легко пропустити: її немає ні на графіку часу кадрів, ні в диспетчері завдань.

Як зрозуміти: виміряй. Розділ ядра в як читати тест затримки перелічує кожен драйвер, який тримав ядро, за найдовшим утриманням і з ім'ям файла. Приблизно від 1 мс драйвер витісняє звіти вводу; від 4 мс і вище машина не втримає рівного часу кадру, хоч що б ти ще змінював.

Що робити: онови саме цей один драйвер у виробника заліза — не всю систему, а названий файл. Мережеві драйвери, драйвери накопичувачів і звуку — серед тих, що можуть так робити.

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

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

Як зрозуміти: найгірше це в перші хвилини сеансу або карти, воно згасає, поки ти граєш, і повертається після оновлення драйвера чи гри. Якщо твої фризи не згасають, то це не воно — фризи компіляції шейдерів — це довга версія.

Що робити: переграй це, і не знімай бенчмарк усередині цього вікна — ти вимірював би компілятор.

3. Диск, з якого гра підвантажує дані

Гра, яка підтягує ресурси, поки ти рухаєшся, фризить, коли читання повільне, і кадр, що чекає на ці дані, і є запізнілим.

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

4. Тиск на пам'ять

Коли RAM заповнюється, Windows виносить сторінки на диск, і сторінки, що повертаються, відчуваються як ривки. Менш очевидний випадок — ліміт виділення: коли загальна пам'ять, яку Windows може роздати, добігає кінця, менеджер пам'яті обрізає сторінки в програм, які ще працюють, і гра відчуває ці обрізання як завмирання коротші за секунду. І те, і те кращає в ту саму мить, коли ти закриваєш браузер із сорока вкладками.

5. Запустилося щось іще

Робочий процес Windows Update, завдання обслуговування, заплановане сканування на шкідливе ПЗ, експорт відео, про який ти забув. Ця робота не зупиняється, коли починається гра; вона стає в чергу до того самого ядра, що й потік рендеру, тож проявляється як викиди часу кадру, а не як нижче середнє. Перечекати — цілком законне виправлення.

Як зрозуміти: запис бенчмарку зберігає найдовші інтервали між кадрами разом із роботою диска й жорсткими помилками сторінки, що потрапили в те саме вікно. Якщо це були процеси обслуговування чи антивіруса 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, поки ти не попросиш, а твік зберігає старе значення, перш ніж записати нове. Бути в курсі

Ця сторінка допомогла?

Чого бракувало або що не спрацювало? Ми читаємо кожну таку відповідь.

Якщо ця сторінка не розв'язала проблему, напиши нам — скажи, яку статтю ти читав, і ми виправимо статтю.