Re: [POC][RFC][PATCH] sched: Extended Scheduler Time Slice

Steven Rostedt
2023-10-30T13:57:55Z

On Mon, 30 Oct 2023 14:29:49 +0100
Peter Zijlstra <peterz@infradead.org> wrote:

> On Thu, Oct 26, 2023 at 09:16:58AM -0400, Steven Rostedt wrote:
>
> > I said:
> >
> > If we are worried about abuse, we could even punish tasks that don't call
> > sched_yield() by the time its extended time slice is taken.
>
> This is a user interface, ofcourse I'm worried about abuse. That's the
> first thing you *should* think about.
>
> Userspace is out to get you -- must assume hostile.

100% agree!

>
> Notably, we were talking usec latencies in the Chrome thread, you're
> adding 1000 usec latencies here (in the best case, delaying scheduling
> until the next tick, 10000usec for the HZ=100 folks). This is quite
> 'unfortunate'.
>
> On my very aged IVB-EP I can get 50us scheduling latencies on a good
> day, on my brand spanking new SPR I can get 20us (more faster more
> better etc..).
>
> Ideally we don't allow userspace to extend much (if any) beyond the
> granularity already imposed by the kernel's preempt/IRQ-disable regions.
> Sadly we don't have a self-measure of that around.
>
> So I had a poke at all this and ended up with the below. I still utterly
> detest all this, but it appears to actually work -- although I don't
> much see the improvement, the numbers are somewhat unstable. (I say it
> works because I see the 'yield -- made it' trace_printk when I do it
> right and the 'timeout -- force resched' when I do it 'wrong'.
>
> This thing works across the board and gives userspace 50usec, equal to
> what the kernel already imposes on (on the IVB).
>
> I simply took a bit from the existing flags field, and userspace can use
> BTR to test if the kernel cleared it -- in which case it needs yield
> (and not any other syscall).
>
> Additinally doing a syscall with the bit set will SIGSEGV (when
> DEBUG_RSEQ).
>

Thanks for looking into this even though you detest it ;-)

Unfortunately, now that the merge window has opened (and someone reported a
bug in my code from linux-next :-( ), I need to take a step back from this
and may not be able to work on it again until plumbers. By then, I hope to
have time to dig deeper into what you have done here.

Thanks again Peter!

-- Steve