上次在Ubuntu上编译了3.12.6的rt_kernel,安装内核后无法进入系统(原因暂未查找),重新下载3.4.72的内核编译后正常进入系统
wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.4.72.tar.gz
wget https://www.kernel.org/pub/linux/kernel/projects/rt/3.4/patch-3.4.72-rt89.patch.bz2
好,下面要检验下rt-linux究竟有何不同,这里要使用工具cyclictest,下载:
git clone https://git.kernel.org/pub/scm/linux/kernel/git/clrkwllms/rt-tests.git
然后编译
cd rt-tests && make报错 fatal error: numa.h: No such file or directory compilation terminated.
安装libnuma-dev:
sudo apt-get install libnuma-dev
重新编译后得出cyclictest文件,执行命令如下:
stewart@stewart:#cyclictest -t1 -n -l 10000
# /dev/cpu_dma_latency set to 0us
policy: other/other: loadavg: 0.66 0.32 0.12 2/335 2291
T: 0 ( 2278) P: 0 I:1000 C: 10000 Min: 8 Act: 55 Avg: 75 Max: 2738
然后重新进入普通内核的系统,同样执行如上命令:
stewart@stewart:#cyclictest -t1 -n -l 10000
# /dev/cpu_dma_latency set to 0us
policy: other/other: loadavg: 0.61 0.33 0.15 1/358 2689
T: 0 ( 2688) P: 0 I:1000 C: 10000 Min: 8 Act: 68 Avg:85 Max:14271
这里输入的参数如下:
-t:设置线程的数字
-n:使用clock_nanosleep
-l:循环次数,默认0
这里的输出含义如下:
T:0 序号为0的线程
P:0 线程优先级为0
C:9397 计数器。线程的时间间隔每达到一次,计数器加1
I:1000 时间间隔为1000微秒(us)
Min: 最小时延(us)
Act: 最近一次的时延(us)
Avg:平均时延(us)
Max: 最大时延(us)
由此可见rt内核的linux在时延上小于普通的内核,在实时性应用领域很有意义。