LINUX.ORG.RU

границы производительности драйвера


0

0

Хочу перезадать свой вопрос по-другому - реально ли осуществить приём+передачу потока данных по шине pci 10-20MB/c и одновременно управлять периферией с потоком данных около 1МБ/с? Насколько возможно для решения этой задачи использовать дистрибутивные ядра без доработки?


> приём+передачу потока данных по шине pci 10-20MB/c

DMA?

> управлять периферией с потоком данных около 1МБ/с

DMA?

anonymous
()
Ответ на: комментарий от anonymous

Само собой что обмен не через порты, а через память. Железки должны иметь режим dma. Предположим что всё это есть, но вопрос то был по драйверу - реально или нет?

sts
() автор топика
Ответ на: комментарий от sts

Вопрос на самом деле в том, что и как ты собираешься с этими данными делать. Если просто сложить куда-то в память - то можно и успеть. А если зашифровать через 3DES - то можно и не крупно окорать :-)

no-dashi ★★★★★
()
Ответ на: комментарий от no-dashi

Решение зависит от ограничений которые накладывает ядро линукса. Если времени достаточно - то хотелось бы успеть сжимать|обрабатывать|интегрировать|прореживать|..., если нет - складывать на диске или транслировать в гигабитную сетку. Так как раньше с такими задачами я не сталкивался, спрашиваю совета у знающих людей.

sts
() автор топика
Ответ на: комментарий от sts

> Решение зависит от ограничений которые накладывает ядро линукса.

??? какме оно вам может наложить ограничения ?

по существу вопроса. 20mbs это не так много, но
все (как и всегда) зависит от конкретной задачи.

idle ★★★★★
()
Ответ на: комментарий от idle

Например надо фреймы данных привязывать к шкале времени с микросекундной точностью. Обработчик прерываний выполняем с cli()-sti() и смотрим график меток времени. Железка с шины генерит прерывания по синхроипмульсам от стабильного генератора. Получаем отскоки на десятки микросекунд на потоках 1МБ/с, а что же будет для 20МБ/с?

Насчёт конкретной задачи. Если я начну её излагать - это опять обьявят офтопом;))) Интересует меня ввод видеосигнала на шину pci с последующей обработкой/складировнием данных плюс одновременно с этим управление периферией. Если у вас есть конкретные наработки, буду рад познакомиться с ними. Работа нировская, но промахиваться по-крупному нельзя;)))

sts
() автор топика
Ответ на: комментарий от sts

> Получаем отскоки на десятки микросекунд на потоках 1МБ/с,
> а что же будет для 20МБ/с?

еще раз, ну а ядро-то чем может помешать/помочь?

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

> Обработчик прерываний выполняем с cli()-sti()

это вы что-то загадочное говорите...

> Например надо фреймы данных привязывать к шкале времени с
> микросекундной точностью.

это можно делать всегда, независимо от частоты прерываний.

> Интересует меня ввод видеосигнала на шину pci с последующей
> обработкой/складировнием данных плюс одновременно с этим управление
> периферией.

никто вам заранее не сможет сказать, выйдет или нет.
уже не говоря о том, что непонятно, что подразумевается
под обработкой/складированием. я делал подобное, но там
irq rate было 50 hz.

idle ★★★★★
()
Ответ на: комментарий от idle

> еще раз, ну а ядро-то чем может помешать/помочь?

В дистрибутивных ядрах вставяются хуки которые мешаются или например позволяют менять timeslice в шедулере что может пригодиться.

> если имеется в виду период между прерывания, то многовато будет

вот и я про то же

>> Обработчик прерываний выполняем с cli()-sti() > это вы что-то загадочное говорите...

ну в смысле в isr прерывания запрещаются

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

пардон, не сказал сразу - шкала внешняя, а не системное время линукса

> непонятно, что подразумевается под обработкой/складированием.

В худшем случае пишем на диск, в лучшем - успеваем вытащить данные в user-space и там их обрабатываем, пишем уже меньший обьём.

> я делал подобное, но там irq rate было 50 hz

О! Значит вас-то я и хотел найти;))) Хотя хотелось бы от 100Гц и выше, но для начала пойдёт. Чтобы народ не отвлекать, напишите на мэйл подробнее sts на sao ru

sts
() автор топика
Ответ на: комментарий от sts

> > еще раз, ну а ядро-то чем может помешать/помочь?
>
> В дистрибутивных ядрах вставяются хуки которые мешаются

о чем вы ?

> или например позволяют менять timeslice в шедулере что может
> пригодиться.

вряд ли вам это пригодится. к тому же есть SCHED_RR

> > это вы что-то загадочное говорите...
>
> ну в смысле в isr прерывания запрещаются

это я понял. держу пари, вам это не нужно.

> В худшем случае пишем на диск, в лучшем - успеваем вытащить
> данные в user-space и там их обрабатываем

вот от этого все (почти) и зависит, а ядро здесь
не при чем.

> Хотя хотелось бы от 100Гц и выше, но для начала пойдёт.

да это крохи. вы же говорили про сотни KHz ?

> Чтобы народ не отвлекать, напишите на мэйл подробнее

прошу прощения. у меня у самого работы полным полно.
я еще могу ответить на конкретные вопросы (если буду
знать ответ) здесь, в форуме, но списываться ...

извините.

idle ★★★★★
()
Ответ на: комментарий от idle

Хорошо, не настаиваю.

>> Хотя хотелось бы от 100Гц и выше, но для начала пойдёт. > > да это крохи. вы же говорили про сотни KHz ?

А почему прерывания сотни КГц? Если я правильно понимаю, железка на pci может собирать например 10..100Кб данных и генерить прерывания например с частотой 1000..100Гц. Или не получится? То есть сколько у вас драйвер за одно прерывание данных считывал?

sts
() автор топика
Ответ на: комментарий от idle

> здесь как-то уже было обсуждение про "много" прерываний:

там как раз у меня получалось: 1КГц прерывание 1Кб данных итого 1МБ/c

sts
() автор топика
Ответ на: комментарий от sts

> А почему прерывания сотни КГц?

так вы же сами писали:

> Получаем отскоки на десятки микросекунд на потоках 1МБ/с,
> а что же будет для 20МБ/с?

я еще удивлялся, откуда такой rate

> Если я правильно понимаю, железка на pci может собирать
> например 10..100Кб данных
> ...
> Или не получится?

так от железки зависит!!!

idle ★★★★★
()
Ответ на: комментарий от idle

Для PCI железяки в режими bus mastering получал скорость до 120 Мб/сек. (Но правда мог не очень точно мерять, и больше ничего на машине не делалось). PCI контроллер PLX9054 режим скаттер-гаттер. Память отображалась в user space через mmap. На этом форуме поищите.

karak
()
Ответ на: комментарий от karak

> Для PCI железяки в режими bus mastering получал скорость до 120 Мб/сек.

аналогично

idle ★★★★★
()
Ответ на: комментарий от idle

2idle

>> Получаем отскоки на десятки микросекунд на потоках 1МБ/с,
>> а что же будет для 20МБ/с?
>
> я еще удивлялся, откуда такой rate

Давайте по-порядку. В isr делаю do_gettimeofday, больше ничего.
Получаю ровную линию, отсчёты между прерываниями в микросекундах
536мкс):
http://www.sao.ru/hq/sts/upload/isr_timemarker1.ps

Далее пошли отсчёты с данными (около 1Кб на одно прерывание), начались
отскоки:
http://www.sao.ru/hq/sts/upload/isr_timemarker2.ps
http://www.sao.ru/hq/sts/upload/isr_timemarker2sm.ps

Если предположить что запрет прерываний всё-таки работает, то это или
задержка входа в isr или что-то другое? Ваши слова про то что
приоритетов прерываний в линуксе нет я помню, но они этого парадокса
не обьясняют. Железка может генерить прерывания с разбросом максимум в
1мкс.


>> Или не получится?
>
> так от железки зависит!!!

У меня два варианта - либо я беру готовую железку либо делаю свою.
Если найду первый, то это сильно ускорило бы работу. Если придётся
заниматься вторым, то там всё зависит только от меня. Для второго
варианта железячная заготовка имеется, таргет-контроллер pci работает,
но bus mastering кажется там отсутствует.


2karak
Что там у вас за железка была? видеовход или только цифровые входы?

sts
() автор топика
Ответ на: комментарий от sts

>Что там у вас за железка была? видеовход или только цифровые входы?

Это плата на контроллере PLX9054, с DSP-процессором на ней. Вам же можно сделать свою на контроллере PLX9x5x их там целое семейство. Хотя сейчас "дополна на рынке" готовых. Рекомендую посмотреть сайт http://www.insys.ru может чего подберете у них.

karak
()
Ответ на: комментарий от karak

Дорогие у них железки, однако. И ещё эта модульная комплектация -
с ходу разобраться непросто. Буду иметь в виду, спасибо.

Насколько я понял по скорости проблем не должно возникнуть. Но всё-таки
вопрос насчёт стабильности временных меток при увеличении скорости
обмена по шине остался открытым.

sts
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.