Все прерывания делятся по следующим приоритетам: 1 место - работает на уровне кольцо -2 прерывания SMI (system management interrupt — прерывание системного управления), которое возникает: -по сигналу от чипсета или периферии на материнской плате -программный SMI, посланный системным ПО через порт ввода-вывода -запись по адресу ввода-вывода, для которого микропрограммно установлена необходимость активации SMM. 2 место - гипервизор, который работает в кольце -1 3 место - ядро операционной системы - работает в кольце 0 4 место - пользовательский уровень - работает в кольце 3
Позднее дополню каждый раздел. Все проблемы у нас связаны с тем, что windows относится к операционным системам с вытесняющей многозадачностью. Вытесняющая многозадачность требует обработки системного прерывания от аппаратного таймера. По истечении кванта времени, отведённого процессу, происходит прерывание и вызывается планировщик процессов. Частота вызова планировщика критична: слишком частый его вызов будет расходовать процессорное время впустую. Единственное, что мы можем изменить - это увеличить время кванта и поменять соотношение квантов времени на активную задачу и задачи в фоне, за это отвечает параметр в реестре Win32PrioritySeparation По умолчанию 0х26 квант 18:6 = Оптимальный вариант При этом само время кванта зависит от системного таймера. При системном таймера 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 мс. Внести в реестр для глобальной настройки системного таймера [spoiler=] [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Гц.[/spoiler]
Главные правила для таймеров: Таймеры используются для времени (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.05.2021 Откуда: Outer Heaven Фото: 2
Agiliter я уже путаюсь во всех этих таймерах,таймингах,clock,tick,false,true,тsc,rtc,etc... После всех ковыряний, комбинаций, синт/игровых бенчей и личных ощущений, я остановился на одной useplatformtick yes (0,5ms) против стоковых n/a (0,496ms)
как наиболее приятной в игровом плане на моей системе и железе. Все это субьективный выбор и отличается от компа к компу и от юзера к юзеру. По прерываниям определил что какие дергает, покрутил критичные, и теперь укладываюсь в лимиты Вагнарда за пару часов повседнева :
если для разраба DDU это норма, то для меня подавно. И даже редкие криты за 1s тоже норма, мало ли в системе тяжелых процессов запускающихся по ивенту, расписанию или от действий юзера. Главное чтобы не частили )
_________________ Asus h510m | 10400F | 2666cl13 | 6700XT RD | Be quiet SP 600 | Samsung 980 Pro 512 | FHD&22H2 ♛ World's best Time Spy score holder with 6700XT and 10400F
Последний раз редактировалось WhiteRatify 06.05.2025 14:58, всего редактировалось 1 раз.
Member
Статус: В сети Регистрация: 17.05.2021 Откуда: Outer Heaven Фото: 2
OLD Hunter не хочу в рекламу, обычный репак вин 10 с личным видением репакера "чоткой" системы, куча их в инете. Зачем ? Скорее почему - нет денег на лицуху )
_________________ Asus h510m | 10400F | 2666cl13 | 6700XT RD | Be quiet SP 600 | Samsung 980 Pro 512 | FHD&22H2 ♛ World's best Time Spy score holder with 6700XT and 10400F
Member
Статус: Не в сети Регистрация: 14.06.2009 Откуда: Омск
WhiteRatify писал(а):
Зачем ? Скорее почему - нет денег на лицуху )
А зачем она нужна эта лицуха? Я про сборку, можно же образ любой поставить, не знаю там, домашнюю, лтсц или как там и т.п.
MurkLyaMurk писал(а):
Сейчас всё активируется
Последнее время в инете появилась такая каста, которые считаю что любые не лиц способы активации как раз вызывают различные глюки системы - как те же фризы, лаги, инпут лаги в играх и т.п. Но я в это не верю
Member
Статус: Не в сети Регистрация: 17.02.2019 Фото: 0
OLD Hunter писал(а):
Последнее время в инете появилась такая каста, которые считаю что любые не лиц способы активации как раз вызывают различные глюки системы - как те же фризы, лаги, инпут лаги в играх и т.п.
Да это бред полный как по мне
_________________ X870E AORUS PRO ICE | 9800x3D | RTX 5070 Ti GameRock
проверьте кто нибудь с установленным 3dmark и стоковым нетронутым таймером его статус, пжста.
_________________ Asus h510m | 10400F | 2666cl13 | 6700XT RD | Be quiet SP 600 | Samsung 980 Pro 512 | FHD&22H2 ♛ World's best Time Spy score holder with 6700XT and 10400F
Member
Статус: Не в сети Регистрация: 16.05.2010 Откуда: Ленинград Фото: 545
MurkLyaMurk писал(а):
самый вызывающий драйвер это от нвидии Что может влиять?
нагрузка любая на адаптер, режимы энергосбережения гпу в панели драйвера, специальные режимы рендера/DWM на рабочем столе - включая рендер режимы направленные на снижения "частоты" вызова drawcalls и снижения частоты рефреша экрана при определенных условиях , для снижения жора вк. Это может как увеличивать так и уменьшать запросы к железке и задержку.
WhiteRatify писал(а):
проверьте кто нибудь с установленным 3dmark и стоковым нетронутым таймером его статус, пжста.
HPET по умолчанию не используется, ядро Ос использует TSC, и его вариации в приоритете при доступности, а в самой Ос(новых билдах), в виде софтовой абстракции TSC, с виртуальным таймером на "10" мгц - функция QueryPerformanceFrequency.
Проверять не нужно, т.к с зафорсенным HPET enabled, валидации тестов не будет. в 3дмарке это справедливо считается читом, т.к таймер чуть чуть "накручивает" результат.
По запросу софта, Hpet может быть задействован, например опция в HWINFO.
Member
Статус: В сети Регистрация: 17.05.2021 Откуда: Outer Heaven Фото: 2
MurkLyaMurk а сколько под нагрузкой тогда ? В играх. До 1000ms вроде как норма, если не частит. У меня на радике ~300-500 все что с видяхой связано.
kiberman писал(а):
т.к с зафорсенным HPET enabled, валидации тестов не будет. в 3дмарке это справедливо считается читом, т.к таймер чуть чуть "накручивает" результат
зафорсенный HPET у меня наоборот снижает результаты. Вообще любое действие с таймерами где нибудь что нибудь ломает, профит на уровне плацебо а принцип работы ломает моск. Вроде бы по видяхе лучше стало после ковыряний, начал бенчить проц а там упали попугаи, некоторые проги ругаться стали. Вернулся в сток короче, пусть винда решает как ей лучше, Agiliter знаю ты говорил, но на практике лучше усваиваю. В стоке бенчи cpu пришли в норму :
_________________ Asus h510m | 10400F | 2666cl13 | 6700XT RD | Be quiet SP 600 | Samsung 980 Pro 512 | FHD&22H2 ♛ World's best Time Spy score holder with 6700XT and 10400F
_________________ Asus h510m | 10400F | 2666cl13 | 6700XT RD | Be quiet SP 600 | Samsung 980 Pro 512 | FHD&22H2 ♛ World's best Time Spy score holder with 6700XT and 10400F
Member
Статус: Не в сети Регистрация: 16.05.2010 Откуда: Ленинград Фото: 545
WhiteRatify писал(а):
Вернулся в сток короче, пусть винда решает как ей лучше
А зачем крутили?, технический интерес как работает и что даёт?, ну в шапке темы есть рекомендации, но они как бы сказать актуальны были 10-15 лет назад,для тех платформ и цпу, может быть и можно было получить профит - в каких то случаях.
Advanced member
Статус: Не в сети Регистрация: 29.03.2017
MurkLyaMurk писал(а):
pagefaults
Их есть два типа. Soft. Означает, что страница памяти нашлась в оперативной памяти с каким-то приоритетом и как минимум временно поменяла свой приоритет на "рабочий набор". Их очень много и смотреть бессмысленно. Hard. Не нашлась в оперативной памяти и была прочитана с накопителя или откуда-то ещё. Происходят при чтении новых данных, которые ещё не были прочитаны. В диспетчере задач они магическим образом были переведены как ошибки страниц. Использование различных "полезных" утилит "чистящих" Standby(кэш) переводит Soft в Hard.
Добавлено спустя 7 минут 27 секунд: Вообще перевод некоторых терминов просто невероятно полезен. Allocate - выделить. Commit - выделить. Dedicate - выделить.
Member
Статус: В сети Регистрация: 17.05.2021 Откуда: Outer Heaven Фото: 2
kiberman писал(а):
актуальны были 10-15 лет назад
а этого нет в шапке ). Крутил и по интересу, и ради профита, пару лишних фпс или лучший отклик на дороге не валяются, а инфа на практике лучше усваивается чем в теории, тем более неоднозначная. И вообще это риторический вопрос на техническом форуме, здесь все что нибудь да крутят, за тем и посещают его.
_________________ Asus h510m | 10400F | 2666cl13 | 6700XT RD | Be quiet SP 600 | Samsung 980 Pro 512 | FHD&22H2 ♛ World's best Time Spy score holder with 6700XT and 10400F
Advanced member
Статус: Не в сети Регистрация: 29.03.2017
Я знаю несколько способ однозначно уменьшить DPC, когда всё в целом исправно. 0. Не нагружать 0 ядро и его второй поток. Ну или хотя бы 0 поток. 1. "Выключить с1" через idledisable в плане питания. Радикально увеличит потребление, немного снизит производительность, но цифры будут красивые.
Member
Статус: Не в сети Регистрация: 16.05.2010 Откуда: Ленинград Фото: 545
Agiliter писал(а):
Я знаю несколько способ однозначно уменьшить DPC, когда всё в целом исправно. 0. Не нагружать 0 ядро и его второй поток. Ну или хотя бы 0 поток. 1. "Выключить с1" через idledisable в плане питания. Радикально увеличит потребление, немного снизит производительность, но цифры будут красивые.
ISR/DSR могут быть высокие из-за "дрифта" TSC. Не знаю как у MurkLyaMurk и его 9800x3d.
На Амд AM4, в Agesa 1.2.0.6 - 1.2.0.8 и более ранних, цпу с 2ССD были серьёзные баги с таймером, при выходе из сна возникал: clocksource tsc unstable. Дополнительно в разных ситуациях проявлялся сильный TSC skew между разными ядрами в CCD, особенно если был включён DF-Cstate на IF. Именно по этому в 1.2.0.8 С-STATE GLOBAL в Auto - был в disabled, как временная полумера.
Забавно как люди нахваливали эти ранние прошивки по скорости, показывая в тестах лучшие результаты, только причина этого была в багах таймера)). Всё это добро залечили в 1.2.0.С и более новых прошивках.
В контексте отключения C1 - через профиль, не знаю. Но на АМД "Short-Term Boost" при отключении с-state global в самой прошивке по идее потенциально ухудшается или должен быть не оптимальным, т.к пропадает часть телеметрии, и просто потому-что цпу становится горячее:
"Precision Boost algorithms utilize C-state residency telemetry to: a) Calculate thermal recovery rates during idle periods b) Predict safe boost headroom for upcoming workloads c) Optimize voltage/frequency transitions"
Key Boost Algorithm Inputs: - Core Utilization - Temperature (Tctl/Tdie) - Power Consumption (PPT) - Current (EDC) - C-state Residency History [Critical for ST Boost]
Что думаю будет критично при каких то режимах работы PBO2. В любом случае кратковременный буст для разного типа нагрузки должен быть выше, если цпу прохладнее, в принципе это не секрет, достаточно запустить CB рендер на одном и том же цпу, но с разной температурой. На более холодном - рез-таты будут чуточку выше. По этому выгоднее на Амд не только ставить топ охлад и добиваться минимальной температуры на камне, но и юзать C-State, в том числе для этих целей.
Возвращаясь к задержкам,у меня лично сейчас такие цифры, на "сбалансированном профиле".
Понимаю что 1 минута, не очень репрезентативно, но в данном случае у меня включены CPPC2 и CSTATE enable, а цпу при этом измерении отдыхает в районе 30-35С..т.е со всеми энергосберегающими.
Из настроек: в системе последняя Агеса 1.2.0.Е /чипсет драйвер 7.04.09.545, в самой Ос(24h2 26100.4349) выключены VBS/ и "Целостность памяти" и настроены 2 политики: отключены диагностические данные и фоновые приложения. Для снижения телеметрии и сетевой активности.
Мораль сей басни, такова. Не ленитесь обновлять UEFI/chipset и Ос. Иногда это действительно полезно.
Member
Статус: Не в сети Регистрация: 16.05.2010 Откуда: Ленинград Фото: 545
MurkLyaMurk писал(а):
Я хз, у тебя такой график чистый, у меня скачки лютые, но без красных зон, просто зеленая полоса скачет с 1 до 300
у меня амд вк, они по этому показателю всегда были по лучше.
А параметры такие скорее всего, потому-что обновляю софт на мп и все драйвера в ос, и лишнего в ос ничего не ставлю. Скорее всего результаты ещё улучшили групповые политики, которые уменьшили активность фоновых служб и диагностики. А, ещё забыл один твик в групповой политике. QoS настроена так, что бы Ос не резервировала себе полосу сети. Это то же снижает паразитную активность сетевую.
9800x3d специфический камень, благо что он с 1ССD. Не знаю почему у вас такие цифры, софт наверное ещё ос, у меня на системе один Антивирус стоит и в трее кроме него и оболочки вк панели,ничего нет.
Со стороны платформы что бы было всё хорошо, я выше написал - в идеале обновлять всё на Пк, включая прошивки и все драйвера на оборудование. Можно конечно и новые баги получить, но как показывает практика, от этого подхода, польза есть.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения