You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2017/10/26 16:22:53 UTC
[2/3] activemq-artemis git commit: ARTEMIS-1476 Improving output on
percentiles
ARTEMIS-1476 Improving output on percentiles
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/e34b787a
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/e34b787a
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/e34b787a
Branch: refs/heads/master
Commit: e34b787a77fff072d8ad30154d90f6fcfff219ec
Parents: c76369a
Author: Clebert Suconic <cl...@apache.org>
Authored: Thu Oct 26 11:29:46 2017 -0400
Committer: Clebert Suconic <cl...@apache.org>
Committed: Thu Oct 26 12:20:17 2017 -0400
----------------------------------------------------------------------
.../cli/commands/util/SyncCalculation.java | 44 ++++++++++++++++----
1 file changed, 36 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e34b787a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/util/SyncCalculation.java
----------------------------------------------------------------------
diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/util/SyncCalculation.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/util/SyncCalculation.java
index fa99c7b..c01506d 100644
--- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/util/SyncCalculation.java
+++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/util/SyncCalculation.java
@@ -82,8 +82,21 @@ public class SyncCalculation {
//the write latencies could be taken only when writes are effectively synchronous
final Histogram writeLatencies = (verbose && !asyncWrites) ? new Histogram(MAX_FLUSH_NANOS, 2) : null;
+ if (journalType == JournalType.ASYNCIO && syncWrites) {
+ System.out.println();
+ System.out.println("*******************************************************************************************");
+ System.out.println("*** Notice: The recommendation for AsyncIO journal is to not use --sync-writes ***");
+ System.out.println("*** The measures here will be useful to understand your device ***");
+ System.out.println("*** however the result here won't represent the best configuration option ***");
+ System.out.println("*******************************************************************************************");
+ System.out.println();
+ }
+
if (verbose) {
System.out.println("Using " + factory.getClass().getName() + " to calculate sync times, alignment=" + factory.getAlignment());
+ if (writeLatencies == null) {
+ System.out.println("*** Use --sync-writes if you want to see a histogram for each write performed ***");
+ }
}
SequentialFile file = factory.createSequentialFile(fileName);
//to be sure that a process/thread crash won't leave the dataFolder with garbage files
@@ -91,12 +104,13 @@ public class SyncCalculation {
try {
final ByteBuffer bufferBlock = allocateAlignedBlock(blockSize, factory);
- final int alignedBlockSize = bufferBlock.remaining();
+ // making sure the blockSize matches the device
+ blockSize = bufferBlock.remaining();
file.delete();
file.open();
- file.fill(alignedBlockSize * blocks);
+ file.fill(blockSize * blocks);
file.close();
@@ -156,18 +170,32 @@ public class SyncCalculation {
System.out.println("Writes / millisecond = " + dcformat.format(writesPerMillisecond));
System.out.println("bufferTimeout = " + toNanos(result[ntry], blocks, verbose));
System.out.println("**************************************************");
- if (writeLatencies != null) {
- System.out.println("Write Latencies Percentile Distribution in microseconds");
- //print latencies in us -> (ns * 1000d)
- writeLatencies.outputPercentileDistribution(System.out, 1000d);
- writeLatencies.reset();
- }
}
file.close();
+
+ if (ntry == 0 && writeLatencies != null) {
+ writeLatencies.reset(); // discarding the first one.. some warmup time
+ }
}
factory.releaseDirectBuffer(bufferBlock);
+ if (writeLatencies != null) {
+ System.out.println("Write Latencies Percentile Distribution in microseconds");
+ //print latencies in us -> (ns * 1000d)
+
+ System.out.println("*****************************************************************");
+ writeLatencies.outputPercentileDistribution(System.out, 1000d);
+ System.out.println();
+ System.out.println("*****************************************************************");
+ System.out.println("*** this may be useful to generate charts if you like charts: ***");
+ System.out.println("*** http://hdrhistogram.github.io/HdrHistogram/plotFiles.html ***");
+ System.out.println("*****************************************************************");
+ System.out.println();
+
+ writeLatencies.reset();
+ }
+
long totalTime = Long.MAX_VALUE;
for (int i = 0; i < tries; i++) {
if (result[i] < totalTime) {