Size: a a a

2021 August 19

p

pragus in ENOG
А что с nat и traffic control?
источник

Вк

Ваша кукуха и её кор... in ENOG
nat эти кавиумы умеют (переписать пару байт в пакете несложно), а когда включаешь tc то железка отключается, всё идёт через ядро, и производительность падает до смешных цифр каких-то
источник

VS

Vitaly Shishkin in ENOG
Кстати, а FreeBSD только DPDK умеет или у неё есть свои аналоги XDP?
источник

p

pragus in ENOG
Да завезли в ядро flow offload, в том числе чисто программную версию.
источник

p

pragus in ENOG
netmap :) А dpdk для неё ограниченный
источник

VS

Vitaly Shishkin in ENOG
Просто я помню, что pfSense обещали DPDK, видимо чего-то другого не было или не подходило.
источник

p

pragus in ENOG
afaik, там netmap
источник

VS

Vitaly Shishkin in ENOG
Хм, погуглил. Видимо с DPDK у них что-то не получилось.
источник

Вк

Ваша кукуха и её кор... in ENOG
вот если кто-нибудь напишет vfio-pci для фряхи, то и dpdk взлетит
источник

VS

Vitaly Shishkin in ENOG
Написать-то напишет, а вот откроет ли код...
источник

Вк

Ваша кукуха и её кор... in ENOG
источник

Вк

Ваша кукуха и её кор... in ENOG
через uio можно крутить
источник

VS

Vitaly Shishkin in ENOG
Ведь непросто так фряху выбирают — чтобы код не возвращать.
источник

Вк

Ваша кукуха и её кор... in ENOG
ну вот можно через uio щаз поднять, и посмотреть как работает
я думаю не хуже чем uio под линуксом
источник

p

pragus in ENOG
afaik, фич меньше
источник

Вк

Ваша кукуха и её кор... in ENOG
хм
источник

Вк

Ваша кукуха и её кор... in ENOG
каких же
там же всё полезное в userspace, от ядра нам нужен только доступ к карте, доступ к замапленному в карту куску памяти, и cpu affinity
источник

p

pragus in ENOG
numa, kni, event api.
источник

IB

Ignas Bagdonas in ENOG
Узкое место тут - общая скорость памяти. И ширина, и количество раздельных каналов, и структура внутри канала, и отображение физических адресов в геометрические, и длина цикла памяти. Условный Cavium бросается пакетами по всем сторонам именно из-за большого количества раздельных и коротких каналов памяти, а не занимается пересыланием полной строки кеша при доступе к uint32 (да и не имеет кеша в понятии х86). Забрать хедеры и сами пакеты с кабеля - это просто и не дорого, а вот копаться в том самом хедере и сравнивать его поля со структурами в памяти - это дорого для платформ общего применения. Само ядро даже десятилетней платформы х86 может легко обрабатывать на уровне десятков миллионов пакетов на нетривиальном пути, но мгновенно упирается в память.

DPDK - это все-таки набор драйверов и некоторых отдельных компонентов, такой конструктор, из которого можно сделать аппликацию по своим потребностям. Драйверы там хорошые, но пакетная часть - она довольно ограничена в контексте параллеливания, большинство структур там под локами, и также совсем не дружелюбно к деталям памяти (и тут трудно делать более масштабируемый локинг, так как это сводится к еще большей нагрузке на память). Если задача в обработке 1Г - то это не имеет значения, но если 100Г+ - то будет больно.
источник

AS

Alex Semenyaka in ENOG
100Г на x86 - это, кмк, слишком амбициозно.
источник