Windows 11'de oyunlar neden takılıyor (ve gerçek sebep nasıl bulunur)

Takılma, geç gelmiş bir karedir; düşük bir kare hızı değil — iz bırakan sebepler, hangisinin seninki olduğunu nasıl anlarsın, ve her biri için ne yapılır.

Sayacın 160 diyor. Oyun yine de sarsılıyor — saniyenin bir kesirinde görüntü duruyor, nişanın koymadığın bir yere iniyor, sonra her şey yeniden yolunda. Sayaç hiç kıpırdamadı; onu yükseltmek için yaptığın hiçbir şeyin işe yaramamasının sebebi de bu.

Bu sayfanın konusu tam olarak o aralık. Takılma, geç gelmiş bir karedir; düşük bir kare hızı değil. Bir kare sayacı bir saniye boyunca ortalama alıyor, yani 90 ms süren tek bir kare, yanındaki 159 kısa karenin içinde kayboluyor. Hissettiğini anlatan sayı kare süresi, ve bir takılma, komşularından çok daha yavaş bir kare.

Önce dürüst cümle. Aşağıdaki on sebepten ikisi w0a'da tek bir kutuya karşılık geliyor: 8. sebepteki zamanlayıcı değeri ve 9. sebepteki arka plan oyun kaydedicisi. İki kutu da yalnızca bir ayarı olması gereken yere koyuyor, ve kimsenin ayarlamadığı bir makinede ilki değiştirecek hiçbir şey bulmuyor. Hissettiğin takılmanın bunlardan biri olup olmadığını sana yalnızca önce ve sonra alınmış bir kayıt söyleyebilir.

Önce, üç sorundan hangisinin sende olduğunu belirle

Aynı sözcükle anılıyorlar ve neredeyse hiçbir ortak yanları yok.

Bir şey değiştirmeden önce kayıt al

Bunu haftalara yayan şey tahmin etmek. Gerçekten oynadığın oyunun, gerçekten takıldığı yerde alınmış bir ölçüm koşusu, "ne olabilir" sorusunu "o sıçramada ne oldu" sorusuna çeviriyor — üstelik sonraki her değişikliğin karşısına konacak "önce" o. Nasıl olduğunu benchmark'ı okumak anlatıyor.

Sebepler, tek tek

1. Bir işlemci çekirdeğini tutan bir sürücü

Bir sürücü bir kesmenin ya da bir ertelenmiş çağrının (DPC) içindeyken o çekirdek var olan her iş parçacığı önceliğinin üstünde çalışıyor: sürücü bırakana kadar hiçbir şey çizmiyor ve hiçbir girdi okumuyor. Gözden kaçması kolay: hiçbir kare süresi grafiğinde ve hiçbir görev yöneticisinde görünmüyor.

Nasıl anlarsın: ölç. Gecikme testini okumak sayfasının çekirdek bölümü, bir çekirdeği tutan her sürücüyü en uzun tutuşa göre, dosya adıyla listeliyor. Yaklaşık 1 ms'nin ötesinde bir sürücü girdi raporlarının yerini alıyor; 4 ms ve üstünde, başka ne değiştirirsen değiştir makine kararlı bir kare süresi tutamıyor.

Ne yaparsın: o tek sürücüyü donanım üreticisinden güncelle — bütün sistemi değil, adı geçen dosyayı. Bunu yapabilen sürücüler arasında ağ, depolama ve ses sürücüleri de var.

2. Derlenen shader'lar

Yeni efekt, yeni bölge, yeni silah, ve oyunun bunu çizebilmek için önce bir shader derlemesi gerekiyor. Derleme, kare beklerken işlemcide oluyor.

Nasıl anlarsın: bir oturumun ya da bir haritanın ilk dakikalarında en kötüsü, sen oynadıkça sönüyor, ve bir sürücü ya da oyun güncellemesinden sonra geri geliyor. Takılman sönmüyorsa sebep bu değil — uzun hâli shader derleme takılması.

Ne yaparsın: oynayarak geç, ve o pencerenin içinde benchmark alma; derleyiciyi ölçmüş olursun.

3. Oyunun akış yaptığı disk

Sen ilerledikçe varlıkları içeri çeken bir oyun, okuma yavaş olduğunda takılıyor, ve o veriyi bekleyen kare, geç kalan kare oluyor.

