Re: [PATCH v2 3/4] sched/isolation: Add HK_TYPE_WQ to isolcpus=domain
From: Frederic Weisbecker <frederic@kernel.org>
Date: 2022-11-29 12:11:04
Also in:
linux-crypto, linux-pci, lkml
On Fri, Oct 14, 2022 at 01:27:25PM -0300, Leonardo Brás wrote:
Hello Frederic, So, IIUC you are removing all flags composing nohz_full= parameter in favor of a unified NOHZ_FULL flag. I am very new to the code, and I am probably missing the whole picture, but I actually think it's a good approach to keep them split for a couple reasons: 1 - They are easier to understand in code (IMHO): "This cpu should not do this, because it's not able to do WQ housekeeping" looks better than "because it's not in DOMAIN or NOHZ_FULL housekeeping"
A comment above each site may solve that.
2 - They are simpler for using: Suppose we have this function that should run at a WQ, but we want to keep them out of the isolated cpus. If we have the unified flags, we need to combine both DOMAIN and NOHZ_FULL bitmasks, and then combine it again with something like cpu_online_mask. It usually means allocating a new cpumask_t, and also freeing it afterwards. If we have a single WQ flag, we can avoid the allocation altogether by using for_each_cpu_and(), making the code much simpler.
I guess having a specific function for workqueues would arrange for it.
3 - It makes easier to compose new isolation modes: In case the future requires a new isolation mode that also uses the types of isolation we currently have implemented, it would be much easier to just compose it with the current HK flags, instead of having to go through all usages and do a cpumask_and() there. Also, new isolation modes would make (2) worse.
Actually having a new feature merged in HK_NOHZ_FULL would make it easier to handle as it avoids spreading cpumasks. I'm not sure I understand what you mean. Thanks.