Все прерывания делятся по следующим приоритетам: 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 минуты после загрузки системы. Не двигаем мышку и не используем клавиатуру в момент измерений. Потом остановка и скриншот.
Member
Статус: Не в сети Регистрация: 16.05.2010 Откуда: Ленинград Фото: 545
Alex TOPMAN писал(а):
1. Перелочить в биосе pcie с 3.0 на 2.0. 2. Снять разгон ОЗУ в биос и перевести с макс. частоты на мин. тайминги.
Резонно,оба пункта. Любой статтер проверяется без разгона. Чего не любит любое оборудование на шине- прежде всего её разгон BUS: 127MHz. Тем более у вас жирная по функционалу плата 3930K@4.7GHz,AsusP9X79-E_WS,8x4GB
eLfiK писал(а):
Если кто нибудь подскажет какие еще телодвижения нужно совершить чтобы лаг снизился буду признателен
Лишние оборудование не нужное вам вырубайте,usb контроллёры в 2.0 если не критично,порты только те что нужны,Sata -то-же самое,хот свап если есть опция то-же выключить. В ос паразитное увеличение добавляет софт привелегий ядра-сторонние Антивирусы,различные Хипсы или Фаерволлы и тд. -всё что вмешивается серьёзно в работу Ос.
Лучше без сторонних- дэфэндера достаточно+стандартного фаерволла.
Старайтесь не использовать Rst сата драйвер если у вас нет raid массива. Скорости не получите,у майков да-же сейчас драйвер пошустрее.
Другие драйвера (usb,сетевой контролёр,видео и тд),на юсб энергосбережение выключить +сеть. А так подбирайте,обычно последние официальные наилучшие. Бывают исключения конечно).
Member
Статус: Не в сети Регистрация: 16.05.2010 Откуда: Ленинград Фото: 545
leetSmithy писал(а):
Ерунда. Не лечится. Имею P8Z77-V, последний биос 2104 - ничего не изменилось.
Что ерунда?) и что не лечится?, у вас фризы?)) конкретно, вы бы поинтересовались сначала о чём речь шла, это факт в ветке 1070,когда карта не загружалась на такой системе нормально,сбоила в ос,помогло человеку обновление биоса-на моей памяти там было 2 случая. А выглядело как чистый брак карты.
Тем более если биос 2013 года у вас, то бессмысленно ждать текущих фиксов-очевидно. На те платы в ветке был бета биос с портала. Самое последнее что удалось найти на Гигабит.
Olegdjus писал(а):
на 127мгц pci-e сваливается до 2.0) показатели производительности вк падают
Это когда Blck выше Страпа на 2 мгц?,ну так да pcie уже "вылазит за сотку". А ещё занятно бывает при сборке Пк ошибки,человек покупает топовую комплектуху-собирает её,а потом откуда не возьмись фризы или "чудеса". Перекос или пережим СВО,ноги на сокете погнуты, а в цпу современных-понапихали фарш-контроллёр памяти,pciex. Потом носятся по форумам с мониторами задержек и ищут "просчёты" инженеров Нвидия
2)Микростаттеринг,или ощутимый лаг,создающий дискомфорт-анализируя эту ветку,смежную похожую тему и раздел по картам 1070/80- причина такого поведения скорее всего связка чипсет+цпу. Об этом косвенно говорит не корректная работа карт на системах 67-77,которая лечилась обновлением биоса.
И что тут ?- " причина такого поведения скорее всего связка чипсет+цпу. Об этом косвенно говорит не корректная работа карт на системах 67-77,которая лечилась обновлением биоса. "
kiberman писал(а):
Тем более если биос 2013 года у вас, то бессмысленно ждать текущих фиксов-очевидно. На те платы в ветке был бета биос с портала. Самое последнее что удалось найти на Гигабит.
У вас 2013 года прошивка,реплика в ченджлоге imrove system stability -говорит о корректировке опорных частот ближе к номиналу: И всё. Очевидно что обновлять его нет смысла,тем более что там текущих фиксов и быть не может-биосу 4 года почти. Вы просто выдаёте желаемое за действительное. И интерпретируете полученную информацию как вам хочется. я не виноват что вам не помогло ,просто вы сами не там ищите.
Тут половину страниц намеками и прямым текстом-"ребята ищите проблему в своих настройках"-разгоне,стороннем оборудовании на шинах,кривой платформе и медленном цпу. Софте.
Но большинству народу наплевать, - "разгон не причем и настройки"-сам себе барин, "ничего и так сойдёт" - может биос обновлю поможет. И так далее по аналогии. Можем тут ещё страниц 50 флуда набить. Всё уже "разжёвано", кто хотел нашёл, выяснил и решил.
Ерунда. Не лечится. Имею P8Z77-V, последний биос 2104 - ничего не изменилось.
Можно посоветовать только договориться с продавцом на смену видеокарты на такую-же, тойже марки или другой.. найти экземпляр который бы работал nVIDIA стараясь быстрее получить материальную выгоду, недостаточно времени уделила тестированию и совместимости с бОльшим колличеством чипсетов, в итоге хардверный баг несовместимости со старыми чипсетами как минимум и как максимум партии с багом подвисания этого. Твою бы карту проверить у знакомого на новом чипсете, если и у него фризы тогда легче было бы к продавцу подойти.
Про ревизии чипа, так они его промаркируют как захотят, но по другим номерам или дате внутри нвидиа будут вкурсе, что это новая исправленная версия, они также противились и долго не признавали ихнего фокуса с GTX970, пару недель думали, что ответить как спустить на тормоза, уменьшить репутационные потери и выкрутиться из ситуации.
Есть владельцы у кого были микрофризы на старых платах и сменив на новую Z97 Z170 Z270 они остались ?
Member
Статус: Не в сети Регистрация: 13.08.2010 Откуда: Санкт-Петербург Фото: 2
Поставил чистую операционку Windows 8.1, потестил, никаких задержек в LatencyMon не проскакивало. На 7ке были задержки на dxgkrnl.sys. Хотя честно говоря особо никакой разницы при работе, просмотре фильмов и в играх между 8кой, где не было задержек и 7кой, где они были, не увидел. Вернулся обратно на 7ку, поставил чистую, задержки появились и опять на dxgkrnl.sys Решил вот, что сделать. Загрузил проц под 100% в стресс тесте AIDA 64, при этом ещё и работая за компом и в инете, стал мониторить в LatencyMon задержки (они уже должны появиться), и что же, при загруженном под завязку проце никаких задержек, как только снял стресс тест и частота проца стала скакать и заработали энергосберегалки, то тут же появились задержки. 3 раза проверял, так и есть, по крайнем мере у меня так.
Member
Статус: Не в сети Регистрация: 06.09.2008 Фото: 4
ChAS писал(а):
Поставил Windows 8.1
Тоже сегодня проверил Ведьмака 3 в win 8.1, идет гладко, практически без фризов. Как на 10-ке. Так что, если для кого то win 10 не вариант при фризах на win 7, то win 8.1 может стать выходом из ситуации.
Member
Статус: Не в сети Регистрация: 06.09.2008 Фото: 4
Olegdjus писал(а):
d1my4, процессор на 100% не смущает?
Думаю, если бы дело было только в процессоре, фризило бы на всех виндах, но в win 7 без лока фпс в Новиграде и деревнях играть невозможно, а на 8.1 и 10 все гладко.
Member
Статус: Не в сети Регистрация: 16.05.2010 Откуда: Ленинград Фото: 545
d1my4 писал(а):
Думаю, если бы дело было только в процессоре, фризило бы на всех виндах, но в win 7 без лока фпс в Новиграде и деревнях играть невозможно, а на 8.1 и 10 все гладко.
Вам намекнули что он просто ещё чем-то "занят" и не до загружает карту походу. Микростаттеринг на видео видно,это не плавно.
Moderator
Статус: Не в сети Регистрация: 08.05.2015 Откуда: Москва Фото: 6
d1my4 писал(а):
фризило бы на всех виндах
Поправьте меня, но ведь один из ключевых моментов win8.1/win10-оптимизация системных ресурсов. Оно и в win7 можно провести манипуляции (твики парковки ядер и т.д.), существенно увеличив производительность в такие вот моменты.
_________________ По всем вопросам и предложениям пишите в телеграм olegdjus
Member
Статус: Не в сети Регистрация: 22.03.2005 Откуда: Уфа Фото: 0
Olegdjus писал(а):
Поправьте меня, но ведь один из ключевых моментов win8.1/win10-оптимизация системных ресурсов. Оно и в win7 можно провести манипуляции (твики парковки ядер и т.д.), существенно увеличив производительность в такие вот моменты.
Не поправим, но дополним. ЦПУ больше занят либо задачей, либо переключениями своих режимов туда-сюда. Когда этих режимов уже - как людей в Москве, то какой-нибудь прграмный индусокосяк с одним из "популярных" переключений, тормозящий всё ядро - очень даже вероятен.
Member
Статус: Не в сети Регистрация: 06.09.2008 Фото: 4
Olegdjus писал(а):
Поправьте меня, но ведь один из ключевых моментов win8.1/win10-оптимизация системных ресурсов. Оно и в win7 можно провести манипуляции (твики парковки ядер и т.д.), существенно увеличив производительность в такие вот моменты.
Я долго бился с 7-кой, пытаясь заставить не фризить Ведьмака. Перепробовал все что можно и нельзя . И полное отключение энергосберегающих технологий проца с залочиванием частоты на максимум, и всевозможные настройки драйверов и твики ОС. И приоритеты по ядрам и ограничение загрузки проца Ведьмаком через BES в разных вариациях - все бестолку.
Загрузкой и мощностью видюхи тоже манипулировал, максимальным даунклоком или разрешением в 4к. Фризы есть даже в 4к, при средней загрузке проца в 40-60% в 4К периодически подскакивает загрузка до 100% и идет фриз. ОС свежие, версии Ведьмака разные пробовал.
Но не настолько разница в производительности 7 и 8.1\10 радикальна, чтобы неиграбельный из за фризов Ведьмак вдруг летал. На видео с 8.1, кстати, винда стоит на старом HDD 5400рпм, на нем же файл подкачки и на него же пишет шедовплей и не фризит. На win 7 все на SSD.
Member
Статус: Не в сети Регистрация: 16.05.2010 Откуда: Ленинград Фото: 545
Olegdjus писал(а):
но ведь один из ключевых моментов win8.1/win10-оптимизация системных ресурсов. Оно и в win7 можно провести манипуляции
Всё верно,10-ка -да похоже в чем то менеджмент памяти лучше и отзывчивость. Но количество сетевой активности больше,системных процессов больше,телеметрии вагон,аэро гуи теперь не отключается,эффекты вырубить можно а вот менеджер по сути висит в памяти. На 7-ке с ведьмаком у меня то-же проблем не было. Но у меня софт легитимный весь и игры,ос то-же. Естественно всё с апдейтами и полным фаршем драйверов.
Moderator
Статус: Не в сети Регистрация: 08.05.2015 Откуда: Москва Фото: 6
d1my4, а включали дополнительные настройки винды с помощью прописи в регистр веток? Точнее - дополнительные настройки энергосбережения открывали? Там для одного процессора тьма настроек
Вложение:
1.jpg [ 360.04 КБ | Просмотров: 2554 ]
kiberman, я просто имею на настойщий момент одну рабочую связку - профильную. У меня даже засранная до немогу win10 работает отлично. Поэтому трудно что-то сравнивать
_________________ По всем вопросам и предложениям пишите в телеграм olegdjus
Member
Статус: Не в сети Регистрация: 06.09.2008 Фото: 4
Olegdjus писал(а):
d1my4, а включали дополнительные настройки винды с помощью прописи в регистр веток? Точнее - дополнительные настройки энергосбережения открывали? Там для одного процессора тьма настроек
Читал про них, но перед этим погонял игру вообще без энергосбережения в биосе и винде и без турбобуста, на постоянных 3600 мгц по всем ядрам, и так как в плане фризов ничего не изменилось - и решил не включать. Перекидывал процесс Ведьмака на последние 3 ядра, освобождая 1-е полностью под систему - производительность падает, но фризы остаются. Были мысли еще пробовать программы типа unpark cpu, но уже устал от экспериментов.
Помогало поднять фпс понижением настроек игры до 70-90 и залочить потом до 60. Но вчера встретил большую стаю волков и так зафризило, что не выдержал и установил вин 8.1. Теперь все идет гладко, даже фпс подрос.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения