Устраняем проблему с загрузкой CPU процессом «Системные прерывания»
Многие пользователи ОС Windows со временем начинают замечать, что нагрузка на систему некоторыми процессами значительно возросла. В частности, повышается расход ресурсов центрального процессора, что, в свою очередь, приводит к «тормозам» и некомфортной работе. В этой статье мы разберем причины и решения проблемы, связанной с процессом «Системные прерывания».
«Системные прерывания» загружают процессор
Данный процесс не сопоставлен с каким-либо приложением, а является исключительно сигнальным. Это означает, что он показывает повышенный расход процессорного времени другими программными или аппаратными средствами. Такое поведение системы связано с тем, что CPU приходится выделять дополнительную мощность для обработки данных, пропущенных другими компонентами. «Системные прерывания» показывают, что какое-то оборудование или драйвер работают некорректно или неисправны.
Перед тем, как переходить к решению проблемы, необходимо определить, какой порог нагрузки данным процессом является нормальным. Это примерно 5 процентов. Если значение выше, стоит задуматься о том, что в системе имеются сбойные компоненты.
Способ 1: Обновление драйверов
Первое, о чем необходимо задуматься при возникновении проблемы, это обновление драйверов всех устройств, как физических, так и виртуальных. Особенно это касается девайсов, отвечающих за воспроизведение мультимедиа – звуковой и видеокарты, а также сетевых адаптеров. Выполнять комплексное обновление рекомендуется с помощью специального софта. Впрочем, «десятка» оснащена и собственным, довольно эффективным инструментом.
Способ 2: Проверка диска
Системный диск, особенно если у вас установлен HDD, со временем может работать с ошибками из-за повреждения секторов, микросхем памяти или сбоев в контроллере. Для того чтобы исключить данный фактор, необходимо проверить диск на предмет наличия ошибок. Если таковые будут выявлены, «железку» стоит заменить или попытаться восстановить, что не всегда приводит к желаемому результату.
Способ 3: Проверка батареи
Батарея ноутбука, исчерпавшая свой ресурс, может стать причиной возникновения повышенной нагрузки на ЦП процессом «Системные прерывания». Этот фактор приводит к некорректной работе различных «энергосберегаек», которые активно используются в портативных устройствах. Решение здесь простое: нужно протестировать батарею и, в зависимости от результата, заменить ее новой, попытаться восстановить или перейти к другим способам устранения неполадки.
Способ 4: Обновление БИОС
К возникновению обсуждаемой сегодня проблемы может привести и устаревшее микропрограммное обеспечение, управляющее материнской платой – BIOS. Чаще всего неполадки возникают после замены или подключения новых устройств к ПК – процессора, видеокарты, жесткого диска и так далее. Выход – обновить БИОС.
На нашем сайте очень много статей, посвященных данной теме. Найти их довольно просто: достаточно ввести запрос вида «обновить биос» без кавычек в поисковую строку на главной странице.
Способ 5: Выявление сбойных устройств и драйверов
Если приведенные выше методы не помогли избавиться от проблемы, придется, вооружившись небольшой программкой, отыскать в «Диспетчере устройств» тот компонент, который вызывает сбои в системе. Инструмент, которым мы будем пользоваться, называется DPC Latency Checker. Он не требует инсталляции, нужно только загрузить и открыть на ПК один файл.
- Закрываем все программы, которые могут использовать мультимедийные устройства – плееры, браузеры, графические редакторы. Также необходимо завершить работу приложений, использующих интернет, например, Яндекс Диск, различные измерители трафика и прочее.
- Запускаем программу. Сканирование начнется автоматически, нам лишь нужно подождать несколько минут и оценить результат. DPC Latency Checker показывает задержки в обработке данных в микросекундах. Причиной для беспокойства должны стать скачки диаграммы красного цвета. Если весь график зеленый, стоит обратить внимание на желтые всплески.
- Останавливаем замеры кнопкой «Stop».
Особое внимание стоит уделить звуковым устройствам, модемам, принтерам и факсам, переносным девайсам и сетевым адаптерам. Также необходимо отключить USB устройства, причем сделать это можно физически, вынув их из разъема на передней или задней панели ПК. Видеокарту можно выключить в ветке «Видеоадаптеры».
Как уже было сказано выше, после отключения каждого девайса необходимо повторить измерение задержки обработки данных. Если при очередном включении DPC Latency Checker всплески пропали, значит, данное устройство работает с ошибками.
В первую очередь следует попытаться обновить драйвер. Сделать это можно прямо в «Диспетчере» (см. статью «Обновляем драйвера на Windows 10» по ссылке выше) или скачав нужный пакет с сайта производителя оборудования. Если обновление драйвера не помогает решить проблему, нужно задуматься о замене устройства или отказаться от его использования.
Временные решения
Существуют приемы, которые способны помочь избавится от симптомов (нагрузки на ЦП), но не устранят причин «болезни». Это отключение звуковых и визуальных эффектов в системе.
Звуковые эффекты
- Нажимаем ПКМ по значку динамика в области уведомлений и выбираем «Звуки».
- Идем на вкладку «Воспроизведение», кликаем ПКМ по «Устройству по умолчанию» (тому, через которое воспроизводится звук) и переходим к свойствам.
- Переходим к свойствам системы, кликнув правой кнопкой мыши по значку компьютера на рабочем столе.
- Далее идем в «Дополнительные параметры».
Если один из приемов сработал, следует задуматься о проблемах со звуковой или видеокартой или их драйверами.
Заключение
В ситуации, когда никакие средства не помогают устранить повышенную нагрузку на процессор, можно сделать несколько выводов. Первый – имеются неполадки в самом ЦП (поход в сервис и возможная замена). Второй – неисправны компоненты материнской платы (также поход в сервисный центр). Еще стоит обратить внимание на порты ввода-вывода информации – разъемы USB, SATA, PCI-E и другие, внешние и внутренние. Просто подключите устройство к другому гнезду, если таковое имеется, и проверьте задержки. В любом случае, все это уже говорит о серьезных аппаратных проблемах, и справиться с ними можно, только посетив специализированную мастерскую.
Мы рады, что смогли помочь Вам в решении проблемы.
Оптимизация Windows для игр в 2022 году
С популяризацией соревновательных игр геймеры со всего мира стали искать нетипичные способы превзойти оппонента. Потому как давно известно, что личностные качества и опыт — это лишь малая часть, влияющая на возможность победы. В этом материале вы узнаете, как оптимизировать Windows для получения идеальной плавности, чтобы стать быстрее всех в соревновательных играх!
Содержание
Внимание!
Гайд рассчитан на создание игровой системы с минимальным внесением изменений в работу ОС, так что вы можете без опасений что-то сломать, следовать всем рекомендациям.
Актуальность драйверов
Нельзя приступать к оптимизации, не будучи уверенным в актуальности драйверов нашего ПК. Ведь известно, что от свежести драйверов зависит не только правильность работы устройства, но и производительность всей системы в целом.
Установка и обновление
- и устанавливаем желаемую версию Snappy Driver Installer.
- Извлекаем файлы архива в любую папку.
- Запускаем файл SDI_x64_R2000.exe (64-bit) или SDI_R2201.exe (32-bit). (Желательно от имени администратора).
- Производим индексацию оборудования.
- Выполняем установку всего, что нашлось и перезагружаем ПК.
PS. Более подроно о установке драйвера и чем он является, вы всегда можете найти здесь.
После установки всех драйверов необходимо выполнить «правильную» найстройку устройств ввода и Windows. Что я имею в виду?
Геймерская настройка Windows
В современных версиях операционной системы Windows часто не учитывается геймерская направленность, потому как сама ОС изначально заточена для разных задач. Выполним по порядку базовые настройки ОС для геймера.
Мышь и клавиатура
Отключим мешающие алгоритмы поведения мыши для повышения точности её наводки и срабатывания в игре.
- Нажимаем Win+R и в появившемся окне вводим команду control.
- В старой панели управления заходим в выделенные разделы.
Снимаем галочки, что отвечают за акселерацию и лишние темы мыши, и повышаем скорость работы клавиатуры.
По идее, большинство гайдов на этом и заканчиваются. Но есть проблема. Даже выполнив все эти действия, мы не получим правильного перемещения нашего грызуна и желаемого отклика. Чтобы всё исправить, необходимо задействовать скрытые настройки в реестре.
Cкрытые настройки реестра
Вновь задействуем Win+R и вводим команду regedit. В появившемся окне поэтапно вносим изменения ниже. Правда если вам лень заниматься всей этой магией вручную, то вы всегда можете запустить этот файл (от администратора) в котором я уже прописал все настройки заранее.
Сглаживание мыши и отклик наведения
Эти параметры отключат повышенную точность указателя, когда скорость курсора увеличивается вслед за физическим увеличением скорости передвижения грызуна в руке. Зачем это нужно? При стандартных настройках мышка сама доводится до нужного объекта, если вы немного ошиблись или не довели. Для шутеров подобное поведение грызуна приносит большие проблемы с прицеливанием. Дополнительно советую также изменить параметр «MouseHoverTime»=«0» — это помогает убрать задержку при наводке на объекты в системе.
В Windows 10 существует старый баг, когда разница между физическим перемещением мыши и перемещением курсора зависит от масштабирования экрана. Чтобы исправить ситуацию, принудительно изменим параметры SmoothMouseXCurve и SmoothMouseYCurve, которые отвечают за ускорение мыши по горизонтали и вертикали в режиме масштабирования 1 к 1.
Скорость курсора
Этот параметр отвечает за скорость перемещения курсора, его не рекомендуется изменять, ибо от него зависят многие параметры для расчёта движения мыши. Он всегда должен быть равен 10.
Приоритет исполнения и задержка ввода
Параметры MouseDataQueueSize и KeyboardDataQueueSize отвечают за количество информации, которая может храниться в буфере драйвера мыши и клавиатуры. Чем меньше значение, тем быстрее новая информация будет обрабатываться. Принцип работы похож на очередь кадров в видеокарте, когда мы принудительно убираем фоновую подготовку очереди кадров, чтобы сразу получать настоящий. В нашем случае оптимальным значением будет 20.
Выставим обработку драйверов клавиатуры и мыши в режиме реального времени.
Вновь отключим дополнительную задержку при нажатии клавиш мыши и клавиатуры, а также уберём залипание при двойном нажатии Shift.
Дополнительная часть самого муторного гайда подошла к концу. Переходим к следующему пункту настроек.
Перенос исполнения ввода
Вторым важным изменением, которое следует применить для мыши и клавиатуры — это выполнить перенос исполнения задач ввода с первого ядра CPU и активировать серверный режим опроса устройств (MSI). Зачем это нужно? Всё дело в задачах Windows, что обрабатываются первым ядром с устаревшим режимом прерывания. Такой режим работы устройства создаёт очередь исполнения и может вызывать задержки.
Посмотреть что крутится на первом ядре, можно с помощью Latency Moon. Выполним перенос.
- и извлекаем файлы в любую папку.
- Запускаем файл MSI_util_v3.exe. (Желательно от имени администратора).
- Активируем режим MSI для, где есть надпись LineBased, Msi, MsX.
- Выставляем приоритет High для мыши.
- Применяем изменения (Apply) и перезагружаем ПК.
Таким нехитрым образом, мы задействовали серверный режим опроса устройств и немного прибавили плавности. Перейдём к переносу задачи с первого ядра.
- и извлекаем файлы.
- Запускаем файл intPolicy_x64.exe (Желательно от имени администратора).
- Находим в списке нужные устройства и кликаем пару раз. Если вышла ошибка, то это устройство поддерживает перенос.
- Переходим к редактированию через Set Mask и выделяем нужное ядро, применяем.
- Перезагружаем ПК.
Поздравляю! Если скука вас ещё не съела, то вы весьма сильны желанием стать быстрее всех. Шутка. Мы почти завершили редактирование параметров, влияющих на задержку ввода. Перейдём к DPC Latency.
DPC Latency
Чтобы не нагружать вас технической информацией, вам лишь следует знать, что чем ниже показатели DPC Latency, то тем выше плавность системы. Сравнить её можно с резким увеличением герцовки монитора. Фокус и состоит в том, что герцовка не увеличивается, а плавность прибавляется. Посмотреть свою задержку можно с помощью Latency Moon.
Лишнии устройства и задержка
Ранее я уже писал, какая Windows не геймерская ОС, которая так и ждёт, чтобы вставить очередную палку в колёса бедному геймеру. Система почему-то считает, что отключение устройства от питания или его затормаживание во время игры — это совершенно нормально. Отключим такое странное поведение и удалим лишние устройства.
- Заходим в диспетчер устройств.
- Вид, показать скрытые устройства.
- Удаляем все серые устройства из списка.
- Для всех остальных через правый клик убираем галочки в разделе управления.
- Перезагружаемся.
После перезагрузки вы сразу почувствуете увеличение плавности, так как система уже не будет заниматься управлением поведения наших устройств.
Переходя к теме звука, сто́ит отметить его весомую значимость в плане влияния на задержки ввода, так как всё, что выше 44100 Гц, начинает почему-то несоизмеримо грузить систему, если у вас нет отдельной звуковой карты. Я не знаю, связано ли это с усложнением синусоиды сигнала, но на технических форумах часто ссылаются на саму схему реализации звука в Windows. Ладно, всё это рассуждения, а нам пора переходить к исправлению проблемы.
- Переходим в старой панели управления во вкладку звук.
- Отключаем все неиспользуемые устройства, кроме вывода звука и микрофона.
- Через правый клик по активному устройству изменяем качество выводимого звука до 44100 Гц и аналогично у микрофона.
- Во вкладке звуки выставляем профиль без звука для отключения системных звуков Windows.
После данных измеений вы вновь должны ощутить прибавку в плавности.
Электропитание
Как я уже писал ранее, о Создатель, а это уже третий раз, что Windows ни разу не геймерская ОС и не заточена под нужды геймера. В настройках электропитания Windows содержатся механизмы, которые могут влиять на плавность и стабильность во время игровой сессии. К значимым механизмам, мешающих геймеру, можно отнести парковку ядер, настройки электросбережения, а также небольшие параметры, отвечающие за различные таймеры/функции, которые также влияют на DPC Latency.
Прежде чем приступать к исправлению, необходимо отредактировать параметры реестра для получения возможности изменения скрытых настроек. В этом нам поможет бесплатная утилита Power Settings Explorer.
- и извлекаем файлы.
- Запускаем файл PowerSettingsExplorer.exe (Желательно от имени администратора).
- Находим в списке USB3 Link Power Management, разрешить состояния снижения питания
и NVIDIA Display Power Settings Technology (если у вас карта Nvidia). - Снимаем галочки и переходим к редактированию схемы электропитания.
Переходя к схеме редактирования электропитания, желательно удалить все схемы, кроме «Высокая производительность».
Вводим в CMD команды:
Параметры электропитания:
- Жёсткий Диск — Отключать жёсткий диск через — Состояния (мин): 0 мин.
- Internet Explorer — Частота таймера JavaScript — Значение: Максимальная производительность.
- Параметры фона рабочего стола — Слайд-шоу — Значение: Приостановлено.
- Параметры адаптера беспроводной сети — Режим энергосбережения — Значение: Максимальная производительность.
- Сон — Сон после — Значение: Никогда.
- Cон — Разрешить таймеры пробуждения — Значение: Никогда.
- Параметры USB — Параметры временного отключения USB-порта — Значение: Запрещено.
- Параметры USB — USB 3 Link Power Mangement — Значение: Off.
- PCI Express — Управление питанием состояния связи — Значение: Откл.
- Управление питанием процессора — Разрешить состояние снижения питания — Значение: Выкл.
- Управление питанием процессора — Минимальное состояние процессора — Настройка: 100%.
- Управление питанием процессора — Политика охлаждения системы — Значение: Активный.
- Управление питанием процессора — Максимальное состояние процессора — Настройка: 100%.
- Экран — Отключить экран через — Значение: Никогда.
- Экран — Время ожидания до отключения экрана блокировки — Значение: 0 Мин.
Некоторые параметры могут отсутствовать или дополняться в зависимости от оборудования. Всё, что нам теперь осталось сделать со схемой электропитания — это отключить парковку ядер.
Парковка ядер
В Windows со времён Windows Vista, если я не ошибаюсь, существует механизм парковки ядер, который был призван обеспечить продление жизни ноутбуков путём отключения или снижения производительности ядер процессора. В игровых сессиях работа этого алгоритма может привести к падению FPS. Чтобы избежать этой проблемы, необходимо вновь лесть в реестр, но мы воспользуемся бесплатной утилитой Unpark-CPU.
- и извлекаем файлы.
- Запускаем файл UnparkCpu.exe (Желательно от имени администратора).
- Передвинем ползунок в правую сторону.
- Нажимаем Unpakr All и применить (Apply).
- Перезагружаем ПК.
С доведением до ума настроек электропитания мы закончили. Можно переходить к отключению заплаток процессора.
Твик приоритета прерывания
Это небольшой твик для установки повышенного приоритета прерывания. Вновь используем regedit или готовый файл.
Meltdown/Spectre/Zombieload
В своё время много шума наделало обнаружение уязвимостей для процессоров Intel и AMD, но ещё больший шум наделали патчи, которые «исправляли» дыры с существенной потерей производительности CPU. Если вы не Джеймс Бонд и не читаете этот материал с рабочего ПК, то смело отключайте патчи, ибо кто им дал право резать наш FPS.
Опять вносим наши изменения в параметры реестра через regedit или скачиваем и применяем заранее готовый файл. После перезагрузки мы должны получить прибавку в работе процессора от 5 до 30% в зависимости от поколения CPU. Перейдём к пингу.
Windows очень любит надёжность, поэтому она плевать хотела на то, что вы геймер, ибо её алгоритмы задействованы на подтверждение получения и отправки пакетов с одной лишь ей ве́домой логикой задержки. Заставим систему сделать упор на скорость приёма и отправку пакетов.
- Переходим в старой панели управления во вкладку центр управления.
- Изменить параметры адаптера.
- Через правый клик по активному устройству нажимаем свойства.
- Убираем все галочки кроме (TCP/IPv4).
- По кнопке настроить, во вкладке дополнительно, отключаем электросбережения.
- Применяем.
Это основные параметры, которые отвечают за торможение интернета. Я напоминаю, что в зависимости от производителя и новизы сетевого адаптера, некоторых из них может и не быть. Перейдём к завершающему шагу настроек интернета.
Windows также через реестр регулирует работу интернета вне зависимости от настроек вашей сетевой карты. Таких параметров пара сотен, и изменять их вручную — это ад. Воспользуемся бесплатной утилитой TCP Optimizer 4.
- и запускаем TCPOptimizer.exe (Желательно от имени администратора).
- Выставляем в интерфейсе программы Optimal или как на скриншоте.
- Применяем.
- Перезагружаем ПК.
Мы выполнили изменение множества настроек, отвечающих за отклик и время жизни пакета, не говоря уже об изменении алгоритма передачи, и добились снижения итогового пинга. Настройку интернета для геймера можно официально объявить закрытой. Перейдём к последним пунктам.
Системные таймеры и Hpet
Разрешение таймера по умолчанию в Windows составляет 15,6 мс — это является весьма высоким значением, которое приводит к лишнему энергопотреблению и траты впустую большого количества вычислительных мощностей — замедляя работу вашего компьютера! Хотя некоторые мультимедийные программы и игры сами могут фиксировать значение таймера для увеличения производительности, но они никогда не выставляют его меньше 1 мс. Чтобы исправить эту проблему и принудительно назначить время таймера для повышения производительности и отклика, а также чтобы не возиться с лишним ПО, выполним установку фоновой службы, которая и станет отвечать за наш таймер.
- и извлекаем файлы на диск.
- Переходим в папку и запускаем файл Installer.bat (Желательно от имени администратора).
- Выбираем в списке желаемый таймер, я советую 2.
- Дожидаемся окончания установки. (После установки не удалять!).
- Можно закрыть ПО.
Значение нынешнего таймера после установки можно проверить нажав 8 в интерфейсе ПО.
С постоянным таймером закончили. В Windows существует ещё множество таймеров, отвечающих за производительность. Одним из главных можно назвать Hpet. Конечно, в интернете бытует мнение, что его лучше не трогать, но главное — не отключать его в BIOS, а в самой Windows это даже нужно делать для избавления от стартеров и для увеличения FPS.
Вводим в CMD команды:
Отключаем в диспетчере устройств таймеры.
Иногда он может быть подписан как High Precision Even Timer или Высокоточный таймер событий. Аналогично советую отключить Intel Management, ибо он также сильно тормозит систему. Перезагружаем ПК и проверяем драйверы через Snappy Driver Installer. Там должны будут появиться наши таймеры. Обновляем таймеры и вновь отключаем их в диспетчере устройств.
Фанфары, гром и молния! Поздравляю с завершением сокращённого гайда по оптимизации Windows без поломки. Вы можете гордиться собой! Вы были упорны и стали быстрее всех!
Заключение
Кто-то назовёт автора сумасшедшим и не простит отсутствия итогов всего ада выше, но я могу поставить честь и совесть, а также 14-летний опыт оптимизации Windows-систем, что выполнив все эти действия, вы станете быстрее всех! Конечно, можно было бы применить ещё некоторые твики и ПО для очистки и удаления телеметрии, но тогда бы гайд разросся ещё больше, и был бы шанс поломать систему. В общем, пользуйтесь и будьте быстрее всех.
Системные прерывания грузят процессор
Если вы столкнулись с тем, что системные прерывания грузят процессор в диспетчере задач Windows 10, 8.1 или Windows 7, в этой инструкции подробно о том, как выявить причину этого и исправить проблему. Полностью убрать системные прерывания из диспетчера задач нельзя, но вернуть нагрузку в норму (десятые доли процента) вполне возможно, если выяснить, что вызывает нагрузку.
Системные прерывания не являются процессом Windows, хотя и отображаются в категории «Процессы Windows». Это, в общих чертах, — событие, вызывающее прекращение выполнения текущих «задач» процессором для выполнения «более важной» операции. Существуют различные типы прерываний, но чаще всего высокую нагрузку вызывают аппаратные прерывания IRQ (от оборудования компьютера) или исключения, обычно вызываемые ошибками работы оборудования.
Что делать, если системные прерывания грузят процессор
Чаще всего, когда в диспетчере задач появляется неестественно высокая нагрузка на процессор, причиной является что-то из:
- Неправильно работающее оборудование компьютера
- Неправильная работа драйверов устройств
Почти всегда причины сводятся именно к этим пунктам, хотя взаимосвязь проблемы с устройствами компьютера или драйверами не всегда очевидна.
Прежде чем приступать к поиску конкретной причины, рекомендую, если это возможно, вспомнить, что выполнялось в Windows непосредственно перед появлением проблемы:
- Например, если обновлялись драйверы, можно попробовать откатить их.
- Если было установлено какое-то новое оборудование — убедиться в правильности подключения и работоспособности устройства.
- Также, если ещё вчера проблемы не было, а с аппаратными изменениями связать проблему не получается, можно попробовать использовать точки восстановления Windows.
Поиск драйверов, вызывающих нагрузку от «Системные прерывания»
Как уже было отмечено, чаще всего дело в драйверах или устройствах. Можно попробовать обнаружить, какое из устройств вызывает проблему. Например, в этом может помочь бесплатная для бесплатного использования программа LatencyMon.
- Скачайте и установите LatencyMon с официального сайта разработчика https://www.resplendence.com/downloads и запустите программу.
- В меню программы нажмите кнопку «Play», перейдите на вкладку «Drivers» и отсортируйте список по колонке «DPC count».
- Обратите внимание на то, какой драйвер имеет наибольшие значения DPC Count, если это драйвер какого-то внутреннего или внешнего устройства, с большой вероятностью, причина именно в работе этого драйвера или самого устройства (на скриншоте — вид на «здоровой» системе, т.е. более высокие количества DPC для приведенных на скриншоте модулей — норма).
- В диспетчере устройств попробуйте отключить устройства, драйверы которых вызывают наибольшую нагрузку согласно LatencyMon, а затем проверить, была ли решена проблема. Важно: не отключайте системные устройства, а также находящиеся в разделах «Процессоры» и «Компьютер». Также не стоит отключать видеоадаптер и устройства ввода.
- Если отключение устройства вернуло нагрузку, вызываемую системными прерываниями в норму, удостоверьтесь в работоспособности устройства, попробуйте обновить или откатить драйвер, в идеале — с официального сайта производителя оборудования.
Обычно причина кроется в драйверах сетевых и Wi-Fi адаптеров, звуковых карт, других карт обработки видео или аудио-сигнала.
Проблемы с работой USB устройств и контроллеров
Также частой причиной высокой нагрузки на процессор со стороны системных прерываний является неправильная работа или неисправность внешних устройств, подключенных по USB, самих разъемов или повреждение кабелей. В этом случае в LatencyMon вы навряд ли увидите что-то необычное.
При подозрениях на то, что причина в этом, можно было бы рекомендовать поочередно отключать все USB-контроллеры в диспетчере устройств, пока в диспетчере задач не упадет нагрузка, но, если вы начинающий пользователь, есть вероятность, что вы столкнетесь с тем, что у вас перестанут работать клавиатура и мышь, а что делать дальше будет не ясно.
Поэтому могу рекомендовать более простой метод: откройте диспетчер задач, так чтобы было видно «Системные прерывания» и поочередно отключайте все без исключения USB устройства (включая клавиатуру, мышь, принтеры): если вы увидите, что при отключении очередного устройства нагрузка упала, то ищите проблему в этом устройстве, его подключении или том USB-разъеме, который для него использовался.
Другие причины высокой нагрузки от системных прерываний в Windows 10, 8.1 и Windows 7
В завершение некоторые менее часто встречающиеся причины, вызывающие описываемую проблему:
- Включенный быстрый запуск Windows 10 или 8.1 в сочетании с отсутствием оригинальных драйверов управления электропитанием и чипсета. Попробуйте отключить быстрый запуск.
- Неисправный или не оригинальный адаптер питания ноутбука — если при его отключении системные прерывания перестают грузить процессор, дело скорее всего в этом. Однако, иногда, виноват не адаптер, а батарея.
- Звуковые эффекты. Попробуйте отключить их: правый клик по значку динамика в области уведомлений — звуки — вкладка «Воспроизведение» (или «Устройств воспроизведения»). Выбираем используемое по умолчанию устройства и нажимаем «Свойства». Если в свойствах присутствуют вкладки «Эффекты», «Пространственный звук» и похожие, отключаем их.
- Неправильная работа оперативной памяти — выполните проверку оперативной памяти на ошибки.
- Проблемы с работой жесткого диска (основной признак — компьютер то и дело зависает при доступе к папкам и файлам, диск издает необычные звуки) — выполните проверку жесткого диска на ошибки.
- Редко — наличие нескольких антивирусов на компьютере или специфических вирусов, работающих напрямую с оборудованием.
Есть еще один способ попробовать выяснить, какое оборудование виновато (но что-то показывает редко):
- Нажмите клавиши Win+R на клавиатуре и введите perfmon /report затем нажмите Enter.
- Подождите, пока будет подготовлен отчет.
В отчете в разделе Производительность — Обзор ресурсов вы можете увидеть отдельные компоненты, цвет которых будет красным. Присмотритесь к ним, возможно, стоит выполнить проверку работоспособности этого компонента.
Прерывания DPC или диспетчеризации
Когда дальнейшее выполнение потока невозможно, например из-за его завершения или перехода в ждущее состояние, ядро напрямую обращается к диспетчеру, чтобы вызвать немедленное переключение контекста. Однако иногда ядро обнаруживает, что перераспределение процессорного времени (rescheduling) должно произойти при выполнении глубоко вложенных уровней кода. B этой ситуации ядро запрашивает диспетчеризацию, но саму операцию откладывает до выполнения текущих действий. Такую задержку удобно организовать с помощью программного прерывания DPC (deferred procedure call).
При необходимости синхронизации доступа к разделяемым структурам ядра последнее всегда повышает IRQL процессора до уровня «DPC/dispatch» или выше. При этом дополнительные программные прерывания и диспетчеризация потоков запрещаются. Обнаружив необходимость в диспетчеризации, ядро генерирует прерывание уровня «DPC/dispatch». Ho поскольку IRQL уже находится на этом уровне или выше, процессор откладывает обработку этого прерывания. Когда ядро завершает свои операции, оно определяет, что должно последовать снижение IRQL ниже уровня "DPC/dispatch", и проверяет, не ожидают ли выполнения отложенные прерывания диспетчеризации. Если да, IRQL понижается до уровня «DPC/dispatch», и эти отложенные прерывания обрабатываются. Активизация диспетчера потоков через программное прерывание — способ отложить диспетчеризацию до подходящего момента. Однако Windows использует программные прерывания для отложенного выполнения и других операций.
При этом IRQL ядро обрабатывает не только диспетчеризацию потоков, но и DPC DPC — это функция, выполняющая системную задачу, менее критичную по времени в сравнении с текущей. Эти функции называются отложенными (deferred), так как не требуют немедленного выполнения.
DPC позволяют операционной системе генерировать прерывания и выполнять системные функции в режиме ядра. Ядро использует DPC для обработки прерываний по таймеру (и освобождения потоков, ждущих на таймерах), а также для перераспределения процессорного времени по истечении кванта времени, отведенного текущему потоку. Драйверы устройств используют DPC для выполнения запросов ввода-вывода. Для своевременного обслуживания аппаратных прерываний Windows — во взаимодействии с драйверами устройств — пытается удерживать текущий IRQL ниже IRQL устройств. Один из способов достижения этой цели заключается в следующем. ISR должна выполнять минимум действий по обслуживанию своего устройства, сохранять переменные данные о состоянии прерывания и откладывать передачу данных или выполнение других не столь критичных по времени операций, как DPC, до снижения IRQL к уровню «DPC/dispatch» (подробнее о DPC и системе ввода-вывода см. главу 9).
DPC представляется DPC — объектом, управляющим объектом ядра, невидимым программам пользовательского режима, но видимым драйверам и системному коду. Наиболее важной частью информации DPC — объекта является адрес системной функции, которую ядро должно вызвать для обработки прерывания DPC DPC — процедуры, ожидающие выполнения, хранятся в управляемых ядром очередях (по одной на каждый процессор). Эти очереди называются очередями DPC Запрашивая DPC, системный код вызывает ядро для инициализации DPC — объекта и помещает его в очередь DPC
По умолчанию ядро помещает DPC — объекты в конец очереди DPC процессора, на котором был запрошен DPC (как правило, это процессор, на котором выполняется ISR). Однако драйвер устройства может изменить это, указав приоритет DPC (низкий, средний или высокий; по умолчанию — средний) или направив DPC конкретному процессору. DPC, направленный конкретному процессору, называется целевым DPC (targeted DPC). Если у DPC низкий или средний приоритет, ядро помещает DPC — объект в конец очереди, а если у DPC высокий приоритет, то — в начало.
Когда IRQL процессора вот-вот понизится с уровня «DPC/dispatch» или более высокого до уровня «APC» или «passive», ядро переходит к обработке всех DPC Windows оставляет IRQL на уровне «DPC/dispatch» и извлекает все DPC — объекты из очереди данного процессора (т.е. ядро опустошает очередь), поочередно вызывая каждую DPC — функцию. Ядро разрешает уменьшить IRQL ниже уровня «DPC/dispatch» для продолжения выполнения обычных потоков только после опустошения очереди. Схема обработки DPC показана на рис. 3–7.
Приоритеты DPC могут влиять на поведение системы и иным способом. Обычно ядро начинает опустошение очереди DPC с прерывания уровня «DPC/dispatch». Такое прерывание генерируется ядром, только если DPC направлен на процессор, на котором выполняется ISR, и DPC имеет средний или высокий приоритет. Если у DPC низкий приоритет, ядро генерирует прерывание, только если число незавершенных запросов DPC превышает пороговое значение или если число DPC, запрошенных на процессоре за установленный период, невелико. Если DPC направлен другому процессору (не тому, на котором выполняется ISR) и его приоритет высокий, ядро немедленно посылает ему диспетчерское IPI, сигнализируя целевому процессору о необходимости опустошения его очереди DPC Если приоритет DPC средний или низкий, для появления прерывания «DPC/dispatch» число DPC в очереди целевого процессора должно превышать пороговое значение. Системный поток простоя также опустошает очередь DPC процессора, на котором он выполняется. Хотя уровни приоритета и направление DPC являются довольно гибкими средствами, у драйверов устройств редко возникает необходимость в изменении заданного по умолчанию поведения своих DPC-объектов. B таблице 3–1 даются сведения о ситуациях, в которых начинается опустошение очереди DPC
Поскольку потоки пользовательского режима выполняются при низком IRQL, вероятность того, что DPC прервет выполнение обычного пользовательского потока, довольно велика. DPC — процедуры выполняются независимо от того, какой поток работает в настоящий момент. Это означает, что выполняемая DPC — процедура не в состоянии предугадать текущий размер спроецированного адресного пространства процесса. DPC — процедуры могут вызывать функции ядра, но не могут обращаться к системным сервисам, генерировать ошибки страницы, создавать или ждать объекты диспетчера. Однако они способны получать доступ к не подкачиваемым областям системной памяти, поскольку системное адресное пространство всегда спроецировано независимо от того, что представляет собой текущий процесс.
DPC используются не только драйверами, но и ядром. Ядро чаще всего применяет DPC для обработки ситуации, когда истекает выделенный квант времени. При каждом такте системного таймера генерируется прерывание с IRQL — уровнем «clock». Обработчик прерываний таймера (выполняемый при IRQL, равном «clock») обновляет системное время и уменьшает значение счетчика, отслеживающего время выполнения текущего потока. Когда значение счетчика обнуляется, квант времени, отведенный потоку, заканчивается, и ядру может понадобиться перераспределить процессорное время — эта задача имеет более низкий приоритет и должна выполняться при IRQL, равном «DPC/dispatch». Обработчик прерываний таймера ставит DPC в очередь, чтобы инициировать диспетчеризацию потоков, после чего завершает свою работу и понижает IRQL процессора. Поскольку приоритет прерываний DPC ниже, чем аппаратных, перед генерацией прерывания DPC сначала обрабатываются все аппаратные прерывания, возникающие до завершения обработки прерывания таймера.
Прерывания APC
APC (asynchronous procedure call) позволяет выполнять пользовательские программы и системный код в контексте конкретного пользовательского потока (а значит, и в адресном пространстве конкретного процесса). Поскольку для выполнения в контексте конкретного потока APC ставятся в очередь и выполняются при IRQL ниже «DPC/dispatch», на их работу не налагаются ограничения, свойственные DPC АРС — процедура может обращаться к ресурсам (объектам), ждать освобождения описателей объектов, генерировать ошибки страниц и вызывать системные сервисы.
APC описывается управляющим объектом ядра — ЛРС — объектом. APC, ждущие выполнения, находятся в очереди ЛРС (APC queue), управляемой ядром. Очереди APC — в отличие от общесистемной очереди DPC — специфичны для конкретного потока, так как у каждого потока своя очередь APC При запросе на постановку APC в очередь ядро помещает его (APC) в очередь того потока, который будет выполнять АРС — процедуру. Далее ядро генерирует программное прерывание с уровнем APC, и поток, когда он в конечном счете начинает выполняться, обрабатывает APC
APC бывают двух видов: режима ядра и пользовательского режима. APC режима ядра для выполнения в контексте целевого потока не нужно «разрешение» со стороны этого потока, тогда как для APC пользовательского режима это обязательно. APC режима ядра прерывает поток и выполняет процедуру без вмешательства или согласия потока. APC режима ядра тоже бывают двух типов: обычные (normal) и специальные (special). Поток может отключить все APC режима ядра, повысив IRQL до уровня APC_LEVEL или вызвав KeEnterGuardedRegion, которая впервые появилась в Windows Server 2003.KeEnterGuardedRegion отключает доставку APC, устанавливая поле SpecialApcDisable в структуре KTHREAD вызвавшего потока (об этой структуре см. главу 6). Поток также может отключить только обычные APC режима ядра вызовом KeEnterCriticalRegion, которая устанавливает поле KernelApcDisable в структуре KTHREAD потока.
Исполнительная система использует APC режима ядра для тех задач операционной системы, которые нужно выполнить в адресном пространстве (контексте) конкретного потока. Так, через специальные APC режима ядра она может указать потоку прекратить выполнение системного сервиса, допускающего прерывание, или записать результаты операции асинхронного ввода-вывода в адресное пространство этого потока. Подсистемы окружения используют такие APC, чтобы приостановить поток или завершить себя, а также чтобы получить или установить контекст пользовательского потока. Подсистема POSIX эмулирует через APC режима ядра передачу POSIX — сигналов процессам POSIX.
Драйверы устройств также применяют APC режима ядра. Например, если инициирована операция ввода-вывода и поток переходит в состояние ожидания, к процессору может быть подключен другой поток из другого процесса. По завершении передачи данных устройством система ввода-вывода должна как-то вернуться в контекст потока, инициировавшего эту операцию ввода-вывода, чтобы он мог скопировать ее результаты в буфер в адресном пространстве своего процесса. Система ввода-вывода использует для выполнения подобных действий специальные APC режима ядра (применение APC в системе ввода-вывода подробно рассматривается в главе 9).
Некоторые Windows — функции вроде ReadFileEx, WriteFileEx и QueueUser-APC вызывают APC пользовательского режима. Так, функции ReadFileEx и WriteFileEx позволяют вызывающей программе указать процедуру завершения ввода-вывода (completion procedure), которая будет вызвана по окончании операции ввода-вывода. Процедура завершения ввода-вывода реализуется помещением APC в очередь потока, выдавшего запрос на ввод-вывод. Однако обратный вызов процедуры завершения не обязательно происходит в момент постановки APC в очередь, поскольку APC пользовательского режима передаются потоку, только если он находится в состоянии тревожного ожидания (alertable wait state). Поток может перейти в такое состояние, вызвав одну из Windows — функций: либоWaitForMultipleObjectsEx, либо Sleep-Ex. B обоих случаях, как только в очереди появится APC пользовательского режима, ядро прервет поток, передаст управление АРС — процедуре и возобновит его выполнение лишь после завершения АРС — процедуры. B отличие от APC режима ядра, которые выполняются на уровне «APC», APC пользовательского режима выполняются на уровне «passive».
Появление APC может переупорядочить очереди ожидания — списки, определяющие, какие потоки ждут, в каком порядке и на каких объектах (см. раздел по синхронизации далее в этой главе). Если в момент появления APC поток находится в состоянии ожидания, то после обработки АРС — процедуры поток возвращается в состояние ожидания, но перемещается в конец списка потоков, ждущих те же объекты.