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

Various changes to improve startup times for lots of threads #570

Closed
wants to merge 14 commits into from

Conversation

mjp41
Copy link
Member

@mjp41 mjp41 commented Nov 2, 2022

While profiling starting a lot of threads, I found a few bits that could be improved. This PR attempts to reduce the contention on startup. By

  • Reducing work under locks
    • Removing a lock from the pool implementation
    • Optimising the buddy allocator to only look as high as it has blocks of memory
    • Making the global meta range not perform madvise under a lock.
  • Implementing a proper MCS queue lock

@mjp41 mjp41 requested a review from nwf-msr November 2, 2022 20:33
src/snmalloc/backend_helpers/buddy.h Outdated Show resolved Hide resolved
src/snmalloc/backend/backend.h Show resolved Hide resolved
@mjp41 mjp41 force-pushed the startup branch 3 times, most recently from a409040 to 1c8902d Compare November 3, 2022 11:24
@mjp41
Copy link
Member Author

mjp41 commented Nov 3, 2022

I have dropped the changes to the Pool implementation as they seemed to be hitting a miscompilation on CHERI.

src/snmalloc/backend_helpers/buddy.h Outdated Show resolved Hide resolved
src/snmalloc/backend_helpers/buddy.h Show resolved Hide resolved
src/snmalloc/backend/backend.h Show resolved Hide resolved
mjp41 added 9 commits March 16, 2023 09:49
The buddy allocator doesn't need to look at sizes above the current
highest size. This commit tracks the highest block that is stored in the
buddy allocator.
Round meta-data up to large size

This change means we don't have to madvise/commit memory holding a lock.
This was showing up in profiles of with high-thread counts on very short
workloads.
@mjp41
Copy link
Member Author

mjp41 commented Mar 23, 2023

I am closing this in favour of a few smaller PR with defined changes. It is not clear the MCS queue lock or the changes to the metadata in this PR make sense.

@mjp41 mjp41 closed this Mar 23, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants