Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cascaded Multi Size Based Allocators Achiving the 'infinite' space ability as ACE_Malloc #2135

Open
wants to merge 92 commits into
base: master
Choose a base branch
from

Conversation

smithAchang
Copy link

@smithAchang smithAchang commented Sep 23, 2023

ACE_Malloc memory pool has only one linked list,

so when it has a very long list and has various, random chunk size distribution, the cost of its memory management is great.

In our case, the free API of ACE_Malloc has consumed much CPU time.

So I use the ACE_Cascaded_Dynamic_Cached_Allocator class provided in my previous PR to form a allocator hierarchy with various fixed-size achieving the 'infinite' space ability as ACE_Malloc by a cost of O(1).


Main Design

  • Use size-based allocator to reduce the cost of malloc/free

  • Decrease ACE_Cascaded_Dynamic_Cached_Allocator's initial_n_chunks constructor parameter according to the hierarchy level, but
    can be adjusted by a threshold min_initial_n_chunks parameter

  • Increase ACE_Cascaded_Dynamic_Cached_Allocator's chunk_size constructor parameter according to the hierarchy level, it will enable bigger chunks can be malloced

2. using instead of typedef
2、make simple for statement at one line
3、add the pool_sum API for component transparency
4、move pool_depth API from INL file to source file for its complexity
2、modify the test case to use lock strategy, that will more likely find some compiling error than free lock
delete defence codes for strong exception guarantee
2、delete defensive codes for resize call when exception
1、right const
2、pointer var declaration
sync from cascadedAllocator for coding style
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement needs review Needs to be reviewed
Development

Successfully merging this pull request may close these issues.

3 participants