Re: [PATCH 2/3] mm: make workingset detection logic memcg aware

From: Johannes Weiner
Date: Mon Aug 03 2015 - 09:24:44 EST


On Mon, Aug 03, 2015 at 03:04:22PM +0300, Vladimir Davydov wrote:
> @@ -179,8 +180,9 @@ static void unpack_shadow(void *shadow,
> eviction = entry;
>
> *zone = NODE_DATA(nid)->node_zones + zid;
> + *lruvec = mem_cgroup_page_lruvec(page, *zone);
>
> - refault = atomic_long_read(&(*zone)->inactive_age);
> + refault = atomic_long_read(&(*lruvec)->inactive_age);
> mask = ~0UL >> (NODES_SHIFT + ZONES_SHIFT +
> RADIX_TREE_EXCEPTIONAL_SHIFT);
> /*

You can not compare an eviction shadow entry from one lruvec with the
inactive age of another lruvec. The inactive ages are not related and
might differ significantly: memcgs are created ad hoc, memory hotplug,
page allocator fairness drift. In those cases the result will be pure
noise.

As much as I would like to see a simpler way, I am pessimistic that
there is a way around storing memcg ids in the shadow entries.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/