Фризы в игре — это не всегда проблема видеокарты. Лаги при монтаже видео не всегда означают, что нужен новый процессор. А медлительность системы может быть вызвана одним случайным драйвером, о существовании которого вы даже не подозреваете.
Вот в чём главная ошибка большинства пользователей: они гадают вместо того, чтобы измерять.
Первый лайфхак для новичков: перед тем как переустанавливать Windows или менять железо, потратьте 30 минут на диагностику. Эти три инструмента дадут вам чёткие числовые данные о том, что именно замораживает вашу систему. И это совершенно бесплатно.
Уже сегодня вы узнаете:
- Как читать отчёты LatencyMon и находить виновного драйвера за 5 минут
- Почему средний FPS вас обманывает, и что смотреть на самом деле
- Что означает GPU Busy и почему это важнее, чем вы думали
- Как автоматизировать всю диагностику одним скриптом PowerShell
Давайте начнём.
Раздел 1: LatencyMon — детектор драйверов, которые крадут микросекунды ⏱️
Что это и зачем нужно?
LatencyMon v7.31 (последняя версия на 2026 год) — это инструмент, который буквально слушает вашу систему в поиске спрятанных задержек. Изначально он разработан для музыкантов и звукооператоров, но оказывается полезен для всех, кому важна отзывчивость системы.
Представьте, что ваша система — это оркестр, а каждый компонент (процессор, видеокарта, диск) — это музыкант. Если хотя бы один из них начинает отставать, весь оркестр звучит не в такт. LatencyMon — это дирижёр, который показывает вам, какой именно музыкант нарушает ритм.
Как это работает под капотом? 🔍
Ядро Windows организует выполнение кода двумя способами:
- Обычные потоки — это как работники, которые выполняют задачи по расписанию
- ISR/DPC routines — это как пожарные, которые немедленно прерывают всё и вскакивают на работу при сигнале
Вот в чём подвох: когда происходит прерывание (ISR — Interrupt Service Routine), абсолютно всё на процессоре замораживается. Даже если ваше приложение выполняет критичную работу, ISR начнёт исполняться немедленно, потому что имеет более высокий приоритет.
ISR потом может запланировать DPC (Deferred Procedure Call) — это такой полуотложенный вызов, который выполняется сразу же после ISR, но до обычных потоков.
Опасная зона: если ISR + DPC вместе занимают больше 100 микросекунд, они уже начинают мешать критичным приложениям (воспроизведение аудио, игры, видеомонтаж).
Второй коварный враг — hardpagefaults. Когда приложение запрашивает память, которая не в RAM, Windows должна её подгрузить с диска. Это может занять миллисекунды — целую вечность для системы.
Пошаговая инструкция: устанавливаем и запускаем 📥
Шаг 1: Скачайте LatencyMon с официального сайта Resplendence. Это безопасно и свободно.
Шаг 2: Запустите как администратор. Windows попросит разрешение — подтвердите.
Шаг 3: Вы увидите главное окно. Перед вами три основных раздела:
- Kernel Timer Latencies — общие задержки ядра (норма < 500 микросекунд)
- DPC and ISR routines — конкретные процессы, вызывающие прерывания
- Hard Pagefaults — промахи при загрузке памяти
Шаг 4: Нажмите кнопку Start и оставьте LatencyMon работать 5–10 минут. Лучше всего — сразу после запуска системы, когда она спокойная. Затем запустите вашу задачу (игру, видеоредактор) и наблюдайте, как цифры меняются.
Как читать отчёт? 📊
Ключевые метрики:
Например:
- Если вы видите, что snd_rtl.sys (аудиодрайвер) выполняется 300+ микросекунд — это признак проблемы
- Если Hard Pagefaults > 20 в секунду — срочно смотрите на использование ОЗУ
Цепочка действий при обнаружении проблемы 🔗
Если виновник ясен (например, видеодрайвер):
- Откройте Диспетчер устройств (devmgmt.msc)
- Найдите устройство
- Кликните правой кнопкой → Свойства → вкладка Драйвер → Сведения о драйвере
- Проверьте версию и дату
- Обновите драйвер или откатите до предыдущей версии
Если много Hard Pagefaults:
- Откройте Диспетчер задач (Ctrl+Shift+Esc)
- Перейдите на вкладку «Производительность»
- Посмотрите на использование памяти
- Если почти вся память занята — закройте ненужные приложения
- Если проблема не решена — добавьте ОЗУ или отключите файл подкачки (с осторожностью!)
Раздел 2: CapFrameX — анализатор плавности, который смотрит на 1% Low, а не на средний FPS 📈
Почему средний FPS — это ложь? 🤥
Разберём конкретный пример:
Вы запустили игру и видите: FPS: 120
Звучит отлично, да? Но вот что действительно происходит внутри:
- 60 кадров в 8,33 миллисекунды (идеальные)
- 40 кадров в 12 миллисекунд (ещё нормально)
- 15 кадров в 25 миллисекунд (уже заметны потеря плавности)
- 4 кадра в 40 миллисекунд (явный фриз!)
- 1 кадр в 200 миллисекунд (полное зависание!)
Средний FPS вычисляется как гармоническое среднее, и он составит примерно 120. Но вы же замечали эти микрофризы? Они ощущаются, потому что мозг реагирует на худшие кадры, а не на средние!
Поэтому важны перцентили:
- 1% Low — скорость 1% худших кадров
- 0,1% Low — скорость 0,1% самых худших кадров (микрофризы)
Если ваши 1% Low = 60 FPS при среднем 120, это означает, что один из каждых 100 кадров в два раза медленнее. Это вы ощущаете как лаг.
Установка и первый запуск 🎬
Вариант 1: с Rivatuner (более удобный)
- Скачайте CapFrameX с официального сайта
- Установите Rivatuner Statistics Server (входит в комплект)
- Запустите CapFrameX
- Выберите вкладку «Overlay» и активируйте его
Вариант 2: консольный режим
capframex.exe --application "C:\Games\Game.exe" --output results.csv
========================
✅ Подпишитесь на канал - (это бесплатно и очень помогает алгоритму)
❤️ Поставьте лайк - (это один клик, а нам очень важно)
🔄 Репостните друзьям - (которые играют в танки и жалуются на FPS)
💰 Задонатьте (Даже 50 руб. - это топливо для новых статей, скриптов и пошаговых инструкция для Вас. Большое Спасибо понимающим! 🙏
💰ПОДДЕРЖАТЬ КАНАЛ МОЖНО ТУТ ( ОТ 50 РУБЛЕЙ )💰
Или сделать любой перевод по ССЫЛКЕ или QR-коду через СБП. Быстро, безопасно и без комиссии. ( Александр Г. ) "Т.Е.Х.Н.О Windows & Linux".
=========================
Запуск диагностики: три сценария 🎮🎬📊
Сценарий 1: Видеоигра
- Откройте CapFrameX
- Нажмите Start Capture
- Запустите игру
- Поиграйте 5 минут, переместитесь по разным локациям, нагрузите видеокарту
- Остановите запись
- Посмотрите на график
Сценарий 2: Видеомонтаж (Premiere, After Effects)
- Откройте проект в редакторе
- Запустите CapFrameX
- Нажмите Preview или воспроизведите временную шкалу
- Смотрите в реальном времени, как меняются показатели
- Кликайте по кривой в графике, чтобы увидеть детали для каждого кадра
Сценарий 3: Общая система
- Оставьте CapFrameX работать в фоне с оверлеем
- Выполняйте обычные задачи (браузер, документы, мессенджеры)
- Обратите внимание на спайки (резкие подъёмы) на графике — это моменты, когда система замораживается
Интерпретация результатов 📋
После записи вы увидите график с четырьмя кривыми:
- Зелёная — CPU frame time (время обработки на процессоре)
- Синяя — GPU frame time (время рендера на видеокарте)
- Жёлтая — Display latency (задержка вывода на экран)
- Красная — Подозрительные выбросы
Идеальный вид:
- Все три кривые плоские и низкие
- Нет резких скачков
- 1% Low близко к среднему
Проблемный вид:
- GPU кривая взлетает к потолку → видеокарта перегружена, нужны понижение настроек или лучшая карта
- CPU кривая всё время высокая → процессор узкое место, переключитесь на более высокое разрешение
- Жёлтая кривая скачет → проблема с драйвером видеокарты, обновите
- Красные пики один за другим → типичный случай для LatencyMon (см. раздел 1)
Секретный совет: переключитесь в режим анализа с логарифмической шкалой 🔬
Если вы видите один супербольшой скачок, который затмевает всё остальное (например, 500 мс выброс среди 16 мс кадров), кликните правой кнопкой на графике → Logarithmic Scale. Теперь вы увидите все мелкие флуктуации, скрытые до этого.
Раздел 3: PresentMon — невидимая рука GPU Busy, которая всё решает 👻
Что такое GPU Busy и почему это революция? 🌟
Допустим, ваша видеокарта мощная, а FPS всё равно упал. Почему?
Есть две причины:
- GPU действительно перегружена (рисует много полигонов, высокое разрешение)
- GPU ждёт, пока процессор пошлёт ей следующий кадр (это называется CPU bottleneck)
Intel PresentMon показывает метрику GPU Busy — процент времени, когда видеокарта реально работает, а не ждёт в очереди.
Пример:
- Игра: 60 FPS, GPU Busy = 95% → видеокарта работает на пределе, нужны понижение настроек
- Игра: 60 FPS, GPU Busy = 40% → видеокарта ждёт процессора, CPU узкое место
Это как пробка на дороге. Если машины едят медленно, потому что дороги мало — нужно расширить дорогу (видеокарта). Если машины едят медленно, потому что светофоры часто красные — нужно оптимизировать светофоры (процессор).
Установка PresentMon v2.3.1 🔧
- Скачайте с GitHub: github.com/GameTechDev/PresentMon (раздел Releases)
- Разархивируйте в удобную папку, например: C:\Tools\PresentMon\
- Откройте PowerShell как администратор
- Перейдите в папку: cd C:\Tools\PresentMon\
- Запустите: .\PresentMon.exe --help (проверка, что всё работает)
Важно: если вы видите ошибку «access denied», это значит, что ваш аккаунт не в группе «Performance Log Users». Решение:
# Запустите в PowerShell от администратора
$group = [ADSI]"WinNT://./Performance Log Users"
$group.Add("WinNT://DOMAINNAME/$env:USERNAME")
После этого перезагрузитесь.
Практический запуск всех сценариев 🎯
Сценарий 1: Анализ игры в реальном времени
$outputFile = "C:\Logs\game_session_$(Get-Date -Format 'yyyy-MM-dd_HHmmss').csv"
.\PresentMon.exe --output_file $outputFile --process_name "GameName.exe"
Затем запустите игру и наблюдайте в реальном времени через RTSS Overlay (если установлен).
Сценарий 2: Запись данных для видеомонтажа
$outputFile = "C:\Logs\premiere_render_$(Get-Date -Format 'yyyy-MM-dd_HHmmss').csv"
.\PresentMon.exe --output_file $outputFile --process_name "Premiere.exe" --hot_key F10
# Нажимайте F10, чтобы включать/выключать запись между отдельными операциями
Сценарий 3: Фоновый мониторинг всей системы (30 секунд)
$outputFile = "C:\Logs\system_$(Get-Date -Format 'yyyy-MM-dd_HHmmss').csv"
.\PresentMon.exe --output_file $outputFile --capture_time 30
Анализ CSV-отчёта: разбираемся в столбцах 📊
После завершения записи откройте .csv файл в Excel или Google Sheets.
Ключевые столбцы:
Пример анализа:
Если среднее MsUntilRenderComplete = 12 мс, а среднее MsBetweenPresents = 8,33 мс (для 120 FPS), это значит, что GPU не успевает закончить кадр вовремя. Нужны понижение разрешения или понижение графических настроек.
Канал «Каморка Программиста» — это простые разборы программирования, языков, фреймворков и веб-дизайна. Всё для новичков и профессионалов.
Присоединяйся прямо сейчас.
Быстрый скрипт для анализа CSV 🔍
$csvFile = "C:\Logs\game_session_2026-01-07_143021.csv"
$data = Import-Csv -Path $csvFile
# Средние значения
$avgFrameTime = ($data.MsBetweenPresents | Measure-Object -Average).Average
$avgGPUTime = ($data.MsGPUActive | Measure-Object -Average).Average
$avgGPUBusy = ($avgGPUTime / $avgFrameTime * 100)
Write-Host "Средний FPS: $([math]::Round(1000 / $avgFrameTime, 1))"
Write-Host "Среднее время кадра: $([math]::Round($avgFrameTime, 2)) мс"
Write-Host "GPU Busy: $([math]::Round($avgGPUBusy, 1))%"
# Найти худшие кадры (перцентиль 1%)
$sortedFrameTimes = $data.MsBetweenPresents | Sort-Object { [double]$_ }
$index95 = [int]($sortedFrameTimes.Count * 0.01)
$p1Low = $sortedFrameTimes[$index95]
Write-Host "1% Low FPS: $([math]::Round(1000 / $p1Low, 1))"
Сохраните этот скрипт в файл analyze_present.ps1 и запускайте:
.\analyze_present.ps1
Раздел 4: Итоговая схема диагностики — что привело к результату 🎪
Теперь давайте объединим все три инструмента в единую методологию.
Сценарий 1: Игра фризит 🎮
Действие 1: LatencyMon показывает, что snd_rtl.sys выполняется 250 микросекунд
- Вывод: Звуковой драйвер замораживает систему
- Решение: Откатите звуковой драйвер или обновите его до последней версии
Действие 2: CapFrameX показывает, что GPU кривая зашкаливает за 30 мс
- Вывод: Видеокарта не справляется с нагрузкой
- Решение: Понизьте разрешение с 4K на 1440P или отключите RTX трассировку лучей
Действие 3: PresentMon показывает GPU Busy = 99%, а MsGPUActive = 25 мс
- Вывод: GPU работает на пределе, пропускает кадры
- Решение: Замена на более мощную видеокарту или переход на менее требовательную игру
Сценарий 2: Premiere Pro тормозит при рендере 🎬
Действие 1: LatencyMon показывает Hard Pagefaults = 50/сек
- Вывод: Памяти не хватает, система постоянно обращается к диску
- Решение: Добавить ОЗУ (рекомендуется 32+ ГБ для 4K монтажа) или уменьшить разрешение проекта
Действие 2: CapFrameX показывает плоскую, спокойную кривую на низком уровне
- Вывод: Система справляется нормально, лаги — это ожидаемое поведение при рендере
- Решение: Это нормально, переходим к оптимизации процесса рендера в Premiere
Действие 3: PresentMon показывает, что процесс Premiere замечает GPU Busy = 20%
- Вывод: Premiere не использует GPU ускорение, или ускорение отключено
- Решение: Включите CUDA/OpenCL в параметрах проекта
Сценарий 3: Windows медленная в целом 🐢
Действие 1: LatencyMon показывает, что Intel Graphics выполняется 150+ микросекунд
- Вывод: Встроенная видеокарта вызывает задержки при обработке
- Решение: Обновите BIOS материнской платы или отключите встроенную графику в BIOS
Действие 2: CapFrameX в фоновом режиме показывает периодические спайки в системных процессах
- Вывод: Фоновые обновления или сканирование диска вызывают микрофризы
- Решение: Отключите автоматические обновления во время работы (или используйте это время для диагностики)
Действие 3: PresentMon для explorer.exe показывает, что CPU всё время на 90–100%
- Вывод: Какой то фоновый процесс потребляет мощность
- Решение: Откройте Диспетчер задач и найдите виновника (часто это Windows Search или Antimalware Service)
Раздел 5: Автоматизация — PowerShell скрипты для полной диагностики ⚡
Единый скрипт диагностики на PowerShell 🔨
Сохраните этот скрипт как diagnose_system.ps1:
# ============================================================================
# Скрипт полной диагностики системы для поиска причин лагов
# Требует: Администратор, LatencyMon, PresentMon в C:\Tools\
# ============================================================================
param(
[string]$ProcessName = "notepad.exe", # Процесс для мониторинга
[int]$DurationSeconds = 30 # Время записи
)
# Проверка прав администратора
$isAdmin = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
if (-not $isAdmin) {
Write-Host "❌ Ошибка: скрипт требует запуска от администратора!" -ForegroundColor Red
exit 1
}
# Проверка пути к инструментам
$presentMonPath = "C:\Tools\PresentMon\PresentMon.exe"
if (-not (Test-Path $presentMonPath)) {
Write-Host "❌ PresentMon не найден по пути: $presentMonPath" -ForegroundColor Red
Write-Host "Скачайте с: https://github.com/GameTechDev/PresentMon" -ForegroundColor Yellow
exit 1
}
# Создание директории логов
$logsDir = "C:\Logs"
if (-not (Test-Path $logsDir)) {
New-Item -ItemType Directory -Path $logsDir | Out-Null
}
$timestamp = Get-Date -Format 'yyyy-MM-dd_HHmmss'
$outputFile = "$logsDir\diagnosis_${timestamp}.csv"
Write-Host "📊 Начало диагностики системы" -ForegroundColor Cyan
Write-Host "⏱️ Длительность: $DurationSeconds секунд" -ForegroundColor Cyan
Write-Host "📝 Результаты сохранятся в: $outputFile" -ForegroundColor Cyan
Write-Host ""
Write-Host "⚠️ Убедитесь, что целевой процесс запущен!" -ForegroundColor Yellow
Write-Host ""
# Запуск PresentMon с параметрами
Write-Host "🔴 Запись начинается через 3 секунды..." -ForegroundColor Green
Start-Sleep -Seconds 3
$presentMonArgs = @(
"--output_file", $outputFile,
"--process_name", $ProcessName,
"--capture_time", $DurationSeconds.ToString()
)
& $presentMonPath $presentMonArgs
Write-Host ""
Write-Host "✅ Диагностика завершена!" -ForegroundColor Green
Write-Host ""
# Анализ CSV результата
Write-Host "📈 Анализ результатов:" -ForegroundColor Cyan
Write-Host ""
$data = Import-Csv -Path $outputFile | Where-Object { $_.MsBetweenPresents -ne "" }
if ($data.Count -gt 0) {
# Преобразование строк в числовой формат
$frameTimes = @($data | ForEach-Object { [double]$_.MsBetweenPresents })
$gpuTimes = @($data | ForEach-Object { [double]$_.MsGPUActive })
# Расчёты
$avgFrameTime = ($frameTimes | Measure-Object -Average).Average
$avgGPUTime = ($gpuTimes | Measure-Object -Average).Average
$avgFPS = 1000 / $avgFrameTime
# Перцентили
$sorted = @($frameTimes | Sort-Object)
$p1Index = [int]($sorted.Count * 0.01)
$p01Index = [int]($sorted.Count * 0.001)
$p1Low = if ($p1Index -lt $sorted.Count) { $sorted[$p1Index] } else { $sorted[-1] }
$p01Low = if ($p01Index -lt $sorted.Count) { $sorted[$p01Index] } else { $sorted[-1] }
$fps1Low = 1000 / $p1Low
$fps01Low = 1000 / $p01Low
Write-Host "📊 Основные метрики:" -ForegroundColor Green
Write-Host " • Средний FPS: $([math]::Round($avgFPS, 1))" -ForegroundColor White
Write-Host " • 1% Low FPS: $([math]::Round($fps1Low, 1))" -ForegroundColor Yellow
Write-Host " • 0,1% Low FPS: $([math]::Round($fps01Low, 1))" -ForegroundColor Red
Write-Host ""
Write-Host "⏱️ Время кадра:" -ForegroundColor Green
Write-Host " • Среднее: $([math]::Round($avgFrameTime, 2)) мс" -ForegroundColor White
Write-Host " • Min: $([math]::Round(($frameTimes | Measure-Object -Minimum).Minimum, 2)) мс" -ForegroundColor White
Write-Host " • Max: $([math]::Round(($frameTimes | Measure-Object -Maximum).Maximum, 2)) мс" -ForegroundColor Red
Write-Host ""
Write-Host "💾 GPU Active Time:" -ForegroundColor Green
Write-Host " • Среднее: $([math]::Round($avgGPUTime, 2)) мс" -ForegroundColor White
Write-Host " • GPU Busy %: $([math]::Round(($avgGPUTime / $avgFrameTime) * 100, 1))%" -ForegroundColor Cyan
Write-Host ""
# Диагностический вывод
if ($fps1Low -lt ($avgFPS * 0.6)) {
Write-Host "⚠️ ВНИМАНИЕ: Обнаружены значительные микрофризы (1% Low < 60% от среднего)" -ForegroundColor Red
Write-Host " Рекомендация: Запустите LatencyMon для поиска виновного драйвера" -ForegroundColor Yellow
}
if (($avgGPUTime / $avgFrameTime) -gt 0.9) {
Write-Host "⚠️ ВНИМАНИЕ: GPU загружена на 90%+" -ForegroundColor Red
Write-Host " Рекомендация: Понизьте графические настройки или разрешение" -ForegroundColor Yellow
}
if (($avgGPUTime / $avgFrameTime) -lt 0.4) {
Write-Host "⚠️ ВНИМАНИЕ: GPU используется менее чем на 40%" -ForegroundColor Orange
Write-Host " Рекомендация: CPU является узким местом, закройте фоновые процессы" -ForegroundColor Yellow
}
Write-Host ""
Write-Host "💾 Полные результаты сохранены в: $outputFile" -ForegroundColor Cyan
Write-Host ""
Write-Host "📝 Для дальнейшего анализа откройте CSV в Excel или Google Sheets" -ForegroundColor Cyan
}
else {
Write-Host "❌ Ошибка: не удалось получить данные из PresentMon" -ForegroundColor Red
Write-Host "Убедитесь, что процесс $ProcessName был запущен" -ForegroundColor Yellow
}
Как использовать скрипт? 📖
Для анализа игры:
.\diagnose_system.ps1 -ProcessName "GameName.exe" -DurationSeconds 60
Для видеомонтажа:
.\diagnose_system.ps1 -ProcessName "Premiere.exe" -DurationSeconds 120
Для общей системы:
.\diagnose_system.ps1 -ProcessName "explorer.exe" -DurationSeconds 30
Скрипт для проверки драйверов и ISR/DPC ⚙️
Сохраните как check_drivers.ps1:
# Скрипт для получения информации о драйверах и их версиях
Write-Host "🔍 Проверка видеодрайверов:" -ForegroundColor Cyan
Get-WmiObject Win32_VideoController | ForEach-Object {
Write-Host " Видеокарта: $($_.Name)" -ForegroundColor Green
Write-Host " Версия драйвера: $($_.DriverVersion)" -ForegroundColor White
Write-Host " Объём памяти: $([math]::Round($_.AdapterRAM / 1GB, 1)) ГБ" -ForegroundColor White
Write-Host ""
}
Write-Host "🔍 Проверка сетевых адаптеров:" -ForegroundColor Cyan
Get-WmiObject Win32_NetworkAdapterConfiguration -Filter "IPEnabled = true" | ForEach-Object {
$adapter = Get-WmiObject Win32_NetworkAdapter -Filter "Index = $($_.Index)"
Write-Host " Сетевой адаптер: $($adapter.Name)" -ForegroundColor Green
Write-Host " Статус: $($adapter.NetEnabled)" -ForegroundColor White
Write-Host ""
}
Write-Host "🔍 Проверка звуковых устройств:" -ForegroundColor Cyan
Get-WmiObject Win32_SoundDevice | ForEach-Object {
Write-Host " Устройство: $($_.Name)" -ForegroundColor Green
Write-Host " Статус: $($_.Status)" -ForegroundColor White
Write-Host ""
}
Write-Host "💾 Проверка использования памяти:" -ForegroundColor Cyan
$memory = Get-WmiObject Win32_OperatingSystem
$totalRAM = [math]::Round($memory.TotalVisibleMemorySize / 1MB, 1)
$freeRAM = [math]::Round($memory.FreePhysicalMemory / 1MB, 1)
$usedRAM = $totalRAM - $freeRAM
Write-Host " Всего ОЗУ: $totalRAM ГБ" -ForegroundColor Green
Write-Host " Используется: $usedRAM ГБ ($([math]::Round(($usedRAM / $totalRAM) * 100, 1))%)" -ForegroundColor White
Write-Host " Свободно: $freeRAM ГБ" -ForegroundColor Green
if ($usedRAM / $totalRAM -gt 0.9) {
Write-Host " ⚠️ Система близко к лимиту памяти!" -ForegroundColor Red
}
Write-Host ""
Write-Host "⚙️ Проверка активных процессов (топ 10 по CPU):" -ForegroundColor Cyan
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10 | ForEach-Object {
Write-Host " $($_.Name) — CPU: $([math]::Round($_.CPU, 1))s, Память: $([math]::Round($_.WorkingSet / 1MB, 1)) МБ" -ForegroundColor White
}
Раздел 6: Откат в случае ошибки — как вернуться, если что-то пошло не так 🔙
Важный момент: диагностика не повредит систему, но если вы вносили изменения на основе результатов, вот как откатиться.
Откат драйвера 🔄
Если вы обновили или откатили драйвер и система стала работать хуже:
Способ 1: Через Диспетчер устройств
- Нажмите Win+X, выберите Диспетчер устройств
- Найдите устройство, которое вы меняли (видеокарта, звук, сеть)
- Кликните правой кнопкой → Свойства
- Вкладка «Драйвер» → кнопка «Откатить» (если доступна)
- Перезагрузитесь
Способ 2: Удаление и переустановка
# Удаление драйвера (требует администратор)
# Найдите PnP имя устройства
Get-WmiObject Win32_PnPSignedDriver | Where-Object { $_.Description -match "VideoController" } | Select-Object Name, Description
Откат параметров Windows 🔧
Если вы меняли параметры в реестре или групповой политике:
Откат реестра (если вы сделали резервную копию):
# Восстановление из резервной копии (сделайте её ДО изменений!)
Restore-Item -Path "HKCU:\Software\YourKey" -Confirm
Полный сброс параметров производительности:
- Откройте Параметры (Win+I)
- Система → О системе → Дополнительные параметры системы
- Вкладка «Дополнительно» → Производительность → Параметры
- Нажмите кнопку «Восстановить значения по умолчанию»
Откат обновлений драйверов 📲
Если после обновления Windows или видеодрайвера начались проблемы:
# Просмотр истории обновлений
Get-HotFix | Sort-Object -Property InstalledOn -Descending | Select-Object -First 20 | Format-Table
# Удаление последнего обновления KB (пример)
Uninstall-HotFix -Id KB5010415 -Confirm
Или вручную: Параметры → Система → Восстановление → Вернуться к предыдущей версии Windows
Раздел 7: Вопрос—ответ 🤔
Вопрос: Мне нужно запустить LatencyMon, но я вижу ошибку «access denied». Что делать?
Ответ: LatencyMon требует прав в группе «Performance Log Users». Выполните в PowerShell (админ):
net localgroup "Performance Log Users" $env:USERNAME /add
Затем перезагрузитесь.
Вопрос: CapFrameX показывает 120 FPS, но игра кажется с микролагами. Это нормально?
Ответ: Смотрите на 1% Low, а не на среднее! Если 1% Low = 30 FPS при среднем 120 — это и есть микрофризы. Запустите LatencyMon, чтобы найти причину.
Вопрос: Сколько должна быть GPU Busy при идеальной работе?
Ответ: Зависит от вашей цели:
- Для 60 FPS стабильно: GPU Busy должна быть 50–80%
- Для максимального FPS: GPU Busy должна быть 90–99%
- Если GPU Busy < 40% — проблема в CPU
Вопрос: Можно ли LatencyMon и CapFrameX запускать одновременно?
Ответ: Да, они не конфликтуют. Это даже полезно — вы будете видеть, совпадают ли скачки на обоих инструментах.
Вопрос: Что означает значение Hard Pagefaults > 100/сек?
Ответ: Система постоянно загружает память с диска — это очень медленно. Либо нужна больше оперативной памяти, либо закройте ненужные приложения, либо увеличьте рабочий набор приложения.
Вопрос: Как сделать так, чтобы PresentMon запускался автоматически при старте Windows?
Ответ: Создайте задачу в Планировщике задач:
- Откройте taskschd.msc
- Создать задачу → Имя: «PresentMon Monitor»
- Триггер: «При входе пользователя»
- Действие: Запустить программу → путь к PresentMon.exe
- Параметры: --output_file C:\Logs\auto_$(Get-Date -Format 'yyyy-MM-dd_HHmmss').csv
Вопрос: Может ли LatencyMon помочь найти вирусы?
Ответ: Косвенно да. Если видите неизвестный процесс с высокой DPC активностью, это может быть признак вредоноса. Используйте это в сочетании с антивирусом.
Вопрос: PresentMon требует прав администратора. Можно ли этого избежать?
Ответ: Нет, это необходимо для доступа к ETW данным. Но вы можете добавить ваш пользователь в группу «Performance Log Users» и тогда не потребуется полная учётная запись админа.
Вопрос: Какая версия Windows оптимальна для диагностики?
Ответ: Windows 25H2 (текущая версия) имеет лучшую поддержку ETW и производительности. Windows 11 23H2 работает так же хорошо. Windows 10 22H2 тоже поддерживает все инструменты.
Раздел 8: Призыв к действию 🚀
Вот что вы можете сделать прямо сейчас:
- Скачайте три инструмента (все бесплатны):
— LatencyMon с resplendence.com
— CapFrameX с capframex.com
— PresentMon с github.com/GameTechDev/PresentMon - Запустите 10-минутную диагностику вашей системы прямо сегодня
- Найдите первую проблему и исправьте её
- Убедитесь в результате — запустите диагностику снова
Система будет работать быстрее. Это гарантировано.
Если эта статья помогла вам понять вашу систему лучше — подпишитесь на канал «T.E.X.H.O Windows & Linux», поставьте лайк и репостните в социальные сети. Ваша поддержка — топливо для создания новых полезных материалов.
Поддержите канал донатом — каждый рубль идёт для тестирования инструментов и создание более глубоких гайдов, ну и на кофе автору.
#Диагностика #LatencyMon #CapFrameX #PresentMon #Windows25H2 #Оптимизация #Лаги #GPU #CPU #DPC #ISR #Фризы #Производительность #PowerShell #Драйверы #ETW #Видеомонтаж #Игры #Мониторинг #Bottleneck #FrameTime #FPS #Техника #Совет #Гайд #Инструмент #Эксперт #Система #Отладка #Скрипт #Автоматизация