Все прерывания делятся по следующим приоритетам: 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 минуты после загрузки системы. Не двигаем мышку и не используем клавиатуру в момент измерений. Потом остановка и скриншот.
Прилетело откуда не ждал - фризят фильмы в высоком (ну как в высоком, всего-навсего 1080р) разрешении. Печь Palit SJS 1080, ryzen 7 1700, 16 гб оперативы, win10 pro лицензия. Некоторые фильмы идут норм, некоторые через каждые пять минут заикаются, в играх (овервотч, последний ассасин) фризов нет, рипы нормальные, так как фризы не повторяются при перемотке. Самео главное забыл - дрова 385.69. Есть у кого мысли, что можно сделать?
Ставить последний 391.35 и искать- Сообщение выше.
Всё из FAQ сделано, всё возможное по фризам рязани тоже. Бивис даже откатывал до 1.1.0.1. - ничего. Дрова всякие пробовал, включая и последние. Разумеется, с DDU и без надстроек.
Member
Статус: Не в сети Регистрация: 16.05.2010 Откуда: Ленинград Фото: 545
Paulo писал(а):
Всё из FAQ сделано, всё возможное по фризам рязани тоже. Бивис даже откатывал до 1.1.0.1. - ничего. Дрова всякие пробовал, включая и последние. Разумеется, с DDU и без надстроек.
Без заполненного подробно конфига и хоть какой-то инфы- помочь будет не возможно. Как рапорт делать написано в faq..
Были тут у человека на рязани проблемы с фризами- оказался переразгон контролёра озу + судя по всему плохое качество модулей. Возможно что-то ещё что он не сказал -но больше он не появлялся)).
Были тут у человека на рязани проблемы с фризами- оказался переразгон контролёра озу + судя по всему плохое качество модулей. Возможно что-то ещё что он не сказал -но больше он не появлялся)).
Плохо что не отписался о результате. Попробую ещё поковыряться с памятью, но я не знаю что там ещё можно изменить.
Фризы начинаются при установке дров видеокарты. Всё как обычно - рваный звук, торможение видео. В системе, в играх. В покое фризов либо нет, либо мало. При изменении настроек видеокарты афтербёрнером тоже фризит (не разгонял). LatencyMon указывает на: DirectX graphics kernel, Nvidia windows kernel mode driver, среда выполнения платформы драйвера режима ядра.
В играх по-разному, в некоторых не фризит вообще, в некоторых невозможно даже в меню мышь подвинуть. Система переустанавливалась, пробовал 8-ку - ноль эмоций. При изменении дефолтных параметров проца и оперативы фризит меньше (сейчас проц и память 3800 и 3000 соотв.). На старых биосах поведение было другим, например запускалась только одна плашка памяти и фризов было поменьше. На одной плашке памяти тоже фризит в любом слоте. Фурмарк вызывает каскад фризов. График прикладываю
туц
Отрезок 1 - фурмарк без фризов. 2 - с фризами. #77
Сдаётся мне что началось после прогона memtest, но это не точно.
Member
Статус: Не в сети Регистрация: 16.05.2010 Откуда: Ленинград Фото: 545
Paulo писал(а):
Фризы начинаются при установке дров видеокарты. Всё как обычно - рваный звук, торможение видео. В системе, в играх. В покое фризов либо нет, либо мало. При изменении настроек видеокарты афтербёрнером тоже фризит (не разгонял). LatencyMon указывает на: DirectX graphics kernel, Nvidia windows kernel mode driver, среда выполнения платформы драйвера режима ядра.
В играх по-разному, в некоторых не фризит вообще, в некоторых невозможно даже в меню мышь подвинуть. Система переустанавливалась, пробовал 8-ку - ноль эмоций. При изменении дефолтных параметров проца и оперативы фризит меньше (сейчас проц и память 3800 и 3000 соотв.). На старых биосах поведение было другим, например запускалась только одна плашка памяти и фризов было поменьше. На одной плашке памяти тоже фризит в любом слоте. Фурмарк вызывает каскад фризов. График прикладываю
скидывайте систему в дефолт цпу и память и смотрите-можно память замедлить до 2400-пробуйте, или троллинг или контроллёр озу- переразгон- будет рваться картинка.
Озу пк для видеокарты это не локальный видеобуфер- любые проблемы на шине pci-ex, с её контроллёром или с озу - а так-же переразгон или не стабильная работа этих компонентов- вы увидите в таком поведении- тиринг или микростаттер на экране.
это в случае если всё остальное оборудование и видеокарта с софтом исправны.
соотв если в первых 2 вариантах во время этих тестов - тормозов нет и значения меньше, то при последнем тормоза начинаются и значения выше. также вырастают эти значения и при Hpet Bios вкл + Win Hpet вкл при таймере 14.+-
+ прикол в 1803 при отключении состояния простоя процу, фпс чет не подрастает(настройки не ограничивают и одинаковые) для примера: в меню игры Men of War Assault Squad 2 - 200(1803) вместо 220(1703) и видео заставке Armored Warfare - Проект Армата 132 вместо 146) в самой игре(3D) одинаково - пока не на той видюхе(GTX480) cижу, чтоб и в игре + появился:)
Member
Статус: Не в сети Регистрация: 16.05.2010 Откуда: Ленинград Фото: 545
BOBKOC писал(а):
соотв если в первых 2 вариантах во время этих тестов - тормозов нет и значения меньше, то при последнем тормоза начинаются и значения выше. также вырастают эти значения и при Hpet Bios вкл + Win Hpet вкл при таймере 14.+-
Здорова
начиная c 1709- скорость возврата функций изменилась ,у меня в альбоме есть скриншоты pcclock на 16299(1709)
Тормоза у тебя потому-что выключаешь hpet в биосе. Отключение динамического тикрейта тут не причём.
BOBKOC писал(а):
при отключении состояния простоя процу, фпс чет не подрастает(настройки не ограничивают и одинаковые) для примера: в меню игры Men of War Assault Squad 2 - 200(1803) вместо 220(1703) и видео заставке Armored Warfare - Проект Армата 132 вместо 146) в самой игре(3D) одинаково - пока не на той видюхе(GTX480) cижу, чтоб и в игре + появился:)
Это влияет на отзывчивость, фпс ищи другие причины -тут лучше вернуть как на скриншоте 2 - tsc+hpet и не трогать таймеры-по умолчанию на 99% не нужно.
А провал фпс может быть у тебя на твоём Intel Xeon X5670 от мелтдаун патча. По умолчанию он добавлен и включён в сборку 1803. Сама "заплатка" никак не штрафит перфоманс если цпу поддерживает аппаратный pcid- это камни от 4 поколения Хассвел или выше(середины 2013-2014 года и новее). На ксеоне X5670 возможно провал ощутимее до 5-10 %-штрафа-только от одного мелтдауна. Сам патч можно отключить ключом реестра- так что это не проблема.
Плюс к этому сборка 17133.1 идёт с более свежими микрокодами для цпу, проверяй всё -настройки, видеодрайвер. Сама версия очень быстрая на мой взгляд и стабильная-скажу так "из коробки" версия 1709 без патча мелтдаун- работает медленее чем 17133.1 -с нуля на моём конфиге. Будь у меня какие-то сомнения-не стал бы рекомендовать её людям и себе бы не поставил.
Member
Статус: Не в сети Регистрация: 22.03.2005 Откуда: Уфа Фото: 0
Я так понимаю, что RDTSC и CPUSpeed в PCClockTiming должны показывать частоту, близкую к текущей ЦПУ? А у меня сейчас показывает сток 2900, при разгоне 4,7+ по разным ядрам. Это разве нормально?
Member
Статус: Не в сети Регистрация: 28.11.2015 Фото: 38
Выяснил почему завышен таймер в 17133.1 Это при задействовании в встроенном защитнике функции - Изоляция ядра! Когда величина таймера 10Mhz, а показывает что это TSC, а не HPET.
BOBKOC, из коробки 17133 хуже примерно на 10+ фпс. Надо "дорабатывать". Только отключив все ненужные приблуды я вернул прежний уровень в том-же cinebench(изначально давало в нём результаты гораздо хуже чем на 1709) И это, у тебя на 1709 ISR вылазит.
Member
Статус: Не в сети Регистрация: 16.05.2010 Откуда: Ленинград Фото: 545
Alex TOPMAN писал(а):
Я так понимаю, что RDTSC и CPUSpeed в PCClockTiming должны показывать частоту, близкую к текущей ЦПУ? А у меня сейчас показывает сток 2900, при разгоне 4,7+ по разным ядрам. Это разве нормально?
Функция возвращает значение tsc по базовому множителю. Всё у вас нормально.
По вашему вопросу wddm 2.4-не знаю - выйдет sdk релиз windows 10- 1803- Можно будет поискать,какая нибудь мелочёвка скорее всего. По поводу менеджмента памяти- зависит как написано 3д приложение и кем- оборудование через драйвер-возвращает всю запрашиваемую информацию для приложения ,никуда приложение в своп просто так не полезет- если ресурсов будет достаточно. По поводу rtss -вам бы автора программы спросить,очень давно не использовал-за не надобностью как и саму msi, rtss поддерживает hwinfo софт. Там есть датчики общее потребление vram и d3d- выделяемая и выделенная:
Member
Статус: Не в сети Регистрация: 16.05.2010 Откуда: Ленинград Фото: 545
korino писал(а):
Так она у меня отключена) Тогда понятно почему задержки).
Дело в том что этого пункта в защите вобще не должно быть в ос- если виртуализация выключена аппаратно в биосе - пункт есть только при включенной опции.
Что там у вас на амд произошло не знаю. Но на на производительность или таймеры не влияет- покрайней мере у меня на 2-х пк на Интеле-на десктопе и стареньком ноуте. Видимо баг с вашей платформой + с 17133.1 "майки" что-то поменяли в механизмах защиты от вредоносного по. Посмотрим какие будут патчи 10-ого апреля.
Сейчас этот форум просматривают: crazyman, iglike и гости: 6
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения