[ 
https://issues.apache.org/jira/browse/HDFS-16433?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Yuanbo Liu updated HDFS-16433:
------------------------------
    Description: 
The code in IncrementalBlockReportManager.java
{code:java}
synchronized void waitTillNextIBR(long waitTime) {
  if (waitTime > 0 && !sendImmediately()) {
    try {
      wait(ibrInterval > 0 && ibrInterval < waitTime? ibrInterval: waitTime);
    } catch (InterruptedException ie) {
      LOG.warn(getClass().getSimpleName() + " interrupted");
    }
  }
} {code}
We can see that wait(waitime) will hold synchronized, if ibr interval is 
enabled or heartbeat time is not reached. The lock will block 
notifyNamenodeBlock function which is widely used in 
deleting/creating/finalizing/opening blocks, then the speed of DataNode IO will 
slow down. Here is the graph of blocking relationship
!image-2022-01-21-22-52-52-912.png|width=976,height=299!

 

 

  was:
The code in IncrementalBlockReportManager.java
{code:java}
synchronized void waitTillNextIBR(long waitTime) {
  if (waitTime > 0 && !sendImmediately()) {
    try {
      wait(ibrInterval > 0 && ibrInterval < waitTime? ibrInterval: waitTime);
    } catch (InterruptedException ie) {
      LOG.warn(getClass().getSimpleName() + " interrupted");
    }
  }
} {code}
We can see that wait(waitime) will hold synchronized, if ibr interval is 
enabled or heartbeat time is not reached. Then the lock will block 
notifyNamenodeBlock function which is widely used in 
deleting/creating/finalizing/opening blocks, then the speed of DataNode IO will 
slow down. Here is the graph of blocking relationship
!image-2022-01-21-22-52-52-912.png|width=976,height=299!

 

 


> The synchronized lock of IncrementalBlockReportManager will slow down the 
> speed of creating/deleting/finalizing/opening block
> -----------------------------------------------------------------------------------------------------------------------------
>
>                 Key: HDFS-16433
>                 URL: https://issues.apache.org/jira/browse/HDFS-16433
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>            Reporter: Yuanbo Liu
>            Priority: Critical
>         Attachments: image-2022-01-21-22-52-52-912.png
>
>
> The code in IncrementalBlockReportManager.java
> {code:java}
> synchronized void waitTillNextIBR(long waitTime) {
>   if (waitTime > 0 && !sendImmediately()) {
>     try {
>       wait(ibrInterval > 0 && ibrInterval < waitTime? ibrInterval: waitTime);
>     } catch (InterruptedException ie) {
>       LOG.warn(getClass().getSimpleName() + " interrupted");
>     }
>   }
> } {code}
> We can see that wait(waitime) will hold synchronized, if ibr interval is 
> enabled or heartbeat time is not reached. The lock will block 
> notifyNamenodeBlock function which is widely used in 
> deleting/creating/finalizing/opening blocks, then the speed of DataNode IO 
> will slow down. Here is the graph of blocking relationship
> !image-2022-01-21-22-52-52-912.png|width=976,height=299!
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org

Reply via email to