Files
linux/mm
Chen, Kenneth W d5d4b0aa4e [PATCH] optimize follow_hugetlb_page
follow_hugetlb_page() walks a range of user virtual address and then fills
in list of struct page * into an array that is passed from the argument
list.  It also gets a reference count via get_page().  For compound page,
get_page() actually traverse back to head page via page_private() macro and
then adds a reference count to the head page.  Since we are doing a virt to
pte look up, kernel already has a struct page pointer into the head page.
So instead of traverse into the small unit page struct and then follow a
link back to the head page, optimize that with incrementing the reference
count directly on the head page.

The benefit is that we don't take a cache miss on accessing page struct for
the corresponding user address and more importantly, not to pollute the
cache with a "not very useful" round trip of pointer chasing.  This adds a
moderate performance gain on an I/O intensive database transaction
workload.

Signed-off-by: Ken Chen <kenneth.w.chen@intel.com>
Cc: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-03-22 07:54:04 -08:00
..
2006-03-22 07:54:01 -08:00
2005-06-24 00:06:41 -07:00
2005-10-28 08:16:51 -07:00
2006-03-22 07:54:04 -08:00
2006-03-22 07:53:58 -08:00
2006-01-11 18:42:13 -08:00
2006-03-22 07:54:01 -08:00
2006-03-22 07:54:01 -08:00
2006-03-02 08:33:07 -08:00
2005-10-29 21:40:42 -07:00
2005-04-16 15:20:36 -07:00
2006-03-22 07:54:02 -08:00
2006-03-22 07:54:02 -08:00
2006-03-22 07:54:01 -08:00
2006-02-08 07:52:58 -08:00
2006-03-22 07:53:57 -08:00