a bug fix...
[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=400;
7     int numAccesses=20;
8     int deltaAccesses=3;
9     int readPercent=80; //80 percent read
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;//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
22     int deadlockdepth=10;
23
24     Plot p=new Plot("plot");
25     Plot pe=new Plot("plotearliest");
26     Plot pa=new Plot("plotabort",true);
27     Plot ps=new Plot("plotstall");
28     Plot pb=new Plot("plotbackoff");
29     Plot pat=new Plot("plotaborttime");
30
31     int[] policies=new int[]{FlexScheduler.LAZY, FlexScheduler.COMMIT, FlexScheduler.ATTACK, FlexScheduler.SUICIDE, FlexScheduler.TIMESTAMP, FlexScheduler.LOCK, FlexScheduler.LOCKCOMMIT, FlexScheduler.RANDOM, FlexScheduler.KARMA, FlexScheduler.POLITE, FlexScheduler.ERUPTION, FlexScheduler.THREAD, FlexScheduler.ATTACKTIME, FlexScheduler.ATTACKTHREAD};
32
33     for(int i=1;i<40;i++) {
34       System.out.println("i="+i);
35       numThreads=i;
36       Executor e=new Executor(numThreads, numTrans, deltaTrans, numObjects, numAccesses, deltaAccesses, readPercent, delay, deltaDelay, nonTrans, deltaNonTrans, splitobjects, splitaccesses, readPercentSecond);
37       System.out.println(e.maxTime());
38
39       for(int j=0;j<policies.length;j++) {
40         int policy=policies[j];
41         if(policy==FlexScheduler.LOCK||policy==FlexScheduler.LOCKCOMMIT)
42           continue;
43
44         String policyname=FlexScheduler.getName(policy);
45         FlexScheduler ls=new FlexScheduler(e, policy, null);
46         ls.dosim();
47         System.out.println("Deadlock count="+ls.getDeadLockCount());
48         System.out.println(policyname+" Time="+ls.getTime());
49         System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
50         System.out.println("Stalltime="+ls.getStallTime()+" Backofftime="+ls.getBackoffTime());
51         System.out.println("Aborttime="+ls.getAbortedTime());
52         System.out.println("Earliest="+ls.getEarliestTime());
53         
54         
55         p.getSeries(policyname).addPoint(i, ls.getTime());
56         pe.getSeries(policyname).addPoint(i, ls.getEarliestTime());
57         pa.getSeries(policyname).addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
58         ps.getSeries(policyname).addPoint(i, ls.getStallTime()/i);
59         pb.getSeries(policyname).addPoint(i, ls.getBackoffTime()/i);
60         pat.getSeries(policyname).addPoint(i, ls.getAbortedTime()/i);
61       }
62     }
63     p.close();
64     pa.close();
65     pe.close();
66     ps.close();
67     pb.close();
68     pat.close();
69   }
70 }