Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1617432
| From | Cong Wang <xiyou.wangcong@gmail.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: net/sched: latent livelock in dev_deactivate_many() due to yield() usage |
| Date | 2017-04-06 02:00 +0200 |
| Message-ID | <tt30e-NG-13@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> <tsMsp-7lZ-7@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On Tue, Apr 4, 2017 at 11:12 PM, Mike Galbraith <efault@gmx.de> wrote: > 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 :) I am not trying to defend for yield(), I am trying to understand when cond_resched() is not a right solution to replace yield() and when it is. For me, the dev_deactivate_many() case is, because I interpret "be nice" differently. Thanks.
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll 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