Received: by 10.213.65.68 with SMTP id h4csp24941imn; Thu, 15 Mar 2018 15:22:24 -0700 (PDT) X-Google-Smtp-Source: AG47ELu2JaIeEqMzd4kGDqjgKVolDrXn7+0+1oZMxU440lCpiCHFnVWB+lE9RI/gFVh4k5F5B97+ X-Received: by 10.99.170.5 with SMTP id e5mr7680936pgf.92.1521152544844; Thu, 15 Mar 2018 15:22:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521152544; cv=none; d=google.com; s=arc-20160816; b=Y/fCUcZpWUNZhySBn+YvQR1h46aFtelWfTJie+oz4px3XXE2tPmEHseDtU9jXHBFjh q1Y53rk5ssr2ebv+hwIIRnnLe2MhMA/BkwnOfvOqitRJY0pg+FGCVWuZcV1glY9E2I1y BNVtlZjCqdhgeJZwKO/IbUfYt9wv3A3a5k7a5u8p8RGJpey2r70d3yPtE81MWKojeU1y PCq8chzqiLf9ra6ZXwfoWElJQmRMiKkIRU6ukTsm0TvYPs8n2cqxI+cmzvGFD7PXuCPS uss66sj2UQStm3icNZQJvhgPjQrFsAyuqlp6bo+0D8RK7jTYrQuraPLbpsM0XSBVQILK XvjQ== 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:mime-version :message-id:date:subject:cc:to:from:arc-authentication-results; bh=gw7vf90DMfI/qF7eVN+rm8RYcflloloyinN9cdiopDQ=; b=kPwNxMBGPPWTDgRHU71pDoVsH7TKXtfLv6gF/uMoe0HG2+m3issWXE7g8G1jk25vzb iG5IFyLU10h+LKiKFZArOt7CE9vXB73Rpw568gnlMpsGuujNbsZTDG1PTzyFzJ2FBIIp ViK6lw2ku8Qm/bgmuhKriUvplpWuI2KkVlftTgOAtWoWEwM38kFkTl4G+7/vRqAiXyCI mUnZnsq1Ld01ct+d1HA690wM4gl3OXJNKOyKzsPEaZBxzGcWXfaeZC5VKD4mNGi/iHMj BGr09LIoq/rNWv6yAJJR1QhwtVHrJN6VJjah7AedlGn/hoBr4zpBGbWq/1VUq23FjGqY +tRw== 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 i11si3948321pgq.332.2018.03.15.15.22.10; Thu, 15 Mar 2018 15:22:24 -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; 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 S932545AbeCOWVJ (ORCPT + 99 others); Thu, 15 Mar 2018 18:21:09 -0400 Received: from cloudserver094114.home.pl ([79.96.170.134]:60489 "EHLO cloudserver094114.home.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752565AbeCOWU7 (ORCPT ); Thu, 15 Mar 2018 18:20:59 -0400 Received: from 79.184.254.228.ipv4.supernova.orange.pl (79.184.254.228) (HELO aspire.rjw.lan) by serwer1319399.home.pl (79.96.170.134) with SMTP (IdeaSmtpServer 0.83) id c8b403399d7c27a9; Thu, 15 Mar 2018 23:20:57 +0100 From: "Rafael J. Wysocki" To: Peter Zijlstra , Linux PM , Frederic Weisbecker Cc: Thomas Gleixner , Paul McKenney , Thomas Ilsche , Doug Smythies , Rik van Riel , Aubrey Li , Mike Galbraith , LKML Subject: [RFT][PATCH v5 0/7] sched/cpuidle: Idle loop rework Date: Thu, 15 Mar 2018 22:59:48 +0100 Message-ID: <2142751.3U6XgWyF8u@aspire.rjw.lan> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi All, Thanks a lot for the feedback so far! One more respin after the last batch of comments from Peter and Frederic. The previous summary that still applies: On Sunday, March 4, 2018 11:21:30 PM CET Rafael J. Wysocki wrote: > > The problem is that if we stop the sched tick in > tick_nohz_idle_enter() and then the idle governor predicts short idle > duration, we lose regardless of whether or not it is right. > > If it is right, we've lost already, because we stopped the tick > unnecessarily. If it is not right, we'll lose going forward, because > the idle state selected by the governor is going to be too shallow and > we'll draw too much power (that has been reported recently to actually > happen often enough for people to care). > > This patch series is an attempt to improve the situation and the idea > here is to make the decision whether or not to stop the tick deeper in > the idle loop and in particular after running the idle state selection > in the path where the idle governor is invoked. This way the problem > can be avoided, because the idle duration predicted by the idle governor > can be used to decide whether or not to stop the tick so that the tick > is only stopped if that value is large enough (and, consequently, the > idle state selected by the governor is deep enough). > > The series tires to avoid adding too much new code, rather reorder the > existing code and make it more fine-grained. > > Patch 1 prepares the tick-sched code for the subsequent modifications and it > doesn't change the code's functionality (at least not intentionally). > > Patch 2 starts pushing the tick stopping decision deeper into the idle > loop, but that is limited to do_idle() and tick_nohz_irq_exit(). > > Patch 3 makes cpuidle_idle_call() decide whether or not to stop the tick > and sets the stage for the subsequent changes. > > Patch 4 adds a bool pointer argument to cpuidle_select() and the ->select > governor callback allowing them to return a "nohz" hint on whether or not to > stop the tick to the caller. It also adds code to decide what value to > return as "nohz" to the menu governor. > > Patch 5 reorders the idle state selection with respect to the stopping of > the tick and causes the additional "nohz" hint from cpuidle_select() to be > used for deciding whether or not to stop the tick. > > Patch 6 causes the menu governor to refine the state selection in case the > tick is not going to be stopped and the already selected state may not fit > before the next tick time. > > Patch 7 Deals with the situation in which the tick was stopped previously, > but the idle governor still predicts short idle. This series is complementary to the poll_idle() patch at https://patchwork.kernel.org/patch/10282237/ Thanks, Rafael