linux 实时性能测试
使能方法
在linux 6.12版本之后原生SDK就支持了PREEMPT_RT,使能方式如下:
make kernel_menuconfig
General setup --->
<*> Fully Preemptible Kernel (Real-Time)
或者直接搜索CONFIG_PREEMPT_RT=y
确认是否已经打开
zcat /proc/config.gz | grep CONFIG_PREEMPT_RT
测试方法
安装软件
sudo apt-get update
sudo apt-get install rt-tests stress-ng
空载测试
# -m: 锁定内存,防止交换
# -S: SMP 多核模式
# -p99: 设置最高实时优先级 99
# -i1000: 循环间隔 1000us (1ms)
# -D2m: 测试持续 2 分钟
sudo cyclictest -m -S -p99 -i1000 -D2m
压力测试
终端1
# --cpu 8: 占满 8 个核心
# --io 4: 开启 4 个 IO 读写进程(模拟磁盘/存储负载)
# --vm 4: 开启 4 个内存压力进程
# --vm-bytes 128M: 每个内存进程反复读写 128M 数据(制造 Cache 抖动)
stress-ng --cpu 8 --cpu-method all --io 4 --vm 4 --vm-bytes 128M --fork 4
终端2
# -S: SMP 模式,自动开启 8 个线程并一对一绑核
# -p99: 最高实时优先级
# -m: 锁内存
# -D1: 跑 1 小时 (建议先跑 10 分钟看看情况)
sudo cyclictest -c0 -m -S -p99 -i1000 -D1H