You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by dh...@apache.org on 2008/03/20 18:06:07 UTC

svn commit: r639359 - in /hadoop/core/trunk: CHANGES.txt src/java/org/apache/hadoop/ipc/RPC.java src/java/org/apache/hadoop/ipc/metrics/RpcMetrics.java

Author: dhruba
Date: Thu Mar 20 10:06:02 2008
New Revision: 639359

URL: http://svn.apache.org/viewvc?rev=639359&view=rev
Log:
HADOOP-2886.  Track individual RPC metrics.
(girish vaitheeswaran via dhruba)


Modified:
    hadoop/core/trunk/CHANGES.txt
    hadoop/core/trunk/src/java/org/apache/hadoop/ipc/RPC.java
    hadoop/core/trunk/src/java/org/apache/hadoop/ipc/metrics/RpcMetrics.java

Modified: hadoop/core/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/CHANGES.txt?rev=639359&r1=639358&r2=639359&view=diff
==============================================================================
--- hadoop/core/trunk/CHANGES.txt (original)
+++ hadoop/core/trunk/CHANGES.txt Thu Mar 20 10:06:02 2008
@@ -126,6 +126,9 @@
     HADOOP-2899. [HOD] Cleans up hdfs:///mapredsystem directory after
     deallocation. (Hemanth Yamijala via ddas) 
 
+    HADOOP-2886.  Track individual RPC metrics.
+    (girish vaitheeswaran via dhruba)
+
   OPTIMIZATIONS
 
     HADOOP-2790.  Fixed inefficient method hasSpeculativeTask by removing

Modified: hadoop/core/trunk/src/java/org/apache/hadoop/ipc/RPC.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/java/org/apache/hadoop/ipc/RPC.java?rev=639359&r1=639358&r2=639359&view=diff
==============================================================================
--- hadoop/core/trunk/src/java/org/apache/hadoop/ipc/RPC.java (original)
+++ hadoop/core/trunk/src/java/org/apache/hadoop/ipc/RPC.java Thu Mar 20 10:06:02 2008
@@ -40,6 +40,7 @@
 import org.apache.hadoop.net.NetUtils;
 import org.apache.hadoop.security.UserGroupInformation;
 import org.apache.hadoop.conf.*;
+import org.apache.hadoop.metrics.util.MetricsTimeVaryingRate;
 
 /** A simple RPC mechanism.
  *
@@ -450,7 +451,18 @@
             " procesingTime= " + processingTime);
         rpcMetrics.rpcQueueTime.inc(qTime);
         rpcMetrics.rpcProcessingTime.inc(processingTime);
-        
+
+	MetricsTimeVaryingRate m = rpcMetrics.metricsList.get(call.getMethodName());
+
+	if (m != null) {
+		m.inc(processingTime);
+	}
+	else {
+		rpcMetrics.metricsList.put(call.getMethodName(), new MetricsTimeVaryingRate(call.getMethodName()));
+		m = rpcMetrics.metricsList.get(call.getMethodName());
+		m.inc(processingTime);
+	}
+
         if (verbose) log("Return: "+value);
 
         return new ObjectWritable(method.getReturnType(), value);

Modified: hadoop/core/trunk/src/java/org/apache/hadoop/ipc/metrics/RpcMetrics.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/java/org/apache/hadoop/ipc/metrics/RpcMetrics.java?rev=639359&r1=639358&r2=639359&view=diff
==============================================================================
--- hadoop/core/trunk/src/java/org/apache/hadoop/ipc/metrics/RpcMetrics.java (original)
+++ hadoop/core/trunk/src/java/org/apache/hadoop/ipc/metrics/RpcMetrics.java Thu Mar 20 10:06:02 2008
@@ -27,6 +27,9 @@
 import org.apache.hadoop.metrics.jvm.JvmMetrics;
 import org.apache.hadoop.metrics.util.MetricsTimeVaryingRate;
 
+import java.util.HashMap;
+import java.util.*;
+
 /**
  * 
  * This class is for maintaining  the various RPC statistics
@@ -69,6 +72,9 @@
   public MetricsTimeVaryingRate rpcQueueTime = new MetricsTimeVaryingRate("RpcQueueTime");
   public MetricsTimeVaryingRate rpcProcessingTime = new MetricsTimeVaryingRate("RpcProcessingTime");
   public MetricsTimeVaryingRate rpcDiscardedOps = new MetricsTimeVaryingRate("RpcDiscardedOps");
+
+  public Map <String, MetricsTimeVaryingRate> metricsList = Collections.synchronizedMap(new HashMap<String, MetricsTimeVaryingRate>());
+
   
   
   /**
@@ -78,7 +84,20 @@
     rpcQueueTime.pushMetric(metricsRecord);
     rpcProcessingTime.pushMetric(metricsRecord);
     rpcDiscardedOps.pushMetric(metricsRecord);
-    
+
+    synchronized (metricsList) {
+	// Iterate through the rpcMetrics hashmap to propogate the different rpc metrics.
+	Set keys = metricsList.keySet();
+
+	Iterator keyIter = keys.iterator();
+
+	while (keyIter.hasNext()) {
+		Object key = keyIter.next();
+		MetricsTimeVaryingRate value = metricsList.get(key);
+
+		value.pushMetric(metricsRecord);
+	}
+    }
   }
 
   public void shutdown() {