I am working on an embedded Linux project using the arago distribution, which is probably around version 3.3.
I set up a high-resolution Linux timer to wake my process up once in a millisecond. This works fine, but there are two problems with synchronization:
- Jitter while waking up
- The variability of the processing time upon waking, despite the fact that the processing performed by the process is constant.
I attribute these issues to Linux performance to a lesser extent than in real time. But I need to explore ways to improve real-time performance.
I checked that the kernel is configured with the CONFIG_PREEMPT kernel parameter, which is good for real time.
I also applied the SCHED_FIFO scheduling class to my process:
struct sched_param schedparm; memset(&schedparm, 0, sizeof(schedparm)); schedparm.sched_priority = 1;
but it didnβt matter.
I assume that the logical step is to apply the PREEMPT_RT patch to the kernel assembly, but I have not yet decided how to do this.
Is there anything else I can do to improve the jitter / duration variability?
Or can anyone suggest an affordable tutorial on how to apply the PREEMPT_RT patch?
source share