Received: by 10.213.65.68 with SMTP id h4csp261567imn; Tue, 13 Mar 2018 03:37:05 -0700 (PDT) X-Google-Smtp-Source: AG47ELt7AFHCYWVkr331ukit9I9W29WFJpJlnq6Yexu0M+kwOa50+TdKuu+cX6bUnMXP3w7Zx7dm X-Received: by 10.99.36.193 with SMTP id k184mr102391pgk.80.1520937425728; Tue, 13 Mar 2018 03:37:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1520937425; cv=none; d=google.com; s=arc-20160816; b=wJn9fc4ZwEVw37C6PTHsxIshLSoD8jsEppGLp9WcfNZ1mpj14C9+M8iUx0bbSm22Dp uz2WU7wE6HZqnYd1p0PhjZzw67S6VPG+8K7TgFRSPDCsWHCDKl9GzehgZkHKScwA6IAF z47EizcHax//iIZOFuiOoKb1XsVYocmzwjni5mSKsQla13nqNdP7e+sHMVtQLwecCtXT NUPKGReRk57uvEaAfBOUFRc4Lz6cSjr2BGEMK5xXEAXCohYb3Y3LkVPHCYPVoZTBwTS6 NXJsL5uUKTv/VPUo+IpKXwfXCIJTOKahAxH1oMhgH9IsvD1k5TCDjcD4u8TFsWXCZOwi f1Zw== 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=uDHH7nAQZKTCVA8HiNbwXj5kmjT2tC18FIsLHHKzCKQ=; b=LFC5KkB8cJHpSxUkOBG8Glq+AfXWEZI1dQdrpx77H2svfFxo3adyvBcfVbTf9KkSbp P/vznfB3i1GvPnz+BIn4w3UpybbdhOXUfPAHHKgTGRX7VlhNx+lKYIlHEuQBWrLB6iuG LUr1IA1ybFqH6wNW9Y/F3oUVrpL6Xw1YD1zXlspB10C7SeZn8yzFBPFngUp9XVloCLbJ EtEyArxTAx0Yr63nAkrQ+o3KtgopX99SnjvX2AeEBtSWKbXGq2sj4dihxlGw4Kridb5U xSKt3JbJmq+EecGro4ds//WdXjWsTQgnm6Y4R2X9bz+U6Ie3KCsEHf/NGlTaF6wasxOO cZPQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@evidence-eu-com.20150623.gappssmtp.com header.s=20150623 header.b=dWbZQaP1; 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 v2-v6si32466plp.113.2018.03.13.03.36.51; Tue, 13 Mar 2018 03:37:05 -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=@evidence-eu-com.20150623.gappssmtp.com header.s=20150623 header.b=dWbZQaP1; 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 S932773AbeCMKfw (ORCPT + 99 others); Tue, 13 Mar 2018 06:35:52 -0400 Received: from mail-wr0-f193.google.com ([209.85.128.193]:33273 "EHLO mail-wr0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932733AbeCMKfu (ORCPT ); Tue, 13 Mar 2018 06:35:50 -0400 Received: by mail-wr0-f193.google.com with SMTP id r8so5953220wrg.0 for ; Tue, 13 Mar 2018 03:35:50 -0700 (PDT) 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=uDHH7nAQZKTCVA8HiNbwXj5kmjT2tC18FIsLHHKzCKQ=; b=dWbZQaP1GZhyCOGGr75ue+zTfP8mnhau1a0bxM73x6Yk7SvJ3zefs60MwwLAa5g+Kj Q0WvuVU9ypbbj1kzz0EEJlaZQ1dlJZTx/Nf9QO2DlAZDa6HJDKdkrrzvalU6/Rxnqx4E 7wGlW5r1UJ7Z7WVDEov2MWn+xtpdnFi3GuCYDVO036QBDt+Nmp8tu1142dyLaPngLU8j tcNq0+P0HwMJs/O5YnqIFl116/rH0PYfEGvH9O9p+M/SUJiXzGSYqJ4Ma/AfaGCbC5E3 Wia/vMyOI6y+3bvtc5giPZ49CZ2VOsTp2hUkM7WoH6f02S8qzNIceTgH8hvl41BQ40tM gZew== 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=uDHH7nAQZKTCVA8HiNbwXj5kmjT2tC18FIsLHHKzCKQ=; b=slk072kAqZiav9gmhNzqvj978ultgEBg08MSuQDIyaHNhGMZ2gY/yYuuehiOBQQnOX V+DthRLqgY4KyPT7A6EpLa9/BO5SjPeFX/E8DQYrrP4RCzNfledTFmoLGT7YOpoMryXt pEjWGnHmLUbelN/LYQ09kYSWnjsNPA3pBFwL24QjFl97xEaj/k7Q2ej5aeBR8Xhr94aa A9slvRRcg9f2qJkJ+j89BzhImRaPYqXj/p8QncR3hx9t8y3GKS4y+C5L+mXUYkR/peG/ nNSVAl2Z28wd/4a04GuCmL1jLU+rbrl1yXcKD5ArF/LK58YgAdDieAm8E6MUV5OmJH7c bbRQ== X-Gm-Message-State: AElRT7GV8W+jlexT2dZFrZRy8QhrTeohU9dwUL/7u7qDu+02os+isTzp oibxNG/+Rq7CkwOBWQ/4Q1bsFw== X-Received: by 10.28.165.12 with SMTP id o12mr313405wme.120.1520937349655; Tue, 13 Mar 2018 03:35:49 -0700 (PDT) Received: from localhost.localdomain (host92-93-static.8-79-b.business.telecomitalia.it. [79.8.93.92]) by smtp.gmail.com with ESMTPSA id n12sm226337wmc.35.2018.03.13.03.35.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 13 Mar 2018 03:35:48 -0700 (PDT) From: Claudio Scordino To: Peter Zijlstra , Ingo Molnar Cc: Claudio Scordino , "Rafael J . Wysocki" , Viresh Kumar , Patrick Bellasi , Dietmar Eggemann , Morten Rasmussen , Juri Lelli , Vincent Guittot , Todd Kjos , Joel Fernandes , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4] cpufreq: schedutil: rate limits for SCHED_DEADLINE Date: Tue, 13 Mar 2018 11:35:40 +0100 Message-Id: <1520937340-2755-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 Acked-by: Viresh Kumar Reviewed-by: Rafael J. Wysocki CC: Rafael J. Wysocki CC: Viresh Kumar CC: Patrick Bellasi CC: Dietmar Eggemann CC: Morten Rasmussen CC: Juri Lelli CC: Vincent Guittot CC: Todd Kjos CC: Joel Fernandes CC: linux-pm@vger.kernel.org CC: linux-kernel@vger.kernel.org --- Changes from v3: - Specific routine renamed as ignore_dl_rate_limit() --- 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 | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/kernel/sched/cpufreq_schedutil.c b/kernel/sched/cpufreq_schedutil.c index feb5f89..2aeb1ca 100644 --- a/kernel/sched/cpufreq_schedutil.c +++ b/kernel/sched/cpufreq_schedutil.c @@ -257,6 +257,16 @@ 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 ignore_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) { @@ -270,6 +280,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; + ignore_dl_rate_limit(sg_cpu, sg_policy); + if (!sugov_should_update_freq(sg_policy, time)) return; @@ -351,6 +363,8 @@ sugov_update_shared(struct update_util_data *hook, u64 time, unsigned int flags) raw_spin_lock(&sg_policy->update_lock); + ignore_dl_rate_limit(sg_cpu, sg_policy); + sugov_get_util(sg_cpu); sg_cpu->flags = flags; -- 2.7.4