Messages in this thread | | | Date | Fri, 24 Feb 2023 16:14:51 +0100 | Subject | Re: [PATCH v3] sched: cpuset: Don't rebuild root domains on suspend-resume | From | Dietmar Eggemann <> |
| |
On 23/02/2023 16:38, Qais Yousef wrote:
IMHO the patch title is misleading since what you want to avoid in certain cases is that the RD DL accounting is updated.
> On 02/06/23 22:14, Qais Yousef wrote: >> Commit f9a25f776d78 ("cpusets: Rebuild root domain deadline accounting information") >> enabled rebuilding root domain on cpuset and hotplug operations to >> correct deadline accounting. >> >> Rebuilding root domain is a slow operation and we see 10+ of ms delays >> on suspend-resume because of that (worst case captures 20ms which >> happens often). >> >> Since nothing is expected to change on suspend-resume operation; skip >> rebuilding the root domains to regain the some of the time lost. >> >> Achieve this by refactoring the code to pass whether dl accoutning needs >> an update to rebuild_sched_domains(). And while at it, rename >> rebuild_root_domains() to update_dl_rd_accounting() which I believe is >> a more representative name since we are not really rebuilding the root >> domains, but rather updating dl accounting at the root domain. >> >> Some users of rebuild_sched_domains() will skip dl accounting update >> now: >> >> * Update sched domains when relaxing the domain level in cpuset >> which only impacts searching level in load balance
This one is cpuset related. (1)
>> * update sched domains when cpufreq governor changes and we need >> to create the perf domains
This one is drivers/base/arch_topology.c [arm/arm64/...] related. (2)
There are several levels of passing this `update_dl_accounting` information through. I guess it looks like this:
update_dl_accounting
arm/arm64/riscv/parisc specific: update_topology_flags_workfn() true rebuild_sched_domains_energy() false (2)
cpuset_hotplug_workfn() cpus_updated || force_rebuild == CPUSET_FORCE_REBUILD_PRS_ERROR
->rebuild_sched_domains(update_dl_accounting)
update_cpumasks_hier() true update_relax_domain_level() false (1) update_flag() true update_prstate() true
->rebuild_sched_domains_locked(update_dl_accounting)
->partition_and_rebuild_sched_domains(..., update_dl_accounting)
if (update_dl_accounting) update_dl_rd_accounting()
There is already a somehow hidden interface for `sd/rd rebuild`
int __weak arch_update_cpu_topology(void)
which lets partition_sched_domains_locked() figure out whether sched domains have to be rebuild..
But in your case it is more on the interface `cpuset/hotplug -> sd/rd rebuild` and not only `arch -> `sd/rd rebuild``.
IMHO, it would be still nice to have only one way to tell `sd/rd rebuild` what to do and what not to do during sd/rd/(pd) rebuild.
[...]
| |