Все прерывания делятся по следующим приоритетам: 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
Статус: Не в сети Регистрация: 17.12.2012 Фото: 3
iG0Lka писал(а):
Bigg так чо какие дрова нвидиа в результате?
Оставил 398.82 на Win10 1803. В них полный порядок в LatencyMon/DPC Latency Check визуально плавнее всё, ничего не глючит, даже если некоторые игры пишут, что они "устарели"
_________________ Ryzen 5800X / 2*16Gb 3200 Kingston / ASRock B450-Pro4 / Dell oem 3080 10G / 970 Evo Plus
Member
Статус: Не в сети Регистрация: 30.04.2011 Откуда: Краснодар Фото: 21
Всем доброго вечера, ребята. стал счастливым ну а может и нет обладателем двух 1070Ti от Inno3D и в моей любимой игре с этими картами стали появляться жуткие падения ФПС, Видео:https://youtu.be/mKU4CK3PbzM до этого стояли две 780 и такого не было, что характерно до этого видео бегал по замку барона, где у меня были тоже такие-же падения ФПС причем минимум раза три, но при включении записи через Нвидиа экспиреенс они пропали, но после переноса на остров чародея. я таки поймал этот глюк, падение ФПС при убийстве гнильцов были и на старых картах, непонятно почему... Сами понимаете, что играть с такими просадками вообще не вариант, а осознавать, что отдал 50К за новые блин карты и получил говно на палочке еще обиднее)))
Member
Статус: Не в сети Регистрация: 30.04.2011 Откуда: Краснодар Фото: 21
eLfiK а куда писать, вроде как очень похоже на этот DPC... Тестил пока только в ведьмаке где есть эти тормоза, в фалаут, замечено не было, и вартандер, там тоже вроде нет... И такой вопрос, если скажем это действительно этот DPC, кто нибудь уже обращался по гарантии, возвращали карты или убирали этот эффект полностью?
Member
Статус: Не в сети Регистрация: 10.04.2014 Фото: 0
Может, у вас комп/винда криво настроены, отсюда и просадки фпс, кто знает. С проблемами по DPC обращаются в основном наоборот -- когда при хорошей производительности отсутствует плавность картинки, например.
Member
Статус: Не в сети Регистрация: 30.04.2011 Откуда: Краснодар Фото: 21
eightylvl Эммм так я вроде видео выложил, когда "хорошая производительность" стабильные 60 ФПС и тут бац падение до 42 Фпс, на старой системе с двумя 780 такого не было.
Junior
Статус: Не в сети Регистрация: 06.03.2008 Откуда: Харьков
Приобрел себе 1080Ti (до этого стояла 770), и практически во всех играх появились периодические лаги (с периодичностью от 1 до 10ка минут) и микрофризы. С причиной микрофризов разобрался довольно быстро, ею оказался драйвер 3DVision (и очки есть, и монитор 144Гц - те. поддерживает), так что от стереоскопии пришлось пока отказаться. А вот с лагами боролся довольно долго. В итоге перечитал эту тему, перечитал тему на инглише, и полез пробовать все возможные варианты по порядку, и нашел таки причину. Ею оказались контролееры JMicron (внешний e-SATA который я не использовал) и Marvel (доп. SATA контроллер на 2 порта). Т-как винтов/SSD у меня 4 штуки, а чипсет поддерживает только x2 SATA 6GB/s (и x4 SATA 3GB/s) пользовался интегрированным Марвеловским контроллером который тоже поддерживает x2 SATA 6GB/s. Не знаю почему проблема возникла только после установки новой видеокарты, но факт есть факт, пришлось все накопители перевесить исключительно на порты предоставляемые чипсетом. Мамка/проц. конечно старые, нужно менять, ибо новую видеокарту нагружают с трудом (и то после разгона). Что касается таймеров, в моем случае наилучшим оказался вариант с отключением HPET (через биос и bcdedit /set useplatformclock false или bcdedit /deletevalue useplatformclock), время кадра в том-же Ведьмаке стало практически идеально ровным. Наихудшим оказался вариант с отключенным через биос HPET и включенным useplatformclock (/set useplatformclock true), время кадра стало прыгать в пределах 2-8ms, отзывчивость мыши снизилась. Включение HPET через биос и useplatformclock дало небольшие скачки времени кадра 1-4ms, но мышь все равно стала менее отзывчивой по сравнению с полным отключение высокоточного таймера. Все значения по Latency Monitor'у после 10 минут мониторинга теперь не превышают 80мкс (до этого SCSI Port Driver периодически устраивал ISR задержки до 1-2мс)
_________________ - What are we going to do today, Brain? - Same thing we do every night, try to take over the world!
Последний раз редактировалось MAD_Kuzia 06.12.2018 15:45, всего редактировалось 1 раз.
Advanced member
Статус: Не в сети Регистрация: 05.01.2006 Откуда: мск Фото: 5
MAD_Kuzia писал(а):
отключением HPET (через биос или /set useplatformclock false), время кадра в том-же Ведьмаке стало практически идеально ровным. Наихудшим оказался вариант с отключенным через биос HPET и включенным useplatformclock (/set useplatformclock true)
тут нестыковочка вроде. "или" предполагает, что можно выключить либо в биосе либо через "useplatformclock false". допустим в биосе. а дальше ты пишешь, что при выключении в биосе но включенном "useplatformclock" результат плохой. видимо в первом случае нужно было писать "и" - т.е. и в биосе и в "useplatformclock" ?
_________________ ✅ РЕМОНТ мышек! ✅ качественно и с гарантией ✅
Всем привет! Столкнулся, наверное, я с этой проблемой... Купил моник 1440p и заметил, что плавности в играх нет, есть статтеры, во время вертикальной синхронизации фпс проседает на миллисекунду, потом опять вверх. Статтеры и неплавность в гта 5 и ведьмаке 3 встречал пока. ( В основном, в эти игрухи гамаю ) Вот тесты: https://imgur.com/a/8II49Sh Может кто глянуть, пожалуйста, и сказать, всё ли норм с тестами? Или всё таки карточка?
PS Карта 1070ti от Zotac AMP Edition Там где 5 минут, там я играл в гта 5
Member
Статус: Не в сети Регистрация: 14.06.2006 Откуда: Луганск Фото: 16
В играх, в частности в серии Батллфилд, фрейтайм процессора больше чем у ГПУ, это нормально? В принципе игра идет достаточно плавно, но иногда бывают спайки фреймтаймов вверх, хорошо видно на графике Афтебернера. https://imgur.com/a/GnJpDS5 HPET в биосе и ОС отключено, проц работает на постоянной частоте 4700. Парковка ядер выключена. В самой проге все отлично, за минуту все в пределах нормы.
_________________ Enjoy Ambient music. Music for soul, people, imagination. BF - Danger_Cat83
Member
Статус: Не в сети Регистрация: 14.06.2006 Откуда: Луганск Фото: 16
Alex TOPMAN писал(а):
Чем меряли?
командой в самой игре. Просто смотрю тут у многих в играх фреймтайм ровный, а у меня иногда скачки вверх происходят. Браузер закрыт, файл подкачки 24гига. Правда у меня установлен НОД32, но сам антивирь не запущен, правда есть его какой-то фоновый процесс, который все время в памяти сидит.
_________________ Enjoy Ambient music. Music for soul, people, imagination. BF - Danger_Cat83
Всем привет! Столкнулся, наверное, я с этой проблемой... Купил моник 1440p и заметил, что плавности в играх нет, есть статтеры, во время вертикальной синхронизации фпс проседает на миллисекунду, потом опять вверх. Статтеры и неплавность в гта 5 и ведьмаке 3 встречал пока. ( В основном, в эти игрухи гамаю ) Вот тесты: https://imgur.com/a/8II49Sh Может кто глянуть, пожалуйста, и сказать, всё ли норм с тестами? Или всё таки карточка?
PS Карта 1070ti от Zotac AMP Edition Там где 5 минут, там я играл в гта 5
Всем привет! Столкнулся, наверное, я с этой проблемой... Купил моник 1440p и заметил, что плавности в играх нет, есть статтеры, во время вертикальной синхронизации фпс проседает на миллисекунду, потом опять вверх. Статтеры и неплавность в гта 5 и ведьмаке 3 встречал пока. ( В основном, в эти игрухи гамаю ) Вот тесты: https://imgur.com/a/8II49Sh Может кто глянуть, пожалуйста, и сказать, всё ли норм с тестами? Или всё таки карточка?
PS Карта 1070ti от Zotac AMP Edition Там где 5 минут, там я играл в гта 5 Парни, так кто что думает?
Откат настроек видеоадаптера до "по-умолчанию" или обновление дров не пробовали?
Добрый день. Прогнал сейчас LatencyMon как в ФАКе написано (2 минуты ждать после загрузки). Результат Файл подкачки включён, ещё оперативка разогнана и в прям 100% стабильности не уверен (тестмем5, игры, таймспай экстрим пока никаких ошибок не выявили). Это я про pagefault 38. Вроде это с памятью связано. В остальном норм результат? Но вот DPC Checker показывает задержку 1000, т.е. желтизна сплошная. Стоит вин10 1809, на 1803 было так же. Даже помню со старой вк (печ780) в основном 1000 было, иногда 500. Я так понял, это дохрена. Но вроде и с вин10 этот чекер может не корректно работать? В общем, что делать?)
Сейчас этот форум просматривают: eLfiK и гости: 10
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения