Quote:
Originally Posted by syg00
Do you happen to be pinning your process to CPU0 ?. If so pick another one - I like to stay away from the processors that the kernel has to run on in early boot as (to my simple mind) it's likely to reschedule there all the time. Might be nothing, but easy to implement as a test.
|
Thanks. No I am not using CPU0.
In fact, I figured out what was the problem by tracing down scheduler events using ftrace:
The tty driver relies on an unbound kernel worker to push data to the user via a workqueue. That kworker is scheduled with 'SCHED_OTHER'. This is kind of a strange situation, because I prioritized the tty IRQ and the receiving application both with SCHED_FIFO, but I have this SCHED_OTHER kworker in between, which is clearly the weakest chain in the link. There used to be a low_latency flag for tty, but it got removed because it was buggy apparently.
Well, in any case I understood the problem and I am evaluation options to overcome this.