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 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");
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};
33 for(int i=1;i<40;i++) {
34 System.out.println("i="+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());
39 for(int j=0;j<policies.length;j++) {
40 int policy=policies[j];
41 if(policy==FlexScheduler.LOCK||policy==FlexScheduler.LOCKCOMMIT)
44 String policyname=FlexScheduler.getName(policy);
45 FlexScheduler ls=new FlexScheduler(e, policy, null);
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());
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);