|
Spartan 6 + LwIP, как добиться максимальной скорости |
|
|
|
Apr 26 2013, 17:51
|
Гуру
     
Группа: Свой
Сообщений: 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 Мбит передача?
|
|
|
|
|
 |
Ответов
(1 - 14)
|
Apr 27 2013, 17:09
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
я начал с MACLite без дма, без фифо, на акси лайте получил 15 МБит, а в мануале обещали 50, Я подумал может проблемка в том что все крутиться из ДДР. Но если путь тупиковый то ходить по нему и не буду...
Теперь я хотел сделать МАК ембендет АПИ, и фифо.
В ДМА меня беспокоит такой момент, у меня память в кешируемом пространстве, и я вообще не понимаю как если ДМА будет в нее писать, да еще под управлением ЛвИП, как получать актуальные данные? Отключать кэш данных? Или ДМА умеет через кэш писать? Вряд ли кэш внутри проца, а ДМА внешний модуль...
И я еще не очень понимаю как оно все в целом в ДДР быстро работает? ведь считай в одну память все лезет, и программа, и стэк ЛвИП, и ДМА?...
Перечитал Хапп, блин у меня и близко нет таких характеристик как у них... 37 Мб, 52 Мб, ну хорошо они это делают с зеро-копи пбуфом, и что не использование этого уронит скорость в 2 раза, а то и 3? В чем то еще подвох...
|
|
|
|
|
Apr 27 2013, 18:04
|

Знающий
   
Группа: Свой
Сообщений: 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С.
|
|
|
|
|
Apr 27 2013, 20:38
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Спасибо погляжу.
Про инвалидате кэша это понятно, но будет ли тогда он него хоть какой то бонус? Надо проверить делает ли LwIP его, хорошо если делает, не получу бонус в езернете, так в другом останется...
Вот поднял гигабитный езернет, с расчетом контрольных сумм внутри модуля, с ДМА, и че? 24 мегабита на пакета от 2000 до 5000 байт. пакеты 50 000 байт дают 9 мегабит а 1500 и меньше дают вообще какие то копейки.
правда я шлю пакет (в плисине просто эхо сервер), и я пакет ловлю назад, считаю время туда - обратно, и суммарный трафик делю на время... Наверное это крайне не верный способ тестирования скорости... Но почему же он дает результаты так близко друг к другу.
с 100 м бит перешел на гигабит и вместо 15 получил 24... что-то явно не так...
правильно я понимаю что если уже все работает, хоть как-то, то констрайны плисовые уже не причем?
Вот что меня еще беспокоит. По протоколу ТСР каждый переданный пакет длинной от 46 до 1500 байт должен сопровождаться Акнолиджем что типа принял. И получается что я могу раздувать буферы внутри сколько хочу, вместе с ДМА и прочим, но больше чем 1500 байт не обработается... Со всеми вытекающими, проч то микроблайз на 100 мегагерцах пыхтит всего лишь...
В армах, в кайловском стеке, есть фишка отучить ждать подтверждение, а ЛвИП в плисине можно такое научить? Как бы режим отложенного подтверждения? А будет ли это удовлетворять протоколу? Не будет ли проблем в сети?
|
|
|
|
|
Apr 28 2013, 05: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. И если цифры совпадут с заявленными, то будет понятно, что с платой и окружением всё ок. А дальше можно ковыряться в настройках своего проекта, используя этот в качестве образца.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|