use SCHED_BATCH scheduling priority for indexing threads #537
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 uses
sched_setscheduler(2)
to set the LinuxSCHED_BATCH
policy for indexing threads. This will only work on Linux, on other Posix platforms the implementation ofsetBatchPriority()
will be guarded out by an ifdef (arguably on other Posix systems you could set a nice value as an alternative to usingSCHED_BATCH
).There's a good overview of this feature in sched(7) and some benchmarks comparing it to nice values here. Note that the scheduling policy is a separate concept than nice values, so users can still renice ccls processes.
The motivation for this change is to make ccls work a bit better on my workstation when I'm using other interactive programs (emacs itself, firefox, etc.) but also indexing a large amount of code.