* [Sysadmins] howto: openvswitch+dpdk + mlx5(mellanox)
@ 2020-01-13 14:09 Alexey Shabalin
0 siblings, 0 replies; only message in thread
From: Alexey Shabalin @ 2020-01-13 14:09 UTC (permalink / raw)
To: ALT Linux sysadmin discuss
День добрый.
Посылаю сюда результаты, как заставить работать openvswitch+dpdk на
сетевых карточках mellanox. Вроде есть документация на официальном
сайте (http://docs.openvswitch.org/en/latest/intro/install/dpdk/), но,
как всегда, не совсем полная или понятная. Поэтому хотел где нибудь
оставить на память(для себя в первую очередь :)
1) Настройка hugepages
- добавить
default_hugepagesz=1G hugepagesz=1G iommu=pt intel_iommu=on
в /etc/sysconfig/grub2 к параметрам загрузки (размер страниц можно и
неменять, делайте на своё усмотрение по вкусу)
- в /etc/sysctl.d/hugepages.conf определить нужной количество hugepages
vm.nr_hugepages=16
2) для сетевых карты Intel нужно "отбиндить" родной ядерный модуль, и
прибиндить модуль vfio или uio. Для этого лучше воспользоваться
пакетом driverctl.
Для сетевых карт mellanox этого делать не надо (они в этом смысле
особенные). Просто пропускаем этот пункт.
3) Настройка openvswitch:
# ovs-vsctl add-br vmbr0 datapath_type=netdev (или переключить
существующий бридж ovs-vsctl set bridge vmbr0 datapath_type=netdev)
# ovs-vsctl set Open_vSwitch . other_config:dpdk-init=true
# ovs-vsctl --no-wait set Open_vSwitch .
other_config:dpdk-socket-mem="1024,0" (ограничить память и
используемое ядро)
При добавлении порта сетевой карты в openvswitch
# ovs-vsctl add-port vmbr0 dpdk-p0 -- set Interface dpdk-p0 type=dpdk
-- set Interface dpdk-p0 options:dpdk-devargs=0000:5e:01.2
получаем ошибку:
ovs-vsctl: Error detected while setting up 'dpdk-p0': Error attaching
device '0000:5e:01.2' to DPDK. See ovs-vswitchd log for details.
# ovs-vsctl show
a513afa7-32b1-476f-b42f-ccc797dd11d3
Bridge "vmbr0"
Port "dpdk-p0"
Interface "dpdk-p0"
type: dpdk
options: {dpdk-devargs="0000:5e:01.2"}
error: "Error attaching device '0000:5e:01.2' to DPDK"
В логах ошибка такая:
|netdev_dpdk|ERR|Failed to create mempool "ovsd78992f200021580262144"
with a request of 262144 mbufs
|netdev_dpdk|ERR|Failed to create memory pool for netdev dpdk-p0, with
MTU 1500 on socket 0: Invalid argument
|dpif_netdev|ERR|Failed to set interface dpdk-p0 new configuration
Вот эта ошибка очень плохо гуглится, и рецептов исправления я не видел.
Не совсем понятно, то ли это особенность нашей сборки, но почему-то не
может создаться memory pool. тестовые утилиты (dpdk-test-bbdev) начали
работать только после указания какую библиотеку использовать (-d
/usr/lib64/librte_mempool_ring.so.1). Этот же параметр надо передать и
для работы в openvswitch:
# ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-extra=" -d
/usr/lib64/librte_mempool_ring.so.1"
После этого все успешно работает.
# ovs-vsctl show
a513afa7-32b1-476f-b42f-ccc797dd11d3
Bridge "vmbr0"
Port "dpdk-p0"
Interface "dpdk-p0"
type: dpdk
options: {dpdk-devargs="0000:5e:00.1"}
Port "vmbr0"
Interface "vmbr0"
type: internal
ovs_version: "2.11.1"
# ovs-vsctl list Open_vSwitch .
_uuid : a513afa7-32b1-476f-b42f-ccc797dd11d3
bridges : [b86c798d-0249-4453-95bc-a6135fd4343a]
cur_cfg : 13
datapath_types : [netdev, system]
db_version : "7.16.1"
dpdk_initialized : true
dpdk_version : "DPDK 18.11.1"
external_ids : {hostname="xxxxxxxx",
rundir="/var/run/openvswitch",
system-id="254cce7e-4957-4ef7-a026-75361e6cca30"}
iface_types : [dpdk, dpdkr, dpdkvhostuser,
dpdkvhostuserclient, erspan, geneve, gre, internal, "ip6erspan",
"ip6gre", lisp, patch, stt, system, tap, vxlan]
manager_options : []
next_cfg : 13
other_config : {dpdk-extra=" -d
/usr/lib64/librte_mempool_ring.so.1", dpdk-init="true"}
ovs_version : "2.11.1"
ssl : []
statistics : {}
system_type : altlinux
system_version : "9.0"
--
Alexey Shabalin
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-01-13 14:09 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-13 14:09 [Sysadmins] howto: openvswitch+dpdk + mlx5(mellanox) Alexey Shabalin
ALT Linux sysadmins discussion
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/sysadmins/0 sysadmins/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 sysadmins sysadmins/ http://lore.altlinux.org/sysadmins \
sysadmins@lists.altlinux.org sysadmins@lists.altlinux.ru sysadmins@lists.altlinux.com
public-inbox-index sysadmins
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.sysadmins
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git