Messages in this thread | | | Date | Thu, 18 Jul 2019 14:40:49 +0200 (CEST) | From | Thomas Gleixner <> | Subject | Re: regression with napi/softirq ? |
| |
On Thu, 18 Jul 2019, Sudip Mukherjee wrote: > On Thu, Jul 18, 2019 at 7:58 AM Eric Dumazet <eric.dumazet@gmail.com> wrote: > > ksoftirqd might be spuriously scheduled from tx path, when > > __qdisc_run() also reacts to need_resched(). > > > > By raising NET_TX while we are processing NET_RX (say we send a TCP ACK packet > > in response to incoming packet), we force __do_softirq() to perform > > another loop, but before doing an other round, it will also check need_resched() > > and eventually call wakeup_softirqd() > > > > I wonder if following patch makes any difference. > > > > diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c > > index 11c03cf4aa74b44663c74e0e3284140b0c75d9c4..ab736e974396394ae6ba409868aaea56a50ad57b 100644 > > --- a/net/sched/sch_generic.c > > +++ b/net/sched/sch_generic.c > > @@ -377,6 +377,8 @@ void __qdisc_run(struct Qdisc *q) > > int packets; > > > > while (qdisc_restart(q, &packets)) { > > + if (qdisc_is_empty(q)) > > + break; > > unfortunately its v4.14.55 and qdisc_is_empty() is not yet introduced. > And I can not backport 28cff537ef2e ("net: sched: add empty status > flag for NOLOCK qdisc") > also as TCQ_F_NOLOCK is there. :(
Then please run the test on a current kernel. Backports can be discussed once the problem is understood.
Thanks,
tglx
| |