Linux cyclitest 命令 - 测试 CPU 负载和响应时间
介绍
cyclitest 是一个用于测试 Linux 内核实时性的命令行程序,是 rt-tests 下的一个测试工具,也是 rt-tests 下使用最广泛的测试工具,一般用来测试 Linux 内核的延迟。
cyclitest 命令由 rt-tests 软件包提供,在 Debian/Ubuntu 系统上可以使用如下命令进行安装。
sudo apt install rt-tests
代码仓库:https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests
语法:
cyclictest <options>
选项:
-a
,--affinity[=PROC-SET]
:指示 CPU 亲和性,即在处理器 N 上运行线程,例如-a 0,1,2
、-a 0-2
、-a 0-2,4
都可以,!
表示否定,如-a !2-4
表示绑定在 2-4 以外的所有 CPU 核上。-A
,--align=USEC
:以微秒为单位将测量线程唤醒与特定偏移量对齐。-b
,--breaktrace=USEC
:调试选项,用于控制实施抢占补丁中的延迟跟踪器。当延时大于 USEC 指定的值时,发送停止跟踪。USEC 单位为 μs。-c
,--clock=CLOCK
:选择时钟。0 为线性增长时钟,1 为墙上时间时钟。 当设置-s
选项时,该选项失效。-C
,--context
:上下文切换。调试相关,和-b
选项一起用的。-d
,--distance=DIST
:当多个线程时,设置间隔(睡眠时间)的增量 distance。interval (线程n) = interval (线程n-1) + DIST。当该选项设置为 0 时,即 DIST=0 时,所有线程都会在同一时间醒来,不过这违背了cyclictest 的初衷,它是想测试每时每刻系统响应速度,而不是一瞬间把系统爆掉。-E
,--event
:调试相关,和-b
选项联合使用。-f
,--ftrace
:调试相关,和-b
选项联合使用。-h
,--histogram=US
:输出直方图到 stdout。指定要跟踪的最大的延迟数值。--histfile=<path>
:输出直方图到文件。-H
:同-h
选项,同时该选项还会输出多一列数据在最右边,表示求和,当只有一个线程时,-H
等价于-h
。-i
,--interval=INTV
:设置第一个线程的间隔(睡眠时间),默认 1000us。-l
,--loops=LOOPS
:默认为 0,表示无止境测下去。-m
,--mlockall
:锁定当前和未来的内存分配以阻止被 page out(页调出)。-M
,--refresh_on_max
:延迟更新屏幕直到达到新的最大延迟(对于在低带宽连接上运行循环测试很有用)。-n
,--nanosleep
:使用 clock_nanosleep 代替 posix interval timer。-N
,--nsecs
:用纳秒为单位显示结果,而不是默认的微秒。-o
,--oscope=RED
:示波器模式。-O
,--traceopt=TRACING_OPTION
:跟踪选项相关。-p
,--prio=PRIO
:设置第一个线程的优先级。Priority(n) = max (Priority(n-1)-1, 0)-q
,--quiet
:静默模式,只输出概述信息。适用于自动化测试的时候,在脚本中使用这个选项。-r
,--relative
:使用相对时间。默认绝对时间。官方手册不建议使用。-s
,--system
:使用 sys_nanosleep 和 sys_setitimer 取代 posix timer。但是-s
选项只应该在一个线程时使用,因为 itimer 每个进程只有一个,而不是每个线程都有。该选项可以结合-n
选项一起使用,这样就不会受限于只对一个线程使用了。-S
,--smp
:为 SMP 系统上的标准测试设置选项。等效于使用选项-t -a -n
以及在所有线程中保持任何指定的优先级相等。-t
,--threads[=NUM]
:该选项用来指定线程数。没有指定该选项时,默认 1 个线程。指定了该选项但又没有指定数字时,会开启 CPU 核心个数个线程。-T
,--tracer=TRACEFUNC
:跟踪器相关。-v
,--verbose
:输出统计信息。结合-l
使用。-D
,--duration=TIME
:运行时间,默认单位 s,可以使用 “m h d” 代表分钟、小时、天。-w
,--wakeup
:唤醒追踪,配合-b
选项。-W
,--wakeuprt
:实时线程唤醒追踪,配合-b
选项。-y
,--policy=NAME
:设置调度策略。可选 other、normal、batch、idle、fifo、rr 策略。