aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormattprost <matt.prost@ni.com>2022-06-20 14:37:20 -0500
committerskooNI <60897865+skooNI@users.noreply.github.com>2022-07-20 15:57:20 -0500
commitf9707e97e2ef3191fd84cfc7b74472db9fa915fc (patch)
treec1764acaeba13452fd86d705ed1b64e14f2f31d4
parent9a07184e28d63c856e23ad37f40194000876a62b (diff)
downloaduhd-f9707e97e2ef3191fd84cfc7b74472db9fa915fc.tar.gz
uhd-f9707e97e2ef3191fd84cfc7b74472db9fa915fc.tar.bz2
uhd-f9707e97e2ef3191fd84cfc7b74472db9fa915fc.zip
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 <matt.prost@ni.com>
-rw-r--r--host/docs/dpdk.dox26
1 files changed, 21 insertions, 5 deletions
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 <b>milliseconds</b>, 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: