On Mon, Aug 19, 2013 at 02:23:38PM +0200, Vlastimil Babka wrote: > Currently, munlock_vma_range() calls munlock_vma_page on each page in a loop, > which results in repeated taking and releasing of the lru_lock spinlock for > isolating pages one by one. This patch batches the munlock operations using > an on-stack pagevec, so that isolation is done under single lru_lock. For THP > pages, the old behavior is preserved as they might be split while putting them > into the pagevec. After this patch, a 9% speedup was measured for munlocking > a 56GB large memory area with THP disabled. > > A new function __munlock_pagevec() is introduced that takes a pagevec and: > 1) It clears PageMlocked and isolates all pages under lru_lock. Zone page stats > can be also updated using the variant which assumes disabled interrupts. > 2) It finishes the munlock and lru putback on all pages under their lock_page. > Note that previously, lock_page covered also the PageMlocked clearing and page > isolation, but it is not needed for those operations. > > Signed-off-by: Vlastimil Babka <vbabka@xxxxxxx> > Reviewed-by: Jörn Engel <joern@xxxxxxxxx> Acked-by: Mel Gorman <mgorman@xxxxxxx> -- Mel Gorman SUSE Labs -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>