Re: [PATCH 1/4] numa: introduce per-cgroup numa balancing locality, statistic

From: Peter Zijlstra
Date: Thu Jul 11 2019 - 09:44:15 EST


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