1 public class TransSim {
2 public static void main(String[] args) {
13 //time between transactions
17 int splitobjects=100;//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 long tlazy=0, tcommit=0, tattack=0, tpolite=0, tkarma=0;
26 for(int i=1;i<100;i++) {
27 System.out.println("i="+i);
28 Executor e=new Executor(i, numTrans, deltaTrans, numObjects, numAccesses, deltaAccesses, readPercent, delay, deltaDelay, nonTrans, deltaNonTrans, splitobjects, splitaccesses, readPercentSecond);
29 System.out.println(e.maxTime());
30 FlexScheduler ls=new FlexScheduler(e, FlexScheduler.LAZY);
32 System.out.println("Lazy Time="+ls.getTime());
33 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
34 int besttime=ls.getTime();
37 //Lock object accesses
38 ls=new FlexScheduler(e, FlexScheduler.LOCK, abortThreshold, abortRatio, deadlockdepth);
40 System.out.println("Deadlock count="+ls.getDeadLockCount());
41 System.out.println("Lock Abort="+ls.getTime());
42 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
43 if (ls.getTime()<besttime)
44 besttime=ls.getTime();
45 tcommit+=ls.getTime();
47 //Lock Commit object accesses
48 ls=new FlexScheduler(e, FlexScheduler.LOCKCOMMIT, abortThreshold, abortRatio, deadlockdepth);
50 System.out.println("Deadlock count="+ls.getDeadLockCount());
51 System.out.println("LockCommit Abort="+ls.getTime());
52 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
53 if (ls.getTime()<besttime)
54 besttime=ls.getTime();
55 tcommit+=ls.getTime();
57 //Kill others at commit
58 ls=new FlexScheduler(e, FlexScheduler.COMMIT);
60 System.out.println("Fast Abort="+ls.getTime());
61 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
62 if (ls.getTime()<besttime)
63 besttime=ls.getTime();
64 tcommit+=ls.getTime();
67 ls=new FlexScheduler(e, FlexScheduler.ATTACK);
69 System.out.println("Attack Abort="+ls.getTime());
70 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
71 if (ls.getTime()<besttime)
72 besttime=ls.getTime();
73 tattack+=ls.getTime();
76 ls=new FlexScheduler(e, FlexScheduler.POLITE);
78 System.out.println("Polite Abort="+ls.getTime());
79 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
80 if (ls.getTime()<besttime)
81 besttime=ls.getTime();
82 tpolite+=ls.getTime();
85 ls=new FlexScheduler(e, FlexScheduler.KARMA);
87 System.out.println("Karma Abort="+ls.getTime());
88 System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
89 if (ls.getTime()<besttime)
90 besttime=ls.getTime();
92 // Scheduler s=new Scheduler(e, besttime);
94 //System.out.println("Optimal Time="+s.getTime());
96 System.out.println("lazy="+tlazy);
97 System.out.println("commit="+tcommit);
98 System.out.println("attack="+tattack);
99 System.out.println("polite="+tpolite);
100 System.out.println("karma="+tkarma);