Interrupt storm

Тема в разделе "WASM.RESEARCH", создана пользователем Honorary_BoT, 26 ноя 2011.

  1. Honorary_BoT

    Honorary_BoT New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2008
    Сообщения:
    87
    Имеется сабж на ноуте, одно ядро 100% нагружено интерраптами. xperf показывет, что беда в ACPI.sys!ACPIInterruptServiceRoutine . Что дальше можно сделать, как установить причину и найти виноватого?
     
  2. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Какое-то устройство взбесилось :). Надо смотреть, какие устройства находятся на этом прерывании и пробовать отключить. Ну а дальше уже с устройством разбираться.
     
  3. Honorary_BoT

    Honorary_BoT New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2008
    Сообщения:
    87
    Ну я догадывался ))) Только на этом - на каком? Как выудить номер прерывания хотя бы?
     
  4. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Хороший вопрос. Я почему-то думал, что в структуре 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 как-то вычислить...
     
  5. Honorary_BoT

    Honorary_BoT New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2008
    Сообщения:
    87
    Тут другой ещё вопрос интересный - чтобы что-то ковырять в WinDBG, надо как-то "снимок" сделать. Т.е. в livekd я точно ни фига не успею схватить - у меня 500000 интерраптов в секунду. Сделал manually initiated crash, но как-то анализировать его трудно, !irpfind жалуется, что не вся память на месте (дамп памяти ядра), или там на другой поток переключиться и кол стэк посмотреть не могу... Беда прям. А жить-то мешает =\
     
  6. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    А если проделать то, что проделал я -- посмотреть IDT и KINTERRUPT, который висит на нужном прерывании, затем глянуть вектор и найти устройство в Device manager'е по вектору, и попробовать вытащить устройство по описанию в Device manager'е? Я просто не знаю, насколько LiveKD позволяет это сделать. Хотя данные, вроде, статичные, вытащить можно.
     
  7. Honorary_BoT

    Honorary_BoT New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2008
    Сообщения:
    87
    У меня нет данных о прерывании, точнее, я не знаю, откуда их взять.
     
  8. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Ну, вот в этом вопрос -- работают ли команды '!idt -a' и 'dt KINTERRUPT addr ' в LiveKD.
     
  9. Honorary_BoT

    Honorary_BoT New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2008
    Сообщения:
    87
    На лайв - данные не целостные, на комп-комп возможности нет =\
     
  10. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Honorary_BoT
    Так а что насчет '!idt -a' и 'dt KINTERRUPT addr'? Эти данные почти не меняются во время жизни системы.
     
  11. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    Honorary_BoT
    Очевидно ведь что питание инвалидное ...
    1) Не все дрова поствил для ноута, ну или лишнии поставил
    2) Включить в розетку и посмотреть что будет
    3) Написать еще какие то данные ... :)
    Как то так.
     
  12. Honorary_BoT

    Honorary_BoT New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2008
    Сообщения:
    87
    1) Поставил все, что было, потом по очереди удалил почти все - хрен
    2) Он и так, и так используется
    3) Какие? Напишу с удовольствием, кроме паспортных!
     
  13. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    Honorary_BoT
    Надо смотреть настройки повер манагмента.. Вообще в этом направлении ковырять.
     
  14. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    Ну какое то устройво типо usb (монитор, модем, шины, сетевые карты, видеокарта, диски, флоппи) а вот теперь методом втыка , отключай что модешь и смотри перфоманс...
     
  15. Honorary_BoT

    Honorary_BoT New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2008
    Сообщения:
    87
    Психанул и удалил все-все-все "утилиты" сасунга - полет нормальный... Бред же.
     
  16. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    Honorary_BoT
    Ну вот и выяснилось:)

    Значит чето было лишним:)
     
  17. Honorary_BoT

    Honorary_BoT New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2008
    Сообщения:
    87
    Нет, борода, после спящего режима снова штормит..
    Я тут приобрел USB кабель, можно замутить отладку с 2х компов. Что смотреть? Куда копать?
     
  18. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    Попробуй что то вроде
    bp ACPI!ACPIInterruptServiceRoutine "kb;g;"
    Будет лог, хотя бы стек будет видно , откуда так сказать шторм:)