[lkml]   [2010]   [Jan]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [RFC][PATCH 6/8] mm: handle_speculative_fault()
    On Tue, 5 Jan 2010, Arjan van de Ven wrote:

    > On Tue, 5 Jan 2010 09:17:11 -0600 (CST)
    > Christoph Lameter <> wrote:
    > > On Tue, 5 Jan 2010, Arjan van de Ven wrote:
    > >
    > > > while I appreciate the goal of reducing contention on this lock...
    > > > wouldn't step one be to remove the page zeroing from under this
    > > > lock? that's by far (easily by 10x I would guess) the most
    > > > expensive thing that's done under the lock, and I would expect a
    > > > first order of contention reduction just by having the zeroing of a
    > > > page not done under the lock...
    > >
    > > The main issue is cacheline bouncing. mmap sem is a rw semaphore and
    > > only held for read during a fault.
    > depends on the workload; on a many-threads-java workload, you also get
    > it for write quite a bit (lots of malloc/frees in userspace in addition
    > to pagefaults).. at which point you do end up serializing on the
    > zeroing.
    > There's some real life real big workloads that show this pretty badly;
    > so far the workaround is to have glibc batch up a lot of the free()s..
    > but that's just pushing it a little further out.

    Again mmap_sem is a rwsem and only a read lock is held. Zeroing in
    do_anonymous_page can occur concurrently on multiple processors in the
    same address space. The pte lock is intentionally taken *after* zeroing to
    allow concurrent zeroing to occur.

     \ /
      Last update: 2010-01-07 17:15    [W:0.021 / U:1.008 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site