updates to transsim for journal submission
[IRC.git] / Robust / TransSim / TransSim.java
index 896b8bd8ef001f77b43e98f8c1c923ab3f8eefe6..8e2cb951f2049048519de625a0f65df312663924 100644 (file)
@@ -3,10 +3,10 @@ public class TransSim {
     int numThreads=20;
     int numTrans=40;
     int deltaTrans=0;
-    int numObjects=200;
+    int numObjects=400;
     int numAccesses=20;
-    int deltaAccesses=0;
-    int readPercent=0;
+    int deltaAccesses=3;
+    int readPercent=80; //80 percent read
     //time for operation
     int delay=20;
     int deltaDelay=4;
@@ -14,16 +14,17 @@ public class TransSim {
     int nonTrans=20;
     int deltaNonTrans=4;
     //split objects
-    int splitobjects=200;//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;
 
     Plot p=new Plot("plot");
+    Plot pa=new Plot("plotabort");
 
-    for(int i=1;i<30;i++) {
+    for(int i=1;i<40;i++) {
       System.out.println("i="+i);
       numThreads=i;
       Executor e=new Executor(numThreads, numTrans, deltaTrans, numObjects, numAccesses, deltaAccesses, readPercent, delay, deltaDelay, nonTrans, deltaNonTrans, splitobjects, splitaccesses, readPercentSecond);
@@ -33,7 +34,7 @@ public class TransSim {
       System.out.println("Lazy Time="+ls.getTime());
       System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
       p.getSeries("LAZY").addPoint(i, ls.getTime());
-
+      pa.getSeries("LAZY").addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
 
       //Lock object accesses
       ls=new FlexScheduler(e, FlexScheduler.LOCK, abortThreshold, abortRatio, deadlockdepth, null);
@@ -42,6 +43,7 @@ public class TransSim {
       System.out.println("Lock Abort="+ls.getTime());
       System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
       p.getSeries("LOCK").addPoint(i, ls.getTime());
+      pa.getSeries("LOCK").addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
 
       //Lock Commit object accesses
       ls=new FlexScheduler(e, FlexScheduler.LOCKCOMMIT, abortThreshold, abortRatio, deadlockdepth, null);
@@ -50,6 +52,7 @@ public class TransSim {
       System.out.println("LockCommit Abort="+ls.getTime());
       System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
       p.getSeries("LOCKCOMMIT").addPoint(i, ls.getTime());
+      pa.getSeries("LOCKCOMMIT").addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
 
       //Kill others at commit
       ls=new FlexScheduler(e, FlexScheduler.COMMIT, null);
@@ -57,13 +60,15 @@ public class TransSim {
       System.out.println("Fast Abort="+ls.getTime());
       System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
       p.getSeries("COMMIT").addPoint(i, ls.getTime());
-      
+      pa.getSeries("COMMIT").addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));      
+
       //Eager attack
       ls=new FlexScheduler(e, FlexScheduler.ATTACK, null);
       ls.dosim();
       System.out.println("Attack Abort="+ls.getTime());
       System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
       p.getSeries("ATTACK").addPoint(i, ls.getTime());
+      pa.getSeries("ATTACK").addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
 
       //Eager polite
       ls=new FlexScheduler(e, FlexScheduler.SUICIDE, null);
@@ -71,6 +76,7 @@ public class TransSim {
       System.out.println("Suicide Abort="+ls.getTime());
       System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
       p.getSeries("SUICIDE").addPoint(i, ls.getTime());
+      pa.getSeries("SUICIDE").addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
 
       //Karma
       ls=new FlexScheduler(e, FlexScheduler.TIMESTAMP, null);
@@ -78,6 +84,7 @@ public class TransSim {
       System.out.println("Timestamp Abort="+ls.getTime());
       System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
       p.getSeries("TIMESTAMP").addPoint(i, ls.getTime());
+      pa.getSeries("TIMESTAMP").addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
 
       //Karma
       ls=new FlexScheduler(e, FlexScheduler.RANDOM, null);
@@ -85,6 +92,7 @@ public class TransSim {
       System.out.println("Random Abort="+ls.getTime());
       System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
       p.getSeries("RANDOM").addPoint(i, ls.getTime());
+      pa.getSeries("RANDOM").addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
 
       //Karma
       ls=new FlexScheduler(e, FlexScheduler.KARMA, null);
@@ -92,6 +100,7 @@ public class TransSim {
       System.out.println("Karma Abort="+ls.getTime());
       System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
       p.getSeries("KARMA").addPoint(i, ls.getTime());
+      pa.getSeries("KARMA").addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
 
       //Karma
       ls=new FlexScheduler(e, FlexScheduler.POLITE, null);
@@ -99,6 +108,7 @@ public class TransSim {
       System.out.println("Polit Abort="+ls.getTime());
       System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
       p.getSeries("POLITE").addPoint(i, ls.getTime());
+      pa.getSeries("POLITE").addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
 
       //Karma
       ls=new FlexScheduler(e, FlexScheduler.ERUPTION, null);
@@ -106,11 +116,40 @@ public class TransSim {
       System.out.println("Eruption Abort="+ls.getTime());
       System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
       p.getSeries("ERUPTION").addPoint(i, ls.getTime());
+      pa.getSeries("ERUPTION").addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
+
+
+      //Karma
+      ls=new FlexScheduler(e, FlexScheduler.THREAD, null);
+      ls.dosim();
+      System.out.println("ThreadPriority Abort="+ls.getTime());
+      System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
+      p.getSeries("THPRIORITY").addPoint(i, ls.getTime());
+      pa.getSeries("THPRIORITY").addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
+
+
+      //attack time
+      ls=new FlexScheduler(e, FlexScheduler.ATTACKTIME, null);
+      ls.dosim();
+      System.out.println("ThreadPriority Abort="+ls.getTime());
+      System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
+      p.getSeries("ATTACKTIME").addPoint(i, ls.getTime());
+      pa.getSeries("ATTACKTIME").addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
+
+
+      //attack thread
+      ls=new FlexScheduler(e, FlexScheduler.ATTACKTHREAD, null);
+      ls.dosim();
+      System.out.println("ThreadPriority Abort="+ls.getTime());
+      System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
+      p.getSeries("ATTACKTHREAD").addPoint(i, ls.getTime());
+      pa.getSeries("ATTACKTHREAD").addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
 
       //    Scheduler s=new Scheduler(e, besttime);
       //s.dosim();
       //System.out.println("Optimal Time="+s.getTime());
     }
     p.close();
+    pa.close();
   }
 }
\ No newline at end of file