lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Fri, 1 Nov 2013 22:02:44 +0800
From:	Yuanhan Liu <yuanhan.liu@...ux.intel.com>
To:	Peter Zijlstra <peterz@...radead.org>
Cc:	Michel Lespinasse <walken@...gle.com>,
	linux-kernel@...r.kernel.org, Ingo Molnar <mingo@...nel.org>,
	Linus Torvalds <torvalds@...ux-foundation.org>,
	Andrew Morton <akpm@...ux-foundation.org>,
	Rik van Riel <riel@...hat.com>
Subject: Re: [PATCH 1/4] mm/rmap: per anon_vma lock

On Fri, Nov 01, 2013 at 01:07:45PM +0100, Peter Zijlstra wrote:
> On Fri, Nov 01, 2013 at 07:44:29PM +0800, Yuanhan Liu wrote:
> > commit 012f18004da33ba672e3c60838cc4898126174d3
> > Author: Rik van Riel <riel@...hat.com>
> > Date:   Mon Aug 9 17:18:40 2010 -0700
> > 
> >     mm: always lock the root (oldest) anon_vma
> > 
> >     Always (and only) lock the root (oldest) anon_vma whenever we do something
> >     in an anon_vma.  The recently introduced anon_vma scalability is due to
> >     the rmap code scanning only the VMAs that need to be scanned.  Many common
> >     operations still took the anon_vma lock on the root anon_vma, so always
> >     taking that lock is not expected to introduce any scalability issues.
> > 
> >     However, always taking the same lock does mean we only need to take one
> >     lock, which means rmap_walk on pages from any anon_vma in the vma is
> >     excluded from occurring during an munmap, expand_stack or other operation
> >     that needs to exclude rmap_walk and similar functions.
> > 
> >     Also add the proper locking to vma_adjust.
> > 
> >     Signed-off-by: Rik van Riel <riel@...hat.com>
> >     Tested-by: Larry Woodman <lwoodman@...hat.com>
> >     Acked-by: Larry Woodman <lwoodman@...hat.com>
> >     Reviewed-by: Minchan Kim <minchan.kim@...il.com>
> >     Reviewed-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@...fujitsu.com>
> >     Acked-by: Mel Gorman <mel@....ul.ie>
> >     Acked-by: Linus Torvalds <torvalds@...ux-foundation.org>
> >     Signed-off-by: Andrew Morton <akpm@...ux-foundation.org>
> >     Signed-off-by: Linus Torvalds <torvalds@...ux-foundation.org>
> 
> Right that commit did.

Sorry again for that! I was jusy being brain dead :(

> I'm still not sure why you change both the
> locking proper and the locking primitive used in one patch set.

convert rwsem to rwlock silightly depends on per anon_vma lock, as it's
a bad idea to do avc allocation inside a spin lock.

Without converting rwsem to rwlock, it's not that useful to introduce
per anon_vma lock, or worse, it may introduce regressions.

> 
> Also, changing the locking proper requires a very detailed explanation
> on why it is correct;

Thanks for the tip. And yes, this patch really lacks of some explanation.
I tried to find some potentional races. I then digged the git history
and found it was per anon_lock at the first time avc was introduced.
It was changed to root locking not for fixing race, thus I think we
can changed it back, and this time, for performance boost.

anon_vma lock owns biggest lock contention on our many-core(say 120)servers
from /proc/lock_stat. I found Ingo's patch makes it better, and since
it's a spin lock, I then tried to narrow down the lock range. Hence,
I wrote this patch.

This patch may be wrong, but I guess it's somehow worthy sending out
for comments.

> we've had far too many 'fun' issues with the
> anon_vma locking in the past.

Yeah, I know. Say, http://lwn.net/Articles/383162/ ;)

Thanks.

	--yliu
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists