-
Notifications
You must be signed in to change notification settings - Fork 134
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
qos-adjuster: add waiting queue and state; polling
Motivation: In the current code committed for the QoS Adjuster service, staging is throttled in that a waiting staging request continues to occupy a running slot (which are limited to 200), and acts synchronously by doing a get() on the ListenableFuture returned from the PinManager. This, however, will not play well with the future incorporation of the restore optimization scheduling. What we need is to allow the request to change to a WAITING state and not to hold onto the execution thread, allowing for greater throughput. Modification: A new state, WAITING, occurs when the staging adjuster receives its reply from PinManager. It is then placed on the WAITING queue, liberating its RUNNING slot for other adjuster tasks. Waiting adjuster tasks are 'polled' (which means doing future.isDone() on their futures and triggering the completion handler is this is true) by the main adjuster map thread just before it checks the running tasks for completion (once a minute by default). Result: The adjuster can now accept an arbitrary number (governed only by memory limitations) of concurrently WAITING tasks, allowing all such staging requests to pass on through to the restore scheduling (presumably Pin Manager). Note that the QoSVerifier (yet to be reviewed) has similarly been modified to fit this model. Target: master Patch: https://rb.dcache.org/r/13074/ Acked-by: Tigran
- Loading branch information
Showing
5 changed files
with
100 additions
and
45 deletions.
There are no files selected for viewing
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
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
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