On Fri, Sep 21, 2012 at 11:46:19AM +0100, Mel Gorman wrote: > Compactions migrate scanner acquires the zone->lru_lock when scanning a range > of pages looking for LRU pages to acquire. It does this even if there are > no LRU pages in the range. If multiple processes are compacting then this > can cause severe locking contention. To make matters worse commit b2eef8c0 > (mm: compaction: minimise the time IRQs are disabled while isolating pages > for migration) releases the lru_lock every SWAP_CLUSTER_MAX pages that are > scanned. > > This patch makes two changes to how the migrate scanner acquires the LRU > lock. First, it only releases the LRU lock every SWAP_CLUSTER_MAX pages if > the lock is contended. This reduces the number of times it unnecessarily > disables and re-enables IRQs. The second is that it defers acquiring the > LRU lock for as long as possible. If there are no LRU pages or the only > LRU pages are transhuge then the LRU lock will not be acquired at all > which reduces contention on zone->lru_lock. > > Signed-off-by: Mel Gorman <mgorman@xxxxxxx> > Acked-by: Rik van Riel <riel@xxxxxxxxxx> > --- Acked-by: Rafael Aquini <aquini@xxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html