From: Alexey Shabalin <a.shabalin@gmail.com> To: ALT Linux sysadmin discuss <sysadmins@lists.altlinux.org> Subject: [Sysadmins] howto: openvswitch+dpdk + mlx5(mellanox) Date: Mon, 13 Jan 2020 17:09:23 +0300 Message-ID: <CAEdvWkSSgFVFRjVHC3TE7j0XWn_COGi46PaD2DbZBj7M5+ZQRg@mail.gmail.com> (raw) День добрый. Посылаю сюда результаты, как заставить работать 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
reply other threads:[~2020-01-13 14:09 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=CAEdvWkSSgFVFRjVHC3TE7j0XWn_COGi46PaD2DbZBj7M5+ZQRg@mail.gmail.com \ --to=a.shabalin@gmail.com \ --cc=shaba@altlinux.org \ --cc=sysadmins@lists.altlinux.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
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