[v2,0/3] Optimize the fast path of mas_store()

Message ID 20230609120347.63936-1-zhangpeng.00@bytedance.com
Headers
Series Optimize the fast path of mas_store() |

Message

Peng Zhang June 9, 2023, 12:03 p.m. UTC
  Add fast paths for mas_wr_append() and mas_wr_slot_store() respectively.
The newly added fast path of mas_wr_append() is used in fork() and how
much it benefits fork() depends on how many VMAs are duplicated.

Changes since v1:
 - Revise comment and commit log. [3/3]
 - Add test for mas_wr_modify() fast path. [1/3]

v1: https://lore.kernel.org/lkml/20230602075353.5917-1-zhangpeng.00@bytedance.com/

Peng Zhang (3):
  maple_tree: add test for mas_wr_modify() fast path
  maple_tree: optimize mas_wr_append(), also improve duplicating VMAs
  maple_tree: add a fast path case in mas_wr_slot_store()

 lib/maple_tree.c      | 69 ++++++++++++++++++++++++++++---------------
 lib/test_maple_tree.c | 65 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 111 insertions(+), 23 deletions(-)
  

Comments

Liam R. Howlett June 13, 2023, 5:23 p.m. UTC | #1
* Peng Zhang <zhangpeng.00@bytedance.com> [230609 08:04]:
> Add fast paths for mas_wr_append() and mas_wr_slot_store() respectively.
> The newly added fast path of mas_wr_append() is used in fork() and how
> much it benefits fork() depends on how many VMAs are duplicated.
> 
> Changes since v1:
>  - Revise comment and commit log. [3/3]
>  - Add test for mas_wr_modify() fast path. [1/3]

Thanks for adding the tests.  I'm just trying to figure out how to best
address testing this in RCU mode. And by testing it I mean add tests in
RCU that does this and detect the failure by modifying your code, then
change it back and have it pass the test by falling back to node store.
This would need to change tools/testing/radix-tree/maple.c to update the
testing there.

> 
> v1: https://lore.kernel.org/lkml/20230602075353.5917-1-zhangpeng.00@bytedance.com/
> 
> Peng Zhang (3):
>   maple_tree: add test for mas_wr_modify() fast path
>   maple_tree: optimize mas_wr_append(), also improve duplicating VMAs
>   maple_tree: add a fast path case in mas_wr_slot_store()
> 
>  lib/maple_tree.c      | 69 ++++++++++++++++++++++++++++---------------
>  lib/test_maple_tree.c | 65 ++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 111 insertions(+), 23 deletions(-)
> 
> -- 
> 2.20.1
>
  
Peng Zhang June 14, 2023, 11:10 a.m. UTC | #2
在 2023/6/14 01:23, Liam R. Howlett 写道:
> * Peng Zhang <zhangpeng.00@bytedance.com> [230609 08:04]:
>> Add fast paths for mas_wr_append() and mas_wr_slot_store() respectively.
>> The newly added fast path of mas_wr_append() is used in fork() and how
>> much it benefits fork() depends on how many VMAs are duplicated.
>>
>> Changes since v1:
>>   - Revise comment and commit log. [3/3]
>>   - Add test for mas_wr_modify() fast path. [1/3]
> 
> Thanks for adding the tests.  I'm just trying to figure out how to best
> address testing this in RCU mode. And by testing it I mean add tests in
> RCU that does this and detect the failure by modifying your code, then
> change it back and have it pass the test by falling back to node store.
> This would need to change tools/testing/radix-tree/maple.c to update the
> testing there.
I see what you mean now, I will try to make a test in RCU mode.
> 
>>
>> v1: https://lore.kernel.org/lkml/20230602075353.5917-1-zhangpeng.00@bytedance.com/
>>
>> Peng Zhang (3):
>>    maple_tree: add test for mas_wr_modify() fast path
>>    maple_tree: optimize mas_wr_append(), also improve duplicating VMAs
>>    maple_tree: add a fast path case in mas_wr_slot_store()
>>
>>   lib/maple_tree.c      | 69 ++++++++++++++++++++++++++++---------------
>>   lib/test_maple_tree.c | 65 ++++++++++++++++++++++++++++++++++++++++
>>   2 files changed, 111 insertions(+), 23 deletions(-)
>>
>> -- 
>> 2.20.1
>>
>