X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=ceph%2Fsrc%2Fspdk%2Fdpdk%2Fdoc%2Fguides%2Ffreebsd_gsg%2Finstall_from_ports.rst;h=d946f3f3b2eb9204da4723c86a0eca2b918d73b2;hb=f67539c23b11f3b8a2ecaeeddf7a403ae1c442a8;hp=633699e9d0f64dbff4b77964f480aeae30103bee;hpb=64a4c04e6850c6d9086e4c37f57c4eada541b05e;p=ceph.git diff --git a/ceph/src/spdk/dpdk/doc/guides/freebsd_gsg/install_from_ports.rst b/ceph/src/spdk/dpdk/doc/guides/freebsd_gsg/install_from_ports.rst index 633699e9d..d946f3f3b 100644 --- a/ceph/src/spdk/dpdk/doc/guides/freebsd_gsg/install_from_ports.rst +++ b/ceph/src/spdk/dpdk/doc/guides/freebsd_gsg/install_from_ports.rst @@ -7,35 +7,31 @@ Installing DPDK from the Ports Collection ========================================= The easiest way to get up and running with the DPDK on FreeBSD is to -install it from the ports collection. Details of getting and using the ports -collection are documented in the -`FreeBSD Handbook `_. +install it using the FreeBSD `pkg` utility or from the ports collection. +Details of installing applications from packages or the ports collection are documented in the +`FreeBSD Handbook `_, +chapter `Installing Applications: Packages and Ports `_. .. note:: - Testing has been performed using FreeBSD 10.0-RELEASE (x86_64) and requires the - installation of the kernel sources, which should be included during the - installation of FreeBSD. + Please ensure that the latest patches are applied to third party libraries + and software to avoid any known vulnerabilities. -Installing the DPDK FreeBSD Port --------------------------------- -On a system with the ports collection installed in ``/usr/ports``, the DPDK -can be installed using the commands: +Installing the DPDK Package for FreeBSD +--------------------------------------- -.. code-block:: console +DPDK can be installed on FreeBSD using the command:: - cd /usr/ports/net/dpdk + pkg install dpdk - make install - -After the installation of the DPDK port, instructions will be printed on +After the installation of the DPDK package, instructions will be printed on how to install the kernel modules required to use the DPDK. A more complete version of these instructions can be found in the sections :ref:`loading_contigmem` and :ref:`loading_nic_uio`. Normally, lines like those below would be added to the file ``/boot/loader.conf``. -.. code-block:: console +.. code-block:: shell # Reserve 2 x 1G blocks of contiguous memory using contigmem driver: hw.contigmem.num_buffers=2 @@ -46,86 +42,77 @@ those below would be added to the file ``/boot/loader.conf``. hw.nic_uio.bdfs="2:0:0,2:0:1" nic_uio_load="YES" + +Installing the DPDK FreeBSD Port +-------------------------------- + +If so desired, the user can install DPDK using the ports collection rather than from +a pre-compiled binary package. +On a system with the ports collection installed in ``/usr/ports``, the DPDK +can be installed using the commands:: + + cd /usr/ports/net/dpdk + + make install + + Compiling and Running the Example Applications ---------------------------------------------- When the DPDK has been installed from the ports collection it installs -its example applications in ``/usr/local/share/dpdk/examples`` - also accessible via -symlink as ``/usr/local/share/examples/dpdk``. These examples can be compiled and -run as described in :ref:`compiling_sample_apps`. In this case, the required -environmental variables should be set as below: +its example applications in ``/usr/local/share/dpdk/examples``. +These examples can be compiled and run as described in :ref:`compiling_sample_apps`. -* ``RTE_SDK=/usr/local/share/dpdk`` +.. note:: -* ``RTE_TARGET=x86_64-native-freebsd-clang`` + DPDK example applications must be complied using `gmake` rather than + BSD `make`. To detect the installed DPDK libraries, `pkg-config` should + also be installed on the system. .. note:: To install a copy of the DPDK compiled using gcc, please download the - official DPDK package from http://core.dpdk.org/download/ and install manually using + official DPDK package from https://core.dpdk.org/download/ and install manually using the instructions given in the next chapter, :ref:`building_from_source` An example application can therefore be copied to a user's home directory and -compiled and run as below: - -.. code-block:: console - - export RTE_SDK=/usr/local/share/dpdk - - export RTE_TARGET=x86_64-native-freebsd-clang +compiled and run as below, where we have 2 memory blocks of size 1G reserved +via the contigmem module, and 4 NIC ports bound to the nic_uio module:: cp -r /usr/local/share/dpdk/examples/helloworld . cd helloworld/ gmake - CC main.o - LD helloworld - INSTALL-APP helloworld - INSTALL-MAP helloworld.map - - sudo ./build/helloworld -l 0-3 -n 2 + cc -O3 -I/usr/local/include -include rte_config.h -march=corei7 -D__BSD_VISIBLE main.c -o build/helloworld-shared -L/usr/local/lib -lrte_bpf -lrte_flow_classify -lrte_pipeline -lrte_table -lrte_port -lrte_fib -lrte_ipsec -lrte_stack -lrte_security -lrte_sched -lrte_reorder -lrte_rib -lrte_rcu -lrte_rawdev -lrte_pdump -lrte_member -lrte_lpm -lrte_latencystats -lrte_jobstats -lrte_ip_frag -lrte_gso -lrte_gro -lrte_eventdev -lrte_efd -lrte_distributor -lrte_cryptodev -lrte_compressdev -lrte_cfgfile -lrte_bitratestats -lrte_bbdev -lrte_acl -lrte_timer -lrte_hash -lrte_metrics -lrte_cmdline -lrte_pci -lrte_ethdev -lrte_meter -lrte_net -lrte_mbuf -lrte_mempool -lrte_ring -lrte_eal -lrte_kvargs + ln -sf helloworld-shared build/helloworld - EAL: Contigmem driver has 2 buffers, each of size 1GB + sudo ./build/helloworld -l 0-3 EAL: Sysctl reports 8 cpus - EAL: Detected lcore 0 - EAL: Detected lcore 1 - EAL: Detected lcore 2 - EAL: Detected lcore 3 - EAL: Support maximum 64 logical core(s) by configuration. - EAL: Detected 4 lcore(s) - EAL: Setting up physically contiguous memory... - EAL: Mapped memory segment 1 @ 0x802400000: len 1073741824 - EAL: Mapped memory segment 2 @ 0x842400000: len 1073741824 - EAL: WARNING: clock_gettime cannot use CLOCK_MONOTONIC_RAW and HPET - is not available - clock timings may be less accurate. - EAL: TSC frequency is ~3569023 KHz - EAL: PCI scan found 24 devices - EAL: Master core 0 is ready (tid=0x802006400) - EAL: Core 1 is ready (tid=0x802006800) - EAL: Core 3 is ready (tid=0x802007000) - EAL: Core 2 is ready (tid=0x802006c00) + EAL: Detected 8 lcore(s) + EAL: Detected 1 NUMA nodes + EAL: Multi-process socket /var/run/dpdk/rte/mp_socket + EAL: Selected IOVA mode 'PA' + EAL: Contigmem driver has 2 buffers, each of size 1GB + EAL: Mapped memory segment 0 @ 0x1040000000: physaddr:0x180000000, len 1073741824 + EAL: Mapped memory segment 1 @ 0x1080000000: physaddr:0x1c0000000, len 1073741824 + EAL: PCI device 0000:00:19.0 on NUMA socket 0 + EAL: probe driver: 8086:153b net_e1000_em + EAL: 0000:00:19.0 not managed by UIO driver, skipping EAL: PCI device 0000:01:00.0 on NUMA socket 0 - EAL: probe driver: 8086:10fb rte_ixgbe_pmd - EAL: PCI memory mapped at 0x80074a000 - EAL: PCI memory mapped at 0x8007ca000 + EAL: probe driver: 8086:1572 net_i40e EAL: PCI device 0000:01:00.1 on NUMA socket 0 - EAL: probe driver: 8086:10fb rte_ixgbe_pmd - EAL: PCI memory mapped at 0x8007ce000 - EAL: PCI memory mapped at 0x80084e000 - EAL: PCI device 0000:02:00.0 on NUMA socket 0 - EAL: probe driver: 8086:10fb rte_ixgbe_pmd - EAL: PCI memory mapped at 0x800852000 - EAL: PCI memory mapped at 0x8008d2000 - EAL: PCI device 0000:02:00.1 on NUMA socket 0 - EAL: probe driver: 8086:10fb rte_ixgbe_pmd - EAL: PCI memory mapped at 0x801b3f000 - EAL: PCI memory mapped at 0x8008d6000 + EAL: probe driver: 8086:1572 net_i40e + EAL: PCI device 0000:01:00.2 on NUMA socket 0 + EAL: probe driver: 8086:1572 net_i40e + EAL: PCI device 0000:01:00.3 on NUMA socket 0 + EAL: probe driver: 8086:1572 net_i40e hello from core 1 hello from core 2 hello from core 3 hello from core 0 + .. note:: To run a DPDK process as a non-root user, adjust the permissions on