[ 
https://issues.apache.org/jira/browse/MAPREDUCE-2026?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12920442#action_12920442
 ] 

luoli commented on MAPREDUCE-2026:
----------------------------------

hi Scott and Joydeep, what the patch does is really what we have thought, 
moreover, the getCounters method will still consume some cpu time and it will 
still synchronized the JIP, what if we add a call  time interval of 
getCounters? For example, call of getCounters return the result that got like 
ten seconds ago, and if the call time from the last call exceed ten seconds we 
recompute the counters?  Or what if we launch a separate thread to do counters 
compute? These are XiaoKang and I have discussed, what do you think?

> JobTracker.getJobCounters() should not hold JobTracker lock while calling 
> JobInProgress.getCounters()
> -----------------------------------------------------------------------------------------------------
>
>                 Key: MAPREDUCE-2026
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-2026
>             Project: Hadoop Map/Reduce
>          Issue Type: Improvement
>            Reporter: Scott Chen
>            Assignee: Joydeep Sen Sarma
>             Fix For: 0.22.0
>
>         Attachments: 2026.1.patch, MAPREDUCE-2026.txt
>
>
> JobTracker.getJobCounter() will lock JobTracker and call 
> JobInProgress.getCounters().
> JobInProgress.getCounters() can be very expensive because it aggregates all 
> the task counters.
> We found that from the JobTracker jstacks that this method is one of the 
> bottleneck of the JobTracker performance.
> JobInProgress.getCounters() should be able to be called out side the 
> JobTracker lock because it already has JobInProgress lock.
> For example, it is used by jobdetails.jsp without a JobTracker lock.

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