Все прерывания делятся по следующим приоритетам: 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 минуты после загрузки системы. Не двигаем мышку и не используем клавиатуру в момент измерений. Потом остановка и скриншот.
Всех приветствую, приобрел новый ноутбук HP Victus 16-e0014ur (R5 5600H, RTX 3060 6Gb, 8Gb ОЗУ в стоке). В рандомный момент, независимо от сценария использования ноутбука(игры, работа, просмотр видео, либо же простой) появляется микрофриз, сопровождающиеся с хрипами, замедлением аудио и slow-mo эффектом всей системы в целом где-то на секунду. С этой проблемой вожусь где-то месяц. В DPC Latency Checker в момент фриза график улетает в космос до значений от 40к до 60к мкс. LatencyMon почему-то не всегда ловит момент фриза, но в основном вот такие "проблемные" драйвера он указывал: ACPI, ndis, ntoskrnl, i8042, nvlddmkm, dxgkrnl.
Что было сделано: обновлена память до 16 Гб (2 планки по 8Гб, т.к. сначала было подозрение на нехватку памяти), поменял Wi-Fi адаптер (был Realtek, поставил Intel по совету форумчан по данному ноутбуку), устанавливал чистые образы 10 и 11 винды, обновлял драйвера до последних возможных версий, пробовал старые, в том числе с помощью DDU для видеокарт, отключал все возможные устройства в диспетчере устройств, обновил BIOS, отключал ненужные службы, в автозагрузке ничего нет абсолютно, поставил режим максимальной производительности и отключил режим экономии энергии для многих устройств, проводил манипуляции с таймерами, менял режимы с IRQ на MSI...
Писал поддержке HP по данному вопросу, но они ничего, кроме встроенного ПО для диагностики предложить не могут(я уже запускал их комплексный тест проверки компонентов и системы, ничего там не нашлось), и они не работают со сторонними приложениями, хотя я им прям "тыкал" - ну вот же проблема - толку ноль.
Так то работать и играть за ноутбуком можно, как уже сказал, фриз возникает в рандомный момент - может раз в 2 часа, 3 часа, и я не понимаю что именно вызывает такую задержку. И честно уже стало напрягать это меня, я уже правда не знаю что можно ещё такого сделать, чего я может и не делал. Температуры все в пределах, ничего не перегревается и не троттлит. Вариант нести в сервис по гарантии пока не рассматриваю, поскольку у меня нет устройства под замену, всё таки работаю за ним.
Member
Статус: Не в сети Регистрация: 16.05.2010 Откуда: Ленинград Фото: 545
madixxon писал(а):
- может раз в 2 часа, 3 часа, и я не понимаю что именно вызывает такую задержку.
Это энергосберегающие, троттлинг или периферия-учитывайте что это Ноутбук, ACPI - высокий, тут только последний биос и обновлять драйвера от HP/AMD chipset- и подбирать, режим фаст бут в ОС выключен? Для АМД платформы крайне важно поставить последние обновления на чипсет полный пакет.
Попробуйте напишите в саппорт Hp дополнительное письмо, и мотивируя тем, что ничего не помогает-а фризы вам мешают работе, на основании этого, выпросите у них последнее бета или инженерное обновление прошивки, обязательно добавив в письме, что осознаёте риски, являетесь опытным пользователем, и отказываетесь от гарантийных и каких либо претензий к сотрудникам и компании ,в случае чего. В таком ключе.
Текущая версия и билд ос?,в течении этих-2-3 часов, что с температурами, и связано ли это хоть как то с режимами сон/пробуждение?.
powercfg /energy репорт - что показывает? Какой режим портов usb? - XHCI hand off выключен или включён?
Какая версия ос и билд? - UEFI загрузка или смешанная(СSM)?
Сколько дисков в системе?, тип подключения, используется ли LPM- включен ли в биосе, или нет. В ос стандартный драйвер контроллер или hp(amd) ? В целом состояние дисков?
В журнале ос на момент фризов есть что нибудь?, Сведения системы или приложения?, Ошибки?
Добавлено спустя 23 минуты 1 секунду:
enjthesilence писал(а):
Упали задержки до
после обновления драйвера на новый, процедуру надо будет повторить, будет сброс режима.
madixxon писал(а):
проводил манипуляции с таймерами
До ваших манипуляций какой был тип таймера и частота?, и какая была скорость возврата функций?.
Даже без подключенной периферии проскакивает микрофриз.
kiberman писал(а):
тут только последний биос и обновлять драйвера от HP/AMD chipset, режим фаст бут в ОС выключен?
Биос последней версии с сайта производителя, откат на предыдущую версию не помогает, драйвера чипсета стоят актуальные, фаст бут выключен.
kiberman писал(а):
Текущая версия и билд ос?,в течении этих-2-3 часов, что с температурами, и связано ли это хоть как то с режимами сон/пробуждение?.
Win 11 Home 22000.376. В простое температуры не превышают 60 градусов (ЦП и видеокарта). Сон/гибернация отключена. Даже, если запустить стресс-тест, при температурах, порядка 95-100 градусов, микрофриза не будет. В общем, я не наблюдаю зависимость микрофриза от температуры.
Если честно, без понятия, что это такое, в BIOS нет такой настройки. Да и в целом в биосе нет никаких настроек, есть разве что опитмайзер для батареи - отключен, и зарядка через USB - тоже отключил.
kiberman писал(а):
UEFI загрузка или смешанная(СSM)
UEFI
kiberman писал(а):
Сколько дисков в системе?, тип подключения, используется ли LPM- включен ли в биосе, или нет. В ос стандартный драйвер контроллер или hp(amd) ? В целом состояние дисков?
2 M2 NVMe накопителя: встроенный Samsung 512 Гб и покупной Transcend 1 Тб, состояние у обоих хорошее 100% в Victoria. Драйвер стандартный NVM Express. Установка ОС на другой накопитель проблему не решает.
kiberman писал(а):
В журнале ос на момент фризов есть что нибудь?, Сведения системы или приложения?, Ошибки?
Ещё не смотрел. Протестирую - отпишусь.
kiberman писал(а):
До ваших манипуляций какой был тип таймера и частота?, и какая была скорость возврата функций?.
Я лишь прописывал отключение таймеров в командной строке. Скриншоты с программы прикреплю позже.
Добавлено спустя 2 часа 5 минут 50 секунд:
madixxon писал(а):
Скриншоты с программы прикреплю позже.
Вот скриншот с программы. Замерял до прописывания команд в CMD и после, результат практически не изменился, поэтому скриншот один.
Advanced member
Статус: Не в сети Регистрация: 29.03.2017
Основная разница в задержках лежит в режимах энергосбережения, общей производительности и сложности системы. Причём на исправной системе это всё не важно, так как фактически получить проблемы с фризами системы или потерей производительности надо иметь огромные пики как на графике у madixxon Никакой реальной разницы от десяток или сотен единиц микросекунд вы не увидите. µs - микросекунда (1 000 000мкс = 1 секунда). Поэтому никаких секундных фризов от небольших значений быть в принципе не может.
Исходя из всего того, что я написал - можно ли что-нибудь ещё сделать, либо предоставить сюда какие-нибудь логи? Может, системными утилитами как-то можно выявить проблемный драйвер?
Ради интереса кстати разобрал ноутбук, переподключил все шлейфы, поменял местами диски - на первое включение удивился, что в DPC Latency Checker график стал абсолютно зеленым, и подумал что победил проблему, но через 1,5 часа всё равно выскочил фриз.
Привет всем, как решить проблему с синхронизацией компьютера? Мышь вводится будто низкая сенса и дикий рассинхрон.. Монитор 280 герц мыльный и будто герцовка ниже... i5 9600kf gigabyte z390 D hyperx 3200 mhz 16gb одна плашка по 8гб ssd adata su800 corsair rm650x kfa2 rtx 2060
монитор - asus vg279qm мышь - finalmouse ultralight 2 cape town
По поводу моей проблемы.. Данная проблема так же присутствует на другой сборке.. Есть слухи что это из-за грязного электричества но, у меня есть анализатор качества электроэнергии и у меня все по ГОСТу.. общий коэф гармоник 4-5%, а через стабилизатор 2%.
Member
Статус: Не в сети Регистрация: 16.11.2003 Откуда: Москва
naporitan писал(а):
По поводу моей проблемы.. Данная проблема так же присутствует на другой сборке.. Есть слухи что это из-за грязного электричества но, у меня есть анализатор качества электроэнергии и у меня все по ГОСТу.. общий коэф гармоник 4-5%, а через стабилизатор 2%.
совет тупой, но тебе бы со своим компом проверить это в другом месте, на работе например, не уверен что твой анализатор показывает всё что нужно, геморно конечно, зато можно будет на 100% исключить электричество и искать решение в "другом месте".
Сейчас этот форум просматривают: Phoenixzs88 и гости: 13
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения