+.. SPDX-License-Identifier: BSD-3-Clause
+ Copyright(c) 2015 Intel Corporation.
+
How to get best performance with NICs on Intel platforms
========================================================
Network Interface Card Requirements
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Use a `DPDK supported <http://dpdk.org/doc/nics>`_ high end NIC such as the Intel XL710 40GbE.
+Use a `DPDK supported <https://core.dpdk.org/supported/>`_ high end NIC such as the Intel XL710 40GbE.
Make sure each NIC has been flashed the latest version of NVM/firmware.
The following are some recommendations on BIOS settings. Different platforms will have different BIOS naming
so the following is mainly for reference:
-#. Before starting consider resetting all BIOS settings to their default.
-
-#. Disable all power saving options such as: Power performance tuning, CPU P-State, CPU C3 Report and CPU C6 Report.
+#. Establish the steady state for the system, consider reviewing BIOS settings desired for best performance characteristic e.g. optimize for performance or energy efficiency.
-#. Select **Performance** as the CPU Power and Performance policy.
+#. Match the BIOS settings to the needs of the application you are testing.
-#. Disable Turbo Boost to ensure the performance scaling increases with the number of cores.
+#. Typically, **Performance** as the CPU Power and Performance policy is a reasonable starting point.
-#. Set memory frequency to the highest available number, NOT auto.
+#. Consider using Turbo Boost to increase the frequency on cores.
-#. Disable all virtualization options when you test the physical function of the NIC, and turn on ``VT-d`` if you wants to use VFIO.
+#. Disable all virtualization options when you test the physical function of the NIC, and turn on VT-d if you wants to use VFIO.
Linux boot command line
Configurations before running DPDK
----------------------------------
-1. Build the DPDK target and reserve huge pages.
+1. Reserve huge pages.
See the earlier section on :ref:`linux_gsg_hugepages` for more details.
- The following shell commands may help with building and configuration:
-
.. code-block:: console
- # Build DPDK target.
- cd dpdk_folder
- make install T=x86_64-native-linuxapp-gcc -j
-
# Get the hugepage size.
awk '/Hugepagesize/ {print $2}' /proc/meminfo
# Mount to the specific folder.
mount -t hugetlbfs nodev /mnt/huge
-2. Check the CPU layout using using the DPDK ``cpu_layout`` utility:
+2. Check the CPU layout using the DPDK ``cpu_layout`` utility:
.. code-block:: console
usertools/cpu_layout.py
- Or run ``lscpu`` to check the the cores on each socket.
+ Or run ``lscpu`` to check the cores on each socket.
3. Check your NIC id and related socket id: