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