Все прерывания делятся по следующим приоритетам: 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
Статус: Не в сети Регистрация: 27.10.2011 Фото: 26
Если в игре предусмотрен подгруз каких нибудь ассетов или текстур с харда, от периодических свопов не спасет никакая супербыстрая оперативка или видюха. Хотя 8+2гб ddr3 это дичь, да.
Посмотрел вот этот ролик, протестил у себя и мониторинги выставил такие же, и теперь понял что проблема не в видеокарте, а в озу и HDD. https://youtu.be/4txEmit1IPQ Ситуация с фризами сведена к минимуму выставлением ограничения кадров в 60 секунд. Кстати и вопрос с высоким DPC latencymon тоже решил пока во всем этом разбирался. Скажу даже так, пока боролся с фризами значительно увеличил фпс в играх где то на 10 а где то на 20 кадров. И это без разгона карты. Во дурдом. Заказал ОЗУ на 8 гиг для двуканала. Потом отпишусь.
Member
Статус: Не в сети Регистрация: 02.06.2012 Откуда: Стольный Град
У кого ещё есть проблема фризов в CS:GO?
Во время игры и проявления фризов был запущен LatencyMon, вот показатели Highest reported DPC routine execution time: Видеодрайвер 446.14 - 1270,7 μs Видеодрайвер 451.22 с активированным GPU scheduling - 1245,8 μs
Видеопамяти и, тем более, оперативки - более чем достаточно для такой игры. Неужели этому старью на DirectX 9 нужен SSD???
_________________ 4-ех фаз хватает, что бы разогнать !!!8-ми ядерный!!! райзен до 3.8-3.9 Lopos, 13.10.2017
Member
Статус: Не в сети Регистрация: 02.06.2012 Откуда: Стольный Град
OLD Hunter на машине с Windows 7 и процессором i7 (6 GB DDR3, 1 GB видеопамяти, HDD 5400 rpm) рандомно фризило (по-моему, всегда) при проигрывании звуков (скажем, выбросил винтовку, она ударилась о землю, прямо перед проигрыванием звука удара - скачок времени кадра; связи между фризами и какими-то конкретными звуками не замечал - могло зафризить при любом из них). Сейчас фризит на профильной машине (Windows 10 v1809, v1909, v2004; HDD 7200 rpm), но теперь я чаще всего не замечаю, что фриз предшествует именно проигрыванию какого-нибудь звука (хотя, вот недавно получил значительный скачок времени кадра в момент получения хедшота прямо перед этим "хедшотным" звуком). И больше фризов происходит в первых раундах матчей, но потом время от времени встречаются и спустя несколько раундов на той же карте. Насколько помню, удавалось заметить фриз перед проигрыванием какого-нибудь звука не только в CS:GO, но и в Battlefield V (DX12) - может, просто совпадение.
Разумеется, BIOS и все драйверы обновлены.
_________________ 4-ех фаз хватает, что бы разогнать !!!8-ми ядерный!!! райзен до 3.8-3.9 Lopos, 13.10.2017
Member
Статус: Не в сети Регистрация: 14.06.2009 Откуда: Омск
Y0! ну про фризы связанные со звуками слышал, на нвидиа некоторым помогло удаления звукового драйвера, что идёт с дровами нвидиа. А как на счёт демок, в них тоже есть фризы?
Ну и ещё возможно что это связано с HDD, по идее бы попробовать какой ссд, хотя бы 120 Гц чисто под игру.
Advanced member
Статус: Не в сети Регистрация: 29.03.2017
Y0! Типичная проблема динамической подгрузки данных которые стоило бы загружать заранее. При большом количестве памяти так фризит только при первом обращении к новым данным, потом данные висят в памяти с приоритетом кэш, если их не вытесняет что-то другое. SSD Делает проблему менее заметной, но в зависимости от игры не устраняет полностью. Как вариант можно попробовать заранее загружать данные в память если вам известно что именно вызывает фриз. Достаточно их просто прочитать в память и не иметь фоновых приложений с дисковой активностью. Прочитать можно например посчитав контрольную сумму файла(ов) в 7z. Ну и дефрагментировать не забывайте диск своевременно, сразу после обновлений соответсвующих игр\программ.
Member
Статус: Не в сети Регистрация: 02.06.2012 Откуда: Стольный Град
Agiliter в Source-играх есть консольная команда cl_forcepreload, чтобы по-идее всё сразу загрузилось, но ничегошеньки она не исправляет эти фризы, сегодня перепроверил снова.
OLD Hunter забыл написать - старая машина была с радеоном и драйвером для него от 2014 года. Для нвидии использую nvcleanstall чтобы установить только непосредственно драйвер видеокарты + USB-C (хотя на видеокарте никаких портов USB-C нет и в помине) - никаких PhysX, HD Audio, Experience и прочего. Демки попробую...
SSD собирался купить - терабайтный 860 evo sata3, но как только к "акционной" цене (в кавычках потому, что никто и никогда такие комплектующие не продаёт себе в убыток) наши барыги добавили ещё 15-20$ - мысленно послал их туда, где им самое место, и ограничился обычным HDD. Никогда не предполагал, что игре, построенной на технологии 2004 года, может понадобиться SSD.
_________________ 4-ех фаз хватает, что бы разогнать !!!8-ми ядерный!!! райзен до 3.8-3.9 Lopos, 13.10.2017
Моя проблема решилась увеличением озу временно до 12 гигов. Все таки модель появления фризов при высоком фпс связано с подгрузкой пространства и объектов по причине нехватки озу. Игра вынуждена подгружать данные с более медленной виртуальной памяти которая находится в HDD, что и приводит к статтерам и фризам.
Траблы и задержки со звуком тоже думаю чаще не связаны с высоким Latencymon и прочими показателями. А звуки по сути тоже являются данными которые загружаются через ОЗУ в игру.
Встречается также другая популярная причина, связанная с лагами в играх это когда проц загружен на 100% и он в нужный момент тупо не успевает обратиться к оси ОЗУ и HDD чтобы тот заранее прогрузил нужные данные с игры. Для наглядности либо поиска истинных причин предлагаю установить FPS monitor. Включите мониторинг фрейм тайма (по сути лагов), полосу загрузки проца и активности HDD. Лично у себя причину так и нашел. Причина не в проце а в ОЗУ: лаги появлялись когда мониторинг показывал одномоментные колебания HDD и фрейм тайма.
Advanced member
Статус: Не в сети Регистрация: 29.03.2017
Y0! Потому что всё равно не будет загружать всё. Я не с пустого места это взял, ещё несколько лет назад специально изучал эту проблему. Правда не с CS, но судя по опыту могу сказать, что она почти повсеместная. Может однажды дойдут руки и напишу подробную статью как определять и решать эту проблему. Хотя эффективным методом будет бить разработчиков ногами по рукам.
Member
Статус: Не в сети Регистрация: 02.06.2012 Откуда: Стольный Град
Хасус писал(а):
по причине нехватки озу
16 GB - мало для Win10 и CS:GO?
Хасус писал(а):
полосу загрузки проца и активности HDD
Использую MSI Afterburner - как в нём замутить такой же график HDD? Пробовал через плагин Perfmon, но графики фреймтайма и загрузки HDD идут не синхронно.
OLD Hunter писал(а):
как на счёт демок, в них тоже есть фризы?
Проигрывал GOTV демку из матчмейкинга - поймал рандомные фризы перед началом некоторых раундов перед проигрыванием некоторых звуков (кто-то выбросил оружие - в момент удара о землю происходит скачок фреймтайма на графике).
_________________ 4-ех фаз хватает, что бы разогнать !!!8-ми ядерный!!! райзен до 3.8-3.9 Lopos, 13.10.2017
Проигрывал GOTV демку из матчмейкинга - поймал рандомные фризы перед началом некоторых раундов
Это норма, у всех так, такая игра, бывает и перед переключениями меж игроками тоже, это не ваша проблема, а клиента игры.
Y0! писал(а):
перед проигрыванием некоторых звуков (кто-то выбросил оружие - в момент удара о землю происходит скачок фреймтайма на графике).
Опять же дело не в вашем пк, просто настройте клиент так, что бы не было подобного или было сведено к минимуму, это же csgo всегда так было, посмотрите видео ниже с привязкой ко времени, да и в целом посмотрите целиком, там польский язык без субтитров, но думаю вам и так всё будет понятно что там происходит и о чём в целом говорится. https://youtu.be/PkTsT7oFT-4?t=350
Member
Статус: Не в сети Регистрация: 14.06.2009 Откуда: Омск
Y0! писал(а):
Проигрывал GOTV демку из матчмейкинга - поймал рандомные фризы перед началом некоторых раундов перед проигрыванием некоторых звуков (кто-то выбросил оружие - в момент удара о землю происходит скачок фреймтайма на графике).
Не знаю тогда, возможно дело и правда в хдд, но это не точно.
fo36r писал(а):
Это норма, у всех так, такая игра, бывает и перед переключениями меж игроками тоже, это не ваша проблема, а клиента игры.
Чет на тех же стримах есть люди у которых все супер плавно, а есть те у кого фризит кс по кд, причем другие игры идут плавно.
Чет на тех же стримах есть люди у которых все супер плавно, а есть те у кого фризит кс по кд, причем другие игры идут плавно.
Просто кто-то знает природу данных лагов, фризов, а кто-то нет, нужно не только систему свою настраивать правильно под нужные задачи, но и сами игры как одну из них, сейчас всё что нужно сделать это всё есть в ютубе, в гугле, просто нужно желание и время, не все хоять его тратить, вот и вся разница.
Member
Статус: Не в сети Регистрация: 14.06.2009 Откуда: Омск
fo36r писал(а):
сейчас всё что нужно сделать это всё есть в ютубе, в гугле, просто нужно желание и время, не все хоять его тратить, вот и вся разница.
Да нет, у большинства все в дефолте шикарно работает, а другой как не крутит - ничего не выходит, еще и инет влияет не малую роль. Например у меня в один момент начали фризить практически все игры на соурсе, и только в момент когда кто-то кого-то убивает. При этом ни в системе ни в конфигах ничего не менялось. Даже после смены 2 пк эти фризы никуда не делись и никаки шаманставми с настройками хоть системы хоть игры не убрались, я просто забил на игры на соурсе. Так что не все так просто как может показаться. Тем более если у вас такого нет.
Да нет, у большинства все в дефолте шикарно работает, а другой как не крутит - ничего не выходит, еще и инет влияет не малую роль.
Я разве утверждал что у большинства проблемы с данной игрой? Ответ был на ваши слова о тех кого вы выше в стримах смотрите, инет уже вторично в данном конкретном вопросе, человек писал что имеет проблемы при просмотре записи игры, это либо софтовое, либо железная проблема, онлайн совсем другой разговор.
OLD Hunter писал(а):
Даже после смены 2 пк эти фризы никуда не делись и никаки шаманставми с настройками хоть системы хоть игры не убрались, я просто забил на игры на соурсе.
Вы просто не стали искать причину проблемы или не захотели, если меняете несколько систем, а проблема остаётся, думаю не нужно объяснять в чём суть, есть профильные сайты и темы, не вижу сложностей что бы было найти софтовую проблему которая мешает игровому процессу, опять же просто не у всех есть время и желание.
OLD Hunter писал(а):
Тем более если у вас такого нет.
Чего только не было (беру не только csgo, но и ранние версии разных билдов cs) всегда находил решение для себя, если это была не железная проблема, все зависит к подходу самого пользователя, если вы пеняете на игровой движок, то таких как вы с подобной проблемой было бы полно, в csgo слишком много людей что бы valve не обращала на явные косяки в игровом процессе, хотя и до сих пор есть некоторые проблемы с производительностью, при правильном подходе можно и на "посредственном" железе добиться приемлемой производительности от этой игры.
Member
Статус: Не в сети Регистрация: 02.06.2012 Откуда: Стольный Град
fo36r писал(а):
если вы пеняете на игровой движок, то таких как вы с подобной проблемой было бы полно, в csgo слишком много людей что бы valve не обращала на явные косяки в игровом процессе
Народ в подавляющем большинстве готов мириться со многим, да ещё и обгадить того, кто указывает на проблему (и это не только компьютеров касается...).
nVidia лажанулась с прошлогодним летним драйвером, просадив производительность в CS:GO (многострадальная игра...) на 20-25%, а когда я написал в их поддержку - меня сначала погоняли сделать кучу тестов, чтобы, не дай Бог, не потревожить очень занятых криворучек, пишущих драйверы, а когда я таки добрался до криворучек - мне с ходу заявили, что с моим разрешением я и так имею более чем достаточно fps, т.е. если после обновления видеодрайвера у тебя на четверть меньше fps - молча жри, что дают, потому что всё равно этого достаточно - это же мне заявило и большинство других пользователей, для которых УМЕНЬШЕНИЕ fps (да ещё и на 20-25%) ПОСЛЕ ОБНОВЛЕНИЯ видеодрайвера - это каким-то образом НОРМА. Спустя ПОЛГОДА ошибку исправили, fps не только вернули, но даже сделали ещё больше. Но могли бы и не исправить, ведь 99% было не просто пофиг, но они ещё и меня поливали, типа на ровном месте отвлекаю криворучек-дровописателей.
А тут - какие-то фризы по 5-6 раз за весь матч, кто ради такой мелочи будет жаловаться в Valve? Тем более, что эти жалобы обычно растворяются о первый уровень техподдержки. Уже ГОД существует проблема внезапной просадки fps ниже 30 - всем пох, просто перезапустят CS:GO и всё. Да-да, люди с разными компами из разных стран играют матч 5 на 5 и из 10 человек на сервере хотя бы один, а может и четверо сразу, могут получить этот глюк, т.е. проблема не в конкретном компе, а в том, как клиент игры может отреагировать на приходящие с сервера пакеты. Что мне сказала техподдержка? Правильно - послала в жопу дала мануал для домохозяек на тему как найти клавишу Esc на клавиатуре поиска проблем с ПК, т.е. явную проблему клиента CS:GO первый уровень поддержки считает незначительной. Может, на эту проблему обратили бы внимание, но ведь даже из тех, кто на днях со мной вместе внезапно получили 26 fps, в техподдержку написал я один, одного послать проще, чем толпу. Что уж им какие-то фризы, пошлют купить SSD и всего делов.
_________________ 4-ех фаз хватает, что бы разогнать !!!8-ми ядерный!!! райзен до 3.8-3.9 Lopos, 13.10.2017
Y0! FPS monitor скачай, лучше и функциональнее мониторингов не встречал, бесплатно на 2 месяца, думаю хватит найти проблему. Там настолько все продумано, что можно даже поставить полосу по скачкам 12 ватам, температурам всех датчиков, где то может и совпадут лаги. Мси афтебарнер во встройке рива тнт мониторе, как минимум не видел полоску по HDD. По поводу КС, скажу так в свое время задрачивал доту 2, периодический появлялись фризы, и лаги, которые не были похожи на задержки при высоком пинге. причину искал не долго, заметив, что такое происходит строго, когда супруга начинает что то смотреть в youtube (общий wifi). Может у вас проблема то же где то на линии. Вообще проблема с лагами в играх с небольшим пространством обычно не связано с озу и hdd, потому что озу заранее загружает логику пространства. Надо ковырять в другом направлении. По поводу того что кто то месяцами ковыряется в поисках решения проблемы и ненаходит, соглашусь, но не всегда. Я же нашел)) Если надо могу перечислить все действия которые я совершил до выяснения истинных причин статтеров, которые эту проблему значительно минимизировали, и подняли не плохо ФПС.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения