From: bdemsky Date: Thu, 17 Sep 2009 00:04:47 +0000 (+0000) Subject: add code to support outputting gnuplot compatible graphs X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=35a02b43831c148f75c1fd4ab06cd27da77dd2c0;p=IRC.git add code to support outputting gnuplot compatible graphs --- diff --git a/Robust/TransSim/Plot.java b/Robust/TransSim/Plot.java new file mode 100644 index 00000000..3fb4edc1 --- /dev/null +++ b/Robust/TransSim/Plot.java @@ -0,0 +1,54 @@ +import java.io.*; +import java.util.*; + +public class Plot { + PrintWriter out; + PrintWriter command; + String filename; + int count=0; + String cmdstr="plot "; + Hashtable series; + boolean first=true; + public Plot(String filename) { + try { + command=new PrintWriter(new FileOutputStream(filename+".cmd"), true); + } catch (IOException e) { + e.printStackTrace(); + System.exit(-1); + } + this.filename=filename; + series=new Hashtable(); + } + + public Series getSeries(String name) { + if (series.containsKey(name)) + return (Series)series.get(name); + Series s=createSeries(name); + series.put(name, s); + return s; + } + + private Series createSeries(String name) { + Series s=null; + try { + s=new Series(new PrintWriter(new FileOutputStream(filename+"."+count),true)); + } catch (IOException e) { + e.printStackTrace(); + System.exit(-1); + } + if (!first) cmdstr+=","; + first=false; + cmdstr+="\""+filename+"."+count+"\" title \""+name+"\""; + count++; + return s; + } + + public void close() { + for(Iterator it=series.values().iterator();it.hasNext();) { + Series s=(Series)it.next(); + s.close(); + } + command.println(cmdstr); + command.close(); + } +} \ No newline at end of file diff --git a/Robust/TransSim/Series.java b/Robust/TransSim/Series.java new file mode 100644 index 00000000..83de6a65 --- /dev/null +++ b/Robust/TransSim/Series.java @@ -0,0 +1,20 @@ +import java.io.*; + +public class Series { + PrintWriter out; + public Series(PrintWriter out) { + this.out=out; + } + + public void addPoint(int x, int y) { + addPoint(Integer.toString(x), Integer.toString(y)); + } + + public void addPoint(String time, String value) { + out.println(time+" "+value); + } + + public void close() { + out.close(); + } +} \ No newline at end of file diff --git a/Robust/TransSim/TransSim.java b/Robust/TransSim/TransSim.java index d3fe5ca6..c0dacadb 100644 --- a/Robust/TransSim/TransSim.java +++ b/Robust/TransSim/TransSim.java @@ -1,10 +1,10 @@ public class TransSim { public static void main(String[] args) { - int numThreads=1; + int numThreads=64; int numTrans=4; int deltaTrans=0; - int numObjects=50; - int numAccesses=2; + int numObjects=4000; + int numAccesses=10; int deltaAccesses=0; int readPercent=0; //time for operation @@ -21,18 +21,18 @@ public class TransSim { int abortRatio=0;//need 40% aborts vs commits to declare risky int deadlockdepth=10; - long tlazy=0, tcommit=0, tattack=0, tpolite=0, tkarma=0; + Plot p=new Plot("plot"); - for(int i=1;i<100;i++) { + for(int i=1;i<40;i+=1) { System.out.println("i="+i); - Executor e=new Executor(i, numTrans, deltaTrans, numObjects, numAccesses, deltaAccesses, readPercent, delay, deltaDelay, nonTrans, deltaNonTrans, splitobjects, splitaccesses, readPercentSecond); + Executor e=new Executor(numThreads, numTrans, deltaTrans, numObjects, i, deltaAccesses, readPercent, delay, deltaDelay, nonTrans, deltaNonTrans, splitobjects, splitaccesses, readPercentSecond); System.out.println(e.maxTime()); FlexScheduler ls=new FlexScheduler(e, FlexScheduler.LAZY); ls.dosim(); System.out.println("Lazy Time="+ls.getTime()); System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits()); - int besttime=ls.getTime(); - tlazy+=ls.getTime(); + p.getSeries("LAZY").addPoint(i, ls.getTime()); + //Lock object accesses ls=new FlexScheduler(e, FlexScheduler.LOCK, abortThreshold, abortRatio, deadlockdepth); @@ -40,9 +40,7 @@ public class TransSim { System.out.println("Deadlock count="+ls.getDeadLockCount()); System.out.println("Lock Abort="+ls.getTime()); System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits()); - if (ls.getTime()