Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Кто-то подвешивает систему в Kernel Times  (Прочитано 11420 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Aleck D.Shadow
Опытный

tr
Offline Offline
Пол: Мужской

« : 15-05-2007 07:22 » 

Ситуация следующая:
Работают программки, загрузка всех 2х процессоров обычно не более 10%,
апериодично возникает процессорное голодание, Task Manager подсказывает, что в момент голодания, возврастает Priveleged time
Нашел утилитку Kernrate from MS.
Она мне говорит, что в момент нехватки ресурсов возрастает нагрузка на модуль HAL а именно функции
HalReadDmaCounter
С чем это может быть связано?
Как в принципе вычислить узкое место в режиме ядра?
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 15-05-2007 14:53 » 

что вы подразумеваете под процессорным голоданием? кто голодает то? как долго? сколько он вообще ест обычно?)

а вычисляется обычно на глазок) мною по крайней мере. уж если я пишу что то, то четко представляю кто что вызывает и сколько раз... в моем коде.
« Последнее редактирование: 15-05-2007 14:54 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Aleck D.Shadow
Опытный

tr
Offline Offline
Пол: Мужской

« Ответ #2 : 15-05-2007 17:43 » 

все программы в user mode подвисают на ~3 секунды затем все восстанавливается. В это время Task Manager показывает что процессоры заняты в Priveleged time. Вот я и думал как узнать - что бы это могло быть.
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 21-05-2007 08:58 » new

а в чьем процессе? системный? или произвольный?
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Aleck D.Shadow
Опытный

tr
Offline Offline
Пол: Мужской

« Ответ #4 : 20-09-2007 13:30 » 

а в чьем процессе? системный? или произвольный?
Произвольный.
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 20-09-2007 14:04 » 

произвольный - значит это либо DPC либо ISR. HalReadDmaCounter - чтение счетчика переданных через DMA данных. следовательно кто то производит кривое ожидание окончания DMA транзакции. DMA транзакцию могут использовать диски, видео, звук, либо какие нибудь контроллеры.. (можно попробовать поотключать по очереди)

вобще 3 секунды это не то чтобы много - это ОЧЕНЬ много.
я бы отлаживался софтайсом. ждал бы этой паузы(3 сек можно с клавиатуры поймать). в момент загрузки проца - вызывал бы софтайс и ставил бы брякпоинт на эту функцию. потом поймал бы ее, и попытался бы выяснил ISR это или DPC или APC или IOCTL? (анализируя стек взовов) потом смотрел чъи это ISR/DPC или что то еще.
если ISR то можно сразу объект найти и следовательно девайс.
если DPC - владельца можно найти по входным параметрам(DpcForIsr объект), в крайнем случае (если CustomDpc) отследить по адресу этих параметров - кто выделял область памяти для этих переменных. кто еще обращается к ним же. на крайний случай пошаговой отладкой.
это все подходит для случая если можно с клавиатуры момент отловить. и если он достаточно часто происходит.
как-то так...

PS был еще ключик в настройках системы - "оптимизировать выполнение программ или севрисов" это свойства компа-быстродействие. посмотрите как он стоит. может это как раз разница между 1 сек и 3 сек будет. хотя вряд ли.
« Последнее редактирование: 20-09-2007 14:35 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 21-09-2007 05:58 » 

хм. я вчерась немного погорячился наверное.
вопрос про процесс был вот в связи с чем:
жрать ресурсы производительности может системная нить, либо нить драйвера. либо другой вариант - тормозить могут DPC (которые могут выполнятся в контексте произвольного процесса, независимо от того кто их выставляет). поэтому важно для начала определить - нить это или DPC? кроме того во время выполнения DPC переключение задач не происходит. оно может происходить только между выполнением DPC.
таким образом - если ресурсы съедает конкретная нить(процесс) - это одно....
попробуйте посмотреть вот еще какую штуку. запустите счетчики производительности системы - там есть возможность просмотреть раздельно - загрузку по каждому процессу в системе (объект процесс). это раз.
и второе - там же посмотрите на очереди DPC и прерывания - (объект процессор).
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Aleck D.Shadow
Опытный

tr
Offline Offline
Пол: Мужской

« Ответ #7 : 12-11-2007 20:30 » 

проблему нашел - всё дело в "волшебных пузырьках"  Улыбаюсь , а точнее в Windows File Cache.
Похоже что проблема возникает лавинообразно, т.к. программы которые крутятся на серваке ведут очень много журналов,
отсюда проблема с обработкой кэшем.
Вообще выглядит следующим образом:
Сначала возрастает значение счетчика (Perfomance) Physical disc -> Disc write/sec, одновременно с ним нарастает cache -> sync pin read/sec,
и спустя некоторое время (примерно 40-45 секунд) происходит зависание, т.е. возрастает время в priveleged time.
Судя по всему кэш сбрасывается на диск.
Однако не понятно почему делая в программах сброс (flush) данных на диск принудительно не помогает, решить проблему!!!
Но если воспользоваться программой sync (www.sysinternals.com), в начале этого роста то зависания не происходит.


Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines