Thread (23 messages) 23 messages, 5 authors, 2014-09-25

Re: [patch] mm: memcontrol: lockless page counters

From: Johannes Weiner <hannes@cmpxchg.org>
Date: 2014-09-22 15:51:00
Also in: linux-mm, lkml

On Mon, Sep 22, 2014 at 04:44:36PM +0200, Michal Hocko wrote:
On Fri 19-09-14 09:22:08, Johannes Weiner wrote:
quoted
Memory is internally accounted in bytes, using spinlock-protected
64-bit counters, even though the smallest accounting delta is a page.
The counter interface is also convoluted and does too many things.

Introduce a new lockless word-sized page counter API, then change all
memory accounting over to it and remove the old one.  The translation
from and to bytes then only happens when interfacing with userspace.
Dunno why but I thought other controllers use res_counter as well. But
this doesn't seem to be the case so this is perfectly reasonable way
forward.
You were fooled by its generic name!  It really is a lot less generic
than what it was designed for, and there are no new users in sight.
I have only glanced through the patch and it mostly seems good to me 
(I have to look more closely on the atomicity of hierarchical operations).

Nevertheless I think that the counter should live outside of memcg (it
is ugly and bad in general to make HUGETLB controller depend on MEMCG
just to have a counter). If you made kernel/page_counter.c and led both
containers select CONFIG_PAGE_COUNTER then you do not need a dependency
on MEMCG and I would find it cleaner in general.
The reason I did it this way is because the hugetlb controller simply
accounts and limits a certain type of memory and in the future I would
like to make it a memcg extension, just like kmem and swap.

Once that is done, page counters can become fully private, but until
then I think it's a good idea to make them part of memcg to express
this relationship and to ensure we are moving in the same direction.
quoted
Aside from the locking costs, this gets rid of the icky unsigned long
long types in the very heart of memcg, which is great for 32 bit and
also makes the code a lot more readable.
Definitely. Nice work!
Thanks!

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help