diff options
Diffstat (limited to 'host/docs/dpdk.dox')
-rw-r--r-- | host/docs/dpdk.dox | 54 |
1 files changed, 27 insertions, 27 deletions
diff --git a/host/docs/dpdk.dox b/host/docs/dpdk.dox index 3d7b1687b..75a6f458c 100644 --- a/host/docs/dpdk.dox +++ b/host/docs/dpdk.dox @@ -26,22 +26,22 @@ computer. \subsection dpdk_installation DPDK Installation Instructions As a new and developing technology, the DPDK APIs are unstable. UHD requires -version 17.11. +version 18.11. -On Ubuntu 18.04/18.10, Fedora 28/29, or Debian Stretch (via backports), DPDK is -available in your distribution's repositories. For example, on Debian systems, -it can be obtained with the following command: +On Ubuntu 19.04/19.10, Fedora 31, or Debian Buster/Stretch (via backports), +DPDK is available in your distribution's repositories. For example, on Debian +systems, it can be obtained with the following command: sudo apt install dpdk dpdk-dev Otherwise, you'll need to follow the build guide at -https://doc.dpdk.org/guides-17.11/linux_gsg/build_dpdk.html . The software +https://doc.dpdk.org/guides-18.11/linux_gsg/build_dpdk.html . The software releases can be found at https://core.dpdk.org/download/. \subsection dpdk_system_configuration System Configuration The official documentation regarding system configuration can be found at -https://doc.dpdk.org/guides-17.11/linux_gsg/sys_reqs.html. +https://doc.dpdk.org/guides-18.11/linux_gsg/sys_reqs.html. First, you'll need to enable the IOMMU and set up some hugepages. DPDK will completely take over all available hugepages, so don't allocate all your memory @@ -51,7 +51,7 @@ For example, on a system with 16 GB of RAM, a generous appropriation of 512x 2 MiB pages was more than sufficient, and you likely won't need that much. For best results, hugepages should be enabled at boot. For example, using an -Intel IOMMU with Ubuntu 18.04 IOMMU drivers, the following line was needed in +Intel IOMMU with Ubuntu 19.04 IOMMU drivers, the following line was needed in our Grub config. iommu=pt intel_iommu=on hugepages=2048 @@ -67,7 +67,7 @@ load that driver with the following command: For NICs that require vfio-pci (like Intel's X520), you'll want to use the `dpdk-devbind.py` script to the vfio-pci driver. -See https://doc.dpdk.org/guides-17.11/linux_gsg/linux_drivers.html#binding-and-unbinding-network-ports-to-from-the-kernel-modules +See https://doc.dpdk.org/guides-18.11/linux_gsg/linux_drivers.html#binding-and-unbinding-network-ports-to-from-the-kernel-modules for more details. With the hugepages, IOMMU, and drivers set up, the system is ready for DPDK to @@ -92,47 +92,47 @@ options: ;The value here represents a config, so you could have another section labeled use_dpdk=myconf ;instead and swap between them [use_dpdk=1] - ;dpdk-mtu is the NIC's MTU setting + ;dpdk_mtu is the NIC's MTU setting ;This is separate from MPM's maximum packet size--tops out at 4000 - dpdk-mtu=9000 - ;dpdk-driver is the -d flag for the DPDK EAL. If DPDK doesn't pick up the driver for your NIC + dpdk_mtu=9000 + ;dpdk_driver is the -d flag for the DPDK EAL. If DPDK doesn't pick up the driver for your NIC ;automatically, you may need this argument to point it to the folder where it can find the drivers ;Note that DPDK will attempt to load _everything_ in that folder as a driver, so you may want to ;create a separate folder with symlinks to the librte_pmd_* and librte_mempool_* libraries. - dpdk-driver=/usr/local/lib/dpdk-pmds/ - ;dpdk-corelist is the -l flag for the DPDK EAL. See more at the link - ; https://doc.dpdk.org/guides-17.11/linux_gsg/build_sample_apps.html#running-a-sample-application - dpdk-corelist=0,1 - ;dpdk-num-mbufs is the total number of packet buffers allocated + dpdk_driver=/usr/local/lib/dpdk-pmds/ + ;dpdk_corelist is the -l flag for the DPDK EAL. See more at the link + ; https://doc.dpdk.org/guides-18.11/linux_gsg/build_sample_apps.html#running-a-sample-application + dpdk_corelist=0,1 + ;dpdk_num_mbufs is the total number of packet buffers allocated ;to each direction's packet buffer pool ;This will be multiplied by the number of NICs, but NICs on the same ;CPU socket share a pool - dpdk-num-mbufs=4095 - ;dpdk-mbuf-cache-size is the number of buffers to cache for a CPU + dpdk_num_mbufs=512 + ;dpdk_mbuf_cache_size is the number of buffers to cache for a CPU ;The cache reduces the interaction with the global pool - dpdk-mbuf-cache-size=315 + dpdk_mbuf_cache_size=64 The other sections fall under per-NIC arguments. The key for NICs is the MAC address, and it must be in a particular format. Hex digits must all be lower case, and octets must be separated by colons. Here is an example: - [dpdk-mac=3c:fd:fe:a2:a9:09] - ;dpdk-io-cpu selects the CPU that this NIC's driver will run on + [dpdk_mac=3c:fd:fe:a2:a9:09] + ;dpdk_io_cpu selects the CPU that this NIC's driver will run on ;Multiple NICs may occupy one CPU, but the I/O thread will completely ;consume that CPU. Also, 0 is reserved for the master thread (i.e. ;the initial UHD thread that calls init() for DPDK). Attempting to ;use it as an I/O thread will only result in hanging. - dpdk-io-cpu = 1 - ;dpdk-ipv4 specifies the IPv4 address, and both the address and + dpdk_io_cpu = 1 + ;dpdk_ipv4 specifies the IPv4 address, and both the address and ;subnet mask are required (and in this format!). DPDK uses the ;netmask to create a basic routing table. Routing to other networks ;(i.e. via gateways) is not permitted. - dpdk-ipv4 = 192.168.10.1/24 + dpdk_ipv4 = 192.168.10.1/24 - [dpdk-mac=3c:fd:fe:a2:a9:0a] - dpdk-io-cpu = 1 - dpdk-ipv4 = 192.168.20.1/24 + [dpdk_mac=3c:fd:fe:a2:a9:0a] + dpdk_io_cpu = 1 + dpdk_ipv4 = 192.168.20.1/24 \section dpdk_using Using DPDK in UHD |