From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756557AbdDFBJU (ORCPT ); Wed, 5 Apr 2017 21:09:20 -0400 Received: from mout.gmx.net ([212.227.15.19]:62920 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755924AbdDFBJO (ORCPT ); Wed, 5 Apr 2017 21:09:14 -0400 Message-ID: <1491440927.4718.21.camel@gmx.de> Subject: Re: net/sched: latent livelock in dev_deactivate_many() due to yield() usage From: Mike Galbraith To: Cong Wang Cc: netdev , LKML , Peter Zijlstra Date: Thu, 06 Apr 2017 03:08:47 +0200 In-Reply-To: References: <1491107321.13631.33.camel@gmx.de> <1491362429.4536.77.camel@gmx.de> <1491372741.4536.165.camel@gmx.de> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.16.5 Mime-Version: 1.0 Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:nQFtqM+4k5YT6jQvvJ2hOz2lIn5dcl34VX4w4i3SXm7/AvCGZ15 YgzQ0FDtQB+A4kq9+rX+k50EqSmOv9gr8eu99IkzCWOn19GG4kMT6zx/P7Q8l8dUovQFga4 IvsiKD0tvyJqQ+mb4FF3G+L5+HJQBjuiJQqogMR2vHDUkNEFQo+P0HkPw+Z2HT6Dw8HZkjs 4lQsrt7PUK4uwGKRoaXIQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:+7NYp3OCGjc=:f36JKs6h7+lXttpoxEVehn C06P6M+Gn7gdOcShmcG9jcfbzey5x7/Za0HTSqa/uxVRHY0IFF6bIB8jJTA5NjWn04VgNDNQK c1NWWhyhKwwcE/iuW/9gdjZQRStSaxmwyfCJULB1mUBAt2PaRWe3I3eO4dTgZMmUo7mwEWkQk 7DD8hv6rZYIEZKEbTT6ih8Kyi71yplGoGvs93G+KVuZ9KdeW3usCW2lULiHhZuJlViSwfPRAp jML/fkcKciMh90HSir3wZ2coJbrr120eRPjX+nOBelUCj24WgEmSVSZT+5PtDp9hSshUpCxWN 9G1REhtAgDZE5cRbM0DKiJGp9wR/6HOUBtdGZxCeEyHho/Hx+6p1WWy4ArVGFWKKkL9G7T9SY faQXLI2bcdGHsFrVih3DcJvLcQXtLzeRGwCXYG9ZjCrHVIKMaQ6opfrNp6NW8N/iEyPqRuZMc tyjpRkWXI9p1+oyvH1P3J5OUj1yLA2/sKLi4RIQuKwA8+iQJTFsW9SkFP+3TU1z1Evkb1G22U 5UK94izulY9Z76TJ+fLlTdt1NWjlqR9+/Lvd0AOPZy7wwPiLeTCmFbYPb+V3EaDlkOw7w7MBT 9I0N4h1jZTvImcrU12E1lt/bbEAQJIxyuUxpcWgpiPAMZt6NPyyOeLVooi+cYFIU++Qnuc9kW 660Idj4l2EFkUgV3zLRS0kmzn6gn0o1LTHrlOmNobLIqabJ4VwgYCcigefhJssNNEILf1zSMY IGESuphW/gUTrUt5YWYy15xXgtHC+lbB6HvWqHIAofWgdlCFSyuco5Js0xADU4bVE/Ycjnp2L Y3GVmbA Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 2017-04-05 at 16:55 -0700, Cong Wang wrote: > On Tue, Apr 4, 2017 at 11:12 PM, Mike Galbraith wrote: > > On Tue, 2017-04-04 at 22:25 -0700, Cong Wang wrote: > > > On Tue, Apr 4, 2017 at 8:20 PM, Mike Galbraith 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. Yeah, I know you weren't defending it, just as I know that the net-fu masters don't need that comment held close to their noses in order to be able to read it.. waving it about wasn't for their benefit ;-) -Mike