[ 
https://issues.apache.org/jira/browse/HADOOP-4797?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12656122#action_12656122
 ] 

Raghu Angadi commented on HADOOP-4797:
--------------------------------------

Thanks Konstantin.

Both are already tested (big thanks to Koji). Not only it does not degrade 
performance, it improves it (as noted in comment on Dec 8th) for large 
responses.  For e.g. if the response is 10MB :
  - without this patch :
       --  it might take say 100 write operations (each time buffer size 
decreasing slightly) 
       -- That implies JVM copies all 10MB  whopping 50 times !!.

 - with this patch :
       -- it will take 1250 write system calls (each writing 8KB) 
       -- But there is only one copy made.
       -- 8KB limit can be increased to a larger one, though not required. RPC 
server is not meant for serving very large responses anyway.
       -- In my experience most people underestimate cost of buffer copies and 
over estimate cost of system call.
     
Regd the tests : 
    - It was shown that if you list a directory in a loop, each time creating a 
new directory there, the total virtual memory taken by NN shoots up. This patch 
does prevent that.
    - In the same test, NN does take less CPU. But one of the stats missing was 
how fast we were able to list and create the directories. 
           -- I think actual benefit is even better the raw CPU in the test 
shows.


> RPC Server can leave a lot of direct buffers 
> ---------------------------------------------
>
>                 Key: HADOOP-4797
>                 URL: https://issues.apache.org/jira/browse/HADOOP-4797
>             Project: Hadoop Core
>          Issue Type: Bug
>          Components: ipc
>    Affects Versions: 0.17.0
>            Reporter: Raghu Angadi
>            Assignee: Raghu Angadi
>            Priority: Blocker
>             Fix For: 0.18.3, 0.19.1, 0.20.0
>
>         Attachments: HADOOP-4797-branch-18.patch, 
> HADOOP-4797-branch-18.patch, HADOOP-4797-branch-18.patch, HADOOP-4797.patch
>
>
> RPC server unwittingly can soft-leak direct buffers. One observed case is 
> that one of the namenodes at Yahoo took 40GB of virtual memory though it was 
> configured for 24GB memory. Most of the memory outside Java heap expected to 
> be direct buffers. This shown to be because of how RPC server reads and 
> writes serialized data. The cause and proposed fix are in following comment.
>   

-- 
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