xref: /dpdk/doc/guides/linux_gsg/amd_platform.rst (revision 35ec7892a7fb862687b2ce6a25e46e76a9dd0d32)
1de1f01a8SVipin Varghese.. SPDX-License-Identifier: BSD-3-Clause
2de1f01a8SVipin Varghese   Copyright(c) 2023 Advanced Micro Devices, Inc. All rights reserved.
3de1f01a8SVipin Varghese
4de1f01a8SVipin VargheseHow to get best performance on AMD platform
5de1f01a8SVipin Varghese===========================================
6de1f01a8SVipin Varghese
7de1f01a8SVipin VargheseThis document provides a detailed, step-by-step guide
8de1f01a8SVipin Vargheseon configuring AMD EPYC System-on-Chip (SoC) for optimal performance
9de1f01a8SVipin Varghesein DPDK applications across different SoC families.
10de1f01a8SVipin Varghese
11de1f01a8SVipin VargheseThe overall performance is influenced by factors such as BIOS settings,
12de1f01a8SVipin VargheseNUMA per socket configuration, memory per NUMA allocation,
13de1f01a8SVipin Vargheseand proximity to IO devices.
14de1f01a8SVipin Varghese
15de1f01a8SVipin VargheseThese are covered in various sections of tuning guides shared below.
16de1f01a8SVipin Varghese
17de1f01a8SVipin Varghese
18de1f01a8SVipin VargheseTuning Guides for AMD EPYC SoC
19de1f01a8SVipin Varghese------------------------------
20de1f01a8SVipin Varghese
21de1f01a8SVipin Varghese#. `MILAN <https://www.amd.com/content/dam/amd/en/documents/epyc-technical-docs/tuning-guides/data-plane-development-kit-tuning-guide-amd-epyc7003-series-processors.pdf>`_
22de1f01a8SVipin Varghese
23de1f01a8SVipin Varghese#. `GENOA <https://www.amd.com/content/dam/amd/en/documents/epyc-technical-docs/tuning-guides/58017-amd-epyc-9004-tg-data-plane-dpdk.pdf>`_
24de1f01a8SVipin Varghese
25de1f01a8SVipin Varghese#. `BERGAMO|SIENNA <https://www.amd.com/content/dam/amd/en/documents/epyc-technical-docs/tuning-guides/58310_amd-epyc-8004-tg-data-plane-dpdk.pdf>`_
26de1f01a8SVipin Varghese
27de1f01a8SVipin Varghese
28de1f01a8SVipin VargheseGeneral Requirements
29de1f01a8SVipin Varghese--------------------
30de1f01a8SVipin Varghese
31de1f01a8SVipin VargheseMemory
32de1f01a8SVipin Varghese~~~~~~
33de1f01a8SVipin Varghese
34de1f01a8SVipin VargheseRefer to the `Memory Configuration` section for specific details related to the System-on-Chip (SoC).
35de1f01a8SVipin Varghese
36de1f01a8SVipin Varghese.. note::
37de1f01a8SVipin Varghese
38de1f01a8SVipin Varghese   As a general guideline, it is recommended to populate
39de1f01a8SVipin Varghese   at least one memory DIMM in each memory channel.
40de1f01a8SVipin Varghese   The optimal memory size for each DIMM is at least 8, 16, or 32 GB,
41de1f01a8SVipin Varghese   utilizing ECC modules.
42de1f01a8SVipin Varghese
43de1f01a8SVipin Varghese
44de1f01a8SVipin VargheseBIOS
45de1f01a8SVipin Varghese----
46de1f01a8SVipin Varghese
47de1f01a8SVipin VargheseRefer to the `BIOS Performance` section in tuning guide for recommended settings.
48de1f01a8SVipin Varghese
49de1f01a8SVipin Varghese
50de1f01a8SVipin VargheseLinux GRUB
51de1f01a8SVipin Varghese----------
52de1f01a8SVipin Varghese
53de1f01a8SVipin VargheseRefer to the `Linux OS & Kernel` in tuning guide for recommended settings.
54de1f01a8SVipin Varghese
55de1f01a8SVipin Varghese
56de1f01a8SVipin VargheseNIC and Accelerator
57de1f01a8SVipin Varghese-------------------
58de1f01a8SVipin Varghese
59de1f01a8SVipin VargheseAMD EPYC supports PCIe Generation of 1|2|3|4|5 depending upon SoC families.
60de1f01a8SVipin VargheseFor best performance ensure the right slots are used which provides adequate bandwidth.
61de1f01a8SVipin Varghese
62de1f01a8SVipin VargheseUse ``lspci`` to check the speed of a PCI slot::
63de1f01a8SVipin Varghese
64de1f01a8SVipin Varghese   lspci -s 41:00.0 -vv | grep LnkSta
65de1f01a8SVipin Varghese
66de1f01a8SVipin Varghese   LnkSta: Speed 16GT/s, Width x16, TrErr- Train- SlotClk+ DLActive- ...
67de1f01a8SVipin Varghese   LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete+ ...
68de1f01a8SVipin Varghese
69de1f01a8SVipin Varghese
70de1f01a8SVipin VargheseCompiler
71de1f01a8SVipin Varghese--------
72de1f01a8SVipin Varghese
73de1f01a8SVipin VargheseRefer to the `Compiler Flags` in tuning guide for recommended version and `-march` flags.
74*35ec7892SVipin Varghese
75*35ec7892SVipin Varghese
76*35ec7892SVipin VargheseMax LCores
77*35ec7892SVipin Varghese----------
78*35ec7892SVipin Varghese
79*35ec7892SVipin VargheseRefer to the `Compilation` in tuning guide for allowing more threads to run as DPDK `lcores`.
80*35ec7892SVipin Varghese
81*35ec7892SVipin Varghese
82*35ec7892SVipin VarghesePower
83*35ec7892SVipin Varghese-----
84*35ec7892SVipin Varghese
85*35ec7892SVipin VargheseCore
86*35ec7892SVipin Varghese~~~~
87*35ec7892SVipin Varghese
88*35ec7892SVipin VargheseAMD EPYC SoC supports CPU power functions via ``rte_power`` API from `23.11 LTS` onwards.
89*35ec7892SVipin VargheseThese are tested and validated on MILAN, GENOA, BERGAMO and SIENA
90*35ec7892SVipin Vargheseusing Linux kernel `6.4` and above with ``amd_pstate`` power driver.
91*35ec7892SVipin Varghese
92*35ec7892SVipin Varghese.. note::
93*35ec7892SVipin Varghese
94*35ec7892SVipin Varghese   * Power libraries are supported on Linux only.
95*35ec7892SVipin Varghese   * DPDK uncore support on Linux is work in progress.
96