lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <560fdd10-f12b-4ce8-a628-c4952eff93ec@redhat.com>
Date: Wed, 4 Sep 2024 14:20:25 -0400
From: Waiman Long <longman@...hat.com>
To: Phil Auld <pauld@...hat.com>
Cc: Ingo Molnar <mingo@...hat.com>, Peter Zijlstra <peterz@...radead.org>,
 Juri Lelli <juri.lelli@...hat.com>,
 Vincent Guittot <vincent.guittot@...aro.org>,
 Dietmar Eggemann <dietmar.eggemann@....com>,
 Steven Rostedt <rostedt@...dmis.org>, Ben Segall <bsegall@...gle.com>,
 Mel Gorman <mgorman@...e.de>, Valentin Schneider <vschneid@...hat.com>,
 Frederic Weisbecker <frederic@...nel.org>, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2 2/2] sched/isolation: Consolidate housekeeping cpumasks
 that are always identical

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@...hat.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


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