mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Waiman Long <longman@redhat.com>
To: Phil Auld <pauld@redhat.com>
Cc: Ingo Molnar <mingo@redhat.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Juri Lelli <juri.lelli@redhat.com>,
	Vincent Guittot <vincent.guittot@linaro.org>,
	Dietmar Eggemann <dietmar.eggemann@arm.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	Ben Segall <bsegall@google.com>, Mel Gorman <mgorman@suse.de>,
	Valentin Schneider <vschneid@redhat.com>,
	Frederic Weisbecker <frederic@kernel.org>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 2/2] sched/isolation: Consolidate housekeeping cpumasks that are always identical
Date: Wed, 4 Sep 2024 14:20:25 -0400	[thread overview]
Message-ID: <560fdd10-f12b-4ce8-a628-c4952eff93ec@redhat.com> (raw)
In-Reply-To: <20240904171949.GC136544@pauld.westford.csb>

On 9/4/24 13:19, Phil Auld wrote:
> On Wed, Sep 04, 2024 at 01:14:41PM -0400 Waiman Long wrote:
>> The housekeeping cpumasks are only set by two boot commandline
>> parameters: "nohz_full" and "isolcpus". When there is more than one of
>> "nohz_full" or "isolcpus", the extra ones must have the same CPU list
>> or the setup will fail partially.
>>
>> The HK_TYPE_TICK, HK_TYPE_DOMAIN and HK_TYPE_MANAGED_IRQ types are
>> settable by "isolcpus" and they can be set individually. The other
>> housekeeping types are all set by "nohz_full" without a way to set them
>> individually. So they all have identical cpumasks.
>>
>> There is actually no point in having different cpumasks for these
>> "nohz_full" only housekeeping types. Consolidate these types to use the
>> same cpumask by aliasing them to the same value. If there is a need to
>> set any of them independently in the future, we can break them out to
>> their own cpumasks again.
>>
>> With this change, the number of cpumasks in the housekeeping structure
>> drops from 9 to 4.
>>
>> Signed-off-by: Waiman Long <longman@redhat.com>
>> ---
>>   include/linux/sched/isolation.h | 18 ++++++++++++------
>>   kernel/sched/isolation.c        |  9 ++-------
>>   2 files changed, 14 insertions(+), 13 deletions(-)
>>
>> diff --git a/include/linux/sched/isolation.h b/include/linux/sched/isolation.h
>> index 499d5e480882..e2c42172de82 100644
>> --- a/include/linux/sched/isolation.h
>> +++ b/include/linux/sched/isolation.h
>> @@ -7,15 +7,21 @@
>>   #include <linux/tick.h>
>>   
>>   enum hk_type {
>> -	HK_TYPE_TIMER,
>> -	HK_TYPE_RCU,
>> -	HK_TYPE_MISC,
>>   	HK_TYPE_TICK,
>>   	HK_TYPE_DOMAIN,
>> -	HK_TYPE_WQ,
>>   	HK_TYPE_MANAGED_IRQ,
>> -	HK_TYPE_KTHREAD,
>> -	HK_TYPE_MAX
>> +	HK_TYPE_KERNEL_NOISE,
>> +	HK_TYPE_MAX,
>> +
>> +	/*
>> +	 * The following housekeeping types are only set by the nohz_full
>> +	 * boot commandline option. So they can share the same value.
>> +	 */
>> +	HK_TYPE_TIMER   = HK_TYPE_KERNEL_NOISE,
>> +	HK_TYPE_RCU     = HK_TYPE_KERNEL_NOISE,
>> +	HK_TYPE_MISC    = HK_TYPE_KERNEL_NOISE,
>> +	HK_TYPE_WQ      = HK_TYPE_KERNEL_NOISE,
>> +	HK_TYPE_KTHREAD = HK_TYPE_KERNEL_NOISE
>>   };
>>   
>>   #ifdef CONFIG_CPU_ISOLATION
>> diff --git a/kernel/sched/isolation.c b/kernel/sched/isolation.c
>> index 5345e11f3d44..2b654272edcd 100644
>> --- a/kernel/sched/isolation.c
>> +++ b/kernel/sched/isolation.c
>> @@ -9,14 +9,10 @@
>>    */
>>   
>>   enum hk_flags {
>> -	HK_FLAG_TIMER		= BIT(HK_TYPE_TIMER),
>> -	HK_FLAG_RCU		= BIT(HK_TYPE_RCU),
>> -	HK_FLAG_MISC		= BIT(HK_TYPE_MISC),
>>   	HK_FLAG_TICK		= BIT(HK_TYPE_TICK),
>>   	HK_FLAG_DOMAIN		= BIT(HK_TYPE_DOMAIN),
>> -	HK_FLAG_WQ		= BIT(HK_TYPE_WQ),
>>   	HK_FLAG_MANAGED_IRQ	= BIT(HK_TYPE_MANAGED_IRQ),
>> -	HK_FLAG_KTHREAD		= BIT(HK_TYPE_KTHREAD),
>> +	HK_FLAG_KERNEL_NOISE	= BIT(HK_TYPE_KERNEL_NOISE),
>>   };
>>   
>>   DEFINE_STATIC_KEY_FALSE(housekeeping_overridden);
>> @@ -194,8 +190,7 @@ static int __init housekeeping_nohz_full_setup(char *str)
>>   {
>>   	unsigned long flags;
>>   
>> -	flags = HK_FLAG_TICK | HK_FLAG_WQ | HK_FLAG_TIMER | HK_FLAG_RCU |
>> -		HK_FLAG_MISC | HK_FLAG_KTHREAD;
>> +	flags = HK_FLAG_KERNEL_NOISE;
>>
> This does not look equivalent. HK_FLAG_TICK seems to be lost?

You are right. I will send out v3 to correct that.

Cheers,
Longman


      reply	other threads:[~2024-09-04 18:20 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-04 17:14 [PATCH v2 0/2] sched: Miscellaneous isolation related cleanups Waiman Long
2024-09-04 17:14 ` [PATCH v2 1/2] sched/core: Remove HK_TYPE_SCHED Waiman Long
2024-09-04 17:14 ` [PATCH v2 2/2] sched/isolation: Consolidate housekeeping cpumasks that are always identical Waiman Long
2024-09-04 17:19   ` Phil Auld
2024-09-04 18:20     ` Waiman Long [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=560fdd10-f12b-4ce8-a628-c4952eff93ec@redhat.com \
    --to=longman@redhat.com \
    --cc=bsegall@google.com \
    --cc=dietmar.eggemann@arm.com \
    --cc=frederic@kernel.org \
    --cc=juri.lelli@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mgorman@suse.de \
    --cc=mingo@redhat.com \
    --cc=pauld@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=vincent.guittot@linaro.org \
    --cc=vschneid@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®