Message-Id: <20080319211950.342967909@sgi.com> User-Agent: quilt/0.46-1 Date: Wed, 19 Mar 2008 14:19:50 -0700 From: Christoph Lameter To: uv-linux-kernel@sgi.com Subject-Prefix: [patch @num@/@total@] Subject: [RFC] Conversion of i_mmap_lock to a semaphore This patchset converts i_mmap_lock to a read write semaphore. The first patches move the tlb flushing around in such a way that the _lock can be taken in preemptible contexts. The last patch then converts the _lock to a _sem. The i_mmap_sem used to be present until Hugh Dickins switched it to a spinlock due to scaling concerns on NUMA with a benchmark called SDET. I was not able to locate that benchmark. But the old version used a regular semaphore not a rw sem. AIM9 results (3 samples): 5 exec_test 1048.95 1025.50 -23.45 -2.24% Program Loads/second 6 fork_test 4775.22 4945.16 169.94 3.56% Task Creations/second 5 exec_test 1057.00 1019.00 -38.00 -3.60% Program Loads/second 6 fork_test 4930.14 4760.00 -170.14 -3.45% Task Creations/second 5 exec_test 1047.50 1038.96 -8.54 -0.82% Program Loads/second 6 fork_test 4760.48 4925.07 164.59 3.46% Task Creations/second Loads per second seem to have down tendency. Task creations are up. Not sure how much jitter gets into it. I still need to get a test that shows the benefit of the semaphore. I dug out my old page fault test and am trying to get it to make it work for this case. --