Received: by 2002:a25:c205:0:0:0:0:0 with SMTP id s5csp6902532ybf; Fri, 6 Mar 2020 06:44:32 -0800 (PST) X-Google-Smtp-Source: ADFU+vtTMj5TUyz8S6uUzgEDu2Encx9HDTue//28ziLjpp89ixERFGnUJbAlQw6e3a+AuEvlH2LZ X-Received: by 2002:a05:6830:1c6d:: with SMTP id s13mr2643565otg.47.1583505872066; Fri, 06 Mar 2020 06:44:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583505872; cv=none; d=google.com; s=arc-20160816; b=lLyVMIwUh0YaAOnxBjyrdHbxpxA9q3FDDm8GzKr8cM2hQTxI3uMJPGVkOCMP+q0vbG 6dzL4WCEIDGBVH9OvAaHaH8aGFO42yqcqSav13LtvvfuRw0g1Nap56zizgUDFHKf433J wK2eHBnauF/ytc4RtaoGZhUcmaHi5AKbs4j8XIAEMphpUfjZH7QzX/96IsKEpGY1Gg83 v0LK4GnEG4HY2fOltssc4u8DZBBDVEgtC+JSe1HjYCDXqQwsufuAbP5pKFIN3j3ucaUe uX2v+GkxD3MfV3FgGmTdwBuqEkypJcfgXskE52Wb/ix/YIxKtwKh2sf84wp6I30naTZC pN5w== 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=fvb+V2AvfSBDa91mjCZtFBdHLj0QTiY3N7nmc9LOKl4=; b=Qr6GCjUqHy3GB1YBQ2oRTuB0fA4G99hR2PFK2YhAWstnMLELl1TAMrFs6n546bmm5A gONRuyeazEkBJfw7d3ZyBGXhrLbPqy5cNTYYdyADN48WVq6I/D8QJukCAYeBnH/I/bPx 27f9XcSsp3/jSn5s80kcwz0M+cGNuASR0YTS9z3xTd1DMIMfzp15PK+/D/67F0n85/8Q byi9qW/XYjDBbFpriP7YG+DlpAjkXD18bdwPU1dLYMvortUtLLMe9h7MDE6pvMX39ETR xfgFPMG8rEFTwke10ksaTqVoW83w/h+zZSuBbNIT7p516AQ3z1A4kq0wPq3jd1gB3LnE o6Gw== 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 f21si1699438otf.128.2020.03.06.06.44.20; Fri, 06 Mar 2020 06:44:32 -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 S1727563AbgCFOnc (ORCPT + 99 others); Fri, 6 Mar 2020 09:43:32 -0500 Received: from Galois.linutronix.de ([193.142.43.55]:53798 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727097AbgCFOmR (ORCPT ); Fri, 6 Mar 2020 09:42:17 -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 1jAEB2-0006KN-Dl; Fri, 06 Mar 2020 15:42:12 +0100 Received: from [127.0.1.1] (localhost [IPv6:::1]) by tip-bot2.lab.linutronix.de (Postfix) with ESMTP id 7D4221C21DC; Fri, 6 Mar 2020 15:42:08 +0100 (CET) Date: Fri, 06 Mar 2020 14:42:08 -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 tuning of decay period Cc: Thara Gopinath , "Peter Zijlstra (Intel)" , Ingo Molnar , x86 , LKML In-Reply-To: <20200222005213.3873-10-thara.gopinath@linaro.org> References: <20200222005213.3873-10-thara.gopinath@linaro.org> MIME-Version: 1.0 Message-ID: <158350572817.28353.10208505701731851476.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: 05289b90c2e40ae80f5c70431cd0be4cc8a6038d Gitweb: https://git.kernel.org/tip/05289b90c2e40ae80f5c70431cd0be4cc8a6038d Author: Thara Gopinath AuthorDate: Fri, 21 Feb 2020 19:52:13 -05:00 Committer: Ingo Molnar CommitterDate: Fri, 06 Mar 2020 12:57:21 +01:00 sched/fair: Enable tuning of decay period Thermal pressure follows pelt signals which means the decay period for thermal pressure is the default pelt decay period. Depending on SoC characteristics and thermal activity, it might be beneficial to decay thermal pressure slower, but still in-tune with the pelt signals. One way to achieve this is to provide a command line parameter to set a decay shift parameter to an integer between 0 and 10. Signed-off-by: Thara Gopinath Signed-off-by: Peter Zijlstra (Intel) Signed-off-by: Ingo Molnar Link: https://lkml.kernel.org/r/20200222005213.3873-10-thara.gopinath@linaro.org --- Documentation/admin-guide/kernel-parameters.txt | 16 ++++++++++++++- kernel/sched/core.c | 2 +- kernel/sched/fair.c | 15 ++++++++++++- kernel/sched/sched.h | 18 ++++++++++++++++- 4 files changed, 49 insertions(+), 2 deletions(-) diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt index c07815d..dac8245 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -4392,6 +4392,22 @@ incurs a small amount of overhead in the scheduler but is useful for debugging and performance tuning. + sched_thermal_decay_shift= + [KNL, SMP] Set a decay shift for scheduler thermal + pressure signal. Thermal pressure signal follows the + default decay period of other scheduler pelt + signals(usually 32 ms but configurable). Setting + sched_thermal_decay_shift will left shift the decay + period for the thermal pressure signal by the shift + value. + i.e. with the default pelt decay period of 32 ms + sched_thermal_decay_shift thermal pressure decay pr + 1 64 ms + 2 128 ms + and so on. + Format: integer between 0 and 10 + Default is 0. + skew_tick= [KNL] Offset the periodic timer tick per cpu to mitigate xtime_lock contention on larger systems, and/or RCU lock contention on all systems with CONFIG_MAXSMP set. diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 3e620fe..4d76df3 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -3595,7 +3595,7 @@ void scheduler_tick(void) update_rq_clock(rq); thermal_pressure = arch_scale_thermal_pressure(cpu_of(rq)); - update_thermal_load_avg(rq_clock_task(rq), rq, thermal_pressure); + update_thermal_load_avg(rq_clock_thermal(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 aa51286..79bb423 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -86,6 +86,19 @@ static unsigned int normalized_sysctl_sched_wakeup_granularity = 1000000UL; const_debug unsigned int sysctl_sched_migration_cost = 500000UL; +int sched_thermal_decay_shift; +static int __init setup_sched_thermal_decay_shift(char *str) +{ + int _shift = 0; + + if (kstrtoint(str, 0, &_shift)) + pr_warn("Unable to set scheduler thermal pressure decay shift parameter\n"); + + sched_thermal_decay_shift = clamp(_shift, 0, 10); + return 1; +} +__setup("sched_thermal_decay_shift=", setup_sched_thermal_decay_shift); + #ifdef CONFIG_SMP /* * For asym packing, by default the lower numbered CPU has higher priority. @@ -7760,7 +7773,7 @@ static bool __update_blocked_others(struct rq *rq, bool *done) 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_thermal_load_avg(rq_clock_thermal(rq), rq, thermal_pressure) | update_irq_load_avg(rq, 0); if (others_have_blocked(rq)) diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index 6c839f8..7f1a85b 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -1127,6 +1127,24 @@ static inline u64 rq_clock_task(struct rq *rq) return rq->clock_task; } +/** + * By default the decay is the default pelt decay period. + * The decay shift can change the decay period in + * multiples of 32. + * Decay shift Decay period(ms) + * 0 32 + * 1 64 + * 2 128 + * 3 256 + * 4 512 + */ +extern int sched_thermal_decay_shift; + +static inline u64 rq_clock_thermal(struct rq *rq) +{ + return rq_clock_task(rq) >> sched_thermal_decay_shift; +} + static inline void rq_clock_skip_update(struct rq *rq) { lockdep_assert_held(&rq->lock);