From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752072AbeFEPTj (ORCPT ); Tue, 5 Jun 2018 11:19:39 -0400 Received: from ozlabs.org ([203.11.71.1]:52987 "EHLO ozlabs.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752030AbeFEPTf (ORCPT ); Tue, 5 Jun 2018 11:19:35 -0400 X-powerpc-patch-notification: thanks X-powerpc-patch-commit: 0a4ec6aa035a52c422eceb2ed51ed88392a3d6c2 In-Reply-To: <1527768909-32637-1-git-send-email-ego@linux.vnet.ibm.com> To: "Gautham R. Shenoy" , "Rafael J. Wysocki" , Daniel Lezcano , Stewart Smith , Michael Neuling , Vaidyanathan Srinivasan , Shilpasri G Bhat , Akshay Adiga , Nicholas Piggin From: Michael Ellerman Cc: "Gautham R. Shenoy" , linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org Subject: Re: cpuidle:powernv: Make the snooze timeout dynamic. Message-Id: <410b7m522wz9s47@ozlabs.org> Date: Wed, 6 Jun 2018 01:19:32 +1000 (AEST) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 2018-05-31 at 12:15:09 UTC, "Gautham R. Shenoy" wrote: > From: "Gautham R. Shenoy" > > The commit 78eaa10f027c ("cpuidle: powernv/pseries: Auto-promotion of > snooze to deeper idle state") introduced a timeout for the snooze idle > state so that it could be eventually be promoted to a deeper idle > state. The snooze timeout value is static and set to the target > residency of the next idle state, which would train the cpuidle > governor to pick the next idle state eventually. > > The unfortunate side-effect of this is that if the next idle state(s) > is disabled, the CPU will forever remain in snooze, despite the fact > that the system is completely idle, and other deeper idle states are > available. > > This patch fixes the issue by dynamically setting the snooze timeout > to the target residency of the next enabled state on the device. > > Before Patch > Reviewed-by: Balbir Singh > > ================== > POWER8 : Only nap disabled. > $cpupower monitor sleep 30 > sleep took 30.01297 seconds and exited with status 0 > |Idle_Stats > PKG |CORE|CPU | snoo | Nap | Fast > 0| 8| 0| 96.41| 0.00| 0.00 > 0| 8| 1| 96.43| 0.00| 0.00 > 0| 8| 2| 96.47| 0.00| 0.00 > 0| 8| 3| 96.35| 0.00| 0.00 > 0| 8| 4| 96.37| 0.00| 0.00 > 0| 8| 5| 96.37| 0.00| 0.00 > 0| 8| 6| 96.47| 0.00| 0.00 > 0| 8| 7| 96.47| 0.00| 0.00 > > POWER9: Shallow states (stop0lite, stop1lite, stop2lite, stop0, stop1, > stop2) disabled: > $cpupower monitor sleep 30 > sleep took 30.05033 seconds and exited with status 0 > |Idle_Stats > PKG |CORE|CPU | snoo | stop | stop | stop | stop | stop | stop | stop | stop > 0| 16| 0| 89.79| 0.00| 0.00| 0.00| 0.00| 0.00| 0.00| 0.00| 0.00 > 0| 16| 1| 90.12| 0.00| 0.00| 0.00| 0.00| 0.00| 0.00| 0.00| 0.00 > 0| 16| 2| 90.21| 0.00| 0.00| 0.00| 0.00| 0.00| 0.00| 0.00| 0.00 > 0| 16| 3| 90.29| 0.00| 0.00| 0.00| 0.00| 0.00| 0.00| 0.00| 0.00 > > After Patch > ====================== > POWER8 : Only nap disabled. > $ cpupower monitor sleep 30 > sleep took 30.01200 seconds and exited with status 0 > |Idle_Stats > PKG |CORE|CPU | snoo | Nap | Fast > 0| 8| 0| 16.58| 0.00| 77.21 > 0| 8| 1| 18.42| 0.00| 75.38 > 0| 8| 2| 4.70| 0.00| 94.09 > 0| 8| 3| 17.06| 0.00| 81.73 > 0| 8| 4| 3.06| 0.00| 95.73 > 0| 8| 5| 7.00| 0.00| 96.80 > 0| 8| 6| 1.00| 0.00| 98.79 > 0| 8| 7| 5.62| 0.00| 94.17 > > POWER9: Shallow states (stop0lite, stop1lite, stop2lite, stop0, stop1, > stop2) disabled: > > $cpupower monitor sleep 30 > sleep took 30.02110 seconds and exited with status 0 > |Idle_Stats > PKG |CORE|CPU | snoo | stop | stop | stop | stop | stop | stop | stop | stop > 0| 0| 0| 0.69| 0.00| 0.00| 0.00| 0.00| 0.00| 0.00| 9.39| 89.70 > 0| 0| 1| 0.00| 0.00| 0.00| 0.00| 0.00| 0.00| 0.00| 0.05| 93.21 > 0| 0| 2| 0.00| 0.00| 0.00| 0.00| 0.00| 0.00| 0.00| 0.00| 89.93 > 0| 0| 3| 0.00| 0.00| 0.00| 0.00| 0.00| 0.00| 0.00| 0.00| 93.26 > > Signed-off-by: Gautham R. Shenoy Applied to powerpc next, thanks. https://git.kernel.org/powerpc/c/0a4ec6aa035a52c422eceb2ed51ed8 cheers