|
Оптимизация LwIP |
|
|
|
Feb 26 2010, 19:24
|
Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 16-09-09
Пользователь №: 52 416

|
Код struct pbuf *q, *pq; char* ptr; . . . ptr = pq->payload; for(q = p; q != NULL; q = q->next) { memcpy(ptr, q->payload, q->len); ptr += q->len; } . . . Данный код используется в LwIP для расположения содержимого буферов в памяти последовательно. На его выполнение затрачивается почти половина всего времени отправки UDP-пакета (0.14мс / 0.31мс). Для каждого пакета по 1484Б происходит две итерации. Возможно ли ускорить это действие (DMA) или как-нибудь обойти (например, заранее располагая буферы в памяти в нужном порядке) ? Спасибо. Железо: DK-NIOS-2S60N (StratixII), стандартная сборка Nios - Full featured.
Сообщение отредактировал Veg@ - Feb 26 2010, 19:33
|
|
|
|
|
 |
Ответов
|
Feb 27 2010, 19:22
|
Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 16-09-09
Пользователь №: 52 416

|
Цитата если все равно медленно - тогда DMA Т.е. с DMA тоже свои определенные проблемы могут возникнуть или только реализация усложняется?
|
|
|
|
|
Feb 28 2010, 03:00
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(Veg@ @ Feb 28 2010, 01:22)  Т.е. с DMA тоже свои определенные проблемы могут возникнуть или только реализация усложняется? усложняется немного, но достаточно, чтобы задать вопрос о целесообразности LWIP(или о глубокой оптимизации последнего). так что там с побайтным копированием? самому интересно. вот еще ссылка на эту тему: http://forum.niosforum.com/forum/index.php?showtopic=5795Цитата А под ниос нет контроллера ethernet, работающим в режиме DMA? т е чтобы он мог читать данные напрямую из памяти, минуя системную шину. У хилых ethrnet так можно сконфигурить. проблема не в контроллере, они все в режиме DMA работают. поганое место - очередь пакетов и т.п., это все программно обруливается, и как показал топикстартер, довольно криво (медленно).
|
|
|
|
|
Feb 28 2010, 10:08
|
Профессионал
    
Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007

|
Цитата(vadimuzzz @ Feb 28 2010, 06:00)  усложняется немного, но достаточно, чтобы задать вопрос о целесообразности LWIP(или о глубокой оптимизации последнего). так что там с побайтным копированием? самому интересно. вот еще ссылка на эту тему: http://forum.niosforum.com/forum/index.php?showtopic=5795проблема не в контроллере, они все в режиме DMA работают. поганое место - очередь пакетов и т.п., это все программно обруливается, и как показал топикстартер, довольно криво (медленно). На самом деле топикстартер ничего не показал, а только сказал, что цикл for() крутится довольно медленно (как ему кажется). Вопрос совсем в другом. Как этот самый for() отрицательно влияет на общую производительность приема/передачи по UDP? На сколько процентов падает реальная скорость? На 1%, 5%, 10%, 50%? За что бороться то? Уверен, что оптимизированная memcpy, для начала, покажет, что к чему.
|
|
|
|
Сообщений в этой теме
Veg@ Оптимизация LwIP Feb 26 2010, 19:24 sergeeff Почитайте здесь : http://old.nabble.com/Tunning-TC... Feb 26 2010, 22:43 Veg@ Цитата(sergeeff @ Feb 27 2010, 01:43) Поч... Feb 27 2010, 09:57 sergeeff А что не понятно? Если ваш UDP пакет уходит за две... Feb 27 2010, 10:26 Veg@ Цитата(sergeeff @ Feb 27 2010, 13:26) А ч... Feb 27 2010, 12:14 sergeeff Цитата(Veg@ @ Feb 27 2010, 15:14) Размер ... Feb 27 2010, 12:52 Veg@ Функция memcpy выполняется довольно медленно, поэт... Feb 27 2010, 15:50 vadimuzzz код memcpy доступен, идет в стандартной поставке. ... Feb 27 2010, 17:31 dspx Цитата(Veg@ @ Feb 27 2010, 22:22) Т.е. с ... Feb 27 2010, 19:48 sergeeff А что автор так уперся в оптимизацию цикла for(...... Feb 27 2010, 23:55 Veg@ Цитата(sergeeff @ Feb 28 2010, 02:55) А ч... Feb 28 2010, 10:21 Veg@ ЦитатаНа самом деле топикстартер ничего не показал... Feb 28 2010, 20:35 sergeeff Вы запустите какой-нибудь обмен по UDP с компьютер... Feb 28 2010, 23:22 Veg@ Цитата(sergeeff @ Mar 1 2010, 02:22) Вы з... Mar 4 2010, 18:47
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|