adding a test case
[IRC.git] / Robust / TransSim / TransSim.java
index d3fe5ca61289b35797f93bfc3a79b919e424c300..edf81ab018dd82ad44866403613ceb1a63226d5d 100644 (file)
@@ -1,12 +1,12 @@
 public class TransSim {
   public static void main(String[] args) {
-    int numThreads=1;
-    int numTrans=4;
+    int numThreads=20;
+    int numTrans=40;
     int deltaTrans=0;
-    int numObjects=50;
-    int numAccesses=2;
-    int deltaAccesses=0;
-    int readPercent=0;
+    int numObjects=400;
+    int numAccesses=20;
+    int deltaAccesses=3;
+    int readPercent=80; //80 percent read
     //time for operation
     int delay=20;
     int deltaDelay=4;
@@ -14,89 +14,57 @@ public class TransSim {
     int nonTrans=20;
     int deltaNonTrans=4;
     //split objects
-    int splitobjects=100;//10 percent of objects special
-    int splitaccesses=100;//40 percent of accesses to special objects
-    int readPercentSecond=30;//20 percent of accesses are reads
+    int splitobjects=100;//100 percent normal objects
+    int splitaccesses=100;//100 percent access to normal objects
+    int readPercentSecond=80;//20 percent of accesses are reads
     int abortThreshold=0; //need 4 aborts to declare risky
     int abortRatio=0;//need 40% aborts vs commits to declare risky
     int deadlockdepth=10;
 
-    long tlazy=0, tcommit=0, tattack=0, tpolite=0, tkarma=0;
+    Plot p=new Plot("plot");
+    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");
 
-    for(int i=1;i<100;i++) {
+    int[] policies=new int[]{FlexScheduler.LAZY, FlexScheduler.COMMIT, FlexScheduler.ATTACK, FlexScheduler.SUICIDE, FlexScheduler.TIMESTAMP, FlexScheduler.LOCK, FlexScheduler.LOCKCOMMIT, FlexScheduler.RANDOM, FlexScheduler.KARMA, FlexScheduler.POLITE, FlexScheduler.ERUPTION, FlexScheduler.THREAD, FlexScheduler.ATTACKTIME, FlexScheduler.ATTACKTHREAD};
+
+    for(int i=1;i<40;i++) {
       System.out.println("i="+i);
-      Executor e=new Executor(i, numTrans, deltaTrans, numObjects, numAccesses, deltaAccesses, readPercent, delay, deltaDelay, nonTrans, deltaNonTrans, splitobjects, splitaccesses, readPercentSecond);
+      numThreads=i;
+      Executor e=new Executor(numThreads, numTrans, deltaTrans, numObjects, numAccesses, deltaAccesses, readPercent, delay, deltaDelay, nonTrans, deltaNonTrans, splitobjects, splitaccesses, readPercentSecond);
       System.out.println(e.maxTime());
-      FlexScheduler ls=new FlexScheduler(e, FlexScheduler.LAZY);
-      ls.dosim();
-      System.out.println("Lazy Time="+ls.getTime());
-      System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
-      int besttime=ls.getTime();
-      tlazy+=ls.getTime();
-
-      //Lock object accesses
-      ls=new FlexScheduler(e, FlexScheduler.LOCK, abortThreshold, abortRatio, deadlockdepth);
-      ls.dosim();
-      System.out.println("Deadlock count="+ls.getDeadLockCount());
-      System.out.println("Lock Abort="+ls.getTime());
-      System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
-      if (ls.getTime()<besttime)
-       besttime=ls.getTime();
-      tcommit+=ls.getTime();
-
-      //Lock Commit object accesses
-      ls=new FlexScheduler(e, FlexScheduler.LOCKCOMMIT, abortThreshold, abortRatio, deadlockdepth);
-      ls.dosim();
-      System.out.println("Deadlock count="+ls.getDeadLockCount());
-      System.out.println("LockCommit Abort="+ls.getTime());
-      System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
-      if (ls.getTime()<besttime)
-       besttime=ls.getTime();
-      tcommit+=ls.getTime();
-
-      //Kill others at commit
-      ls=new FlexScheduler(e, FlexScheduler.COMMIT);
-      ls.dosim();
-      System.out.println("Fast Abort="+ls.getTime());
-      System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
-      if (ls.getTime()<besttime)
-       besttime=ls.getTime();
-      tcommit+=ls.getTime();
-      
-      //Eager attack
-      ls=new FlexScheduler(e, FlexScheduler.ATTACK);
-      ls.dosim();
-      System.out.println("Attack Abort="+ls.getTime());
-      System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
-      if (ls.getTime()<besttime)
-       besttime=ls.getTime();
-      tattack+=ls.getTime();      
 
-      //Eager polite
-      ls=new FlexScheduler(e, FlexScheduler.POLITE);
-      ls.dosim();
-      System.out.println("Polite Abort="+ls.getTime());
-      System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
-      if (ls.getTime()<besttime)
-       besttime=ls.getTime();
-      tpolite+=ls.getTime();      
+      for(int j=0;j<policies.length;j++) {
+       int policy=policies[j];
+       if(policy==FlexScheduler.LOCK||policy==FlexScheduler.LOCKCOMMIT)
+         continue;
 
-      //Karma
-      ls=new FlexScheduler(e, FlexScheduler.KARMA);
-      ls.dosim();
-      System.out.println("Karma Abort="+ls.getTime());
-      System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
-      if (ls.getTime()<besttime)
-       besttime=ls.getTime();
-      tkarma+=ls.getTime();
-      //    Scheduler s=new Scheduler(e, besttime);
-      //s.dosim();
-      //System.out.println("Optimal Time="+s.getTime());
+       String policyname=FlexScheduler.getName(policy);
+       FlexScheduler ls=new FlexScheduler(e, policy, null);
+       ls.dosim();
+       System.out.println("Deadlock count="+ls.getDeadLockCount());
+       System.out.println(policyname+" Time="+ls.getTime());
+       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()/i);
+       pb.getSeries(policyname).addPoint(i, ls.getBackoffTime()/i);
+       pat.getSeries(policyname).addPoint(i, ls.getAbortedTime()/i);
+      }
     }
-    System.out.println("lazy="+tlazy);
-    System.out.println("commit="+tcommit);
-    System.out.println("attack="+tattack);
-    System.out.println("polite="+tpolite);
-    System.out.println("karma="+tkarma);
+    p.close();
+    pa.close();
+    pe.close();
+    ps.close();
+    pb.close();
+    pat.close();
   }
 }
\ No newline at end of file