> From: Martin Pieuchot <[email protected]> > Date: Mon, 8 Aug 2016 12:17:30 +0200 > > On 07/30/16 02:41, Alexander Bluhm wrote: > > On Fri, Jul 29, 2016 at 08:07:14PM -0400, Ted Unangst wrote: > >> There's a sched_yield() in taskq_thread(). Something's not quite right. > > > > It is a sched_pause() in taskq_thread(). > > > > If I replace my yield() with sched_pause(), the userland hangs > > during splicing. Looks like SPCF_SHOULDYIELD is not set. > > Are you sure it is not set? Or does the scheduler keeps selecting your > task?
That would indeed be interesting to know. As far as I can tell it should be set. SPCF_SHOULDYIELD only gets set if the process has been hogging the CPU for more than a single tick (it's set the second time the process goes trhough roudrobin()). With a 100 Hz clock that might simply be too much for smooth interactive behaviour, especially if there is a lot of other high-priority kernel work to be done.
