我目前正在使用
6.1-mickledore (mickledore)
构建 yocto 图像。
当我运行应用程序时,由于一些
pthread_create
代码,它会提前退出。看起来当我注释掉将策略设置为 FIFO 时,程序运行良好。经过一番互联网搜索后,我发现这是因为组 rt 调度。如果我使用此链接此处中描述的命令
sysctl -w kernel.sched_rt_runtime_us=-1
禁用组RT调度,则该程序能够运行
虽然我在运行时有一个解决方案,但我不太明白如何重新配置 yocto 以默认禁用它。有谁知道如何在 bitbake 食谱中禁用此组 rt 调度?
这个问题的解决办法可以在这里找到:
向 Yocto 生成的自定义 Linux 映像添加新的内核参数
基本上运行
sysctl -w kernel.sched_rt_runtime_us=-1
集是 /proc/sys/kernel/sched_rt_runtime_us
可以通过在
/etc/sysctl.conf
中附加默认值来默认此值。例如kernel.sched_rt_runtime_us = -1
要在 yocto 中进行配置,我们可以在图层中扩展的菜谱中创建
procps
文件夹、procps_%.bbappend
和 systctl.conf
,例如
meta-my-layer/recipes-extended/
└── procps
├── files
│ └── sysctl.conf
└── procps_%.bbappend
procps_%.bbappend:
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"