[freenet-cvs] r11364 - in trunk/apps/load-balancing-sims/phase7/sim: . handlers

mrogers at freenetproject.org mrogers at freenetproject.org
Tue Dec 12 23:39:17 UTC 2006


Author: mrogers
Date: 2006-12-12 23:39:16 +0000 (Tue, 12 Dec 2006)
New Revision: 11364

Modified:
   trunk/apps/load-balancing-sims/phase7/sim/Node.java
   trunk/apps/load-balancing-sims/phase7/sim/Sim.java
   trunk/apps/load-balancing-sims/phase7/sim/handlers/ChkInsertHandler.java
   trunk/apps/load-balancing-sims/phase7/sim/handlers/ChkRequestHandler.java
   trunk/apps/load-balancing-sims/phase7/sim/handlers/MessageHandler.java
   trunk/apps/load-balancing-sims/phase7/sim/handlers/RequestHandler.java
   trunk/apps/load-balancing-sims/phase7/sim/handlers/SskInsertHandler.java
   trunk/apps/load-balancing-sims/phase7/sim/handlers/SskRequestHandler.java
Log:
Static counters for success and failure

Modified: trunk/apps/load-balancing-sims/phase7/sim/Node.java
===================================================================
--- trunk/apps/load-balancing-sims/phase7/sim/Node.java	2006-12-12 17:31:40 UTC (rev 11363)
+++ trunk/apps/load-balancing-sims/phase7/sim/Node.java	2006-12-12 23:39:16 UTC (rev 11364)
@@ -23,6 +23,11 @@
 	public final static double MAX_DELAY = 2.0; // Reject all, seconds
 	public final static double HIGH_DELAY = 1.0; // Reject some, seconds
 	
+	// Statistics (for requests and inserts combined)
+	public static int succeededLocally = 0;
+	public static int succeededRemotely = 0;
+	public static int failed = 0;
+	
 	public double location; // Routing location
 	public NetworkInterface net;
 	private HashMap<Integer,Peer> peers; // Look up a peer by its address
