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

 
 
> Spartan 6 + LwIP, как добиться максимальной скорости
Golikov A.
сообщение Apr 26 2013, 17:51
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Всем привет. Наконец то запустил LwIP на микроблайзе в спартане 6. Микроблайз работает на 100 МГц, мак контроллер МАК - лите, физика гигабитная, но зарезана на 100 МБит.

У меня получилось передача по ТСР со скоростью 15 Мбит. Это если слать с компьютера большой файл пакетами по 5000 байт. Если пакеты длинные (10-50Кбайт), то скорость падает до 7 МБит, а если коротенькими пакетиками то скорость падает до каких то очень мизирных значений. Шлю из C# через TcpClient. В Спартане реализован эхо сервер, шлю пакет потом принимаю его обратно, считаю время между отправкой и приемом. Также время смотрел в wireshark, там отмечается время когда прошел пакет в плис, и когда пошел обратно АКК. Скорость 15 МБит - реальность

Я так понимаю что основной затык в ядре микроблайз, LwIP работает из DDR, потому что после того как я его подключил проект вырос до каких то неприличных 120 КБайт, и во внутреннюю память не влез. DDR не двух портовый, а данные и программа лежат в одной памяти, кеши все включил, но lwIP активно создает буфера в куче.

Собственно вопрос что надо сделать чтобы получить те данные что заявлены в описании LwIP для мак лите, а именно 50 Мбит прием, 38 Мбит передача?

Go to the top of the page
 
+Quote Post
4 страниц V   1 2 3 > »   
Start new topic
Ответов (1 - 14)
Methane
сообщение Apr 26 2013, 18:00
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(Golikov A. @ Apr 26 2013, 20:51) *
Собственно вопрос что надо сделать чтобы получить те данные что заявлены в описании LwIP для мак лите, а именно 50 Мбит прием, 38 Мбит передача?


Разобраться где потери.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Apr 27 2013, 04:37
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Спасибо капитан очевидность.

Вопрос к тем кто уже разбирался)... где же потери тоsm.gif?
Go to the top of the page
 
+Quote Post
Methane
сообщение Apr 27 2013, 04:47
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(Golikov A. @ Apr 27 2013, 07:37) *
Спасибо капитан очевидность.

Вопрос к тем кто уже разбирался)... где же потери тоsm.gif?

Может пакет сильно фрагментированным приходит.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Apr 27 2013, 05:42
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



1514 байт по данным ваершарка.

на самом деле я думаю все затыки где то рядом с ядром, то есть не МАК контроллер, а уже именно LwIP, и то что все из DDR работает. Так ли это? Будет ли быстрее если в рам перепихать, как перепихать в рам. Можно что-то сделать с ЛвИП чтобы он перестал создавать и уничтожать буферы и так далее...
Go to the top of the page
 
+Quote Post
Methane
сообщение Apr 27 2013, 05:55
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(Golikov A. @ Apr 27 2013, 08:42) *
1514 байт по данным ваершарка.

на самом деле я думаю все затыки где то рядом с ядром, то есть не МАК контроллер, а уже именно LwIP, и то что все из DDR работает. Так ли это? Будет ли быстрее если в рам перепихать, как перепихать в рам. Можно что-то сделать с ЛвИП чтобы он перестал создавать и уничтожать буферы и так далее...

Там помнится у ЛвИП настроек дофига. Если DDR имеется, то может ему буфера поувеличивать?
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Apr 27 2013, 06:44
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Потому я и спрашиваю кто это делал.

Я уже крутил настройки исходя из смысла этих настроек по описанию, но 15 мегобит край! Вот хочу знать был ли кто кто получил обещанные 50, и что он для этого сделал... может он стек порезал, чтобы он в рам влез...
Go to the top of the page
 
+Quote Post
Methane
сообщение Apr 27 2013, 06:49
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(Golikov A. @ Apr 27 2013, 09:44) *
Потому я и спрашиваю кто это делал.

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

Может тогда микроблейзу настройки крутить. Я lwIP на AVR32 крутил. Помню что приличную скорость я на UDP получил.
Go to the top of the page
 
+Quote Post
Corvus
сообщение Apr 27 2013, 14:18
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 24-04-08
Из: Зеленоград
Пользователь №: 37 056



Я делал biggrin.gif Начните с xapp1026, цифры, что там заявлены, вполне соответствуют реальности. Вот прям возьмите последний (в предыдущем была ошибка в обработке таймеров lwip) xapp1026 и запустите на своей плате, а потом iperf. Это будет максимальный идеал, к чему стремиться.

Какое ядро для ethernet используете? на axi или plb? с FIFO или DMA? Без DMA большой скорости не ждите.
Про урезание lwip и запихивание в BRAM - это тупиковый путь, я как раз намучался с этим (не заложил на плату внешнюю память). Ethernet DMA может работать только с внешней памятью, а без DMA максимум мне удалось выжать 50 МБит на передачу при отправке заранее сформированного пакета (как в iperf) и 35 с подготовкой пакета между передачей.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Apr 27 2013, 17:09
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



я начал с MACLite без дма, без фифо, на акси лайте
получил 15 МБит, а в мануале обещали 50,
Я подумал может проблемка в том что все крутиться из ДДР. Но если путь тупиковый то ходить по нему и не буду...

Теперь я хотел сделать МАК ембендет АПИ, и фифо.

В ДМА меня беспокоит такой момент, у меня память в кешируемом пространстве, и я вообще не понимаю как если ДМА будет в нее писать, да еще под управлением ЛвИП, как получать актуальные данные? Отключать кэш данных? Или ДМА умеет через кэш писать? Вряд ли кэш внутри проца, а ДМА внешний модуль...

И я еще не очень понимаю как оно все в целом в ДДР быстро работает? ведь считай в одну память все лезет, и программа, и стэк ЛвИП, и ДМА?...




Перечитал Хапп, блин у меня и близко нет таких характеристик как у них... 37 Мб, 52 Мб, ну хорошо они это делают с зеро-копи пбуфом, и что не использование этого уронит скорость в 2 раза, а то и 3? В чем то еще подвох...
Go to the top of the page
 
+Quote Post
Corvus
сообщение Apr 27 2013, 18:04
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 24-04-08
Из: Зеленоград
Пользователь №: 37 056



Цитата(Golikov A. @ Apr 27 2013, 21:09) *
В ДМА меня беспокоит такой момент, у меня память в кешируемом пространстве, и я вообще не понимаю как если ДМА будет в нее писать, да еще под управлением ЛвИП, как получать актуальные данные? Отключать кэш данных? Или ДМА умеет через кэш писать? Вряд ли кэш внутри проца, а ДМА внешний модуль...



в общем случае, Xil_DCacheInvalidateRange (data, length). Но, если не ошибаюсь, в lwip это и так делается.

Цитата(Golikov A. @ Apr 27 2013, 21:09) *
Перечитал Хапп, блин у меня и близко нет таких характеристик как у них... 37 Мб, 52 Мб, ну хорошо они это делают с зеро-копи пбуфом, и что не использование этого уронит скорость в 2 раза, а то и 3? В чем то еще подвох...


Посмотрите настройки lwip из xapp - количество и размер pbuf, размер send_buf, размер окна прежде всего.
А копирование очень сильно режет скорость. Может и не в 2 раза, но в полтора точно.

И ещё настройки микроблейза тоже стоит проверить, размер кэша очень сильно влияет на скорость передачи. И размер фифо у самого TEMAС.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Apr 27 2013, 20:38
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Спасибо погляжу.

Про инвалидате кэша это понятно, но будет ли тогда он него хоть какой то бонус? Надо проверить делает ли LwIP его, хорошо если делает, не получу бонус в езернете, так в другом останется...

Вот поднял гигабитный езернет, с расчетом контрольных сумм внутри модуля, с ДМА, и че?
24 мегабита на пакета от 2000 до 5000 байт.
пакеты 50 000 байт дают 9 мегабит
а 1500 и меньше дают вообще какие то копейки.

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

с 100 м бит перешел на гигабит и вместо 15 получил 24... что-то явно не так...

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

Вот что меня еще беспокоит.
По протоколу ТСР каждый переданный пакет длинной от 46 до 1500 байт должен сопровождаться Акнолиджем что типа принял. И получается что я могу раздувать буферы внутри сколько хочу, вместе с ДМА и прочим, но больше чем 1500 байт не обработается... Со всеми вытекающими, проч то микроблайз на 100 мегагерцах пыхтит всего лишь...

В армах, в кайловском стеке, есть фишка отучить ждать подтверждение, а ЛвИП в плисине можно такое научить? Как бы режим отложенного подтверждения? А будет ли это удовлетворять протоколу? Не будет ли проблем в сети?

Go to the top of the page
 
+Quote Post
Corvus
сообщение Apr 28 2013, 05:13
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 24-04-08
Из: Зеленоград
Пользователь №: 37 056



Цитата(Golikov A. @ Apr 28 2013, 00:38) *
правильно я понимаю что если уже все работает, хоть как-то, то констрайны плисовые уже не причем?


Да, правильно.

Цитата(Golikov A. @ Apr 28 2013, 00:38) *
В армах, в кайловском стеке, есть фишка отучить ждать подтверждение, а ЛвИП в плисине можно такое научить? Как бы режим отложенного подтверждения? А будет ли это удовлетворять протоколу? Не будет ли проблем в сети?

Отдельной настройки нет. Это разруливается на уровне LWIP, ЕМНИП, при скоростях выше 30 Мбит пакеты начинают отсылаться через [PSH, ACK]

Ещё раз настоятельно советую не искать проблему наощупь. Слишком много факторов, влиящих на скорость - как настройки железа, так и настройки lwip и код работы с ним (в частности, обработка таймеров). Скачайте проект xapp1026 c максимальным кэшем, подправьте ucf и настройки памяти под свою плату, а потом запустите iperf. И если цифры совпадут с заявленными, то будет понятно, что с платой и окружением всё ок. А дальше можно ковыряться в настройках своего проекта, используя этот в качестве образца.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Apr 28 2013, 06:23
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



То есть LWiP сам переходит на отложенное подтверждение? прикольно...

Обнаружил что если во время приема-передачи выдернуть сетевой шнур и вставить обратно, схема входит в безответный режим. Время от вермени пытается ретрансмитнуть старый пакет, но новый АРП запросы, пинги и прочее уже не принимает... Даже когда закончила ретрансмитить старый пакет, все равно пингов и прочего не появилось...

Как с этим бороться по уму? Проверять активность канала и рессетить его если что?

Вообще есть какие то общие меры обеспечения жизни канала? или в ТСР они встроенные и все настроив все будет хорошо?

Go to the top of the page
 
+Quote Post
akorud
сообщение Apr 28 2013, 17:39
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 203
Регистрация: 12-11-10
Из: Poland
Пользователь №: 60 842



Из опыта: DDR тут практически не влияет если кеш работает. Я у себя в системе добавлял block ram для данных с критическим временем доступа - никакой заметной разницы (если нет других мастеров на шине, конечно).
В lwIP можно попробовать использовать memory pool - в одним из проектов очень помогло.
100MHz microblaze - очень не мало. Например 100Мбит трафик, пакеты по 1500 байт - всего около 8000 пакетов в секунду, совсем ничего. Надо искать где задержка (а для TCP именно она как правило ограничивает скорость). Проверенный метод - дергать GPIO и измерять время на осциллографе.
Go to the top of the page
 
+Quote Post

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

 


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


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