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

 
 
> Вопрос по LwIP, Скорость отправки
Petr_
сообщение Mar 15 2016, 18:12
Сообщение #1





Группа: Участник
Сообщений: 14
Регистрация: 15-03-16
Пользователь №: 90 876



Передаю большой файл.
Использую цепочку колбеков, как и задумано в lwIP.
Но заполняю буфер передачи не полностью(узнаю из tcp_sndbuf(pcb); ).
Далее вызываю tcp_write(pcb, Data_Bf, wMaxPut, 0); и завершаю функцию.
Скорость никакущая.
Смотрю что идет по сетке - FTP клиент не посылает ACK добрых 0,3 сек.
Крепко думаю - доходит, что размер окна равен 2, а пакет уходит 1.
Рою сеть.
Нахожу вариант:
Код:
Код
    pcb->flags |= TF_NODELAY;                                   //отключаем  Nagle
    tcp_write(pcb, Data_Bf, wMaxPut >> 2, 1);                   //первый пакет
    tcp_output(pcb);                                            //передать что влезло
    //второй пакет
    tcp_write(pcb, &Data_Bf[wMaxPut >> 2], wMaxPut-(wMaxPut >> 2), 1);
    tcp_output(pcb);                                            //передать что влезло (опционально)

ACK сразу вываливаются на каждую пару пакетов и скорость вырастает в сотни раз. Здорово...
Только решение кривое.
Можно конечно набивать буфер под завязку
(как криво и не полностью сделано в WEB сервере ST).
Но это крайне неудобно.
Бить данные всегда на 2 куска - тоже левизна.

Кто то знает нормальное решение?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AleksBak
сообщение Mar 17 2016, 07:13
Сообщение #2


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

Группа: Участник
Сообщений: 132
Регистрация: 6-02-16
Из: г. Баку
Пользователь №: 90 364



Вот, вчера это пропустил - еще там есть по этой теме: Maximizing throughput. Для обоих видов протокола TCP и UDP приводят рекомендации.

Цитата(Petr_ @ Mar 17 2016, 10:56) *
...
У меня сейчас версия 1.3.1
...

А в этой версии есть эти функции: tcp_nagle_enable/tcp_nagle_disable ? Если взять сгенерированное от Куба, то там 1.4.1 (и функции эти есть и еще кое-какие дефайны по этой теме), но правда полученный код уже будет привязан к HAL от Куба. Хотя при желании его (этот HAL) не трудно переписать/убрать на свой.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Petr_   Вопрос по LwIP   Mar 15 2016, 18:12
- - romas2010   Цитата(Petr_ @ Mar 15 2016, 21:12) Переда...   Mar 15 2016, 19:50
|- - Petr_   Цитата(romas2010 @ Mar 15 2016, 19:50) Ну...   Mar 15 2016, 20:11
|- - aaarrr   Цитата(Petr_ @ Mar 15 2016, 23:11) для пе...   Mar 15 2016, 20:32
|- - Petr_   Цитата(aaarrr @ Mar 15 2016, 20:32) В ваш...   Mar 15 2016, 20:54
|- - aaarrr   Цитата(Petr_ @ Mar 15 2016, 23:54) Я посм...   Mar 15 2016, 21:09
|- - Petr_   Цитата(aaarrr @ Mar 15 2016, 21:09) Где и...   Mar 16 2016, 07:57
|- - alag57   Цитата(Petr_ @ Mar 16 2016, 12:57) Обновл...   Mar 16 2016, 14:14
||- - Petr_   Цитата(alag57 @ Mar 16 2016, 14:14) git c...   Mar 17 2016, 06:56
|- - AleksBak   Цитата(Petr_ @ Mar 16 2016, 11:57) ... Та...   Mar 16 2016, 18:01
|- - scifi   Цитата(AleksBak @ Mar 16 2016, 21:01) Пох...   Mar 16 2016, 18:12
|- - Petr_   Цитата(AleksBak @ Mar 17 2016, 07:13) Вот...   Mar 17 2016, 11:04
|- - AleksBak   Цитата(Petr_ @ Mar 17 2016, 15:04) Спасиб...   Mar 17 2016, 11:33
|- - Petr_   Цитата(AleksBak @ Mar 17 2016, 11:33) Вы ...   Mar 17 2016, 11:55
|- - Petr_   Решил свои проблемы с LwIP и делюсь результатом(мо...   Mar 22 2016, 06:59
- - AleksBak   Спасибо большое, что отписались! Я вот тоже не...   Mar 22 2016, 15:55
- - Petr_   Цитата(AleksBak @ Mar 22 2016, 15:55) Спа...   Mar 22 2016, 18:13


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

 


RSS Текстовая версия Сейчас: 24th July 2025 - 18:22
Рейтинг@Mail.ru


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