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;



Reply via email to