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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to