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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Не работает драйвер сетевого устройства
k000858
сообщение Jun 15 2018, 03:27
Сообщение #31


Местный
***

Группа: Участник
Сообщений: 319
Регистрация: 31-01-12
Пользователь №: 69 978



Цитата(winniethepooh @ Jun 14 2018, 16:26) *
ничего не знаю про тест openwrt, но сомневаюсь что он может показать в каком слое стека застревают пакеты.

самый банальный тест пропускной способности с помощью iperf (v3.13), трафик из Lan'а в Wan (хардварного NAT'а нет).
При этом родной драйвер пропускает ~ гигабит, но загружает ЦПУ на 80%, мой драйвер пропускает лишь ~300Мбит/с, упираясь в 100% загрузку ЦПУ. очевидно что он выдал бы гигабит, если б хватило производительность ЦПУ.
Думаю сокет тут непричем, сам драйвер менее производительный. Возможно какая то его настройка (считай - дефайн или ключ компиляции) так влияет.

Повторюсь, драйвер работает по можели napi. Может есть мысли на что может тратиться процессорное время?
Go to the top of the page
 
+Quote Post
winniethepooh
сообщение Jun 15 2018, 07:17
Сообщение #32


Участник
*

Группа: Участник
Сообщений: 68
Регистрация: 3-06-15
Пользователь №: 86 995



Цитата(k000858 @ Jun 15 2018, 04:27) *
самый банальный тест пропускной способности с помощью iperf (v3.13), трафик из Lan'а в Wan (хардварного NAT'а нет).
При этом родной драйвер пропускает ~ гигабит, но загружает ЦПУ на 80%, мой драйвер пропускает лишь ~300Мбит/с, упираясь в 100% загрузку ЦПУ. очевидно что он выдал бы гигабит, если б хватило производительность ЦПУ.
Думаю сокет тут непричем, сам драйвер менее производительный. Возможно какая то его настройка (считай - дефайн или ключ компиляции) так влияет.

Повторюсь, драйвер работает по можели napi. Может есть мысли на что может тратиться процессорное время?

логика работы драйвера построена так что бы не отвлекать проц(используя dma разместить пакеты. ну вы должны это знать сами..)
у меня тоже проблема с медленной обработкой пакетов, я думаю это в уровне между стеком и пользовательским приложением(обработка совтовых прерываний, переключение из режима ядра в режим пользователя). я потратил много времени просматривая движение пакетов вверх по стеку и видел что они передаются без задержки. На уровне где расположены сокеты перестал работат printk и посмотреть где точно происходит задержка и потеря пакетов не удалось.
я предполагаю учитывая тяжеловесность слоя сокетов (я использую ARM Cortex-M3 144 Мгц, 16Мб ОЗУ uClinux) что задержка происходит в этом слое.

Сообщение отредактировал winniethepooh - Jun 15 2018, 07:43
Go to the top of the page
 
+Quote Post
k000858
сообщение Jun 21 2018, 10:09
Сообщение #33


Местный
***

Группа: Участник
Сообщений: 319
Регистрация: 31-01-12
Пользователь №: 69 978



Как в драйвере задать битовую маску CPU, которая после создания соединения прописывается в rps_cpus (/sys/class/net/<device>/queues/<rx-queue>/rps_cpus
) ???
Go to the top of the page
 
+Quote Post
Olej
сообщение Jul 1 2018, 11:19
Сообщение #34


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 11-09-05
Из: Харьков
Пользователь №: 8 458



Цитата(k000858 @ Jun 15 2018, 06:27) *
Повторюсь, драйвер работает по можели napi. Может есть мысли на что может тратиться процессорное время?

В модели NAPI есть такой важный параметр как счётчик числа сетевых пакетов, при приёме меньше которого драйвер возвращается из режима программного пулинга и переходимт в режим ожидания прерываний. Поиграйтесь с этим параметром.

P.S. Может подскажет какую мелочь, из об ласти сетевых драйверов или модулей фильтров сетевых протоколов вот этот текст: Практикум по Linux Kernel.
Ну и Сетевое программирование в Linux - здесь о стыке сокетных буферов в ядре с сокетами простанства пользователя.
Go to the top of the page
 
+Quote Post
k000858
сообщение Jul 2 2018, 03:11
Сообщение #35


Местный
***

Группа: Участник
Сообщений: 319
Регистрация: 31-01-12
Пользователь №: 69 978



Цитата(Olej @ Jul 1 2018, 14:19) *
В модели NAPI есть такой важный параметр как счётчик числа сетевых пакетов, при приёме меньше которого драйвер возвращается из режима программного пулинга и переходимт в режим ожидания прерываний. Поиграйтесь с этим параметром.

P.S. Может подскажет какую мелочь, из об ласти сетевых драйверов или модулей фильтров сетевых протоколов вот этот текст: Практикум по Linux Kernel.
Ну и Сетевое программирование в Linux - здесь о стыке сокетных буферов в ядре с сокетами простанства пользователя.

благодарю за пинок в возможно верном направлении smile3046.gif
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th September 2018 - 09:13
Рейтинг@Mail.ru


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