DPC gecikmesi — takılmanın sebebi bir sürücüyse

Kesme içindeki bir sürücü makinedeki her iş parçacığının üstünde çalışır, yani hiçbir görev yöneticisinde ve hiçbir kare süresi grafiğinde görünmez — bunun bedeli, dürüstçe nasıl ölçüleceği, hangi dosyanın hangi cihaz olduğu ve işe yarayan tek çözüm.

Listeyi baştan sona gezdin. Hiçbir şey çalışmıyor, sıcaklıklar iyi, disk hızlı, oyun SSD'de, ve makine hâlâ sarsılıyor. Görev Yöneticisi boşta bir sistem gösteriyor. Kare süresi grafiği geç kareyi gösteriyor ama neden geç kaldığı hakkında hiçbir şey söylemiyor.

Tam bu şekli açıklayan tek bir sebep var, ve çoğu insanın uzandığı her araçta görünmez; çünkü onların altında oluyor.

Önce dürüst cümle. Bir çekirdeği tutan sürücünün çaresi, üreticisinden gelen o sürücünün kendisi. w0a'nın payı ölçüm, dosya adı ve eski araçların geride bıraktığı değerleri onarmak. Eskiden bu konunun yanında sunduğu tek anahtar — bir cihazın kesmelerini seçilen çekirdeklere yönlendirmek — 8 Ekim 2026'dan beri salt okunur, çünkü hiçbir oyun A/B testi onunla kazanılmış tek bir kare göstermedi.

Aslında ne oluyor

Bir cihaz — bir ağ kartı, bir disk denetleyicisi, bir ses yongası, bir USB denetleyicisi — işlemcinin ilgisine ihtiyaç duyuyor. Bir kesme kaldırıyor, ve Windows sürücünün kesme hizmet yordamını anında çalıştırıyor. O yordam var olan her iş parçacığı önceliğinin üstünde çalışıyor: "yüksek öncelik" değil, iş parçacığı zamanlayıcısının tamamen dışında. O yordam dönene kadar o çekirdekte başka hiçbir şey zamanlanamıyor.

Orası pahalı bir yer olduğu için, sürücülerin orada en azını yapıp gerisini bir ertelenmiş çağrıya — bir DPC'ye — bırakması bekleniyor; o da bir an sonra, hâlâ o çekirdekteki her iş parçacığının önünde çalışıyor.

İkisinden biri çalışırken o çekirdek hiçbir şey çizmiyor ve hiçbir girdi okumuyor. Render iş parçacığın oradaysa karen geç kalıyor. Fare raporun onun arkasında kuyruğa girdiyse girdin geç kalıyor. Ve ikisi de bir görev yöneticisinde görünmüyor, çünkü olayı yükleyecek bir süreç yok.

Bir milisaniye burada neden çok

Bunun peşine düşmeye değmesinin sebebi aritmetik:

Ölçmek, ve ölçümün iki bozulma yolu

w0a'nın Gecikme Testi sayfası bir çekirdek izleme oturumu açıyor ve on iki saniyelik gerçek fare hareketi boyunca her sürücünün bir çekirdeği ne kadar tuttuğunu kaydediyor. Yönetici hakkı gerekiyor. Sürenin gerekçesini testin neden 12 saniye istediği, renkleri ise gecikme testini okumak anlatıyor.

İki sonuç cevap değildir, ve ikisi de "temiz"e yuvarlanmak yerine oldukları gibi raporlanıyor:

Bir üçüncüsü daha var, daha ince: olay düşüren bir oturum en kötü çalışmayı tamamen kaçırmış olabilir, bu yüzden sayfa sayının gerçek en kötü olmayabileceğini söylüyor. Bu, takılma taramasının her yerde uyguladığı ilkenin aynısı — çalıştırılamayan bir kural bakılmadı sayılır, asla temiz sayılmaz.

Sayılar, tam olarak

SayıKural
Test uzunluğuVarsayılan olarak on iki saniye: saniyede bir kez yanlış davranan bir sürücüyü yakalayacak kadar uzun, fareyi baştan sona gerçekten hareket ettirmeye devam edeceğin kadar kısa.
Yeterli fare verisiCihazın kendi raporlarından iki saniye, ve asla 250 örnekten az değil; 1000 Hz'lik bir fare için bu 2.000. Bunun altında 99. yüzdelik bir istatistik değil, ikinci ya da üçüncü en kötü örnek.
Sürücü hükmüBir sürücünün en kötü tek çalışması 1 ms'den itibaren uyarı, 4 ms'den itibaren kritik olarak işaretleniyor. Bunlar bu alanın yirmi yıldır kullandığı çizgiler; w0a'nın senin makinende yaptığı bir ölçüm değil, bir gelenek.
Tam bir ölçümSürücü rakamları yalnızca çekirdek yarısı koştuysa ve onun kaydedicisi hiçbir olay düşürmediyse tam sayılıyor. Cevap vermeyi reddeden bir sayaç temiz bir koşu gibi değil, kayıplı bir koşu gibi ele alınıyor.
Sistem tabanıFare 99. yüzdeliği, artı yarım yenileme aralığı, artı en kötü sürücü çalışması — sonuncusu yalnızca çekirdek yarısı ölçüldüyse; çünkü ölçülmemiş bir çekirdek için sıfır eklemek, aracın en az bildiği anda daha iyi görünen bir sayı basmak olurdu. Bu bir taban, asla bir toplam değil: oyunun kendi girdi örneklemesi, render kuyruğu, GPU'nun işi ve panelin tepkisi hepsi onun dışında. Zincirin geri kalanı hiçbir yazılımın düzeltemediği girdi gecikmesi.

Listeyi okumak

Her sürücü dosya adıyla, en uzun tek tutuşuyla, ölçülen zaman içindeki payıyla ve kaç kez çalıştığıyla görünüyor. En uzun tutuşa göre sırala; sana bir kareye mal olan sayı odur.

İnsanların yanlış okuduğu iki şey:

Hangi dosya hangisi, ve her biri için ne yapılır

İpucunun tamamı dosya adı, ve çözümü ait olduğu aile belirliyor:

AileNe olduğuGerçekten ne işe yarar
Kablosuz ağWi-Fi bağdaştırıcısının sürücüsüWindows Update'in verdiği genel sürücü yerine üreticinin kendi sürücüsü. Kablo satırı tamamen kaldırıyor.
Kablolu ağAnakart üzerindeki ya da takma ağ kartıAnakart üreticisinin sürücüsü. Kesme yumuşatmayı kapatmak bu satırın çaresi değil: kapalıyken paketler artık toplanmaz, gelen her paket kendi kesmesini doğurur ve sürücü daha az değil, daha sık çalışır. İnternet sayfası bu yüzden altıdan az fiziksel çekirdekli makinelerde kesme yumuşatmaya dokunmuyor — bkz. ağ tweakleri.
DepolamaDiskine giden yoldaki denetleyiciNVMe'de Windows'un kendi sürücüsünü ve üreticininkini dene; gecikme testinde hangisi daha düşük çıkıyorsa onu tut. Üçüncü taraf bir depolama sürücüsü kaldırılmaya değer.
USBAna denetleyiciYonga seti sürücüleri, ve fareyi bir hub'ın arkasından alıp anakart üzerindeki bir porta takmak.
SesKodek, ve üstüne katmanlanan her şeyÜreticinin sürücüsü; sürüyorsa Windows'un genel ses sürücüsü bunu genellikle düşürüyor. RGB ve ses yardımcı programları bu yolda çalışıyor.
EkranGrafik sürücüsüÜreticinin kendi sitesi. Bir güncellemeden sonra başladıysa önceki sürüme geri dön.
Windows'un kendi bileşenleriBaşka bir sürücü adına harcanan zamanKendi başına "güncellenecek" bir şeyi yok — yukarıdaki sürücüleri düzeltmek bu satırı da düşürüyor.
Güç yönetimiFrekansı ve boşta durumlarını değiştiren yolİşlemcinin minimum durumunu yükseltmek ve firmware'de C-state derinliğini azaltmak, ikisi de bunu kısaltıyor ve ikisi de boştaki güç tüketimini artırıyor. Bu bir takas, düzeltme değil.

Bir filtre sürücüsü burada kendi satırını hak ediyor. Trafik şekillendiren ve bağlantı yönlendiren araçlar her paketi kendi sürücülerinden geçiriyor, ve saniyelerce süren ağ takılmaları onların en bilinen yan etkisi; takılma taraması bulduğunda bunları adlandırıyor. Aynısı, fare ve klavye yoluna bir filtre kuran makro paketleri ve aydınlatma araçları için de geçerli.

Çözüm, ve çözüm olmayanlar

Çözüm, o tek sürücüyü donanım üreticisinden güncellemek. Bütün sistemi değil, bir sürücü güncelleyici araç üzerinden değil, ve Windows'u yeniden kurarak değil. Sayfa dosyayı tam adıyla yazıyor, hangi cihaza ait olduğunu aratabilirsin.

Bunu düzeltmeyen ve bu yüzden burada reddedilenler: zamanlayıcı çözünürlüğü zorlamaları, çekirdek bellek yönetimi değerleri (DisablePagingExecutive, LargeSystemCache) ve "gecikme" sözcüğünün altında dolaşan kayıt defteri listeleri. Hiçbiri bir sürücünün çekirdeği ne kadar tuttuğunu değiştirmiyor, çünkü tutan şey sürücünün kendi kodu. Rastgele cihaz kapatmak da bir teşhis değil — gerçi tek bir cihazı deneme olarak, öncesinde ve sonrasında bir ölçümle kapatmak gayet iyi bir deney. Aynısı bu listelerle birlikte dolaşan cihaz seviyesindeki değerler için de geçerli: MSISupported bir cihazın kesme modunu değiştiriyor, ve yanlış ayarlanırsa sonuç siyah bir ekran olabilir; bu yüzden w0a onu asla yazmıyor, aşağıdaki kesme yönlendirme onarım kartı da ona dokunmuyor.

w0a'nın bu konunun yanında dokunduğu iki ayar

Cihaz kesme politikası: salt okunur, bir onarım kartıyla

Windows'un onu tuttuğu yer: cihaz başına, HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\<device>\<instance>\Device Parameters\Interrupt Management\Affinity Policy altında. DevicePolicy (DWORD) cihazın kesmelerinin nasıl yerleştirileceğini seçiyor; 4 olduğunda, yani "belirtilen işlemciler", AssignmentSetOverride kesmelerin kullanabileceği işlemcilerin maskesi.

Windows varsayılanı: iki değer de yok. Windows o zaman yerleşimi kendisi hesaplıyor, ve Microsoft uygulanabildiği her yerde varsayılan politikayı öneriyor.

w0a'nın yaptığı: bu değerleri okuyor ve yazmıyor. Gecikme Testi sayfasından eskiden sunduğu yönlendirme 8 Ekim 2026'dan beri yok, üç sebeple: hiçbir oyun A/B testi onunla kazanılmış bir kare göstermedi, Microsoft Windows'un hesapladığı yerleşimi öneriyor, ve yanlış bir maske başlamayan bir cihaz demek.

Geri dönüş yolu: bir araç bir cihazın kesmelerini sabitlediyse ve bir şey bozulduysa — kopan bir fare, Aygıt Yöneticisi'nde "Kod 10" — cihaz kesme yönlendirmesi kartı iki değeri de her PCI cihazından siliyor; eski w0a sürümlerinin bıraktığı yönlendirme dahil. Yalnızca gerçekten bir şey kaldırdıysa yeniden başlatma istiyor, ve MSISupported'a dokunmuyor.

"Yük altında: akış denetimi, kesme yumuşatma, segment birleştirme kapalı" (İnternet sayfası)

Yazdığı: onu bildiren her ağ bağdaştırıcısında *FlowControl anahtar sözcüğüne 0. *InterruptModeration, *RscIPv4 ve *RscIPv6 yalnızca en az altı fiziksel çekirdekli makinelerde ve yalnızca 2,5 Gbit/s'nin altında çalıştığı bilinen bağdaştırıcılarda yazılıyor; o makinelerde, zaten kapalı değilse, segment birleştirmeyi ağ yığını düzeyinde de kapatıyor.

Kesme yumuşatma küçük makinelerde neden açık kalıyor: yumuşatma da birleştirme de kapalıyken alınan her paket, yumuşatma aralığı başına bir kesme yerine kendi kesmesini doğuruyor, ve ertelenmiş çağrı yükü paketi alan çekirdeğe biniyor. Yani yumuşatmayı kapatmak Gecikme Testi'ndeki ağ sürücüsü satırını kısaltmanın bir yolu değil: w0a'nın kendi anlatımına göre kaldırdığı şey, bir paketin toplama zamanlayıcısı dolana kadar bağdaştırıcıda geçirdiği onlarca ila yüzlerce mikrosaniyelik bekleme; eklediği ise paket başına bir kesme. Sürücü listesine etkisi ölçülmedi. Senin satırın ağ sürücüsüyse testi kutu uygulanmışken ve uygulanmamışken koştur.

Kutunun kendisinin vaat ettiği: yük altındaki ping'de mikrosaniyeler. Mesajı ortalama ping'in değişmediğini söylüyor.

Ne zaman geçerli olur: bağdaştırıcı yeniden başladığında; w0a bir şey yazdığı her seferinde yeniden başlatma istiyor.

Geri dönüş yolu: ağ kartı boşaltma ayarları kartı boşaltmaları, kesme yumuşatmayı, Enerji Verimli Ethernet'i, seçici askıya almayı ve alım tamponlarını, sürücünün bildirdiği şekliyle sürücünün kendi varsayılanlarına geri koyuyor.

Kendin kontrol et

Bu komutlar yalnızca okuyor. Komut İstemi'nde ya da PowerShell'de:

reg query "HKLM\SYSTEM\CurrentControlSet\Enum\PCI" /s /v DevicePolicy
reg query "HKLM\SYSTEM\CurrentControlSet\Enum\PCI" /s /v AssignmentSetOverride

End of search: 0 match(es) found., hiçbir cihazın bir geçersiz kılma taşımadığı demek: Windows varsayılanı. Bir eşleşme, bulunduğu anahtarın altında listeleniyor, ve o yolun PCI kısmı cihazı tanımlıyor.

Ağ bağdaştırıcısı için, PowerShell'de:

Get-NetAdapterAdvancedProperty -Name "*" -RegistryKeyword "*FlowControl","*InterruptModeration","*RscIPv4","*RscIPv6" -AllProperties

Bu, İnternet sayfasındaki kutunun yazabildiği dört anahtar sözcük için her bağdaştırıcının mevcut ayarını listeliyor. Bir anahtar sözcükte görünmeyen bir bağdaştırıcı onu bildirmiyor, ve kutu oraya hiçbir şey yazmıyor.

Sonra yeniden ölç

Aynı yöntem, aynı on iki saniye, aynı makine. Sayfa önceki koşunla karşılaştırıyor ve %5'in altındaki bir değişikliği iyileşme olarak değil, değişiklik yok olarak raporluyor; çünkü dokunulmamış bir makinedeki iki koşu zaten yüzde birkaç farklı çıkıyor — el her seferinde başka türlü hareket ediyor.

Sürücü satırı düştü ama takılma düşmediyse gerçek bir şey öğrendin: sebep bu değildi, ve listenin geri kalanı Windows 11'de oyunlar neden takılıyor sayfasında. Elindeki bir sarsıntı değil de düşüp aşağıda kalan bir kare hızıysa, sebep zaten hiç bu değildi — onun listesi oyunlarda ani FPS düşmeleri.

İ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.