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

Liang Xie commented on HDFS-1605:
---------------------------------

we observed this hotspot in our production cluster these days. Most of the 
waiting lock threads jsut like below:

19205.637:"IPC Server handler 27 on 12600" daemon prio=10 
tid=0x00007f82fc1e5750 nid=0x4d9b waiting for monitor entry [0x00007f821fe78000]
19205.637-   java.lang.Thread.State: BLOCKED (on object monitor)
19205.637-      at 
org.apache.hadoop.hdfs.DFSInputStream.getFileLength(DFSInputStream.java:242)
19205.637-      - waiting to lock <0x000000044e20d238> (a 
org.apache.hadoop.hdfs.DFSInputStream)
19205.637-      at 
org.apache.hadoop.hdfs.DFSInputStream.read(DFSInputStream.java:982)
19205.637-      at 
org.apache.hadoop.fs.FSDataInputStream.read(FSDataInputStream.java:73)
19205.637-      at 
org.apache.hadoop.hbase.io.hfile.HFileBlock$AbstractFSReader.readAtOffset(HFileBlock.java:1393)

and the lock holder is doing the right read things that time.

> Convert DFSInputStream synchronized sections to a ReadWrite lock
> ----------------------------------------------------------------
>
>                 Key: HDFS-1605
>                 URL: https://issues.apache.org/jira/browse/HDFS-1605
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>          Components: hdfs-client
>            Reporter: dhruba borthakur
>            Assignee: dhruba borthakur
>         Attachments: DFSClientRWlock.1.txt, DFSClientRWlock.3.txt
>
>
> Hbase does concurrent preads from multiple threads to different blocks of the 
> same hdfs file. Each of these pread calls invoke 
> DFSInputStream.getFileLength() and DFSInputStream.getBlockAt(). These methods 
> are "synchronized", thus causing all the concurrent threads to serialize. It 
> would help performance to convert this to a Read/Write lock



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to