[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20080405004127.GG14784@duo.random>
Date: Sat, 5 Apr 2008 02:41:27 +0200
From: Andrea Arcangeli <andrea@...ranet.com>
To: Jeremy Fitzhardinge <jeremy@...p.org>
Cc: Christoph Lameter <clameter@....com>, Robin Holt <holt@....com>,
kvm-devel@...ts.sourceforge.net,
Peter Zijlstra <a.p.zijlstra@...llo.nl>,
general@...ts.openfabrics.org, steiner@....com,
linux-kernel@...r.kernel.org, linux-mm@...ck.org
Subject: Re: [patch 01/10] emm: mm_lock: Lock a process against reclaim
On Fri, Apr 04, 2008 at 04:12:42PM -0700, Jeremy Fitzhardinge wrote:
> I think you can break this if() down a bit:
>
> if (!(vma->vm_file && vma->vm_file->f_mapping))
> continue;
It makes no difference at runtime, coding style preferences are quite
subjective.
> So this is an O(n^2) algorithm to take the i_mmap_locks from low to high
> order? A comment would be nice. And O(n^2)? Ouch. How often is it
> called?
It's called a single time when the mmu notifier is registered. It's a
very slow path of course. Any other approach to reduce the complexity
would require memory allocations and it would require
mmu_notifier_register to return -ENOMEM failure. It didn't seem worth
it.
> And is it necessary to mush lock and unlock together? Unlock ordering
> doesn't matter, so you should just be able to have a much simpler loop, no?
That avoids duplicating .text. Originally they were separated. unlock
can't be a simpler loop because I didn't reserve vm_flags bitflags to
do a single O(N) loop for unlock. If you do malloc+fork+munmap two
vmas will point to the same anon-vma lock, that's why the unlock isn't
simpler unless I mark what I locked with a vm_flags bitflag.
--
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