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

Jonathan Eagles commented on TEZ-3719:
--------------------------------------

I noticed this exact slow down when I was profiling tez recently and 
calculating progress was showing up as a AM scalability and performance issue.
{code}
+        if (v.getState() == VertexState.SUCCEEDED) {
+          progress += 1f;
+        }
         progress += v.getProgress();
{code}

Couple of things. Progress should only be calculated if the vertex is running. 
Since it should be 0 before running and 1 after finished. Also the calculation 
should be in the "else" block. Both VertexImpl#getState and 
VertexImpl#getProgress lock and unlock the readlock. If you are adding logic to 
getProgress to handle the vertex state. You can avoid the double locking. The 
same could be said for the TaskImpl#getState TaskImpl#getProgress calls.

> DAGImpl.computeProgress slows down dispatcher and ipc threads
> -------------------------------------------------------------
>
>                 Key: TEZ-3719
>                 URL: https://issues.apache.org/jira/browse/TEZ-3719
>             Project: Apache Tez
>          Issue Type: Bug
>            Reporter: Rajesh Balamohan
>            Assignee: Gopal V
>         Attachments: dispatcher_holding_lock.png, TEZ-3719.wip.patch, 
> tez_computeProgress_waiting_for_lock.png
>
>




--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to