From: Sidhartha Kumar <sidhartha.kumar@oracle.com>
To: linux-kernel@vger.kernel.org, maple-tree@lists.infradead.org
Cc: linux-mm@kvack.org, akpm@linux-foundation.org,
liam.howlett@oracle.com, zhangpeng.00@bytedance.com,
willy@infradead.org, Sidhartha Kumar <sidhartha.kumar@oracle.com>
Subject: [PATCH 00/18] Introduce a store type enum for the Maple tree
Date: Tue, 4 Jun 2024 10:41:27 -0700 [thread overview]
Message-ID: <20240604174145.563900-1-sidhartha.kumar@oracle.com> (raw)
================================ OVERVIEW ================================
This series implements two work items[1]: "aligning mas_store_gfp() with
mas_preallocate()" and "enum for store type".
mas_store_gfp() is modified to preallocate nodes. This simplies many of
the write helper functions by allowing them to use mas_store_gfp() rather
than open coding node allocation and error handling.
The enum defines the following store types:
enum store_type {
wr_invalid,
wr_new_root,
wr_store_root,
wr_exact_fit,
wr_spanning_store,
wr_split_store,
wr_rebalance,
wr_append,
wr_node_store,
wr_slot_store,
wr_bnode
};
In the current maple tree code, a walk down the tree is done in
mas_preallocate() to determine the number of nodes needed for this write.
After node allocation, mas_wr_store_entry() will perform another walk to
determine which write helper function to use to complete the write.
Rather than performing the second walk, we can store the type of write
in the maple write state during node allocation and read this field to
complete the write.
================================ RESULTS =================================
./malloc1_processes -t 4 -s 30
v6.10-rc1 (mm-unstable 06/03/24)
average:14178
v6.10-rc1 + this series
average:17197
+21.3%
./mmap1_processes -t 4 -s 30
v6.10-rc1 (mm-unstable 06/03/24)
average:24579
v6.10-rc1 + this series
average:28625
+16.4%
./brk1_processes -t 4 -s 30
v6.10-rc1 (mm-unstable 06/03/24)
average:46663
v6.10-rc1 + this series
average:55388
+18.7%
================================ TESTING =================================
Testing was done with the maple tree test suite. A new test case is also
added to validate the order in which we test for and assign the store type.
[1]: https://lists.infradead.org/pipermail/maple-tree/2023-December/003098.html
Sidhartha Kumar (18):
maple_tree: introduce store_type enum
maple_tree: introduce mas_wr_prealloc_setup()
maple_tree: move up mas_wr_store_setup() and mas_wr_prealloc_setup()
maple_tree: introduce mas_wr_store_type()
maple_tree: set store type in mas_store_prealloc()
maple_tree: remove mas_destroy() from mas_nomem()
maple_tree: use mas_store_gfp() in mas_erase()
maple_tree: set write store type in mas_store()
maple_tree: use mas_store_gfp() in mtree_store_range()
maple_tree: print store type in mas_dump()
maple_tree: use store type in mas_wr_store_entry()
maple_tree: convert mas_insert() to preallocate nodes
maple_tree: simplify mas_commit_b_node()
maple_tree: remove mas_wr_modify()
maple_tree: have mas_store() allocate nodes if needed
maple_tree: remove node allocations from various write helper
functions
maple_tree: remove repeated sanity checks from mas_wr_append()
maple_tree: remove unneeded mas_wr_walk() in mas_store_prealloc()
include/linux/maple_tree.h | 15 +
lib/maple_tree.c | 559 ++++++++++++++++++-------------
tools/testing/radix-tree/maple.c | 46 ++-
3 files changed, 386 insertions(+), 234 deletions(-)
--
2.45.1
next reply other threads:[~2024-06-04 17:42 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-04 17:41 Sidhartha Kumar [this message]
2024-06-04 17:41 ` [PATCH 01/18] maple_tree: introduce store_type enum Sidhartha Kumar
2024-06-04 17:41 ` [PATCH 02/18] maple_tree: introduce mas_wr_prealloc_setup() Sidhartha Kumar
2024-06-04 17:41 ` [PATCH 03/18] maple_tree: move up mas_wr_store_setup() and mas_wr_prealloc_setup() Sidhartha Kumar
2024-06-04 17:41 ` [PATCH 04/18] maple_tree: introduce mas_wr_store_type() Sidhartha Kumar
2024-06-04 19:07 ` Liam R. Howlett
2024-06-06 2:15 ` Sidhartha Kumar
2024-06-04 21:09 ` kernel test robot
2024-06-04 17:41 ` [PATCH 05/18] maple_tree: set store type in mas_store_prealloc() Sidhartha Kumar
2024-06-04 19:27 ` Liam R. Howlett
2024-06-04 17:41 ` [PATCH 06/18] maple_tree: remove mas_destroy() from mas_nomem() Sidhartha Kumar
2024-06-04 19:21 ` Liam R. Howlett
2024-06-04 17:41 ` [PATCH 07/18] maple_tree: use mas_store_gfp() in mas_erase() Sidhartha Kumar
2024-06-04 17:41 ` [PATCH 08/18] maple_tree: set write store type in mas_store() Sidhartha Kumar
2024-06-04 17:41 ` [PATCH 09/18] maple_tree: use mas_store_gfp() in mtree_store_range() Sidhartha Kumar
2024-06-04 19:24 ` Liam R. Howlett
2024-06-04 17:41 ` [PATCH 10/18] maple_tree: print store type in mas_dump() Sidhartha Kumar
2024-06-04 17:41 ` [PATCH 11/18] maple_tree: use store type in mas_wr_store_entry() Sidhartha Kumar
2024-06-04 22:02 ` kernel test robot
2024-06-04 17:41 ` [PATCH 12/18] maple_tree: convert mas_insert() to preallocate nodes Sidhartha Kumar
2024-06-04 22:44 ` kernel test robot
2024-06-04 17:41 ` [PATCH 13/18] maple_tree: simplify mas_commit_b_node() Sidhartha Kumar
2024-06-04 19:34 ` Liam R. Howlett
2024-06-26 10:40 ` Mateusz Guzik
2024-06-26 17:28 ` Andrew Morton
2024-06-26 17:45 ` Sidhartha Kumar
2024-06-26 18:29 ` Mateusz Guzik
2024-06-04 17:41 ` [PATCH 14/18] maple_tree: remove mas_wr_modify() Sidhartha Kumar
2024-06-04 17:41 ` [PATCH 15/18] maple_tree: have mas_store() allocate nodes if needed Sidhartha Kumar
2024-06-04 17:41 ` [PATCH 16/18] maple_tree: remove node allocations from various write helper functions Sidhartha Kumar
2024-06-04 17:41 ` [PATCH 17/18] maple_tree: remove repeated sanity checks from mas_wr_append() Sidhartha Kumar
2024-06-04 17:41 ` [PATCH 18/18] maple_tree: remove unneeded mas_wr_walk() in mas_store_prealloc() Sidhartha Kumar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240604174145.563900-1-sidhartha.kumar@oracle.com \
--to=sidhartha.kumar@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=liam.howlett@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=maple-tree@lists.infradead.org \
--cc=willy@infradead.org \
--cc=zhangpeng.00@bytedance.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox