Adds metrics on how different queues have different thread amounts allocated to them #37
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.
Problem
Latency is great to measure workloads that are starving for resources, but some workloads are critical and we want to be able to see that a problem is forming before it starts.
How can we measure how can we measure if a given queue is about to "starve" for resources?
Idea
Measure how busy are the threads able to process a given queue.
If many threads are available then everything is fine, but once more and more threads become busy less available capacity we have for the queue until we reach a point where all threads are busy and we start to form a backlog.
Proposed Solution
Extract metrics from
::Sidekiq::ProcessSet
.::Sidekiq::ProcessSet
gives a set of Process. Each process has the list of queues it's processing and how busy its threads are. From it we can just aggregate the information.