bug fixes and extensions
authorbdemsky <bdemsky>
Thu, 1 Jul 2010 08:21:00 +0000 (08:21 +0000)
committerbdemsky <bdemsky>
Thu, 1 Jul 2010 08:21:00 +0000 (08:21 +0000)
Robust/TransSim/FlexScheduler.java
Robust/TransSim/Plot.java
Robust/TransSim/TransSim.java

index 589413e5074e9aa046299686f58e40b74df24eda..db3ab9daf5f975f3bc2d524dee212897902bf6fd 100644 (file)
@@ -120,6 +120,7 @@ public class FlexScheduler extends Thread {
   int policy;
   boolean[] aborted;
   long shorttesttime;
+  long earliesttime=-1;
   long starttime=-1;
   Hashtable rdobjmap;
   Hashtable wrobjmap;
@@ -158,6 +159,10 @@ public class FlexScheduler extends Thread {
     return commitcount;
   }
 
+  public long getEarliestTime() {
+    return earliesttime-starttime;
+  }
+
   public long getTime() {
     return shorttesttime-starttime;
   }
@@ -400,6 +405,9 @@ public class FlexScheduler extends Thread {
       Event nev=new Event(currtime+nexttrans.getTime(0), nexttrans, 0, ev.getThread(), nexttransnum);
       currentevents[ev.getThread()]=nev;
       eq.add(nev);
+    } else {
+      if (earliesttime==-1)
+       earliesttime=currtime;
     }
   }
 
index 3fb4edc1a2013af40ff6631d8cbdf6d493cb9291..877ad06ffb091cc997a7265bcab31b4b6d008100 100644 (file)
@@ -9,6 +9,12 @@ public class Plot {
   String cmdstr="plot ";
   Hashtable series;
   boolean first=true;
+  boolean percent;
+  public Plot(String filename, boolean percent) {
+    this(filename);
+    this.percent=percent;
+  }
+
   public Plot(String filename) {
     try {
       command=new PrintWriter(new FileOutputStream(filename+".cmd"), true);
@@ -48,7 +54,16 @@ public class Plot {
       Series s=(Series)it.next();
       s.close();
     }
+    command.println("set style data linespoints");
+    command.println("set terminal postscript enhanced eps \"Times-Roman\" 18");
+    command.println("set key left");
+    command.println("set output \""+filename+"linear.eps\"");
     command.println(cmdstr);
+    if (!percent) {
+      command.println("set log y");
+      command.println("set output \""+filename+"log.eps\"");
+      command.println(cmdstr);
+    }
     command.close();
   }
 }
\ No newline at end of file
index 22bc2590dd093061a91daba7f1755048364534ad..edf81ab018dd82ad44866403613ceb1a63226d5d 100644 (file)
@@ -22,7 +22,8 @@ public class TransSim {
     int deadlockdepth=10;
 
     Plot p=new Plot("plot");
-    Plot pa=new Plot("plotabort");
+    Plot pe=new Plot("plotearliest");
+    Plot pa=new Plot("plotabort",true);
     Plot ps=new Plot("plotstall");
     Plot pb=new Plot("plotbackoff");
     Plot pat=new Plot("plotaborttime");
@@ -37,6 +38,9 @@ public class TransSim {
 
       for(int j=0;j<policies.length;j++) {
        int policy=policies[j];
+       if(policy==FlexScheduler.LOCK||policy==FlexScheduler.LOCKCOMMIT)
+         continue;
+
        String policyname=FlexScheduler.getName(policy);
        FlexScheduler ls=new FlexScheduler(e, policy, null);
        ls.dosim();
@@ -45,15 +49,22 @@ public class TransSim {
        System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
        System.out.println("Stalltime="+ls.getStallTime()+" Backofftime="+ls.getBackoffTime());
        System.out.println("Aborttime="+ls.getAbortedTime());
+       System.out.println("Earliest="+ls.getEarliestTime());
+       
        
        p.getSeries(policyname).addPoint(i, ls.getTime());
+       pe.getSeries(policyname).addPoint(i, ls.getEarliestTime());
        pa.getSeries(policyname).addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
-       ps.getSeries(policyname).addPoint(i, ls.getStallTime());
-       pb.getSeries(policyname).addPoint(i, ls.getBackoffTime());
-       pat.getSeries(policyname).addPoint(i, ls.getAbortedTime());
+       ps.getSeries(policyname).addPoint(i, ls.getStallTime()/i);
+       pb.getSeries(policyname).addPoint(i, ls.getBackoffTime()/i);
+       pat.getSeries(policyname).addPoint(i, ls.getAbortedTime()/i);
       }
     }
     p.close();
     pa.close();
+    pe.close();
+    ps.close();
+    pb.close();
+    pat.close();
   }
 }
\ No newline at end of file