реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> uClinux. Сеть. Потоки. Real Time.
RCray
сообщение Nov 12 2010, 16:49
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 170
Регистрация: 14-09-05
Из: Suwon
Пользователь №: 8 548



Попытаюсь описать проблему.

Есть uClinux на BF537, работает многопоточное (pthread) пользовательское приложение.

Один из потоков (P1) отвечает за обмен данными между сетью (UDP, recvfrom, sendto) и периферийным процессором (по SPORT, но это не важно), идёт обмен критичными ко времени обмена данными. Время между обращениями к этому потоку не должно превышать T1 (скажем 20 мс).

При активировании обмена сторонними данными по сети относительно большими объёмами данных (скачивания какого-нибудь левого файла, запрос страницы по http) около мегабайта приводит к задержкам обработки нашего критичного потока >T1.

Интересно отметить, что в ligthhttpd есть такой параметр, как полоса. Можно менять её при компилировании, и тем самым страница web-интерфейса устройства грузится дольше, но передача управления потоку не выходит за рамки установленного числа T1. Для сравнения размер передаваемых данных web-страницы составляет 1,5 Мб, установка максимальной полосы (при которой страница грузится 2 сек) приводит к задержкам > T1, до 40-50 мс, установка полосы при которой страница грузится (2 мин) к задержкам > T1 не приводит. Понятно что 2 минуты это ни в какие ворота.

Размышления о TCP/IP стеке, сетевом драйвере uClinux'а привели к ключевым словам - Adeos/Xenomai/RTnet.

Перевод uClinux на Adeos/Xenomai не помог, хотя пользовательское приложение уже работает с API функциями сетевого программирования для риал-тайма. Всё-равно ситуация повторяется. Не знаю может быть это связано с тем, что остались системные вызовы (recvfrom, sendto) при работе с сетью, которые всё-равно переводят потоки из primary mode (Xenomai) в secondary mode (Linux).
Значит вопрос в драйвере сети и нужно копать в сторону RTnet и написании своего риал-тайм драйвера MAC? Или могут помочь какие-то шаманства со стеком TCP/IP, размеры каких-то буферов?

Не хватает знаний в области сетевых технологий, чтобы сформулировать задачу точнее.

У кого есть какие размышления? Спасибо.
Go to the top of the page
 
+Quote Post
etoja
сообщение Nov 13 2010, 13:49
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



Во-первых, линукс не является системой реального времени, а во-вторых , блэкфин быстрый только на маленьком внутреннем ОЗУ.
Go to the top of the page
 
+Quote Post
RCray
сообщение Nov 15 2010, 11:13
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 170
Регистрация: 14-09-05
Из: Suwon
Пользователь №: 8 548



Это понятно. Я пытаюсь понять почему может быть задержка обработки потока и по возможности устранить эту причину.
У критичного ко времени потока максимальный приоритет из всех потоков в системе и SCHED_FIFO.
Go to the top of the page
 
+Quote Post
tturist
сообщение Nov 22 2010, 08:58
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 2-04-07
Пользователь №: 26 703



Хм... Если ваш веб-сервер дествительно имеет параметр nice() с минимальным приоритетом, а критичный поток обозначен как real-time, планировщик должен всегда вызывать ваш поток. Получается что планировщик вообще не вызывается в системе 40-50мс? Может быть даже в отсутствии запросов по http ваша система загружена достаточно основательно задачей обработки UDP-SPORT? Не пробовали хоть как-то оценить загрузку системы?
Какой поток данных, насколько сложную обработку выполняет нитка UDP-SPORT? Размер буферов данных как соотносится с размером кэша процессора?
При сборке ядра частота планировщика 100Гц, вытесняемость ядра включена? Версия ядра вообще свежая более менее?
Отладочные сообщения часом в консоль не выводятся (или какие-либо другие)?


Сообщение отредактировал tturist - Nov 23 2010, 07:17
Go to the top of the page
 
+Quote Post
RCray
сообщение Dec 6 2010, 13:39
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 170
Регистрация: 14-09-05
Из: Suwon
Пользователь №: 8 548



Долго не возвращался к решению данной проблемы. Сейчас вернулся и обнаружил, что проявление проблемы исчезает при переключении устройства в 100 Мбитный свич (до этого был 10 Мбитный).
Go to the top of the page
 
+Quote Post
tturist
сообщение Dec 7 2010, 07:35
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 2-04-07
Пользователь №: 26 703



рад что ваша проблема разрешилась. получается ваш веб-сервер дополнительно загружал 10М ethernet потоком 6,3М. интересно было бы понять почему это приводило к таким тормозам с планировщиком. вместе с основной задачей ваши 10М не переполнялись?
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st June 2025 - 10:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01397 секунд с 7
ELECTRONIX ©2004-2016