Klibs (x86_64): add User-Managed Concurrency Groups #1996
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This changeset adds a new klib that implements UMCG (the Linux kernel feature proposed by Google in order to support user-mode threading).
The implementation in Nanos is compatible with the Linux kernel code at https://www.spinics.net/lists/kernel/msg4740112.html.
A new runtime test has been added to exercise this feature. Beside various test cases, this program can be run in demo mode (with the
-d
command line option), which is inspired by the code at https://lore.kernel.org/lkml/[email protected]/.In addition, it contains a set of performance tests with which the performance of thread switching with UMCG can be evaluated and compared with traditional threading implementations:
-u
option: UMCG-based performance test-f
option: futex-based performance test-c
option: condition variable-based performance testThe performance test creates a worker thread and continuously switches between the main thread and the worker thread, measuring how many main->worker->main thread switching cycles can be executed per unit of time. The test by default runs for 10 seconds, but the duration can be modified with the
-t
command line option.Performance tests run in a KVM instance with a single vCPU showed the following figures:
The first 2 commits refactor existing code in order to allow defining arch-specific klibs and runtime tests, and to remove code duplication in the test suite.