Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp1736656imm; Tue, 22 May 2018 08:32:31 -0700 (PDT) X-Google-Smtp-Source: AB8JxZptS/eg39PDa4kTr0iIqeaXDXBYEd90/zMf7K351SivaGgbgW2P6GkkBZT41k39rKbdTvE1 X-Received: by 2002:a63:803:: with SMTP id 3-v6mr2644338pgi.406.1527003151093; Tue, 22 May 2018 08:32:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527003151; cv=none; d=google.com; s=arc-20160816; b=AKEySUKbV8P92qKWB7HXvn/fCFr7dr5KpzpTRrfnao8baXRgBaj1A+UXC63Vv4gf43 rC3wmeJldP1BILz/lwZqu1CT5GZQRUulKioEJIiJpwYh8JCwDMRLCb6YMp/pxgjmVtt/ SxZ2jy2xOLxW93EKmMBVQorXdMoIneBdIaKmVV0TMIv/XE3dgn5h60fia/cW0ZbmIDs+ 9IRaGI095x3U+f7Woezr2AUPmK7Rc0vk8LzafWPa5SEWiIhut6g7stGyZdBF3guzNUkL ToWQwkUzubg1EdICXInvRXGLxTq/81/u7ErtT9VizgKZZpOMihd1B9Nas8KLwGx2pAgr Dd2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=11YuBjCkd7oyCxoDsAyf9klMAqNt+oAPMdJxzsG1WwM=; b=bFDeJkaBNDYaMp54A4xBhNu6p1ObzH5hKCPwUUv/IzA3zjPddsFF1JiBrwwHSSyruU VeiHjVbvxhmVmgAuVy5Z9CyMtRHnzp6bVFmP5UsV1xIL3qBh24q2GwypnNDVrj9xe+DB Pc0UG0ZltHs2L4PdC0MC9Gbk2UawZuc4nYEgIW1wmDEoaHpC0PCCOXVRDkyELjfPuGSb /ntyS883XrMsyQqMqcVMZh0ilfDJ6pN4yiborwWJQMuwaQO3aisqkKfjdJBIt91APzbU ujqOK3VWMrSmYCnH2nWrxLl9/Ip9lDwscDjM+jC/UoZT9QfDhEnvB+LeaIOKgrAbRwAt sL1A== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=pXYVmchr; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e18-v6si4442892pgv.160.2018.05.22.08.32.16; Tue, 22 May 2018 08:32:31 -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=fail header.i=@gmail.com header.s=20161025 header.b=pXYVmchr; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751459AbeEVPai (ORCPT + 99 others); Tue, 22 May 2018 11:30:38 -0400 Received: from mail-oi0-f66.google.com ([209.85.218.66]:41997 "EHLO mail-oi0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751199AbeEVPae (ORCPT ); Tue, 22 May 2018 11:30:34 -0400 Received: by mail-oi0-f66.google.com with SMTP id t27-v6so16577201oij.9; Tue, 22 May 2018 08:30:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=11YuBjCkd7oyCxoDsAyf9klMAqNt+oAPMdJxzsG1WwM=; b=pXYVmchrqLnVk8S5tel1blKbzhsLeKEbd2EPSMG72413Oy9Cazp6BM0Pj5p7Ijuw/G H7QXbLDWFPpaM4HpuRFEOieXNo4NUsKjl9vztiIF87WoNya7oo5HUCg6w6dyqE+UU2/0 Me3QQ/LWPKL5foqGDdyJYSun+BekG3XdhmrpGRMmRBLvsVIv63D74z0FAzekelGHO/VF KFBAp2/OoxNVUtOlmL33jsHAONzLcErxJfhs3Bhtpg0BAfU35Y7fjrkQ/hnpiBSg7dEU fEJp1XcWtoGfwvmSOZGeOVA6y67uMzYzYPvBkTuuVBFRSWFuPflAtPuvnLOgMiXmYTE1 XPCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=11YuBjCkd7oyCxoDsAyf9klMAqNt+oAPMdJxzsG1WwM=; b=altRS44THaPVmCWrAFja9ZVedyHrLkcn1HI7oi05a4Z735XPmiJ3pg8aojbH34dpaG iNU41+Xn6B74Py6+tXuwRynpDyqU0rV+rYO+J52GugiBBurMlZ8tkFxgDU1f49t34xw2 2JpxXykENxgWC1zXnhXs1nvZ9+HkKHswLSpR0AigUF8u7OLic7uqPp3kcMH0bP0YdFUn OvprYAcwbmmo0/XO7aXZhyUtyF5DYpWYgheYijN0BeqiFI4lsyNPvuWCH5qTVCRbBkeK bzHqfqhJoFwjwXMfJeRgRT+t7yg3xvOFBV+nxdV2RyWd+3xZIo2JExRgUszGAa2n9lKW 8ZOw== X-Gm-Message-State: ALKqPwcBweZTCZq5zDLIHAKguY5KBlOHhxIFjr2gNKl27BPuzPThZB89 peEjx/ZSelFPp2cAj9lO5j+Y/9ETXu26r1iZdHI= X-Received: by 2002:aca:4c11:: with SMTP id z17-v6mr14689012oia.174.1527003033773; Tue, 22 May 2018 08:30:33 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a9d:1468:0:0:0:0:0 with HTTP; Tue, 22 May 2018 08:30:33 -0700 (PDT) In-Reply-To: References: <20180518185501.173552-1-joel@joelfernandes.org> <20180521051424.mljwmisvrvi6yyc4@vireshk-i7> <20180521161346.GB14065@joelaf.mtv.corp.google.com> From: "Rafael J. Wysocki" Date: Tue, 22 May 2018 17:30:33 +0200 X-Google-Sender-Auth: mdcsfQr4aI19RA4EueVziVNk1wA Message-ID: Subject: Re: [PATCH v2] schedutil: Allow cpufreq requests to be made even when kthread kicked To: Joel Fernandes Cc: Viresh Kumar , "Joel Fernandes (Google.)" , Linux Kernel Mailing List , "Rafael J . Wysocki" , Peter Zijlstra , Ingo Molnar , Patrick Bellasi , Juri Lelli , Luca Abeni , Todd Kjos , Claudio Scordino , kernel-team@android.com, Linux PM Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, May 22, 2018 at 12:02 PM, Rafael J. Wysocki wrote: > On Mon, May 21, 2018 at 6:13 PM, Joel Fernandes wrote: >> On Mon, May 21, 2018 at 10:29:52AM +0200, Rafael J. Wysocki wrote: >>> On Mon, May 21, 2018 at 7:14 AM, Viresh Kumar wrote: >>> > On 18-05-18, 11:55, Joel Fernandes (Google.) wrote: >>> >> From: "Joel Fernandes (Google)" >>> >> >>> >> Currently there is a chance of a schedutil cpufreq update request to be >>> >> dropped if there is a pending update request. This pending request can >>> >> be delayed if there is a scheduling delay of the irq_work and the wake >>> >> up of the schedutil governor kthread. >>> >> >>> >> A very bad scenario is when a schedutil request was already just made, >>> >> such as to reduce the CPU frequency, then a newer request to increase >>> >> CPU frequency (even sched deadline urgent frequency increase requests) >>> >> can be dropped, even though the rate limits suggest that its Ok to >>> >> process a request. This is because of the way the work_in_progress flag >>> >> is used. >>> >> >>> >> This patch improves the situation by allowing new requests to happen >>> >> even though the old one is still being processed. Note that in this >>> >> approach, if an irq_work was already issued, we just update next_freq >>> >> and don't bother to queue another request so there's no extra work being >>> >> done to make this happen. >>> > >>> > Now that this isn't an RFC anymore, you shouldn't have added below >>> > paragraph here. It could go to the comments section though. >>> > >>> >> I had brought up this issue at the OSPM conference and Claudio had a >>> >> discussion RFC with an alternate approach [1]. I prefer the approach as >>> >> done in the patch below since it doesn't need any new flags and doesn't >>> >> cause any other extra overhead. >>> >> >>> >> [1] https://patchwork.kernel.org/patch/10384261/ >>> >> >>> >> LGTMed-by: Viresh Kumar >>> >> LGTMed-by: Juri Lelli >>> > >>> > Looks like a Tag you just invented ? :) >>> >>> Yeah. >>> >>> The LGTM from Juri can be converned into an ACK silently IMO. That >>> said I have added Looks-good-to: tags to a couple of commits. :-) >> >> Cool, I'll covert them to Acks :-) > > So it looks like I should expect an update of this patch, right? > > Or do you prefer the current one to be applied and work on top of it? > [cut] >> >> I just realized that on a single policy switch that uses the governor thread, >> there will be 1 thread per-CPU. The sugov_update_single will be called on the >> same CPU with interrupts disabled. > > sugov_update_single() doesn't have to run on the target CPU. Which sadly is a bug IMO. :-/ >> In sugov_work, we are doing a >> raw_spin_lock_irqsave which also disables interrupts. So I don't think >> there's any possibility of a race happening on the same CPU between the >> frequency update request and the sugov_work executing. In other words, I feel >> we can drop the above if (..) statement for single policies completely and >> only keep the changes for the shared policy. Viresh since you brought up the >> single policy issue initially which made me add this if statememnt, could you >> let me know if you agree with what I just said? > > Which is why you need the spinlock too. And you totally have a point. With the above bug fixed, disabling interrupts should be sufficient to prevent concurrent updates from occurring in the one-CPU policy case and the work_in_progress check in sugov_update_single() isn't necessary.