From patchwork Wed Apr 6 15:11:03 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Juraj_Linke=C5=A1?= X-Patchwork-Id: 109288 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 59264A0508; Wed, 6 Apr 2022 17:14:04 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E74C14291D; Wed, 6 Apr 2022 17:11:41 +0200 (CEST) Received: from lb.pantheon.sk (lb.pantheon.sk [46.229.239.20]) by mails.dpdk.org (Postfix) with ESMTP id 705F9428F0 for ; Wed, 6 Apr 2022 17:11:34 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by lb.pantheon.sk (Postfix) with ESMTP id D058B16BC11; Wed, 6 Apr 2022 17:11:33 +0200 (CEST) X-Virus-Scanned: amavisd-new at siecit.sk Received: from lb.pantheon.sk ([127.0.0.1]) by localhost (lb.pantheon.sk [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id E22uZpEgIdjd; Wed, 6 Apr 2022 17:11:32 +0200 (CEST) Received: from entguard.lab.pantheon.local (unknown [46.229.239.141]) by lb.pantheon.sk (Postfix) with ESMTP id 03D6119E0DA; Wed, 6 Apr 2022 17:11:16 +0200 (CEST) From: =?utf-8?q?Juraj_Linke=C5=A1?= To: thomas@monjalon.net, david.marchand@redhat.com, Honnappa.Nagarahalli@arm.com, ohilyard@iol.unh.edu, lijuan.tu@intel.com Cc: dev@dpdk.org, =?utf-8?q?Juraj_Linke=C5=A1?= Subject: [RFC PATCH v1 21/24] dts: merge DTS doc/dts_gsg/usr_guide/setup_dut.rst to DPDK Date: Wed, 6 Apr 2022 15:11:03 +0000 Message-Id: <20220406151106.2915304-22-juraj.linkes@pantheon.tech> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220406151106.2915304-1-juraj.linkes@pantheon.tech> References: <20220406151106.2915304-1-juraj.linkes@pantheon.tech> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org --- dts/doc/dts_gsg/usr_guide/setup_dut.rst | 150 ++++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 dts/doc/dts_gsg/usr_guide/setup_dut.rst diff --git a/dts/doc/dts_gsg/usr_guide/setup_dut.rst b/dts/doc/dts_gsg/usr_guide/setup_dut.rst new file mode 100644 index 0000000000..c47db8b781 --- /dev/null +++ b/dts/doc/dts_gsg/usr_guide/setup_dut.rst @@ -0,0 +1,150 @@ +Set up DUT +=========== + +This chapter describes the packages required to compile the DPDK in DUT. + +BIOS Setting Prerequisite on x86 +-------------------------------- + +DPDK prefers devices bound to ``vfio-pci`` kernel module, therefore, `VT-x` and `VT-d` should be enabled. + +.. code-block:: console + + Advanced -> Integrated IO Configuration -> Intel(R) VT for Directed I/O + Advanced -> Processor Configuration -> Intel(R) Virtualization Technology + + +Set Hugepages +------------------ + +Hugepage support is required for the large memory pool allocation used for packet buffers +(the HUGETLBFS option must be enabled in the running kernel as indicated the previous section). +By using hugepage allocations, performance is increased since fewer pages are needed, +and therefore less Translation Lookaside Buffers (TLBs, high speed translation caches), +which reduce the time it takes to translate a virtual page address to a physical page address. +Without hugepages, high TLB miss rates would occur with the standard 4k page size, slowing performance. + + +Edit /etc/default/grub +~~~~~~~~~~~~~~~~~~~~~~~ + +Set GRUB_CMDLINE_LINUX in etc/default/grub: + +for 2M pagesize:: + + GRUB_CMDLINE_LINUX="intel_iommu=on iommu=pt hugepagesz=2M hugepages=1024 default_hugepagesz=2M intel_pstate=disable" + +for 1G pagesize:: + + GRUB_CMDLINE_LINUX="intel_iommu=on iommu=pt hugepagesz=1G hugepages=16 default_hugepagesz=1G intel_pstate=disable" + +Execute grub-mkconfig +~~~~~~~~~~~~~~~~~~~~~~~ + +execute below command:: + + # grub-mkconfig -o /boot/grub/grub.cfg + +.. note:: + + some OS may need execute following command:: + + #grub2-mkconfig -o /boot/grub2/grub.cfg + +then reboot OS to make the hugepage setting take effect. + +Packages Required +------------------ + +**Required Tools and Libraries:** + +.. note:: + + The setup commands and installed packages needed on various systems may be different. + For details on Linux distributions and the versions tested, please consult the DPDK Release Notes. + +* General development tools including a supported C compiler such as gcc (version 4.9+) or clang (version 3.4+). + + * For RHEL/Fedora systems these can be installed using ``dnf groupinstall "Development Tools"`` + + * For Ubuntu/Debian systems these can be installed using ``apt install build-essential`` + +* Python 3.5 or later. + +* Meson (version 0.49.2+) and ninja + + * ``meson`` & ``ninja-build`` packages in most Linux distributions + + * If the packaged version is below the minimum version, the latest versions + can be installed from Python's "pip" repository: ``pip3 install meson ninja`` + +* ``pyelftools`` (version 0.22+) + + * For Fedora systems it can be installed using ``dnf install python-pyelftools`` + + * For RHEL/CentOS systems it can be installed using ``pip3 install pyelftools`` + + * For Ubuntu/Debian it can be installed using ``apt install python3-pyelftools`` + +* Library for handling NUMA (Non Uniform Memory Access). + + * ``numactl-devel`` in RHEL/Fedora; + + * ``libnuma-dev`` in Debian/Ubuntu; + +.. note:: + + Please ensure that the latest patches are applied to third party libraries + and software to avoid any known vulnerabilities. + + +**Optional Tools:** + +* Intel® C++ Compiler (icc). For installation, additional libraries may be required. + See the icc Installation Guide found in the Documentation directory under the compiler installation. + +* IBM® Advance ToolChain for Powerlinux. This is a set of open source development tools and runtime libraries + which allows users to take leading edge advantage of IBM's latest POWER hardware features on Linux. To install + it, see the IBM official installation document. + +**Additional Libraries** + +A number of DPDK components, such as libraries and poll-mode drivers (PMDs) have additional dependencies. +For DPDK builds, the presence or absence of these dependencies will be automatically detected +enabling or disabling the relevant components appropriately. + +In each case, the relevant library development package (``-devel`` or ``-dev``) is needed to build the DPDK components. + +For libraries the additional dependencies include: + +* libarchive: for some unit tests using tar to get their resources. + +* libelf: to compile and use the bpf library. + + +Compile DPDK +------------- + +Now we can compile the DPDK to check whether the DUT ENV is OK. + +commands:: + + CC=gcc meson --werror -Denable_kmods=True -Dlibdir=lib --default-library=static x86_64-native-linuxapp-gcc + ninja -C x86_64-native-linuxapp-gcc -j 110 + +if there are no errors occurred during the compilation and the DPDK apps have been generated, +it means the DUT ENV is OK now. + +Check dpdk-testpmd:: + + root@dpdk:~/dpdk# ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd --help + EAL: Detected 72 lcore(s) + EAL: Detected 2 NUMA nodes + + Usage: ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd [options] + + EAL common options: + -c COREMASK Hexadecimal bitmask of cores to run on + -l CORELIST List of cores to run on + ... + --match-allocations Free hugepages exactly as allocated