Skip to content
Snippets Groups Projects
Commit 66099993 authored by Florian Fittkau's avatar Florian Fittkau
Browse files

working prototype

parent a0d209fe
No related branches found
No related tags found
No related merge requests found
package explorviz.hpc_monitoring.filter.counting;
public final class CountingThroughputFilter {
private volatile long firstIntervalStart = -1;
private volatile long firstIntervalStart = -1;
private final long intervalSize;
private final long intervalSize;
private int currentCountForCurrentInterval = 0;
private int currentCountForCurrentInterval = 0;
private volatile long firstTimestampInCurrentInterval = -1;
private volatile long lastTimestampInCurrentInterval = -1;
private final String beforeOut;
private volatile long firstTimestampInCurrentInterval = -1;
private volatile long lastTimestampInCurrentInterval = -1;
private final String beforeOut;
public CountingThroughputFilter(final String beforeOut) {
this.beforeOut = beforeOut;
intervalSize = 1 * 1000 * 1000;
}
public CountingThroughputFilter(final String beforeOut) {
this.beforeOut = beforeOut;
intervalSize = 1 * 1000 * 1000 * 1000;
}
private void processEvent(final Object event, final long currentTime) {
final long startOfTimestampsInterval = computeFirstTimestampInInterval(currentTime);
final long endOfTimestampsInterval = computeLastTimestampInInterval(currentTime);
private void processEvent(final Object event, final long currentTime) {
final long startOfTimestampsInterval = computeFirstTimestampInInterval(currentTime);
final long endOfTimestampsInterval = computeLastTimestampInInterval(currentTime);
if (endOfTimestampsInterval > lastTimestampInCurrentInterval) {
if (firstTimestampInCurrentInterval >= 0) {
final long currentCount = currentCountForCurrentInterval;
System.out.println(beforeOut + ": " + currentCount);
}
if (endOfTimestampsInterval > lastTimestampInCurrentInterval) {
if (firstTimestampInCurrentInterval >= 0) {
final long currentCount = currentCountForCurrentInterval;
System.out.println(beforeOut + ": " + currentCount);
}
firstTimestampInCurrentInterval = startOfTimestampsInterval;
lastTimestampInCurrentInterval = endOfTimestampsInterval;
currentCountForCurrentInterval = 0;
}
firstTimestampInCurrentInterval = startOfTimestampsInterval;
lastTimestampInCurrentInterval = endOfTimestampsInterval;
currentCountForCurrentInterval = 0;
}
currentCountForCurrentInterval++;
}
currentCountForCurrentInterval++;
}
public final void inputObjects(final Object object) {
processEvent(object, System.currentTimeMillis() * 1000);
}
public final void inputObjects(final Object object) {
processEvent(object, System.currentTimeMillis() * 1000 * 1000);
}
private long computeFirstTimestampInInterval(final long timestamp) {
if (firstIntervalStart == -1) {
firstIntervalStart = timestamp;
}
private long computeFirstTimestampInInterval(final long timestamp) {
if (firstIntervalStart == -1) {
firstIntervalStart = timestamp;
}
return ((timestamp / intervalSize) * intervalSize);
}
return ((timestamp / intervalSize) * intervalSize);
}
private long computeLastTimestampInInterval(final long timestamp) {
return ((((timestamp / intervalSize) + 1) * intervalSize) - 1);
}
private long computeLastTimestampInInterval(final long timestamp) {
return ((((timestamp / intervalSize) + 1) * intervalSize) - 1);
}
}
......@@ -40,12 +40,12 @@ public final class TraceReconstructionFilter implements
RecordEvent.EVENT_FACTORY, 16384, exec);
final EventHandler<RecordEvent>[] eventHandlers = new EventHandler[1];
eventHandlers[0] = new TracePatternSummarizationFilter(5 * 1000 * 1000,
endReceiver);
eventHandlers[0] = new TracePatternSummarizationFilter(
2 * 1000 * 1000 * 1000, endReceiver);
disruptor.handleEventsWith(eventHandlers);
ringBuffer = disruptor.start();
new TimeReader(1 * 1000 * 1000, this).start();
new TimeReader(2 * 1000, this).start();
}
@Override
......
......@@ -47,7 +47,7 @@ public class TracePatternSummarizationFilter implements
disruptor.handleEventsWith(eventHandlers);
}
ringBuffer = disruptor.start();
new TimeReader(1 * 1000 * 1000, this).start();
new TimeReader(1 * 1000, this).start();
}
@Override
......
......@@ -36,8 +36,8 @@ public class MessageDistributer implements EventHandler<ByteArrayEvent> {
RecordEvent.EVENT_FACTORY, 32768, exec);
final EventHandler<RecordEvent>[] eventHandlers = new EventHandler[1];
eventHandlers[0] = new TraceReconstructionFilter(5 * 1000 * 1000,
endReceiver);
eventHandlers[0] = new TraceReconstructionFilter(
1 * 1000 * 1000 * 1000, endReceiver);
disruptor.handleEventsWith(eventHandlers);
ringBuffer = disruptor.start();
}
......
......@@ -11,9 +11,9 @@ public final class TimeReader {
private final IPeriodicTimeSignalReceiver receiver;
public TimeReader(final long periodInNanoSec,
public TimeReader(final long periodInMilliSec,
final IPeriodicTimeSignalReceiver receiver) {
period = periodInNanoSec;
period = periodInMilliSec;
this.receiver = receiver;
executorService = new ScheduledThreadPoolExecutor(1);
}
......@@ -24,7 +24,7 @@ public final class TimeReader {
public void run() {
sendTimestampEvent();
}
}, 0, period, TimeUnit.NANOSECONDS);
}, 0, period, TimeUnit.MILLISECONDS);
}
protected void sendTimestampEvent() {
......
......@@ -28,94 +28,92 @@ import java.io.Serializable;
*/
public final class RuntimeStatisticInformation implements Serializable {
private static final long serialVersionUID = -1628273045707598143L;
private long count = 0;
private long min = Long.MAX_VALUE;
private long max = Long.MIN_VALUE;
private double sum;
private double squareSum;
public RuntimeStatisticInformation(final long runtime) {
set(runtime);
}
public long getCount() {
return count;
}
public long getMin() {
return min;
}
public long getMax() {
return max;
}
public long getAvg() {
if (count > 0) {
return (long) (sum / count);
}
else {
return -1;
}
}
public long getStandardDeviation() {
if (count <= 2) {
return -1;
}
else {
final double variance = (squareSum - ((sum * sum) / count))
/ (count - 1);
return (long) Math.sqrt(variance);
}
}
public double getSum() {
return sum;
}
public double getSquareSum() {
return squareSum;
}
public void insert(final long data) {
count++;
final double dataDouble = data;
sum += dataDouble;
squareSum += dataDouble * dataDouble;
min = Math.min(data, min);
max = Math.max(data, max);
}
public void set(final long data) {
count = 1;
// final double dataDouble = data;
// sum = dataDouble;
// squareSum = dataDouble * dataDouble;
// max = data;
// min = data;
}
public void merge(final RuntimeStatisticInformation statistics) {
count += statistics.getCount();
// sum += statistics.getSum();
// squareSum += statistics.getSquareSum();
// min = Math.min(statistics.getMin(), min);
// max = Math.max(statistics.getMax(), max);
}
@Override
public String toString() {
return count + ":" + min + ":" + max + ":" + sum + ":" + squareSum;
}
private static final long serialVersionUID = -1628273045707598143L;
private int count = 0;
private long min = Long.MAX_VALUE;
private long max = Long.MIN_VALUE;
private double sum;
private double squareSum;
public RuntimeStatisticInformation(final long runtime) {
set(runtime);
}
public int getCount() {
return count;
}
public long getMin() {
return min;
}
public long getMax() {
return max;
}
public long getAvg() {
if (count > 0) {
return (long) (sum / count);
} else {
return -1;
}
}
public long getStandardDeviation() {
if (count <= 2) {
return -1;
} else {
final double variance = (squareSum - ((sum * sum) / count))
/ (count - 1);
return (long) Math.sqrt(variance);
}
}
public double getSum() {
return sum;
}
public double getSquareSum() {
return squareSum;
}
public void insert(final long data) {
count++;
final double dataDouble = data;
sum += dataDouble;
squareSum += dataDouble * dataDouble;
min = Math.min(data, min);
max = Math.max(data, max);
}
public void set(final long data) {
count = 1;
// final double dataDouble = data;
// sum = dataDouble;
// squareSum = dataDouble * dataDouble;
// max = data;
// min = data;
}
public void merge(final RuntimeStatisticInformation statistics) {
count += statistics.getCount();
// sum += statistics.getSum();
// squareSum += statistics.getSquareSum();
// min = Math.min(statistics.getMin(), min);
// max = Math.max(statistics.getMax(), max);
}
@Override
public String toString() {
return count + ":" + min + ":" + max + ":" + sum + ":" + squareSum;
}
}
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