preempt-rt 测试

以下是Cyclictest工具的安装方法:

基于包管理软件安装

  • Debian/Ubuntu系统:可以直接使用apt-get install rt-tests来安装cyclictest

  • CentOS系统:可以使用yum install numactl-devel安装依赖包

  • ,然后通过yum install rt-tests安装cyclictest

    基于git源码安装

    1. 下载源码

      • 可以通过命令git clone git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git克隆Cyclictest的Git仓库

  • 也可以从存档中获取已发布的tarball

  • 进入源码目录:执行cd rt-tests

  • 创建分支(可选):可以创建一个分支,例如git branch testing,然后切换到该分支git checkout testing

  • 切换到稳定分支(可选):可以执行git checkout origin/stable/v1.0切换到稳定分支

  • 安装依赖:需要安装libnuma-dev包(Debian/Ubuntu系统)

  • numactl-devel包(CentOS系统)
  • 编译:在源目录下运行make

  • 安装:执行make install将Cyclictest安装到系统路径中

注意事项

  • 确保在安装和运行Cyclictest时具有相应的权限,例如使用sudo

  • 如果在编译过程中遇到问题,可以根据报错信息安装缺失的依赖

Preempt-RT的测试方法和工具的介绍:

测试工具

  • cyclictest:这是PREEMPT_RT补丁的作者编写的延迟测量工具,也是目前最常用的实时性测试工具

。它的工作原理是启动一个主线程,主线程会启动几个实时测量线程,这些线程会在设定的时间间隔后定期唤醒,记录预期和实际唤醒时间的时差,并将结果传递给主进程,测试结束后输出汇总结果

  • stress-ng:用于模拟系统负载的工具,通过模拟CPU、内存、I/O等多方面的压力,可以对系统进行压力测试

测试方法

  • 空载测试:在无负载情况下运行cyclictest,观察系统延迟情况。例如,使用命令cyclictest -p 99 -t 1 -d 100 -i 1000 -D 24h -m,其中-p 99表示设置线程优先级为99,-t 1表示运行一个线程,-d 100表示延迟时间间隔为100微秒,-i 1000表示测试间隔为1000微秒,-D 24h表示测试持续时间为24小时,-m表示显示每个CPU的延迟

  • 满载测试:通过stress-ng工具模拟CPU、内存、I/O等多方面的满载压力,再次运行cyclictest进行测试。例如,先运行stress-ng --cpu 4 --cpu-method all --io 4 --vm 50 -d 5 --fork 4 &模拟负载,再运行cyclictest -p 99 -t 1 -d 100 -i 1000 -D 24h -m进行测试

  • 隔离核心测试:将实时任务锁定至独立核心,避免非实时进程干扰,通过设置CPU核心绑定与中断隔离来实现。例如,使用命令cyclictest -m -a 1 -p 99 -t 1 -i 1000r --mainaffinity=0 -D 2h,其中--mainaffinity=0表示将测试线程绑定到CPU0上

测试结果分析

  • 延迟数据:cyclictest会输出最小延迟、平均延迟、最大延迟等数据。例如,在空载测试中,某系统的测试结果显示最大延迟为34微秒

;在满载测试中,最大延迟为167微秒

  • 延迟分布:通过绘制延迟分布直方图,可以更直观地了解延迟的分布情况。例如,在隔离CPU中运行的测评结果中,周期延迟的最大值为17微秒,最小值为1微秒,平均值为1微秒,其中1~4微秒范围占了99.997326%,1~8微秒范围占了99.999969%

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值