Все прерывания делятся по следующим приоритетам: 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 минуты после загрузки системы. Не двигаем мышку и не используем клавиатуру в момент измерений. Потом остановка и скриншот.
Member
Статус: Не в сети Регистрация: 02.06.2012 Откуда: Стольный Град
kolyan1980-08-11 согласен, жаль - система гораздо меньше занимается тем, чем пользователь её не просил, в отличие от десятки, заточенной под сбор всевозможных данных о жизни и предпочтениях её пользователей. Я ещё не проверял все USB-порты, но уверен, что если не будет BSOD'ов - останусь на ней, мечтал об этом сразу после покупки этого компа, и движение мышью на ней чувствуется поотзывчивее, чем на LTSC v1809, v1909, v2004 (последняя вообще в синие экраны сваливается - возможно, в неё добавили какие-то проверки отключения телеметрии...). А вот с драйверами - с одной стороны, хорошо, что они есть, с другой - неизвестно, что в них народные умельцы понадобавляли, может, там бэкдор на бэкдоре...
_________________ 4-ех фаз хватает, что бы разогнать !!!8-ми ядерный!!! райзен до 3.8-3.9 Lopos, 13.10.2017
Привет всем, видимо я новичок в клубе обладателей карт с высокой задержкой, потому что я считаю это все-таки проблема железе, и вот почему я так думаю.
Информация о версиях системы и драйверах
Установлена на SATA SSD. Версия Windows: 2004 (19041.388) самый свежий апдейт, на предыдущем майском то же самое, проверял. Версия драйвера Nvidia: 451.67. Тесты были на свежей системе только лишь с драйвером Nvidia (до этого устанавливал абсолютно все драйвера, ничего не менялось толком, тут решил чистую установку сделать) Система полностью в стоке, даже память без ХМП.
У меня была связка 4690к+1070 на протяжении примерно трех лет, сейчас же я решил начать обновление, взял себе 10600к, Z490 TUF GAMING-PLUS, память HyperX Fury XMP 3466 16-18-18-36 1.36, но я ее завел аж на 3900 16-20-20 1.35, к слову процессор я тоже разогнал до 5.0ГГц/1.35 и даже без оффсета по AVX. Ну всё, подумал я, все тесты стабильности (включая мемтест, линпак 4096Мб проход) я прошел на отлично. Зачатки моей проблемы я начал замечать еще на рабочем столе, иногда у меня курсор просто дергался на пару секунд и пропадал из виду, потом снова появлялся, в играх 144 Гц ощущались словно 60, и по части инпут лага и по части самого визуального фреймрейта, звук на ютубе иногда чуть "клацал", но это было настолько еле заметно, что лишь недавно я заметил это, причем это все появлялось именно после установки нвидиевских дров. Я поиграл в ведьмака 3, я был в шоке от фреймтайма, игра статтерила и местами подфризивала, особенно в Новиграде. Я поиграл в Хитман 2, там та же картина, я поиграл в Ассасина Одиссею, там та же картина. Во всех играх данные статтеры проходили со временем и все становилось более-менее играбельным, но все равно были мелкие микростаттеры, которые глазом не заметны, но на фреймтайме есть некоторые спайки, которые приводят к некоторому ощущению "телепорта" внутри игры. Короче говоря, начал я гуглить и перерыл реддит, еще парочку форумов и наткнулся на вашу тему.
Я попробовал все фиксы в разных вариациях, помогло немного, но всё-таки помогло и на этом вам спасибо, микростаттеры же никуда не ушли, временами они проскакивают. В итоге на 1070 я имел данную картину:
Рабочий стол
#77
Ютуб я уже потом открыл, под конец, вроде для рабочего стола неплохо? Но что я увидел в ассасине:
AC Odyssey
#77
Следующая вещь, которую я сделал: я удалил через DDU драйвера нвидии из системы, поставил драйвера на встроенную графику, запустился со встроенки и вот что я увидел:
Встроенная графика
#77 #77
Я даже умудрился поиграть в ассасина со встроенкой:
Встроенка+Ассасин
#77
Бегал в самом большом городе в игре во всех тестах, пробегал по той же тропинке. В игре были статтеры, но видимо это вызвано памятью, а не драйверами, как в случае с нвидией, а так все было более чем стабильно для 20 фпс .
Так вот, у меня сформировался вопрос: правильно ли я сделал выводы, что у меня проблема исключительно в моей видеокарте? В моей сборке остались лишь видеокарта и БП. Может ли это быть БП, который плохо подает напряжиение на ВК? И на прошлой сборке были подобные статтеры, особенно в ведьмаке, но там видеокарта полностью не раскрывалась в 90% игр, а тут прямо по самые яйца загружена. Может вопросы глупые, я в этом не особо разбираюсь. БП очень старый и очень плохой (DeepCool 550W), у него умер один из проводов на котором распаяно SATA питание, при подключении SSD или HDD к этим разъемам они просто в любое время могут перезагружаться (в случае с HDD шпиндель уходит в бутлуп, SSD просто уходит в BSOD при установленной на ней ОС или отключается до дальнейшего переподключения именно руками, даже ребут не спасает).
Хотелось бы еще узнать, в нынешних бивисах на z490 чипсетах включен по дефолту хардварный таймер?
adesol моник какой? какое разрешение в игре? какое качество графики в играх ставилось? пробовал на низком качестве?
144Гц, ставились и низкие и ультры, и 1080р и 720р, все то же самое, помогает лишь чуть ограничение фпс.
Небольшой апдейт Я установил драйвер 441.41 через NVSlimmer Я не знаю, почему вы не поставили в шапку программу MSI util v2, нашел пост про нее в этой теме, я не знаю, что она делает, но я поставил в ней все галочки, также подразогнал память до 3800 16 20 20 40 CR2(вряд ли память мне дала какой-то профит, а вот MSI да):
MSI ВКЛ
Это в простое после подгрузки винды #77 Это пару минут пробежки по самому громадному городу в Ассасине #77 #77 Смущает до сих пор Wdf01000.sys, что это такое и за что оно отвечает? Единственный процесс, который выдает большое количество ISR. У вас так же?
кстати имхо зря ты память гонишь, прибавки от её разгона практически нет, а вот какие нить нестабильности или задержки легко.
Вообще начинать с неразогнаной системы. А потом уже начинать разгонять понемногу.
Я там вроде писал, что играл в самом начале на неразогнанной системе, а уже потом после более-менее стабильных результатов разогнал память. Прошел два двухчасовых мемтеста на ошибки, все окей, еще экстрим конфиг Anta777 прогнал. В апексе и в других играх 144 Гц выглядят как 144 Гц теперь, а не как 60-90 Гц, инпутлаг сам по себе явно поуменьшился, но в тяжелых играх профризивает до сих пор, но это уже не так неиграбельно. Проблема опять появилась, кстати, в ассасине 1330 прыгает нвидиа драйвер, хз в чем тут проблема. Драйвер? Сама железка? Я не понимаю. Может материнка? И вопрос еще, нормальная ли это картина? Первое ядро особенно.
Member
Статус: Не в сети Регистрация: 14.06.2009 Откуда: Омск
adesol писал(а):
Я установил драйвер 441.41 через NVSlimmer
adesol писал(а):
(вряд ли память мне дала какой-то профит, а вот MSI да):
Так что дало-то профил? Установка дров через бубен или мси? Надо все изменения по одному делать и проверять, а так непонятно ни самому ни окружающим. Самому непонятно в том плане, в каком направлении двигаться. Делать надо было так разогнал память - проверил, Поставил дрова - проверил, переключил в мси режим - проверил.
Так что дало-то профил? Установка дров через бубен или мси? Надо все изменения по одному делать и проверять, а так непонятно ни самому ни окружающим. Самому непонятно в том плане, в каком направлении двигаться. Делать надо было так разогнал память - проверил, Поставил дрова - проверил, переключил в мси режим - проверил.
Я так и делал, я просто длинные тексты писать не умею, после установки 441.41 с бубнами и включением MSI стало явно лучше, после разгона памяти задержка еще больше снизилась, а вот потом я чето начал крутить и сам не понял что накрутил в итоге. Я хотел поинтересоваться еще, плохо ли большое количество ISR у Wdf01000.sys?
О, я не один такой. Короче та же проблема. Система: 3700х, Asus b450 E-gaming pro, rtx 2070. Писать озу смысла нет никакого, так как пробовал различные плашки, тайминги, частоты - разницы нет. Проблема все та же: во всех играх проявляются фризы в большей или меньшей степени, особенно в играх с открытым миром. На DTF чувак создавал тему, с такой же конфигурацией, только мать была другая и оперативка. Грешил на рузен, перешел на 10700к - проблема осталась та же. Спустя долгие 3 месяца бессонных ночей и сотни выпитых бутыльков корвалола вроде как нашли причину - кэш шейдеров нвидии. Фризы начинаются при первом запуске игры и постепенно исчезают, лишь изредка проскакивают. Если почистить папку NV_Cache и снова запустить игру - фризы появляются вновь. Если отключить кэш шейдеров, то фризы будут на постоянной основе. Хотелось бы потестить какую-нибудь красную видюху. Во всяком случае подобного от владельцев радеонов я не видел.
Solid_FEAR Причем тут амд и нвидиа. Есть несовместимые связки, которые дают фризы. Не более.
Несовместимые в каком плане? Видеокарта+материнка+процессор? Ну просто сколько не гуглил, подобные проблемы наблюдаются только на зеленых видюхах. Неважно какая мать или проц, во всех жалобах фигурируют джифорсы. Даже если несовместимость, то она проявляется только на видеокартах от нвидии. Может я ошибаюсь конечно. Здесь описывается такая проблема и полный переход с одной платформы на другую, который ее не устранил. Из прошлых компонентов остались только видеокарта и озу.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения