NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
# :-: cyclictest测试工具分析 | 适用范围 | 适用版本 | 人员 | 发布时间 | 文档版本 |备注 | | --- | --- | --- | --- | --- |--- | | 服务器操作系统 | 通用 | 王国武 |2022.3.4| V1.0|发布| | 服务器操作系统 | 通用 | 张志勇 |2022.3.4| V1.1|模板调整| ### 经测试,该方案有效可行 ***** ### 简介: cyclictest测试工具是一款在实时系统上通过比对理论唤醒延迟和实际唤醒延迟得到系统的延迟。 ### 正文: cyclictest:         当测试时不添加"-n"参数时,使用的是设置定时器的方式,使用sigwait等待SIGALRM>触发的方式,计算理论唤醒时间和实际唤醒时间的差值,作为单次延迟,与最小值,最大值比>对,计算入平均值。平均值的计算方式是计算总延迟和统计计算次数,两者相除。         当测试时添加“-n”参数时,使用clock_nanosleep获取当前时间,clock_nanosleep默>认是暂停执行,直到指定时间过去之后,或者被信号唤醒。同样是比对唤醒的理论时间和实际>唤醒时间,计算偏差结果,既是延迟。 选项解析: ```         -a 当没有后接选项,测试程序在创建线程的时候,会从0开始,依次递增分配给线程>。之后又从0开始分配,直到线程创建完毕。如果后面接了数字,则所有的线程的cpu亲和度都>是这个数字。         -b USEC 当延迟大于USEC时,发送breaktrace命令。         --c CLOCK --clock=CLOCK 选择时钟类型.                                 0 = CLOCK_MONOTONIC (default)                                 1 = CLOCK_REALTIME         -C --context 上下文切换跟踪,和 -b选项一起使用 。B 监控抢占和中断关闭。         -d DIST 在创建新线程时,设定每个线程之间定时器的时间间隔。         -D --duration=t 指定测试程序运行时间。         -E --event 事件跟踪。与-b选项一起使用。         -f --ftrace 函数跟踪,和-b选项一起使用。         -h --histogram=US 运行后转储延迟直方图到stdout。         -H --histofall=US 比-h选项结果多一个额外的摘要栏。         -i INTV --interval=INTV 线程的定时器基本值。         -I --irqoff 跟踪irqoff。         -l LOOPS --loops=LOOPS loops的值。循环执行多少次。         -m --mlockall 锁定当前和未来的内存分配。         -M --refresh_on_max 不更新显示指导有更大的延迟出现。         -n --nanosleep 使用clock_nanosleep函数。         -N --nescs 输出结果单位用ns取代us。         -o RED --oscope=RED oscilloscope模式。         -O TOPT --TRACEOPT=TOPT 跟踪选项。         -p PRIO --prio=PRIO 线程的最大优先级。多线程递减原则分配优先级。         -P --preemptoff 跟踪抢占关闭。         -q --quiet 只在退出时输出一个总结信息。         -r --relative 使用相对时间取代绝对时间。         -s --system 使用sys_nanosleep 和 sys_setitimer.         -t --threads 一个可用cpu一个线程。         -t NUM --threads=NUM 总共创建几个线程。         -T TRACE --tracer=TRACER 设置跟踪的功能。有blk function_graph wake_rt等。         -u --unbeffered 强制非缓冲输出,用于实时处理。         -v --verbose 在标准输出上输出结果,方便统计。         -w --wakeup 监控任务唤醒。         -W --wakeuprt 监控实时任务唤醒。         -y POLI --policy=POLI 实时下成的策略。         -S --smp SMP测试,等同于选项"-a -n -t"。         -U --numa 基础的NUMA测试,类似与-S。 ```