Имеется сабж на ноуте, одно ядро 100% нагружено интерраптами. xperf показывет, что беда в ACPI.sys!ACPIInterruptServiceRoutine . Что дальше можно сделать, как установить причину и найти виноватого?
Какое-то устройство взбесилось . Надо смотреть, какие устройства находятся на этом прерывании и пробовать отключить. Ну а дальше уже с устройством разбираться.
Хороший вопрос. Я почему-то думал, что в структуре KINTERRUPT есть номер прерывания, на котором висит KINTERRUPT. Сейчас посмотрел, это не так. По крайней мере у меня это вглядит так: 0: kd> !idt -a Dumping IDT: ... b1: 867359e4 ACPI!ACPIInterruptServiceRoutine (KINTERRUPT 867359a8) ... 0: kd> dt _KINTERRUPT 867359a8 nt!_KINTERRUPT +0x000 Type : 22 +0x002 Size : 484 +0x004 InterruptListEntry : _LIST_ENTRY [ 0x867359ac - 0x867359ac ] +0x00c ServiceRoutine : 0xf74c931e unsigned char ACPI!ACPIInterruptServiceRoutine+0 +0x010 ServiceContext : 0x867ddd98 +0x014 SpinLock : 0 +0x018 TickCount : 0xffffffff +0x01c ActualLock : 0x86735c0c -> 0 +0x020 DispatchAddress : 0x80544640 void nt!KiInterruptDispatch+0 +0x024 Vector : 0x1b1 +0x028 Irql : 0xa '' +0x029 SynchronizeIrql : 0xa '' +0x02a FloatingSave : 0 '' +0x02b Connected : 0x1 '' +0x02c Number : 0 '' +0x02d ShareVector : 0x3 '' +0x030 Mode : 0 ( LevelSensitive ) +0x034 ServiceCount : 0 +0x038 DispatchCount : 0xffffffff +0x03c DispatchCode : [106] 0x56535554 Разве что может по Irql как-то вычислить...
Тут другой ещё вопрос интересный - чтобы что-то ковырять в WinDBG, надо как-то "снимок" сделать. Т.е. в livekd я точно ни фига не успею схватить - у меня 500000 интерраптов в секунду. Сделал manually initiated crash, но как-то анализировать его трудно, !irpfind жалуется, что не вся память на месте (дамп памяти ядра), или там на другой поток переключиться и кол стэк посмотреть не могу... Беда прям. А жить-то мешает =\
А если проделать то, что проделал я -- посмотреть IDT и KINTERRUPT, который висит на нужном прерывании, затем глянуть вектор и найти устройство в Device manager'е по вектору, и попробовать вытащить устройство по описанию в Device manager'е? Я просто не знаю, насколько LiveKD позволяет это сделать. Хотя данные, вроде, статичные, вытащить можно.
Honorary_BoT Так а что насчет '!idt -a' и 'dt KINTERRUPT addr'? Эти данные почти не меняются во время жизни системы.
Honorary_BoT Очевидно ведь что питание инвалидное ... 1) Не все дрова поствил для ноута, ну или лишнии поставил 2) Включить в розетку и посмотреть что будет 3) Написать еще какие то данные ... Как то так.
1) Поставил все, что было, потом по очереди удалил почти все - хрен 2) Он и так, и так используется 3) Какие? Напишу с удовольствием, кроме паспортных!
Ну какое то устройво типо usb (монитор, модем, шины, сетевые карты, видеокарта, диски, флоппи) а вот теперь методом втыка , отключай что модешь и смотри перфоманс...
Нет, борода, после спящего режима снова штормит.. Я тут приобрел USB кабель, можно замутить отладку с 2х компов. Что смотреть? Куда копать?
Попробуй что то вроде bp ACPI!ACPIInterruptServiceRoutine "kb;g;" Будет лог, хотя бы стек будет видно , откуда так сказать шторм