Все прерывания делятся по следующим приоритетам: 1 место - работает на уровне кольцо -2 прерывания SMI (system management interrupt — прерывание системного управления), которое возникает: -по сигналу от чипсета или периферии на материнской плате -программный SMI, посланный системным ПО через порт ввода-вывода -запись по адресу ввода-вывода, для которого микропрограммно установлена необходимость активации SMM. 2 место - гипервизор, который работает в кольце -1 3 место - ядро операционной системы - работает в кольце 0 4 место - пользовательский уровень - работает в кольце 3
Позднее дополню каждый раздел. Все проблемы у нас связаны с тем, что windows относится к операционным системам с вытесняющей многозадачностью. Вытесняющая многозадачность требует обработки системного прерывания от аппаратного таймера. По истечении кванта времени, отведённого процессу, происходит прерывание и вызывается планировщик процессов. Частота вызова планировщика критична: слишком частый его вызов будет расходовать процессорное время впустую. Единственное, что мы можем изменить - это увеличить время кванта и поменять соотношение квантов времени на активную задачу и задачи в фоне, за это отвечает параметр в реестре Win32PrioritySeparation По умолчанию 0х26 кванты 18:6 = Оптимальный вариант. https://github.com/keoy7am/Win32PrioritySeparationTool При этом само время кванта зависит от системного таймера. При системном таймера 15.625 мс оно будет больше, чем при 1.0 мс. Высчитывается время системного таймера * тики. 1 тик= 3 кванта Для системного таймера 0.5 мс фону тогда буде даваться 0.5мс*6/3 = 1мс из каждых 4 мс. При 1 мс - 2мс из каждых 8мс. При 2 мс - 4мс из каждых 16мс. Для борьбы с фризами оптимально выставить системный таймер 0.5мс.
SMI-прерывания зависят от BIOS/UEFI и оборудования. Отключаем все лишнее, отключаем энергосохранение, скорость вентиляторов фиксируем, это все, что мы можем сделать. В нашем плане энергосохранения выбрать оценка для поднятия частоты вместо 15 мс максимум 5000 мс. Есть программа Intel SMI Latency Checker Для гипервизора - отключаем поддержку виртуальных машин в биосе.
Про прерывания на уровне ядра и пользователя в windows.
В Windows применяется: - для x86 - 32 уровня IRQL от 0 до 31 (в скобках указано числовое значение): High (31) Power fail (30) IPI (29) Clock (28) Profile (27) Диапазон аппаратных прерываний, называемых Devices IRQL, или DIRQL (от 26 до 3) или ISR DPC/DISPATCH (2) APC (1) PASSIVE (0) Это означает, например, что планировщик (работающий на уровне DPC/DISPATCH) может быть прерван аппаратными прерываниями, межпроцессорными прерываниями (IPI) и т. д., но не может быть прерван асинхронными процедурами (APC) и обычными потоками, работающими на уровне PASSIVE. Межпроцессорные прерывания IPI могут быть прерваны сбоем электропитания (прерывание на уровне Power fail), но не могут быть прерваны обычными аппаратными прерываниями от устройств и т. д. - для х64 16 уровней IRQL (от 0 до 15) High/Profile (15) Interprocessor interrupt/Power (14) Clock (13) Synch (12) Device n (11) ......... Device 1 (3) Dispatch/DPC (2) APC (1) Passive/Low (0)
При этом: hardware interrupts 3-15 (3-31) software interrupts 1-2 (1-2) normal thread execution 0 (0)
Наш пользовательский процесс может иметь следующие приоритеты: Idle - 4 Below Normal - 6 Normal -8 Above Normal -10 High -13 Real-Time -24 Внутри процесса мы можем задать приоритет для его потоков: Idle дает итоговый приоритет процесса с потоком 1, кроме real-time, там он его просто снизит до фиксированной 16 Lowest -2 Below Normal -1 Normal 0 Above Normal +1 Highest +2 Time Critical +7
Итоговый приоритет потока - это сумма приоритетов процесса и потока. 31 - максимум Real-Time - от 16 до 31. При этом даже максимальный 31 приоритет не лает нам возможности подняться выше уровня Passive/Low(0), поэтому любое прерывание на нашем ядре прервет нашу программу.
Борьба с прерываниями. Бороться надо двумя путями. Первый путь - уменьшить само количество прерываний=их частоту. Частота прерываний за 1 секунду до 10000 считается еще неплохой. Второй путь - уменьшить длительность прерываний. Есть еще третий путь - освободить от прерываний нужные нам ядра.
Первое и самое главное. Установка максимально облегченной и очищенной системы. Если хватит windows 10, то лучше ставить ее. 23H2 лучше, чем 24Н2. Отключить динамический таймер. Поднять, а не снизить время для системного таймера до 15,625 мс! Если снизим до 0.5 мс, то увеличим количество прерываний. Но тут вступает в действие многозадачность винды. 1/4 времени отдается фоновым процессам. Минимум - это 6 тиков=2 кванта Полностью вырубить все фоновые процессы на винде мы не сможем. Для 120 кадров нам нужно иметь перерыв не больше 1/120=8.(3) мс. Поэтому подходит время для системного таймера только 0.5 мс /1 мс и условно 2 мс , так как 2 мс*2=4 мс. Внести в реестр для глобальной настройки системного таймера (работает только для win 11) [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel] "GlobalTimerResolutionRequests"=dword:00000001"
Отключить VSYNC. Включить тройную буферизацию если процессор успевает рендерить, то компенсирует воемя двух кадров: 2*1000 мс / частоту кадров в Гц Краткий список исследований по психофизиологии: Watson (1986): Задержки <5 мс незаметны. Kelly (1979): Порог фликера <2 мс. Burr & Ross (1982): 10% кадра = 100мс/частоту кадров (при движении). Clayton (2018): 1–2% кадров= 1000мс*процент пропуска кадров (10–20 мс/с) незаметно. Carrasco (2011): <5–10 мс при внимании. Hoffman et al. (2017): <3 мс с размытием. Swafford et al. (2016): <4 мс, 2% (20 мс) при редких фризах (реже 1 раза в секунду). Digital Foundry (2025): 0.125 фриза/с=0.125*1000мс/частоту кадров Гц) заметно при частых повторениях.
Для 120 Гц: 1982-0.833мс 2025-1.042мс
Снизить частоту опроса мыши до 125Гц.
Главные правила для таймеров: Таймеры используются для времени (QPC) и для системных прерываний=тиков.
useplatformclock disables TSC and uses the platform source clock instead (HPET or PMT). PMT is used when HPET is disabled in BIOS. useplatformtick disables TSC tick and uses the platform source tick instead (RTC). Does disabledynamictick work when useplatformtick is used? No, it does not do anything since RTC is not a dynamic tick counter.
При этом возможны разные комбинации таймеров.
TSC + TSC without desync: bcdedit /deletevalue useplatformclock - bcdedit /deletevalue useplatformtick (make sure HPET is enabled in BIOS) TSC + RTC: bcdedit /deletevalue useplatformclock - bcdedit /set useplatformtick Yes HPET + RTC: bcdedit /set useplatformclock Yes - bcdedit /set useplatformtick Yes (make sure HPET is enabled in BIOS) PMT + RTC: bcdedit /set useplatformclock Yes - bcdedit /set useplatformtick Yes (make sure HPET is disabled in BIOS) Частота HPET 14.318180 MHz, в 4 раза выше частоты ACPI PM Timer. RTC устаревший тайминг с частотой от 2-х до 8192 Гц. Использует кварц 32.768 KHz HPET требует больше времени на вызов, чем TSC или PM Timer, но это важно только для системных прерываний. HPET и PM timer находятся в южном мосте. TSC в процессоре. Поэтому вполне допустима комбинация HPET (для времени QPC)+TSC (для тиков).
bcdedit /set useplatformtick no (отключаем RTC и включаем TSC для тиков) bcdedit /set useplatformclock no (отключаем HPET и включаем TSC для времени QPC) bcdedit /set disabledynamictick yes (отключаем динамическое изменение частоты системного таймера - влияет только на тики) bcdedit /set tscsyncpolicy Enhanced (включаем улучшенную синхронизацию TSC-таймера) HPET не следует отключать в биосе и в диспетчере устройств. Посмотреть текущую конфигурацию можно с помощью команды bcdedit /enum
Обсуждение проблем ОС и оборудования: задержка реакции системы (latency), микроcтаттер, инпутлаг, фризы.
Перед тем как задавать вопросы, просьба прочитать FAQ
Осуществлять мониторинг программойLatency Monitorнужно в течение 1 минуты, в состоянии простоя системы т.е. без дисковой, сетевой активности, и любой другой, с выключенным ав и приложениями в трее и автозагрузке, не раньше чем через 2 минуты после загрузки системы. Не двигаем мышку и не используем клавиатуру в момент измерений. Потом остановка и скриншот.
Приветствую. Обнаружились проблемы с "кашей" изображения в Танках, недозагрузка видеокарты и просадки ФПС при движения мыши. В остальных играх и тестах все нормально. Первую проблему удалось снять "методом тыка". Но просадки ФПС от движения мыши, как и отчасти недозагрузка видеокарты, остались. Грешу на задержки DPC и связанные с этим проблемы.
Система - Ryzen 2400G, Asrock B450M HDV, 2x8Gb 2933Mhz, Gigabyte 1660 Ti, Samsung 860 Evo 1TB, Win 10 1903. https://www.userbenchmark.com/UserRun/43112844 Из оверклокинга - выставление профилей XMP и разгон оперативки с 2633 до 2933Мгц. Выставление режима MSI и приоритета на видеокарту через MSI Mode Utility.
Опытным путем нашел следующие настройки:
Высокоточный таймер событий в "Диспетчере устройств" - Выкл. userplatformclock - дефолт. Из BCDedit удален. useplatformtick - дефолт. Из BCDedit удален. disabledynamictick - дефолт. Из BCDedit удален. tscsyncpolicy - дефолт. Из BCDedit удален.
Драйвера видеокарты - стандартные 446.14, порезанные NVSlimmer до минимально необходимого состояния. Обрезанные 466.27 по тестам медленнее. Драйвера удаляю DDU и ставлю заново в безопасном режиме.
В LatencyMon проблемы идут от dxgkrnl.sys и nvlddmkm.sys. Но ntoskrnl.exe их периодически догоняет.
Отключение клавиатур (игровой и обычной) ничего не меняет. Отключение встроенных сетевой и звуковой карт в Диспетчере устройств - ничего не меняет. Антивирус Касперского - отключена защита на тесты и игру. В фоне работает MSI Afterburner 4.6.2 (управляет кулерами видеокарты) и Asrock Tuning Utility (управляет кулерами проца - 2шт и корпуса - 1шт). Мышь Logitech G300s и клавиатуры (Noname и A4Tech X7 G100) подключены на заднюю панель, сидят на одной PCI-E шине вместе с сетевухой и звуковой. Устройства USB и Аудио от Nvidia, сидящие на одной шине с видюхой - отключены.
Сводка из LatencyMon при дефолтном разрешении таймера:
_________________________________________________________________________________________________________ CONCLUSION _________________________________________________________________________________________________________ Your system appears to be suitable for handling real-time audio and other tasks without dropouts. LatencyMon has been analyzing your system for 0:01:00 (h:mm:ss) on all processors.
_________________________________________________________________________________________________________ SYSTEM INFORMATION _________________________________________________________________________________________________________ Computer name: BATTLETECH123 OS version: Windows 10, 10.0, version 1903, build: 18362 (x64) Hardware: To Be Filled By O.E.M., To Be Filled By O.E.M. CPU: AuthenticAMD AMD Ryzen 5 2400G with Radeon Vega Graphics Logical processors: 8 Processor groups: 1 RAM: 16315 MB total
_________________________________________________________________________________________________________ CPU SPEED _________________________________________________________________________________________________________ Reported CPU speed: 3593 MHz
Note: reported execution times may be calculated based on a fixed reported CPU speed. Disable variable speed settings like Intel Speed Step and AMD Cool N Quiet in the BIOS setup for more accurate results.
_________________________________________________________________________________________________________ MEASURED INTERRUPT TO USER PROCESS LATENCIES _________________________________________________________________________________________________________ The interrupt to process latency reflects the measured interval that a usermode process needed to respond to a hardware request from the moment the interrupt service routine started execution. This includes the scheduling and execution of a DPC routine, the signaling of an event and the waking up of a usermode thread from an idle wait state in response to that event.
Highest measured interrupt to process latency (µs): 356,40 Average measured interrupt to process latency (µs): 8,249566
Highest measured interrupt to DPC latency (µs): 350,0 Average measured interrupt to DPC latency (µs): 2,846129
_________________________________________________________________________________________________________ REPORTED ISRs _________________________________________________________________________________________________________ Interrupt service routines are routines installed by the OS and device drivers that execute in response to a hardware interrupt signal.
Highest ISR routine execution time (µs): 225,789034 Driver with highest ISR routine execution time: dxgkrnl.sys - DirectX Graphics Kernel, Microsoft Corporation
Highest reported total ISR routine time (%): 0,013633 Driver with highest ISR total time: dxgkrnl.sys - DirectX Graphics Kernel, Microsoft Corporation
Total time spent in ISRs (%) 0,013669
ISR count (execution time <250 µs): 798 ISR count (execution time 250-500 µs): 0 ISR count (execution time 500-1000 µs): 0 ISR count (execution time 1000-2000 µs): 0 ISR count (execution time 2000-4000 µs): 0 ISR count (execution time >=4000 µs): 0
_________________________________________________________________________________________________________ REPORTED DPCs _________________________________________________________________________________________________________ DPC routines are part of the interrupt servicing dispatch mechanism and disable the possibility for a process to utilize the CPU while it is interrupted until the DPC has finished execution.
Highest DPC routine execution time (µs): 400,498748 Driver with highest DPC routine execution time: ntoskrnl.exe - NT Kernel & System, Microsoft Corporation
Highest reported total DPC routine time (%): 0,006964 Driver with highest DPC total execution time: ntoskrnl.exe - NT Kernel & System, Microsoft Corporation
Total time spent in DPCs (%) 0,02190
DPC count (execution time <250 µs): 10956 DPC count (execution time 250-500 µs): 0 DPC count (execution time 500-10000 µs): 3 DPC count (execution time 1000-2000 µs): 0 DPC count (execution time 2000-4000 µs): 0 DPC count (execution time >=4000 µs): 0
_________________________________________________________________________________________________________ REPORTED HARD PAGEFAULTS _________________________________________________________________________________________________________ Hard pagefaults are events that get triggered by making use of virtual memory that is not resident in RAM but backed by a memory mapped file on disk. The process of resolving the hard pagefault requires reading in the memory from disk while the process is interrupted and blocked from execution.
NOTE: some processes were hit by hard pagefaults. If these were programs producing audio, they are likely to interrupt the audio stream resulting in dropouts, clicks and pops. Check the Processes tab to see which programs were hit.
Process with highest pagefault count: taskhostw.exe
Total number of hard pagefaults 16 Hard pagefault count of hardest hit process: 16 Number of processes hit: 1
_________________________________________________________________________________________________________ PER CPU DATA _________________________________________________________________________________________________________ CPU 0 Interrupt cycle time (s): 0,541308 CPU 0 ISR highest execution time (µs): 225,789034 CPU 0 ISR total execution time (s): 0,065558 CPU 0 ISR count: 743 CPU 0 DPC highest execution time (µs): 400,498748 CPU 0 DPC total execution time (s): 0,098154 CPU 0 DPC count: 10370 _________________________________________________________________________________________________________ CPU 1 Interrupt cycle time (s): 0,125840 CPU 1 ISR highest execution time (µs): 1,623156 CPU 1 ISR total execution time (s): 0,000050 CPU 1 ISR count: 51 CPU 1 DPC highest execution time (µs): 210,18870 CPU 1 DPC total execution time (s): 0,006356 CPU 1 DPC count: 541 _________________________________________________________________________________________________________ CPU 2 Interrupt cycle time (s): 0,101045 CPU 2 ISR highest execution time (µs): 0,991929 CPU 2 ISR total execution time (s): 0,000004 CPU 2 ISR count: 4 CPU 2 DPC highest execution time (µs): 27,834122 CPU 2 DPC total execution time (s): 0,000337 CPU 2 DPC count: 25 _________________________________________________________________________________________________________ CPU 3 Interrupt cycle time (s): 0,093222 CPU 3 ISR highest execution time (µs): 0,0 CPU 3 ISR total execution time (s): 0,0 CPU 3 ISR count: 0 CPU 3 DPC highest execution time (µs): 27,122739 CPU 3 DPC total execution time (s): 0,000066 CPU 3 DPC count: 5 _________________________________________________________________________________________________________ CPU 4 Interrupt cycle time (s): 0,061915 CPU 4 ISR highest execution time (µs): 0,0 CPU 4 ISR total execution time (s): 0,0 CPU 4 ISR count: 0 CPU 4 DPC highest execution time (µs): 28,305038 CPU 4 DPC total execution time (s): 0,000071 CPU 4 DPC count: 7 _________________________________________________________________________________________________________ CPU 5 Interrupt cycle time (s): 0,054001 CPU 5 ISR highest execution time (µs): 0,0 CPU 5 ISR total execution time (s): 0,0 CPU 5 ISR count: 0 CPU 5 DPC highest execution time (µs): 0,0 CPU 5 DPC total execution time (s): 0,0 CPU 5 DPC count: 0 _________________________________________________________________________________________________________ CPU 6 Interrupt cycle time (s): 0,082138 CPU 6 ISR highest execution time (µs): 0,0 CPU 6 ISR total execution time (s): 0,0 CPU 6 ISR count: 0 CPU 6 DPC highest execution time (µs): 31,571389 CPU 6 DPC total execution time (s): 0,000045 CPU 6 DPC count: 5 _________________________________________________________________________________________________________ CPU 7 Interrupt cycle time (s): 0,080670 CPU 7 ISR highest execution time (µs): 0,0 CPU 7 ISR total execution time (s): 0,0 CPU 7 ISR count: 0 CPU 7 DPC highest execution time (µs): 31,310882 CPU 7 DPC total execution time (s): 0,000090 CPU 7 DPC count: 6 _________________________________________________________________________________________________________
Сводка из LatencyMon при разрешении таймера в 1мс (факт - 0,995*) установленном с помощью ISLC v1.0.2.3
_________________________________________________________________________________________________________ CONCLUSION _________________________________________________________________________________________________________ Your system appears to be suitable for handling real-time audio and other tasks without dropouts. LatencyMon has been analyzing your system for 0:01:00 (h:mm:ss) on all processors.
_________________________________________________________________________________________________________ SYSTEM INFORMATION _________________________________________________________________________________________________________ Computer name: BATTLETECH123 OS version: Windows 10, 10.0, version 1903, build: 18362 (x64) Hardware: To Be Filled By O.E.M., To Be Filled By O.E.M. CPU: AuthenticAMD AMD Ryzen 5 2400G with Radeon Vega Graphics Logical processors: 8 Processor groups: 1 RAM: 16315 MB total
_________________________________________________________________________________________________________ CPU SPEED _________________________________________________________________________________________________________ Reported CPU speed: 3593 MHz
Note: reported execution times may be calculated based on a fixed reported CPU speed. Disable variable speed settings like Intel Speed Step and AMD Cool N Quiet in the BIOS setup for more accurate results.
_________________________________________________________________________________________________________ MEASURED INTERRUPT TO USER PROCESS LATENCIES _________________________________________________________________________________________________________ The interrupt to process latency reflects the measured interval that a usermode process needed to respond to a hardware request from the moment the interrupt service routine started execution. This includes the scheduling and execution of a DPC routine, the signaling of an event and the waking up of a usermode thread from an idle wait state in response to that event.
Highest measured interrupt to process latency (µs): 239,40 Average measured interrupt to process latency (µs): 4,103995
Highest measured interrupt to DPC latency (µs): 226,40 Average measured interrupt to DPC latency (µs): 1,229094
_________________________________________________________________________________________________________ REPORTED ISRs _________________________________________________________________________________________________________ Interrupt service routines are routines installed by the OS and device drivers that execute in response to a hardware interrupt signal.
Highest ISR routine execution time (µs): 578,194267 Driver with highest ISR routine execution time: dxgkrnl.sys - DirectX Graphics Kernel, Microsoft Corporation
Highest reported total ISR routine time (%): 0,032980 Driver with highest ISR total time: dxgkrnl.sys - DirectX Graphics Kernel, Microsoft Corporation
Total time spent in ISRs (%) 0,032980
ISR count (execution time <250 µs): 1416 ISR count (execution time 250-500 µs): 0 ISR count (execution time 500-1000 µs): 1 ISR count (execution time 1000-2000 µs): 0 ISR count (execution time 2000-4000 µs): 0 ISR count (execution time >=4000 µs): 0
_________________________________________________________________________________________________________ REPORTED DPCs _________________________________________________________________________________________________________ DPC routines are part of the interrupt servicing dispatch mechanism and disable the possibility for a process to utilize the CPU while it is interrupted until the DPC has finished execution.
Highest DPC routine execution time (µs): 414,716393 Driver with highest DPC routine execution time: ntoskrnl.exe - NT Kernel & System, Microsoft Corporation
Highest reported total DPC routine time (%): 0,030509 Driver with highest DPC total execution time: rspLLL64.sys - Resplendence Latency Monitoring and Auxiliary Kernel Library, Resplendence Software Projects Sp.
Total time spent in DPCs (%) 0,056048
DPC count (execution time <250 µs): 148780 DPC count (execution time 250-500 µs): 0 DPC count (execution time 500-10000 µs): 1 DPC count (execution time 1000-2000 µs): 0 DPC count (execution time 2000-4000 µs): 0 DPC count (execution time >=4000 µs): 0
_________________________________________________________________________________________________________ REPORTED HARD PAGEFAULTS _________________________________________________________________________________________________________ Hard pagefaults are events that get triggered by making use of virtual memory that is not resident in RAM but backed by a memory mapped file on disk. The process of resolving the hard pagefault requires reading in the memory from disk while the process is interrupted and blocked from execution.
NOTE: some processes were hit by hard pagefaults. If these were programs producing audio, they are likely to interrupt the audio stream resulting in dropouts, clicks and pops. Check the Processes tab to see which programs were hit.
Process with highest pagefault count: svchost.exe
Total number of hard pagefaults 796 Hard pagefault count of hardest hit process: 792 Number of processes hit: 4
_________________________________________________________________________________________________________ PER CPU DATA _________________________________________________________________________________________________________ CPU 0 Interrupt cycle time (s): 1,115232 CPU 0 ISR highest execution time (µs): 578,194267 CPU 0 ISR total execution time (s): 0,158385 CPU 0 ISR count: 1417 CPU 0 DPC highest execution time (µs): 414,716393 CPU 0 DPC total execution time (s): 0,236045 CPU 0 DPC count: 142406 _________________________________________________________________________________________________________ CPU 1 Interrupt cycle time (s): 0,604274 CPU 1 ISR highest execution time (µs): 0,0 CPU 1 ISR total execution time (s): 0,0 CPU 1 ISR count: 0 CPU 1 DPC highest execution time (µs): 50,468132 CPU 1 DPC total execution time (s): 0,023253 CPU 1 DPC count: 4747 _________________________________________________________________________________________________________ CPU 2 Interrupt cycle time (s): 0,397208 CPU 2 ISR highest execution time (µs): 0,0 CPU 2 ISR total execution time (s): 0,0 CPU 2 ISR count: 0 CPU 2 DPC highest execution time (µs): 45,598664 CPU 2 DPC total execution time (s): 0,006223 CPU 2 DPC count: 1069 _________________________________________________________________________________________________________ CPU 3 Interrupt cycle time (s): 0,524064 CPU 3 ISR highest execution time (µs): 0,0 CPU 3 ISR total execution time (s): 0,0 CPU 3 ISR count: 0 CPU 3 DPC highest execution time (µs): 16,331756 CPU 3 DPC total execution time (s): 0,000059 CPU 3 DPC count: 10 _________________________________________________________________________________________________________ CPU 4 Interrupt cycle time (s): 0,409571 CPU 4 ISR highest execution time (µs): 0,0 CPU 4 ISR total execution time (s): 0,0 CPU 4 ISR count: 0 CPU 4 DPC highest execution time (µs): 59,525745 CPU 4 DPC total execution time (s): 0,001932 CPU 4 DPC count: 279 _________________________________________________________________________________________________________ CPU 5 Interrupt cycle time (s): 0,477967 CPU 5 ISR highest execution time (µs): 0,0 CPU 5 ISR total execution time (s): 0,0 CPU 5 ISR count: 0 CPU 5 DPC highest execution time (µs): 6,693014 CPU 5 DPC total execution time (s): 0,000008 CPU 5 DPC count: 3 _________________________________________________________________________________________________________ CPU 6 Interrupt cycle time (s): 0,375144 CPU 6 ISR highest execution time (µs): 0,0 CPU 6 ISR total execution time (s): 0,0 CPU 6 ISR count: 0 CPU 6 DPC highest execution time (µs): 20,229335 CPU 6 DPC total execution time (s): 0,001013 CPU 6 DPC count: 175 _________________________________________________________________________________________________________ CPU 7 Interrupt cycle time (s): 0,484185 CPU 7 ISR highest execution time (µs): 0,0 CPU 7 ISR total execution time (s): 0,0 CPU 7 ISR count: 0 CPU 7 DPC highest execution time (µs): 30,338992 CPU 7 DPC total execution time (s): 0,000635 CPU 7 DPC count: 92 _________________________________________________________________________________________________________
Экспериментальный прогон LatencyMon, с активными движениями мыши в течении минуты и разрешением таймера ~1мс. ВТС - выкл. Остальное - дефолт. Вся нагрузка от Wdf01000.sys на CPU0. Может в этом проблема?
_________________________________________________________________________________________________________ CONCLUSION _________________________________________________________________________________________________________ Your system appears to be suitable for handling real-time audio and other tasks without dropouts. LatencyMon has been analyzing your system for 0:01:01 (h:mm:ss) on all processors.
_________________________________________________________________________________________________________ SYSTEM INFORMATION _________________________________________________________________________________________________________ Computer name: BATTLETECH123 OS version: Windows 10, 10.0, version 1903, build: 18362 (x64) Hardware: To Be Filled By O.E.M., To Be Filled By O.E.M. CPU: AuthenticAMD AMD Ryzen 5 2400G with Radeon Vega Graphics Logical processors: 8 Processor groups: 1 RAM: 16315 MB total
_________________________________________________________________________________________________________ CPU SPEED _________________________________________________________________________________________________________ Reported CPU speed: 3593 MHz
Note: reported execution times may be calculated based on a fixed reported CPU speed. Disable variable speed settings like Intel Speed Step and AMD Cool N Quiet in the BIOS setup for more accurate results.
_________________________________________________________________________________________________________ MEASURED INTERRUPT TO USER PROCESS LATENCIES _________________________________________________________________________________________________________ The interrupt to process latency reflects the measured interval that a usermode process needed to respond to a hardware request from the moment the interrupt service routine started execution. This includes the scheduling and execution of a DPC routine, the signaling of an event and the waking up of a usermode thread from an idle wait state in response to that event.
Highest measured interrupt to process latency (µs): 233,0 Average measured interrupt to process latency (µs): 4,434787
Highest measured interrupt to DPC latency (µs): 229,90 Average measured interrupt to DPC latency (µs): 1,789165
_________________________________________________________________________________________________________ REPORTED ISRs _________________________________________________________________________________________________________ Interrupt service routines are routines installed by the OS and device drivers that execute in response to a hardware interrupt signal.
Highest ISR routine execution time (µs): 86,979126 Driver with highest ISR routine execution time: Wdf01000.sys - Среда выполнения платформы драйвера режима ядра, Microsoft Corporation
Highest reported total ISR routine time (%): 0,010297 Driver with highest ISR total time: Wdf01000.sys - Среда выполнения платформы драйвера режима ядра, Microsoft Corporation
Total time spent in ISRs (%) 0,010297
ISR count (execution time <250 µs): 59252 ISR count (execution time 250-500 µs): 0 ISR count (execution time 500-1000 µs): 0 ISR count (execution time 1000-2000 µs): 0 ISR count (execution time 2000-4000 µs): 0 ISR count (execution time >=4000 µs): 0
_________________________________________________________________________________________________________ REPORTED DPCs _________________________________________________________________________________________________________ DPC routines are part of the interrupt servicing dispatch mechanism and disable the possibility for a process to utilize the CPU while it is interrupted until the DPC has finished execution.
Highest DPC routine execution time (µs): 483,299750 Driver with highest DPC routine execution time: Wdf01000.sys - Среда выполнения платформы драйвера режима ядра, Microsoft Corporation
Highest reported total DPC routine time (%): 0,303503 Driver with highest DPC total execution time: Wdf01000.sys - Среда выполнения платформы драйвера режима ядра, Microsoft Corporation
Total time spent in DPCs (%) 0,369674
DPC count (execution time <250 µs): 184455 DPC count (execution time 250-500 µs): 0 DPC count (execution time 500-10000 µs): 1 DPC count (execution time 1000-2000 µs): 0 DPC count (execution time 2000-4000 µs): 0 DPC count (execution time >=4000 µs): 0
_________________________________________________________________________________________________________ REPORTED HARD PAGEFAULTS _________________________________________________________________________________________________________ Hard pagefaults are events that get triggered by making use of virtual memory that is not resident in RAM but backed by a memory mapped file on disk. The process of resolving the hard pagefault requires reading in the memory from disk while the process is interrupted and blocked from execution.
NOTE: some processes were hit by hard pagefaults. If these were programs producing audio, they are likely to interrupt the audio stream resulting in dropouts, clicks and pops. Check the Processes tab to see which programs were hit.
Process with highest pagefault count: svchost.exe
Total number of hard pagefaults 1143 Hard pagefault count of hardest hit process: 677 Number of processes hit: 20
_________________________________________________________________________________________________________ PER CPU DATA _________________________________________________________________________________________________________ CPU 0 Interrupt cycle time (s): 2,941009 CPU 0 ISR highest execution time (µs): 86,979126 CPU 0 ISR total execution time (s): 0,040425 CPU 0 ISR count: 46406 CPU 0 DPC highest execution time (µs): 483,299750 CPU 0 DPC total execution time (s): 1,747143 CPU 0 DPC count: 175212 _________________________________________________________________________________________________________ CPU 1 Interrupt cycle time (s): 0,516974 CPU 1 ISR highest execution time (µs): 4,659059 CPU 1 ISR total execution time (s): 0,000453 CPU 1 ISR count: 378 CPU 1 DPC highest execution time (µs): 135,553576 CPU 1 DPC total execution time (s): 0,011314 CPU 1 DPC count: 539 _________________________________________________________________________________________________________ CPU 2 Interrupt cycle time (s): 0,329777 CPU 2 ISR highest execution time (µs): 16,25160 CPU 2 ISR total execution time (s): 0,003645 CPU 2 ISR count: 4911 CPU 2 DPC highest execution time (µs): 29,286947 CPU 2 DPC total execution time (s): 0,013622 CPU 2 DPC count: 2868 _________________________________________________________________________________________________________ CPU 3 Interrupt cycle time (s): 0,274589 CPU 3 ISR highest execution time (µs): 3,346507 CPU 3 ISR total execution time (s): 0,000227 CPU 3 ISR count: 289 CPU 3 DPC highest execution time (µs): 24,778180 CPU 3 DPC total execution time (s): 0,002462 CPU 3 DPC count: 477 _________________________________________________________________________________________________________ CPU 4 Interrupt cycle time (s): 0,286614 CPU 4 ISR highest execution time (µs): 3,727247 CPU 4 ISR total execution time (s): 0,002781 CPU 4 ISR count: 3579 CPU 4 DPC highest execution time (µs): 40,689118 CPU 4 DPC total execution time (s): 0,019710 CPU 4 DPC count: 3197 _________________________________________________________________________________________________________ CPU 5 Interrupt cycle time (s): 0,265380 CPU 5 ISR highest execution time (µs): 1,783468 CPU 5 ISR total execution time (s): 0,000460 CPU 5 ISR count: 592 CPU 5 DPC highest execution time (µs): 25,579738 CPU 5 DPC total execution time (s): 0,001573 CPU 5 DPC count: 288 _________________________________________________________________________________________________________ CPU 6 Interrupt cycle time (s): 0,479954 CPU 6 ISR highest execution time (µs): 3,847481 CPU 6 ISR total execution time (s): 0,001153 CPU 6 ISR count: 1515 CPU 6 DPC highest execution time (µs): 70,356805 CPU 6 DPC total execution time (s): 0,010737 CPU 6 DPC count: 1765 _________________________________________________________________________________________________________ CPU 7 Interrupt cycle time (s): 0,259286 CPU 7 ISR highest execution time (µs): 3,336488 CPU 7 ISR total execution time (s): 0,001193 CPU 7 ISR count: 1582 CPU 7 DPC highest execution time (µs): 19,107153 CPU 7 DPC total execution time (s): 0,000670 CPU 7 DPC count: 110 _________________________________________________________________________________________________________
Прошу совета. Спасибо.
Добавлено спустя 3 минуты 57 секунд: Добавлены скрины прогонов в LatencyMon при разрешении таймера 1мс(фактически - 0,995*).
Монитор и телек, один подключен через переходник ХДМИ- дисплей порт, другой просто через ХДМИ. По отдельности т.е когда один из них физически отключен, то все работает отлично, а вот если подключены, пускай даже телек выключен, то периодически возникают заикания. Латенси мон жалуется на dxgkrnl.exe.
Думал, что проблема в длине кабеля - 10м для телека. Перетащил телек к компу и подсоединил еще одним ХДМИ кабелем 1м длинной через переходник - проблема остается. Отсоединил телек и специально подключил моник через переходник - никаких проблем. Подцепил только телек через 10м ХДМИ без переходника - проблем нет. Включаю вертикальную синхронизацию в игре - проблем с двумя подключенными дисплеями нет. Подключаю только телек через переходник и 10м кабель - проблем нет
Что это такое? Не уж то питания на два дисплея при полной нагрузке на ВК не хватает? Если я куплю ХДМИ сплиттер - переключатель, то по это решит проблему?
Как мне кажется я нашел решение, ну или направление. Как минимум для моей системы.
Ибо удалось уйти от этого:
Highest measured interrupt to process latency (µs): 187,90 Average measured interrupt to process latency (µs): 8,478739
Highest measured interrupt to DPC latency (µs): 180,90 Average measured interrupt to DPC latency (µs): 3,230583
Total time spent in ISRs (%) 0,015546 Total time spent in DPCs (%) 0,020829
К этому:
Highest measured interrupt to process latency (µs): 45,10 Average measured interrupt to process latency (µs): 7,497414
Highest measured interrupt to DPC latency (µs): 40,40 Average measured interrupt to DPC latency (µs): 2,174055
Total time spent in ISRs (%) 0,001713 Total time spent in DPCs (%) 0,014885
Полный лог нового варианта ниже, скрины во вложениях:
_________________________________________________________________________________________________________ CONCLUSION _________________________________________________________________________________________________________ Your system appears to be suitable for handling real-time audio and other tasks without dropouts. LatencyMon has been analyzing your system for 0:01:00 (h:mm:ss) on all processors.
_________________________________________________________________________________________________________ SYSTEM INFORMATION _________________________________________________________________________________________________________ Computer name: BATTLETECH123 OS version: Windows 10, 10.0, version 1903, build: 18362 (x64) Hardware: To Be Filled By O.E.M., To Be Filled By O.E.M. CPU: AuthenticAMD AMD Ryzen 5 2400G with Radeon Vega Graphics Logical processors: 8 Processor groups: 1 RAM: 16315 MB total
_________________________________________________________________________________________________________ CPU SPEED _________________________________________________________________________________________________________ Reported CPU speed: 3593 MHz
Note: reported execution times may be calculated based on a fixed reported CPU speed. Disable variable speed settings like Intel Speed Step and AMD Cool N Quiet in the BIOS setup for more accurate results.
_________________________________________________________________________________________________________ MEASURED INTERRUPT TO USER PROCESS LATENCIES _________________________________________________________________________________________________________ The interrupt to process latency reflects the measured interval that a usermode process needed to respond to a hardware request from the moment the interrupt service routine started execution. This includes the scheduling and execution of a DPC routine, the signaling of an event and the waking up of a usermode thread from an idle wait state in response to that event.
Highest measured interrupt to process latency (µs): 45,10 Average measured interrupt to process latency (µs): 7,497414
Highest measured interrupt to DPC latency (µs): 40,40 Average measured interrupt to DPC latency (µs): 2,174055
_________________________________________________________________________________________________________ REPORTED ISRs _________________________________________________________________________________________________________ Interrupt service routines are routines installed by the OS and device drivers that execute in response to a hardware interrupt signal.
Highest ISR routine execution time (µs): 170,721959 Driver with highest ISR routine execution time: dxgkrnl.sys - DirectX Graphics Kernel, Microsoft Corporation
Highest reported total ISR routine time (%): 0,001713 Driver with highest ISR total time: dxgkrnl.sys - DirectX Graphics Kernel, Microsoft Corporation
Total time spent in ISRs (%) 0,001713
ISR count (execution time <250 µs): 76 ISR count (execution time 250-500 µs): 0 ISR count (execution time 500-1000 µs): 0 ISR count (execution time 1000-2000 µs): 0 ISR count (execution time 2000-4000 µs): 0 ISR count (execution time >=4000 µs): 0
_________________________________________________________________________________________________________ REPORTED DPCs _________________________________________________________________________________________________________ DPC routines are part of the interrupt servicing dispatch mechanism and disable the possibility for a process to utilize the CPU while it is interrupted until the DPC has finished execution.
Highest DPC routine execution time (µs): 348,788199 Driver with highest DPC routine execution time: ntoskrnl.exe - NT Kernel & System, Microsoft Corporation
Highest reported total DPC routine time (%): 0,008522 Driver with highest DPC total execution time: ntoskrnl.exe - NT Kernel & System, Microsoft Corporation
Total time spent in DPCs (%) 0,014885
DPC count (execution time <250 µs): 10281 DPC count (execution time 250-500 µs): 0 DPC count (execution time 500-10000 µs): 7 DPC count (execution time 1000-2000 µs): 0 DPC count (execution time 2000-4000 µs): 0 DPC count (execution time >=4000 µs): 0
_________________________________________________________________________________________________________ REPORTED HARD PAGEFAULTS _________________________________________________________________________________________________________ Hard pagefaults are events that get triggered by making use of virtual memory that is not resident in RAM but backed by a memory mapped file on disk. The process of resolving the hard pagefault requires reading in the memory from disk while the process is interrupted and blocked from execution.
NOTE: some processes were hit by hard pagefaults. If these were programs producing audio, they are likely to interrupt the audio stream resulting in dropouts, clicks and pops. Check the Processes tab to see which programs were hit.
Process with highest pagefault count: svchost.exe
Total number of hard pagefaults 5 Hard pagefault count of hardest hit process: 4 Number of processes hit: 2
_________________________________________________________________________________________________________ PER CPU DATA _________________________________________________________________________________________________________ CPU 0 Interrupt cycle time (s): 0,122026 CPU 0 ISR highest execution time (µs): 0,0 CPU 0 ISR total execution time (s): 0,0 CPU 0 ISR count: 0 CPU 0 DPC highest execution time (µs): 142,627331 CPU 0 DPC total execution time (s): 0,011094 CPU 0 DPC count: 5384 _________________________________________________________________________________________________________ CPU 1 Interrupt cycle time (s): 0,058638 CPU 1 ISR highest execution time (µs): 0,0 CPU 1 ISR total execution time (s): 0,0 CPU 1 ISR count: 0 CPU 1 DPC highest execution time (µs): 34,236571 CPU 1 DPC total execution time (s): 0,000809 CPU 1 DPC count: 65 _________________________________________________________________________________________________________ CPU 2 Interrupt cycle time (s): 0,097645 CPU 2 ISR highest execution time (µs): 157,16560 CPU 2 ISR total execution time (s): 0,000157 CPU 2 ISR count: 1 CPU 2 DPC highest execution time (µs): 29,206791 CPU 2 DPC total execution time (s): 0,000276 CPU 2 DPC count: 37 _________________________________________________________________________________________________________ CPU 3 Interrupt cycle time (s): 0,060619 CPU 3 ISR highest execution time (µs): 0,0 CPU 3 ISR total execution time (s): 0,0 CPU 3 ISR count: 0 CPU 3 DPC highest execution time (µs): 0,0 CPU 3 DPC total execution time (s): 0,0 CPU 3 DPC count: 0 _________________________________________________________________________________________________________ CPU 4 Interrupt cycle time (s): 0,159892 CPU 4 ISR highest execution time (µs): 0,0 CPU 4 ISR total execution time (s): 0,0 CPU 4 ISR count: 0 CPU 4 DPC highest execution time (µs): 348,788199 CPU 4 DPC total execution time (s): 0,047693 CPU 4 DPC count: 4197 _________________________________________________________________________________________________________ CPU 5 Interrupt cycle time (s): 0,243024 CPU 5 ISR highest execution time (µs): 0,0 CPU 5 ISR total execution time (s): 0,0 CPU 5 ISR count: 0 CPU 5 DPC highest execution time (µs): 57,351517 CPU 5 DPC total execution time (s): 0,004831 CPU 5 DPC count: 357 _________________________________________________________________________________________________________ CPU 6 Interrupt cycle time (s): 0,308209 CPU 6 ISR highest execution time (µs): 170,721959 CPU 6 ISR total execution time (s): 0,008064 CPU 6 ISR count: 75 CPU 6 DPC highest execution time (µs): 212,813805 CPU 6 DPC total execution time (s): 0,006727 CPU 6 DPC count: 243 _________________________________________________________________________________________________________ CPU 7 Interrupt cycle time (s): 0,085491 CPU 7 ISR highest execution time (µs): 0,0 CPU 7 ISR total execution time (s): 0,0 CPU 7 ISR count: 0 CPU 7 DPC highest execution time (µs): 4,418592 CPU 7 DPC total execution time (s): 0,000019 CPU 7 DPC count: 5 _________________________________________________________________________________________________________
Идея в раскидывании прерываний через Interrupt Affinity Policy Tool, т.е. хаб-контроллер USB с мышью идет на CPU4. А видеокарта на CPU3 и CPU6. Другое не трогал ибо "бо-бо".
И создании кастомного профиля питания в QuickCPU на основе "Макс.производительность" (Ultimate Perfomance) от Майкрософт, с ковырянием "Режим управления прерываниями" (2bfc24f9-5ea2-4801-8213-3dbae01aa39d), "Целевая загрузка каждого процессора" (73cde64d-d720-4bb2-a860-c755afe77ef2) и "Триггер неприпаркованного времени" (d6ba4903-386f-4c2c-8adb-5c21b3328d25). Ибо тесты показывают, что третий параметр("Триггер времени") вроде бы влияет на задержки сам по себе, даже если "Режим управления" выставлен в 1 (Любой процессор).
Простой процессора (5d76a2ca-e8c0-402f-a133-2158492d58ad) даже не отключал. Ибо пока нет смысла. Проц не разогнан, CoolandQuite и Турбо-буст в биосе включены.
В общем проблему так и не решил. Купил HDMI переключатель и поставил его между телеком и компом. Когда играю за компом, то он переключен на свободный порт т.е. вникуда, а перед тем, как идти играть с телека, я переключаю на него. Такие вот костыли.
Читаю эту тему (продолжаю читать) и офигеваю, какие у людей проблемы.
Угу, я вот тоже слегка "офигел", ввалив в компьютер для одной-единственной игры достаточно приличные деньги, когда техподдержка самой игры мне заявила, что "проблема есть и мы обязательно ее решим, оптимизировав игру под ваш компьютер... когда-нибудь потом". Хотя основные симптомы проблемы, нерешаемой в течении года, снялись буквально тремя кликами в утилите от Майкрософта 10-летней давности.
Поэтому ничего не знаю. Ибо эта замороченность на оптимизации и оверклокинге, как оказалось, бывает вполне полезна.
Member
Статус: Не в сети Регистрация: 26.03.2021 Откуда: Омск Фото: 33
OLD Hunter писал(а):
Maks_Gailish Полно.
Что имеешь ввиду? В этой теме только переезд в другую жил. площадь обсуждался в качестве решения, да и то с 50% вероятностью, повезëт - не повезëт, но это хрень феерическая. Или ты знаешь иной форум где есть ответы?
_________________ Intel i9-10900k@5,2/4,8 Ghz/MSI Z590 ACE G.E/Ballistix Max 4x16Gb@4400CL14/Sapphire Nitro+RX6900XT SE OC/Corsair:HX1200i/7000D/H150i E.C.
Member
Статус: Не в сети Регистрация: 14.06.2009 Откуда: Омск
Maks_Gailish Если только хитрег страдает тут вариантов несколько и все простые - проверяешь есть ли потеря пакетов, потом линию физически. Если и то и другое в порядке, но с хитрегом проблема остается - меняешь провайдера.
Advanced member
Статус: Не в сети Регистрация: 05.01.2006 Откуда: мск Фото: 5
Я некоторое время проверял для своих условий влияние большого значения MTU при игре в овервоче. Заметил то в вечернее время когда отзывчивость прицела падает, то радикальное увеличение МТУ слегка улучшает ситуацию. Но возможно, что это пласебо, хотя проверял неоднократно и почти каждый раз чувствовал улучшение. Конкретно я ставил МТУ 2048, 4096 и даже 8128. Улучшение небольшое и не всегда оно есть, наилучшее значение 4096. Понять почему так происходит я не мог, были некоторые идеи. С этими мыслями я обратился в вопросник на хабре. Там большинство ответивших как и ожидалось начали стебаться и улюлюкать, но один человек отнесся серьезно, причем человек связан с разработкой игр и его ответы и комментарии весьма информативны и интересны. До истины так и не докопались, т.е. я не уверился до конца что это пласебо т.к. все таки чувствую небольшое улучшение. Правда этого улучшения всеравно недостаточно для того чтобы отзывчивость была совсем хорошей. Зато в ходе обсуждения выяснил какие размеры UPD пакетов использует игруля Сейчас пока поставил 1400 и пока успокоился с этим. Кому интересно вот ссылка на хабр - https://qna.habr.com/q/1000987
_________________ ✅ РЕМОНТ мышек! ✅ качественно и с гарантией ✅
Заблокирован Статус: Не в сети Регистрация: 23.06.2019 Фото: 0
Ребята, спите минимум по 8 часов в сутки, не играйте уставшими или с самого утра, принимайте ноотропы, если работа выматывает – и будут вам низкие задержки (при условии нормального интернет-соединения).
Member
Статус: Не в сети Регистрация: 24.02.2019 Откуда: Минск
Phenomenum писал(а):
Ребята, спите минимум по 8 часов в сутки, не играйте уставшими или с самого утра, принимайте ноотропы, если работа выматывает – и будут вам низкие задержки (при условии нормального интернет-соединения).
лайк, подписка (а ещё не бухайте, не курите, и колоться не надо. ато тут по видимому многие... )
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения