hadoop-common-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Brice Arnould (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HADOOP-3524) JobTracker's processHeartbeat() should not call System.currentTimeMillis() everytime
Date Tue, 10 Jun 2008 13:46:45 GMT

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

Brice Arnould commented on HADOOP-3524:
---------------------------------------

> I ran Brice's test and following are the results
OK, I must have misunderstood something.
I'm going to explain my understing of this subject, but it's likely that I missed something.
Anyway, we'll see ^_^

A first thing is that my tests do not compare the time of both approaches, but the time needed
to call currentTimeMillis to the time needed to access a field.

And it was more "for fun", because my impressions is that currentTimeMillis() already takes
a negligible time. Even if we could make it to take 0 picoseconds, we would spare about 14ms
every 10000 calls. That, is arround 14ms every 1 minute and 16 seconds, at the extreme rate
of 130 request by second. And that is the extreme situation.
There is a need to make things more parallel in the JobTracker, but in my opinion currentTimeMillis()
do not worth it.

That being said, I probably missed something :-P

> JobTracker's processHeartbeat() should not call System.currentTimeMillis() everytime
> ------------------------------------------------------------------------------------
>
>                 Key: HADOOP-3524
>                 URL: https://issues.apache.org/jira/browse/HADOOP-3524
>             Project: Hadoop Core
>          Issue Type: Improvement
>          Components: mapred
>            Reporter: Amar Kamat
>         Attachments: CurrentTimeCost.java
>
>
> Consider the following
> {code:title=JobTracker.java|borderStyle=solid}
> private synchronized boolean processHeartbeat(
>                                                 TaskTrackerStatus trackerStatus, boolean
initialContact) {
>     String trackerName = trackerStatus.getTrackerName();
>     trackerStatus.setLastSeen(System.currentTimeMillis());
> {code}
> Here, the call to {{System.currentTimeMillis()}} on every call to {{JobTracker.processHeartbeat()}}
might prove costly. While testing/benchmarking HADOOP-2119, we recorded that the JobTracker
was able to serve ~130 tasks/sec. So that means we might make ~130 calls to {{System.currentTimeMillis()}}
per second. I think in these cases (_last-seen-status_ etc) such a high level of accuracy
in terms of timestamp is unnecessary and hence can be avoided.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message