changes
[IRC.git] / Robust / TransSim / TransSim.java
1 public class TransSim {
2   public static void main(String[] args) {
3     int numThreads=20;
4     int numTrans=40;
5     int deltaTrans=0;
6     int numObjects=200;
7     int numAccesses=20;
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     Plot p=new Plot("plot");
25
26     for(int i=1;i<30;i++) {
27       System.out.println("i="+i);
28       numThreads=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);
32       ls.dosim();
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());
36
37
38       //Lock object accesses
39       ls=new FlexScheduler(e, FlexScheduler.LOCK, abortThreshold, abortRatio, deadlockdepth, null);
40       ls.dosim();
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());
45
46       //Lock Commit object accesses
47       ls=new FlexScheduler(e, FlexScheduler.LOCKCOMMIT, abortThreshold, abortRatio, deadlockdepth, null);
48       ls.dosim();
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());
53
54       //Kill others at commit
55       ls=new FlexScheduler(e, FlexScheduler.COMMIT, null);
56       ls.dosim();
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());
60       
61       //Eager attack
62       ls=new FlexScheduler(e, FlexScheduler.ATTACK, null);
63       ls.dosim();
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());
67
68       //Eager polite
69       ls=new FlexScheduler(e, FlexScheduler.SUICIDE, null);
70       ls.dosim();
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());
74
75       //Karma
76       ls=new FlexScheduler(e, FlexScheduler.TIMESTAMP, null);
77       ls.dosim();
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());
81
82       //Karma
83       ls=new FlexScheduler(e, FlexScheduler.RANDOM, null);
84       ls.dosim();
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());
88
89       //Karma
90       ls=new FlexScheduler(e, FlexScheduler.KARMA, null);
91       ls.dosim();
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());
95
96       //Karma
97       ls=new FlexScheduler(e, FlexScheduler.POLITE, null);
98       ls.dosim();
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());
102
103       //Karma
104       ls=new FlexScheduler(e, FlexScheduler.ERUPTION, null);
105       ls.dosim();
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());
109
110       //    Scheduler s=new Scheduler(e, besttime);
111       //s.dosim();
112       //System.out.println("Optimal Time="+s.getTime());
113     }
114     p.close();
115   }
116 }