int policy;
boolean[] aborted;
long shorttesttime;
+ long earliesttime=-1;
long starttime=-1;
Hashtable rdobjmap;
Hashtable wrobjmap;
return commitcount;
}
+ public long getEarliestTime() {
+ return earliesttime-starttime;
+ }
+
public long getTime() {
return shorttesttime-starttime;
}
Event nev=new Event(currtime+nexttrans.getTime(0), nexttrans, 0, ev.getThread(), nexttransnum);
currentevents[ev.getThread()]=nev;
eq.add(nev);
+ } else {
+ if (earliesttime==-1)
+ earliesttime=currtime;
}
}
String cmdstr="plot ";
Hashtable series;
boolean first=true;
+ boolean percent;
+ public Plot(String filename, boolean percent) {
+ this(filename);
+ this.percent=percent;
+ }
+
public Plot(String filename) {
try {
command=new PrintWriter(new FileOutputStream(filename+".cmd"), true);
Series s=(Series)it.next();
s.close();
}
+ command.println("set style data linespoints");
+ command.println("set terminal postscript enhanced eps \"Times-Roman\" 18");
+ command.println("set key left");
+ command.println("set output \""+filename+"linear.eps\"");
command.println(cmdstr);
+ if (!percent) {
+ command.println("set log y");
+ command.println("set output \""+filename+"log.eps\"");
+ command.println(cmdstr);
+ }
command.close();
}
}
\ No newline at end of file
int deadlockdepth=10;
Plot p=new Plot("plot");
- Plot pa=new Plot("plotabort");
+ Plot pe=new Plot("plotearliest");
+ Plot pa=new Plot("plotabort",true);
Plot ps=new Plot("plotstall");
Plot pb=new Plot("plotbackoff");
Plot pat=new Plot("plotaborttime");
for(int j=0;j<policies.length;j++) {
int policy=policies[j];
+ if(policy==FlexScheduler.LOCK||policy==FlexScheduler.LOCKCOMMIT)
+ continue;
+
String policyname=FlexScheduler.getName(policy);
FlexScheduler ls=new FlexScheduler(e, policy, null);
ls.dosim();
System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
System.out.println("Stalltime="+ls.getStallTime()+" Backofftime="+ls.getBackoffTime());
System.out.println("Aborttime="+ls.getAbortedTime());
+ System.out.println("Earliest="+ls.getEarliestTime());
+
p.getSeries(policyname).addPoint(i, ls.getTime());
+ pe.getSeries(policyname).addPoint(i, ls.getEarliestTime());
pa.getSeries(policyname).addPoint(i, 100.0*((double)ls.getAborts())/((double)(ls.getAborts()+ls.getCommits())));
- ps.getSeries(policyname).addPoint(i, ls.getStallTime());
- pb.getSeries(policyname).addPoint(i, ls.getBackoffTime());
- pat.getSeries(policyname).addPoint(i, ls.getAbortedTime());
+ ps.getSeries(policyname).addPoint(i, ls.getStallTime()/i);
+ pb.getSeries(policyname).addPoint(i, ls.getBackoffTime()/i);
+ pat.getSeries(policyname).addPoint(i, ls.getAbortedTime()/i);
}
}
p.close();
pa.close();
+ pe.close();
+ ps.close();
+ pb.close();
+ pat.close();
}
}
\ No newline at end of file