This series improves page unpinning, with an eye on improving MR
deregistration for big swaths of memory (which is bound by the page
Decrement the head page by @ntails and thus reducing a lot the number of
atomic operations per compound page. This is done by comparing individual
tail pages heads, and counting number of consecutive tails on which they
match heads and based on that update head page refcount. Should have a
visible improvement in all page (un)pinners which use compound pages
Introducing a new API for unpinning page ranges (to avoid the trick in the
previous item and be based on math), and use that in RDMA ib_mem_release
(used for mr deregistration).
Performance improvements: unpin_user_pages() for hugetlbfs and THP improves ~3x
(through gup_test) and RDMA MR dereg improves ~4.5x with the new API.
See patches 2 and 4 for those.
Hey fanchengyang, Welcome to openEuler Community.
All of the projects in openEuler Community are maintained by @openeuler-ci-bot .
That means the developers can comment below every pull request or issue to trigger Bot Commands.
Please follow instructions at https://gitee.com/openeuler/community/blob/master/en/sig-infrastructure/command.md to find the details.
ba11d36c1bd7 RDMA/umem: batch page unpin in __ib_umem_release()
7445eefe1d51 mm/gup: add a range variant of unpin_user_pages_dirty_lock()
f995ea2ce566 mm/gup: decrement head page once for group of subpages
5a926bf22c07 mm/gup: add compound page list iterator
Sign in to comment