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