-
Notifications
You must be signed in to change notification settings - Fork 509
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
new scheduler from RFC 5 #746
Merged
Merged
Changes from all commits
Commits
Show all changes
33 commits
Select commit
Hold shift + click to select a range
5d5301b
adjust sleep module API to have an `IdleState` object
nikomatsakis bb59970
port to the new log api
nikomatsakis 2442f67
remove JobPoppedRhs event and register JobPopped from take_local_job
nikomatsakis 2458fee
remove pure "debug" events; this lowers overhead of enabling logging
nikomatsakis cddc265
add --skip-bridge option to life
nikomatsakis 2803c59
add new thread-pool
nikomatsakis 0b31522
document the new logging infrastructure more accurately
nikomatsakis 0713753
Read all SpinLatch fields before we call set()
cuviper cbd484c
Keep the registry alive for a cross-pool SpinLatch
cuviper 90da62d
apply cargo fmt
nikomatsakis 30f5928
add missing lifetime annotation
nikomatsakis b8017a3
update to crossbeam-channel 0.4
cuviper e2fc62e
Update rayon-core/src/registry.rs
nikomatsakis c554e94
add warning comments
nikomatsakis 0253df0
add some comments explaining what is going on in a bit more depth.
nikomatsakis 4619d34
[WIP] start adding comments
nikomatsakis d511364
adopt the "ignore rollect, even-odd JEC" design
nikomatsakis e460cc4
use usize instead of u16
nikomatsakis 8a99d66
rename JOBS to JEC, comment constants
nikomatsakis 2c22c80
rename from INVALID to MAX
nikomatsakis 908e137
WIP: rework to permit rollover at arbitrary points
nikomatsakis 1222cbe
check one last time for injected jobs before sleep
nikomatsakis 2124e83
rename "raw idle" to "inactive"
nikomatsakis 5d89960
begin updating README
nikomatsakis d59dcd6
simplified JEC scheme
nikomatsakis 490a39f
prep work for usize JEC
nikomatsakis 71d214e
change to AtomicUsize
nikomatsakis 700061b
document bit layout correctly
nikomatsakis 76ce5f5
Add #[inline] to tiny counter/latch methods
cuviper a0efb4a
transition to even/odd scheme
nikomatsakis c3a5304
Correct the bit test in JobsEventCounter::is_sleepy
cuviper 96ba9ef
inline more Counter methods
cuviper ed6a5f7
Update ci/compat-Cargo.lock
cuviper File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's slightly disappointing to add a dependency just for usually-disabled logging, but I guess it doesn't add much since we're already invested in crossbeam. I also see that we can't just use
std::sync::mpsc
for that as it's!Sync
.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My original intention was to collect the events in per-thread queues and then fire them off somewhere central only every once in a while, but I decided to "just try" crossbeam-channel and see how it performs. It turned out to perform pretty well and logging had no observable impact on performance. Later I found that in some use cases it performed less well and does have an observable impact. Maybe I should swap this out for
Mutex<Channel>
and we can revisit later?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@nikomatsakis The
tracing
crate might help here.