@@ -314,7 +319,10 @@
 		// If the data is in the store, return it
 		if (chkStore.get (r.key)) {
 			if (LOG) log ("key " + r.key + " found in CHK store");
-			if (prev == null) log (r + " succeeded locally");
+			if (prev == null) {
+				if (LOG) log (r + " succeeded locally");
+				succeededLocally++;
+			}
 			else {
 				prev.sendMessage (new ChkDataFound (r.id));
 				for (int i = 0; i < 32; i++)
@@ -327,7 +335,10 @@
 		// If the data is in the cache, return it
 		if (chkCache.get (r.key)) {
 			if (LOG) log ("key " + r.key + " found in CHK cache");
-			if (prev == null) log (r + " succeeded locally");
+			if (prev == null) {
+				if (LOG) log (r + " succeeded locally");
+				succeededLocally++;
+			}
 			else {
 				prev.sendMessage (new ChkDataFound (r.id));
 				for (int i = 0; i < 32; i++)
@@ -381,7 +392,10 @@
 		Integer data = sskStore.get (r.key);
 		if (pub && data != null) {
 			if (LOG) log ("key " + r.key + " found in SSK store");
-			if (prev == null) log (r + " succeeded locally");
+			if (prev == null) {
+				if (LOG) log (r + " succeeded locally");
+				succeededLocally++;
+			}
 			else {
 				prev.sendMessage (new SskDataFound (r.id,data));
 				if (r.needPubKey)
@@ -396,7 +410,10 @@
 		data = sskCache.get (r.key);
 		if (pub && data != null) {
 			if (LOG) log ("key " + r.key + " found in SSK cache");
-			if (prev == null) log (r + " succeeded locally");
+			if (prev == null) {
+				if (LOG) log (r + " succeeded locally");
+				succeededLocally++;
+			}
 			else {
 				prev.sendMessage (new SskDataFound (r.id,data));
 				if (r.needPubKey)

Modified: trunk/apps/load-balancing-sims/phase7/sim/Sim.java
===================================================================
--- trunk/apps/load-balancing-sims/phase7/sim/Sim.java	2006-12-12 17:31:40 UTC (rev 11363)
+++ trunk/apps/load-balancing-sims/phase7/sim/Sim.java	2006-12-12 23:39:16 UTC (rev 11364)
@@ -1,7 +1,7 @@
 package sim;
 import sim.generators.SimplePublisher;
 
-class Sim
+class Sim implements EventTarget
 {
 	private final int NODES = 100; // Number of nodes
 	private final int DEGREE = 5; // Average degree
@@ -10,7 +10,7 @@
 	private final double LATENCY = 0.1; // Latency of all links in seconds
 	private Node[] nodes;
 	
-	public Sim (double rate)
+	public void run (double rate)
 	{
 		Network.reorder = true;
 		Network.lossRate = 0.001;
@@ -36,9 +36,14 @@
 				if (pub.addReader (nodes[index])) readers++;
 			}
 		}
+		// Reset the counters after the first hour
+		Event.schedule (this, 3600.0, RESET_COUNTERS, null);
 		// Run the simulation
 		Event.duration = 10800.0;
 		Event.run();
+		// Print the copiously detailed results
+		System.out.println (Node.succeededLocally + " "
+			+ Node.succeededRemotely + " " + Node.failed);
 	}
 	
 	// Return the lattice distance between a and b
@@ -84,6 +89,17 @@
 		Node.useBackoff = Boolean.parseBoolean (args[2]);
 		Node.useThrottle = Boolean.parseBoolean (args[3]);
 		if (load <= 0.0) usage();
-		new Sim (load / 60.0);
+		new Sim().run (load / 60.0);
 	}
+	
+	public void handleEvent (int type, Object data)
+	{
+		if (type == RESET_COUNTERS) {
+			Node.succeededLocally = 0;
+			Node.succeededRemotely = 0;
+			Node.failed = 0;
+		}
+	}
+	
+	private final static int RESET_COUNTERS = 1;
 }

Modified: trunk/apps/load-balancing-sims/phase7/sim/handlers/ChkInsertHandler.java
===================================================================
--- trunk/apps/load-balancing-sims/phase7/sim/handlers/ChkInsertHandler.java	2006-12-12 17:31:40 UTC (rev 11363)
+++ trunk/apps/load-balancing-sims/phase7/sim/handlers/ChkInsertHandler.java	2006-12-12 23:39:16 UTC (rev 11364)
@@ -116,7 +116,8 @@
 		if (searchState != ACCEPTED && LOG)
 			node.log (ir + " out of order");
 		if (prev == null) {
-			node.log (this + " succeeded");
+			if (LOG) node.log (this + " succeeded remotely");
+			Node.succeededRemotely++;
 			node.increaseSearchRate();
 		}
 		else prev.sendMessage (ir); // Forward the message
@@ -125,8 +126,11 @@
 
 	protected void sendReply()
 	{
+		// We count this as a remote success because the insert has
+		// run out of hops, so it must have left the node at some point
 		if (prev == null) {
-			node.log (this + " succeeded");
+			if (LOG) node.log (this + " succeeded remotely");
+			Node.succeededRemotely++;
 			node.increaseSearchRate();
 		}
 		else prev.sendMessage (new InsertReply (id));

Modified: trunk/apps/load-balancing-sims/phase7/sim/handlers/ChkRequestHandler.java
===================================================================
--- trunk/apps/load-balancing-sims/phase7/sim/handlers/ChkRequestHandler.java	2006-12-12 17:31:40 UTC (rev 11363)
+++ trunk/apps/load-balancing-sims/phase7/sim/handlers/ChkRequestHandler.java	2006-12-12 23:39:16 UTC (rev 11364)
@@ -47,7 +47,8 @@
 		if (blocksReceived == 32) {
 			node.cacheChk (key);
 			if (prev == null) {
-				node.log (this + "succeeded");
+				if (LOG) node.log (this+ " succeeded remotely");
+				Node.succeededRemotely++;
 				node.increaseSearchRate();
 			}
 			finish();
@@ -72,7 +73,8 @@
 		if (blocksReceived == 32 && searchState == TRANSFERRING) {
 			node.cacheChk (key);
 			if (prev == null) {
-				node.log (this + " succeeded");
+				if (LOG) node.log (this+ " succeeded remotely");
+				Node.succeededRemotely++;
 				node.increaseSearchRate();
 			}
 			finish();

Modified: trunk/apps/load-balancing-sims/phase7/sim/handlers/MessageHandler.java
===================================================================
--- trunk/apps/load-balancing-sims/phase7/sim/handlers/MessageHandler.java	2006-12-12 17:31:40 UTC (rev 11363)
+++ trunk/apps/load-balancing-sims/phase7/sim/handlers/MessageHandler.java	2006-12-12 23:39:16 UTC (rev 11364)
@@ -69,7 +69,8 @@
 		if (next == null) {
 			if (LOG) node.log ("route not found for " + this);
 			if (prev == null) {
-				node.log (this + " failed (rnf)");
+				if (LOG) node.log (this + " failed (rnf)");
+				Node.failed++;
 				node.increaseSearchRate(); // Yes, increase
 			}
 			else prev.sendMessage (new RouteNotFound (id, htl));
@@ -181,7 +182,8 @@
 		p.localRejectedOverload(); // Back off from p
 		// Tell the sender to slow down
 		if (prev == null) {
-			node.log (this + " failed (search)");
+			if (LOG) node.log (this + " failed (search)");
+			Node.failed++;
 			node.decreaseSearchRate();
 		}
 		else prev.sendMessage (new RejectedOverload (id, false));

Modified: trunk/apps/load-balancing-sims/phase7/sim/handlers/RequestHandler.java
===================================================================
--- trunk/apps/load-balancing-sims/phase7/sim/handlers/RequestHandler.java	2006-12-12 17:31:40 UTC (rev 11363)
+++ trunk/apps/load-balancing-sims/phase7/sim/handlers/RequestHandler.java	2006-12-12 23:39:16 UTC (rev 11364)
@@ -30,14 +30,20 @@
 	{
 		if (searchState != ACCEPTED && LOG)
 			node.log (dnf + " out of order");
-		if (prev == null) node.log (this + " failed (dnf)");
+		if (prev == null) {
+			if (LOG) node.log (this + " failed (dnf)");
+			Node.failed++;
+		}
 		else prev.sendMessage (dnf); // Forward the message
 		finish();
 	}
 	
 	protected void sendReply()
 	{
-		if (prev == null) node.log (this + " failed (dnf)");
+		if (prev == null) {
+			if (LOG) node.log (this + " failed (dnf)");
+			Node.failed++;
+		}
 		else prev.sendMessage (new DataNotFound (id));
 	}
 	
@@ -57,7 +63,10 @@
 	{
 		if (searchState != TRANSFERRING) return;
 		if (LOG) node.log (this + " transfer timeout from " + p);
-		if (prev == null) node.log (this + " failed (xfer)");
+		if (prev == null) {
+			if (LOG) node.log (this + " failed (xfer)");
+			Node.failed++;
+		}
 		finish();
 	}
 	

Modified: trunk/apps/load-balancing-sims/phase7/sim/handlers/SskInsertHandler.java
===================================================================
--- trunk/apps/load-balancing-sims/phase7/sim/handlers/SskInsertHandler.java	2006-12-12 17:31:40 UTC (rev 11363)
+++ trunk/apps/load-balancing-sims/phase7/sim/handlers/SskInsertHandler.java	2006-12-12 23:39:16 UTC (rev 11364)
@@ -107,7 +107,8 @@
 		if (searchState != ACCEPTED && LOG)
 			node.log (ir + " out of order");
 		if (prev == null) {
-			node.log (this + " succeeded");
+			if (LOG) node.log (this + " succeeded remotely");
+			Node.succeededRemotely++;
 			node.increaseSearchRate();
 		}
 		else prev.sendMessage (ir); // Forward the message
@@ -116,8 +117,11 @@
 	
 	protected void sendReply()
 	{
+		// We count this as a remote success because the insert has
+		// run out of hops, so it must have left the node at some point
 		if (prev == null) {
-			node.log (this + " succeeded");
+			if (LOG) node.log (this + " succeeded remotely");
+			Node.succeededRemotely++;
 			node.increaseSearchRate();
 		}
 		else prev.sendMessage (new InsertReply (id));

Modified: trunk/apps/load-balancing-sims/phase7/sim/handlers/SskRequestHandler.java
===================================================================
--- trunk/apps/load-balancing-sims/phase7/sim/handlers/SskRequestHandler.java	2006-12-12 17:31:40 UTC (rev 11363)
+++ trunk/apps/load-balancing-sims/phase7/sim/handlers/SskRequestHandler.java	2006-12-12 23:39:16 UTC (rev 11364)
@@ -47,7 +47,8 @@
 		dataFound = df;
 		if (pubKey == null) return; // Keep waiting
 		if (prev == null) {
-			node.log (this + " succeeded");
+			if (LOG) node.log (this + " succeeded remotely");
+			Node.succeededRemotely++;
 			node.increaseSearchRate();
 		}
 		else {
@@ -66,7 +67,8 @@
 		pubKey = pk;
 		if (dataFound == null) return; // Keep waiting
 		if (prev == null) {
-			node.log (this + " succeeded");
+			if (LOG) node.log (this + " succeeded remotely");
+			Node.succeededRemotely++;
 			node.increaseSearchRate();
 		}
 		else {




More information about the cvs mailing list