On Wed, Jul 03, 2019 at 11:28:10AM +0800, 王贇 wrote: > +#ifdef CONFIG_NUMA_BALANCING > + > +enum memcg_numa_locality_interval { > + PERCENT_0_29, > + PERCENT_30_39, > + PERCENT_40_49, > + PERCENT_50_59, > + PERCENT_60_69, > + PERCENT_70_79, > + PERCENT_80_89, > + PERCENT_90_100, > + NR_NL_INTERVAL, > +}; That's just daft; why not make 8 equal sized buckets. > +struct memcg_stat_numa { > + u64 locality[NR_NL_INTERVAL]; > +}; > + if (remote || local) { > + idx = ((local * 10) / (remote + local)) - 2; idx = (NR_NL_INTERVAL * local) / (remote + local); > + } > + > + rcu_read_lock(); > + memcg = mem_cgroup_from_task(p); > + if (idx != -1) > + this_cpu_inc(memcg->stat_numa->locality[idx]); > + rcu_read_unlock(); > +} > +#endif