Nasıl anlarsın: takılmalar yeni bir bölgeye girmekle örtüşüyor, ve uzun kare aralıkları disk etkinliğiyle aynı pencereye düşüyor. Bariz olanlara bak: oyun mekanik bir diskte mi, disk dolmak üzere mi, oyun klasörü her yazmayı yükleyen bulut senkronlu bir klasörün içinde mi, sayfa dosyası dönen bir diskte mi. Akış yapan bir oyun için SSD bir tweak değil, cevabın kendisi.

4. Bellek baskısı

RAM dolduğunda Windows sayfaları diske taşıyor, ve geri gelen sayfalar takılma olarak hissediliyor. Daha az bariz olan durum ayırma limiti: Windows'un dağıtabileceği toplam bellek azaldıkça bellek yöneticisi hâlâ çalışan programlardan sayfa kırpıyor, ve oyun bu kırpmaları saniyenin altında donmalar olarak hissediyor. Kırk sekmeli bir tarayıcıyı kapattığın an ikisi de düzeliyor.

5. Başka bir şey çalışıyor

Windows Update'in işçisi, bir bakım görevi, zamanlanmış bir kötü amaçlı yazılım taraması, unuttuğun bir video dışa aktarımı. Bir oyun başlayınca o iş durmuyor; render iş parçacığıyla aynı çekirdek için kuyruğa giriyor, yani kendini düşük bir ortalama olarak değil, kare süresi sıçramaları olarak gösteriyor. Bitmesini beklemek meşru bir çözüm.

Nasıl anlarsın: bir ölçüm koşusu en uzun kare aralıklarını, aynı pencereye düşen disk işi ve hard fault'larla birlikte saklıyor. Bunlar Windows bakım ya da antivirüs süreçleriyse uzun aralık kartı kaç aralık olduğunu sayıp süreçleri adlandırıyor. Bu birlikte düşen şey, o işin kareyi geciktirdiğinin kanıtı değil: antivirüs herhangi bir programın açtığı her dosyayı okur.

6. Isı ve güç limitleri

Bir yonga sıcaklık ya da güç tavanına vurduğunda frekans tekrar tekrar aşağı çekilip yukarı itiliyor, ve içeriden bakınca bu, dalgalı kare süreleri gibi hissettiriyor. Bu kararı firmware, Windows'a sormadan kendi veriyor. Hemen değil, bir süre sonra başlıyor, ve odanın ne kadar sıcak olduğuyla birlikte gidiyor.

7. Ekran

Desteklediği yenileme hızının altında çalışan bir monitör, donanımın gerektirmediği bir tabanı kare temponun altına koyuyor. Varsaymak yerine gerçek hıza bak; yeni bir kurulumdan ya da bir kablo değişiminden sonra şaşırtıcı sayıda makinede yanlış.

8. Eski bir aracın geride bıraktığı bir zamanlayıcı değeri

Win32PrioritySeparation, bir iş parçacığının işlemciyi ne kadar tuttuğuna ve ön plandaki uygulamanın ne kadar fazla zaman aldığına karar veriyor. Uzun ya da sabit kuantum kullanan veya ön plana 3:1'in altında pay veren değerler, işlemcinin oyunla geri kalan her şey arasında nasıl paylaşıldığını değiştiriyor; bunun kare sürelerine ne yaptığı ölçülmedi. Fix sayfasının Bellek ve sistem varsayılanları kartı Windows varsayılanını geri koyuyor.

9. Overlay'ler ve kayıt katmanı

Overlay'ler oyunun kendi karesinin içine çiziyor, ve arka plandaki bir kaydedici, son birkaç dakika kaydedilebilsin diye her kareyi kodluyor. Hepsini birden değil, teker teker kapatıp test et.

10. Maç, makine değil

Çevrimiçi bir oyun sunucudaki herkes için aynı anda takılabiliyor. Aynı makinedeki tek oyunculu içerik temizse ve kare süresi kaydı oyunun normal sunum yaptığını gösteriyorsa, bu gerçekten işe yarar bir cevap: sorun senin bilgisayarın değil.

w0a'nın kutusu olan iki sebep

8. sebep: "Ön plan önceliğini doğru değerde tut (Win32PrioritySeparation)" (Optimizasyonlar sayfası)

