395 Star 1.4K Fork 1.3K

GVPopenEuler / kernel

 / 详情

[OLK-5.10] 回合特性”Large pages in the page cache”

已完成
需求
创建于  
2021-07-06 19:29

The primary idea here is that a large part of the overhead in dealing
with individual pages is that there's just so darned many of them.
We would be better off dealing with fewer, larger pages, even if they
don't get to be the size necessary for the CPU to use a larger TLB entry.

The approach taken is to make THPs support arbitrary power-of-two sizes
(instead of just PMDs). There's probably some tuning to be done to decide
what sizes are worth using, but we're a fair way from doing performance
work with this patchset yet.

Link:https://patchwork.kernel.org/project/linux-mm/cover/20200610201345.13273-1-willy@infradead.org/

评论 (5)

刘世鑫 创建了需求
刘世鑫 关联仓库设置为openEuler/kernel
展开全部操作日志

Hey c868aef3c2e1, 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.

openeuler-ci-bot 添加了
 
sig/Kernel
标签
刘世鑫 修改了描述
刘世鑫 修改了标题
刘世鑫 修改了描述
刘世鑫 修改了标题

该特性没还有完全进入主线,作者分多个补丁集提交补丁,在linux-5.10版本已经合入的部分包括:

  1. 补丁集"THP prep patches" 一共7个补丁,在v5.9-rc1合入。
  • ee6c400f5c05 mm: introduce offset_in_thp
  • 2be1d71841b7 mm: add thp_head
  • 6c357848b44b mm: replace hpage_nr_pages with thp_nr_pages
  • af3bbc12df80 mm: add thp_size
  • 6ffbb45826f5 mm: add thp_order
  • 419015675fef mm: move page-flags include to top of file
  • 1378a5ee451a mm: store compound_nr as well as compound_order

Link: https://patchwork.kernel.org/project/linux-mm/cover/20200629151959.15779-1-willy@infradead.org/

  1. 补丁集"Improvements for dump_page()" 一共6个补丁,在v5.9-rc1合入。
  • 54a75157d979 mm/debug: print hashed address of struct page
  • 9bdaf2cc5eb5 mm/debug: print the inode number in dump_page
  • 9ad3826575ab mm/debug: switch dump_page to get_kernel_nofault
  • 0b93d59e90d4 mm/debug: print head flags in dump_page
  • 452b557c9500 mm/debug: dump compound page information on a second line
  • e1ab96f8cc71 mm/debug: handle page->mapping better in dump_page

Link: https://patchwork.kernel.org/project/linux-mm/cover/20200709202117.7216-1-willy@infradead.org/

  1. 补丁集"Fix read-only THP for non-tmpfs filesystems" 一共3个补丁,在v5.10-rc1合入。
  • 198b62f83eef mm/filemap: fix storing to a THP shadow entry
  • 8fc75643c5e1 XArray: add xas_split
  • 57417cebc96b XArray: add xa_get_order

Link: https://patchwork.kernel.org/project/linux-mm/cover/20200903183029.14930-1-willy@infradead.org/

  1. 补丁集"Return head pages from find_*_entry" 一共8个补丁,在v5.10-rc1合入。
  • a8cf7f272b5a mm: add find_lock_head
  • 63ec1973ddf3 mm/shmem: return head page from find_lock_entry
  • a6de4b4873e1 mm: convert find_get_entry to return the head page
  • 9dfc8ff34b95 i915: use find_lock_page instead of find_lock_entry
  • 8cf886463ecc proc: optimise smaps for shmem entries
  • e6e88712e43b mm: optimise madvise WILLNEED
  • f5df8635c5a3 mm: use find_get_incore_page in memcontrol
  • 61ef18655704 mm: factor find_get_incore_page out of mincore_page

