Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp976519yba; Thu, 4 Apr 2019 01:32:48 -0700 (PDT) X-Google-Smtp-Source: APXvYqzzcmiBF9VXkyMNiaT+ZzEXewxXg5BeTDSYjSfmQwgnN8JhEFmVYmtYhTNYuio46OAH5q3a X-Received: by 2002:a17:902:5c5:: with SMTP id f63mr5062848plf.64.1554366768167; Thu, 04 Apr 2019 01:32:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1554366768; cv=none; d=google.com; s=arc-20160816; b=w8swloV/p7cpDkvUyqaiw0IprS128G/yjieB+QTyC3Hd8FwnBuUtsh09ifaAoLwq9K jch51S4Kw/j8jbLs0l1rmrAyyxYQk/7X2gyszL6sOq07o74CiO654/Ha6D0dM98MCG+f uRMjYWsto8ttkPZk36oGsaIVFsrhK+VsaKJIW6qeOpdJxu+DJXeb2clGZYBgeWO4YOiS OJR3UteZ7y9d4V4NrrbZDDseYCUIfypeQJ1BytU4y3Br64haccaupdKZFMm8jNgn7NrT sXVnscngC9Npx2/TxY1Kbb/DnTHpgP32jyb+7bLwe1hNZ2NRUWECo90ctYRV0JGl+bn6 Vmmg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=2JW+kUaU0T3wMsVavz10Dn9m72dQQtgXgjTBSP4gmbA=; b=sc2Vincp512K8Y7bkcYt6OEGUYaLIyeSUWKSv3IO223yhJTkEIyWqMxzSPhbnyfp2B 7uaemXw55itOVjEo9V3W/9gJjNcvvRq2bcp+dJkkqS7uuoeAgimLjmKVfsqQFSNgjQsj XTza1Vf1aFO9TIUm32+530RYT92yEHqzawpxtk8OvyNMIgsi22/BcxerQkcvzRK24Qwf RwSNiPfF6SEfyjP4kicvjVzqvST/mS54RjkaSmbFunfLrOjsiWmZYD27Cb/6VMefMBHZ 4UIMpEy+6bueZPUMF2lwcDUIRkrv1WLCTOHPxoKdX77wOs6ut+XOt7c0g97kEgXBz4sf Wv8A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b="H/YNUu1o"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id cy1si16444984plb.429.2019.04.04.01.32.32; Thu, 04 Apr 2019 01:32:48 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b="H/YNUu1o"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728192AbfDDIbt (ORCPT + 99 others); Thu, 4 Apr 2019 04:31:49 -0400 Received: from mail-lj1-f195.google.com ([209.85.208.195]:39574 "EHLO mail-lj1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727152AbfDDIbt (ORCPT ); Thu, 4 Apr 2019 04:31:49 -0400 Received: by mail-lj1-f195.google.com with SMTP id l7so1295657ljg.6 for ; Thu, 04 Apr 2019 01:31:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=2JW+kUaU0T3wMsVavz10Dn9m72dQQtgXgjTBSP4gmbA=; b=H/YNUu1otWttlXYVufQRI/VGFyRNQSHuLGwDH+48SdrK6cIiNUf1KWRWSETDMjMlJ1 a9MknVTgNaiSYk9evRmjUynsfGcpEYWR+MM+ZHsQsZ6IWtAdRJSFxrqaGfgEysOzjAjP YNLr2t++AtxOcYqMwE/DJXDT/tmcOXoOQ8uBwkiU70tGskmO5jxmlBU5gpXN5NQ/z+kM H9NqVnVfyHFt4pkU433Bdxe9l75XzU1vxT7XRQA5/B8fFaP21OJeZiXiBvG227huaRtB B7ubnTVPobmEWL/TJ2Q+uvYgIXR3oEuoIvsZwbUeqzHr4mrO7C5n2ld2kKYL2B/r9E9F tvzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=2JW+kUaU0T3wMsVavz10Dn9m72dQQtgXgjTBSP4gmbA=; b=ombeP1LtfMDGz21JrUBkFmghopqI6Ts9/mzmfcismojQttRBrMHIXdmRuY9iiDfMOo hqB63jrdJlL3fcuq6njl6Oa0O+S8hV4+ASMIslmRhmy8N/Y99H0WdF9ukY0I5IXYc+vm rY/YnI0yQt0sPuCpn2F23wx7vP5NRQh6C8AmyU45nU4FkTg26PpKsM96KoY82RE/DlRm Hc5PQLPWeqCiL6S7OVJhzW9tAlgDaHEblHo9rK1NL5QiHhUjuMDsxTrhIaElHXMWF5bh HuDNGhbRZ03s2PcWWmgNCxxfrdf3dhXJ9wjyiCWrCNHHrRaOAd2wBplXv9OYfrQ/X+dc t1NA== X-Gm-Message-State: APjAAAULSYTviluRH4ubPNYpiIZQdFw8CyBabQ4eN5CEZSsrhWmE/w8f tLCWO0SAkjQADfnv4XfSL5nhyWf1GKV+dNjB6w7sHw== X-Received: by 2002:a2e:85d2:: with SMTP id h18mr2606675ljj.128.1554366706566; Thu, 04 Apr 2019 01:31:46 -0700 (PDT) MIME-Version: 1.0 References: <20190218165620.383905466@infradead.org> <20190218173514.796920915@infradead.org> <20190221164146.GV32494@hirez.programming.kicks-ass.net> In-Reply-To: <20190221164146.GV32494@hirez.programming.kicks-ass.net> From: Aubrey Li Date: Thu, 4 Apr 2019 16:31:35 +0800 Message-ID: Subject: Re: [RFC][PATCH 15/16] sched: Trivial forced-newidle balancer To: Peter Zijlstra Cc: Valentin Schneider , Ingo Molnar , Thomas Gleixner , Paul Turner , Tim Chen , Linus Torvalds , Linux List Kernel Mailing , Subhra Mazumdar , =?UTF-8?B?RnLDqWTDqXJpYyBXZWlzYmVja2Vy?= , Kees Cook , Greg Kerr Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Feb 22, 2019 at 12:42 AM Peter Zijlstra wrote: > > On Thu, Feb 21, 2019 at 04:19:46PM +0000, Valentin Schneider wrote: > > Hi, > > > > On 18/02/2019 16:56, Peter Zijlstra wrote: > > [...] > > > +static bool try_steal_cookie(int this, int that) > > > +{ > > > + struct rq *dst = cpu_rq(this), *src = cpu_rq(that); > > > + struct task_struct *p; > > > + unsigned long cookie; > > > + bool success = false; > > > + > > > + local_irq_disable(); > > > + double_rq_lock(dst, src); Here, should we check dst and src's rq status before lock their rq? if src is idle, it could be in the progress of load balance already? Thanks, -Aubrey diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 3e3162f..a1e0a6f 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -3861,6 +3861,13 @@ static bool try_steal_cookie(int this, int that) unsigned long cookie; bool success = false; + /* + * Don't steal if src is idle or has only one runnable task, + * or dst has more than one runnable task + */ + if (src->nr_running <= 1 || unlikely(dst->nr_running >= 1)) + return false; + local_irq_disable(); double_rq_lock(dst, src);