Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp6378698imu; Mon, 21 Jan 2019 07:56:52 -0800 (PST) X-Google-Smtp-Source: ALg8bN5Jrca70tVqSETpclkcWZEEuQCk3SmrsI6mDl3d4Bn6ngvNYpOane5TKmYOfw9gfvRmx8eP X-Received: by 2002:a65:6645:: with SMTP id z5mr28751526pgv.351.1548086212267; Mon, 21 Jan 2019 07:56:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1548086212; cv=none; d=google.com; s=arc-20160816; b=c61LVwLN3EcarcvWpcjz8wbXnuCOMc+MUQ/58Rfvxi9P9D0Y05/qPwyRt0y1Cfo/Pt CYremaEUHK5HS3T9Lq12znQKImReBppTa4+Rk9By0TS1/JNEQCDb6T7mEQeueK8G1e7i yYJ7sKc83JR/fgvhyNm/XmlCvd7uTnj5+g/Yh96ivTiAcWAxq6CxSSduyt8uO1pjfh2m SeAEvi5lvzkTwh/Zj4Z5Fg750aNyffjbm53bpN+BtIEBoUqDX8D+VvfE/JTuBjyJdcaq 0g+G4OfLVI5mhNzVhKdnYtbEprturc6MOJVf9eNHkE/rV7oZI4Ac/zWx0gOJ55UT/wv8 WVjg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=8irbQVuHxi3BsIYCd5N3XRxOyVBvbjAa83l4OrzMA+w=; b=KInbksI3kTF3nP1Y+E+FtWOyyhJAeLK6D9w6UdLfJ/RjKr4FCUlFCJ4I3xnsy8RG5l g+1oul/15Amg78rgFmp1/LUtMEBV7qJ0fexS1nry8sf3uLoMkroEUo8VlP9/jDGTkSXo jT16rsoHDJ4EHEYaZPDL+Af46C+9I7mN3ZuLjOqU22us4DsGWnNQYaFBvLkQSyCcXiCr YzI8HdQd6ZsQzfus071ewfTHUqREpGe0qoyOwFn6oXPHoAPtpEFn8vEZPUt02Wg6UIpr nlvOjgThbpl9dz5NRqsQezxl8QGiJcet07y/DzzOAX2k04BeH6TU1sLDPJvjLDT66hhm gG5Q== 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 h5si13143497pgk.249.2019.01.21.07.56.34; Mon, 21 Jan 2019 07:56:52 -0800 (PST) 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 S1730642AbfAUPyQ (ORCPT + 99 others); Mon, 21 Jan 2019 10:54:16 -0500 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:37792 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729712AbfAUPyO (ORCPT ); Mon, 21 Jan 2019 10:54:14 -0500 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 58F37EBD; Mon, 21 Jan 2019 07:54:13 -0800 (PST) Received: from e110439-lin (e110439-lin.cambridge.arm.com [10.1.194.43]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 65D343F5C1; Mon, 21 Jan 2019 07:54:10 -0800 (PST) Date: Mon, 21 Jan 2019 15:54:07 +0000 From: Patrick Bellasi To: Peter Zijlstra Cc: linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, linux-api@vger.kernel.org, Ingo Molnar , Tejun Heo , "Rafael J . Wysocki" , Vincent Guittot , Viresh Kumar , Paul Turner , Quentin Perret , Dietmar Eggemann , Morten Rasmussen , Juri Lelli , Todd Kjos , Joel Fernandes , Steve Muckle , Suren Baghdasaryan Subject: Re: [PATCH v6 04/16] sched/core: uclamp: Add CPU's clamp buckets refcounting Message-ID: <20190121155407.gv4cxpg2njqmdlj5@e110439-lin> References: <20190115101513.2822-1-patrick.bellasi@arm.com> <20190115101513.2822-5-patrick.bellasi@arm.com> <20190121151717.GK27931@hirez.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190121151717.GK27931@hirez.programming.kicks-ass.net> User-Agent: NeoMutt/20180716 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 21-Jan 16:17, Peter Zijlstra wrote: > On Tue, Jan 15, 2019 at 10:15:01AM +0000, Patrick Bellasi wrote: > > +#ifdef CONFIG_UCLAMP_TASK > > > +struct uclamp_bucket { > > + unsigned long value : bits_per(SCHED_CAPACITY_SCALE); > > + unsigned long tasks : BITS_PER_LONG - bits_per(SCHED_CAPACITY_SCALE); > > +}; > > > +struct uclamp_cpu { > > + unsigned int value; > > /* 4 byte hole */ > > > + struct uclamp_bucket bucket[UCLAMP_BUCKETS]; > > +}; > > With the default of 5, this UCLAMP_BUCKETS := 6, so struct uclamp_cpu > ends up being 7 'unsigned long's, or 56 bytes on 64bit (with a 4 byte > hole). Yes, that's dimensioned and configured to fit into a single cache line for all the possible 5 (by default) clamp values of a clamp index (i.e. min or max util). > > > +#endif /* CONFIG_UCLAMP_TASK */ > > + > > /* > > * This is the main, per-CPU runqueue data structure. > > * > > @@ -835,6 +879,11 @@ struct rq { > > unsigned long nr_load_updates; > > u64 nr_switches; > > > > +#ifdef CONFIG_UCLAMP_TASK > > + /* Utilization clamp values based on CPU's RUNNABLE tasks */ > > + struct uclamp_cpu uclamp[UCLAMP_CNT] ____cacheline_aligned; > > Which makes this 112 bytes with 8 bytes in 2 holes, which is short of 2 > 64 byte cachelines. Right, we have 2 cache lines where: - the first $L tracks 5 different util_min values - the second $L tracks 5 different util_max values > Is that the best layout? It changed few times and that's what I found more reasonable for both for fitting the default configuration and also for code readability. Notice that we access RQ and SE clamp values with the same patter, for example: {rq|p}->uclamp[clamp_idx].value Are you worried about the holes or something else specific ? > > +#endif > > + > > struct cfs_rq cfs; > > struct rt_rq rt; > > struct dl_rq dl; > > -- > > 2.19.2 > > -- #include Patrick Bellasi