Developer Guide

  • 2021.1
  • 11/03/2021
  • Public
Contents

About the Sample

RTCP demonstrates a cyclical workload with a receive portion, compute portion, and transmit portion. The receive and transmit portions work off a user space poll mode driver. The compute portion is a random pointer-chase to mimic a worst-case memory access pattern.
RTCP aims to provide a metric that is able to measure the expected latency a control loop may see while processing a fixed working set. This working set can be customized to closely mimic a specific workload or customer use case in terms of memory accessed and computing resources.
RTCP is built upon the Data Plane Development Kit (DPDK), which provides a low-latency framework for packet processing in Linux via a user space poll mode driver (PMD). RTCP is able to mimic the requirement of a low-latency software stack by using the provided PMD. RTCP creates a worst-case memory access pattern to mimic a worst-case cyclical workload. Combining the PMD and the worst-case cyclical workload allows RTCP to provide a measure of a system’s real-time cyclical performance.

Implementation

This section is for reference. It describes the flow of the RTCP sample workload.
The provided workload validation script automates the steps of this flow for users (see RTCP Sample Workload Validation Script for details).
RTCP configures each board as follows:
  1. Load the igb_uio module.
    1. Load the UIO module if it was not loaded:
      modprobe uio
    2. Load the DPDK UIO module:
      modprobe igb_uio
  2. Set up hugepages:
    1. Create a mount point:
      mkdir -p /mnt/huge
    2. Mount as hugetlbfs:
      mount -t hugetlbfs nodev /mnt/huge
    3. Get the hugepage size:
      HUGEPGSZ=`cat /proc/meminfo | grep Hugepagesize | cut -d : -f 2 | tr -d ' '`
    4. Set the number of hugepages:
      echo 2048 > /sys/kernel/mm/hugepages/hugepages-${HUGEPGSZ}/nr_hugepages
  3. Enable rdpmc from userspace:
    echo 2 > /sys/devices/cpu/rdpmc
  4. Bind an Intel® Ethernet Controller I210 to the DPDK UIO driver (igb_uio):
    1. Find the socket, bus, device, and function of the Intel® Ethernet Controller I210:
      lspci
    2. Look for
      I210 Network Connection
      (bb:dd.f).
    3. Bind the controller to the DPDK UIO driver:
      {RTE_SDK}/usertools/dpdk-devbind.py --force -b igb_uio bb:dd.f
      RTE_SDK=/path/to/dpdk (by default: /usr/share/dpdk).
After the boards are configured, the RTCP workload starts running:
  1. Default path to rtcp:
    /usr/share/tcc_tools/tools/demo/workloads/bin/rtcp
  2. This example output shows that RTCP started successfully:
The Packet Generator and Latency Measurement (PGLM) program starts running on the other board to generate network packets:
  1. Default path to pglm:
    /usr/share/tcc_tools/tools/demo/workloads/bin/pglm
  2. This example output shows that PGLM started successfully:

Product and Performance Information

1

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.