Jump to content

    

Нужна утилита для измерения производительности сети

1 час назад, haker_fox сказал:

Хорошо. Есть плата с LPC4337. На ней крутится FreeRTOS + lwIP. Есть Ethernet на плате. Нужно протестировать максимальную скорость обмена по этому порту. 

 Iperf настолько распространённая штука, что сервер есть в составе примеров LwIP. Запускайте его на МК, а на ПК Iperf в режиме клиента и тестируйте по-всякому. И ничего для ПК писать не нужно дополнительно.

Share this post


Link to post
Share on other sites
5 minutes ago, arhiv6 said:

Iperf настолько распространённая штука, что сервер есть в составе примеров LwIP.

Отлично!!! Ещё раз огромное спасибо! буду с этим разбираться на следующей неделе. Рабочей неделе.

Share this post


Link to post
Share on other sites
57 minutes ago, haker_fox said:

Отлично!!! Ещё раз огромное спасибо! буду с этим разбираться на следующей неделе. Рабочей неделе.

Он вам покажет 98 Mbit.  Iperf на LwIP можно сказать фэйковый.
Тестить надо на реальных файловых операциях или что у вас там качать собирается.   

Т.е. в условиях где идет копирование буферов, выделения памяти, работа периферии в своих задачах, есть кучка объектов синхронизации и еще диагностические логи и проч. И чтоб еще 30% свободного процессорного времени осталось. Вот тогда будет правда. 

Share this post


Link to post
Share on other sites
16 minutes ago, AlexandrY said:

Вот тогда будет правда. 

Подскажите, пожалуйста, как это делать? Чувствую, что свою утилиту придётся городить. Либо встраивать статистику в lwIP. Возможно, она там есть. Не разбирался.

Share this post


Link to post
Share on other sites
22 минуты назад, haker_fox сказал:

Подскажите, пожалуйста, как это делать? Чувствую, что свою утилиту придётся городить. Либо встраивать статистику в lwIP. Возможно, она там есть. Не разбирался.

Похоже, что Ваша проблема в разбирательстве... Надо разобраться в том, что надо... Вам нужно то, что хочет знать начальство... Надо уважить... удовлетворить.

Edited by Tanya

Share this post


Link to post
Share on other sites
7 часов назад, haker_fox сказал:

Хорошо. Есть плата с LPC4337. На ней крутится FreeRTOS + lwIP. Есть Ethernet на плате. Нужно протестировать максимальную скорость обмена по этому порту. Я пока иду в таком направлении: поднял одну задачу, которая ждёт соединения через TCP-протокол на некотором порте. Как только соединение установлено, задача зацикливается и ждёт данных. Принятые данные она отправляет назад. Нужна какая-то прога для линукса (обязательно для линукса), которая подключится к плате, и будет гнать в неё трафик (произвольный). Измерять скорость передачи данных. Среднюю. Вот как-то так.

Ну вот теперь всё ясно.:ok:   Ну разве что ещё можно указать: тест только одного TCP-соединения на этот порт или нескольких одновременно.  :pleasantry:

Раз для линуха, тут я пас - ничего не подскажу. Хотя не понятно - чем для этой платы соединение "из под линуха" будет отличаться от "из под винды"? Думаете скорость будет другая? Или опять - начальник-самодур?  :biggrin:

Если по простому, из под винды можно протестить скорость вашей платы той утилитой, что я выше указывал: NetView. Там есть режим терминала: открываете нужный TCP-порт и отправляете в него большой файл, заполненный случайными данными (архив какой-нить или фильм) и измеряете время передачи. Я так свои TCP-сокеты тестил. Правда я не совсем уверен, что NetView по максимуму использует пропускную способность канала и не будет вносить лишнего торможения. Можно ещё им же тут же принимать эхо-поток, складывать его в файл и потом сравнить с отправленным файлом (для контроля целостности).

Ей же можно и скорость в несколько одновременных соединений проверить.

7 часов назад, haker_fox сказал:

Теперь я более ясно выразился, что мне нужно?-:)

Теперь - да  :yes3:

Share this post


Link to post
Share on other sites
7 часов назад, aaarrr сказал:

xxx@w02-debian:~$ ping -s 10000 192.168.2.13
PING 192.168.2.13 (192.168.2.13) 10000(10028) bytes of data.
10008 bytes from 192.168.2.13: icmp_seq=1 ttl=128 time=0.791 ms

Видимо используются Jumbo-кадры или фрагментированные IP. Подозреваю что ни то ни другое не реализовано в прошивке ТС-а. Ибо не нужно. Да и сеть не всякая пропустит.

Share this post


Link to post
Share on other sites
5 часов назад, haker_fox сказал:

Подскажите, пожалуйста, как это делать? Чувствую, что свою утилиту придётся городить. Либо встраивать статистику в lwIP. Возможно, она там есть. Не разбирался.

Смотря что за сервер вы тестируете на своей LPC4330. Если это например веб-сервер, то прицепите к нему большой файл и скачивайте его браузером и меряйте время. Так будет наиболее честно.

Причём памяти под файл много не надо: можно его содержимое на лету генерить или многократно дублировать небольшой файл, заранее указав огромный размер в несколько гигабайт. Конечно Это будет только практически однонаправленный поток.

Share this post


Link to post
Share on other sites
5 hours ago, jcxz said:

Ей же можно и скорость в несколько одновременных соединений проверить.

Благодарю!

5 hours ago, jcxz said:

Так будет наиболее честно.

Самое интересное, что эти варианты мне приходили в голову, но казались банальными. Т.е. я думал, что для тестирования скорости сети, нужны какие-то более "высокопарные" действия. А, оказывается, всё весьма просто!

Share this post


Link to post
Share on other sites
20 hours ago, haker_fox said:

Хорошо. Есть плата с LPC4337. ...

С точки зрения целесообразности точности измерения, или правдивости измерений - это всё условности в сети. Потому как ситуация может поменяться в любой момент времени. Исходя из этого, делать что то своё в плане диагностики - путь тупиковый, т.к. вызывает больше вопросов чем даёт ответов. Правильнее, как тут прозвучало выше (типо iperf, ping), поддержать стандарт утилит которые а) понятно как использовать любому линуксоиду б) понятен результат выводимый ими. Измерять более честно, правдиво и иже - зачем? Чтоб чтобы что? погордиться, что в момент икс была скорострельность канала 5 попугаев?

 

Обычно те, кто занимаются сетями действуют по следующей цепочке => детектирование проблемы, быстрая проверка возможных причин, детектирование причины проблемы, устранение. Так вот, "быстрая проверка возможных причин" достигается применением и осмыслением полученных результатов стандартных утилит. Подозрение на маленькую скорость? прогнали iperf между узлами, увидели порядки чисел около 9xx мегабит в секунду - значит данный канал 1 гигабит выдаёт...

 

Кстати при реализации поддержки стандартных протоколов, можно собирать и выдавать свою статистику - которая на Ваш взгляд может более полно ответить на те вопросы которые помогли бы в решении практических задач либо по узлу либо по связи. Например собирать статистику по "плохим" IP пакетам, или там кол-ву всего принятых пакетов и т.д.. Но как правило всё уже придумано до нас, и инфу по всевозможным счётчикам Вы сможете найти на любом управляемом свитче или роутере.

 

с уважением
(круглый)

Edited by kolobok0

Share this post


Link to post
Share on other sites
7 часов назад, haker_fox сказал:

Самое интересное, что эти варианты мне приходили в голову, но казались банальными. Т.е. я думал, что для тестирования скорости сети, нужны какие-то более "высокопарные" действия. А, оказывается, всё весьма просто!

Если вам нужно не просто померить скорость, а и доказать кому то (начальнику?) правильность измерений, то самый правильный способ - самый дубовый. Т.е.: как я писал выше - скачать большой файл и простым секундомером померить время скачки. Потому как напишите вы свою утилиту, она будет что-то мерить, но как вы сможете доказать кому-то, что она меряет правильно? По идее тогда её нужно ещё где-то сертифицировать как средство измерения. А секундомеру в своей руке люди доверяют, как правило.

Share this post


Link to post
Share on other sites
46 minutes ago, kolobok0 said:

С точки зрения целесообразности точности измерения, или правдивости измерений - это всё условности в сети. Потому как ситуация может поменяться в любой момент времени. Исходя из этого, делать что то своё в плане диагностики - путь тупиковый, т.к. вызывает больше вопросов чем даёт ответов. Правильнее, как тут прозвучало выше (типо iperf, ping), поддержать стандарт утилит которые а) понятно как использовать любому линуксоиду б) понятен результат выводимый ими. Измерять более честно, правдиво и иже - зачем? Чтоб чтобы что? погордиться, что в момент икс была скорострельность канала 5 попугаев?

На любом ARM-е с частотой выше 100 МГц голый iperf реализованный в lwip выдаст максимальную скорость в 98 Mbit на пакетах в 1500 байт.
Никакого особого смысла в таком тестировании нет. 
Речь может идти только о выявлении грубых ошибок вроде плохой инициализации DMA, выбора медленной области памяти для подготовки пакетов, софтовый расчет CRC, опции компиляции, медленные ISR  и проч.

Эта тема вообще не про сеть, а про правильную архитектуру софта.  

Share this post


Link to post
Share on other sites
3 hours ago, AlexandrY said:

На любом ARM-е ...Никакого особого смысла в таком тестировании нет. ...

"Открою большой секрет" наверное, но любой писюк на прямом подключении хост-хост покажет то же самое, что Вы сказали 98Mbit. Однако такие тесты (я описал один из примеров применения таких тестов), имеют смысл в сетевом мире и юзаются и в хвост и в гриву. Более того ровно 98Mbit в реальных пром. сетях маловероятно. Будет цифра в зависимости от ситуации, от загрузки, от настроек...ну и т.д...(речь про сотку в частности).

Мессага от ТС - "Нужно протестировать максимальную скорость обмена по этому порту" , т.е. нужно проверить разработчика, что рисуемые им цифры круто выглядят и нет лишних циклов вставленных в код дабы ухудшить скорость. Возможно Вы и правы... Но тогда реализовывать ничего и не нужно, кроме вывода крутых цифр на экран...


(круглый)
ЗЫ
Я исходил из жизни. Возможно ТС нужна показуха...Тогда опс...

Edited by kolobok0

Share this post


Link to post
Share on other sites
1 minute ago, kolobok0 said:

Я исходил из жизни. Возможно ТС нужна показуха...Тогда опс...

ТС написал для чего это нужно. Читайте внимательно.

Share this post


Link to post
Share on other sites
15 minutes ago, haker_fox said:

... Читайте внимательно.

Читаю...

"Нужно протестировать максимальную скорость обмена по этому порту" 

Поясните пожалуйста:

заявленным характеристикам (тот кто проверяет) железки не верят(100Mbit), стандартным прожкам не верят(iperf, ping), но верят Вашим попугаям???? 
Или всё же воткнули устройство в сетку и прогнали стандартные тулзы типа pinga и iperf ? И используем эту методу дальше для поиска узких мест при эксплуатации.

 

Что надо то?
PS

т.е. проверяют Вас или устройство????

ЗЫ ЗЫ

Возможно ещё варианты - проверять скорострельность функционала, который реализует Ваше устройство. Ну тогда это вообще не на железке и свои типы счётчиков и свои методологии уже...кмк.

Edited by kolobok0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now