linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/2] mm/hugetlb: follow_hugetlb_page() improvements
@ 2021-01-28 18:26 Joao Martins
  2021-01-28 18:26 ` [PATCH v2 1/2] mm/hugetlb: grab head page refcount once for group of subpages Joao Martins
  2021-01-28 18:26 ` [PATCH v2 2/2] mm/hugetlb: refactor subpage recording Joao Martins
  0 siblings, 2 replies; 8+ messages in thread
From: Joao Martins @ 2021-01-28 18:26 UTC (permalink / raw)
  To: linux-mm; +Cc: linux-kernel, Mike Kravetz, Andrew Morton, Joao Martins

Hey,

While looking at ZONE_DEVICE struct page reuse particularly the last
patch[0], I found two possible improvements for follow_hugetlb_page()
which is solely used for get_user_pages()/pin_user_pages().

The first patch batches page refcount updates while the second tidies
up storing the subpages/vmas. Both together bring the cost of slow
variant of gup() cost from ~87.6k usecs to ~5.8k usecs.

libhugetlbfs tests seem to pass as well gup_test benchmarks
with hugetlbfs vmas.

v2:
  * switch from refs++ to ++refs;
  * add Mike's Rb on patch 1;
  * switch from page++ to mem_map_offset() on the second patch;
  
[0] https://lore.kernel.org/linux-mm/20201208172901.17384-11-joao.m.martins@oracle.com/

Joao Martins (2):
  mm/hugetlb: grab head page refcount once for group of subpages
  mm/hugetlb: refactor subpage recording

 include/linux/mm.h |  3 +++
 mm/gup.c           |  5 ++--
 mm/hugetlb.c       | 66 +++++++++++++++++++++++++++-------------------
 3 files changed, 44 insertions(+), 30 deletions(-)

-- 
2.17.1



^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-02-13 21:04 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-28 18:26 [PATCH v2 0/2] mm/hugetlb: follow_hugetlb_page() improvements Joao Martins
2021-01-28 18:26 ` [PATCH v2 1/2] mm/hugetlb: grab head page refcount once for group of subpages Joao Martins
2021-01-28 18:26 ` [PATCH v2 2/2] mm/hugetlb: refactor subpage recording Joao Martins
2021-01-28 21:53   ` Mike Kravetz
2021-02-11 20:47     ` Zi Yan
2021-02-11 23:44       ` Mike Kravetz
2021-02-13 15:44         ` Zi Yan
2021-02-13 21:04           ` Mike Kravetz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).