[ 
https://issues.apache.org/jira/browse/HDFS-918?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12834274#action_12834274
 ] 

Zlatin Balevsky commented on HDFS-918:
--------------------------------------

Jay,

the selector thread is likely busylooping because select() will return 
immediately if any channels are writable.  Cancelling takes a select() call and 
you cannot re-register the channel until the key has been properly cancelled 
and removed from the selector key sets.  It is easier to turn write interest 
off before passing the writable channel to the threadpool.  When the threadpool 
is done with transferTo(), pass the channel back to the select()-ing thread and 
instruct it to turn write interest back on.  (Do not change the interest 
outside the selecting thread.)

Hope this helps.


> Use single Selector and small thread pool to replace many instances of 
> BlockSender for reads
> --------------------------------------------------------------------------------------------
>
>                 Key: HDFS-918
>                 URL: https://issues.apache.org/jira/browse/HDFS-918
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>          Components: data-node
>            Reporter: Jay Booth
>             Fix For: 0.22.0
>
>         Attachments: hdfs-918-20100201.patch, hdfs-918-20100203.patch, 
> hdfs-918-20100211.patch, hdfs-multiplex.patch
>
>
> Currently, on read requests, the DataXCeiver server allocates a new thread 
> per request, which must allocate its own buffers and leads to 
> higher-than-optimal CPU and memory usage by the sending threads.  If we had a 
> single selector and a small threadpool to multiplex request packets, we could 
> theoretically achieve higher performance while taking up fewer resources and 
> leaving more CPU on datanodes available for mapred, hbase or whatever.  This 
> can be done without changing any wire protocols.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to