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

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Максимальное количество прерываний  (Прочитано 22761 раз)
0 Пользователей и 1 Гость смотрят эту тему.
06server
Гость
« : 24-07-2006 07:38 » 

Вопрос. Какое количество прерываний в секунду способна обработать машина с нормальным HT процом? А то прерывания затыкаются, явно не успеваю обработать=\
Записан
maaaaaad
Гость
« Ответ #1 : 24-07-2006 11:02 » 

100 запросто. Тебе мало? 1000 тоже должна. У тебя то их сколько? И процессор какой? И что ты в них делаешь?
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #2 : 24-07-2006 12:10 » 

Вообше то правила хорошего тона требуют, как можно быстрее выйти из прерывания. В прерываниях, принял, отправил и сказал приложению Фас. А уже из потока, который работает независимо от прерываний, вести обработку данных.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Ochkarik
Модератор

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

« Ответ #3 : 24-07-2006 12:35 » 

до 10 тысяч. но на это ресурсов процентов 50 уйдет.
Записан

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

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

« Ответ #4 : 24-07-2006 12:38 » 

PS никогда не видели как builk пересылка по 1394 работает? смотрите и ужасайтесь!)
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
06server
Гость
« Ответ #5 : 24-07-2006 13:57 » 

вот как раз интересует количество прерывания которые по количеству ближе к десяткам тысяч..и больше=\...на этих скоростях в принципе нагрузка не большая, но в какой то момент умирает ...причём один канал=\...то есть стремится как какому то равновесию

1394 эт какое то устройство?

В Isr я просто получаю информацию по прерыванию у платы и говорю ей что всё чики пуки. В Dpс потом уже обрабатываю. Хотя там у платы такой интерфейс, што мама не горюй, нагрузка от одного получения информации по прерыванию может нагрузить.

Проц intel HT кажется 3 Ггц..точнее не скажу, запускается не на моей тачке8(
Записан
06server
Гость
« Ответ #6 : 24-07-2006 13:57 » 

Единственное настораживающее действие - по нагрузке, это RtlCopyMemory..
Записан
Ochkarik
Модератор

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

« Ответ #7 : 24-07-2006 14:08 » 

1394 - FireWire.
RtlCopyMemory - нагрузка 0 если правильно выровнять)
развлекался на PCI - гоняли 30Мб/с по шине))) забавно так пишет из платы в память, потом из памяти в другуя память (уже я переписываю в DPC - movsd), а потом все это сбрасываетя на диск... жужит, а открываешь ресурсы - 2%!
прерывания не использовал - работал по таймеру+счетчик.

так что пересылка блока память->память - видимо как-то контроллером шины выполняется что ли...либо производительность при этом некорректно считается.
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
maaaaaad
Гость
« Ответ #8 : 24-07-2006 14:44 » 

30мб.с. это не нагрузка ни для DDR ни для PCI
Записан
06server
Гость
« Ответ #9 : 24-07-2006 14:53 » 

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

30мб ещё маловато, вот пробовал большие скорости...да ещё драйвер студио...вообще складывается впечатление со временем, что основной класс со временем свапуется....просто мистика какая то8(....плюс даже для new KDevice незя (NonPagedPool) дописать8(((
Записан
Ochkarik
Модератор

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

« Ответ #10 : 24-07-2006 15:43 » 

30МБайт/с я имел в виду. это еще на 3 пересылки помножить как минимум. и для обычной PCI. это под гигабит/сек.
а больше просто винт не тянул гарантированно)

попробуйте обрабатывать все в ISR. ну или хотя бы часть.
и посмотрите чтоб на том же прерывании никто не сидел. но это уже некоторый изврат...
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
06server
Гость
« Ответ #11 : 24-07-2006 15:49 » 

Кстати да...мона попробовать:)
Записан
maaaaaad
Гость
« Ответ #12 : 24-07-2006 15:55 » 

мда уж...
Записан
maaaaaad
Гость
« Ответ #13 : 24-07-2006 15:57 » 

если DPC и ISR привильно синхронизированны то это не поможет
Записан
maaaaaad
Гость
« Ответ #14 : 24-07-2006 15:59 » 

если прерывания генерятся очень часто (время исполнения пары десятков машинных инструкций), то рациональнее иногда бывает их отключить и отслеживать их опросом
Записан
06server
Гость
« Ответ #15 : 24-07-2006 16:08 » 

спасибо! попробую:) таки побежу его
Записан
Ochkarik
Модератор

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

« Ответ #16 : 25-07-2006 08:39 » 

maaaaaad, а как ISR и DPC могут быть неправильно синхронизированы?)

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

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
06server
Гость
« Ответ #17 : 25-07-2006 09:07 » 

на обоих или нет...нинаю как проверить....но я не распаралеливал ничего...хотя....клиента два...
Но с другой стороны ОС XP - не знаю она как с процами дружит...видит больше одного или нет.
А вот насчёт того что теряю между Isr и Dpc ...вот это уже ОЧЕНЬ ВЕРОЯТНО...сейчас отдал промежуточный вариант- проверяют...если не правильно, то буду зрить в эту степь
Записан
Ochkarik
Модератор

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

« Ответ #18 : 25-07-2006 14:48 » 

XP то - дружит... сама по себе) но это не значит что драйвер абы как может фунциклировать)открой счетчики производительности (в администрировании) и добавь туда частоту прерываний - увидишь.

при инициализации прерывания - есть параметр отвечающий за то на каких из доступных процов ISR  может выполнятся. аффинити-маск помоему назывался. предназначен помимо всего для того чтобы во время ISR на одном проце не запустилась обработка другого прерывания от того же устройства на втором проце. но это чаще редкость. это вряд ли. но иметь  в виду тоже стоит.

а вот насчет ISR-DPC - на 90% там. проц просто не успевает на диспач уровень перейти DPC обработать, когда ему уже новое прерывание подладывают и как.....)

короче для таких скоростных задач - DPC я использую ТОЛЬКО для того чтобы Event приложению выставить. а это чаще 20-100раз в сек не нужно делать.

короче ИМХО советую DPC исключить)
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
maaaaaad
Гость
« Ответ #19 : 26-07-2006 09:47 » 

можно несколько раз поставить запрос в очередь DPC на уровне ISR и это не будет ошибкой, нельзя только это делать многократно, т.к. можно ее переполнить


« Последнее редактирование: 26-07-2006 11:16 от maaaaaad » Записан
Ochkarik
Модератор

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

« Ответ #20 : 26-07-2006 13:15 » 

Registering and Queuing a DpcForIsr Routine:
Using a DPC Object for a DpcForIsr Routine:
.....
Even on a uniprocessor machine, the ISR could be called again if the device interrupts while or before the DpcForIsr routine is run. If this occurs, the DpcForIsr routine is run only once.
In other words, there is no one-to-one correspondence between an ISR's calls to IoRequestDpc and instantiations of the DpcForIsr routine if a driver overlaps I/O operations for its target device objects.


© Microsoft Corporation
Send feedback on this topic
Built on Friday, February 18, 2005

про многопроцессорные там гораздо больше написано, но тоже куча ограничений.
« Последнее редактирование: 17-12-2007 16:36 от Алексей1153++ » Записан

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

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

« Ответ #21 : 26-07-2006 13:26 » 

...и даже для KeInsertQueueDpc "If the specified DPC object is already in the DPC queue, no operation is performed except to return FALSE."
очередь DPC существует для разных "объектов" DPC, но не для числа запроса одного и того же.
« Последнее редактирование: 26-07-2006 13:28 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
maaaaaad
Гость
« Ответ #22 : 27-07-2006 10:24 » 

When the ISR calls IoRequestDpc, it passes a pointer to the device object, a pointer to the DeviceObject->CurrentIrp, and a pointer to a driver-determined context. The I/O Manager calls KeInsertQueueDpc on the driver's behalf, which queues the DPC object. When IRQL falls below DISPATCH_LEVEL on a processor, the kernel dequeues the DPC object and runs the driver's DpcForIsr routine on that processor at IRQL DISPATCH_LEVEL.

Где сказано что однин обьекта DPC можно добавить в очередь один раз?

Built on Friday, July 20, 2001
« Последнее редактирование: 17-12-2007 17:43 от Алексей1153++ » Записан
Ochkarik
Модератор

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

« Ответ #23 : 27-07-2006 13:27 » 

дочитай страницу о конца - там как раз читата приведенная мной выше.
и раздел DPC Objects and DPCs. там сказано что только один объект, увы.

Registering and Queuing a CustomDpc Routine:
...
Only a single instantiation of any one DPC object can be queued at any given moment. Thus if an ISR calls KeInsertQueueDpc more than once with the same Dpc pointer before the driver's CustomDpc routine is run, the CustomDpc routine runs only once after IRQL falls below DISPATCH_LEVEL on a processor.
« Последнее редактирование: 17-12-2007 17:44 от Алексей1153++ » Записан

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

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

« Ответ #24 : 27-07-2006 13:34 » new

ЗЫ может у меня дока посвежее? не получается старую версию запустить...
проверил - в версии 2600.1106 (July 24, 2002) тоже все есть...
« Последнее редактирование: 27-07-2006 13:37 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines