On 2019/7/11 下午9:43, Peter Zijlstra wrote: > 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); Make sense, we actually want to observe the situation rather than the ratio itself, will be in next version. Regards, Michael Wang > >> + } >> + >> + rcu_read_lock(); >> + memcg = mem_cgroup_from_task(p); >> + if (idx != -1) >> + this_cpu_inc(memcg->stat_numa->locality[idx]); >> + rcu_read_unlock(); >> +} >> +#endif