Received: by 10.223.185.116 with SMTP id b49csp6142702wrg; Thu, 8 Mar 2018 02:30:37 -0800 (PST) X-Google-Smtp-Source: AG47ELuiaII7F2DguyzqJgRfjIHXzttDk98kdO/P49ijUhEiFkmWgtfGBMY9oTHMkV9aKBoG3fh5 X-Received: by 2002:a17:902:7789:: with SMTP id o9-v6mr24123448pll.422.1520505036906; Thu, 08 Mar 2018 02:30:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520505036; cv=none; d=google.com; s=arc-20160816; b=H3IPQ+p6d6p5d85ng+mNj5vVvl3/TIPIUniSWXA2ss2yTbq45T8GqXxca+t5nNzg8J 1PHpYFH6Kp+bOSTT0ew/sbI8w6UIEqH4f1dXFL4srZXfZClF2Etaig0CUZjtPqAaxwwJ kqLwVijve1xjYMtQ7johnDuEp6c3Djb73GuXT1eI9EwgjwYYx1gNA9WDg7XU+gDpdmSQ uXxKFL6j0b6kez0xSREU9MJ+dC5mH94sd0X3+EsvTv6PN0i8U9mss+3NDh2RcglOX3bR ++DrfxPSxYs7EkrY0kA36KqmVqqMhYwR6D9GVKVtJuydVheoxKYQ7wFEnlCB6AAORpYb ELzg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=7BLyge5nON7g8D4+4upObl4YIehueW+JD3mjcUG68hI=; b=uOSQtTd4vLBXKzy46ZaX0TG549seg5jFISoBEPk6FEAaSHdhe9gnGuwsWdwXbNNOhg syqw0qTzpPXQjJbF8K06iLwE31V2AxsF/0jwxUCnFLJNjwuunAbN+HYpEVuR1qfP2ime q5iyyj1tAF6qbNb3QnQRZV7hr7yPT+J7nJoB0YxoVfXqbm0XGdzp1k//TmvdU9JXNwi7 KouHCs0tWOrWq1KWLjdzf1lgJJYCcYxk8rs9mbbCdFXTrmEB5IxSSj/5nTU6j4OkSg+6 cUOZfJDwnrmvrRG4Q2rtXFdsgjkEcQTIY78syC/kWBDleAgpXZDQagUK4UiD3I9DtlZ+ hR6Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@evidence-eu-com.20150623.gappssmtp.com header.s=20150623 header.b=KOCrnh/7; 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 j10si12728117pgq.431.2018.03.08.02.30.22; Thu, 08 Mar 2018 02:30:36 -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; dkim=pass header.i=@evidence-eu-com.20150623.gappssmtp.com header.s=20150623 header.b=KOCrnh/7; 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 S1755615AbeCHK3Z (ORCPT + 99 others); Thu, 8 Mar 2018 05:29:25 -0500 Received: from mail-wr0-f195.google.com ([209.85.128.195]:38854 "EHLO mail-wr0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755279AbeCHK3W (ORCPT ); Thu, 8 Mar 2018 05:29:22 -0500 Received: by mail-wr0-f195.google.com with SMTP id n7so5125490wrn.5 for ; Thu, 08 Mar 2018 02:29:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=evidence-eu-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=7BLyge5nON7g8D4+4upObl4YIehueW+JD3mjcUG68hI=; b=KOCrnh/7wZlEkqMHo1tEZAvYVwrO+CgBeuRwK5ovvvWl0qgpgKPEgPzf+kcthcqsrv PtwLIyjslTlxqnaw/eaSTCGP8DxQZ2CQSHn07jMtm1u8J7xZymfKMF2q+FCdWCtxfkV3 88DOKqhTd3vMjCTGhPkt6gEvpuEVELnhLdOCodgP8TyxsYMDLvqk2rHLI+HQ9nmETscV uu838Qm5BjuqtUUbAHVvNBlUiLem/K9+ZPBPtXJ9kIYU/dB2ej/87CqsZSCmLVKi9rEJ zhami50GQB8fg6CdMZsoLXOvPkJl+lhl5rtLHU5CTI7dUVzsfRLeIPT58BUdNhP7FCdD Fpuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=7BLyge5nON7g8D4+4upObl4YIehueW+JD3mjcUG68hI=; b=tNJKHKrK6GU1CP9DdDjQvUDhptoR4am7n3rdZ6MphPiSUJEuQIHQFvgAbqwR8SreUy kvhegIdqr8EhHyovFmWYZqn0njsMz8aSL2qf1DDh0EN0zgfgV+UmP1IK//6r+CBsmUN/ jYHH/6MbTdrfNerEGocO5cWRke87jlrpk9TaxUbbrC9WJB+BeUH9bD1QVji9fneYBW7v wA79IaLNM/VEAzjS2lallhmgStCv+bFP94woaNZmNowpyedXEn6PgorZn7mp0xTzyNny iTzUrDOw9M/JEyAvLNp2p2ne0YXBAADILCqlOzwHdhwZTf6oAC2byL4vuL9J7HqeOVJN EHAg== X-Gm-Message-State: APf1xPAM6qSqMX/JQ0Q2S9QQw+zxOZ7e9QMOxn5zhZ1awyKKc5A6Ub+d mk65r5jYKJaVOXJa6A5a/R12Kw== X-Received: by 10.223.139.16 with SMTP id n16mr21465543wra.171.1520504961352; Thu, 08 Mar 2018 02:29:21 -0800 (PST) Received: from andor.evidence (host92-93-static.8-79-b.business.telecomitalia.it. [79.8.93.92]) by smtp.gmail.com with ESMTPSA id 7sm43632721wry.18.2018.03.08.02.29.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 08 Mar 2018 02:29:20 -0800 (PST) From: Claudio Scordino To: Peter Zijlstra , "Rafael J . Wysocki" Cc: Claudio Scordino , Ingo Molnar , Patrick Bellasi , Dietmar Eggemann , Morten Rasmussen , Juri Lelli , Viresh Kumar , Vincent Guittot , Todd Kjos , Joel Fernandes , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3] cpufreq: schedutil: rate limits for SCHED_DEADLINE Date: Thu, 8 Mar 2018 11:29:10 +0100 Message-Id: <1520504950-8544-1-git-send-email-claudio@evidence.eu.com> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When the SCHED_DEADLINE scheduling class increases the CPU utilization, we should not wait for the rate limit, otherwise we may miss some deadline. Tests using rt-app on Exynos5422 with up to 10 SCHED_DEADLINE tasks have shown reductions of even 10% of deadline misses with a negligible increase of energy consumption (measured through Baylibre Cape). Signed-off-by: Claudio Scordino CC: Ingo Molnar CC: Patrick Bellasi CC: Dietmar Eggemann CC: Morten Rasmussen CC: Juri Lelli CC: Viresh Kumar CC: Vincent Guittot CC: Todd Kjos CC: Joel Fernandes CC: linux-pm@vger.kernel.org CC: linux-kernel@vger.kernel.org --- Changes from v2: - Rate limit ignored also in case of "fast switch" - Specific routine added --- Changes from v1: - Logic moved from sugov_should_update_freq() to sugov_update_single()/_shared() to not duplicate data structures - Rate limit not ignored in case of "fast switch" --- kernel/sched/cpufreq_schedutil.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/kernel/sched/cpufreq_schedutil.c b/kernel/sched/cpufreq_schedutil.c index 7936f54..13f9cce 100644 --- a/kernel/sched/cpufreq_schedutil.c +++ b/kernel/sched/cpufreq_schedutil.c @@ -260,6 +260,17 @@ static bool sugov_cpu_is_busy(struct sugov_cpu *sg_cpu) static inline bool sugov_cpu_is_busy(struct sugov_cpu *sg_cpu) { return false; } #endif /* CONFIG_NO_HZ_COMMON */ +/* + * Make sugov_should_update_freq() ignore the rate limit when DL + * has increased the utilization. + */ +static inline +void set_dl_rate_limit(struct sugov_cpu *sg_cpu, struct sugov_policy *sg_policy) +{ + if (cpu_util_dl(cpu_rq(sg_cpu->cpu)) > sg_cpu->util_dl) + sg_policy->need_freq_update = true; +} + static void sugov_update_single(struct update_util_data *hook, u64 time, unsigned int flags) { @@ -273,6 +284,8 @@ static void sugov_update_single(struct update_util_data *hook, u64 time, sugov_set_iowait_boost(sg_cpu, time); sg_cpu->last_update = time; + set_dl_rate_limit(sg_cpu, sg_policy); + if (!sugov_should_update_freq(sg_policy, time)) return; @@ -354,6 +367,8 @@ static void sugov_update_shared(struct update_util_data *hook, u64 time, raw_spin_lock(&sg_policy->update_lock); + set_dl_rate_limit(sg_cpu, sg_policy); + sugov_get_util(sg_cpu); sg_cpu->flags = flags; -- 2.7.4