Skip to content
Snippets Groups Projects
Commit d3d495fd authored by nitsanw's avatar nitsanw Committed by Sean Busbey
Browse files

[client] - Correct status reporting sliding timing

- Make status interval configurable
parent b634f0cd
No related branches found
No related tags found
No related merge requests found
......@@ -28,6 +28,7 @@ import java.util.Date;
import java.util.Enumeration;
import java.util.Properties;
import java.util.Vector;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.LockSupport;
import com.yahoo.ycsb.measurements.Measurements;
......@@ -51,13 +52,14 @@ class StatusThread extends Thread
/**
* The interval for reporting status.
*/
public static final long sleeptime=10000;
long _sleeptimeNs;
public StatusThread(Vector<Thread> threads, String label, boolean standardstatus)
public StatusThread(Vector<Thread> threads, String label, boolean standardstatus, int statusIntervalSeconds)
{
_threads=threads;
_label=label;
_standardstatus=standardstatus;
_sleeptimeNs=TimeUnit.SECONDS.toNanos(statusIntervalSeconds);
}
/**
......@@ -65,8 +67,9 @@ class StatusThread extends Thread
*/
public void run()
{
long st=System.currentTimeMillis();
final long st=System.currentTimeMillis();
final long startTimeNanos = System.nanoTime();
long deadline = startTimeNanos + _sleeptimeNs;
long lasten=st;
long lasttotalops=0;
......@@ -119,15 +122,8 @@ class StatusThread extends Thread
System.out.println(msg);
}
try
{
sleep(sleeptime);
}
catch (InterruptedException e)
{
//do nothing
}
ClientThread.sleepUntil(deadline);
deadline+=_sleeptimeNs;
}
while (!alldone);
}
......@@ -282,7 +278,7 @@ class ClientThread extends Thread
}
}
private void sleepUntil(long deadline) {
static void sleepUntil(long deadline) {
long now = System.nanoTime();
while((now = System.nanoTime()) < deadline) {
LockSupport.parkNanos(deadline - now);
......@@ -754,11 +750,12 @@ public class Client
if (status)
{
boolean standardstatus=false;
if (props.getProperty(Measurements.MEASUREMENT_TYPE_PROPERTY,"").compareTo("timeseries")==0)
if (props.getProperty(Measurements.MEASUREMENT_TYPE_PROPERTY,"").compareTo("timeseries")==0)
{
standardstatus=true;
}
statusthread=new StatusThread(threads,label,standardstatus);
}
int statusIntervalSeconds = Integer.parseInt(props.getProperty("status.interval","10"));
statusthread=new StatusThread(threads,label,standardstatus,statusIntervalSeconds);
statusthread.start();
}
......
......@@ -34,7 +34,7 @@ public class Measurements
public static final String MEASUREMENT_TYPE_PROPERTY = "measurementtype";
private static final String MEASUREMENT_TYPE_PROPERTY_DEFAULT = "histogram";
private static final String MEASUREMENT_INTERVAL = "measurement.interval";
public static final String MEASUREMENT_INTERVAL = "measurement.interval";
private static final String MEASUREMENT_INTERVAL_DEFAULT = "op";
static Measurements singleton=null;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment