https://rt.wiki.kernel.org/index.php/Cyclictest
git clone git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git
git clone https://gitee.com/mirrors/rt-tests (国内站,下载快)
cd rt-tests
make all // 不适用NUMA则 make all NUMA=0
make install
常用参数
-p PRIO --prio=PRIO 最高优先级线程的优先级 使用时方法为: -p 90 / --prio=90
-m --mlockall 锁定当前和将来的内存分配
-c CLOCK --clock=CLOCK 选择时钟 cyclictest -c 1
0 = CLOCK_MONOTONIC (默认)
1 = CLOCK_REALTIME
-i INTV --interval=INTV 基本线程间隔,默认为1000(单位为us),下面介绍原理的时候会提到
-l LOOPS --loops=LOOPS 循环的个数,默认为0(无穷个),与 -i 间隔数结合可大致算出整个测试的时间,比如 -i 1000 -l 1000000 ,总的循环时间为1000*1000000=1000000000 us =1000s ,所以大致为16分钟多。
-n --nanosleep 使用 clock_nanosleep
-h HISTNUM --histogram=US 在执行完后在标准输出设备上画出延迟的直方图(很多线程有相同的权限)US为最大的跟踪时间限制,这个在下面介绍实例时可以用到,结合gnuplot 可以画出我们测试的结果图。
-q --quiet 使用-q 参数运行时不打印信息,只在退出时打印概要内容,结合-h HISTNUM参数会在退出时打印HISTNUM 行统计信息以及一个总的概要信息。
-f --ftrace ftrace函数跟踪(通常与-b 配套使用,其实通常使用 -b 即可,不使用 -f )
-b USEC --breaktrace=USEC 当延时大于USEC指定的值时,发送停止跟踪。USEC,单位为谬秒(us)。