linux实时循环测试:找出延迟异常值的原因

问题描述

我已经在运行 lubuntu 的计算机上编译并安装了 Linux 实时内核 5.4.91-rt50。我在使用循环测试的 script 的帮助下继续执行延迟测试。该脚本基本上运行下面的命令并生成测量延迟的直方图(我将脚本更改为 10M 循环,约 30 分钟)

循环测试 -l10000000 -m -Sp90 -i200 -h400 -q >输出

cyclictest (1

虽然实时内核明显在工作,但也有中断造成较大延迟(>50us)。我继续执行 cyclictest-tracing 以通过运行来查找触发这些事件的原因:

循环测试 -l10000000 -m -Sp90 -i200 -b 100 -f

同时确保所有 cpu 都处于忙碌状态(所有 100% 使用率,这是循环测试跟踪网页推荐的)。没有事件触发断点,我不得不将断点减少到 20 (-b 20)。这对我来说很奇怪,所以我再次在直方图模式下运行循环测试,但这次我在测量过程中让所有 cpu 都处于忙碌状态。我得到以下结果:

enter image description here

我的预感是,这一定与某些省电优化(C 状态)问题有关,其中 cpu 在不使用时进入空闲状态。所以我为内核添加了以下参数:

GRUB_CMDLINE_LINUX_DEFAULT="intel_idle.max_cstate=0 processor.max_cstate=0 idle=poll"

我再次运行了直方图测试(同时没有让 cpu 保持忙碌)并且我得到了同样大的延迟。我希望在 cpu 负载很小的情况下运行循环测试测量时没有延迟。

任何建议或帮助将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)