问题标签 [preempt-rt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
36 浏览

linux - 同一系统上的普通 RHEL 和 PREEMPT_RT 补丁?可能吗

我是 PREEMPT_RT 补丁的新手,所以我想知道我是否可以在同一系统中安装 RHEL 和 PREEMPT_RT 补丁,比如一个核心是否可以运行 PREEMPT_RT 和其他运行 RHEL

所以我可以在 PREEMPT_RT 上执行复杂的时间关键任务,并在 RHEL 上提供一个可以显示它的 GUI?

有没有这样的方法?

0 投票
0 回答
166 浏览

pthreads - PREEMPT RT 内核延迟问题

我目前在 beaglebone black 上运行带有 PREEMPT RT 内核补丁的 Debian 9 stretch。我的内核版本是:

我通过编写一个内核模块来执行延迟测试,该模块在按钮按下触发中断后打开 LED。按钮按下和 LED 开启之间的测量延迟为 330 微秒。这有点奇怪,因为我预计实时内核具有低延迟(大约 10-30 微秒)。为了获得低延迟,我是否需要做一个额外的步骤,也许是在代码中?
谢谢你。

0 投票
1 回答
199 浏览

linux - RTOS 对云/边缘计算有效吗?

我目前正在使用蜂窝系统(4G 或 5G)构建和实施机器人控制系统。我正在考虑使用 RTOS 以减少服务器中的处理时间。

服务器接收来自机器人的请求并响应它。通过实验,我发现了以下内容。

  • 端到端延迟:30~50ms(edge)/70~90ms(cloud)
  • 处理时间:10~15ms
  • 数据流:
  • 实验装置
    • CPU 英特尔酷睿 i9
    • 操作系统 linux vanilla 内核

现在,我正在考虑在云/边缘服务器上安装 preempt-rt 内核。

是否通过在服务器上安装 RTOS 减少端到端延迟和处理时间超过 10 毫秒?

0 投票
1 回答
32 浏览

linux - 除了检查 /boot/config_xx 和 /proc/config.gz 之外,如何确认特定 Linux 内核的 preempt rt 选项是否启用?

除了检查 /boot/config_xx 和 /proc/config.gz 之外,如何确认特定 Linux 内核的 preempt rt 选项是否启用?

我可以通过 SSH 登录操作系统并且我有 root 权限。

0 投票
0 回答
144 浏览

linux - 在内核编译过程中使 bzImage 错误

我在我的 ubuntu 上使用 Linux 5.8.0-40 内核。我正在尝试将内核与 RT 抢占补丁一起更改为 4.19。这些是我遵循的步骤。

  1. 从这里下载 4.19 的压缩包并解压缩。
  2. 从这里下载补丁并解压。
  3. 按照链接中的说明应用补丁
  4. 制作 menuconfig 并启用完全可抢占的选项
  5. 使-j4
  6. 制作 bzImage

这是我面临问题的地方

net/core/skbuff.c:在函数'__napi_alloc_skb'中:net/core/skbuff.c:500:2:错误:'pfmemalloc'未声明(在此函数中首次使用);你是说'pmd_alloc'吗?500 | pfmemalloc = nc->page.pfmemalloc;| ^~~~ | pmd_alloc

有人知道如何解决这个问题吗?谷歌搜索解决方案没有帮助。

0 投票
1 回答
49 浏览

linux - 调查线程堆栈溢出

运行多线程嵌入式应用程序时遇到分段错误。GDB 提示我堆栈可能已损坏,这使我相信堆栈对于有问题的线程来说太小了。增加堆栈大小似乎可以解决问题,但我想进一步确认一下。我在这里有什么选择?是否可以在发生段错误时找出当前堆栈大小?

0 投票
0 回答
90 浏览

linux - On a PREEMPT_RT linux kernel, how can I modify threads (that were previously ran as interrupts) priority in the pre-compilation stage?

PREEMPT_RT on linux kernel, makes interrupts run as threads, so we have the ability to modify the priorities of interrupts.
By default, all interrupt handler top halves run SCHED_FIFO, with a priority of 50.

Question:
How can I modify these threads priority in the pre-compilation stage (I'm aware I can change these priorities on run-time) ?

0 投票
0 回答
35 浏览

c - SCHED_RR 未将时间片返回到正确的线程

我正在尝试研究 Linux 中某些实时调度策略的行为。出于这个原因,我创建了 3 个周期性线程,每个线程都有一个虚拟工作负载。它们都具有相同的执行时间~5ms,它们的周期分别为 10ms、20ms 和 30ms。它们的优先级也分别是 95、50 和 25。

我试图了解 SCHED_RR 政策的工作原理,但我得到了一个奇怪的行为:

  1. 较低优先级的线程(线程#3)在其时间片的 20% 时被抢占。

  2. 更高优先级(线程#1)线程开始运行。

  3. 线程#1 结束。

  4. 线程 #1 继续运行另外 80% 的时间片,然后恢复线程 #3 的执行(有效地“吃掉”线程 #3 的剩余时间段)。

目前RR时隙定义为1ms。我正在使用 kernelshark 来可视化任务执行,所以我可以相当准确地知道哪里出了问题。

垂直线之间的部分约为 0.335 ms,而

使线程周期性的代码:

以及虚拟工作负载的功能:

0 投票
0 回答
52 浏览

preempt-rt - 如何在启动时设置 PREEMPT_RT 内核线程优先级

我希望我的网络中断内核线程成为 IRQ 线程中最高的线程(但低于 RT 线程,例如计时器和看门狗)。我可以成功地使用 chrt 临时设置它,但它无法在重新启动后继续存在。我不能只从 init 脚本调用 chrt,因为我不知道内核线程的 pid 是什么。有什么想法吗?

0 投票
1 回答
105 浏览

python - 如何调度实时循环任务?

我们是一支由本科生组成的团队,目前致力于打造一个有腿的机器人。目前,我们与机器人的接口是使用我们正在使用的主板上的 sdk 用 python 编写的。

为了和主板sdk通信,我们需要每毫秒发送一个命令。

为了让我们能够定期发送任务,我们将 rt-preempt 补丁应用于我们的 linux 内核。(Ubuntu LTS 20.04,内核 5.10.27-rt36)

我们对编写实时应用程序非常陌生,并且遇到了一些问题,我们的任务有时会比指定的时间步长小得多。在下图中,我们绘制了命令发送到 sdk 的 while 循环的每个循环的时间。(x 轴是以秒为单位的时间,y 轴是以秒为单位的迭代的经过时间)如图所示,一个步骤比其他步骤小得多。每次我们运行脚本时,这似乎都发生在同一个确切的时间标记上。

循环任务绘图

我们使用以下方法设置整个脚本的优先级:

我们的循环任务如下所示:

dt 设置为 0.001

我们怀疑这个问题与我们定义睡眠量的方式有关。Cycle_time 是指 time.sleep() 上面的计算所花费的时间,因此:睡眠时间 + 循环时间 = 1ms。但是,我们不确定如何正确执行此操作,并且我们正在努力寻找有关该主题的资源。

应该如何为实时应用程序正确定义这样的任务?

我们的要求非常宽松(几毫秒),但确定性对我们来说非常重要,因为这是我们论文的一部分,我们需要了解正在发生的事情。

非常感谢我们的问题或相关资源的任何答案。

完整代码链接:https ://drive.google.com/drive/folders/12KE0EBaLc2rkTZK2FuX_goMF4MgWtknS?usp=sharing