[ 
https://issues.apache.org/jira/browse/HBASE-11724?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14095731#comment-14095731
 ] 

Jonathan Hsieh commented on HBASE-11724:
----------------------------------------

Without reading the code, this is ambiguous - what does 0 or 1 specifically 
mean?  what is the default setting?  does 0 mean get+scan shared, and 1 mean 
separate?  is it a float?  (it is)  I it a sub share of 
h.i.s.callqueue.read.share or is it at the "same level"? (it is not).  

(related question - is hbase.ipc.server.callqueue.read.share a float or is it 
specifically 0, 0.5 and 1.0 values?)

{code}
+    <name>hbase.ipc.server.callqueue.scan.share</name>
+    <value>0</value>
+    <description>Used in conjunction with hbase.ipc.server.callqueue.read.share
+      will split the read call queues into small-read and long-read queues.
+      A value of 0 or 1 indicate to use the same set of queues for gets and 
scans.
+    </description>
{code}

can we get to a place where scan or gets receive no share?  What happens then?

{code}
+    int numScanQueues = (int)Math.floor(numReadQueues * scanShare);
+    int scanHandlers = (int)Math.floor(readHandlers * scanShare);
+    if ((numReadQueues - numScanQueues) > 0) {
+      numReadQueues -= numScanQueues;
+      readHandlers -= scanHandlers;
+    } else {
+      numScanQueues = 0;
+      scanHandlers = 0;
+    }
+
     this.writeHandlersCount = Math.max(writeHandlers, numWriteQueues);
     this.readHandlersCount = Math.max(readHandlers, numReadQueues);
+    this.scanHandlersCount = Math.max(scanHandlers, numScanQueues);
     this.numWriteQueues = numWriteQueues;
     this.numReadQueues = numReadQueues;
+    this.numScanQueues = numScanQueues;
{code}

Need some validation to make sure negative values or other silly values throw 
warnings and don't cause problems.
{code}
    String callQueueType = conf.get(CALL_QUEUE_TYPE_CONF_KEY, 
CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE);
     float callqReadShare = conf.getFloat(CALL_QUEUE_READ_SHARE_CONF_KEY, 0);
+    float callqScanShare = conf.getFloat(CALL_QUEUE_SCAN_SHARE_CONF_KEY, 0);
{code}

> Add to RWQueueRpcExecutor the ability to split get and scan handlers
> --------------------------------------------------------------------
>
>                 Key: HBASE-11724
>                 URL: https://issues.apache.org/jira/browse/HBASE-11724
>             Project: HBase
>          Issue Type: New Feature
>          Components: IPC/RPC
>            Reporter: Matteo Bertozzi
>            Assignee: Matteo Bertozzi
>            Priority: Minor
>             Fix For: 2.0.0
>
>         Attachments: HBASE-11724-v0.patch
>
>
> RWQueueRpcExecutor has the devision between reads and writes requests, but we 
> can split also small-reads and long-reads. This can be useful to force a 
> deprioritization of scans on the RS.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to