问题标签 [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.
linux - 同一系统上的普通 RHEL 和 PREEMPT_RT 补丁?可能吗
我是 PREEMPT_RT 补丁的新手,所以我想知道我是否可以在同一系统中安装 RHEL 和 PREEMPT_RT 补丁,比如一个核心是否可以运行 PREEMPT_RT 和其他运行 RHEL
所以我可以在 PREEMPT_RT 上执行复杂的时间关键任务,并在 RHEL 上提供一个可以显示它的 GUI?
有没有这样的方法?
pthreads - PREEMPT RT 内核延迟问题
我目前在 beaglebone black 上运行带有 PREEMPT RT 内核补丁的 Debian 9 stretch。我的内核版本是:
我通过编写一个内核模块来执行延迟测试,该模块在按钮按下触发中断后打开 LED。按钮按下和 LED 开启之间的测量延迟为 330 微秒。这有点奇怪,因为我预计实时内核具有低延迟(大约 10-30 微秒)。为了获得低延迟,我是否需要做一个额外的步骤,也许是在代码中?
谢谢你。
linux - RTOS 对云/边缘计算有效吗?
我目前正在使用蜂窝系统(4G 或 5G)构建和实施机器人控制系统。我正在考虑使用 RTOS 以减少服务器中的处理时间。
服务器接收来自机器人的请求并响应它。通过实验,我发现了以下内容。
- 端到端延迟:30~50ms(edge)/70~90ms(cloud)
- 处理时间:10~15ms
- 数据流:
- 实验装置
- CPU 英特尔酷睿 i9
- 操作系统 linux vanilla 内核
现在,我正在考虑在云/边缘服务器上安装 preempt-rt 内核。
是否通过在服务器上安装 RTOS 减少端到端延迟和处理时间超过 10 毫秒?
linux - 除了检查 /boot/config_xx 和 /proc/config.gz 之外,如何确认特定 Linux 内核的 preempt rt 选项是否启用?
除了检查 /boot/config_xx 和 /proc/config.gz 之外,如何确认特定 Linux 内核的 preempt rt 选项是否启用?
我可以通过 SSH 登录操作系统并且我有 root 权限。
linux - 在内核编译过程中使 bzImage 错误
我在我的 ubuntu 上使用 Linux 5.8.0-40 内核。我正在尝试将内核与 RT 抢占补丁一起更改为 4.19。这些是我遵循的步骤。
这是我面临问题的地方
net/core/skbuff.c:在函数'__napi_alloc_skb'中:net/core/skbuff.c:500:2:错误:'pfmemalloc'未声明(在此函数中首次使用);你是说'pmd_alloc'吗?500 | pfmemalloc = nc->page.pfmemalloc;| ^~~~ | pmd_alloc
有人知道如何解决这个问题吗?谷歌搜索解决方案没有帮助。
linux - 调查线程堆栈溢出
运行多线程嵌入式应用程序时遇到分段错误。GDB 提示我堆栈可能已损坏,这使我相信堆栈对于有问题的线程来说太小了。增加堆栈大小似乎可以解决问题,但我想进一步确认一下。我在这里有什么选择?是否可以在发生段错误时找出当前堆栈大小?
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) ?
c - SCHED_RR 未将时间片返回到正确的线程
我正在尝试研究 Linux 中某些实时调度策略的行为。出于这个原因,我创建了 3 个周期性线程,每个线程都有一个虚拟工作负载。它们都具有相同的执行时间~5ms,它们的周期分别为 10ms、20ms 和 30ms。它们的优先级也分别是 95、50 和 25。
我试图了解 SCHED_RR 政策的工作原理,但我得到了一个奇怪的行为:
较低优先级的线程(线程#3)在其时间片的 20% 时被抢占。
更高优先级(线程#1)线程开始运行。
线程#1 结束。
线程 #1 继续运行另外 80% 的时间片,然后恢复线程 #3 的执行(有效地“吃掉”线程 #3 的剩余时间段)。
目前RR时隙定义为1ms。我正在使用 kernelshark 来可视化任务执行,所以我可以相当准确地知道哪里出了问题。
使线程周期性的代码:
以及虚拟工作负载的功能:
preempt-rt - 如何在启动时设置 PREEMPT_RT 内核线程优先级
我希望我的网络中断内核线程成为 IRQ 线程中最高的线程(但低于 RT 线程,例如计时器和看门狗)。我可以成功地使用 chrt 临时设置它,但它无法在重新启动后继续存在。我不能只从 init 脚本调用 chrt,因为我不知道内核线程的 pid 是什么。有什么想法吗?
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