change
[IRC.git] / Robust / TransSim / TransSim.java
1 public class TransSim {
2   public static void main(String[] args) {
3     int numThreads=1;
4     int numTrans=4;
5     int deltaTrans=0;
6     int numObjects=50;
7     int numAccesses=2;
8     int deltaAccesses=0;
9     int readPercent=0;
10     //time for operation
11     int delay=20;
12     int deltaDelay=4;
13     //time between transactions
14     int nonTrans=20;
15     int deltaNonTrans=4;
16     //split objects
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
22     int deadlockdepth=10;
23
24     long tlazy=0, tcommit=0, tattack=0, tpolite=0, tkarma=0;
25
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);
31       ls.dosim();
32       System.out.println("Lazy Time="+ls.getTime());
33       System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
34       int besttime=ls.getTime();
35       tlazy+=ls.getTime();
36
37       //Lock object accesses
38       ls=new FlexScheduler(e, FlexScheduler.LOCK, abortThreshold, abortRatio, deadlockdepth);
39       ls.dosim();
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();
46
47       //Lock Commit object accesses
48       ls=new FlexScheduler(e, FlexScheduler.LOCKCOMMIT, abortThreshold, abortRatio, deadlockdepth);
49       ls.dosim();
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();
56
57       //Kill others at commit
58       ls=new FlexScheduler(e, FlexScheduler.COMMIT);
59       ls.dosim();
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();
65       
66       //Eager attack
67       ls=new FlexScheduler(e, FlexScheduler.ATTACK);
68       ls.dosim();
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();      
74
75       //Eager polite
76       ls=new FlexScheduler(e, FlexScheduler.POLITE);
77       ls.dosim();
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();      
83
84       //Karma
85       ls=new FlexScheduler(e, FlexScheduler.KARMA);
86       ls.dosim();
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();
91       tkarma+=ls.getTime();
92       //    Scheduler s=new Scheduler(e, besttime);
93       //s.dosim();
94       //System.out.println("Optimal Time="+s.getTime());
95     }
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);
101   }
102 }