Все прерывания делятся по следующим приоритетам: 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 минуты после загрузки системы. Не двигаем мышку и не используем клавиатуру в момент измерений. Потом остановка и скриншот.
Фпс стабильней некуда. Нет, не на пару секунд, выскоий пик на графике фреймтайма и характерное зависание на какую-то долю секунды. Да, на чистой винде то же самое
GameBotOff я не знаю. А в чем проблема? купишь новую за 6-7тыр, старую продашь за 3-4
Новая стоит в 2.5 раза дороже, проблему на пару сообщений выше расписал же) Лишний раз отдавать деньги за мать, которая не факт, что решит проблему, я не горю желанием
Member
Статус: Не в сети Регистрация: 14.06.2009 Откуда: Омск
GameBotOff Взять в магазине любую мамку, для проверки. Потом вернуть, т.к не подошло. Сокет например не тот, или проц не поддерживается. Придумать можно массу причин. Ну раз не хочется продавать эт ум брать другую.
С недавнего времени начал крашиться драйвер nvidia. В любой момент, без зависимости от нагрузки. Экран идет разноцветными артефактами, потом или вылет и драйвер был успешно восстановлен, или синька по видео. Стоял последний доступный для w7. Поменял на старый, через время тоже самое. Искал причину долго, проверял карту, видеопамять, на другом компе с ней все о.к. Оператива тоже, ставил другую и эту в другой комп. Менял диск, блок питания новый купил за 4 тыс. А тут случайно увидел версию msi v3. зашел, а там галки на карте нет. А после каждой переустановки драйвера я всегда ставил ее на прерывание карты, правда у меня была старая первая версия. а в тот раз забыл. Поставил галку, перезагрузился и через пять минут поймал артефакты и синьку 116. Снес дрова, переустановил, галку не ставлю и все работает. Все прерывания в минусе, а карта на 16 в плюсе. Хотя раньше всегда определялась в минусе. Как это объяснить?
Всем добрый день\вечер сразу оговорюсь я обычный пользователь, и у меня такая проблемка, в любых играх при любых настройках графики происходит фриз, при игре стабильный Fps, на момент фриза падает и Fps, на видео показал как все происходит, при появлении машины в открытом мире и когда идёт показ автомобиля перед гонкой появляются те самые фризы при чем они не рандомные всегда происходят в одни и те же моменты, во время гонки всё хорошо, так же показал данные с LatencyMon во время игры, все действия перечисленные в FAQ и сделал, изменилась только плавность картинки на протяжении всей игры, но фризы как были так и остались с той же интенсивностью, так же я переустанавливал Windows с форматированием всех дисков не помогло. Борюсь с проблемой полгода, но на форум ни разу не писал, температуры все рабочие
Member
Статус: Не в сети Регистрация: 16.06.2007 Фото: 0
А у кого нибудь есть такое что при включенном счетчике фпс(alt+R) geforce experience в LatencyMon current latency = +-550мс(на рабочем столе, да же игры не запущены), а если выключить то 10-50мс ? Сколько же я всего перерыл пока случайно обнаружил
Мат.плата: AsRock B450M Pro4, BIOS P5.30 (последний, обновил спустя 3 часа игры в статтерах, т.к. думал поможет)
Процессор: Ryzen 5 3600 (undervolt 1,175 mV с 4025 Hz). Тестил через CTR Test, процессор Silver.
ОЗУ: 16 GB (2x8) Kingston HyperX, чипы не очень, поэтому выставил XMP 2.0 на 3200, 1.35 V и понизил по 1 пункту тайминги (стало 15, 17, 17, 35).
Видео: PalitGTX 1660 Super GamingPro
ОС: Windows 11 Home Лицензия, последние обновления
Монитор: FullHD 75 Гц.
Температуры в игре CPU 60-62 и до 40% загрузки, GPU 60-66 до 80-92% загрузки. Настройки в игре: низкие текстуры, всё остальное отключено, анизатропная 2x, вертикальная отключена. Всё работало прекрасно 6-8 месяцев настройками ОЗУ и примерно 2-3 месяца после андервольтинга + с теми же опциями ОЗУ, при ежедедневном использовании.
Ежедневное использование ПК: Всё было ок, у меня куча программ – 2 браузера (Яндекс и Хром) с примерно 6-12 вкладками в каждой, Adguard, PowerToys, QuickLook, MiniBin, Wallpaper Engine, Realtek HD, GamingHeadset 7.1 (наушники Sven), Apex Legends – всё запущено так с утра и до вечера, и не было никаких статтеров 2 месяца, а сегодня с утра весь день статтеры и сама система подлагивала. Отключил весь софт и службы (чистый запуск Win) и в первую минуту всё было "ок" в Latency Mon, до 200 ms, но как только запустил Apex Legends - словил dxgrkrnl.sys по IRS на 2900 ms и nvlddmkm.sys. В самой игре заметных статтеров не было вообще (прям как раньше, всё ок и я поиграл минут 10-15), но при выходе из матча в главное меню словил скачок на dxgrkrnl.sys DPC аж в 3000 ms.
Перезагрузился, 1 час постоял в простое LatencyMon и получил следующее (скрин 1), скрины 2 и 3 – то, что выше описал
Скрины Latency Mon
1 час в простое, чистый запуск #77 при запуске Apex Legends #77 при выходе в главное меню из матча #77
До этого за пару недель прогнал в unigine heaven benchmark видюху, всё ок, артефактов нет, минут 40-60 проверял. Оперативу долго тестил и проц, ни разу BSOD не было за всё это время.
Забыл добавить самое важное: компьютер в любой задаче, даже без игр фризит со звуком 1 раз в 2-4 дня на 1 секунду. Грешу на SSD. SSD живой, 79%, ошибок нет показывает. SSD Kingston SA400, игры на HDD, 100% здоровье и производительность.
Подскажите, пожалуйста, что могло произойти и как с этим быть?
Member
Статус: Не в сети Регистрация: 01.02.2010 Фото: 12
infinity_attracts писал(а):
Забыл добавить самое важное: компьютер в любой задаче, даже без игр фризит со звуком 1 раз в 2-4 дня на 1 секунду. Грешу на SSD.
Сколько на нем свободного места ? у меня такой же стоит только на 480 Гб, помню были проблемы в вотч догс2 на нем, во время фриза подскакивало активное время и среднее время ответа, винда в то время стояла на другом ссд.
Member
Статус: Не в сети Регистрация: 25.01.2004 Откуда: Ростов-на-Дону Фото: 4
infinity_attracts писал(а):
Подскажите, пожалуйста, что могло произойти и как с этим быть?
1. Сам апекс кривой калл и лагает после очередного аплейта. 2. Лагает сама вин11 после очередного апдейта. 3. ХДД, на котором игры, паркует головки, а на распрарковку нужно время и происходит лаг. Энергосбережение винта и его ААМ/АРМ надо смотреть. Возможно переключил сам и забыл либо винду починили и она шаманит энергосбережение сама. 4. Умирает ссд или хдд, но в смарте этого пока нет потому что надо бы запустить экстендед лонг тайм тест, который на терабайтнике занимает несколько часов, возможно ошибки выявятся и попадут в смарт. Ну или прогнать Викторию по дискам, но это инструмент не для кривых рук, там вроде есть кнопки которые могут затереть данные, нужно читать мануалы. 5. Окисление контактов на плате хдд на входе в гермоблок.
_________________ 12400|224XT|MSI PRO B660M-A DDR4|4x8Gb@3466|KFA2 3060-12X|Deepcool PQ650M|Corsair 200R|Win11x64
Я думаю, что куда то в шапку нужно закрепить информацию о том, что если у вас ДВА МОНИТОРА, либо как у меня телек+монитор, то на одном из них будут фризы раз в несколько секунд. Всплески у dxkrnl.exe. Проблема есть как на 10, так и на 11. Возможный обходной путь - откат на 10 1909, но там вроде бы баг standby list не исправлен.
Member
Статус: Не в сети Регистрация: 31.07.2006 Откуда: Самара
ДУМАЮ ПОБЕДА! Ryzen 5800X / 1050ti / B450 / 32Гб Ранее не писал, т.к. предложенные варианты с планами питания, отключением энергосбережения всяких USB не подошли. Проблема была в следующем, комп перезагружаю редко и дня через 3-5 начинал щёлкать/тормозить звук в Media Player Home Cinema, да и на ютубе тоже, latency монитор показывает задержку драйвера видеокарты. Возникало такое внезапно и лечится только перезагрузкой. Ответ найден случайно: Часто использую ПО для мониторинга (особенно сейчас проц 5800 поставил), в частности HW Monitor. Смотрю кино, закрываю HW Monitor и сразу пошли артефакты звука. В общем сейчас не открывал его после перезагрузки и уже 14 суток всё работает без проблем. Вот теперь не знаю чем смотреть максимальную температуру процессора.
Сейчас этот форум просматривают: stiffmaster и гости: 9
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения