7: kd> KnL
# Child-SP RetAddr Call Site
00 ffff9301`b9c60c88 fffff801`18435582 nt!KeBugCheckEx
01 ffff9301`b9c60c90 fffff801`18250b2d nt!KeAccumulateTicks+0x1e7c72
02 ffff9301`b9c60cf0 fffff801`18249061 nt!KiUpdateRunTime+0x5d
03 ffff9301`b9c60d40 fffff801`1824af23 nt!KiUpdateTime+0x4a1
04 ffff9301`b9c60e80 fffff801`18248132 nt!KeClockInterruptNotify+0x2e3
05 ffff9301`b9c60f30 fffff801`182ab485 nt!HalpTimerClockInterrupt+0xe2
06 ffff9301`b9c60f60 fffff801`183ffb8a nt!KiCallInterruptServiceRoutine+0xa5
07 ffff9301`b9c60fb0 fffff801`184003b7 nt!KiInterruptSubDispatchNoLockNoEtw+0xfa
08 ffffcf89`0a697290 fffff801`183656b3 nt!KiInterruptDispatchNoLockNoEtw+0x37
09 ffffcf89`0a697428 fffff801`18248460 nt!HalpTscQueryCounterOrdered+0x3
0a ffffcf89`0a697430 fffff801`1a098538 nt!KeStallExecutionProcessor+0x120
0b ffffcf89`0a6974b0 fffff801`1a070d96 storport!StorDelayExecution+0xdc
0c ffffcf89`0a6974f0 fffff801`1a13ccf0 storport!StorPortExtendedFunction+0x1716
0d ffffcf89`0a6975c0 fffff801`1a13c245 stornvme!WaitForCommandCompleteWithCustomTimeout+0xd4
0e ffffcf89`0a6976e0 fffff801`1a12e19d stornvme!NVMeSyncHostTime+0x179
0f ffffcf89`0a697720 fffff801`1a12e3fa stornvme!NVMeControllerInitPart3+0x189
10 ffffcf89`0a6977c0 fffff801`1a1261b4 stornvme!NVMeControllerPowerUp+0x62
11 ffffcf89`0a6977f0 fffff801`1a073da8 stornvme!NVMeHwAdapterControl+0x134
12 ffffcf89`0a697880 fffff801`1a09ee17 storport!RaCallMiniportAdapterControl+0x24
13 ffffcf89`0a6978b0 fffff801`1a088c3d storport!RaidAdapterSendPowerToMiniport+0x6b
14 ffffcf89`0a697900 fffff801`18254975 storport!RaidAdapterPowerUpDeviceCompletion+0x141bd
15 ffffcf89`0a697940 fffff801`182547b7 nt!IopfCompleteRequest+0x1a5
16 ffffcf89`0a697a20 fffff801`19bc22e0 nt!IofCompleteRequest+0x17
17 ffffcf89`0a697a50 fffff801`18363c29 pci!PciPowerUpDeviceTimerCallback+0x4d0
18 ffffcf89`0a697b50 fffff801`182c8425 nt!KiExpireTimer2+0x429
19 ffffcf89`0a697c60 fffff801`182c59e4 nt!KiTimer2Expiration+0x165
1a ffffcf89`0a697d20 fffff801`18406405 nt!KiRetireDpcList+0x874
1b ffffcf89`0a697fb0 fffff801`184061f0 nt!KxRetireDpcList+0x5
1c ffffcf89`14baf2c0 fffff801`184055ed nt!KiDispatchInterruptContinue
1d ffffcf89`14baf2f0 fffff801`18384807 nt!KiDpcInterrupt+0x2fd
1e ffffcf89`14baf480 fffff801`18384018 nt!MiPurgePartitionStandby+0xd3
1f ffffcf89`14baf4c0 fffff801`182c90c5 nt!MiFinishResume+0x48
20 ffffcf89`14baf4f0 fffff801`18348da5 nt!ExpWorkerThread+0x105
21 ffffcf89`14baf590 fffff801`18406b58 nt!PspSystemThreadStartup+0x55
22 ffffcf89`14baf5e0 00000000`00000000 nt!KiStartSystemThread+0x28
Son zamanlarda DPC zaman aşımları hakkında kendi halimde araştırma yapıyordum.
[CODE highlight="5"]DPC_WATCHDOG_VIOLATION (133)
The DPC watchdog detected a prolonged run time at an IRQL of DISPATCH_LEVEL
or above.
Arguments:
Arg1: 0000000000000000, A single DPC or ISR exceeded its time allotment. The offending
component can usually be identified with a stack trace.
Arg2: 0000000000000501, The DPC time count (in ticks).
Arg3: 0000000000000500, The DPC time allotment (in ticks).
Arg4: fffff80118cfb320, cast to nt!DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK, which contains
additional information regarding this single DPC timeout
[/CODE]
Yani aslında mevzu anlaşılabilir. DPC dediğimiz şey; cihazlara ait Interrupt'ların Back-End kısmında çalıştırılmak için kullanılan bir iş parçacığıdır. DPC'ler işlemci tarafından yapacak başka bir işi olmadığında çalıştırılır ancak bir DPC işlemciyi sabitleyip/kilitlediği için çok uzun süre (100 mikrosaniye) çalışmasına izin verilmez. Bir DPC bundan daha uzun süre çalışırsa _DPC_WATCHDOG sistemi mavi ekrana zorlar çünkü bu durum Windows tarafında beklenmediktir ve o anda da beklenmedik bir şey oluyor.
Kod:7: kd> KnL # Child-SP RetAddr Call Site 00 ffff9301`b9c60c88 fffff801`18435582 nt!KeBugCheckEx 01 ffff9301`b9c60c90 fffff801`18250b2d nt!KeAccumulateTicks+0x1e7c72 02 ffff9301`b9c60cf0 fffff801`18249061 nt!KiUpdateRunTime+0x5d 03 ffff9301`b9c60d40 fffff801`1824af23 nt!KiUpdateTime+0x4a1 04 ffff9301`b9c60e80 fffff801`18248132 nt!KeClockInterruptNotify+0x2e3 05 ffff9301`b9c60f30 fffff801`182ab485 nt!HalpTimerClockInterrupt+0xe2 06 ffff9301`b9c60f60 fffff801`183ffb8a nt!KiCallInterruptServiceRoutine+0xa5 07 ffff9301`b9c60fb0 fffff801`184003b7 nt!KiInterruptSubDispatchNoLockNoEtw+0xfa 08 ffffcf89`0a697290 fffff801`183656b3 nt!KiInterruptDispatchNoLockNoEtw+0x37 09 ffffcf89`0a697428 fffff801`18248460 nt!HalpTscQueryCounterOrdered+0x3 0a ffffcf89`0a697430 fffff801`1a098538 nt!KeStallExecutionProcessor+0x120 0b ffffcf89`0a6974b0 fffff801`1a070d96 storport!StorDelayExecution+0xdc 0c ffffcf89`0a6974f0 fffff801`1a13ccf0 storport!StorPortExtendedFunction+0x1716 0d ffffcf89`0a6975c0 fffff801`1a13c245 stornvme!WaitForCommandCompleteWithCustomTimeout+0xd4 0e ffffcf89`0a6976e0 fffff801`1a12e19d stornvme!NVMeSyncHostTime+0x179 0f ffffcf89`0a697720 fffff801`1a12e3fa stornvme!NVMeControllerInitPart3+0x189 10 ffffcf89`0a6977c0 fffff801`1a1261b4 stornvme!NVMeControllerPowerUp+0x62 11 ffffcf89`0a6977f0 fffff801`1a073da8 stornvme!NVMeHwAdapterControl+0x134 12 ffffcf89`0a697880 fffff801`1a09ee17 storport!RaCallMiniportAdapterControl+0x24 13 ffffcf89`0a6978b0 fffff801`1a088c3d storport!RaidAdapterSendPowerToMiniport+0x6b 14 ffffcf89`0a697900 fffff801`18254975 storport!RaidAdapterPowerUpDeviceCompletion+0x141bd 15 ffffcf89`0a697940 fffff801`182547b7 nt!IopfCompleteRequest+0x1a5 16 ffffcf89`0a697a20 fffff801`19bc22e0 nt!IofCompleteRequest+0x17 17 ffffcf89`0a697a50 fffff801`18363c29 pci!PciPowerUpDeviceTimerCallback+0x4d0 18 ffffcf89`0a697b50 fffff801`182c8425 nt!KiExpireTimer2+0x429 19 ffffcf89`0a697c60 fffff801`182c59e4 nt!KiTimer2Expiration+0x165 1a ffffcf89`0a697d20 fffff801`18406405 nt!KiRetireDpcList+0x874 1b ffffcf89`0a697fb0 fffff801`184061f0 nt!KxRetireDpcList+0x5 1c ffffcf89`14baf2c0 fffff801`184055ed nt!KiDispatchInterruptContinue 1d ffffcf89`14baf2f0 fffff801`18384807 nt!KiDpcInterrupt+0x2fd 1e ffffcf89`14baf480 fffff801`18384018 nt!MiPurgePartitionStandby+0xd3 1f ffffcf89`14baf4c0 fffff801`182c90c5 nt!MiFinishResume+0x48 20 ffffcf89`14baf4f0 fffff801`18348da5 nt!ExpWorkerThread+0x105 21 ffffcf89`14baf590 fffff801`18406b58 nt!PspSystemThreadStartup+0x55 22 ffffcf89`14baf5e0 00000000`00000000 nt!KiStartSystemThread+0x28
Yukarıdaki gibi,
Stornvme! WaitForCommandCompleteWithCustomTimeout fonksiyonuna ait çağrıyı görebilirsin. Bu, NVMe depolama sürücüsü olan Windows - stornvme.sys sürücüsünün bir parçası sayılır. Hemen sonrasında storport! StorDelayExecution işlevine 'bu DPC'nin yürütülmesini geciktirmek' için bir çağrı daha yapılıyor (storport.sys - Windows'un High - Level Storage sürücüsüdür), ardından NT! KeStallExecutionProcessor kernel işlevine bir çağrı yapılıyor ve DPC zaman aşımına neden olan da bu oluyor.
Kısacası, NVMe sürücüsü bizzat sorunun sebebi oluyor çünkü Windows tarafından bu sürücüde bir sorun tespiti var. Hangi sürücü olursa olsun bu durumdaysan sadece o sürücüye odaklanman gerekiyor... Disk üreticisinin web sitesinden üreticinin SSD Diognastic aracını kurup checklemeni öneririm.
SSD Diognastic aracını kurup checklemeni öneririm.
Sorun direkt olarak M.2 probleminde değil aslına bakarsan. NVMe'den kaynaklanıyor. Windows'un standart sürücüsü olduğu için bu konuda ne yapılır ne edilir bir fikrim yok temizden sistem kurulumu dışında. Kullandığın OS da zaten o sisteme asla yakışmayan W10. Düşünebilirsin. Yahut M.2 Diskin fiziksel bağlantılarını kontrol edebilirsin. M2_2 ya da M2_4 Slotlarını deneyebilirsin.
Şunda ya da bunda sorun varlık bir durum değil. Benim anladığım ve senin de anlattığın pozisyona bakılırsa sadece açılışlarda oluyor. Bu sorun POWER_STATE başlığında da görünebiliyor. Yani dediklerimi kendine göre yorumlaman güzel bir şey ama anlam farkı oluyor. Önerdiğim 2 şey var: Ya sisteme Windows 11 son sürüm kurar tekrar bakınırsın ya da M.2 arkadaşının slotlarını değiştirirsin öyle kontrol edersin. Uzun uzadıya anlattığımı düşünüyorum zaten, eğer elinde MEMORY.DMP dosyan varsa onu atarsın ben de sana NVMe sürücüsünün yaptığı zaman aşımının süresini gösterebilirim. Dosyanda spesifik olarak Drive'ın faillediğini gösteren bir fonksiyon yok.
Merhaba, geç dönüş için kusura bakmayın. Anca bakabildim.
Dosyadan izleme kayıtlarını döktüm ve ardından DPC izleme kayıtlarını WPA'nın okuyabileceği bir formatta çıkarıp göz attım. Sonuç beklediğimden de farklı oldu.
Eki Görüntüle 63649
Microsoft hiçbir DPC'nin 0,1 milisaniye daha uzun süre çalışmamasını öneriyor ve elimdeki sonuçta her DPC için toplam çalışma süresini görebiliyorum. Buradaki sorunlu DPC, Sistem çekirdeği olan ntoskrnl.exe olarak görünüyor. 30.7 MS. - Microsoft'un önerdiğinden 307 kat daha uzun süre çalışmış.
Sırasıyla diğer DPC'ler ACPI.sys, tcpip.sys, Storport ve Stornvme - Dxgrnl.sys idir ancak bunlar nihayetinde sistem çekirdeğinde olduklarından dolayı ona bağımlı oluyorlar. Stornvme.sys gibi diğer sürücüler de önerilenden daha uzun süre çalışıyorlar ama aşırı derecede değil tabii ki. Her halükarda burada muhtemelen bir sistem akışı oluyor başlangıç esnasında ve bu nedenle ntoskrnl.exe diğer sürücüler (Stornvme diyelim.) tarafından geciktiriliyor olabilir. Bu high letancy yerine prepare bile olabilir.