1 public class TransSim {
2 public static void main(String[] args) {
9 int readPercent=80; //80 percent read
13 //time between transactions
17 int splitobjects=100;//100 percent normal objects
18 int splitaccesses=100;//100 percent access to normal objects
19 int readPercentSecond=80;//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");
25 Plot pa=new Plot("plotabort");
27 for(int i=1;i<40;i++) {
28 System.out.println("i="+i);
30 Executor e=new Executor(numThreads, numTrans, deltaTrans, numObjects, numAccesses, deltaAccesses, readPercent, delay, deltaDelay, nonTrans, deltaNonTrans, splitobjects, splitaccesses, readPercentSecond);
31 System.out.println(e.maxTime());
32 FlexScheduler ls=new FlexScheduler(e, FlexScheduler.LAZY, null);
34 System.out.println("Lazy Time="+ls.getTime());
35 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
36 p.getSeries("LAZY").addPoint(i, ls.getTime());
37 pa.getSeries("LAZY").addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
39 //Lock object accesses
40 ls=new FlexScheduler(e, FlexScheduler.LOCK, abortThreshold, abortRatio, deadlockdepth, null);
42 System.out.println("Deadlock count="+ls.getDeadLockCount());
43 System.out.println("Lock Abort="+ls.getTime());
44 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
45 p.getSeries("LOCK").addPoint(i, ls.getTime());
46 pa.getSeries("LOCK").addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
48 //Lock Commit object accesses
49 ls=new FlexScheduler(e, FlexScheduler.LOCKCOMMIT, abortThreshold, abortRatio, deadlockdepth, null);
51 System.out.println("Deadlock count="+ls.getDeadLockCount());
52 System.out.println("LockCommit Abort="+ls.getTime());
53 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
54 p.getSeries("LOCKCOMMIT").addPoint(i, ls.getTime());
55 pa.getSeries("LOCKCOMMIT").addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
57 //Kill others at commit
58 ls=new FlexScheduler(e, FlexScheduler.COMMIT, null);
60 System.out.println("Fast Abort="+ls.getTime());
61 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
62 p.getSeries("COMMIT").addPoint(i, ls.getTime());
63 pa.getSeries("COMMIT").addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
66 ls=new FlexScheduler(e, FlexScheduler.ATTACK, null);
68 System.out.println("Attack Abort="+ls.getTime());
69 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
70 p.getSeries("ATTACK").addPoint(i, ls.getTime());
71 pa.getSeries("ATTACK").addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
74 ls=new FlexScheduler(e, FlexScheduler.SUICIDE, null);
76 System.out.println("Suicide Abort="+ls.getTime());
77 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
78 p.getSeries("SUICIDE").addPoint(i, ls.getTime());
79 pa.getSeries("SUICIDE").addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
82 ls=new FlexScheduler(e, FlexScheduler.TIMESTAMP, null);
84 System.out.println("Timestamp Abort="+ls.getTime());
85 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
86 p.getSeries("TIMESTAMP").addPoint(i, ls.getTime());
87 pa.getSeries("TIMESTAMP").addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
90 ls=new FlexScheduler(e, FlexScheduler.RANDOM, null);
92 System.out.println("Random Abort="+ls.getTime());
93 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
94 p.getSeries("RANDOM").addPoint(i, ls.getTime());
95 pa.getSeries("RANDOM").addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
98 ls=new FlexScheduler(e, FlexScheduler.KARMA, null);
100 System.out.println("Karma Abort="+ls.getTime());
101 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
102 p.getSeries("KARMA").addPoint(i, ls.getTime());
103 pa.getSeries("KARMA").addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
106 ls=new FlexScheduler(e, FlexScheduler.POLITE, null);
108 System.out.println("Polit Abort="+ls.getTime());
109 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
110 p.getSeries("POLITE").addPoint(i, ls.getTime());
111 pa.getSeries("POLITE").addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
114 ls=new FlexScheduler(e, FlexScheduler.ERUPTION, null);
116 System.out.println("Eruption Abort="+ls.getTime());
117 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
118 p.getSeries("ERUPTION").addPoint(i, ls.getTime());
119 pa.getSeries("ERUPTION").addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
123 ls=new FlexScheduler(e, FlexScheduler.THREAD, null);
125 System.out.println("ThreadPriority Abort="+ls.getTime());
126 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
127 p.getSeries("THPRIORITY").addPoint(i, ls.getTime());
128 pa.getSeries("THPRIORITY").addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
132 ls=new FlexScheduler(e, FlexScheduler.ATTACKTIME, null);
134 System.out.println("ThreadPriority Abort="+ls.getTime());
135 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
136 p.getSeries("ATTACKTIME").addPoint(i, ls.getTime());
137 pa.getSeries("ATTACKTIME").addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
141 ls=new FlexScheduler(e, FlexScheduler.ATTACKTHREAD, null);
143 System.out.println("ThreadPriority Abort="+ls.getTime());
144 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
145 p.getSeries("ATTACKTHREAD").addPoint(i, ls.getTime());
146 pa.getSeries("ATTACKTHREAD").addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
148 // Scheduler s=new Scheduler(e, besttime);
150 //System.out.println("Optimal Time="+s.getTime());