Как понять, чем столь активно занимается acpi.sys?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 22.02.18 05:23
Оценка:
На днях внезапно заметил, что системный процесс (который ID 4) стал отъедать 11-12% независимо от реальной загрузки. В Process Explorer видно, что почти потребление создает поток ACPIWorkerThread из acpi.sys.

В сети на эту ситуацию полно жалоб и обсуждений, в том числе и на форумах MS, но во всех без исключения царит какое-то унылое соплежуйство в стиле "перезагрузитесь", "переустановите драйверы", "отключите энергосбережение" и т.п. За несколько дней не удалось найти ни одного мало-мальски толкового обсуждения, где предлагался бы вменяемый способ выяснения, что именно делает драйвер ACPI, с целью нахождения возможной причины повышенной загрузки.

Стеки системных потоков в Process Explorer просмотреть невозможно (Unable to access thread) даже под Local System. Process Hacker дает такой стек:

  Стек ACPIWorkerThread
0, ntoskrnl.exe!KiDeliverApc+0x1e3
1, ntoskrnl.exe!KiApcInterrupt+0xd7
2, hal.dll!HalpPCIConfig+0x167
3, hal.dll!HalpReadPCIConfig+0x5e
4, hal.dll!HalpGetPCIData+0x8e
5, hal.dll!HalGetBusDataByOffset+0x86
6, ACPI.sys!PciConfigSpaceHandlerWorker+0x3f2
7, ACPI.sys!GetPciAddressWorker+0x415
8, ACPI.sys!ACPIGetWorkerForInteger+0x115
9, ACPI.sys!AsyncCallBack+0x7a
10, ACPI.sys!RunContext+0x13b
11, ACPI.sys!StartTimeSlicePassive+0x8a
12, ACPI.sys!ACPIWorkerThread+0xd8
13, ntoskrnl.exe!PspSystemThreadStartup+0x5a
14, ntoskrnl.exe!KiStartSystemThread+0x16

Записал несколько секунд в WPR, открыл в WPA — там отчетливо видна высокая частота ISR/DPC в acpi.sys, с преобладанием вызовов ACPIInterruptDispatchEventDpc, ACPIInterruptServiceRoutine и ACPIInterruptServiceRoutineDPC. Стеков для ISR/DPC WPA почему-то не показывает.

Из того, что вызывается из ACPIWorkerThread, наибольшая длительность выполнения приходится на функцию StartTimeSlicePassive и вызываемую оттуда RunContext. Гугление по этим названиям ничего не дает. Стек такой:



Дальше моя фантазия не работает — с чем вся эта совокупность может быть связана? Кто может генерировать столь частые прерывания, и что драйвер может так долго делать для их обработки?

Вообще, этим проблемам с acpi.sys скоро уже двадцать лет, однако, судя по обсуждениям, MS даже в десятке не сподобилась сделать вменяемой диагностики — до сих пор так предлагается "протереть фары, попинать колеса". После чтения всего этого бреда очень хочется проснуться.

Переключал профили питания, отключал ноутбук от сети, переводя на батарейное питание. Запрещал все устройства (кроме критических), которые можно запретить (в том числе Microsoft ACPI-Compliant Control Method Battery, все сетеые устройства, включая виртуальные, USB 3.0 Controller, System High-Performance Event Timer, System Timer и т.п.). Безрезультатно.

Ноутбук MSI GT72S 6QE, система Win7 SP1 (6.1.7601) x64 En. Прошивки BIOS/EC стоят последние, что есть у производителя.

Что еще можно попробовать?
acpi system cpu acpiworkerthread starttimeslicepassive runcontext wpr wpa
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.