系统相关
首页 > 系统相关> > 如何提高Linux中1ms定时器的实时性能?

如何提高Linux中1ms定时器的实时性能?

作者:互联网

我正在开发一个嵌入式Linux项目,使用的是可能在版本3.3之后的arago发行版.

我已经配置了一个高分辨率的Linux计时器,每毫秒唤醒一次我的进程.这工作正常,但时间有两个问题:

>唤醒时的抖动
>清醒时处理时间的可变性,尽管该过程完成的处理是恒定的.

我将这些问题归结为Linux的实时性能.但我需要
研究提高实时性能的方法.

我已经检查过内核配置了CONFIG_PREEMPT内核选项,这对实时有用.

我还将SCHED_FIFO调度类应用于我的进程:

struct sched_param schedparm;
memset(&schedparm, 0, sizeof(schedparm));
schedparm.sched_priority = 1; // lowest rt priority
sched_setscheduler(0, SCHED_FIFO, &schedparm);

但这没有任何区别.

我想一个合乎逻辑的步骤是将PREEMPT_RT补丁应用于内核构建,但我还没有确定如何做到这一点.

我还能做些什么来改善抖动/持续时间的变化吗?

或者任何人都可以建议一个关于如何应用PREEMPT_RT补丁的可访问教程?

解决方法:

似乎PREEMPT_RT是合乎逻辑的下一步.你试过这个教程吗?

https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO

更新:我建议您看看其他人如何构建抢占式内核,例如:这里:
https://aur.archlinux.org/packages/linux-rt/

您可以阅读PKGBUILD以了解所做的事情.

标签:linux,embedded,timer,real-time,preempt-rt
来源: https://codeday.me/bug/20190709/1412310.html