使用cyclictest测试real-time补丁对系统实时性的改善
打补丁
查看内核版本
vim Makefile
# SPDX-License-Identifier: GPL-2.0
VERSION = 6
PATCHLEVEL = 1
SUBLEV
下载和内核版本相近的补丁
https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/6.1/patch-6.1.28-rt10.patch.gz
测试补丁
git apply --check patch-6.1.28-rt10.patch
应用补丁
git apply --reject patch-6.1.28-rt10.patch
编译内核,选择
CONFIG_PREEMPT_RT
测试系统延迟
下载测试工具
git clone git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git
检出v1.0
git checkout v1.0
安装依赖
sudo apt install libnuma-dev
修改工具链
CC=arm-linux-gnueabihf-gcc
AR=arm-linux-gnueabihf-gcc-ar
编译
make
8个yes将将cpu负载跑起来
yes > /dev/null &
测试
./cyclictest -l10000 -m -n -t8 -p99 -i2000 -h100
结果
不打入补丁
# ./cyclictest -l10000 -m -n -t8 -p99 -i2000 -h100
# /dev/cpu_dma_latency set to 0us
policy: fifo: loadavg: 3.97 1.30 0.47 9/62 150
policy: fifo: loadavg: 4.59 1.52 0.55 9/61 150
T: 0 ( 143) P:99 I:2000 C: 3855 Min: 17 Act: 20 Avg: 21 Max: 57
T: 0 ( 143) P:99 I:2000 C: 10000 Min: 17 Act: 22 Avg: 22 Max: 6048
T: 1 ( 144) P:99 I:2000 C: 9992 Min: 18 Act: 19 Avg: 20 Max: 36
T: 2 ( 145) P:99 I:2000 C: 9920 Min: 17 Act: 46 Avg: 55 Max: 6046
T: 3 ( 146) P:99 I:2000 C: 9859 Min: 19 Act: 32 Avg: 39 Max: 5986
T: 4 ( 147) P:99 I:2000 C: 9800 Min: 29 Act: 61 Avg: 50 Max: 5948
T: 5 ( 148) P:99 I:2000 C: 9744 Min: 29 Act: 67 Avg: 58 Max: 119
T: 6 ( 149) P:99 I:2000 C: 9679 Min: 16 Act: 21 Avg: 19 Max: 44
T: 7 ( 150) P:99 I:2000 C: 9623 Min: 17 Act: 51 Avg: 40 Max: 107
打入补丁
# ./cyclictest -l10000 -m -n -t8 -p99 -i2000 -h100
# /dev/cpu_dma_latency set to 0us
policy: fifo: loadavg: 4.07 1.01 0.34 9/91 141
T: 0 ( 134) P:99 I:2000 C: 10000 Min: 19 Act: 20 Avg: 22 Max: 60
T: 1 ( 135) P:99 I:2000 C: 10000 Min: 18 Act: 21 Avg: 20 Max: 34
T: 2 ( 136) P:99 I:2000 C: 9989 Min: 19 Act: 44 Avg: 43 Max: 87
T: 3 ( 137) P:99 I:2000 C: 9924 Min: 19 Act: 23 Avg: 19 Max: 31
T: 4 ( 138) P:99 I:2000 C: 9852 Min: 18 Act: 21 Avg: 19 Max: 25
T: 5 ( 139) P:99 I:2000 C: 9772 Min: 20 Act: 32 Avg: 33 Max: 68
T: 6 ( 140) P:99 I:2000 C: 9700 Min: 20 Act: 46 Avg: 43 Max: 83
T: 7 ( 141) P:99 I:2000 C: 9623 Min: 27 Act: 30 Avg: 29 Max: 35
- 评价系统的实时性,通常观察Max最大延迟
- cyclictest所测得的延时是中断延时加调度延时
- 可以发现打real-time补丁对内核延迟有很大改善
关注博主公众号,优质文章不断更新