繁体   English   中英

如何使用 RT Preempt 补丁测试和/或基准测试传统 Linux Kernel 与 Linux Kernel?

[英]How do I test and / or benchmark traditional Linux Kernel vs Linux Kernel with RT Preempt patch?

我正在开展一个项目,以对比和观察 Linux 的 Preempt RT 补丁的性能提升。

我应该在两个不同的内核上执行什么样的 C 程序才能更好地理解 Preempt RT 补丁提供的好处。

寻找有关程序的建议。

要具体比较/演示调度特征,可以实现一个系统,其中:

  1. 通过数字输入IN产生中断
  2. 中断处理程序通过信号量将输入事件传递给高优先级用户进程。
  3. 用户进程在收到信号量后会在数字 output OUT上创建(比如说)10ms 脉冲。

然后:

  1. 用来自信号发生器的一系列脉冲驱动IN
  2. 将示波器连接到INOUT
  3. IN的活动(产生中断)边沿触发 scope
  4. 测量IN上的中断边沿与OUT上的脉冲开始之间的时间和差异。
  5. OUT脉冲的上升沿触发 scope。
  6. 测量脉冲宽度的长度和方差。

大多数现代示波器都具有“持久性”功能,扫描之间不会清除迹线。 这对于测量方差很有用。

如果您缺少 scope 或信号/函数发生器,您可以在 ISR 和用户进程中使用开关和软件时间戳来记录事件时间。 但是您需要在用户任务中确保在捕获时间和使用临界区设置OUT state 之间不会发生抢占,并且可能需要对开关进行去抖动 在这种情况下,如果最后一个事件时间戳小于 20 毫秒前,则只是不设置信号量的问题。

如果 PREEMPT-RT 正在执行其工作,则测试应该表现出比默认调度程序更低的延迟、更高的精度和更少的方差,而不管其他(较低优先级)进程正在运行的负载如何。 如果仍然不能满足您的要求,您可能需要一个真正的RTOS。

如果您的应用程序不需要此特性,那么您可能不需要或受益于 PREEMPT-RT,并且流程优先级分配不当或任务设计不当甚至可能导致您的应用程序无法满足要求。 要使 PREEMPT-RT 发挥作用,您必须知道自己在做什么; 它不会神奇地使您的系统“实时”; 相反,它有助于实时系统的实施。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM