Previously RPC request scheduler in HBase had 2 modes in could operate in:
https://translate.google.com/?source=gtx
- simple FIFO
- "partial" deadline, where deadline constraints are only imposed on long-running scan requests.
This patch adds new type of scheduler to HBase, based on the research around controlled delay (CoDel) algorithm [1], used in networking to combat bufferbloat, as well as some analysis on generalizing it to generic request queues [2]. The purpose of that work is to prevent long standing call queues caused by discrepancy between request rate and available throughput, caused by kernel/disk IO/networking stalls.
New RPC scheduler could be enabled by setting hbase.ipc.server.callqueue.type=codel in configuration. Several additional params allow to configure algorithm behavior -
hbase.ipc.server.callqueue.codel.target.delay
hbase.ipc.server.callqueue.codel.interval
hbase.ipc.server.callqueue.codel.lifo.threshold
[1] Controlling Queue Delay / A modern AQM is just one piece of the solution to bufferbloat.
http://queue.acm.org/detail.cfm?id=2209336
[2] Fail at Scale / Reliability in the face of rapid change.
http://queue.acm.org/detail.cfm?id=2839461