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

Cooperative scheduler #918

Closed
wants to merge 1 commit into from
Closed

Cooperative scheduler #918

wants to merge 1 commit into from

Conversation

slfritchie
Copy link
Contributor

Introduce a cooperative-style scheduler for testing use. Test code using threads must opt into using the cooperative scheduler by explicitly registering themselves with the scheduler, removing themselves from the scheduler, etc. All code must be annotated with explicit calls to CoopScheduler.sched(), similar to Thread.yield() but with 100% deterministic/repeatable thread execution & interleaving.

Deterministic coop thread scheduling is managed via a 'schedule', which is a list or array of thread numbers to execute in turn. In cases where the schedule is shorter than the total number of sched() calls, the array is re-used ("wrap-around" style) to simulate a schedule of infinite length.

From squash & rebase of branch
aspectJ-experiment+coop-sched3+recreate-coop-scenario+alt-alt-gh802-reproducer
at commit 334267e.

Unit test classes omitted due to conflicts (TODO add to later PR):

CONFLICT (content): Merge conflict in test/src/test/java/org/corfudb/runtime/concurrent/MapsAsMQsTest.java
CONFLICT (content): Merge conflict in test/src/test/java/org/corfudb/runtime/collections/SMRMapEntrySetTest.java
@coveralls
Copy link

Coverage Status

Coverage decreased (-0.03%) to 69.492% when pulling 151fc94 on coop-scheduler into 9de87f2 on master.

@corfudb-performance
Copy link
Collaborator

Results automatically generated by CorfuDB Benchmark Framework to assess the performance of this pull request for commit 151fc94.

*** 0.0% transaction FAILURE rate for NonConflictingTx+Scan workload, 1 threads, Disk mode
*** 0.0% transaction FAILURE rate for NonConflictingTx+Scan workload, 5 threads, Disk mode
*** 0.0% transaction FAILURE rate for NonConflictingTx+Scan workload, 10 threads, Disk mode
*** 0.0% transaction FAILURE rate for NonConflictingTx+Iterator workload, 1 threads, Disk mode
*** 0.0% transaction FAILURE rate for NonConflictingTx+Iterator workload, 5 threads, Disk mode
*** 0.0% transaction FAILURE rate for NonConflictingTx+Iterator workload, 10 threads, Disk mode
*** 0.0% transaction FAILURE rate for NonConflictingTx workload, 1 threads, Disk mode
*** 0.0% transaction FAILURE rate for NonConflictingTx workload, 5 threads, Disk mode
*** 0.0% transaction FAILURE rate for NonConflictingTx workload, 10 threads, Disk mode

An interactive dashboard with Pull Request Performance Metrics for ALL cluster types and numbers of threads in run, is available at:
Pull Request #918 Graphs

@xnull
Copy link
Collaborator

xnull commented Sep 11, 2019

outdated and huge

@xnull xnull closed this Sep 11, 2019
@xnull xnull deleted the coop-scheduler branch September 11, 2019 19:54
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.

None yet

4 participants