Received: by 10.223.164.221 with SMTP id h29csp1339314wrb; Tue, 17 Oct 2017 01:10:23 -0700 (PDT) X-Google-Smtp-Source: AOwi7QBOlXBHQK2L7+Bw2tjKgfjNiy7No+5SuqOqw+GlZhHhv+rcuWhvVNJpzAOPuAZLIEmE+sL2 X-Received: by 10.101.65.75 with SMTP id x11mr10185174pgp.388.1508227823434; Tue, 17 Oct 2017 01:10:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1508227823; cv=none; d=google.com; s=arc-20160816; b=miRcJFJ46wnM+OZ4pTlwN9WVXI0r5mj0lRI9r2Y6OeCMBvk74fI1kfqKKpjV4iFpxm JpPmxXQJ3t5ZmrCRs4L8rDK/5k9X6PzYzM9r4wHQ4jzIeNkDB3jamb20IsAx6KcGQ6BN bv2NjeDWpf1mV1IOTYbn57rowvt7KJoJ8o7fH/jETn0G/XKAejcmNc+0W2hqNIb+ViAK YmeyfDFBMUqpcl9REoUNfN1WrUO9Iy22t7TDfZ1mG5XA2tovluJRiJu1+g877z7HLZm2 ELEvyzifYkwMlKLDjn0jkuq+mbTupMBIK/Xy4hWzDEvhy7YpZZYSKxU/ekiPGtRfRXkr nALw== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=sBsrHk1C64e0sr7L7ntvfNTt1te7bx1vSym71+OGBNU=; b=nnd/ZyRCy7pDetD0YtlgVcHUscQQ0cvDiXkBFbX8Ae4em8Z6YkAA6Nk4/fwu2B/leX l3G5hh8hXlOETlff6B3c0qXW1/HokPhmXAhkf00OKnDwdZwAenDaM3xNmKrzvVkGdpr0 mwr28lwTHJ/pfb99JOn3fU7rARe1nhHicj5FYh/zdsAkBApsOXcwBRazn1TVBI7YA8us rZl31s12DEbXS5hZossk/m7MdlBdbbaTXpOUj7qz6MBUfhHQsZB1w43tP2F29PUOKjPq v4AQAWdhFT4i20wyYqfNXRjmPc1HPRb172ye6nb8plwc20VUdaxnBovJ3+OxcrqRMwk0 DvGg== 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 l7si5125164pgn.342.2017.10.17.01.10.08; Tue, 17 Oct 2017 01:10:23 -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 S1756385AbdJQAQ6 (ORCPT + 99 others); Mon, 16 Oct 2017 20:16:58 -0400 Received: from cloudserver094114.home.net.pl ([79.96.170.134]:46410 "EHLO cloudserver094114.home.net.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753241AbdJQAQ4 (ORCPT ); Mon, 16 Oct 2017 20:16:56 -0400 Received: from 79.184.255.244.ipv4.supernova.orange.pl (79.184.255.244) (HELO aspire.rjw.lan) by serwer1319399.home.pl (79.96.170.134) with SMTP (IdeaSmtpServer 0.82) id 3733ecad9f8e725b; Tue, 17 Oct 2017 02:16:55 +0200 From: "Rafael J. Wysocki" To: "Li, Aubrey" Cc: Aubrey Li , tglx@linutronix.de, peterz@infradead.org, len.brown@intel.com, ak@linux.intel.com, tim.c.chen@linux.intel.com, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [RFC PATCH v2 0/8] Introduct cpu idle prediction functionality Date: Tue, 17 Oct 2017 02:07:21 +0200 Message-ID: <3251888.IpbWLYog7H@aspire.rjw.lan> In-Reply-To: References: <1506756034-6340-1-git-send-email-aubrey.li@intel.com> <3026355.QRuoy6eIZM@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 On Monday, October 16, 2017 9:44:41 AM CEST Li, Aubrey wrote: > On 2017/10/14 9:14, Rafael J. Wysocki wrote: > > On Saturday, September 30, 2017 9:20:26 AM CEST Aubrey Li wrote: > >> We found under some latency intensive workloads, short idle periods occurs > >> very common, then idle entry and exit path starts to dominate, so it's > >> important to optimize them. To determine the short idle pattern, we need > >> to figure out how long of the coming idle and the threshold of the short > >> idle interval. > >> > >> A cpu idle prediction functionality is introduced in this proposal to catch > >> the short idle pattern. > >> > >> Firstly, we check the IRQ timings subsystem, if there is an event > >> coming soon. > >> -- https://lwn.net/Articles/691297/ > >> > >> Secondly, we check the idle statistics of scheduler, if it's likely we'll > >> go into a short idle. > >> -- https://patchwork.kernel.org/patch/2839221/ > >> > >> Thirdly, we predict the next idle interval by using the prediction > >> fucntionality in the idle governor if it has. > >> > >> For the threshold of the short idle interval, we record the timestamps of > >> the idle entry, and multiply by a tunable parameter at here: > >> -- /proc/sys/kernel/fast_idle_ratio > >> > >> We use the output of the idle prediction to skip turning tick off if a > >> short idle is determined in this proposal. Reprogramming hardware timer > >> twice(off and on) is expensive for a very short idle. There are some > >> potential optimizations can be done according to the same indicator. > >> > >> I observed when system is idle, the idle predictor reports 20/s long idle > >> and ZERO fast idle on one CPU. And when the workload is running, the idle > >> predictor reports 72899/s fast idle and ZERO long idle on the same CPU. > >> > >> Aubrey Li (8): > >> cpuidle: menu: extract prediction functionality > >> cpuidle: record the overhead of idle entry > >> cpuidle: add a new predict interface > >> tick/nohz: keep tick on for a fast idle > >> timers: keep sleep length updated as needed > >> cpuidle: make fast idle threshold tunable > >> cpuidle: introduce irq timing to make idle prediction > >> cpuidle: introduce run queue average idle to make idle prediction > >> > >> drivers/cpuidle/Kconfig | 1 + > >> drivers/cpuidle/cpuidle.c | 109 +++++++++++++++++++++++++++++++++++++++ > >> drivers/cpuidle/governors/menu.c | 69 ++++++++++++++++--------- > >> include/linux/cpuidle.h | 21 ++++++++ > >> kernel/sched/idle.c | 14 ++++- > >> kernel/sysctl.c | 12 +++++ > >> kernel/time/tick-sched.c | 7 +++ > >> 7 files changed, 209 insertions(+), 24 deletions(-) > >> > > > > Overall, it looks like you could avoid stopping the tick every time the > > predicted idle duration is not longer than the tick interval in the first > > place. > > > Why don't you do that? > > I didn't catch this. > > Are you suggesting? > > if(!cpu_stat.fast_idle) > tick_nohz_idle_enter() > > Or you concern why the threshold can't simply be tick interval? That I guess. > For the first, can_stop_idle_tick() is a better place to skip tick-off IMHO. > For the latter, if the threshold is close/equal to the tick, it's quite possible > the next event is the tick and no other else event. Well, I don't quite get that. What's the reasoning here? Thanks, Rafael From 1581399326728988559@xxx Mon Oct 16 07:45:21 +0000 2017 X-GM-THRID: 1579948553110255952 X-Gmail-Labels: Inbox,Category Forums