Hi Waiman, On 17-May 16:55, Waiman Long wrote: [...] > @@ -672,13 +672,14 @@ static int generate_sched_domains(cpumask_var_t **domains, > int ndoms = 0; /* number of sched domains in result */ > int nslot; /* next empty doms[] struct cpumask slot */ > struct cgroup_subsys_state *pos_css; > + bool root_load_balance = is_sched_load_balance(&top_cpuset); > > doms = NULL; > dattr = NULL; > csa = NULL; > > /* Special case for the 99% of systems with one, full, sched domain */ > - if (is_sched_load_balance(&top_cpuset)) { > + if (root_load_balance && !top_cpuset.isolation_count) { Perhaps I'm missing something but, it seems to me that, when the two conditions above are true, then we are going to destroy and rebuild the exact same scheduling domains. IOW, on 99% of systems where: is_sched_load_balance(&top_cpuset) top_cpuset.isolation_count = 0 since boot time and forever, then every time we update a value for cpuset.cpus we keep rebuilding the same SDs. It's not strictly related to this patch, the same already happens in mainline based just on the first condition, but since you are extending that optimization, perhaps you can tell me where I'm possibly wrong or which cases I'm not considering. I'm interested mainly because on Android systems those conditions are always true and we see SDs rebuilds every time we write something in cpuset.cpus, which ultimately accounts for almost all the 6-7[ms] time required for the write to return, depending on the CPU frequency. Cheers Patrick -- #include <best/regards.h> Patrick Bellasi -- To unsubscribe from this list: send the line "unsubscribe cgroups" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html