Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1616600

Re: net/sched: latent livelock in dev_deactivate_many() due to yield() usage

From Mike Galbraith <efault@gmx.de>
Newsgroups linux.kernel
Subject Re: net/sched: latent livelock in dev_deactivate_many() due to yield() usage
Date 2017-04-05 08:20 +0200
Message-ID <tsMsp-7lZ-7@gated-at.bofh.it> (permalink)
References <trFjj-40B-3@gated-at.bofh.it> <tsFhf-2yy-13@gated-at.bofh.it> <tsJNT-5yF-1@gated-at.bofh.it> <tsLG1-6OS-1@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On Tue, 2017-04-04 at 22:25 -0700, Cong Wang wrote:
> On Tue, Apr 4, 2017 at 8:20 PM, Mike Galbraith <efault@gmx.de> wrote:
> > -               while (some_qdisc_is_busy(dev))
> > -                       yield();
> > +               swait_event_timeout(swait,
> > !some_qdisc_is_busy(dev), 1);
> >  }
> 
> I don't see why this is an improvement even if I don't care about the
> hardcoded timeout for now... Why the scheduler can make a better
> decision with swait_event_timeout() than with cond_resched()?

Because sleeping gets you out of the way?  There is no other decision
the scheduler can make while a SCHED_FIFO task is trying to yield when
it is the one and only task at it's priority.  The scheduler is doing
exactly what it is supposed to do, problem is people calling yield()
tend to think it does something it does not do, which is why it is
decorated with "if you think you want yield(), think again"

Yes, yield semantics suck rocks, basically don't exist.  Hop in your
time machine and slap whoever you find claiming responsibility :)

	-Mike

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

net/sched: latent livelock in dev_deactivate_many() due to yield()  usage Mike Galbraith <efault@gmx.de> - 2017-04-02 06:30 +0200
  Re: net/sched: latent livelock in dev_deactivate_many() due to  yield() usage Cong Wang <xiyou.wangcong@gmail.com> - 2017-04-05 00:40 +0200
    Re: net/sched: latent livelock in dev_deactivate_many() due to  yield() usage Mike Galbraith <efault@gmx.de> - 2017-04-05 05:30 +0200
      Re: net/sched: latent livelock in dev_deactivate_many() due to  yield() usage Cong Wang <xiyou.wangcong@gmail.com> - 2017-04-05 07:30 +0200
        Re: net/sched: latent livelock in dev_deactivate_many() due to  yield() usage Mike Galbraith <efault@gmx.de> - 2017-04-05 08:20 +0200
          Re: net/sched: latent livelock in dev_deactivate_many() due to  yield() usage Cong Wang <xiyou.wangcong@gmail.com> - 2017-04-06 02:00 +0200
            Re: net/sched: latent livelock in dev_deactivate_many() due to  yield() usage Mike Galbraith <efault@gmx.de> - 2017-04-06 03:10 +0200
        Re: net/sched: latent livelock in dev_deactivate_many() due to  yield() usage Peter Zijlstra <peterz@infradead.org> - 2017-04-06 12:30 +0200
  Re: net/sched: latent livelock in dev_deactivate_many() due to  yield() usage Stephen Hemminger <stephen@networkplumber.org> - 2017-04-06 02:40 +0200
    Re: net/sched: latent livelock in dev_deactivate_many() due to  yield() usage Mike Galbraith <efault@gmx.de> - 2017-04-06 03:30 +0200
    Re: net/sched: latent livelock in dev_deactivate_many() due to  yield() usage Peter Zijlstra <peterz@infradead.org> - 2017-04-06 12:30 +0200
      Re: net/sched: latent livelock in dev_deactivate_many() due to  yield() usage Peter Zijlstra <peterz@infradead.org> - 2017-04-06 13:10 +0200

csiph-web