1 public class TransSim {
2 public static void main(String[] args) {
13 //time between transactions
17 int splitobjects=200;//10 percent of objects special
18 int splitaccesses=100;//40 percent of accesses to special objects
19 int readPercentSecond=30;//20 percent of accesses are reads
20 int abortThreshold=0; //need 4 aborts to declare risky
21 int abortRatio=0;//need 40% aborts vs commits to declare risky
24 Plot p=new Plot("plot");
26 for(int i=1;i<30;i++) {
27 System.out.println("i="+i);
29 Executor e=new Executor(numThreads, numTrans, deltaTrans, numObjects, numAccesses, deltaAccesses, readPercent, delay, deltaDelay, nonTrans, deltaNonTrans, splitobjects, splitaccesses, readPercentSecond);
30 System.out.println(e.maxTime());
31 FlexScheduler ls=new FlexScheduler(e, FlexScheduler.LAZY, null);
33 System.out.println("Lazy Time="+ls.getTime());
34 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
35 p.getSeries("LAZY").addPoint(i, ls.getTime());
38 //Lock object accesses
39 ls=new FlexScheduler(e, FlexScheduler.LOCK, abortThreshold, abortRatio, deadlockdepth, null);
41 System.out.println("Deadlock count="+ls.getDeadLockCount());
42 System.out.println("Lock Abort="+ls.getTime());
43 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
44 p.getSeries("LOCK").addPoint(i, ls.getTime());
46 //Lock Commit object accesses
47 ls=new FlexScheduler(e, FlexScheduler.LOCKCOMMIT, abortThreshold, abortRatio, deadlockdepth, null);
49 System.out.println("Deadlock count="+ls.getDeadLockCount());
50 System.out.println("LockCommit Abort="+ls.getTime());
51 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
52 p.getSeries("LOCKCOMMIT").addPoint(i, ls.getTime());
54 //Kill others at commit
55 ls=new FlexScheduler(e, FlexScheduler.COMMIT, null);
57 System.out.println("Fast Abort="+ls.getTime());
58 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
59 p.getSeries("COMMIT").addPoint(i, ls.getTime());
62 ls=new FlexScheduler(e, FlexScheduler.ATTACK, null);
64 System.out.println("Attack Abort="+ls.getTime());
65 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
66 p.getSeries("ATTACK").addPoint(i, ls.getTime());
69 ls=new FlexScheduler(e, FlexScheduler.SUICIDE, null);
71 System.out.println("Suicide Abort="+ls.getTime());
72 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
73 p.getSeries("SUICIDE").addPoint(i, ls.getTime());
76 ls=new FlexScheduler(e, FlexScheduler.TIMESTAMP, null);
78 System.out.println("Timestamp Abort="+ls.getTime());
79 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
80 p.getSeries("TIMESTAMP").addPoint(i, ls.getTime());
83 ls=new FlexScheduler(e, FlexScheduler.RANDOM, null);
85 System.out.println("Random Abort="+ls.getTime());
86 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
87 p.getSeries("RANDOM").addPoint(i, ls.getTime());
90 ls=new FlexScheduler(e, FlexScheduler.KARMA, null);
92 System.out.println("Karma Abort="+ls.getTime());
93 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
94 p.getSeries("KARMA").addPoint(i, ls.getTime());
97 ls=new FlexScheduler(e, FlexScheduler.POLITE, null);
99 System.out.println("Polit Abort="+ls.getTime());
100 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
101 p.getSeries("POLITE").addPoint(i, ls.getTime());
104 ls=new FlexScheduler(e, FlexScheduler.ERUPTION, null);
106 System.out.println("Eruption Abort="+ls.getTime());
107 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
108 p.getSeries("ERUPTION").addPoint(i, ls.getTime());
110 // Scheduler s=new Scheduler(e, besttime);
112 //System.out.println("Optimal Time="+s.getTime());