You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ch...@apache.org on 2009/11/21 15:27:44 UTC
svn commit: r882914 -
/activemq/sandbox/activemq-apollo/activemq-syscall/src/main/java/org/apache/activemq/syscall/util/DiskBenchmark.java
Author: chirino
Date: Sat Nov 21 14:27:43 2009
New Revision: 882914
URL: http://svn.apache.org/viewvc?rev=882914&view=rev
Log:
Better formating
Modified:
activemq/sandbox/activemq-apollo/activemq-syscall/src/main/java/org/apache/activemq/syscall/util/DiskBenchmark.java
Modified: activemq/sandbox/activemq-apollo/activemq-syscall/src/main/java/org/apache/activemq/syscall/util/DiskBenchmark.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo/activemq-syscall/src/main/java/org/apache/activemq/syscall/util/DiskBenchmark.java?rev=882914&r1=882913&r2=882914&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo/activemq-syscall/src/main/java/org/apache/activemq/syscall/util/DiskBenchmark.java (original)
+++ activemq/sandbox/activemq-apollo/activemq-syscall/src/main/java/org/apache/activemq/syscall/util/DiskBenchmark.java Sat Nov 21 14:27:43 2009
@@ -199,6 +199,7 @@
PrintWriter pw = new PrintWriter(new FileOutputStream("report.html"));
writeReportHeader(pw);
int chartCounter=0;
+
for (boolean memcopy : this.memcopy) {
for (String operation : this.operation) {
for (boolean random : this.random) {
@@ -235,8 +236,10 @@
pw.println(" google.load('visualization', '1', {'packages':['linechart']});");
pw.println(" </script>");
pw.println(" <style type='text/css'>");
- pw.println(" .chart-section {width:640px; padding-left: 30px}");
- pw.println(" .chart-props {width:140px; padding:0; padding-top:20px; float:left;}");
+ pw.println(" body {font-family:Verdana; font-size:12px; color:#666666;}");
+ pw.println(" * {margin:0; padding:0;}");
+ pw.println(" .chart-section {width:640px; padding: 10px; margin: 0px auto; clear: both;}");
+ pw.println(" .chart-props {width:140px; padding:0; padding-top:40px; float:left; text-align:right; }");
pw.println(" .chart-graph {width: 500px; height: 200px; float:right; }");
pw.println(" </style>");
pw.println(" </head>");
@@ -248,13 +251,16 @@
return;
Benchmark d1 = data.get(0);
- String titleX = String.format("Period (%.2f seconds)", samplePeriod);
- String titleY = "IO Operations";
+ String titleX = String.format("sample period (%.2f seconds)", samplePeriod);
+ String titleY = "operations / second";
pw.println(" <div class='chart-section'>");
- pw.println(" <ul class='chart-props'>");
- pw.println(" <li>operation: "+d1.operation+"</li><li>sync: "+d1.sync+"</li><li>memcopy: "+d1.memcopy+"</li><li>random: "+d1.random+"</li>");
- pw.println(" </ul>");
+ pw.println(" <div class='chart-props'>");
+ pw.println(" <div>operation: "+d1.operation+"</div>" +
+ "<div>sync: "+d1.sync+"</div>" +
+ "<div>memcopy: "+d1.memcopy+"</div>" +
+ "<div>random: "+d1.random+"</div>");
+ pw.println(" </div>");
pw.println(" <div id='chart_"+id+"' class='chart-graph '></div>");
pw.println(" </div>");
pw.println(" <script type='text/javascript'>");
@@ -273,11 +279,11 @@
}
pw.print(" ['"+i+"'");
for (Benchmark d : data) {
- long value = 0;
+ double value = 0;
if( d.samples.size() >i ) {
value = d.samples.get(i);
}
- pw.print(", "+value);
+ pw.print(String.format(", %.2f",value));
}
pw.print("]");
}
@@ -290,12 +296,6 @@
}
- private String title(ArrayList<Benchmark> data) {
- Benchmark d = data.get(0);
- return "operation: "+d.operation+", sync: "+d.sync+", memcopy: "+d.memcopy+", random: "+d.random;
- }
-
-
private void writeReportFooter(PrintWriter pw) {
if(pw==null)
return;
@@ -311,14 +311,14 @@
throw new RuntimeException("Unsupported API: "+api);
}
- static public class Sampler extends Thread {
- private final AtomicReference<ArrayList<Long>> samples = new AtomicReference<ArrayList<Long>>();
+ static public class RateSampler extends Thread {
+ private final AtomicReference<ArrayList<Double>> samples = new AtomicReference<ArrayList<Double>>();
private final AtomicLong metric;
private final int count;
private final long period;
public boolean verbose;
- public Sampler(AtomicLong metric, int count, double periodInSecs) {
+ public RateSampler(AtomicLong metric, int count, double periodInSecs) {
super("Sampler");
this.metric = metric;
this.count = count;
@@ -327,25 +327,39 @@
setDaemon(true);
}
+ static final long NANOS_PER_SECOND = NANOSECONDS.convert(1, SECONDS);
+
static private long ns(double v) {
- return (long)(v*NANOSECONDS.convert(1, SECONDS));
+ return (long)(v*NANOS_PER_SECOND);
}
+
@Override
public void run() {
- ArrayList<Long> samples = new ArrayList<Long>(count);
+ ArrayList<Double> samples = new ArrayList<Double>(count);
try {
long sleepMS = period/1000000;
int sleepNS = (int) (period%1000000);
- long currentValue;
+ long currentValue, now;
long lastValue = metric.get();
+ long lastTime = System.nanoTime();
+
+
for (int i = 0; i < count; i++) {
if( verbose ) {
System.out.print(".");
}
Thread.sleep(sleepMS,sleepNS);
+
+ now = System.nanoTime();
currentValue = metric.get();
- samples.add(currentValue-lastValue);
+
+ double t = (now-lastTime);
+ t = t/NANOS_PER_SECOND;
+ t = t*(currentValue-lastValue);
+ samples.add(t);
+
+ lastTime=now;
lastValue=currentValue;
}
} catch (InterruptedException e) {
@@ -357,7 +371,7 @@
}
}
- public synchronized ArrayList<Long> getSamples() {
+ public synchronized ArrayList<Double> getSamples() {
return samples.get();
}
}
@@ -369,7 +383,7 @@
public boolean random;
public boolean sync;
public boolean memcopy;
- public ArrayList<Long> samples;
+ public ArrayList<Double> samples;
final public void execute() throws IOException {
@@ -385,7 +399,7 @@
System.out.print("Benchmarking: api: "+apiName+", operation: "+operation+", random: "+random+", sync: "+sync+", memcopy: "+memcopy+" ");
AtomicLong ioCount=new AtomicLong();
- Sampler sampler = new Sampler(ioCount, sampleCount, samplePeriod);
+ RateSampler sampler = new RateSampler(ioCount, sampleCount, samplePeriod);
sampler.verbose = verbose;
try {
init(true);