From f9707e97e2ef3191fd84cfc7b74472db9fa915fc Mon Sep 17 00:00:00 2001 From: mattprost Date: Mon, 20 Jun 2022 14:37:20 -0500 Subject: docs: DPDK Linux kernel underruns solution Previously we had documented a known issue involving the Linux kernel, which was causing a streaming performance regression. This resulted in periodic underruns. We now know what is causing the regression. Document the procedure to restore the original behavior. Signed-off-by: mattprost --- host/docs/dpdk.dox | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) (limited to 'host') diff --git a/host/docs/dpdk.dox b/host/docs/dpdk.dox index a48ce42d3..3e67870ed 100644 --- a/host/docs/dpdk.dox +++ b/host/docs/dpdk.dox @@ -227,12 +227,28 @@ arguments, where N is the desired timeout time in milliseconds, or by adding a `dpdk_link_timeout` entry to the \ref page_configfiles "UHD configuration file". -\subsection dpdk_notes DPDK performance dpdk_notes +\subsection dpdk_troubleshooting Troubleshooting -With Linux kernel 5.11 on Ubuntu 20.04, we have observed periodic underruns -on systems that otherwise have no issues. The behavior does not reproduce on -the 5.4 kernel that is also available for Ubuntu 20.04, so that version can -be used as a workaround. +With Linux kernels 5.10 and beyond, we have observed periodic underruns on systems +that otherwise have no issues. These Linux kernel versions are the default for Ubuntu +20.04.3 LTS and later. The underrun issue is due to the RT_RUNTIME_SHARE feature +being disabled by default in newer versions of the Linux kernel. The following +procedure can be used to enable RT_RUNTIME_SHARE. Note, this process was tested on +Linux kernel version 5.13. The procedure may be slightly different on other kernel +versions. To determine the Linux kernel version of your system, in a terminal issue +the command `uname -r`. + + sudo -s + + cd /sys/kernel/debug/sched/ + + cat features + GENTLE_FAIR_SLEEPERS START_DEBIT NO_NEXT_BUDDY LAST_BUDDY CACHE_HOT_BUDDY WAKEUP_PREEMPTION NO_HRTICK NO_HRTICK_DL NO_DOUBLE_TICK NONTASK_CAPACITY TTWU_QUEUE SIS_PROP NO_WARN_DOUBLE_CLOCK RT_PUSH_IPI **NO_RT_RUNTIME_SHARE** NO_LB_MIN ATTACH_AGE_LOAD WA_IDLE WA_WEIGHT WA_BIAS UTIL_EST UTIL_EST_FASTUP NO_LATENCY_WARN ALT_PERIOD BASE_SLICE + + echo RT_RUNTIME_SHARE > features + + cat features + GENTLE_FAIR_SLEEPERS START_DEBIT NO_NEXT_BUDDY LAST_BUDDY CACHE_HOT_BUDDY WAKEUP_PREEMPTION NO_HRTICK NO_HRTICK_DL NO_DOUBLE_TICK NONTASK_CAPACITY TTWU_QUEUE SIS_PROP NO_WARN_DOUBLE_CLOCK RT_PUSH_IPI **RT_RUNTIME_SHARE** NO_LB_MIN ATTACH_AGE_LOAD WA_IDLE WA_WEIGHT WA_BIAS UTIL_EST UTIL_EST_FASTUP NO_LATENCY_WARN ALT_PERIOD BASE_SLICE */ // vim:ft=doxygen: -- cgit v1.2.3