Link: https://patchwork.kernel.org/project/linux-mm/cover/20200910183318.20139-1-willy@infradead.org/

  1. 补丁集"Remove assumptions of THP size" 一共11个补丁,在v5.10-rc1合入。
  • 3efe62e46695 mm/vmscan: allow arbitrary sized pages to be paged out
  • 8854a6a7248f mm/page-writeback: support tail pages in wait_for_stable_page
  • fc3a5ac52827 mm/truncate: fix truncation for pages of arbitrary size
  • 5eaf35ab1275 mm/rmap: fix assumptions of THP size
  • e2333dad2d4a mm/huge_memory: fix can_split_huge_page assumption of THP size
  • 65dfe3c3bc41 mm/huge_memory: fix page_trans_huge_mapcount assumption of THP size
  • 8cce54756806 mm/huge_memory: fix split assumption of page size
  • 86b562b62972 mm/huge_memory: fix total_mapcount assumption of page size
  • 8fb156c9ee2d mm/page_owner: change split_page_owner to take a count
  • d01ac3c35214 mm/memory: remove page fault assumption of compound page size
  • 887b22c628c6 mm/filemap: fix page cache removal for arbitrary sized THPs

Link: https://patchwork.kernel.org/project/linux-mm/cover/20200908195539.25896-1-willy@infradead.org/

在v5.10-v5.13之间合入的部分包括:

  1. 补丁"mm: Support THPs in zero_user_segments" 在v5.11-rc1合入,一个bugfix在v5.12-rc3合入。
  • 0060ef3b4e6d mm: support THPs in zero_user_segments
  • 184cee516f3e mm/highmem.c: fix zero_user_segments() with start > end

Link: https://patchwork.kernel.org/project/linux-mm/patch/20201124041507.28996-1-willy@infradead.org/
Link: https://patchwork.kernel.org/project/linux-mm/patch/87v9ab60r4.fsf@mail.parknet.co.jp/

  1. 补丁集"Overhaul multi-page lookups for THP" 这组补丁一共16个,在v5.12-rc1合入了前14个,在v5.12合入2个bugfix
  • a656a20241f0 mm: remove pagevec_lookup_entries
  • cf2039af1a2e mm: pass pvec directly to find_get_entries
  • 38cefeb33749 mm: remove nr_entries parameter from pagevec_lookup_entries
  • 31d270fd98d1 mm: add an 'end' parameter to pagevec_lookup_entries
  • ca122fe40eb4 mm: add an 'end' parameter to find_get_entries
  • 5c211ba29deb mm: add and use find_lock_entries
  • 54fa39ac2e00 iomap: use mapping_seek_hole_data
  • 41139aa4c3a3 mm/filemap: add mapping_seek_hole_data
  • c7bad633e6b7 mm/filemap: add helper for finding pages
  • bc5a301120f3 mm/filemap: rename find_get_entry to mapping_get_entry
  • 44835d20b2a0 mm: add FGP_ENTRY
  • 8c647dd1e395 mm/swap: optimise get_shadow_from_swap_cache
  • 96888e0ab0e6 mm/shmem: use pagevec_lookup in shmem_unlock_mapping
  • c49f50d1983d mm: make pagecache tagged lookups return only head pages
  • ed98b0159fa9 mm/filemap: fix mapping_seek_hole_data on THP & 32-bit
  • 2d11e738151d mm/filemap: fix find_lock_entries hang on 32-bit THP

"mm/truncate,shmem: Handle truncates that split THPs" and "mm/filemap:
Return only head pages from find_get_entries" were dropped.

Link: https://patchwork.kernel.org/project/linux-mm/cover/20201112212641.27837-1-willy@infradead.org/
Link: https://patchwork.kernel.org/project/linux-mm/patch/20201124041507.28996-1-willy@infradead.org/

  1. 补丁集"Remove nrexceptional tracking" 及一个bugfix补丁一共5个补丁,在v5.13-rc1合入。
  • 786b31121a2c mm: remove nrexceptional from inode: remove BUG_ON
  • 8bc3c481b3d0 mm: remove nrexceptional from inode
  • 7f0e07fb0289 dax: account DAX entries as nrpages
  • 46be67b424ef mm: stop accounting shadow entries
  • 7716506adac4 mm: introduce and use mapping_empty()

Link: https://patchwork.kernel.org/project/linux-mm/cover/20201026151849.24232-1-willy@infradead.org/
Link: https://patchwork.kernel.org/project/linux-mm/patch/20210505013257.HZsCu951B%25akpm@linux-foundation.org/

