Author: mrogers
Date: 2006-08-17 15:44:21 +0000 (Thu, 17 Aug 2006)
New Revision: 10162
Modified:
trunk/apps/load-balancing-sims/phase5-coalescing/Node.java
trunk/apps/load-balancing-sims/phase5-coalescing/Peer.java
trunk/apps/load-balancing-sims/phase5-coalescing/Sim.java
trunk/apps/load-balancing-sims/phase5-no-ack-delay/CongestionWindow.java
trunk/apps/load-balancing-sims/phase5-no-ack-delay/Node.java
trunk/apps/load-balancing-sims/phase5-no-ack-delay/Sim.java
Log:
Fixed infinite loop when congestion window became negative
Modified: trunk/apps/load-balancing-sims/phase5-coalescing/Node.java
===================================================================
--- trunk/apps/load-balancing-sims/phase5-coalescing/Node.java 2006-08-17
14:13:24 UTC (rev 10161)
+++ trunk/apps/load-balancing-sims/phase5-coalescing/Node.java 2006-08-17
15:44:21 UTC (rev 10162)
@@ -190,7 +190,6 @@
if (sleep < MIN_SLEEP) sleep = MIN_SLEEP;
log ("sleeping for " + sleep + " seconds");
Event.schedule (this, sleep, CHECK_TIMEOUTS, null);
- timerRunning = true;
}
}
Modified: trunk/apps/load-balancing-sims/phase5-coalescing/Peer.java
===================================================================
--- trunk/apps/load-balancing-sims/phase5-coalescing/Peer.java 2006-08-17
14:13:24 UTC (rev 10161)
+++ trunk/apps/load-balancing-sims/phase5-coalescing/Peer.java 2006-08-17
15:44:21 UTC (rev 10162)
@@ -90,8 +90,9 @@
if (payload > bw) payload = bw;
// Delay small packets for coalescing
- if (now < deadline (now)) {
- log ("delaying transmission of " + payload + " bytes");
+ double delay = deadline (now) - now;
+ if (delay > 0.0) {
+ log ("delaying transmission of " + payload + " bytes
for " + delay + " seconds");
return false;
}
@@ -264,12 +265,12 @@
double msgDeadline = Double.POSITIVE_INFINITY;
Deadline<Message> firstMsg = msgQueue.peek();
if (firstMsg != null) msgDeadline = firstMsg.deadline;
+ if (window.available() < Packet.SENSIBLE_PAYLOAD +
Packet.HEADER_SIZE) msgDeadline = Double.POSITIVE_INFINITY; // Wait for an ack
+ if (node.bandwidth.available() < Packet.SENSIBLE_PAYLOAD +
Packet.HEADER_SIZE) msgDeadline = Math.max (msgDeadline, now +
Node.SHORT_SLEEP); // Poll the bandwidth limiter
if (ackDeadline <= msgDeadline) return ackDeadline;
if (msgDeadline == Double.POSITIVE_INFINITY) return msgDeadline;
if (msgQueueSize < Packet.SENSIBLE_PAYLOAD) return msgDeadline;
- if (window.available() < Packet.SENSIBLE_PAYLOAD +
Packet.HEADER_SIZE) return Double.POSITIVE_INFINITY; // Wait for an ack
- if (node.bandwidth.available() < Packet.SENSIBLE_PAYLOAD +
Packet.HEADER_SIZE) return now + Node.SHORT_SLEEP; // Poll the bandwidth limiter
return now;
}
Modified: trunk/apps/load-balancing-sims/phase5-coalescing/Sim.java
===================================================================
--- trunk/apps/load-balancing-sims/phase5-coalescing/Sim.java 2006-08-17
14:13:24 UTC (rev 10161)
+++ trunk/apps/load-balancing-sims/phase5-coalescing/Sim.java 2006-08-17
15:44:21 UTC (rev 10162)
@@ -6,7 +6,7 @@
{
public static void main (String[] args)
{
- double txSpeed = 150000, rxSpeed = 150000; // Bytes per second
+ double txSpeed = 15000, rxSpeed = 15000; // Bytes per second
// rxSpeed = Math.exp (rand.nextGaussian() + 11.74);
// txSpeed = rxSpeed / 5.0;
Modified:
trunk/apps/load-balancing-sims/phase5-no-ack-delay/CongestionWindow.java
===================================================================
--- trunk/apps/load-balancing-sims/phase5-no-ack-delay/CongestionWindow.java
2006-08-17 14:13:24 UTC (rev 10161)
+++ trunk/apps/load-balancing-sims/phase5-no-ack-delay/CongestionWindow.java
2006-08-17 15:44:21 UTC (rev 10162)
@@ -28,6 +28,7 @@
public int available()
{
+ peer.log ((int)(cwind - inflight) + " bytes in window");
return (int) cwind - inflight;
}
Modified: trunk/apps/load-balancing-sims/phase5-no-ack-delay/Node.java
===================================================================
--- trunk/apps/load-balancing-sims/phase5-no-ack-delay/Node.java
2006-08-17 14:13:24 UTC (rev 10161)
+++ trunk/apps/load-balancing-sims/phase5-no-ack-delay/Node.java
2006-08-17 15:44:21 UTC (rev 10162)
@@ -190,7 +190,6 @@
if (sleep < MIN_SLEEP) sleep = MIN_SLEEP;
log ("sleeping for " + sleep + " seconds");
Event.schedule (this, sleep, CHECK_TIMEOUTS, null);
- timerRunning = true;
}
}
Modified: trunk/apps/load-balancing-sims/phase5-no-ack-delay/Sim.java
===================================================================
--- trunk/apps/load-balancing-sims/phase5-no-ack-delay/Sim.java 2006-08-17
14:13:24 UTC (rev 10161)
+++ trunk/apps/load-balancing-sims/phase5-no-ack-delay/Sim.java 2006-08-17
15:44:21 UTC (rev 10162)
@@ -6,7 +6,7 @@
{
public static void main (String[] args)
{
- double txSpeed = 150000, rxSpeed = 150000; // Bytes per second
+ double txSpeed = 15000, rxSpeed = 15000; // Bytes per second
// rxSpeed = Math.exp (rand.nextGaussian() + 11.74);
// txSpeed = rxSpeed / 5.0;