Received: by 10.213.65.68 with SMTP id h4csp488449imn; Wed, 4 Apr 2018 01:55:17 -0700 (PDT) X-Google-Smtp-Source: AIpwx4/xGFIEYU++UdMUugxzpZn2U0f06EXsXmtuGI2VdBEodfKlrpjVCn5GF8YLUQDBlzUeoIwU X-Received: by 2002:a17:902:4481:: with SMTP id l1-v6mr17842368pld.43.1522832117336; Wed, 04 Apr 2018 01:55:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522832117; cv=none; d=google.com; s=arc-20160816; b=xM2RGVWxRjAdiGaQQD47u++A5rxdSeOYVV+pMhSPp9+zldBkVTKGy9Mtpfo9STKkMS VKKxUZ1R75Q8MO3Ukg98jAgYCzndc/3jHhiYdNGo71AT16X98e/ARbz2muXixmG9Vt4Q SYChujhIS3njhHVaV9KeaS+SO/6E4XHt04TWalfeIyg3D+EsSdLdnXdhIDbtRWH3WMZp 5BXXd096+TfnCjRF2EgLiVBd/bZYt/CCSEUZ+DHi3Ac91yh4i/rKWh+GYb9rgIrOeHKV GlfObxfv3WivsrebM/ilCLb/x/ABmGV1TVn/FbrmORAETwqpfNx9xHg4x/v6xAP6qDyp EHzw== 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=IZlNqCM0xpPul3wWjnxCFd9f/HJcfFlFI9jkedTj8ko=; b=qhwJ37QvPrkUiLRAHmx+A3x4Op/V+8ox5jA90O6687l6ei0M6uvRF831svEXcphdZr bDxvj9QMplp1vHAs0eqzO5UkySMPPcj3IaoUNEsPhvrMbmmY+6lHYmQpH/+X7Q1tzcKm oPz9CFrUPP30B4C1jlJK/zuQJpEUvbd4AWqC3ChQkkBQW+XwkoiKWPGVjKTsyiVAYZ6c YhEktxWjVmUsuomBo5Ky41r4HZaQN5sPAtyhpbWLfev7d9hPETrxtqZ3ktOlMNlsMUY4 EIyH2ji1njNnxoFj8oWS8BaX45uKvkfJJOzGUBp1EaZs+S9ebIF0PCyxpmGMDZQSzgXU 1ogg== 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 j5si3650233pff.178.2018.04.04.01.55.03; Wed, 04 Apr 2018 01:55:17 -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 S1751167AbeDDIxZ (ORCPT + 99 others); Wed, 4 Apr 2018 04:53:25 -0400 Received: from cloudserver094114.home.pl ([79.96.170.134]:53328 "EHLO cloudserver094114.home.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751543AbeDDIxI (ORCPT ); Wed, 4 Apr 2018 04:53:08 -0400 Received: from 79.184.255.92.ipv4.supernova.orange.pl (79.184.255.92) (HELO aspire.rjw.lan) by serwer1319399.home.pl (79.96.170.134) with SMTP (IdeaSmtpServer 0.83) id 44ebb70ffc1e822c; Wed, 4 Apr 2018 10:53:07 +0200 From: "Rafael J. Wysocki" To: Linux PM Cc: Peter Zijlstra , Frederic Weisbecker , Thomas Gleixner , Paul McKenney , Thomas Ilsche , Doug Smythies , Rik van Riel , Aubrey Li , Mike Galbraith , LKML , Len Brown Subject: [PATCH v9 00/10] sched/cpuidle: Idle loop rework Date: Wed, 04 Apr 2018 10:32:12 +0200 Message-ID: <1736751.LdhZHb50jq@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! For the motivation/summary, please refer to the BZ entry at https://bugzilla.kernel.org/show_bug.cgi?id=199227 created for collecting information related to this patch series. Some v7.3 testing results from Len and Doug are in there already. The testing so far shows significant idle power improvements, both in terms of reducing the average idle power (about 10% on some systems) and in terms of reducing the idle power noise (in the vast majority of cases, with this series applied the idle power is mostly stable around the power floor of the system). The average power is also reduced in some non-idle workloads and there are some performance improvements in them. It also is reported that the series generally addresses the problem it has been motivated by (ie. the "powernightmares" issue). This revision is mostly a re-send of the v8 with three patches changed as follows. > 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 is a new one just for the TICK_USEC definition changes. > > Patch 5 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 and modifies its correction factor > computations to take running tick into account if need be. > > Patch 6 (which is new) contains some changes that previously were included > into the big reordering patch (patch [6/8] in the v7). Essentially, it does > more tick-sched code reorganization in preparation for the subsequent changes > (and should not modify the functionality). Patch 7 is a new version of its v8 counterpart. It makes fewer changes to the existing code and adds a special function for the handling of the use case it is about. It still makes some hrtimer code modifications allowing it to return the time to the next event with one timer excluded (which needs to be done with respect to the tick timer), though. Patch 8 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. It is a rebased version of its v8 counterpart. Patch 9 causes the menu governor to refine the state selection in case the tick is not going to be stopped and the already selected state does not fit the interval before the next tick time. It is a new version that avoids using state 0 if it has been disabled (if state 0 has been disabled, the governor only should use it when no states are enabled at all). > Patch 10 Deals with the situation in which the tick was stopped previously, > but the idle governor still predicts short idle (it has not changed). This series is complementary to the poll_idle() patches discussed recently https://patchwork.kernel.org/patch/10282237/ https://patchwork.kernel.org/patch/10311775/ that have been merged for v4.17 already. There is a new git branch containing the current series at git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git \ idle-loop-v9 Thanks, Rafael