[ https://issues.apache.org/jira/browse/HADOOP-10282?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14107703#comment-14107703 ]
Chris Li commented on HADOOP-10282: ----------------------------------- Thanks! Up next some minor patches: HADOOP-10283 makes the FairCallQueue more customizable HADOOP-10286 allows for instrumentation of IPC performance for multiple users > Create a FairCallQueue: a multi-level call queue which schedules incoming > calls and multiplexes outgoing calls > -------------------------------------------------------------------------------------------------------------- > > Key: HADOOP-10282 > URL: https://issues.apache.org/jira/browse/HADOOP-10282 > Project: Hadoop Common > Issue Type: Sub-task > Reporter: Chris Li > Assignee: Chris Li > Attachments: HADOOP-10282.patch, HADOOP-10282.patch, > HADOOP-10282.patch, HADOOP-10282.patch > > > The FairCallQueue ensures quality of service by altering the order of RPC > calls internally. > It consists of three parts: > 1. a Scheduler (`HistoryRpcScheduler` is provided) which provides a priority > number from 0 to N (0 being highest priority) > 2. a Multi-level queue (residing in `FairCallQueue`) which provides a way to > keep calls in priority order internally > 3. a Multiplexer (`WeightedRoundRobinMultiplexer` is provided) which provides > logic to control which queue to take from > Currently the Mux and Scheduler are not pluggable, but they probably should > be (up for discussion). > This is how it is used: > // Production > 1. Call is created and given to the CallQueueManager > 2. CallQueueManager requests a `put(T call)` into the `FairCallQueue` which > implements `BlockingQueue` > 3. `FairCallQueue` asks its scheduler for a scheduling decision, which is an > integer e.g. 12 > 4. `FairCallQueue` inserts Call into the 12th queue: > `queues.get(12).put(call)` > // Consumption > 1. CallQueueManager requests `take()` or `poll()` on FairCallQueue > 2. `FairCallQueue` asks its multiplexer for which queue to draw from, which > will also be an integer e.g. 2 > 3. `FairCallQueue` draws from this queue if it has an available call (or > tries other queues if it is empty) > Additional information is available in the linked JIRAs regarding the > Scheduler and Multiplexer's roles. -- This message was sent by Atlassian JIRA (v6.2#6252)