gpt4 book ai didi

linux - 嵌入式 Linux 单核低延迟进程

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:51:56 27 4
gpt4 key购买 nike

我想在带有嵌入式 Linux 系统的单独内核上运行一个低延迟任务(用于音频,ALSA/JACK)。删除调度程序和其他中断可能是这里的关键。

到目前为止,我发现了几种方法,例如cpusets 和 2009 年的离线调度程序(遗憾的是不支持用户空间任务)。

是否有更新/更方便的方法来实现这一点?

Offline scheduler

最佳答案

您要找的主题叫做"CPU affinity" . CPU 亲和性有两个主要方面:进程的亲和性和中断的亲和性。

据我(公认的有限)知识:

  • 使用 taskset 将进程分配给 CPU命令。 (亲和性由子进程继承。)

  • 可以使用 /proc/irq/<n>/smp_affinity 来控制 Linux 上 CPU 分配的中断。 .要验证分配的有效性,请检查 /proc/interrupts查看哪些 CPU 服务于哪些中断。 See here.

在您的特定情况下,您希望为您的关键应用程序保留一个 CPU(也称为核心),例如 CPU0。这意味着所有进程和中断都应该分配给除 CPU0 以外的所有进程,使用清除了位 0 (== CPU0) 的关联掩码,例如0xfffffffe。您的关键应用程序将具有 0x1 的关联掩码,这意味着它只能在 CPU0 上运行。

此外,您可能需要使用 sched_setscheduler 应用程序中的系统调用将调度设置为实时策略之一。这可能会改善您的应用程序的延迟(但也可能变得更糟)。

请注意,调整 CPU 亲和性并非易事,明确的解决方案很少见。您需要进行测试和实验以确保配置能够维持您需要的性能。例如,您的应用程序很可能会与其他进程进行通信。如果通信是同步的,而其他进程 react 缓慢(因为它们的 CPU 资源有限),这反过来会对关键应用程序的性能产生负面影响。这同样适用于声卡的中断。

希望对您有所帮助。

关于linux - 嵌入式 Linux 单核低延迟进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30373526/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com