Tek bir DWORD değeri: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl altındaki Win32PrioritySeparation.

Microsoft'un bunun için başvuru kaynağı, Windows 2000 için yazılmış arşivlenmiş bir sayfa; AABBCC diye yazılan ve üç çift hâlinde okunan altı biti anlatıyor:

ÇiftNeye karar verirDeğerler
AA (en yüksek iki bit)Bir iş parçacığının her seferinde ne kadar çalışabileceğine01 daha uzun, 10 daha kısa, 00 ya da 11 sürümün kendi varsayılanı (iş istasyonu sürümünde daha kısa)
BB (ortadaki iki bit)O uzunluğun değişip değişmediğine01 değişken, 10 sabit, 00 ya da 11 sürümün varsayılanı (iş istasyonu sürümünde değişken)
CC (en düşük iki bit)Ön plandaki programın ne kadar fazla zaman aldığına00 eşit (ve sabit), 01 2:1, 10 ya da 11 3:1. Yalnızca ortadaki çift değişken anlamına geldiğinde kullanılır.

9. sebep: "Xbox Game DVR'ı kapat" (Optimizasyonlar sayfası)

DeğerKutunun yazdığıWindows varsayılanı (onarım kartının geri getirdiği)
HKCU\System\GameConfigStore, GameDVR_Enabled01
HKLM\SOFTWARE\Policies\Microsoft\Windows\GameDVR, AllowGameDVR0yok
HKCU\Software\Microsoft\Windows\CurrentVersion\GameDVR, AppCaptureEnabled01
HKCU\Software\Microsoft\GameBar, ShowStartupPanel0yok
HKCU\Software\Microsoft\GameBar, UseNexusForGameBarEnabled0; çift CCD'li Ryzen X3D'de hariçyok

Hepsi DWORD. Çift CCD'li bir X3D işlemcide kutu son değere dokunmuyor: kayıt hattı yine kapatılıyor, ama AMD sürücüsünün dinlediği Game Bar parçası çalışmaya devam ediyor. Bu bir ihtiyat, kanıtlanmış bir sebep değil, ve kutunun mesajı hangi yolu izlediğini söylüyor. O parçanın bu yongalarda neden önemli olduğunu Ryzen X3D, Game Bar ve çekirdek park etme anlatıyor.

Kendin kontrol et

Bu komutlar yalnızca okuyor:

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"

Cevaplar nasıl okunur:

Taramanın bütün bunlarla yaptığı

Takılma taraması neye bakıyor, bu kontrolleri Windows'un ve sürücülerinin zaten kaydettiği şeylere karşı koşturuyor ve her bulguyu kanıtlanmış, olası, aday ya da bakılmadı diye etiketliyor. Bilmeye değer iki şey: her seferinde on sorun bulan bir tarama sana çözümlerini satıyor, ve koşamayan bir kontrol sessizce temiz sayılmak yerine sayılıyor.

Sonra tek bir şeyi değiştir ve aynı sahneyi yeniden ölç. Beş değişiklik ve tek ölçüm, hangisinin fark ettiği hakkında sana hiçbir şey söylemiyor, ve bir sayıyı kıpırdatmayan ne varsa geri alınmalı.

Sebep olmayanlar

Bunlar takılma çözümü diye durmadan dolaşıyor, ve w0a her birini, kayıtlı gerekçelerle, yazmayı reddediyor:

Belleği kıt olmayan bir makinede bir bellek temizleyici ölçülebilir hiçbir şeyi değiştirmiyor.

İlgili

CS2 mi oynuyorsun? Hangi başlatma seçeneğinin hâlâ bir şey yaptığı ve görüntü menüsünde karelerin asıl nerede olduğu: CS2'de FPS nasıl artırılır, kasma neden olur? Ölçüme dayalı kontrol listesi

w0a sen istemeden hiçbir Windows ayarını değiştirmez; bir optimizasyon yeni bir değer yazmadan önce eskisini kaydeder. Haber al

Bu sayfa yardımcı oldu mu?

Eksik olan neydi, ya da ne işe yaramadı? Bunların hepsini okuyoruz.

Bu sayfa sorununu çözmediyse bize yaz — hangi makaleyi okuduğunu da ekle, o makaleyi düzeltelim.