Re: [RFC 4/6] softirq: Run per-group per-cpu ksoftirqd thread

2018-01-18 Thread Mike Galbraith
On Thu, 2018-01-18 at 17:53 +, Dmitry Safonov wrote: > How do you identify in RT one ksoftirqd thread from > another? I mean, to find which softirq nr the thread is servicing? static void do_raise_softirq_irqoff(unsigned int nr) { struct task_struct *tsk = __this_cpu_ksoftirqd(nr);

Re: [RFC 4/6] softirq: Run per-group per-cpu ksoftirqd thread

2018-01-18 Thread Dmitry Safonov
On Thu, 2018-01-18 at 18:00 +0100, Mike Galbraith wrote: > On Thu, 2018-01-18 at 16:12 +, Dmitry Safonov wrote: > > > > diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h > > index 2ea09896bd6e..17e1a04445fa 100644 > > --- a/include/linux/interrupt.h > > +++ b/include/linux/int

Re: [RFC 4/6] softirq: Run per-group per-cpu ksoftirqd thread

2018-01-18 Thread Mike Galbraith
On Thu, 2018-01-18 at 16:12 +, Dmitry Safonov wrote: > > diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h > index 2ea09896bd6e..17e1a04445fa 100644 > --- a/include/linux/interrupt.h > +++ b/include/linux/interrupt.h > @@ -508,11 +508,21 @@ extern void __raise_softirq_irqoff(u

[RFC 4/6] softirq: Run per-group per-cpu ksoftirqd thread

2018-01-18 Thread Dmitry Safonov
Running one ksoftirqd per-cpu allows to defer processing softirqs under storm. But having only one ksoftirqd thread for that make it worse for other kinds of softirqs. As we check if (ksoftirqd_running()) and defer all softirqs till ksoftirqd time-slice it introduces latencies. While it's acceptabl