Received: by 2002:a25:c205:0:0:0:0:0 with SMTP id s5csp6901142ybf; Fri, 6 Mar 2020 06:43:04 -0800 (PST) X-Google-Smtp-Source: ADFU+vu1UKEf865v1vk1NWtx5+lN0Gc2pj21nq/uXlSUHmwIhtivRxF1xYvq4nsZyl4q/GHXv7sh X-Received: by 2002:a9d:6255:: with SMTP id i21mr2890044otk.183.1583505784789; Fri, 06 Mar 2020 06:43:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583505784; cv=none; d=google.com; s=arc-20160816; b=WdssRpRKnA2G4lLwdKpM20AIrCoP93nbVO/SjXWWauLJdxz5TaRopc5Pc4+uA5HxE+ kVB1tnFf5nQR9hbQ7mHb5Jn0xOr0TbCqD0ni3van2m2A9KD3uhrbx7nZDhY44nogA6tR FDRUysDKwm72kzP93vWQbTndLET1WLkH4Oo+desP4JMq4pfZNcIDPamH5V2ns2ex3IbA dDf1jmNdwgubq/kFlmqL2dVo/5tNhwPutI6EwhBUka01X9Rbb1Eyk/dGMf4KdlBhgdSA 53V2bCZW0Y+8QzG5INbG9d9WpnBhw2xwfIn5gbRmHhW+wRrj4wwOJWMJ+2sZl3g5lY91 mcHg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :robot-unsubscribe:robot-id:message-id:mime-version:references :in-reply-to:cc:subject:to:reply-to:from:date; bh=nlBY225aTWwdofqVpokFahhCyNDV5cPDoGB5FlkgHF0=; b=b7ze2GGnLb3xR0kG6fgxNJWcC6cpkUtvBPiifFGLVrryxXyHITZHwyOhdl1QBd88Cc iSe0lbfKKuKOAobwJlYUgvQYcsJlrNgHwfgWOUDstfEvStnYA9Eb8NnMd1ckN082G582 sVKapEc68RIzqWWTxjOWzbFe3e/aFw0J3ioimcbi3YGKGMYhPww6mvDwjOZ1XxbrTtKK CukX+GXCid41EaU0gCsWt/OKYyJ6NAEv3aAY+cwbOaJK9s171E5XhdhtkZYwwVqNm8fN ajQA4yPiGk+Kz86bVmjJq3zWKR37PfNskuEeiquP1CYvp/ppWv+st+8dY+0CRDu8UqJ5 +Rnw== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a4si1577533oto.55.2020.03.06.06.42.52; Fri, 06 Mar 2020 06:43:04 -0800 (PST) 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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727279AbgCFOmY (ORCPT + 99 others); Fri, 6 Mar 2020 09:42:24 -0500 Received: from Galois.linutronix.de ([193.142.43.55]:53816 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726979AbgCFOmU (ORCPT ); Fri, 6 Mar 2020 09:42:20 -0500 Received: from [5.158.153.53] (helo=tip-bot2.lab.linutronix.de) by Galois.linutronix.de with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1jAEB4-0006N2-DA; Fri, 06 Mar 2020 15:42:14 +0100 Received: from [127.0.1.1] (localhost [IPv6:::1]) by tip-bot2.lab.linutronix.de (Postfix) with ESMTP id A3B001C21DE; Fri, 6 Mar 2020 15:42:09 +0100 (CET) Date: Fri, 06 Mar 2020 14:42:09 -0000 From: "tip-bot2 for Thara Gopinath" Reply-to: linux-kernel@vger.kernel.org To: linux-tip-commits@vger.kernel.org Subject: [tip: sched/core] sched/fair: Enable periodic update of average thermal pressure Cc: Thara Gopinath , "Peter Zijlstra (Intel)" , Ingo Molnar , x86 , LKML In-Reply-To: <20200222005213.3873-7-thara.gopinath@linaro.org> References: <20200222005213.3873-7-thara.gopinath@linaro.org> MIME-Version: 1.0 Message-ID: <158350572934.28353.12524884079406049060.tip-bot2@tip-bot2> X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Linutronix-Spam-Score: -1.0 X-Linutronix-Spam-Level: - X-Linutronix-Spam-Status: No , -1.0 points, 5.0 required, ALL_TRUSTED=-1,SHORTCIRCUIT=-0.0001 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The following commit has been merged into the sched/core branch of tip: Commit-ID: b4eccf5f8e1dcade112d97be86ad455a94501a0f Gitweb: https://git.kernel.org/tip/b4eccf5f8e1dcade112d97be86ad455a94501a0f Author: Thara Gopinath AuthorDate: Fri, 21 Feb 2020 19:52:10 -05:00 Committer: Ingo Molnar CommitterDate: Fri, 06 Mar 2020 12:57:20 +01:00 sched/fair: Enable periodic update of average thermal pressure Introduce support in scheduler periodic tick and other CFS bookkeeping APIs to trigger the process of computing average thermal pressure for a CPU. Also consider avg_thermal.load_avg in others_have_blocked which allows for decay of pelt signals. Signed-off-by: Thara Gopinath Signed-off-by: Peter Zijlstra (Intel) Signed-off-by: Ingo Molnar Link: https://lkml.kernel.org/r/20200222005213.3873-7-thara.gopinath@linaro.org --- kernel/sched/core.c | 3 +++ kernel/sched/fair.c | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 8e6f380..3e620fe 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -3586,6 +3586,7 @@ void scheduler_tick(void) struct rq *rq = cpu_rq(cpu); struct task_struct *curr = rq->curr; struct rq_flags rf; + unsigned long thermal_pressure; arch_scale_freq_tick(); sched_clock_tick(); @@ -3593,6 +3594,8 @@ void scheduler_tick(void) rq_lock(rq, &rf); update_rq_clock(rq); + thermal_pressure = arch_scale_thermal_pressure(cpu_of(rq)); + update_thermal_load_avg(rq_clock_task(rq), rq, thermal_pressure); curr->sched_class->task_tick(rq, curr, 0); calc_global_load_tick(rq); psi_task_tick(rq); diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 4b5d5e5..11f8488 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -7719,6 +7719,9 @@ static inline bool others_have_blocked(struct rq *rq) if (READ_ONCE(rq->avg_dl.util_avg)) return true; + if (thermal_load_avg(rq)) + return true; + #ifdef CONFIG_HAVE_SCHED_AVG_IRQ if (READ_ONCE(rq->avg_irq.util_avg)) return true; @@ -7744,6 +7747,7 @@ static bool __update_blocked_others(struct rq *rq, bool *done) { const struct sched_class *curr_class; u64 now = rq_clock_pelt(rq); + unsigned long thermal_pressure; bool decayed; /* @@ -7752,8 +7756,11 @@ static bool __update_blocked_others(struct rq *rq, bool *done) */ curr_class = rq->curr->sched_class; + thermal_pressure = arch_scale_thermal_pressure(cpu_of(rq)); + decayed = update_rt_rq_load_avg(now, rq, curr_class == &rt_sched_class) | update_dl_rq_load_avg(now, rq, curr_class == &dl_sched_class) | + update_thermal_load_avg(rq_clock_task(rq), rq, thermal_pressure) | update_irq_load_avg(rq, 0); if (others_have_blocked(rq))