Оптимизатор задержки ввода Windows 10/11
Продолжаем писать всякие интересные программки. На днях ко мне в личку обратился человек с просьбой помочь пофиксить регистрацию стрельбы и посредственный отклик на команды игрока в Counter-Strike 2. А так как на различных оптимизациях я собаку съел, то решил написать программу, которая по нажатию одной кнопки будет делать Windows самой отзывчивой ОС в мире, а после ещё одного нажатия возвращать настройки по умолчанию. Результатом 10-часовой работы стала программа OneShoot.
OneShoot — это небольшая утилита для снижения задержки (input lag) путём тонкой настройки операционной системы. Простыми словами: программа заставляет Windows меньше заниматься фоновыми задачами и быстрее реагировать на ваши действия. Написана программа при помощи DeepSeek с переводом в код C.
Применяемые твики
ПЕРИФЕРИЯ
Отключение акселерации мыши
Что делает: записывает в реестр MouseSpeed=0, MouseThreshold1=0, MouseThreshold2=0. Windows перестаёт искусственно ускорять курсор при резких движениях, движения становятся линейными 1:1.
Снижение задержки: 5-15ms.
Отключение системных звуков
Что делает: устанавливает звуковую схему в ".None" через реестр. Система перестаёт проигрывать звуки уведомлений, ошибок, подключения устройств. Каждый такой звук вызывает прерывание и переключение контекста аудиодрайвера.
Снижение задержки: 1-3ms.
USB
Запрет выборочной приостановки USB
Что делает: через powercfg устанавливает USBDISABLESELPWR=0 для схем питания AC и DC. USB-порты перестают засыпать для экономии энергии. Устройства всегда находятся в активном состоянии и не тратят время на пробуждение при обращении.
Эффект: устраняет микрофризы при пробуждении мыши/клавиатуры/гарнитуры.
Отключение управления питанием USB (LPM)
Что делает: через powercfg отключает USB Link Power Management (GUID: 2a737441-1930-4402-8d77-b2bebba308a3). Это более глубокая технология энергосбережения, которая снижает напряжение на USB-контроллере в простое. Отключение держит контроллер на максимальном питании.
Снижение задержки: 2-8ms.
Удаление флага SelectiveSuspendEnabled
Что делает: через PowerShell проходит по всем USB-устройствам в системе и в ветке реестра каждого устройства устанавливает SelectiveSuspendEnabled=0. Это аппаратный флаг, разрешающий системе отключать конкретное устройство. После твика ни одно USB-устройство не может быть отключено системой для экономии.
Эффект: устраняет задержки реактивации устройств (мышь после паузы, гарнитура).
СИСТЕМА
IRQ8Priority = 1
Что делает: в реестре HKLM\SYSTEM\CurrentControlSet\Control\PriorityControl устанавливает IRQ8Priority=1. IRQ8 — это прерывание системного таймера (RTC/HPET), которое отвечает за квантование времени. Повышение приоритета даёт таймеру преимущество перед другими прерываниями.
Эффект: более стабильные тайминги, меньше джиттера при переключении потоков.
Снижение качества аудио до минимума
Что делает: через PowerShell для всех аудиоустройств вывода устанавливает битрейт 0x000BB800 (768000 = 48кГц/16бит/моно, минимальное качество). Параметр записывается в реестр MMDevices\Audio\Render для каждого устройства. Меньший объём аудиоданных означает меньше работы для аудиостека и меньше прерываний от звукового драйвера.
Снижение задержки: 2-5ms.
ПРОЦЕССОР
Отключение парковки ядер
Что делает: через powercfg для схем AC и DC устанавливает CPMINCORES=100 (минимальное количество активных ядер = 100%) и CPPERF=100 (минимальная производительность = 100%). Windows перестаёт парковать ядра — переводить их в глубокий сон C6/C7 при низкой нагрузке. Все ядра всегда активны и готовы принять поток.
Эффект: устраняет микрофризы при резком изменении нагрузки (ядро не ждёт пробуждения другого ядра).
Win32PrioritySeparation = 0x26
Что делает: в реестре HKLM\SYSTEM\CurrentControlSet\Control\PriorityControl устанавливает значение 0x26. Это управляет квантами времени процессора:
0x20 (старшие биты) — длинные кванты для приоритетных потоков
0x06 (младшие биты) — приоритет программ над фоновыми службами
Результат: активное окно (игра) получает более длинные интервалы непрерывного выполнения и преимущество перед фоновыми процессами.
Снижение задержки: 5-10ms.
NVIDIA
MaxPreRenderedFrames = 1
Что делает: в реестре HKLM\SOFTWARE\NVIDIA Corporation\Global\NVTweak устанавливает ключ в 1. Это ограничивает очередь кадров, которые CPU подготавливает для GPU. По умолчанию 3 — процессор может подготовить до 3 кадров вперёд, что создаёт задержку между вводом и отображением. Значение 1 означает, что GPU рендерит только текущий кадр.
Снижение задержки: 10-30ms (зависит от сцены).
Риск: возможны микростаттеры на слабых GPU.
FrameQueueSize = 1
Что делает: дополнительный ключ в том же разделе реестра. Уменьшает размер очереди кадров на уровне драйвера, дополняя MaxPreRenderedFrames.
Снижение задержки: 5-10ms.
PowerMizer = Maximum Performance
Что делает: устанавливает PowerMizer=1 в реестре NVIDIA. PowerMizer — технология динамического изменения частоты GPU в зависимости от нагрузки. В режиме Maximum Performance частота фиксируется на максимуме и не снижается в простое. Это устраняет задержку на разгон GPU при начале рендеринга.
Снижение задержки: 10-20ms.
VSync отключён
Что делает: устанавливает VSyncForceOn=0. Вертикальная синхронизация привязывает частоту кадров к частоте обновления монитора. При включённом VSync кадр ждёт обратного хода луча развёртки, что создаёт задержку до 16.6ms на 60Гц мониторе. Отключение убирает это ожидание.
Снижение задержки: 20-50ms.
G-Sync отключён
Что делает: устанавливает GSync=0. Хотя G-Sync снижает задержку по сравнению с VSync, он всё ещё добавляет небольшую задержку на синхронизацию с монитором. Отключение переводит монитор в режим фиксированной частоты.
Снижение задержки: 5-15ms.
FastSync отключён
Что делает: устанавливает FastSync=0. FastSync — технология NVIDIA, которая позволяет кадрам рендериться быстрее частоты обновления, но всё ещё удерживает последний кадр для монитора. Создаёт дополнительный буфер и задержку. Отключение исключает эту прослойку.
Снижение задержки: 5-10ms.
Ansel отключён
Что делает: устанавливает AnselEnabled=0. Ansel — фото-режим NVIDIA, который встраивает хук в графический движок для свободной камеры и фильтров. Даже в выключенном состоянии хук активен. Отключение убирает этот перехват.
Снижение задержки: 1-3ms.
SPS отключён (Simultaneous Multi-Projection)
Что делает: устанавливает EnableSPS=0. SPS позволяет GPU рендерить несколько проекций одновременно (для VR и мульти-мониторов). В обычных играх не используется, но драйвер держит эту возможность активной. Отключение освобождает часть конвейера GPU.
Снижение задержки: 1-3ms.
AMD
AntiLag включён
Что делает: через реестр HKLM\SOFTWARE\AMD\CN устанавливает AntiLagEnabled=1. AntiLag синхронизирует CPU и GPU так, чтобы CPU не убегал вперёд с подготовкой кадров. Аналог MaxPreRenderedFrames=1 для NVIDIA.
Снижение задержки: 10-20ms.
EnhancedSync отключён
Что делает: устанавливает EnhancedSync=0. Технология AMD для устранения разрывов без задержки VSync, но всё ещё добавляет буфер. Отключение убирает лишний этап обработки.
Снижение задержки: 5-15ms.
Chill отключён
Что делает: устанавливает ChillEnabled=0. Chill ограничивает FPS для экономии энергии и снижения температуры. Отключение позволяет GPU рендерить на максимальной скорости без ограничений.
Эффект: разблокировка максимального FPS.
Boost включён
Что делает: устанавливает BoostEnabled=1. Агрессивный алгоритм буста частоты GPU, который быстрее реагирует на нагрузку и держит более высокие частоты.
Снижение задержки: 5-15ms.
ImageSharpening отключено
Что делает: устанавливает ImageSharpening=0. Пост-обработка изображения драйвером. Даже с выключенной настройкой драйвер держит пайплайн активным. Полное отключение убирает лишний проход обработки.
Снижение задержки: 1-3ms.
СЕТЬ
TCP Nagle Off (TcpNoDelay = 1)
Что делает: в реестре устанавливает TcpNoDelay=1. Алгоритм Нейгла объединяет мелкие TCP-пакеты в один большой для экономии пропускной способности. В играх это создаёт задержку — пакет ждёт накопления данных или подтверждения предыдущего. Отключение отправляет каждый пакет немедленно.
Снижение задержки: 5-10ms.
MMCSS Games Priority = High
Что делает: в реестре Multimedia\SystemProfile\Tasks\Games устанавливает Priority=6, Scheduling Category="High", SFIO Priority="High", SystemResponsiveness=0. MMCSS — Multimedia Class Scheduler Service, который управляет приоритетами мультимедийных потоков. High Priority даёт игровым потокам преимущество перед другими задачами.
Снижение задержки: 5-15ms.
DisableTaskOffload = 1
Что делает: отключает разгрузку сетевых задач с CPU на сетевой адаптер (TCP Checksum Offload, Large Send Offload). Хотя оффлоад снижает нагрузку на CPU, он добавляет задержку на передачу данных между CPU и сетевым чипом. Отключение заставляет CPU обрабатывать пакеты напрямую.
Снижение задержки: 2-5ms.
NetworkThrottlingIndex = FFFFFFFF
Что делает: устанавливает максимальное значение. Windows по умолчанию ограничивает пропускную способность для мультимедиа-приложений, резервируя часть для системных нужд. FFFFFFFF отключает это ограничение — весь канал доступен игре.
Снижение задержки: 5-10ms.
RSS отключён (Receive Side Scaling)
Что делает: устанавливает RSSProfile=0. RSS распределяет обработку входящих пакетов по нескольким ядрам CPU. Для игр с одним сетевым потоком это создаёт лишнюю синхронизацию между ядрами. Отключение заставляет обрабатывать все пакеты на одном ядре.
Снижение задержки: 1-3ms.
RSC отключён (Receive Segment Coalescing)
Что делает: устанавливает EnableRSC=0. RSC объединяет несколько входящих пакетов в один большой для снижения нагрузки на CPU. В играх с редкими, но критичными по времени пакетами это создаёт задержку ожидания. Отключение обрабатывает каждый пакет отдельно.
Снижение задержки: 1-3ms.
ИГРОВОЙ ОВЕРЛЕЙ
GameDVR/FSO отключены
Что делает: в реестре System\GameConfigStore устанавливает GameDVR_FSEBehavior=2, GameDVR_Enabled=0, GameDVR_HonorUserFSEBehaviorMode=1. В Software\Microsoft\Windows\CurrentVersion\GameDVR устанавливает AppCaptureEnabled=0. Это отключает игровую запись Windows, фоновый захват экрана (GameDVR) и Fullscreen Optimizations (FSO), которые превращают эксклюзивный полноэкранный режим в безрамочный оконный, добавляя задержку буферизации.
Снижение задержки: 5-15ms.
Xbox Game Bar полностью отключён
Что делает: отключает AppCaptureEnabled, GameDVREnabled, HistoricalCaptureEnabled в нескольких ветках реестра. Устанавливает AllowGameDVR=0 в политиках. Отключает и останавливает службы XboxNetApiSvc, XblAuthManager, XblGameSave, XboxGipSvc. Через PowerShell пытается удалить пакеты Xbox и Microsoft.Xbox. Game Bar — это постоянный оверлей с хуками ввода и захватом экрана в фоне. Полное отключение убирает эти хуки.
Снижение задержки: 5-10ms.
ФАЙЛОВАЯ СИСТЕМА
NtfsDisableLastAccessUpdate = 1
Что делает: отключает запись времени последнего доступа к файлам. Каждое чтение файла перестаёт вызывать операцию записи метаданных. Это снижает количество дисковых операций ввода-вывода, которые могут создавать микрофризы при обращении игры к файлам на диске.
Отключение имён 8.3 (NtfsDisable8dot3NameCreation = 1)
Что делает: NTFS перестаёт создавать короткие имена файлов (формат DOS 8.3) для совместимости со старыми программами. Создание каждого файла требует дополнительной операции записи короткого имени. Отключение ускоряет файловые операции.
NtfsMemoryUsage = 2
Что делает: устанавливает агрессивный режим кэширования NTFS. Драйвер файловой системы использует больше оперативной памяти для кэша, но реже обращается к диску. Это снижает количество дисковых прерываний и ускоряет повторные чтения одних и тех же файлов.
СЛУЖБЫ
DiagTrack (Connected User Experiences and Telemetry)
Что делает: останавливает и отключает службу. DiagTrack собирает телеметрию и диагностические данные, отправляет их на серверы Microsoft. Работает в фоне с периодическими всплесками сетевой и дисковой активности.
Снижение задержки: 1-5ms.
SysMain (Superfetch)
Что делает: останавливает и отключает службу. SysMain анализирует использование приложений и предзагружает часто используемые программы в оперативную память. В игровом сценарии эта предзагрузка конкурирует с игрой за диск и память, создавая микрофризы при обращении к диску.
WSearch (Windows Search)
Что делает: останавливает и отключает службу. WSearch индексирует содержимое файлов на диске для быстрого поиска. Индексация работает в фоне и создаёт постоянную дисковую нагрузку, которая в играх может вызывать микрофризы при подгрузке ассетов.
ЗАЩИТА (опасно, только на время игры)
Windows Defender отключён
Что делает: через реестр включает DisableAntiSpyware=1, через PowerShell отключает RealtimeMonitoring, останавливает и отключает службу WinDefend. Defender сканирует каждый файл при чтении и записи, каждое сетевое соединение. В играх это создаёт задержки при подгрузке ассетов и сетевых операциях.
Эффект: значительное снижение дисковой и процессорной нагрузки.
Риск: система полностью без антивирусной защиты.
Брандмауэр отключён
Что делает: через netsh выключает все профили брандмауэра, останавливает и отключает службу MpsSvc. Брандмауэр проверяет каждый сетевой пакет на соответствие правилам. Отключение убирает эту проверку и снижает задержку сетевых операций.
Риск: все порты открыты, система уязвима к сетевым атакам.
BitLocker приостановлен
Что делает: через PowerShell выполняет Suspend-BitLocker для диска C. Приостанавливает шифрование/дешифрование данных на лету. Каждая операция чтения/записи на зашифрованном диске проходит через слой дешифровки/шифрования, что создаёт дополнительную задержку и нагрузку на CPU.
Риск: данные на диске временно не защищены шифрованием.
ГЛУБОКИЕ ТВИКИ (bcdedit, требуется перезагрузка)
HPET отключён
Что делает: выполняет bcdedit /set useplatformtick no, /set useplatformclock no, /set disabledynamictick yes, /set tscsyncpolicy Enhanced. HPET — высокоточный таймер, который может создавать дополнительные прерывания. Отключение переводит систему на TSC (Time Stamp Counter) процессора, который быстрее и с меньшими накладными расходами. TSCSyncPolicy Enhanced обеспечивает синхронизацию TSC между ядрами.
Эффект: снижение задержек таймера, более плавный геймплей.
Отладка ядра отключена
Что делает: bcdedit /set debug No. Отключает встроенный отладчик ядра Windows, который даже в неактивном состоянии держит хуки и проверки. Отключение убирает эти накладные расходы.
EMS отключён
Что делает: bcdedit /set ems No. Emergency Management Services — компонент для удалённого управления через последовательный порт. В игровых системах не используется, но потребляет ресурсы на поддержание активного последовательного интерфейса.
Оптимизация страницы памяти
Что делает: bcdedit /set linearaddress57 OptOut (отключает 57-битную адресацию для снижения накладных расходов на таблицы страниц) и bcdedit /set increaseuserva 268435328 (увеличивает виртуальное адресное пространство пользовательского режима до ~256 ГБ). Полезно для систем с большим объёмом ОЗУ и игр, использующих большие адресные пространства.
