PMDK - Remote Persistent Memory Access


Performance - Tuning

A collection of the best methods, practices, and configuration values known for delivering the best possible performance in a consistent and predictable way for the workloads built on the librpma library.

General notes

The Performance - Tuning aims to collect all tested and proven procedures with known beneficial effects on the performance of the workloads built on the librpma library. Nonetheless, each change of configuration should be set up and tested in a testing environment before being applied to a production system. Backing up all data and configuration settings prior to tuning is also recommended.

BIOS settings

Not yet confirmed [1.1]

References

CPU

Disabling intel_pstate is recommended for latency sensitive workloads. [2.1]

CPU driver

To disable intel_pstate CPU driver edit your /etc/default/grub and add the following to the kernel command line:

GRUB_CMDLINE_LINUX_DEFAULT="intel_pstate=disable"

Rebuild the grub.cfg file as follows (make sure you use the path adjusted to your OS):

sudo grub2-mkconfig -o /boot/grub2/grub.cfg
sudo grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg

This change requires a reboot to take effect.

CPU scaling governor

Set the most performant scaling governor:

sudo cpupower frequency-set --governor performance

CPU frequency

List available frequencies and pick the biggest one.

cpupower frequency-info | grep steps
  available frequency steps:  2.30 GHz, 2.30 GHz, 2.20 GHz, 2.10 GHz, 2.00 GHz, 1.90 GHz, 1.80 GHz, 1.70 GHz, 1.60 GHz, 1.50 GHz, 1.40 GHz, 1.30 GHz, 1.20 GHz, 1.10 GHz, 1000 MHz

Set the frequency range to the single biggest available value:

FREQ=2.3Ghz
sudo cpupower frequency-set --min $FREQ
sudo cpupower frequency-set --max $FREQ

References

RDMA-capable network interface (RNIC)

PCIe attributes [3.1]

Knowing all of these attributes allows calculating the RNIC bandwidth limitation. For details please see “Understanding PCIe Configuration for Maximum Performance” Chapter “Calculating PCIe Limitations”.

List supported link modes:

$ ethtool ens785f0
Settings for ens785f0:
        Supported ports: [ Backplane ]
        Supported link modes:   1000baseKX/Full
# ...
                                100000baseKR4/Full
                                100000baseSR4/Full
                                100000baseCR4/Full
                                100000baseLR4_ER4/Full
# ...

Set the maximum available value:

$ sudo ethtool -s ens785f0 speed 100000 autoneg off

Maximum Transmission Unit (MTU) [3.3]

Set MTU to the maximum recommended value. In most cases, it is 4200.

$ ifconfig ens785f0 mtu 4200

References

Running workloads

In order to learn how to run the individual workloads, please visit: https://github.com/pmem/rpma/master/tools/perf/BENCHMARKING.md

Disclaimer

Performance varies by use, configuration and other factors.

No product or component can be absolutely secure.

Your costs and results may vary.

Intel technologies may require enabled hardware, software or service activation.

Intel disclaims all express and implied warranties, including without limitation, the implied warranties of merchantability, fitness for a particular purpose, and non-infringement, as well as any warranty arising from course of performance, course of dealing, or usage in trade.