在linux-5.13前未合入主线的部分包括:

  1. 补丁集"More THP fixes"
    其中补丁"mm: Support THPs in zero_user_segments"已单独合入主线,剩余未合入主线。

Link: https://patchwork.kernel.org/project/linux-mm/cover/20201026183136.10404-1-willy@infradead.org/

  1. 补丁集"Transparent Huge Page support for XFS"
    描述:
    This patchset includes all the filesystem and iomap changes needed to
    support transparent huge pages. A separate patchset will enable the MM
    side of things. I'm hoping Darrick agrees to take the first two patches
    through the iomap tree,
    These patches are for review. They don't currently apply to the iomap
    tree due to some conflicting patches. I'll rebase on top of -rc1 once
    it's out (they do apply to 5.9).

Link: https://patchwork.kernel.org/project/linux-mm/cover/20201014030357.21898-1-willy@infradead.org/

  1. 补丁集"Transparent Hugepages for non-tmpfs filesystems"
    描述:
    After months of merging prep patches, here's the end result. It holds
    up to xfstests on both shmem and xfs. It's based on linux-next as of
    a couple of days ago, plus several of the patches I've sent in the
    last week:
    https://lore.kernel.org/linux-mm/20201026041408.25230-1-willy@infradead.org/
    https://lore.kernel.org/linux-mm/20201026151849.24232-1-willy@infradead.org/
    https://lore.kernel.org/linux-mm/20201026183136.10404-1-willy@infradead.org/
    You can get a complete git tree here:
    http://git.infradead.org/users/willy/pagecache.git/shortlog/refs/heads/next
    This tree only includes support for XFS. It would probably be
    straightforward to add support to ZoneFS (which also uses iomap), but I
    haven't looked into it. Dave Howells has AFS support working based on
    these patches:
    https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/log/?h=fscache-thp

Link: https://patchwork.kernel.org/project/linux-mm/cover/20201029193405.29125-1-willy@infradead.org/

openEuler-21.09分支合入如下相关补丁:
1ccdc3b1037e mm/swap: remove unused local variable nr_shadows
f54e280e16c2 mm: remove nrexceptional from inode: remove BUG_ON
3d386417da7a mm: remove nrexceptional from inode
3b7ac86c0c9f dax: account DAX entries as nrpages
8d708d9696a6 mm: stop accounting shadow entries
32adb099691a mm: introduce and use mapping_empty()
89ff6f658687 mm/filemap: fix find_lock_entries hang on 32-bit THP
7905ab1ef1eb mm/filemap: fix mapping_seek_hole_data on THP & 32-bit
113b9fab6429 mm/highmem.c: fix zero_user_segments() with start > end
9d5aaa7420d0 mm: remove pagevec_lookup_entries
80fc276401c1 mm: pass pvec directly to find_get_entries
5d8a14acf6ee mm: remove nr_entries parameter from pagevec_lookup_entries
743b4942cfc7 mm: add an 'end' parameter to pagevec_lookup_entries
28dc4ba58e32 mm: add an 'end' parameter to find_get_entries
b7d92f96573d mm: add and use find_lock_entries
9c8b830f798d iomap: use mapping_seek_hole_data
84bab37d7944 mm/filemap: add mapping_seek_hole_data
3cfcbf71e973 mm/filemap: add helper for finding pages
42e0716903d8 mm/filemap: rename find_get_entry to mapping_get_entry
ef13dbde3a2b mm: add FGP_ENTRY
06d753b4fcb8 mm/swap: optimise get_shadow_from_swap_cache
f420d06b6df4 mm/shmem: use pagevec_lookup in shmem_unlock_mapping
7e09c6741e58 mm: make pagecache tagged lookups return only head pages
4780bfa80304 mm: support THPs in zero_user_segments

zhengzengkai 任务状态新建 修改为已完成

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(3)
5329419 openeuler ci bot 1632792936
C
1
https://gitee.com/openeuler/kernel.git
git@gitee.com:openeuler/kernel.git
openeuler
kernel
kernel

搜索帮助