Intel® Ethernet 800 Series

Linux Performance Tuning Guide

ID Date Version Classification
636781 10/23/2023 Public
Document Table of Contents

​CPU Utilization

Check CPU utilization per core while workload is running.

Note:​Utilization per core is more relevant to performance than overall CPU utilization, since it provides an idea of the CPU utilization per network queue.

If you have only a few threads running network traffic, you might only have a few cores being used. However, if those cores are at 100%, your network throughput is likely limited by CPU utilization and it is time to:

  • ​​Tune IRQ moderation/ring size as detailed in ​Ring Size.
  • ​​Increase the number of application threads to spread out the CPU load over more cores. If all cores are running at 100%, your application might be CPU bound rather than network bound.

Commonly available tools:

  • ​​top
    1. Press 1 to expand list of CPUs and check which ones are being used.
    2. ​Notice level of utilization.
    3. Notice which processes are listed as most active (top of list).
  • ​​htop

    Great tool for visualizing utilization across all cores.

  • ​​mpstat

    The following example command line was tested on Red Hat Enterprise Linux 7.x. It displays CPU utilization per core (by finding the total percent idle and subtracting from 100) and highlights the values above 80% in red. mpstat -P ALL 1 1 | grep -v Average | tail -n +5 | head -n -1 | awk '{ print (100-$13)}' | egrep -- color=always '[^\.][8-9][0-9][\.]?.*|^[8-9][0-9][\.]?.*|100|' | column

  • perf

    The perf tool is very helpful in finding what components might be causing high resource utilization during performance testing. It can be run during a workload to generate a report that can give guidance for further investigation.

    • To start recording during benchmark or workload: perf record -a <benchmark command>
    • ​To generate a report from the recorded perf data: pref report