From 66099993380637c0fa9df634f171ea6f622c8a18 Mon Sep 17 00:00:00 2001 From: Florian Fittkau <ffi@informatik.uni-kiel.de> Date: Tue, 27 Aug 2013 16:53:30 +0200 Subject: [PATCH] working prototype --- .../counting/CountingThroughputFilter.java | 72 +++---- .../TraceReconstructionFilter.java | 6 +- .../TracePatternSummarizationFilter.java | 2 +- .../reader/MessageDistributer.java | 4 +- .../hpc_monitoring/reader/TimeReader.java | 6 +- .../record/RuntimeStatisticInformation.java | 176 +++++++++--------- 6 files changed, 132 insertions(+), 134 deletions(-) diff --git a/src/explorviz/hpc_monitoring/filter/counting/CountingThroughputFilter.java b/src/explorviz/hpc_monitoring/filter/counting/CountingThroughputFilter.java index 7f4125e..899d55d 100644 --- a/src/explorviz/hpc_monitoring/filter/counting/CountingThroughputFilter.java +++ b/src/explorviz/hpc_monitoring/filter/counting/CountingThroughputFilter.java @@ -1,52 +1,52 @@ 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); + } } diff --git a/src/explorviz/hpc_monitoring/filter/reconstruction/TraceReconstructionFilter.java b/src/explorviz/hpc_monitoring/filter/reconstruction/TraceReconstructionFilter.java index 09aa8a6..3aaa1f0 100644 --- a/src/explorviz/hpc_monitoring/filter/reconstruction/TraceReconstructionFilter.java +++ b/src/explorviz/hpc_monitoring/filter/reconstruction/TraceReconstructionFilter.java @@ -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 diff --git a/src/explorviz/hpc_monitoring/filter/reduction/TracePatternSummarizationFilter.java b/src/explorviz/hpc_monitoring/filter/reduction/TracePatternSummarizationFilter.java index e32960f..7cde13d 100644 --- a/src/explorviz/hpc_monitoring/filter/reduction/TracePatternSummarizationFilter.java +++ b/src/explorviz/hpc_monitoring/filter/reduction/TracePatternSummarizationFilter.java @@ -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 diff --git a/src/explorviz/hpc_monitoring/reader/MessageDistributer.java b/src/explorviz/hpc_monitoring/reader/MessageDistributer.java index 3d88fd1..28be0ee 100644 --- a/src/explorviz/hpc_monitoring/reader/MessageDistributer.java +++ b/src/explorviz/hpc_monitoring/reader/MessageDistributer.java @@ -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(); } diff --git a/src/explorviz/hpc_monitoring/reader/TimeReader.java b/src/explorviz/hpc_monitoring/reader/TimeReader.java index cdfba27..19b2897 100644 --- a/src/explorviz/hpc_monitoring/reader/TimeReader.java +++ b/src/explorviz/hpc_monitoring/reader/TimeReader.java @@ -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() { diff --git a/src/explorviz/hpc_monitoring/record/RuntimeStatisticInformation.java b/src/explorviz/hpc_monitoring/record/RuntimeStatisticInformation.java index 2d3a7b5..b87c75e 100644 --- a/src/explorviz/hpc_monitoring/record/RuntimeStatisticInformation.java +++ b/src/explorviz/hpc_monitoring/record/RuntimeStatisticInformation.java @@ -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; + } } -- GitLab