Все прерывания делятся по следующим приоритетам: 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 минуты после загрузки системы. Не двигаем мышку и не используем клавиатуру в момент измерений. Потом остановка и скриншот.
В общем появилась проблема с отключением мышки, думал мышка плохая, воткнул другую, другая тоже отваливается, не так часто как более старая, но итог одинаковый, поставил latencymon думаю посмотрю что будет при отключении, увидел не очень приятную картину, в простое на рабочем столе выше 500 вроде не прыгает, стоит зайти в любую игру, открыть браузер, воспроизвести видео/музыку, начинаются чудеса, мышка отключается в основном в играх, но на рабочем столе даже в простое бывает тоже, с характерным виндовым звуком при подключении устройства, бывают под типа фризов, курсор подвисат на немного, без характерного отключения юсбишного, куда копать, какие мысли? win10 2004 ставилась поверх 1909, лицензия коробочная, ставилась с поставочной флешки. При всё при этом других проблем не наблюдаю, со звуком всё нормально и.т.д. https://prnt.sc/u95zwh https://prnt.sc/u962xw
Та же ситуёвина, поставил начисто оригинальный образ 2004 и те же самые герои событий dxgkrnl, ntoskrnl и ndis. Подумываю откатиться, на 1909, для сравнения) Лечится с помощью установки службы SetTimerResolutionService, либо ISLC v1.0.2.2 с такими настройками:
проблеме с месяц, просто не забивал себе голову так как не часто играю, но в последние пару дней даже когда просто не сижу за пк слышу виндовый звук и пропажу курсора на пару секунд, возможно нет взаимосвязи с задержками, не понимаю куда копать, неужели обе мышки решили таким образом помереть
OLD Hunter во всех портах одно и тоже, вот сейчас пока писал вам дважды отвалилась мышка, обе мышки проверены на ноуте с 2004 и все отлично, уже подумываю о чистой установке 2004
kpaxo6op писал(а):
Лечится с помощью установки службы SetTimerResolutionService, либо ISLC v1.0.2.2 с такими настройками
не понял что именно нужно сделать, вписать те же показатели, работает не зависимо от конкретного железа и.т.д.?
Member
Статус: Не в сети Регистрация: 29.11.2013 Фото: 0
Главное, что в спокойном состоянии LatencyMon (кстати он обновилсо V7.0) всё в норме, даже очень в норме, НО только запускаю ютуб и dpс*ы зашкаливают, при том звук, в порядке, без щелчков и зацикливаний, но если очень хорошо присмотреться, наблюдается некая желеобразность, в динамике, общего интерфейса, ну и мышь не такая веселая. Пробовал и мозилу, с дополнениями и хром чистый - одинаково.
Добавлено спустя 1 минуту 37 секунд:
fo36r писал(а):
работает не зависимо от конкретного железа и.т.д.?
Да, ствите 2 галки на автозапуск и планировщик, третью возле 0.50 на скрине, выставляете 0.50, 2000, Start и всё. Проверяете в latency mon.
Последний раз редактировалось kpaxo6op 01.09.2020 2:00, всего редактировалось 1 раз.
Главное, что в спокойном состоянии LatencyMon (кстати он обновилсо V7.0) всё в норме, даже очень в норме, НО только запускаю ютуб и dpс*ы зашкаливают, при том звук, в порядке, без щелчков и зацикливаний, но если очень хорошо присмотреться, наблюдается некая желеобразность, в динамике, общего интерфейса, ну и мышь не такая веселая. Пробовал и мозилу, с дополнениями и хром чистый - одинаково.
Идентично, только ещё usb отваливается в котором мыша, не знаю один только порт или нет, клавиатура у меня через ps/2 Помню с год назад на 1909 проверял задержки, там были тоже большие, но никаких проблем не было, поэтому не забивал себе голову.
Member
Статус: Не в сети Регистрация: 29.11.2013 Фото: 0
fo36r писал(а):
клавиатура у меня через ps/2
Аналогично, но тормозят то, судя по латенсимонитору дрова, связанные с видео и стандартный сетевой. Поиграйтесь еще с утилью MSI_util_v2 Некоторым помогает, да и просто полезная штука, как по мне. Отметьте галками дрова AHCI, видео, звука и сетевуху, ребут и запустите по новой, если минусики добавились, к отмеченным, значит устройства висят на отдельных irq, непосредственно в памяти, потом смотрите разницу, в латенсимоне.
Добавлено спустя 14 минут 24 секунды:
fo36r писал(а):
только ещё usb отваливается в которо
Попробуйте в диспетчере устройств поотключать, во всех USB концентраторах, управление электропитанием - разрешать отключение питания.
Cкачал, но тестить буду позже, нужно разбираться в этом всё ещё, уже голова кипит, да и спать хочется.
kpaxo6op писал(а):
Попробуйте в диспетчере устройств поотключать, во всех USB концентраторах, управление электропитанием - разрешать отключение питания.
Первым делом это сделал. kpaxo6op Большое спасибо за советы, буду разбираться.
kpaxo6op писал(а):
ствите 2 галки на автозапуск и планировщик, третью возле 0.50 на скрине, выставляете 0.50, 2000, Start и всё. Проверяете в latency mon.
https://prnt.sc/u99twu после этих манипуляций так же мышка отваливается, при этом latencymon выглядит вот так https://prnt.sc/u99v93, но это в простое не играя и не продолжительное время, пока оставлю до часика, посмотрю что будет после. UP: после часу latencymoon кажет чуть лучшие показатели https://prnt.sc/u9af0a, но проблема осталась. Вопрос такой, а эту программу LSLC нужно на постоянку использовать?
Member
Статус: Не в сети Регистрация: 29.11.2013 Фото: 0
fo36r писал(а):
эту программу LSLC нужно на постоянку использовать?
Да, она прячется, в панели задач. Я предпочитаю SetTimerResolutionService, в два клика установил и забыл за него. Висит себе, в службах и глаза не мозолит, без всяких настроек, эфект тот-же самый вроде.
Я здесь чтобы немного помочь настроить ваш пк на более менее низкий латенс , я это сделал буквально за неделю научился и много тестил присылаю скрины
Добавлено спустя 2 минуты 53 секунды: 1.Что я хочу сказать сразу , нвидиа кернел не блочится если у вас нвидиа , нвидиа кернел растет сильнее если у вас виндоус не 1609 или 7 2.Директ кернел и хороший латенс можно удерживать с помощью программа msi если надо покажу скрин что и как 3.Irq процессы в msinfo не должны ложиться друг на друга , каждый процесс на своём месте , то есть ноль конфликтов . 4.Биос должен быть настроен так . Turbo + xmp , видеокарты можно поставить на второй gen как и dmi процессора на второй ген , девайсы должны работать только в заднем порту желательно мышь и клаву в usb 2.0 , звуковая карта hd audio realtek офнута,свой звук на внешке usb, в биосе выключены c- приоритеты и c config , видеокарта установлена на 256 вроде так называется шина , там 32 64 и тп,отключен режим старый девайсов это типо те которые как старые мыши шариковые порты. на этом всё в биосе 5.Далее винда hpet off естественно. Удален весь мусор что предлагает мне винда 2004 оригинал ,отключено очень много служб. установлены все в комплекте фишки от нвидиа кроме экспиринс , но отключены через дистпетчер, опять же выключен через биос hd аудио контроллер ,пользуюсь usb звуковой картой,в автозагрузка ничего нету,убран из диспетчера процесс не помню названия SearchUI.exe вроде, в автозагрузках лежит util msi 2,драйвера дефолтные на всё что установились кроме видюхи , стоит последний драйвер 452.06 , пользуюсь новой услугой для 2004 виндовсов - планирование графического процессора с аппаратным ускорением ( не знаю что это дает). на это с виндой вроде всё.
3.Теперь по девайсам железу bp - bequiet 550w msi z390 gaming plus - i3 9100 f 4.0 - 1660 ti palit stormx def - hyperx 16 gb - 3 ssd diska - mouse logitech g102 - klava logitech def - звук Creative Sound Blaster OMNI SURROUND хм вроде всё
Будут вопросы чтобы разъяснить пишите , я добрый хД (не гей)
Добавлено спустя 43 минуты 59 секунд: Залил рары со скринами. хз может че упустил Биос потом если что сфоткаю для пруфа что от латенса есть эффект предоставляю с портала fc https://www.youtube.com/watch?v=JXz4Q-a9B_8 , где играют с тяжелым античитом который не важно какая у тебя система убьет твою стрельбу в ноль , а игра напомню 1999 года , где требуются многие навыки. В общем там так же как и везде , фейсит и тп, ты можешь быть в стаке , а можешь быть в соло можешь быть соло против стака,но это не важно ,главное как ты слышишь , а еще как настроено твоё железо под эту игру, латенс пк = латенс мыши = интерполяция модели ,эта игра не любит не каких задержек,на паблике то понятно , статы 50к 0 для меня обычное дело уже давно и она просто ненавидит нвидию, есть игроки которые снимают видеокарты со своих топовых процессоров со встроенной видеопамятью и играют без видеокарты,что абсолютно убирает все задержки особенно на win 7 / Но я уже не играю в эту игру , для меня более любопытны сингл хоррор прохождения и ластовые сложности в играх ,этот геймплей меня привлекает больше чем долбешка
Но тут не об этом,у меня были перерывы от игр , т.к я поставил с 1909 win 2004 и получил задержки и по этому за недельку тестов разобрался. Решил выложить,видео можете не смотреть кто считает за рекламу канала ибо мне на это [автоцензор3.14], я прошел уже 20 игр было ноль зрителей и мне на это всё равно,главное хорошее время и ластовая сложность, а быть знаменитым не моё . И я просто по доброте и видя сколько здесь страниц обеспокоенных личностей донес информацию . со скринами и со всем делом. И сорри за ошибки я особо не всматриваюсь и думаю когда пишу . Всё если че пишите
hpet должен быть выключен только в windows и включен в биосе Команда bcdedit /deletevalue useplatformclock перезагрузились если пишет что команда не найдена или такое действие уже производилось пишем - bcdedit /set tscsyncpolicy перезагружаемся вводим снова bcdedit /deletevalue useplatformclock перезагрузились потом это bcdedit /set useplatformtick yes делает ровный таймер равный 0.500 хорошо для инпут лага для коррекции поведения мыши на ужасных windows 10
Если реалтек или карты ничего не грузят то хорошо ничего менять не надо,мой hd audio грузил сильно ругался ,пришлось убрать,да и звуком я не был доволен
На момент решения проблемы видеокарты не было, что минимизировать задержки была использована встроенная графика. Вы эти скриншоты видели? https://prnt.sc/u962xwhttps://prnt.sc/u95zwh Тогда почему при фризах/отключения мыши те показатели растут?
Ant1Cheater писал(а):
лечатся отключением в уефи XHCI & EHCI hand-off + поддержки легаси режимов.
А не будет проблем потом никаких? Я читал об этом, пишут что система может быть не стабильной, поэтому решил ранее не трогать ничего.
Fet KiLLa Правильно понимаю, что на разных устройствах не должны совпадать цифровые значения прерываний irq? https://prnt.sc/uadbh1 - на этом скриншоте всё в порядке?
Сейчас этот форум просматривают: HaZarD и гости: 18
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения