Перейти к содержанию

web на stm32

Прошу совета. Есть проект на STM32F107RCT6 c DP83848IVV, без ОС, работает корректно и стабильно (до -20C), подняты и работают dhcp, dns, ntp, icmp, web + крутятся свои задачи.

Вопрос к web. Долго загружается страница, до 2-3 секунд. Проверено на разных браузерах. По логам видно, что браузер делает паузы до 50-200мс и их много. Лог шарка привожу. Самая большая задержка в этом логе от девайса к компу ~7мс. Короткий css файл стилей быcтро передается, за ~210мс.

Лог [attachment=110650:q.rar]

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Паузы, судя по дампу, делает не компьютер, а контроллер отдаёт пакеты со скоростью 5 пакетов в секунду.
Ищите, почему у Вас так редко происходит отправка пакетов.
Возможно большие накладные расходы. Возможно редко вызывается поллер сети. Возможно ещё до чёртиков вариантов.
Если есть свободные пины - выводите на них сигнал при отправке данных, например. Начало отправки - пин поднимается. Конец отправки - опускается. Наблюдайте за сигналом. Когда поднимается, что долго держит контекст исполнения. И так далее.
Задержки - стабильны - 200мс. Значит, явно дело в коде.
На том же кристалле (разве что без других задач) можно гнать трафик более 50МБит/с (проверял на UDP).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(AlanDrakes @ Jan 13 2018, 11:29) <{POST_SNAPBACK}>
Паузы, судя по дампу, делает не компьютер, а контроллер отдаёт пакеты со скоростью 5 пакетов в секунду.
Ищите, почему у Вас так редко происходит отправка пакетов.
...
Задержки - стабильны - 200мс. Значит, явно дело в коде.

Нет. Из лога: пакет №27, сформирован и отправлен устройством (ip: ...100, mac 00:80:e1...) через ~0,539мс, размер данных 536. Пакет №28, ответ от компа (ip: ...99) сформирован и отправлен через ~203.572мс, размер данных 0.
Т.е. устройство достаточно быстро отвечает. Самая большая задержка от устройства ~6.592мс (пакет №5), длина 536. Минимальная задержка от устройства ~0.009мс (пакет №11), длина 536.

Увеличение window size поможет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(prottoss @ Jan 13 2018, 14:08) <{POST_SNAPBACK}>
А сейчас какой максимальный?

2144

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(bzx @ Jan 13 2018, 17:14) <{POST_SNAPBACK}>
2144

Я, честно скажу, не смотрел лог - не знаю чем открыть. Почему нельзя сделать размер окна максимальным? Возможно носитель данных тупит?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(prottoss @ Jan 13 2018, 14:26) <{POST_SNAPBACK}>
Я, честно скажу, не смотрел лог - не знаю чем открыть...

Wireshark

Цитата(prottoss @ Jan 13 2018, 14:26) <{POST_SNAPBACK}>
...Почему нельзя сделать размер окна максимальным? Возможно носитель данных тупит?

Нельзя. Точнее, физически не возможно. Максимальный размер окна 2^16-1 (65535). Размер ram у STM32F107RCT6 64к, поэтому и невозможно окно сделать на максимальный размер - есть ограничения в памяти.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Эххх, ну миллион же тем на форуме (а в остальных интернетах - еще больше). Ключевое слово - "Delayed ACK".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(Rst7 @ Jan 13 2018, 14:46) <{POST_SNAPBACK}>
...Ключевое слово - "Delayed ACK".

Агась, опять на те же грабли наступил...

Спасибо за правильный пинок.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Вся сессия (от syn до fin) по загрузке страниц, в том числе динамических проходит до ~70мс. Браузер быстро открывает.
Плюс увеличен win size до 5840 и размер передаваемого сообщения до максимума 1460.

Вопрос закрыт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация