From 08e2feed100d83670adf5138dc5ebf3772bbd059 Mon Sep 17 00:00:00 2001 From: Alok Nikhil Date: Thu, 20 Aug 2020 09:30:37 -0700 Subject: [PATCH 01/47] Fixes for Benchmarking Kafka/RabbitMQ/Pulsar --- .gitignore | 1 - benchmark-framework/.factorypath | 122 + .../io/openmessaging/benchmark/Benchmark.java | 16 +- .../openmessaging/benchmark/TestResult.java | 2 +- .../io/openmessaging/benchmark/Workload.java | 30 +- .../benchmark/WorkloadGenerator.java | 145 +- .../worker/DistributedWorkersEnsemble.java | 85 +- .../benchmark/worker/LocalWorker.java | 83 +- .../openmessaging/benchmark/worker/Topic.java | 32 + .../benchmark/worker/Worker.java | 9 +- .../benchmark/worker/WorkerHandler.java | 29 +- .../worker/commands/TopicSubscription.java | 4 +- .../benchmark/worker/commands/TopicsInfo.java | 2 +- bin/benchmark-worker | 6 +- bin/create_charts.py | 2 +- bin/parse.py | 291 + .../rabbitmq.yaml => bin/workers.yaml | 11 +- .../kafka/latency/default-sync-200k.json | 4006 +++++ blog/results/kafka/latency/sync-200k.json | 2258 +++ .../kafka/throughput/default-sync.json | 3014 ++++ blog/results/kafka/throughput/sync.json | 3041 ++++ .../pulsar/latency/default-sync-200k.json | 2230 +++ .../throughput/default-sync-colocated.json | 2739 +++ .../pulsar/throughput/default-sync-raid0.json | 3361 ++++ .../throughput/default-sync-tiered.json | 2959 ++++ .../results/rabbitmq/latency/classic-30k.json | 2935 ++++ .../rabbitmq/latency/mirrored-30k.json | 3589 ++++ blog/results/rabbitmq/throughput/classic.json | 3149 ++++ .../results/rabbitmq/throughput/mirrored.json | 2795 +++ ...partitions-1kb-4-producers-1000k-rate.yaml | 31 + ...-partitions-1kb-4-producers-100k-rate.yaml | 31 + ...0-partitions-1kb-4-producers-10k-rate.yaml | 31 + ...-partitions-1kb-4-producers-200k-rate.yaml | 31 + ...0-partitions-1kb-4-producers-40k-rate.yaml | 31 + ...-partitions-1kb-4-producers-500k-rate.yaml | 31 + ...0-partitions-1kb-4-producers-50k-rate.yaml | 31 + ...0-partitions-1kb-4-producers-75k-rate.yaml | 31 + ...partitions-1kb-4-producers-1000k-rate.yaml | 31 + ...-partitions-1kb-4-producers-100k-rate.yaml | 31 + ...0-partitions-1kb-4-producers-10k-rate.yaml | 31 + ...-partitions-1kb-4-producers-200k-rate.yaml | 31 + ...-partitions-1kb-4-producers-500k-rate.yaml | 31 + ...0-partitions-1kb-4-producers-50k-rate.yaml | 31 + .../benchmark/driver/BenchmarkDriver.java | 28 +- .../artemis/ArtemisBenchmarkDriver.java | 11 +- .../artemis/ArtemisBenchmarkProducer.java | 6 +- .../bookkeeper/DlogBenchmarkDriver.java | 35 +- driver-kafka/deploy/deploy.yaml | 301 +- driver-kafka/deploy/monitoring/Dockerfile | 54 + driver-kafka/deploy/monitoring/README.md | 3 + .../deploy/monitoring/dashboards.yaml | 45 + .../deploy/monitoring/dashboards/jvm.json | 2557 +++ .../deploy/monitoring/dashboards/perf.json | 878 + .../monitoring/dashboards/prometheus.json | 719 + .../monitoring/dashboards/pulsar_perf.json | 1036 ++ .../monitoring/dashboards/rabbit_perf.json | 892 + .../deploy/monitoring/dashboards/system.json | 14051 ++++++++++++++++ .../monitoring/dashboards/zookeeper.json | 953 ++ driver-kafka/deploy/monitoring/grafana.ini | 39 + .../deploy/monitoring/jmx_exporter/client.yml | 22 + .../jmx_prometheus_javaagent-0.13.0.jar | Bin 0 -> 374371 bytes .../monitoring/jmx_exporter/metrics.yml | 122 + .../monitoring/jmx_exporter/zookeeper.yml | 123 + .../deploy/monitoring/start.sh | 25 +- driver-kafka/deploy/provision-kafka-aws.tf | 92 +- driver-kafka/deploy/templates/chrony.conf | 19 + .../deploy/templates/kafka-dashboard.service | 16 + driver-kafka/deploy/templates/kafka.service | 3 + .../deploy/templates/prometheus.service | 13 + driver-kafka/deploy/templates/prometheus.yml | 83 + .../deploy/templates/server.properties | 8 + .../deploy/templates/zookeeper.service | 1 + driver-kafka/deploy/terraform.tfvars | 15 +- driver-kafka/{kafka.yaml => kafka-0.yaml} | 4 +- driver-kafka/kafka-1.yaml | 40 + driver-kafka/kafka-all.yaml | 41 + driver-kafka/kafka-exactly-once.yaml | 2 +- driver-kafka/kafka-group-all.yaml | 42 + driver-kafka/kafka-sync-0.yaml | 44 + driver-kafka/kafka-sync-1.yaml | 44 + .../{kafka-sync.yaml => kafka-sync-all.yaml} | 1 + driver-kafka/kafka-sync-group-all-1ms.yaml | 41 + driver-kafka/kafka-sync-group-all.yaml | 42 + driver-kafka/pom.xml | 26 +- .../benchmark/driver/kafka/Config.java | 2 + .../driver/kafka/KafkaBenchmarkConsumer.java | 17 +- .../driver/kafka/KafkaBenchmarkDriver.java | 67 +- .../NatsStreamingBenchmarkDriver.java | 45 +- .../driver/nats/NatsBenchmarkDriver.java | 31 +- .../driver/nats/NatsBenchmarkProducer.java | 17 +- .../driver/nsq/NsqBenchmarkDriver.java | 46 +- driver-pulsar/deploy/bounce.sh | 37 + driver-pulsar/deploy/cpworkerjars.sh | 30 + driver-pulsar/deploy/deploy.yaml | 6 +- driver-pulsar/deploy/deploy_tiered.yaml | 372 + driver-pulsar/deploy/deploy_with_stats.yaml | 81 +- driver-pulsar/deploy/grep-errors.yaml | 29 + driver-pulsar/deploy/provision-pulsar-aws.tf | 56 +- driver-pulsar/deploy/ps.yaml | 31 + driver-pulsar/deploy/templates/bkenv.sh | 54 + .../deploy/templates/bookkeeper.conf | 2 +- driver-pulsar/deploy/templates/chrony.conf | 19 + .../deploy/templates/prometheus.service | 1 + driver-pulsar/deploy/templates/prometheus.yml | 97 +- .../deploy/templates/prometheus_tiered.yml | 82 + .../deploy/templates/pulsar-dashboard.service | 4 +- driver-pulsar/deploy/templates/pulsar_env.sh | 2 +- driver-pulsar/deploy/templates/zoo.cfg | 3 + driver-pulsar/deploy/terraform.tfvars | 2 +- driver-pulsar/pom.xml | 2 +- driver-pulsar/pulsar-batched-50ms-linger.yaml | 50 + driver-pulsar/pulsar-batched.yaml | 50 + driver-pulsar/pulsar.yaml | 4 +- .../driver/pulsar/PulsarBenchmarkDriver.java | 64 +- .../pulsar/config/PulsarProducerConfig.java | 2 +- driver-rabbitmq/deploy/deploy.yaml | 433 +- driver-rabbitmq/deploy/deploy.yaml.bak | 285 + driver-rabbitmq/deploy/group_vars/all.yaml | 53 + driver-rabbitmq/deploy/handlers/main.yml | 1 + .../deploy/provision-rabbitmq-aws.tf | 62 +- driver-rabbitmq/deploy/templates/chrony.conf | 54 + .../templates/etc/default/rabbitmq-server.j2 | 4 + .../deploy/templates/etc/erlang.cookie.j2 | 1 + .../etc/rabbitmq/rabbitmq-env.conf.j2 | 2 + .../templates/etc/rabbitmq/rabbitmq.config.j2 | 16 + .../deploy/templates/prometheus.service | 13 + .../deploy/templates/prometheus.yml | 66 + .../templates/rabbitmq-dashboard.service | 16 + .../deploy/templates/rabbitmq-server.service | 40 +- .../deploy/templates/rabbitmq.yaml | 33 + driver-rabbitmq/deploy/terraform.tfvars | 8 +- driver-rabbitmq/pom.xml | 12 +- .../rabbitmq/RabbitMqBenchmarkConsumer.java | 6 +- .../rabbitmq/RabbitMqBenchmarkDriver.java | 188 +- .../rabbitmq/RabbitMqBenchmarkProducer.java | 37 +- .../driver/rabbitmq/RabbitMqConfig.java | 14 +- .../rocketmq/RocketMQBenchmarkDriver.java | 31 +- package/src/assemble/bin.xml | 1 + package/src/assemble/src.xml | 1 + pom.xml | 2 + 140 files changed, 61958 insertions(+), 583 deletions(-) create mode 100644 benchmark-framework/.factorypath create mode 100644 benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/Topic.java create mode 100755 bin/parse.py rename driver-rabbitmq/rabbitmq.yaml => bin/workers.yaml (80%) create mode 100644 blog/results/kafka/latency/default-sync-200k.json create mode 100644 blog/results/kafka/latency/sync-200k.json create mode 100644 blog/results/kafka/throughput/default-sync.json create mode 100644 blog/results/kafka/throughput/sync.json create mode 100644 blog/results/pulsar/latency/default-sync-200k.json create mode 100644 blog/results/pulsar/throughput/default-sync-colocated.json create mode 100644 blog/results/pulsar/throughput/default-sync-raid0.json create mode 100644 blog/results/pulsar/throughput/default-sync-tiered.json create mode 100644 blog/results/rabbitmq/latency/classic-30k.json create mode 100644 blog/results/rabbitmq/latency/mirrored-30k.json create mode 100644 blog/results/rabbitmq/throughput/classic.json create mode 100644 blog/results/rabbitmq/throughput/mirrored.json create mode 100644 blog/workloads/1-topic-100-partitions-1kb-4-producers-1000k-rate.yaml create mode 100644 blog/workloads/1-topic-100-partitions-1kb-4-producers-100k-rate.yaml create mode 100644 blog/workloads/1-topic-100-partitions-1kb-4-producers-10k-rate.yaml create mode 100644 blog/workloads/1-topic-100-partitions-1kb-4-producers-200k-rate.yaml create mode 100644 blog/workloads/1-topic-100-partitions-1kb-4-producers-40k-rate.yaml create mode 100644 blog/workloads/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml create mode 100644 blog/workloads/1-topic-100-partitions-1kb-4-producers-50k-rate.yaml create mode 100644 blog/workloads/1-topic-100-partitions-1kb-4-producers-75k-rate.yaml create mode 100644 blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-1000k-rate.yaml create mode 100644 blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-100k-rate.yaml create mode 100644 blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-10k-rate.yaml create mode 100644 blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-200k-rate.yaml create mode 100644 blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml create mode 100644 blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-50k-rate.yaml create mode 100644 driver-kafka/deploy/monitoring/Dockerfile create mode 100644 driver-kafka/deploy/monitoring/README.md create mode 100644 driver-kafka/deploy/monitoring/dashboards.yaml create mode 100644 driver-kafka/deploy/monitoring/dashboards/jvm.json create mode 100644 driver-kafka/deploy/monitoring/dashboards/perf.json create mode 100644 driver-kafka/deploy/monitoring/dashboards/prometheus.json create mode 100644 driver-kafka/deploy/monitoring/dashboards/pulsar_perf.json create mode 100644 driver-kafka/deploy/monitoring/dashboards/rabbit_perf.json create mode 100644 driver-kafka/deploy/monitoring/dashboards/system.json create mode 100644 driver-kafka/deploy/monitoring/dashboards/zookeeper.json create mode 100644 driver-kafka/deploy/monitoring/grafana.ini create mode 100644 driver-kafka/deploy/monitoring/jmx_exporter/client.yml create mode 100644 driver-kafka/deploy/monitoring/jmx_exporter/jmx_prometheus_javaagent-0.13.0.jar create mode 100644 driver-kafka/deploy/monitoring/jmx_exporter/metrics.yml create mode 100644 driver-kafka/deploy/monitoring/jmx_exporter/zookeeper.yml rename bin/benchmark => driver-kafka/deploy/monitoring/start.sh (63%) create mode 100644 driver-kafka/deploy/templates/kafka-dashboard.service create mode 100644 driver-kafka/deploy/templates/prometheus.service create mode 100644 driver-kafka/deploy/templates/prometheus.yml rename driver-kafka/{kafka.yaml => kafka-0.yaml} (98%) create mode 100644 driver-kafka/kafka-1.yaml create mode 100644 driver-kafka/kafka-all.yaml create mode 100644 driver-kafka/kafka-group-all.yaml create mode 100644 driver-kafka/kafka-sync-0.yaml create mode 100644 driver-kafka/kafka-sync-1.yaml rename driver-kafka/{kafka-sync.yaml => kafka-sync-all.yaml} (99%) create mode 100644 driver-kafka/kafka-sync-group-all-1ms.yaml create mode 100644 driver-kafka/kafka-sync-group-all.yaml create mode 100755 driver-pulsar/deploy/bounce.sh create mode 100755 driver-pulsar/deploy/cpworkerjars.sh create mode 100644 driver-pulsar/deploy/deploy_tiered.yaml create mode 100644 driver-pulsar/deploy/grep-errors.yaml create mode 100644 driver-pulsar/deploy/ps.yaml create mode 100644 driver-pulsar/deploy/templates/bkenv.sh create mode 100644 driver-pulsar/deploy/templates/prometheus_tiered.yml create mode 100644 driver-pulsar/pulsar-batched-50ms-linger.yaml create mode 100644 driver-pulsar/pulsar-batched.yaml create mode 100644 driver-rabbitmq/deploy/deploy.yaml.bak create mode 100644 driver-rabbitmq/deploy/group_vars/all.yaml create mode 100644 driver-rabbitmq/deploy/handlers/main.yml create mode 100644 driver-rabbitmq/deploy/templates/chrony.conf create mode 100644 driver-rabbitmq/deploy/templates/etc/default/rabbitmq-server.j2 create mode 100644 driver-rabbitmq/deploy/templates/etc/erlang.cookie.j2 create mode 100644 driver-rabbitmq/deploy/templates/etc/rabbitmq/rabbitmq-env.conf.j2 create mode 100644 driver-rabbitmq/deploy/templates/etc/rabbitmq/rabbitmq.config.j2 create mode 100644 driver-rabbitmq/deploy/templates/prometheus.service create mode 100644 driver-rabbitmq/deploy/templates/prometheus.yml create mode 100644 driver-rabbitmq/deploy/templates/rabbitmq-dashboard.service create mode 100644 driver-rabbitmq/deploy/templates/rabbitmq.yaml diff --git a/.gitignore b/.gitignore index afdf1ed6..ff966d23 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,6 @@ target *.pyc *.svg core/*.json -*.json *.retry *.pem **/.terraform diff --git a/benchmark-framework/.factorypath b/benchmark-framework/.factorypath new file mode 100644 index 00000000..72602138 --- /dev/null +++ b/benchmark-framework/.factorypath @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/benchmark-framework/src/main/java/io/openmessaging/benchmark/Benchmark.java b/benchmark-framework/src/main/java/io/openmessaging/benchmark/Benchmark.java index e2c81c69..9e6d64ef 100644 --- a/benchmark-framework/src/main/java/io/openmessaging/benchmark/Benchmark.java +++ b/benchmark-framework/src/main/java/io/openmessaging/benchmark/Benchmark.java @@ -63,6 +63,9 @@ static class Arguments { @Parameter(description = "Workloads", required = true) public List workloads; + + @Parameter(names = { "-o", "--output" }, description = "Output", required = false) + public String output; } public static void main(String[] args) throws Exception { @@ -124,6 +127,14 @@ public static void main(String[] args) throws Exception { } workloads.forEach((workloadName, workload) -> { + + try { + workload.validate(); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + System.exit(-1); + } + arguments.drivers.forEach(driverConfig -> { try { File driverConfigFile = new File(driverConfig); @@ -141,8 +152,9 @@ public static void main(String[] args) throws Exception { TestResult result = generator.run(); - String fileName = String.format("%s-%s-%s.json", workloadName, driverConfiguration.name, - dateFormat.format(new Date())); + String fileName = arguments.output.length() > 0 ? arguments.output + : String.format("%s-%s-%s.json", workloadName, driverConfiguration.name, + dateFormat.format(new Date())); log.info("Writing test result into {}", fileName); writer.writeValue(new File(fileName), result); diff --git a/benchmark-framework/src/main/java/io/openmessaging/benchmark/TestResult.java b/benchmark-framework/src/main/java/io/openmessaging/benchmark/TestResult.java index d4b7d233..ac2dbdb0 100644 --- a/benchmark-framework/src/main/java/io/openmessaging/benchmark/TestResult.java +++ b/benchmark-framework/src/main/java/io/openmessaging/benchmark/TestResult.java @@ -52,7 +52,7 @@ public class TestResult { public Map aggregatedPublishLatencyQuantiles = new TreeMap<>(); // End to end latencies (from producer to consumer) - // Latencies are expressed in milliseconds (without decimals) + // Latencies are expressed in milliseconds public List endToEndLatencyAvg = new ArrayList<>(); public List endToEndLatency50pct = new ArrayList<>(); diff --git a/benchmark-framework/src/main/java/io/openmessaging/benchmark/Workload.java b/benchmark-framework/src/main/java/io/openmessaging/benchmark/Workload.java index a537a2e2..b67ce8d1 100644 --- a/benchmark-framework/src/main/java/io/openmessaging/benchmark/Workload.java +++ b/benchmark-framework/src/main/java/io/openmessaging/benchmark/Workload.java @@ -44,13 +44,35 @@ public class Workload { public int producerRate; /** - * If the consumer backlog is > 0, the generator will accumulate messages until the requested amount of storage is - * retained and then it will start the consumers to drain it. + * If the consumer backlog is > 0, the generator will accumulate messages until + * the requested amount of storage is retained and then it will start the + * consumers to drain it. * - * The testDurationMinutes will be overruled to allow the test to complete when the consumer has drained all the - * backlog and it's on par with the producer + * The testDurationMinutes will be overruled to allow the test to complete when + * the consumer has drained all the backlog and it's on par with the producer */ public long consumerBacklogSizeGB = 0; public int testDurationMinutes; + + /** + * Consumer only tests. The warn-up phase will be run w/ the specified producer + * configuration until the specified backlog is built. Following that, the + * producers are shut off and the consumers are run until the backlog is drained + */ + public boolean consumerOnly; + + public void validate() throws IllegalArgumentException { + if (consumerOnly && (subscriptionsPerTopic == 0 || consumerPerSubscription == 0)) { + throw new IllegalArgumentException("Consumer only tests need subscriptions/consumers"); + } + + if (consumerOnly && consumerBacklogSizeGB <= 0) { + throw new IllegalArgumentException("Consumer only tests need a backlog specification"); + } + + if (producerRate <= 0) { + throw new IllegalArgumentException("Producer rate should be > 0"); + } + } } diff --git a/benchmark-framework/src/main/java/io/openmessaging/benchmark/WorkloadGenerator.java b/benchmark-framework/src/main/java/io/openmessaging/benchmark/WorkloadGenerator.java index c9b075a1..38abc925 100644 --- a/benchmark-framework/src/main/java/io/openmessaging/benchmark/WorkloadGenerator.java +++ b/benchmark-framework/src/main/java/io/openmessaging/benchmark/WorkloadGenerator.java @@ -36,6 +36,7 @@ import io.openmessaging.benchmark.utils.Timer; import io.openmessaging.benchmark.utils.payload.FilePayloadReader; import io.openmessaging.benchmark.utils.payload.PayloadReader; +import io.openmessaging.benchmark.worker.Topic; import io.openmessaging.benchmark.worker.Worker; import io.openmessaging.benchmark.worker.commands.ConsumerAssignment; import io.openmessaging.benchmark.worker.commands.CountersStats; @@ -71,13 +72,18 @@ public WorkloadGenerator(String driverName, Workload workload, Worker worker) { public TestResult run() throws Exception { Timer timer = new Timer(); - List topics = worker.createTopics(new TopicsInfo(workload.topics, workload.partitionsPerTopic)); + List topics = worker.createTopics(new TopicsInfo(workload.topics, workload.partitionsPerTopic)); log.info("Created {} topics in {} ms", topics.size(), timer.elapsedMillis()); - createConsumers(topics); + // Notify other workers about these topics + worker.notifyTopicCreation(topics); + createProducers(topics); - ensureTopicsAreReady(); + if (workload.consumerPerSubscription > 0) { + createConsumers(topics); + // ensureTopicsAreReady(); + } if (workload.producerRate > 0) { targetPublishRate = workload.producerRate; @@ -124,18 +130,25 @@ public TestResult run() throws Exception { TestResult result = printAndCollectStats(workload.testDurationMinutes, TimeUnit.MINUTES); runCompleted = true; - worker.stopAll(); + try { + worker.stopAll(); + } catch (Exception e) { + log.error("Unable to stop workload - {}", e.toString()); + } return result; } private void ensureTopicsAreReady() throws IOException { log.info("Waiting for consumers to be ready"); - // This is work around the fact that there's no way to have a consumer ready in Kafka without first publishing - // some message on the topic, which will then trigger the partitions assignment to the consumers + // This is work around the fact that there's no way to have a consumer ready in + // Kafka without first publishing + // some message on the topic, which will then trigger the partitions assignment + // to the consumers int expectedMessages = workload.topics * workload.subscriptionsPerTopic; - // In this case we just publish 1 message and then wait for consumers to receive the data + // In this case we just publish 1 message and then wait for consumers to receive + // the data worker.probeProducers(); while (true) { @@ -156,8 +169,8 @@ private void ensureTopicsAreReady() throws IOException { } /** - * Adjust the publish rate to a level that is sustainable, meaning that we can consume all the messages that are - * being produced + * Adjust the publish rate to a level that is sustainable, meaning that we can + * consume all the messages that are being produced */ private void findMaximumSustainableRate(double currentRate) throws IOException { double maxRate = Double.MAX_VALUE; // Discovered max sustainable rate @@ -272,15 +285,14 @@ public void close() throws Exception { executor.shutdownNow(); } - private void createConsumers(List topics) throws IOException { + private void createConsumers(List topics) throws IOException { ConsumerAssignment consumerAssignment = new ConsumerAssignment(); - for(String topic: topics){ - for(int i = 0; i < workload.subscriptionsPerTopic; i++){ + for (Topic topic : topics) { + for (int i = 0; i < workload.subscriptionsPerTopic; i++) { String subscriptionName = String.format("sub-%03d-%s", i, RandomGenerator.getRandomString()); for (int j = 0; j < workload.consumerPerSubscription; j++) { - consumerAssignment.topicsSubscriptions - .add(new TopicSubscription(topic, subscriptionName)); + consumerAssignment.topicsSubscriptions.add(new TopicSubscription(topic.name, subscriptionName, j)); } } } @@ -293,12 +305,12 @@ private void createConsumers(List topics) throws IOException { log.info("Created {} consumers in {} ms", consumerAssignment.topicsSubscriptions.size(), timer.elapsedMillis()); } - private void createProducers(List topics) throws IOException { + private void createProducers(List topics) throws IOException { List fullListOfTopics = new ArrayList<>(); // Add the topic multiple times, one for each producer for (int i = 0; i < workload.producersPerTopic; i++) { - topics.forEach(fullListOfTopics::add); + topics.forEach(topic -> fullListOfTopics.add(topic.name)); } Collections.shuffle(fullListOfTopics); @@ -309,7 +321,7 @@ private void createProducers(List topics) throws IOException { log.info("Created {} producers in {} ms", fullListOfTopics.size(), timer.elapsedMillis()); } - private void buildAndDrainBacklog(List topics) throws IOException { + private void buildAndDrainBacklog(List topics) throws IOException { log.info("Stopping all consumers to build backlog"); worker.pauseConsumers(); @@ -335,6 +347,10 @@ private void buildAndDrainBacklog(List topics) throws IOException { log.info("--- Start draining backlog ---"); + if (workload.consumerOnly) { + log.info("Consume only test. Pausing producers while backlog is drained"); + worker.pauseProducers(); + } worker.resumeConsumers(); final long minBacklog = 1000; @@ -400,6 +416,13 @@ private TestResult printAndCollectStats(long testDurations, TimeUnit unit) throw dec.format(microsToMillis(stats.publishLatency.getValueAtPercentile(99.9))), throughputFormat.format(microsToMillis(stats.publishLatency.getMaxValue()))); + log.info("E2E Latency (ms) avg: {} - 50%: {} - 99%: {} - 99.9%: {} - Max: {}", + dec.format(microsToMillis(stats.endToEndLatency.getMean())), + dec.format(microsToMillis(stats.endToEndLatency.getValueAtPercentile(50))), + dec.format(microsToMillis(stats.endToEndLatency.getValueAtPercentile(99))), + dec.format(microsToMillis(stats.endToEndLatency.getValueAtPercentile(99.9))), + throughputFormat.format(microsToMillis(stats.endToEndLatency.getMaxValue()))); + result.publishRate.add(publishRate); result.consumeRate.add(consumeRate); result.backlog.add(currentBacklog); @@ -422,38 +445,56 @@ private TestResult printAndCollectStats(long testDurations, TimeUnit unit) throw result.endToEndLatencyMax.add(microsToMillis(stats.endToEndLatency.getMaxValue())); if (now >= testEndTime && !needToWaitForBacklogDraining) { - CumulativeLatencies agg = worker.getCumulativeLatencies(); + boolean complete = false; + int retry = 0; + CumulativeLatencies agg = null; + do { + try { + agg = worker.getCumulativeLatencies(); + } catch (Exception e) { + log.info("Retrying"); + retry++; + continue; + } + complete = true; + } while (!complete && retry < 10); + + if (!complete) { + throw new RuntimeException("Failed to collect aggregate latencies"); + } + log.info( "----- Aggregated Pub Latency (ms) avg: {} - 50%: {} - 95%: {} - 99%: {} - 99.9%: {} - 99.99%: {} - Max: {}", - dec.format(agg.publishLatency.getMean() / 1000.0), - dec.format(agg.publishLatency.getValueAtPercentile(50) / 1000.0), - dec.format(agg.publishLatency.getValueAtPercentile(95) / 1000.0), - dec.format(agg.publishLatency.getValueAtPercentile(99) / 1000.0), - dec.format(agg.publishLatency.getValueAtPercentile(99.9) / 1000.0), - dec.format(agg.publishLatency.getValueAtPercentile(99.99) / 1000.0), - throughputFormat.format(agg.publishLatency.getMaxValue() / 1000.0)); - - result.aggregatedPublishLatencyAvg = agg.publishLatency.getMean() / 1000.0; - result.aggregatedPublishLatency50pct = agg.publishLatency.getValueAtPercentile(50) / 1000.0; - result.aggregatedPublishLatency75pct = agg.publishLatency.getValueAtPercentile(75) / 1000.0; - result.aggregatedPublishLatency95pct = agg.publishLatency.getValueAtPercentile(95) / 1000.0; - result.aggregatedPublishLatency99pct = agg.publishLatency.getValueAtPercentile(99) / 1000.0; - result.aggregatedPublishLatency999pct = agg.publishLatency.getValueAtPercentile(99.9) / 1000.0; - result.aggregatedPublishLatency9999pct = agg.publishLatency.getValueAtPercentile(99.99) / 1000.0; - result.aggregatedPublishLatencyMax = agg.publishLatency.getMaxValue() / 1000.0; - - result.aggregatedEndToEndLatencyAvg = agg.endToEndLatency.getMean() / 1000.0; - result.aggregatedEndToEndLatency50pct = agg.endToEndLatency.getValueAtPercentile(50) / 1000.0; - result.aggregatedEndToEndLatency75pct = agg.endToEndLatency.getValueAtPercentile(75) / 1000.0; - result.aggregatedEndToEndLatency95pct = agg.endToEndLatency.getValueAtPercentile(95) / 1000.0; - result.aggregatedEndToEndLatency99pct = agg.endToEndLatency.getValueAtPercentile(99) / 1000.0; - result.aggregatedEndToEndLatency999pct = agg.endToEndLatency.getValueAtPercentile(99.9) / 1000.0; - result.aggregatedEndToEndLatency9999pct = agg.endToEndLatency.getValueAtPercentile(99.99) / 1000.0; - result.aggregatedEndToEndLatencyMax = agg.endToEndLatency.getMaxValue() / 1000.0; + dec.format(microsToMillis(agg.publishLatency.getMean())), + dec.format(microsToMillis(agg.publishLatency.getValueAtPercentile(50))), + dec.format(microsToMillis(agg.publishLatency.getValueAtPercentile(95))), + dec.format(microsToMillis(agg.publishLatency.getValueAtPercentile(99))), + dec.format(microsToMillis(agg.publishLatency.getValueAtPercentile(99.9))), + dec.format(microsToMillis(agg.publishLatency.getValueAtPercentile(99.99))), + throughputFormat.format(microsToMillis(agg.publishLatency.getMaxValue()))); + + result.aggregatedPublishLatencyAvg = microsToMillis(agg.publishLatency.getMean()); + result.aggregatedPublishLatency50pct = microsToMillis(agg.publishLatency.getValueAtPercentile(50)); + result.aggregatedPublishLatency75pct = microsToMillis(agg.publishLatency.getValueAtPercentile(75)); + result.aggregatedPublishLatency95pct = microsToMillis(agg.publishLatency.getValueAtPercentile(95)); + result.aggregatedPublishLatency99pct = microsToMillis(agg.publishLatency.getValueAtPercentile(99)); + result.aggregatedPublishLatency999pct = microsToMillis(agg.publishLatency.getValueAtPercentile(99.9)); + result.aggregatedPublishLatency9999pct = microsToMillis(agg.publishLatency.getValueAtPercentile(99.99)); + result.aggregatedPublishLatencyMax = microsToMillis(agg.publishLatency.getMaxValue()); + + result.aggregatedEndToEndLatencyAvg = microsToMillis(agg.endToEndLatency.getMean()); + result.aggregatedEndToEndLatency50pct = microsToMillis(agg.endToEndLatency.getValueAtPercentile(50)); + result.aggregatedEndToEndLatency75pct = microsToMillis(agg.endToEndLatency.getValueAtPercentile(75)); + result.aggregatedEndToEndLatency95pct = microsToMillis(agg.endToEndLatency.getValueAtPercentile(95)); + result.aggregatedEndToEndLatency99pct = microsToMillis(agg.endToEndLatency.getValueAtPercentile(99)); + result.aggregatedEndToEndLatency999pct = microsToMillis(agg.endToEndLatency.getValueAtPercentile(99.9)); + result.aggregatedEndToEndLatency9999pct = microsToMillis( + agg.endToEndLatency.getValueAtPercentile(99.99)); + result.aggregatedEndToEndLatencyMax = microsToMillis(agg.endToEndLatency.getMaxValue()); agg.publishLatency.percentiles(100).forEach(value -> { result.aggregatedPublishLatencyQuantiles.put(value.getPercentile(), - value.getValueIteratedTo() / 1000.0); + microsToMillis(value.getValueIteratedTo())); }); agg.endToEndLatency.percentiles(100).forEach(value -> { @@ -470,17 +511,17 @@ private TestResult printAndCollectStats(long testDurations, TimeUnit unit) throw return result; } - private static final DecimalFormat rateFormat = new PaddingDecimalFormat("0.0", 7); - private static final DecimalFormat throughputFormat = new PaddingDecimalFormat("0.0", 4); - private static final DecimalFormat dec = new PaddingDecimalFormat("0.0", 4); - - private static double microsToMillis(double timeInMicros) { - return timeInMicros / 1000.0; + private static double microsToMillis(double microTime) { + return microTime / (1000); } - private static double microsToMillis(long timeInMicros) { - return timeInMicros / 1000.0; + private static double microsToMillis(long microTime) { + return microTime / (1000.0); } + private static final DecimalFormat rateFormat = new PaddingDecimalFormat("0.000", 7); + private static final DecimalFormat throughputFormat = new PaddingDecimalFormat("0.000", 4); + private static final DecimalFormat dec = new PaddingDecimalFormat("0.000", 4); + private static final Logger log = LoggerFactory.getLogger(WorkloadGenerator.class); } diff --git a/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/DistributedWorkersEnsemble.java b/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/DistributedWorkersEnsemble.java index f10b0cf4..d4ad4774 100644 --- a/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/DistributedWorkersEnsemble.java +++ b/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/DistributedWorkersEnsemble.java @@ -19,7 +19,6 @@ package io.openmessaging.benchmark.worker; import static java.util.stream.Collectors.toList; -import static org.asynchttpclient.Dsl.asyncHttpClient; import java.io.File; import java.io.IOException; @@ -27,11 +26,15 @@ import java.nio.file.Files; import java.nio.file.Paths; import java.util.List; +import java.util.ArrayList; import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; import java.util.zip.DataFormatException; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; + import org.HdrHistogram.Histogram; import org.apache.pulsar.common.util.FutureUtil; import org.asynchttpclient.AsyncHttpClient; @@ -55,14 +58,17 @@ import io.openmessaging.benchmark.worker.commands.ProducerWorkAssignment; import io.openmessaging.benchmark.worker.commands.TopicSubscription; import io.openmessaging.benchmark.worker.commands.TopicsInfo; +import static org.asynchttpclient.Dsl.*; public class DistributedWorkersEnsemble implements Worker { + private final static int REQUEST_TIMEOUT_MS = 300_000; + private final static int READ_TIMEOUT_MS = 300_000; private final List workers; private final List producerWorkers; private final List consumerWorkers; - private final AsyncHttpClient httpClient = asyncHttpClient(); + private final AsyncHttpClient httpClient; private int numberOfUsedProducerWorkers; @@ -76,6 +82,8 @@ public DistributedWorkersEnsemble(List workers) { log.info("Workers list - producers: {}", producerWorkers); log.info("Workers list - consumers: {}", consumerWorkers); + + httpClient = asyncHttpClient(config().setRequestTimeout(REQUEST_TIMEOUT_MS).setReadTimeout(READ_TIMEOUT_MS)); } @Override @@ -85,17 +93,45 @@ public void initializeDriver(File configurationFile) throws IOException { } @Override - @SuppressWarnings("unchecked") - public List createTopics(TopicsInfo topicsInfo) throws IOException { + public List createTopics(TopicsInfo topicsInfo) throws IOException { // Create all topics from a single worker node - return (List) post(workers.get(0), "/create-topics", writer.writeValueAsBytes(topicsInfo), List.class) - .join(); + return (List) post(workers.get(0), "/create-topics", writer.writeValueAsBytes(topicsInfo), + new TypeReference>() { + }).join(); + } + + @Override + public void notifyTopicCreation(List topics) throws IOException { + List> futures = workers.stream().map(worker -> { + try { + return sendPost(worker, "/notify-topic-creation", writer.writeValueAsBytes(topics)); + } catch (JsonProcessingException e) { + CompletableFuture future = new CompletableFuture<>(); + future.completeExceptionally(e); + return future; + } + }).collect(toList()); + + FutureUtil.waitForAll(futures).join(); } @Override public void createProducers(List topics) { - List> topicsPerProducer = ListPartition.partitionList(topics, - producerWorkers.size()); + // topics is a normalized list i.e. it accounts for duplicated entries in case + // of m topics and n producers where m < n. In this case, map the topics as is + // to honor the number of producers per topic configured for the workload + List> topicsPerProducer; + if (topics.size() <= producerWorkers.size()) { + topicsPerProducer = new ArrayList<>(); + for (String topic : topics) { + List topicList = new ArrayList<>(); + topicList.add(topic); + topicsPerProducer.add(topicList); + } + } else { + topicsPerProducer = ListPartition.partitionList(topics, producerWorkers.size()); + } + Map> topicsPerProducerMap = Maps.newHashMap(); int i = 0; for (List assignedTopics : topicsPerProducer) { @@ -105,6 +141,8 @@ public void createProducers(List topics) { // Number of actually used workers might be less than available workers numberOfUsedProducerWorkers = i; + log.info("Number of producers configured for the topic: " + numberOfUsedProducerWorkers); + List> futures = topicsPerProducerMap.keySet().stream().map(producer -> { try { return sendPost(producer, "/create-producers", @@ -155,9 +193,8 @@ public void resumeConsumers() throws IOException { @Override public void createConsumers(ConsumerAssignment overallConsumerAssignment) { - List> subscriptionsPerConsumer = ListPartition.partitionList( - overallConsumerAssignment.topicsSubscriptions, - consumerWorkers.size()); + List> subscriptionsPerConsumer = ListPartition + .partitionList(overallConsumerAssignment.topicsSubscriptions, consumerWorkers.size()); Map topicsPerWorkerMap = Maps.newHashMap(); int i = 0; for (List tsl : subscriptionsPerConsumer) { @@ -216,8 +253,7 @@ public CumulativeLatencies getCumulativeLatencies() { stats.publishLatency.add(Histogram.decodeFromCompressedByteBuffer( ByteBuffer.wrap(is.publishLatencyBytes), TimeUnit.SECONDS.toMicros(30))); } catch (Exception e) { - log.error("Failed to decode publish latency: {}", - ByteBufUtil.prettyHexDump(Unpooled.wrappedBuffer(is.publishLatencyBytes))); + log.error("Failed to decode publish latency"); throw new RuntimeException(e); } @@ -263,7 +299,8 @@ private void sendPost(List hosts, String path, byte[] body) { private CompletableFuture sendPost(String host, String path, byte[] body) { return httpClient.preparePost(host + path).setBody(body).execute().toCompletableFuture().thenApply(x -> { if (x.getStatusCode() != 200) { - log.error("Failed to do HTTP post request to {}{} -- code: {}", host, path, x.getStatusCode()); + log.error("Failed to do HTTP post request to {}{} -- code: {} error: {}", host, path, x.getStatusCode(), + x.getResponseBody()); } Preconditions.checkArgument(x.getStatusCode() == 200); return (Void) null; @@ -288,7 +325,8 @@ private CompletableFuture get(String host, String path, Class clazz) { return httpClient.prepareGet(host + path).execute().toCompletableFuture().thenApply(response -> { try { if (response.getStatusCode() != 200) { - log.error("Failed to do HTTP get request to {}{} -- code: {}", host, path, response.getStatusCode()); + log.error("Failed to do HTTP get request to {}{} -- code: {}", host, path, + response.getStatusCode()); } Preconditions.checkArgument(response.getStatusCode() == 200); return mapper.readValue(response.getResponseBody(), clazz); @@ -298,14 +336,15 @@ private CompletableFuture get(String host, String path, Class clazz) { }); } - private CompletableFuture post(String host, String path, byte[] body, Class clazz) { + private CompletableFuture post(String host, String path, byte[] body, TypeReference type) { return httpClient.preparePost(host + path).setBody(body).execute().toCompletableFuture().thenApply(response -> { try { if (response.getStatusCode() != 200) { - log.error("Failed to do HTTP post request to {}{} -- code: {}", host, path, response.getStatusCode()); + log.error("Failed to do HTTP post request to {}{} -- code: {}", host, path, + response.getStatusCode()); } Preconditions.checkArgument(response.getStatusCode() == 200); - return mapper.readValue(response.getResponseBody(), clazz); + return mapper.readValue(response.getResponseBody(), type); } catch (IOException e) { throw new RuntimeException(e); } @@ -328,4 +367,14 @@ public void close() throws Exception { private static final Logger log = LoggerFactory.getLogger(DistributedWorkersEnsemble.class); + @Override + public void pauseProducers() throws IOException { + sendPost(producerWorkers, "/pause-producers", new byte[0]); + } + + @Override + public void resumeProducers() throws IOException { + sendPost(producerWorkers, "/resume-producers", new byte[0]); + } + } diff --git a/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/LocalWorker.java b/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/LocalWorker.java index a4de0364..97c48521 100644 --- a/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/LocalWorker.java +++ b/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/LocalWorker.java @@ -22,6 +22,8 @@ import java.io.File; import java.io.IOException; +import java.time.Instant; +import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -32,7 +34,13 @@ import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.LongAdder; -import java.util.function.Function; + +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectWriter; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; +import com.google.common.base.Preconditions; +import com.google.common.util.concurrent.RateLimiter; import org.HdrHistogram.Recorder; import org.apache.bookkeeper.stats.Counter; @@ -42,13 +50,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectWriter; -import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; -import com.google.common.base.Preconditions; -import com.google.common.util.concurrent.RateLimiter; - import io.netty.util.concurrent.DefaultThreadFactory; import io.openmessaging.benchmark.DriverConfiguration; import io.openmessaging.benchmark.driver.BenchmarkConsumer; @@ -105,6 +106,8 @@ public class LocalWorker implements Worker, ConsumerCallback { private boolean consumersArePaused = false; + private boolean producersArePaused = false; + public LocalWorker() { this(NullStatsLogger.INSTANCE); } @@ -141,18 +144,19 @@ public void initializeDriver(File driverConfigFile) throws IOException { } @Override - public List createTopics(TopicsInfo topicsInfo) { + public List createTopics(TopicsInfo topicsInfo) { List> futures = new ArrayList<>(); Timer timer = new Timer(); String topicPrefix = benchmarkDriver.getTopicNamePrefix(); - List topics = new ArrayList<>(); + List topics = new ArrayList<>(); for (int i = 0; i < topicsInfo.numberOfTopics; i++) { - String topic = String.format("%s-%s-%04d", topicPrefix, RandomGenerator.getRandomString(), i); + Topic topic = new Topic(String.format("%s-%s-%04d", topicPrefix, RandomGenerator.getRandomString(), i), + topicsInfo.numberOfPartitionsPerTopic); topics.add(topic); - futures.add(benchmarkDriver.createTopic(topic, topicsInfo.numberOfPartitionsPerTopic)); + futures.add(benchmarkDriver.createTopic(topic.name, topic.partitions)); } futures.forEach(CompletableFuture::join); @@ -161,6 +165,17 @@ public List createTopics(TopicsInfo topicsInfo) { return topics; } + @Override + public void notifyTopicCreation(List topics) { + List> futures = new ArrayList<>(); + + for (Topic topic : topics) { + futures.add(benchmarkDriver.notifyTopicCreation(topic.name, topic.partitions)); + } + + futures.forEach(CompletableFuture::join); + } + @Override public void createProducers(List topics) { Timer timer = new Timer(); @@ -177,7 +192,8 @@ public void createConsumers(ConsumerAssignment consumerAssignment) { Timer timer = new Timer(); List> futures = consumerAssignment.topicsSubscriptions.stream() - .map(ts -> benchmarkDriver.createConsumer(ts.topic, ts.subscription, this)).collect(toList()); + .map(ts -> benchmarkDriver.createConsumer(ts.topic, ts.subscription, Optional.of(ts.partition), this)) + .collect(toList()); futures.forEach(f -> consumers.add(f.join())); log.info("Created {} consumers in {} ms", consumers.size(), timer.elapsedMillis()); @@ -213,21 +229,28 @@ private void submitProducersToExecutor(List producers, KeyDis executor.submit(() -> { try { while (!testCompleted) { + while (producersArePaused) { + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + producers.forEach(producer -> { rateLimiter.acquire(); final long sendTime = System.nanoTime(); - producer.sendAsync(Optional.ofNullable(keyDistributor.next()), payloadData) - .thenRun(() -> { + producer.sendAsync(Optional.ofNullable(keyDistributor.next()), payloadData).thenRun(() -> { messagesSent.increment(); totalMessagesSent.increment(); messagesSentCounter.inc(); bytesSent.add(payloadData.length); bytesSentCounter.add(payloadData.length); - long latencyMicros = TimeUnit.NANOSECONDS.toMicros(System.nanoTime() - sendTime); - publishLatencyRecorder.recordValue(latencyMicros); - cumulativePublishLatencyRecorder.recordValue(latencyMicros); - publishLatencyStats.registerSuccessfulEvent(latencyMicros, TimeUnit.MICROSECONDS); + long microTime = TimeUnit.NANOSECONDS.toMicros(System.nanoTime() - sendTime); + publishLatencyRecorder.recordValue(microTime); + cumulativePublishLatencyRecorder.recordValue(microTime); + publishLatencyStats.registerSuccessfulEvent(microTime, TimeUnit.MICROSECONDS); }).exceptionally(ex -> { log.warn("Write error on message", ex); return null; @@ -242,7 +265,7 @@ private void submitProducersToExecutor(List producers, KeyDis @Override public void adjustPublishRate(double publishRate) { - if(publishRate < 1.0) { + if (publishRate < 1.0) { rateLimiter.setRate(1.0); return; } @@ -291,8 +314,11 @@ public void messageReceived(byte[] data, long publishTimestamp) { bytesReceived.add(data.length); bytesReceivedCounter.add(data.length); - long now = System.currentTimeMillis(); - long endToEndLatencyMicros = TimeUnit.MILLISECONDS.toMicros(now - publishTimestamp); + // NOTE: PublishTimestamp is expected to be using the wall-clock time across + // machines + Instant currentTime = Instant.now(); + long currentTimeNanos = TimeUnit.SECONDS.toNanos(currentTime.getEpochSecond()) + currentTime.getNano(); + long endToEndLatencyMicros = TimeUnit.NANOSECONDS.toMicros(currentTimeNanos - publishTimestamp); if (endToEndLatencyMicros > 0) { endToEndCumulativeLatencyRecorder.recordValue(endToEndLatencyMicros); endToEndLatencyRecorder.recordValue(endToEndLatencyMicros); @@ -332,6 +358,7 @@ public void resetStats() throws IOException { public void stopAll() throws IOException { testCompleted = true; consumersArePaused = false; + producersArePaused = false; publishLatencyRecorder.reset(); cumulativePublishLatencyRecorder.reset(); @@ -382,4 +409,16 @@ public void close() throws Exception { } private static final Logger log = LoggerFactory.getLogger(LocalWorker.class); + + @Override + public void pauseProducers() throws IOException { + producersArePaused = true; + log.info("Pausing producers"); + } + + @Override + public void resumeProducers() throws IOException { + producersArePaused = false; + log.info("Resuming producers"); + } } diff --git a/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/Topic.java b/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/Topic.java new file mode 100644 index 00000000..2cbe92f1 --- /dev/null +++ b/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/Topic.java @@ -0,0 +1,32 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package io.openmessaging.benchmark.worker; + +public class Topic { + public String name; + public int partitions; + + public Topic() { + } + + public Topic(String name, int partitions) { + this.name = name; + this.partitions = partitions; + } +} \ No newline at end of file diff --git a/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/Worker.java b/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/Worker.java index d7bcb96d..5c6edc51 100644 --- a/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/Worker.java +++ b/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/Worker.java @@ -33,7 +33,10 @@ public interface Worker extends AutoCloseable { void initializeDriver(File configurationFile) throws IOException; - List createTopics(TopicsInfo topicsInfo) throws IOException; + List createTopics(TopicsInfo topicsInfo) throws IOException; + + // Let other workers know when a new topic(s) is created + void notifyTopicCreation(List topics) throws IOException; void createProducers(List topics) throws IOException; @@ -49,6 +52,10 @@ public interface Worker extends AutoCloseable { void resumeConsumers() throws IOException; + void pauseProducers() throws IOException; + + void resumeProducers() throws IOException; + CountersStats getCountersStats() throws IOException; PeriodStats getPeriodStats() throws IOException; diff --git a/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/WorkerHandler.java b/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/WorkerHandler.java index d301b208..713e79f6 100644 --- a/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/WorkerHandler.java +++ b/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/WorkerHandler.java @@ -19,6 +19,7 @@ package io.openmessaging.benchmark.worker; import java.io.File; +import java.net.HttpURLConnection; import java.nio.ByteBuffer; import java.util.List; @@ -26,6 +27,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectWriter; @@ -49,11 +51,14 @@ public WorkerHandler(Javalin app, StatsLogger statsLogger) { app.post("/initialize-driver", this::handleInitializeDriver); app.post("/create-topics", this::handleCreateTopics); + app.post("/notify-topic-creation", this::handleNotifyTopicCreation); app.post("/create-producers", this::handleCreateProducers); app.post("/probe-producers", this::handleProbeProducers); app.post("/create-consumers", this::handleCreateConsumers); app.post("/pause-consumers", this::handlePauseConsumers); app.post("/resume-consumers", this::handleResumeConsumers); + app.post("/pause-producers", this::handlePauseProducers); + app.post("/resume-producers", this::handleResumeProducers); app.post("/start-load", this::handleStartLoad); app.post("/adjust-publish-rate", this::handleAdjustPublishRate); app.post("/stop-all", this::handleStopAll); @@ -61,11 +66,16 @@ public WorkerHandler(Javalin app, StatsLogger statsLogger) { app.get("/cumulative-latencies", this::handleCumulativeLatencies); app.get("/counters-stats", this::handleCountersStats); app.post("/reset-stats", this::handleResetStats); + + app.exception(RuntimeException.class, (e, ctx) -> { + log.error("Request handler: {} - Exception: {}", ctx.path(), e.getMessage()); + ctx.status(HttpURLConnection.HTTP_INTERNAL_ERROR); + }); } private void handleInitializeDriver(Context ctx) throws Exception { // Save config to temp file - File tempFile = File.createTempFile("driver-configuration", "conf"); + File tempFile = File.createTempFile("driver-configuration" + System.currentTimeMillis(), "conf"); Files.write(ctx.bodyAsBytes(), tempFile); localWorker.initializeDriver(tempFile); @@ -75,10 +85,17 @@ private void handleInitializeDriver(Context ctx) throws Exception { private void handleCreateTopics(Context ctx) throws Exception { TopicsInfo topicsInfo = mapper.readValue(ctx.body(), TopicsInfo.class); log.info("Received create topics request for topics: {}", ctx.body()); - List topics = localWorker.createTopics(topicsInfo); + List topics = localWorker.createTopics(topicsInfo); ctx.result(writer.writeValueAsString(topics)); } + private void handleNotifyTopicCreation(Context ctx) throws Exception { + List topics = mapper.readValue(ctx.body(), new TypeReference>() { + }); + log.info("Received notify topic creation request for topics: {}", ctx.body()); + localWorker.notifyTopicCreation(topics); + } + private void handleCreateProducers(Context ctx) throws Exception { List topics = (List) mapper.readValue(ctx.body(), List.class); log.info("Received create producers request for topics: {}", topics); @@ -104,6 +121,14 @@ private void handleResumeConsumers(Context ctx) throws Exception { localWorker.resumeConsumers(); } + private void handlePauseProducers(Context ctx) throws Exception { + localWorker.pauseProducers(); + } + + private void handleResumeProducers(Context ctx) throws Exception { + localWorker.resumeProducers(); + } + private void handleStartLoad(Context ctx) throws Exception { ProducerWorkAssignment producerWorkAssignment = mapper.readValue(ctx.body(), ProducerWorkAssignment.class); diff --git a/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/commands/TopicSubscription.java b/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/commands/TopicSubscription.java index 8dc0d7d3..f673bb46 100644 --- a/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/commands/TopicSubscription.java +++ b/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/commands/TopicSubscription.java @@ -21,13 +21,15 @@ public class TopicSubscription { public String topic; public String subscription; + public int partition; public TopicSubscription() { } - public TopicSubscription(String topic, String subscription) { + public TopicSubscription(String topic, String subscription, int partition) { this.topic = topic; this.subscription = subscription; + this.partition = partition; } } diff --git a/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/commands/TopicsInfo.java b/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/commands/TopicsInfo.java index 34bc968e..760f64de 100644 --- a/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/commands/TopicsInfo.java +++ b/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/commands/TopicsInfo.java @@ -29,4 +29,4 @@ public TopicsInfo(int numberOfTopics, int numberOfPartitionsPerTopic) { this.numberOfTopics = numberOfTopics; this.numberOfPartitionsPerTopic = numberOfPartitionsPerTopic; } -} +} \ No newline at end of file diff --git a/bin/benchmark-worker b/bin/benchmark-worker index 8cfaa0a3..8412eb40 100755 --- a/bin/benchmark-worker +++ b/bin/benchmark-worker @@ -24,7 +24,9 @@ else CLASSPATH=benchmark-framework/target/classes:`cat benchmark-framework/target/classpath.txt` fi -JVM_MEM="-Xms4G -Xmx4G -XX:+UseG1GC" +#KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=0.0.0.0 -Djava.net.preferIPv4Stack=true" +JVM_MEM="-Xms4G -Xmx8G -XX:+UseG1GC" +#KAFKA_OPTS="-javaagent:/opt/benchmark/jmx_prometheus_javaagent-0.13.0.jar=9090:/opt/benchmark/metrics.yml" JVM_GC_LOG=" -XX:+PrintGCDetails -XX:+PrintGCApplicationStoppedTime -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=64m -Xloggc:/dev/shm/benchmark-client-gc_%p.log" -exec java -server -cp $CLASSPATH $JVM_MEM io.openmessaging.benchmark.worker.BenchmarkWorker $* +exec java -server $KAFKA_JMX_OPTS -cp $CLASSPATH $JVM_MEM $KAFKA_OPTS io.openmessaging.benchmark.worker.BenchmarkWorker $* diff --git a/bin/create_charts.py b/bin/create_charts.py index f5af27fb..2a2c98cf 100755 --- a/bin/create_charts.py +++ b/bin/create_charts.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file diff --git a/bin/parse.py b/bin/parse.py new file mode 100755 index 00000000..45914940 --- /dev/null +++ b/bin/parse.py @@ -0,0 +1,291 @@ +#!/usr/bin/env python3 +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +import json +import sys +import statistics +import numpy as np +import argparse +import re +import pygal +from pygal.style import Style +from itertools import chain +from os import walk +from os import path + +chartStyle = Style( + background='transparent', + plot_background='transparent', + font_family='googlefont:Montserrat', + # colors=('#D8365D', '#78365D') + colors=('#66CC69', '#173361', '#D8365D'), + # colors=('#66CC69', '#667C69', '#173361', '#D8365D', '#78365D'), +) + +#theme = pygal.style.CleanStyle +theme = chartStyle +fill = False + + +def create_quantile_chart(workload, title, y_label, time_series): + import math + chart = pygal.XY(style=theme, dots_size=0.5, + legend_at_bottom=True, + truncate_legend=37, + x_value_formatter=lambda x: '{:,.2f} %'.format( + 100.0 - (100.0 / (10**x))), + show_dots=False, fill=fill, + stroke_style={'width': 2}, + show_y_guides=False, show_x_guides=True) + chart.title = title + # chart.stroke = False + + chart.human_readable = True + chart.y_title = y_label + chart.x_title = 'Percentile' + chart.x_labels = [0.30103, 1, 2, 3] + + for label, values, opts in time_series: + values = sorted((float(x), y) for x, y in values.items()) + xy_values = [(math.log10(100 / (100 - x)), y) + for x, y in values if x <= 99.9] + chart.add(label, xy_values, stroke_style=opts) + + chart.render_to_file('%s.svg' % workload) + + +def create_multi_chart(svg_file_name, title, y_label_1, y_label_2, time_series): + chart = pygal.XY(style=theme, dots_size=1, show_dots=False, stroke_style={'width': 2}, fill=fill, + legend_at_bottom=True, show_x_guides=False, show_y_guides=False) + chart.title = title + chart.human_readable = True + chart.x_title = 'Time (seconds)' + + ys_1 = [] + ys_2 = [] + + for label_1, values_1, label_2, values_2 in time_series: + ys_1.append(values_1) + chart.add(label_1, [(10*x, y) for x, y in enumerate(values_1)]) + chart.add(label_2, [(10*x, y) + for x, y in enumerate(values_2)], secondary=True) + + ys_1 = chain.from_iterable(ys_1) + ys_2 = chain.from_iterable(ys_2) + max_y_1 = float('-inf') # Hack for starting w/ INT64_MIN + max_y_2 = max_y_1 + for y in ys_1: + if max_y_1 < y: + max_y_1 = y + chart.range = (0, max_y_1 * 1.20) + chart.render_to_file('%s.svg' % svg_file_name) + + +def create_bar_chart(workload, title, y_label, x_label, data): + chart = pygal.Bar( + style=theme, dots_size=1, show_dots=False, stroke_style={'width': 2}, fill=fill, + show_legend=False, show_x_guides=False, show_y_guides=True + ) + chart.title = title + chart.x_labels = x_label + chart.value_formatter = lambda y: "{:,.0f}".format(y) + + for label, points in data.items(): + chart.add(label, points) + chart.render_to_file('%s.svg' % workload) + + +def create_chart(workload, title, y_label, time_series): + chart = pygal.XY(style=theme, dots_size=1, show_dots=False, stroke_style={'width': 2}, fill=fill, + legend_at_bottom=True, show_x_guides=False, show_y_guides=False) + chart.title = title + + chart.human_readable = True + chart.y_title = y_label + chart.x_title = 'Time (seconds)' + # line_chart.x_labels = [str(10 * x) for x in range(len(time_series[0][1]))] + + ys = [] + for label, values in time_series: + ys.append(values) + chart.add(label, [(10*x, y) for x, y in enumerate(values)]) + ys = chain.from_iterable(ys) + max_y = float('-inf') # Hack for starting w/ INT64_MIN + for y in ys: + if max_y < y: + max_y = y + chart.range = (max_y * 0.0, max_y * 1.20) + chart.render_to_file('%s.svg' % workload) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description='Plot Kafka OpenMessaging Benchmark results') + + parser.add_argument('--acks', dest='ack', help='ACK level') + parser.add_argument('--message-size', dest='msg_size', + help='Message size (100b or 1kb)') + parser.add_argument('--results', dest='results_dir', + help='Directory containing the results') + parser.add_argument('--durability', dest='durability', + help='Either \'fsync\' or \'nofsync\'') + parser.add_argument('--files', nargs='+', dest='files', required=False, type=str, + help='Explicitly specify result files to plot') + parser.add_argument('--series-labels', nargs='+', dest='labels', required=False, + type=str, help='Labels for the series instead of file names on the plot') + parser.add_argument('--series-opts', nargs='+', dest='opts', required=False, + type=str, help='Options for each series: Dashed or Filled') + args = parser.parse_args() + + if args.labels != None and len(args.labels) != len(args.files): + sys.exit('Number of labels specified != Number of input files') + + aggregate = [] + + if args.files is None: + file_name_template = f'{args.msg_size}-run-[0123456789]+-{args.durability}-{args.ack}-acks.json' + + # Get list of directories + for (dirpath, dirnames, filenames) in walk(args.results_dir): + for file in filenames: + if re.match(file_name_template, file): + file_path = path.join(dirpath, file) + data = json.load(open(file_path)) + data['file'] = file + aggregate.append(data) + else: + for idx, file in enumerate(args.files): + data = json.load(open(file)) + if args.labels != None: + data['file'] = args.labels[idx] + else: + data['file'] = file + aggregate.append(data) + + stats_pub_rate = [] + stats_con_rate = [] + stats_backlog = [] + stats_lat_p99 = [] + stats_lat_p999 = [] + stats_lat_p9999 = [] + stat_lat_avg = [] + stat_lat_max = [] + stat_lat_quantile = [] + stat_e2e_lat_quantile = [] + drivers = [] + + pub_rate_avg = {} + pub_rate_avg["Throughput (MB/s)"] = [] + + # colors = ['#66CC69', '#173361', '#D8365D'] + colors = ['#66CC69', '#667C69', '#173361', '#D8365D', '#78365D'] + + # Aggregate across all runs + count = 0 + for data in aggregate: + stats_pub_rate.append(data['publishRate']) + stats_con_rate.append(data['consumeRate']) + stats_backlog.append(data['backlog']) + stats_lat_p99.append(data['publishLatency99pct']) + stats_lat_p999.append(data['publishLatency999pct']) + stats_lat_p9999.append(data['publishLatency9999pct']) + stat_lat_avg.append(data['publishLatencyAvg']) + stat_lat_max.append(data['publishLatencyMax']) + + stat_lat_quantile.append(data['aggregatedPublishLatencyQuantiles']) + stat_e2e_lat_quantile.append( + data['aggregatedEndToEndLatencyQuantiles']) + drivers.append(data['file']) + + # if (count >= len(aggregate)/2): + # pub_rate_avg[args.barlabels[1]].append( + # sum(data['publishRate'])/len(data['publishRate'])) + # else: + # pub_rate_avg[args.barlabels[0]].append( + # sum(data['publishRate'])/len(data['publishRate'])) + pub_rate_avg["Throughput (MB/s)"].append( + { + 'value': (sum(data['publishRate'])/len(data['publishRate']) * 1024)/(1024.0 * 1024.0), + 'color': colors[count] + }) + count = count + 1 + + # Parse plot options + opts = [] + if args.opts is None: + for driver in drivers: + opts.append({}) + else: + for opt in args.opts: + if opt == 'Dashed': + opts.append({'width': 2, 'dasharray': '3, 6, 12, 24'}) + else: + opts.append({}) + + # Generate publish rate bar-chart + svg = f'{args.msg_size}-{args.durability}-{args.ack}-acks-publish-rate-bar' + print(pub_rate_avg) + create_bar_chart(svg, 'Throughput (MB/s)', 'MB/s', + drivers, pub_rate_avg) + + # Generate latency quantiles + time_series = zip(drivers, stat_lat_quantile, opts) + svg = f'{args.msg_size}-{args.durability}-{args.ack}-acks-latency-quantile' + create_quantile_chart(svg, 'Publish Latency Quantiles', + y_label='Latency (ms)', + time_series=time_series) + + time_series = zip(drivers, stat_e2e_lat_quantile, opts) + svg = f'{args.msg_size}-{args.durability}-{args.ack}-acks-e2e-latency-quantile' + create_quantile_chart(svg, 'End-to-End Latency Quantiles', + y_label='Latency (ms)', + time_series=time_series) + + # Generate p99 latency time-series + svg = f'{args.msg_size}-{args.durability}-{args.ack}-acks-publish-latency-p99' + time_series = zip(drivers, stats_lat_p99) + create_chart(svg, 'Publish Latency - 99th Percentile', + y_label='Latency (ms)', time_series=time_series) + + # Generate avg E2E latency time-series + svg = f'{args.msg_size}-{args.durability}-{args.ack}-acks-e2e-latency-avg' + time_series = zip(drivers, stat_lat_avg) + create_chart(svg, 'End-to-end Latency - Average', + y_label='Latency (ms)', time_series=time_series) + + # Generate publish rate + svg = f'{args.msg_size}-{args.durability}-{args.ack}-acks-publish-rate' + time_series = zip(drivers, stats_pub_rate) + create_chart(svg, 'Publish Rate', + y_label='Message/s', time_series=time_series) + + # Generate consume + backlog rate + svg = f'{args.msg_size}-{args.durability}-{args.ack}-acks-consume-rate-backlog' + labels_con = [] + labels_backlog = [] + + for x in drivers: + labels_con.append(x + " - Consume Rate") + labels_backlog.append(x + " - Backlog") + + time_series = zip(labels_con, stats_con_rate, + labels_backlog, stats_backlog) + create_multi_chart(svg, 'Consume rate (Messages/s - Left) w/ Backlog (No. of Messages - Right)', + 'Consume - Messages/s', 'Backlog - Messages', time_series) diff --git a/driver-rabbitmq/rabbitmq.yaml b/bin/workers.yaml similarity index 80% rename from driver-rabbitmq/rabbitmq.yaml rename to bin/workers.yaml index 7ba41ff6..c6c95f1b 100644 --- a/driver-rabbitmq/rabbitmq.yaml +++ b/bin/workers.yaml @@ -17,11 +17,6 @@ # under the License. # - -name: RabbitMQ -driverClass: io.openmessaging.benchmark.driver.rabbitmq.RabbitMqBenchmarkDriver - -# RabbitMq client specific configurations - -brokerAddress: localhost -messagePersistence: false \ No newline at end of file +workers: + - http://localhost:8080 + - http://localhost:8082 diff --git a/blog/results/kafka/latency/default-sync-200k.json b/blog/results/kafka/latency/default-sync-200k.json new file mode 100644 index 00000000..7d1c8814 --- /dev/null +++ b/blog/results/kafka/latency/default-sync-200k.json @@ -0,0 +1,4006 @@ +{ + "workload" : "100-partitions-200K-rate-4-producer", + "driver" : "Kafka", + "publishRate" : [ 204415.53587444662, 199936.83637354354, 200089.89593013682, 199972.25757810657, 200026.9799020437, 200055.79733418784, 199843.75036629412, 200101.97155462884, 200035.0828962221, 200007.022797337, 200006.04245982095, 199984.6181005365, 200034.57953224945, 199960.80849883912, 200022.07009040745, 199999.48482830022, 200011.6147566744, 199903.40495556316, 200066.5851710034, 200031.45137851487, 199915.7229581263, 200017.8760844455, 199898.23612456943, 200163.59194964883, 199969.43120530233, 199981.12661654165, 200034.51267620694, 200003.47291776427, 199922.92042703557, 200126.29154669386, 200002.34156893604, 200034.5601490102, 200010.65564623568, 199814.99768669484, 200082.13686573468, 200043.65204990868, 200005.09317318007, 199966.34921339448, 200029.64232438905, 199935.63280994887, 200028.20062867986, 199890.023218169, 200132.88818446058, 199874.26634837425, 200146.73800212337, 199992.31368564256, 199935.97315310148, 199982.81507357207, 200010.6836986086, 200059.82435125625, 199984.38465792447, 200006.47376303183, 200019.26062118576, 199880.4217294682, 200019.34048069036, 200065.99719495664, 200008.33570832715, 199998.03085274776, 199978.77533138826, 200089.2243323748 ], + "consumeRate" : [ 204484.72134683144, 199857.25111988594, 200090.7905633894, 199994.31984167206, 200011.87075769974, 200054.40564099312, 199857.36200877387, 200137.54905459486, 199993.43023157332, 200007.4204878756, 199998.08863663467, 199991.27967753893, 200031.79570793262, 199956.9307747478, 200022.07009040745, 199989.64192296634, 200024.54061276047, 199901.51659626435, 200068.97130366106, 200037.51612517957, 199895.64631852438, 200028.3108612377, 199892.47539997078, 200169.35848761807, 199971.22073434148, 199979.33738758368, 200034.51267620694, 200007.25044325512, 199919.14367209323, 200126.29154669386, 199990.20815985033, 200051.46938409665, 199997.62677644996, 199823.2444539565, 200082.13686573468, 199992.2522741945, 200068.2459030066, 199941.29307870416, 200042.96916039655, 199928.17642768688, 200035.65765618454, 199890.023218169, 200132.88818446058, 199879.9313891369, 200115.4115271713, 200017.97172881878, 199940.1487612684, 199984.40514048544, 200008.3971055174, 200058.6310939808, 199990.0524421229, 199998.7182289645, 200019.06173329888, 199880.4217294682, 200026.89483566626, 200058.44049952927, 200008.43514466382, 200010.46032912185, 199955.21569395016, 200088.92594040144 ], + "backlog" : [ -736, 65, 56, -166, -14, 0, -134, -495, -76, -80, 0, -64, -39, 0, 0, 99, -31, -12, -36, -97, 105, 0, 58, 0, -18, 0, 0, -38, 0, 0, 122, -48, 83, 0, 0, 517, -118, 134, 0, 75, 0, 0, 0, -57, 261, 0, -42, -58, -35, -17, -82, -2, 0, 0, -76, 0, 0, -126, 111, 114 ], + "publishLatencyAvg" : [ 2.3479968260913333, 2.326760230302946, 2.4111521317632096, 2.3086218855975162, 2.338809892842286, 2.3355303056877914, 2.320442174341026, 2.296689447418853, 2.30489714294518, 2.2908746985556023, 2.2839576719182184, 2.2920391930042068, 2.231973621625168, 2.2548918142713874, 2.279295080165995, 2.2610444535920924, 2.270231835139898, 2.2606847638312564, 2.257458595962909, 2.281132100945268, 2.2773731912894557, 2.285999420172627, 2.302083773819284, 2.2743133180588453, 2.2940220406369427, 2.2887989093641985, 2.2694984148123116, 2.2855867282468534, 2.3060450217435826, 2.2910526702000387, 2.2731755595738248, 2.311521578854468, 2.283614466643397, 2.2620426343481763, 2.3095900295035365, 2.258805558013016, 2.2570551682061195, 2.2765853025786127, 2.2784151615754564, 2.273513778267592, 2.287308697253397, 2.2737125013107566, 2.2748950210115972, 2.279305402264961, 2.2630228282026197, 2.30484221409716, 3.3447273910146773, 2.286144352705793, 2.280086825268471, 2.314243530215854, 2.2816506909733896, 2.3312552912880546, 2.2918271606104432, 2.2907448541582656, 2.335767955021383, 2.2952602627939207, 2.2995644071158723, 2.304550741405705, 2.3252649390586426, 2.279971791815456 ], + "publishLatency50pct" : [ 2.206, 2.165, 2.168, 2.168, 2.167, 2.16, 2.165, 2.148, 2.13, 2.144, 2.158, 2.154, 2.123, 2.125, 2.128, 2.124, 2.134, 2.12, 2.124, 2.119, 2.124, 2.126, 2.147, 2.142, 2.135, 2.129, 2.125, 2.143, 2.138, 2.136, 2.142, 2.168, 2.156, 2.137, 2.134, 2.125, 2.124, 2.134, 2.153, 2.129, 2.131, 2.134, 2.144, 2.121, 2.127, 2.142, 2.165, 2.137, 2.177, 2.162, 2.155, 2.18, 2.153, 2.164, 2.185, 2.169, 2.165, 2.132, 2.154, 2.147 ], + "publishLatency75pct" : [ 2.485, 2.418, 2.432, 2.43, 2.416, 2.421, 2.409, 2.418, 2.421, 2.41, 2.411, 2.407, 2.4, 2.406, 2.417, 2.404, 2.426, 2.407, 2.398, 2.41, 2.418, 2.42, 2.428, 2.421, 2.419, 2.421, 2.408, 2.416, 2.425, 2.434, 2.422, 2.421, 2.415, 2.414, 2.419, 2.423, 2.411, 2.409, 2.417, 2.416, 2.422, 2.411, 2.403, 2.403, 2.41, 2.445, 2.469, 2.418, 2.411, 2.433, 2.412, 2.418, 2.426, 2.422, 2.43, 2.429, 2.426, 2.422, 2.438, 2.414 ], + "publishLatency95pct" : [ 3.546, 3.448, 3.57, 3.487, 3.476, 3.507, 3.457, 3.473, 3.477, 3.458, 3.465, 3.466, 3.397, 3.435, 3.452, 3.436, 3.44, 3.445, 3.441, 3.446, 3.486, 3.497, 3.492, 3.463, 3.487, 3.478, 3.451, 3.467, 3.495, 3.508, 3.454, 3.51, 3.479, 3.444, 3.508, 3.451, 3.448, 3.466, 3.479, 3.474, 3.5, 3.467, 3.472, 3.47, 3.471, 3.52, 3.712, 3.45, 3.435, 3.515, 3.462, 3.505, 3.478, 3.473, 3.496, 3.504, 3.463, 3.493, 3.511, 3.456 ], + "publishLatency99pct" : [ 4.576, 4.053, 9.395, 4.484, 4.491, 5.007, 4.205, 4.208, 4.658, 4.041, 4.038, 4.269, 3.86, 3.961, 4.126, 3.93, 4.04, 4.024, 3.948, 4.077, 4.066, 4.233, 4.659, 4.033, 4.421, 4.688, 4.192, 4.266, 4.765, 4.557, 4.117, 4.91, 4.105, 4.039, 5.219, 3.977, 4.032, 4.291, 4.092, 4.079, 4.46, 4.042, 4.073, 4.307, 4.047, 4.819, 54.575, 4.103, 3.986, 4.92, 4.145, 4.901, 4.163, 4.137, 4.905, 4.361, 4.237, 5.058, 4.839, 4.037 ], + "publishLatency999pct" : [ 16.131, 27.115, 23.751, 15.943, 25.482, 19.475, 21.354, 14.759, 18.38, 16.98, 13.964, 15.411, 10.746, 12.791, 15.455, 14.977, 13.912, 13.708, 14.12, 20.734, 14.504, 16.313, 15.502, 13.765, 16.509, 14.639, 15.491, 16.236, 16.404, 14.913, 15.091, 15.225, 14.02, 13.616, 17.502, 12.988, 13.164, 14.38, 13.522, 15.044, 15.296, 15.205, 13.69, 17.217, 13.154, 15.981, 81.92, 17.02, 12.646, 16.241, 15.146, 17.773, 15.137, 14.714, 18.644, 14.213, 16.481, 16.364, 18.841, 14.848 ], + "publishLatency9999pct" : [ 19.11, 34.857, 67.836, 19.346, 30.884, 22.948, 42.028, 51.238, 20.298, 21.721, 16.293, 19.092, 17.959, 16.882, 19.271, 19.26, 21.799, 16.28, 17.594, 26.411, 18.788, 27.767, 19.972, 15.786, 19.435, 19.517, 21.478, 19.568, 20.053, 18.113, 21.884, 18.647, 18.318, 19.746, 21.139, 16.945, 16.601, 18.253, 16.701, 21.403, 34.583, 20.085, 19.276, 21.721, 15.628, 20.34, 85.704, 20.747, 18.129, 26.053, 19.172, 21.135, 20.118, 20.484, 23.209, 17.588, 18.72, 22.787, 25.547, 19.165 ], + "publishLatencyMax" : [ 19.61, 38.375, 69.137, 20.618, 33.399, 24.035, 43.234, 52.317, 21.405, 24.217, 16.437, 21.965, 19.195, 18.013, 20.379, 21.189, 23.72, 16.716, 18.999, 30.945, 29.846, 29.102, 21.481, 16.582, 21.044, 21.253, 22.435, 20.505, 20.942, 18.716, 23.893, 21.571, 20.676, 21.426, 23.196, 20.253, 16.825, 18.855, 18.485, 23.425, 35.771, 21.882, 20.808, 22.591, 17.754, 24.314, 94.178, 22.105, 18.698, 27.301, 19.533, 21.849, 21.122, 21.775, 24.366, 17.997, 19.846, 25.418, 26.89, 20.256 ], + "aggregatedPublishLatencyAvg" : 2.309284874205961, + "aggregatedPublishLatency50pct" : 2.146, + "aggregatedPublishLatency75pct" : 2.42, + "aggregatedPublishLatency95pct" : 3.479, + "aggregatedPublishLatency99pct" : 4.349, + "aggregatedPublishLatency999pct" : 17.368, + "aggregatedPublishLatency9999pct" : 65.852, + "aggregatedPublishLatencyMax" : 94.178, + "aggregatedPublishLatencyQuantiles" : { + "8.284063245873756E-7" : 0.669, + "0.5004593140286991" : 1.041, + "1.0003602821946262" : 1.165, + "1.5079811688993832" : 1.219, + "2.0024303950432008" : 1.25, + "2.5015708862031567" : 1.274, + "3.01599547405175" : 1.295, + "3.5146654304193405" : 1.314, + "4.004217118372197" : 1.332, + "4.523396758523922" : 1.351, + "5.010140149036428" : 1.369, + "5.5072568435454174" : 1.388, + "6.021439536747231" : 1.409, + "6.505455813639195" : 1.43, + "7.011762019506832" : 1.453, + "7.505050648389902" : 1.476, + "8.006865235165627" : 1.5, + "8.516668144129346" : 1.524, + "9.020625818066778" : 1.547, + "9.504467301224254" : 1.568, + "10.009631134770284" : 1.589, + "10.50863411048036" : 1.609, + "11.007149983271576" : 1.628, + "11.511343753011516" : 1.646, + "12.019230558146466" : 1.663, + "12.53036885810542" : 1.679, + "13.033069011242128" : 1.694, + "13.528450194501106" : 1.708, + "14.016397259403238" : 1.721, + "14.523817671777445" : 1.734, + "15.013374330168249" : 1.746, + "15.527763296544885" : 1.758, + "16.018633807366484" : 1.769, + "16.532041112248486" : 1.78, + "17.02394713097582" : 1.79, + "17.53436223221341" : 1.8, + "18.012710553032548" : 1.809, + "18.508520850767663" : 1.818, + "19.021013595067316" : 1.827, + "19.556666094983463" : 1.836, + "20.04875519150853" : 1.844, + "20.55643489506233" : 1.852, + "21.015903835744123" : 1.859, + "21.557562281513526" : 1.867, + "22.045472896537376" : 1.874, + "22.547353755819067" : 1.881, + "23.061895148959426" : 1.888, + "23.515764891293333" : 1.894, + "24.060723707859893" : 1.901, + "24.53533591615514" : 1.907, + "25.022529131301898" : 1.913, + "25.5241341312775" : 1.919, + "26.03764415854375" : 1.925, + "26.559532687376876" : 1.931, + "27.007124766583058" : 1.936, + "27.55616182748556" : 1.942, + "28.0188938606799" : 1.947, + "28.59219494282957" : 1.953, + "29.080336683217975" : 1.958, + "29.5744727717711" : 1.963, + "30.080182525085036" : 1.968, + "30.594734687507614" : 1.973, + "31.00994353507935" : 1.977, + "31.537086645229333" : 1.982, + "32.0663247949742" : 1.987, + "32.60472760388797" : 1.992, + "33.03619475398606" : 1.996, + "33.58575122565408" : 2.001, + "34.02982837682504" : 2.005, + "34.5813067511661" : 2.01, + "35.02806876723505" : 2.014, + "35.5849276406543" : 2.019, + "36.03748270215109" : 2.023, + "36.59977840627861" : 2.028, + "37.05525608528854" : 2.032, + "37.507566766919574" : 2.036, + "38.08102855989621" : 2.041, + "38.543227099417514" : 2.045, + "39.00386326461065" : 2.049, + "39.58577811572338" : 2.054, + "40.04680943073334" : 2.058, + "40.51405544999036" : 2.062, + "41.0908598624867" : 2.067, + "41.55706871702534" : 2.071, + "42.019513293225046" : 2.075, + "42.60108684093204" : 2.08, + "43.061231761174696" : 2.084, + "43.522317751002085" : 2.088, + "44.09716795297873" : 2.093, + "44.55218835169749" : 2.097, + "45.01002118988822" : 2.101, + "45.57489572290418" : 2.106, + "46.029597185187974" : 2.11, + "46.58960731626596" : 2.115, + "47.04065219303302" : 2.119, + "47.598379236280444" : 2.124, + "48.04825191809822" : 2.128, + "48.6068098528892" : 2.133, + "49.04916060527972" : 2.137, + "49.60739877522941" : 2.142, + "50.04982077056385" : 2.146, + "50.27048253483786" : 2.148, + "50.60477182421758" : 2.151, + "50.82369476361629" : 2.153, + "51.041630242676085" : 2.155, + "51.26384444040237" : 2.157, + "51.58952741647595" : 2.16, + "51.806965851741" : 2.162, + "52.0246892587817" : 2.164, + "52.354335330712104" : 2.167, + "52.56920570637093" : 2.169, + "52.781690271814945" : 2.171, + "53.10057203196366" : 2.174, + "53.30591656329605" : 2.176, + "53.508043564463755" : 2.178, + "53.80740558638622" : 2.181, + "54.09183144227637" : 2.184, + "54.27449006640994" : 2.186, + "54.54086991892528" : 2.189, + "54.78931394610698" : 2.192, + "55.024304654577385" : 2.195, + "55.25028561586158" : 2.198, + "55.53204897382451" : 2.202, + "55.809799531551135" : 2.206, + "56.01855792534715" : 2.209, + "56.31325353444322" : 2.213, + "56.546502104413015" : 2.216, + "56.79679016407324" : 2.219, + "57.07190059084341" : 2.222, + "57.263829081749115" : 2.224, + "57.5699301891221" : 2.227, + "57.79155953198323" : 2.229, + "58.016993745093195" : 2.231, + "58.25097296944128" : 2.233, + "58.614770092102795" : 2.236, + "58.870169418785736" : 2.238, + "59.1255496921232" : 2.24, + "59.25481338660549" : 2.241, + "59.51642327550386" : 2.243, + "59.78554266773462" : 2.245, + "60.05148429330425" : 2.247, + "60.31766532830169" : 2.249, + "60.58517181341848" : 2.251, + "60.85802814657944" : 2.253, + "61.124466815943826" : 2.255, + "61.25709881054189" : 2.256, + "61.520227996639555" : 2.258, + "61.78150320938279" : 2.26, + "62.04576234170719" : 2.262, + "62.30191634655182" : 2.264, + "62.55486027688868" : 2.266, + "62.804710938009535" : 2.268, + "63.05624906281357" : 2.27, + "63.29963484097734" : 2.272, + "63.53955870911066" : 2.274, + "63.7767306114337" : 2.276, + "64.01514595164996" : 2.278, + "64.3613568364468" : 2.281, + "64.58831448878769" : 2.283, + "64.81645427695375" : 2.285, + "65.03660905655711" : 2.287, + "65.25397790569089" : 2.289, + "65.57503423244165" : 2.292, + "65.7894506414346" : 2.294, + "66.09948833566203" : 2.297, + "66.30273451377424" : 2.299, + "66.50695406931784" : 2.301, + "66.80168447147955" : 2.304, + "67.09011898557438" : 2.307, + "67.28304404928855" : 2.309, + "67.56327319873834" : 2.312, + "67.83785510227342" : 2.315, + "68.02186320030975" : 2.317, + "68.28779654181614" : 2.32, + "68.54896571854982" : 2.323, + "68.80979193506514" : 2.326, + "69.06340521771226" : 2.329, + "69.31364191618037" : 2.332, + "69.56332772444263" : 2.335, + "69.8062959858188" : 2.338, + "70.04892708582088" : 2.341, + "70.28454241266003" : 2.344, + "70.51657985258328" : 2.347, + "70.8248049937725" : 2.351, + "71.05004287458353" : 2.354, + "71.27525921683012" : 2.357, + "71.56553859180981" : 2.361, + "71.7791912101715" : 2.364, + "72.06093800000794" : 2.368, + "72.26567448109809" : 2.371, + "72.53611186779125" : 2.375, + "72.79617346526896" : 2.379, + "73.05043124803663" : 2.383, + "73.29433063812164" : 2.387, + "73.53295059470005" : 2.391, + "73.76152032574859" : 2.395, + "74.0401059170504" : 2.4, + "74.2523336765338" : 2.404, + "74.51078899414813" : 2.409, + "74.75980047966218" : 2.414, + "75.04500006705949" : 2.42, + "75.1401814685356" : 2.422, + "75.27633916045112" : 2.425, + "75.41019636800324" : 2.428, + "75.50051833797933" : 2.43, + "75.62989386731543" : 2.433, + "75.75753885583948" : 2.436, + "75.8856510655306" : 2.439, + "76.0092683425045" : 2.442, + "76.13317059125406" : 2.445, + "76.2526549490746" : 2.448, + "76.40837628475155" : 2.452, + "76.52526524555715" : 2.455, + "76.63743311871893" : 2.458, + "76.7858164311727" : 2.462, + "76.89308013889293" : 2.465, + "77.03577229989678" : 2.469, + "77.13969007447199" : 2.472, + "77.27546421425922" : 2.476, + "77.37743192034634" : 2.479, + "77.50910047838892" : 2.483, + "77.64115424537242" : 2.487, + "77.76851343371447" : 2.491, + "77.89533415794556" : 2.495, + "78.01678101034904" : 2.499, + "78.13840514170599" : 2.503, + "78.25549706206111" : 2.507, + "78.40025775365746" : 2.512, + "78.51259213649048" : 2.516, + "78.62621137753294" : 2.52, + "78.76522292923664" : 2.525, + "78.90049754001014" : 2.53, + "79.00903865028287" : 2.534, + "79.14102283113512" : 2.539, + "79.27365482573317" : 2.544, + "79.37704490547962" : 2.548, + "79.50712540859796" : 2.553, + "79.63626815575685" : 2.558, + "79.76177088552552" : 2.563, + "79.88859906541353" : 2.568, + "80.01364202967204" : 2.573, + "80.1343971627945" : 2.578, + "80.2557504052833" : 2.583, + "80.39798197237067" : 2.589, + "80.51339636991851" : 2.594, + "80.62884804575096" : 2.599, + "80.76333815573507" : 2.605, + "80.89389830611535" : 2.611, + "81.0031071118857" : 2.616, + "81.13152748872955" : 2.622, + "81.2561098590716" : 2.628, + "81.38096146146914" : 2.634, + "81.50485791137443" : 2.64, + "81.62626500027433" : 2.646, + "81.76617702965287" : 2.653, + "81.88305190755095" : 2.659, + "82.00062181835536" : 2.665, + "82.1359991515131" : 2.672, + "82.2507011196218" : 2.678, + "82.38274328891676" : 2.685, + "82.51102117987278" : 2.692, + "82.63912179187535" : 2.699, + "82.76380108575738" : 2.706, + "82.8868094840827" : 2.713, + "83.00803349518488" : 2.72, + "83.12762637423393" : 2.727, + "83.26125162801517" : 2.735, + "83.37641501844666" : 2.742, + "83.50638700033647" : 2.75, + "83.63583128739752" : 2.758, + "83.76368254909639" : 2.766, + "83.88923332643188" : 2.774, + "84.01301048582643" : 2.782, + "84.13598409108613" : 2.79, + "84.2574036060809" : 2.798, + "84.37876596103928" : 2.806, + "84.51333642643687" : 2.815, + "84.63133379490478" : 2.823, + "84.76158329291331" : 2.832, + "84.87744502987643" : 2.84, + "85.0065968895049" : 2.849, + "85.1346850754126" : 2.858, + "85.25087237606128" : 2.866, + "85.38332046445528" : 2.875, + "85.50432908991306" : 2.883, + "85.62680399456535" : 2.891, + "85.75155701661026" : 2.899, + "85.87903798068204" : 2.907, + "86.00987978921268" : 2.915, + "86.12694105853379" : 2.922, + "86.26257271243318" : 2.93, + "86.38328891045838" : 2.937, + "86.50697825878252" : 2.944, + "86.63415851135848" : 2.951, + "86.7658154717125" : 2.958, + "86.87961613374004" : 2.964, + "87.01751347893718" : 2.971, + "87.1380217469749" : 2.977, + "87.26102186123698" : 2.983, + "87.38605985505755" : 2.989, + "87.51182353281847" : 2.995, + "87.57730325393283" : 2.998, + "87.64204486501198" : 3.001, + "87.70727192219734" : 3.004, + "87.75288480283544" : 3.006, + "87.81856499828035" : 3.009, + "87.8843272059514" : 3.012, + "87.95230622894704" : 3.015, + "88.01889270091104" : 3.018, + "88.06324640393578" : 3.02, + "88.13174152407164" : 3.023, + "88.1988084717039" : 3.026, + "88.26818004573117" : 3.029, + "88.3129413246676" : 3.031, + "88.38026424985418" : 3.034, + "88.44973523264039" : 3.037, + "88.51719401646419" : 3.04, + "88.56266772483977" : 3.042, + "88.63293066407229" : 3.045, + "88.7015450747189" : 3.048, + "88.77075179588758" : 3.051, + "88.81920196818739" : 3.053, + "88.88847661867469" : 3.056, + "88.95745635651043" : 3.059, + "89.00549812449222" : 3.061, + "89.07467667984587" : 3.064, + "89.14388257260822" : 3.067, + "89.19280576491937" : 3.069, + "89.26174905287684" : 3.072, + "89.33065920458131" : 3.075, + "89.37871422706431" : 3.077, + "89.44717206891555" : 3.08, + "89.51482387141299" : 3.083, + "89.5845069262183" : 3.086, + "89.6294562533904" : 3.088, + "89.69714202054715" : 3.091, + "89.76650613891749" : 3.094, + "89.8333419611852" : 3.097, + "89.87730548483106" : 3.099, + "89.94507409262025" : 3.102, + "90.01047097310216" : 3.105, + "90.07556879890087" : 3.108, + "90.14172615638876" : 3.111, + "90.20514314575489" : 3.114, + "90.27003884041041" : 3.117, + "90.33241120940124" : 3.12, + "90.39413576464625" : 3.123, + "90.45735062286919" : 3.126, + "90.51795268754438" : 3.129, + "90.57756066463006" : 3.132, + "90.63846344080108" : 3.135, + "90.69647093686766" : 3.138, + "90.75613690239607" : 3.141, + "90.8128959901315" : 3.144, + "90.88792475094937" : 3.148, + "90.94531922633576" : 3.151, + "91.00002138116724" : 3.154, + "91.07365344892186" : 3.158, + "91.1272993856895" : 3.161, + "91.19976091530748" : 3.165, + "91.25216507099455" : 3.168, + "91.32150930761311" : 3.172, + "91.39088005323406" : 3.176, + "91.44116845916813" : 3.179, + "91.50859824877057" : 3.183, + "91.57332826216118" : 3.187, + "91.6391202924599" : 3.191, + "91.70231112689943" : 3.195, + "91.75048295467418" : 3.198, + "91.82742864772716" : 3.203, + "91.88960054238744" : 3.207, + "91.9494669822464" : 3.211, + "92.01004667995082" : 3.215, + "92.06848494730619" : 3.219, + "92.12736144160726" : 3.223, + "92.19936900455937" : 3.228, + "92.2574858502608" : 3.232, + "92.3134554667689" : 3.236, + "92.3834549727902" : 3.241, + "92.43856056150176" : 3.245, + "92.5045414684425" : 3.25, + "92.57016616066366" : 3.255, + "92.6328624365274" : 3.26, + "92.69503433118768" : 3.265, + "92.7565666961654" : 3.27, + "92.81515159144021" : 3.275, + "92.88219368688274" : 3.281, + "92.94335823945232" : 3.287, + "93.00445900473491" : 3.294, + "93.06375964307418" : 3.303, + "93.12861723103877" : 3.317, + "93.18960367624857" : 3.327, + "93.2541257596517" : 3.334, + "93.32401094560022" : 3.34, + "93.37904032092992" : 3.344, + "93.45223830377046" : 3.349, + "93.51214036510136" : 3.353, + "93.57469001304565" : 3.357, + "93.63599373787777" : 3.361, + "93.69886232225704" : 3.365, + "93.75935006685943" : 3.369, + "93.78930689636915" : 3.371, + "93.82040941182579" : 3.373, + "93.84943428422037" : 3.375, + "93.87803584098306" : 3.377, + "93.92010148573928" : 3.38, + "93.94899132790295" : 3.382, + "93.97607607268533" : 3.384, + "94.00245170165387" : 3.386, + "94.04223094495423" : 3.389, + "94.06753792976404" : 3.391, + "94.10472840330007" : 3.394, + "94.12912331274653" : 3.396, + "94.16635520659878" : 3.399, + "94.19004762748197" : 3.401, + "94.22511986604603" : 3.404, + "94.26060133733444" : 3.407, + "94.28294842634651" : 3.409, + "94.31617166199408" : 3.412, + "94.34993750378426" : 3.415, + "94.38246736333817" : 3.418, + "94.41542385214922" : 3.421, + "94.447080571437" : 3.424, + "94.47834296931428" : 3.427, + "94.51010738142426" : 3.43, + "94.54036243721085" : 3.433, + "94.57069287797296" : 3.436, + "94.60208782086217" : 3.439, + "94.63264358814457" : 3.442, + "94.6635704814604" : 3.445, + "94.69312056346475" : 3.448, + "94.72262839674656" : 3.451, + "94.75312286196093" : 3.454, + "94.7828618206073" : 3.457, + "94.81250634093266" : 3.46, + "94.85319186075212" : 3.464, + "94.88279413235493" : 3.467, + "94.91347333217969" : 3.47, + "94.94321560445135" : 3.473, + "94.97293468134593" : 3.476, + "95.00415897253228" : 3.479, + "95.03420029948711" : 3.482, + "95.06544530083157" : 3.485, + "95.09555455710503" : 3.488, + "95.12571434616427" : 3.491, + "95.15726502944251" : 3.494, + "95.18774375493673" : 3.497, + "95.22932063996144" : 3.501, + "95.25935368285303" : 3.504, + "95.28953004003878" : 3.507, + "95.32081811851212" : 3.51, + "95.35140453682854" : 3.513, + "95.38213261262646" : 3.516, + "95.41413394894526" : 3.519, + "95.44505255819784" : 3.522, + "95.47728253466224" : 3.525, + "95.50835936952281" : 3.528, + "95.53927052311846" : 3.531, + "95.57146322129826" : 3.534, + "95.6027413588957" : 3.537, + "95.63397724777059" : 3.54, + "95.66625361498916" : 3.543, + "95.69731305331692" : 3.546, + "95.72924563191079" : 3.549, + "95.76018826494678" : 3.552, + "95.79134959725245" : 3.555, + "95.81313751199542" : 3.557, + "95.84442890409407" : 3.56, + "95.87586940933113" : 3.563, + "95.90812009595365" : 3.566, + "95.93979172655527" : 3.569, + "95.97159258854353" : 3.572, + "96.00453085241544" : 3.575, + "96.03657609426946" : 3.578, + "96.06984820589018" : 3.581, + "96.1017650447639" : 3.584, + "96.13394283162984" : 3.587, + "96.15642743609179" : 3.589, + "96.18849918694819" : 3.592, + "96.22084016986008" : 3.595, + "96.2541189087314" : 3.598, + "96.28646154845595" : 3.601, + "96.31853412771866" : 3.604, + "96.35145665187042" : 3.607, + "96.38344307687538" : 3.61, + "96.41634820449433" : 3.613, + "96.44790302980418" : 3.616, + "96.46880952021779" : 3.618, + "96.50117038488148" : 3.621, + "96.5324377531967" : 3.624, + "96.56363305016168" : 3.627, + "96.59612066099302" : 3.63, + "96.62764152164358" : 3.633, + "96.65941173259783" : 3.636, + "96.69231686021676" : 3.639, + "96.72398683400574" : 3.642, + "96.75685136971477" : 3.645, + "96.78863649198286" : 3.648, + "96.82049948444546" : 3.651, + "96.85338473031261" : 3.654, + "96.8853719837239" : 3.657, + "96.89612055578543" : 3.658, + "96.90679954171569" : 3.659, + "96.92896520974267" : 3.661, + "96.93967401830061" : 3.662, + "96.9610717536647" : 3.664, + "96.97172008856094" : 3.665, + "96.99313439205153" : 3.667, + "97.00375373272641" : 3.668, + "97.02590117581425" : 3.67, + "97.03621317774272" : 3.671, + "97.05676511024942" : 3.673, + "97.06703072142369" : 3.674, + "97.08759922205688" : 3.676, + "97.09865016242686" : 3.677, + "97.11883345411911" : 3.679, + "97.12875610507503" : 3.68, + "97.14857572639077" : 3.682, + "97.1584113946826" : 3.683, + "97.17898983619168" : 3.685, + "97.1888188772329" : 3.686, + "97.20821766813577" : 3.688, + "97.22746651749388" : 3.69, + "97.23684159186924" : 3.691, + "97.2566347041826" : 3.693, + "97.2660785362829" : 3.694, + "97.28475827049603" : 3.696, + "97.30346534211786" : 3.698, + "97.31282716199202" : 3.699, + "97.33203956147184" : 3.701, + "97.35032248905549" : 3.703, + "97.35953850941652" : 3.704, + "97.37777007580804" : 3.706, + "97.39591051750385" : 3.708, + "97.41481474983094" : 3.71, + "97.42381786976655" : 3.711, + "97.44158801383529" : 3.713, + "97.45927200364625" : 3.715, + "97.4775988367651" : 3.717, + "97.48633355305154" : 3.718, + "97.50367209742515" : 3.72, + "97.52076957555832" : 3.722, + "97.5377601892756" : 3.724, + "97.54717502715454" : 3.725, + "97.56417806696669" : 3.727, + "97.58109081048947" : 3.729, + "97.59798698588575" : 3.731, + "97.61549701036856" : 3.733, + "97.63200217797963" : 3.735, + "97.64836485970288" : 3.737, + "97.65648158487119" : 3.738, + "97.67271089317619" : 3.74, + "97.68986138931412" : 3.742, + "97.70623732553857" : 3.744, + "97.72258509594796" : 3.746, + "97.73882020309723" : 3.748, + "97.75566004686344" : 3.75, + "97.77145527025435" : 3.752, + "97.78720327448475" : 3.754, + "97.80286595286373" : 3.756, + "97.81915076439248" : 3.758, + "97.8344174645483" : 3.76, + "97.84966842498395" : 3.762, + "97.86498565792556" : 3.764, + "97.88060857280095" : 3.766, + "97.89536248944185" : 3.768, + "97.90998800310244" : 3.77, + "97.92444866390444" : 3.772, + "97.93942542184666" : 3.774, + "97.953537323586" : 3.776, + "97.97454570797754" : 3.779, + "97.98921098514171" : 3.781, + "98.00278359436375" : 3.783, + "98.01623442785608" : 3.785, + "98.03623215653161" : 3.788, + "98.04996050614268" : 3.79, + "98.06281737230027" : 3.792, + "98.08206125122044" : 3.795, + "98.09561232187804" : 3.797, + "98.11440720457028" : 3.8, + "98.1267728257774" : 3.802, + "98.14576652598754" : 3.805, + "98.15758042858248" : 3.807, + "98.17506311565657" : 3.81, + "98.19291692876408" : 3.813, + "98.20416502983932" : 3.815, + "98.22063374757212" : 3.818, + "98.23737583939203" : 3.821, + "98.25337899277041" : 3.824, + "98.26909717437313" : 3.827, + "98.28513180719185" : 3.83, + "98.30028915771281" : 3.833, + "98.3151772761783" : 3.836, + "98.33012752511813" : 3.839, + "98.34427339151678" : 3.842, + "98.36282720796856" : 3.846, + "98.37597318793344" : 3.849, + "98.39331918796398" : 3.853, + "98.40941015241276" : 3.857, + "98.42563946071776" : 3.861, + "98.44082083502214" : 3.865, + "98.4482416988778" : 3.867, + "98.45594753450911" : 3.869, + "98.46307348571321" : 3.871, + "98.47009091568879" : 3.873, + "98.47703793112677" : 3.875, + "98.48761005264116" : 3.878, + "98.49434002562211" : 3.88, + "98.50105674410186" : 3.882, + "98.51107051975347" : 3.885, + "98.51744427801485" : 3.887, + "98.52358939613065" : 3.889, + "98.53265630335325" : 3.892, + "98.54199658466297" : 3.895, + "98.54774489614928" : 3.897, + "98.55610517277702" : 3.9, + "98.56449858565774" : 3.903, + "98.57268324014467" : 3.906, + "98.58070635539829" : 3.909, + "98.5882837880493" : 3.912, + "98.5955986158954" : 3.915, + "98.60287119501895" : 3.918, + "98.6097395118561" : 3.921, + "98.61869044219327" : 3.925, + "98.62698941675299" : 3.929, + "98.63305832148691" : 3.932, + "98.64118830115642" : 3.936, + "98.6489844330771" : 3.94, + "98.65656020891547" : 3.944, + "98.66586818237852" : 3.949, + "98.67298584951938" : 3.953, + "98.68022280717098" : 3.957, + "98.68890699067163" : 3.962, + "98.6957728222898" : 3.966, + "98.70389451789606" : 3.971, + "98.71194000012045" : 3.976, + "98.71971625028935" : 3.981, + "98.72682231974166" : 3.986, + "98.73502685598038" : 3.992, + "98.74258109325429" : 3.998, + "98.75101675485756" : 4.005, + "98.75800104858016" : 4.011, + "98.76593221073176" : 4.018, + "98.77385508882011" : 4.025, + "98.7816040015803" : 4.032, + "98.78912013216328" : 4.039, + "98.79744892935068" : 4.047, + "98.80567169052854" : 4.055, + "98.81251929720757" : 4.062, + "98.82103448581802" : 4.071, + "98.82833026031865" : 4.079, + "98.83640887879602" : 4.088, + "98.84383222787065" : 4.096, + "98.85194729622631" : 4.105, + "98.85948579378005" : 4.114, + "98.8676878447998" : 4.124, + "98.87531746704924" : 4.134, + "98.88321963497948" : 4.145, + "98.89079126878622" : 4.156, + "98.89899746183758" : 4.168, + "98.9067273212523" : 4.179, + "98.91444061254053" : 4.19, + "98.9221182823568" : 4.202, + "98.92985559742846" : 4.214, + "98.93802119856991" : 4.228, + "98.94579330670719" : 4.242, + "98.95323405231464" : 4.256, + "98.96101858654679" : 4.271, + "98.96922146597285" : 4.287, + "98.97695960945082" : 4.302, + "98.98476071180946" : 4.317, + "98.99255021647956" : 4.333, + "99.00029747242709" : 4.349, + "99.00792792308287" : 4.365, + "99.01603305056263" : 4.382, + "99.02359971393142" : 4.4, + "99.0312947802805" : 4.422, + "99.0392831024685" : 4.446, + "99.04701379028955" : 4.467, + "99.05497726028781" : 4.487, + "99.06269386520134" : 4.507, + "99.07047674262084" : 4.527, + "99.07843772740013" : 4.549, + "99.08611705402905" : 4.574, + "99.09377981253148" : 4.599, + "99.10183523563177" : 4.626, + "99.10962888233348" : 4.651, + "99.11729246924224" : 4.681, + "99.12506209216055" : 4.717, + "99.13299076909318" : 4.753, + "99.14072145691422" : 4.792, + "99.14849770708312" : 4.832, + "99.15627147203305" : 4.872, + "99.16408334367391" : 4.915, + "99.17192420953613" : 4.96, + "99.17980732412092" : 5.01, + "99.18752475744077" : 5.054, + "99.19539461752434" : 5.097, + "99.20327607529647" : 5.145, + "99.2110332721199" : 5.197, + "99.21879958141291" : 5.248, + "99.22272622739146" : 5.274, + "99.22662553596129" : 5.301, + "99.2305712352853" : 5.325, + "99.23440344294283" : 5.349, + "99.23839801824" : 5.375, + "99.24221697139635" : 5.403, + "99.24625131019708" : 5.435, + "99.25012079613924" : 5.465, + "99.2539977377383" : 5.493, + "99.25787385093105" : 5.525, + "99.26175824818704" : 5.563, + "99.26566584082012" : 5.6, + "99.26960325608088" : 5.632, + "99.27354398496695" : 5.663, + "99.27735134043475" : 5.691, + "99.28139313489241" : 5.719, + "99.28515824163766" : 5.749, + "99.28909317167945" : 5.784, + "99.29299082343663" : 5.823, + "99.29694646363653" : 5.857, + "99.30083831654945" : 5.892, + "99.30477407499757" : 5.928, + "99.30868829488124" : 5.97, + "99.31253872747791" : 6.008, + "99.31644880532997" : 6.049, + "99.3204052739362" : 6.09, + "99.3242424520317" : 6.127, + "99.32819395019997" : 6.172, + "99.33211231211527" : 6.208, + "99.3359677151499" : 6.247, + "99.33991921331818" : 6.289, + "99.34375556300735" : 6.331, + "99.3477062327693" : 6.378, + "99.3516850683463" : 6.413, + "99.35548413975086" : 6.453, + "99.35940912891675" : 6.503, + "99.36334902939649" : 6.549, + "99.36722017215128" : 6.592, + "99.3711393624729" : 6.644, + "99.37505358235659" : 6.697, + "99.37893052395565" : 6.744, + "99.38284888587096" : 6.793, + "99.38673245472062" : 6.843, + "99.39066738476241" : 6.893, + "99.39456917855121" : 6.949, + "99.3984535758072" : 6.995, + "99.40240755919446" : 7.046, + "99.40631598023386" : 7.094, + "99.41021363199104" : 7.149, + "99.41408560315216" : 7.197, + "99.41802384681925" : 7.257, + "99.42192232698277" : 7.319, + "99.4258249491779" : 7.377, + "99.42970189077697" : 7.426, + "99.43365421735157" : 7.479, + "99.43751873285576" : 7.538, + "99.44146443217979" : 7.603, + "99.44535131465474" : 7.648, + "99.44923322669176" : 7.699, + "99.45315821585766" : 7.755, + "99.45704344151997" : 7.816, + "99.46097340112381" : 7.867, + "99.4648611120051" : 7.932, + "99.46877781710775" : 7.995, + "99.47275251065312" : 8.045, + "99.47658720352963" : 8.104, + "99.48051881994613" : 8.171, + "99.48438085023135" : 8.237, + "99.4883141234605" : 8.307, + "99.49225236712758" : 8.364, + "99.49610362813058" : 8.426, + "99.50006258195579" : 8.487, + "99.5039237838347" : 8.558, + "99.50785871387649" : 8.621, + "99.51177541897913" : 8.693, + "99.51563744926436" : 8.757, + "99.5195640952429" : 8.83, + "99.52347003106333" : 8.891, + "99.52741158835572" : 8.945, + "99.53126947660932" : 9.004, + "99.53520192143213" : 9.08, + "99.53907554940591" : 9.146, + "99.54301213626034" : 9.229, + "99.54692801295667" : 9.3, + "99.5507834159913" : 9.357, + "99.55470094950027" : 9.43, + "99.55859942966379" : 9.496, + "99.56252773245498" : 9.568, + "99.56642704102481" : 9.639, + "99.57036445628557" : 9.701, + "99.57424719672892" : 9.766, + "99.57816555864422" : 9.834, + "99.58210463071762" : 9.9, + "99.58600890972541" : 9.965, + "99.58986928319798" : 10.031, + "99.59376279292354" : 10.1, + "99.59765713105543" : 10.164, + "99.60160945763003" : 10.23, + "99.60550545257458" : 10.296, + "99.60941967245824" : 10.359, + "99.61133080584906" : 10.397, + "99.61330075608893" : 10.434, + "99.61527484836043" : 10.477, + "99.6171942658145" : 10.516, + "99.61916255924172" : 10.562, + "99.6211159413551" : 10.597, + "99.62307098028113" : 10.633, + "99.62502601920714" : 10.675, + "99.62695454913079" : 10.712, + "99.62893444024655" : 10.746, + "99.63089776323582" : 10.78, + "99.63285777259979" : 10.825, + "99.6347987286183" : 10.858, + "99.636722288104" : 10.892, + "99.63868146906165" : 10.934, + "99.64062822392442" : 10.971, + "99.64261805591609" : 11.0, + "99.64458055049903" : 11.036, + "99.6464900270772" : 11.073, + "99.64846991819297" : 11.117, + "99.65041584464943" : 11.16, + "99.65238496648297" : 11.193, + "99.65433503497106" : 11.236, + "99.6562875886781" : 11.273, + "99.65822357425866" : 11.307, + "99.6602092642187" : 11.348, + "99.6621162555779" : 11.377, + "99.66408786263041" : 11.411, + "99.66603710271217" : 11.443, + "99.66798137235598" : 11.491, + "99.6699463521579" : 11.528, + "99.67190801833452" : 11.572, + "99.67386471407319" : 11.612, + "99.67581395415495" : 11.648, + "99.67779218845807" : 11.688, + "99.67970332184889" : 11.725, + "99.6816716152761" : 11.771, + "99.68362251217052" : 11.807, + "99.68557175225226" : 11.853, + "99.68751187986445" : 11.895, + "99.68948928576124" : 11.933, + "99.69144846671888" : 11.975, + "99.6933761682362" : 12.01, + "99.69534943210137" : 12.042, + "99.69727133477441" : 12.079, + "99.69926779401666" : 12.121, + "99.70121951931739" : 12.161, + "99.70312733908293" : 12.212, + "99.70513373920107" : 12.254, + "99.70705149984249" : 12.29, + "99.7090197932697" : 12.333, + "99.71098228785266" : 12.371, + "99.71290916096365" : 12.41, + "99.71489319411104" : 12.445, + "99.71682420925364" : 12.484, + "99.71875605280259" : 12.52, + "99.72074257116894" : 12.552, + "99.72266861587362" : 12.59, + "99.72461702754904" : 12.625, + "99.72656378241182" : 12.66, + "99.72854533034024" : 12.699, + "99.7305219078307" : 12.736, + "99.73244132528477" : 12.779, + "99.73440464827404" : 12.829, + "99.73635554516845" : 12.864, + "99.73828656031105" : 12.901, + "99.74026976505212" : 12.945, + "99.74222894600977" : 12.981, + "99.74416327477768" : 13.021, + "99.74611997051636" : 13.062, + "99.74806506856649" : 13.1, + "99.75000022574072" : 13.141, + "99.75196437713632" : 13.186, + "99.75393432737619" : 13.224, + "99.75590096399075" : 13.267, + "99.7578261802891" : 13.306, + "99.75979447371633" : 13.347, + "99.76172051842099" : 13.39, + "99.7637020663494" : 13.434, + "99.76566538933866" : 13.472, + "99.76758729201171" : 13.508, + "99.76953818890611" : 13.546, + "99.7715354765547" : 13.585, + "99.7734698053226" : 13.623, + "99.77542153062333" : 13.663, + "99.77736414345449" : 13.702, + "99.7793456913829" : 13.735, + "99.7812692508686" : 13.773, + "99.78322428979463" : 13.822, + "99.78519838206611" : 13.863, + "99.78715259258581" : 13.897, + "99.78907863729049" : 13.934, + "99.79101876490267" : 13.984, + "99.79302350820817" : 14.026, + "99.79496612103932" : 14.072, + "99.79690044980724" : 14.11, + "99.798849689889" : 14.147, + "99.80080307200237" : 14.19, + "99.80274982686515" : 14.233, + "99.80471646347972" : 14.297, + "99.80569066931743" : 14.32, + "99.80665741949822" : 14.341, + "99.80761837083475" : 14.365, + "99.80861577204955" : 14.384, + "99.80957920860504" : 14.402, + "99.81055010081747" : 14.43, + "99.81152596346783" : 14.465, + "99.81252336468263" : 14.493, + "99.81350419777094" : 14.513, + "99.8144734331707" : 14.539, + "99.81544515378945" : 14.559, + "99.81641687440819" : 14.585, + "99.8174316721558" : 14.608, + "99.81837854058482" : 14.628, + "99.81935357482885" : 14.655, + "99.82033523632349" : 14.682, + "99.82131772622445" : 14.704, + "99.82227205031037" : 14.726, + "99.8232429425228" : 14.754, + "99.824233716487" : 14.776, + "99.8252070939184" : 14.806, + "99.82619621106994" : 14.836, + "99.82718284300253" : 14.862, + "99.82815787724657" : 14.884, + "99.82910640248822" : 14.914, + "99.83007895151329" : 14.943, + "99.83107386750912" : 14.968, + "99.8320671266923" : 14.995, + "99.83302145077822" : 15.019, + "99.83399648502225" : 15.043, + "99.83499140101809" : 15.079, + "99.83594986713564" : 15.11, + "99.83692075934805" : 15.139, + "99.83791898896918" : 15.175, + "99.83890976293338" : 15.2, + "99.8398500041118" : 15.223, + "99.84084243488866" : 15.251, + "99.84180338622517" : 15.272, + "99.84281569875382" : 15.296, + "99.84378162052829" : 15.319, + "99.84473925823951" : 15.351, + "99.84572091973415" : 15.379, + "99.84668352788331" : 15.418, + "99.84768838475505" : 15.449, + "99.84864602246627" : 15.47, + "99.84961857149133" : 15.498, + "99.8505911205164" : 15.534, + "99.8515852081059" : 15.573, + "99.85255361509934" : 15.612, + "99.8535195368738" : 15.647, + "99.85450368358742" : 15.682, + "99.85548783030103" : 15.714, + "99.85646866338934" : 15.751, + "99.85743707038279" : 15.783, + "99.85840879100152" : 15.811, + "99.85938216843292" : 15.851, + "99.86036714355285" : 15.888, + "99.86132975170202" : 15.931, + "99.86233129494845" : 15.963, + "99.86329224628497" : 16.002, + "99.86426810893533" : 16.04, + "99.86526633855647" : 16.07, + "99.86623391714357" : 16.095, + "99.86720315254334" : 16.13, + "99.86818398563166" : 16.168, + "99.86914410856185" : 16.195, + "99.87014399499563" : 16.232, + "99.87110743155112" : 16.258, + "99.87208909304576" : 16.289, + "99.87305998525818" : 16.324, + "99.87405738647298" : 16.356, + "99.87502827868539" : 16.39, + "99.87599917089781" : 16.418, + "99.87697006311024" : 16.447, + "99.87793929851" : 16.496, + "99.87891598956669" : 16.545, + "99.87989847946764" : 16.581, + "99.88086522964844" : 16.615, + "99.88186925811384" : 16.664, + "99.88281944016815" : 16.697, + "99.88379364600586" : 16.735, + "99.88476619503092" : 16.776, + "99.88575862580778" : 16.808, + "99.88674194411506" : 16.836, + "99.88771697835911" : 16.868, + "99.88867958650827" : 16.892, + "99.88966290481555" : 16.929, + "99.8906379390596" : 16.972, + "99.89162208577321" : 17.011, + "99.89258055189076" : 17.051, + "99.89356304179172" : 17.091, + "99.89453476241046" : 17.132, + "99.89550896824817" : 17.164, + "99.89648483089853" : 17.213, + "99.89746980601846" : 17.256, + "99.89844732548148" : 17.3, + "99.89942153131919" : 17.336, + "99.90039408034426" : 17.392, + "99.90136828618198" : 17.447, + "99.90236651580311" : 17.498, + "99.9028378790018" : 17.519, + "99.90332912395228" : 17.544, + "99.90381125643319" : 17.566, + "99.90431161385324" : 17.592, + "99.90480617242902" : 17.614, + "99.9052742220024" : 17.632, + "99.90576960898451" : 17.65, + "99.90626333915397" : 17.678, + "99.90675789772975" : 17.704, + "99.90724085861697" : 17.731, + "99.90772133428524" : 17.751, + "99.9082117508294" : 17.773, + "99.9086971969356" : 17.796, + "99.9091992111683" : 17.826, + "99.90967720161758" : 17.845, + "99.91016430453645" : 17.864, + "99.91064809383" : 17.885, + "99.91114265240579" : 17.909, + "99.91163306894994" : 17.933, + "99.91212514230675" : 17.956, + "99.91261721566354" : 17.976, + "99.91308940726856" : 17.999, + "99.9135922499076" : 18.022, + "99.91407189716952" : 18.046, + "99.91456314212" : 18.075, + "99.91504444619459" : 18.104, + "99.91554397520832" : 18.124, + "99.91603770537778" : 18.141, + "99.91651983785869" : 18.166, + "99.91699617149531" : 18.188, + "99.9174940436964" : 18.218, + "99.917972862552" : 18.243, + "99.91846245068984" : 18.28, + "99.91895038201503" : 18.309, + "99.91945156784139" : 18.342, + "99.91994861163614" : 18.363, + "99.92042660208544" : 18.388, + "99.92090459253473" : 18.418, + "99.92140163632948" : 18.451, + "99.92189536649893" : 18.472, + "99.92237252854189" : 18.502, + "99.92285548942912" : 18.529, + "99.9233467343796" : 18.559, + "99.92382969526685" : 18.602, + "99.92433253790587" : 18.627, + "99.9248154987931" : 18.654, + "99.92529680286768" : 18.693, + "99.92578390578655" : 18.714, + "99.9262710087054" : 18.75, + "99.92676059684322" : 18.792, + "99.92724935657473" : 18.816, + "99.92774805718214" : 18.84, + "99.92823101806937" : 18.875, + "99.92871480736294" : 18.916, + "99.92920688071973" : 18.966, + "99.92968901320064" : 19.01, + "99.93017777293215" : 19.06, + "99.93067067469528" : 19.098, + "99.93117600255329" : 19.115, + "99.93165979184684" : 19.14, + "99.93214855157835" : 19.157, + "99.93262737043396" : 19.199, + "99.93311447335282" : 19.236, + "99.93360323308433" : 19.279, + "99.93408702237788" : 19.312, + "99.93458406617263" : 19.341, + "99.93506205662192" : 19.37, + "99.93554750272813" : 19.404, + "99.93604951696082" : 19.435, + "99.93652750741012" : 19.478, + "99.93701378192264" : 19.525, + "99.9375108257174" : 19.561, + "99.93799047297934" : 19.593, + "99.93847674749188" : 19.637, + "99.93896550722337" : 19.679, + "99.93945923739282" : 19.726, + "99.93994882553066" : 19.792, + "99.94043510004319" : 19.858, + "99.94092965861897" : 19.906, + "99.94140930588091" : 19.975, + "99.94189806561242" : 20.046, + "99.94238765375025" : 20.105, + "99.9428813839197" : 20.178, + "99.94336848683855" : 20.213, + "99.94384813410049" : 20.252, + "99.9443435210826" : 20.296, + "99.94482648196983" : 20.354, + "99.94531938373296" : 20.435, + "99.94580980027712" : 20.493, + "99.9462911043517" : 20.524, + "99.94678152089585" : 20.578, + "99.94728022150326" : 20.653, + "99.94775986876519" : 20.709, + "99.94824282965243" : 20.775, + "99.94873076097761" : 20.884, + "99.94922200592809" : 20.975, + "99.94971490769122" : 21.031, + "99.95019869698478" : 21.137, + "99.95069159874791" : 21.225, + "99.95117538804146" : 21.295, + "99.95141811109457" : 21.328, + "99.95167408864887" : 21.369, + "99.95191018445138" : 21.39, + "99.95215787794243" : 21.414, + "99.95239563055759" : 21.45, + "99.95263918201701" : 21.494, + "99.9528843902891" : 21.535, + "99.95312794174852" : 21.595, + "99.9533731500206" : 21.63, + "99.95361421626106" : 21.707, + "99.95385776772048" : 21.757, + "99.95411126005581" : 21.806, + "99.95434818426465" : 21.866, + "99.95459339253672" : 21.902, + "99.95484357124674" : 21.965, + "99.95507966704925" : 22.067, + "99.95532818894662" : 22.12, + "99.9555667699681" : 22.226, + "99.95581114983386" : 22.36, + "99.95605801491858" : 22.414, + "99.95629990956537" : 22.468, + "99.95654511783745" : 22.526, + "99.95679363973483" : 22.585, + "99.95703470597527" : 22.644, + "99.95727660062205" : 22.733, + "99.95752263730046" : 22.775, + "99.95776453194723" : 22.823, + "99.95800808340667" : 22.918, + "99.95825577689772" : 22.996, + "99.95849684313818" : 23.074, + "99.95874205141025" : 23.183, + "99.95898477446336" : 23.227, + "99.95923412476705" : 23.375, + "99.95947353419486" : 23.503, + "99.95971791406062" : 23.667, + "99.9599631223327" : 23.725, + "99.9602058453858" : 23.856, + "99.9604518820642" : 23.943, + "99.96069957555525" : 24.095, + "99.96093898498306" : 24.265, + "99.96118170803616" : 24.337, + "99.96142940152721" : 24.567, + "99.96167046776766" : 24.686, + "99.96191650444607" : 24.804, + "99.96216088431183" : 25.048, + "99.96240360736493" : 25.183, + "99.96264715882435" : 25.341, + "99.96289153869012" : 25.521, + "99.96313509014954" : 25.636, + "99.96338361204691" : 25.768, + "99.96362467828737" : 25.844, + "99.9638682297468" : 25.97, + "99.96411178120623" : 26.108, + "99.9643569894783" : 26.289, + "99.96459971253141" : 26.413, + "99.96484574920981" : 26.578, + "99.96508847226292" : 26.716, + "99.96533285212867" : 26.862, + "99.96558137402604" : 26.985, + "99.96582078345385" : 27.172, + "99.96606599172593" : 27.398, + "99.96631037159167" : 27.775, + "99.96655309464478" : 27.909, + "99.96679913132319" : 28.094, + "99.96704185437629" : 28.266, + "99.96728540583572" : 28.593, + "99.96753227092044" : 28.764, + "99.96777416556722" : 29.002, + "99.96801937383931" : 29.143, + "99.9682654105177" : 29.345, + "99.96851144719611" : 29.683, + "99.96875002821758" : 29.838, + "99.96899523648966" : 29.948, + "99.96923961635542" : 30.234, + "99.96948316781484" : 30.612, + "99.96972671927428" : 30.842, + "99.96997192754635" : 31.275, + "99.97021796422476" : 31.561, + "99.97045903046521" : 31.802, + "99.9707042387373" : 32.042, + "99.97094779019672" : 32.389, + "99.97119217006248" : 32.52, + "99.97143737833456" : 32.82, + "99.97168341501296" : 33.147, + "99.97192448125341" : 33.391, + "99.97216968952549" : 33.613, + "99.97241241257859" : 33.994, + "99.97265762085067" : 34.184, + "99.97290282912275" : 34.559, + "99.97314472376952" : 34.801, + "99.97339490247955" : 35.038, + "99.97363348350103" : 35.261, + "99.97387786336678" : 35.553, + "99.97412141482621" : 35.975, + "99.97436579469196" : 36.405, + "99.97461017455772" : 36.705, + "99.9748553828298" : 37.2, + "99.9750981058829" : 37.552, + "99.97534248574866" : 37.94, + "99.9755868656144" : 38.18, + "99.97570946975046" : 38.348, + "99.97583290229281" : 38.507, + "99.97595302120988" : 38.878, + "99.97607645375224" : 38.996, + "99.97619740107564" : 39.098, + "99.97631917680535" : 39.18, + "99.97644095253506" : 39.59, + "99.97656272826477" : 39.962, + "99.97668616080713" : 40.098, + "99.97680876494317" : 40.233, + "99.97692971226657" : 40.684, + "99.97705148799628" : 41.071, + "99.977173263726" : 41.155, + "99.97729586786204" : 41.307, + "99.97741764359175" : 41.475, + "99.97754024772779" : 41.69, + "99.9776620234575" : 42.02, + "99.97778462759354" : 42.141, + "99.97790640332326" : 42.354, + "99.97802735064664" : 42.49, + "99.97815078318901" : 42.763, + "99.97827255891872" : 42.876, + "99.97839433464844" : 43.135, + "99.97851611037815" : 43.305, + "99.97863871451419" : 43.445, + "99.97876297546287" : 43.573, + "99.97888226597362" : 43.854, + "99.97900404170333" : 43.978, + "99.97912664583937" : 44.395, + "99.97924842156908" : 44.526, + "99.97937102570512" : 44.648, + "99.97949280143484" : 44.952, + "99.97961540557088" : 45.246, + "99.97973635289426" : 45.645, + "99.97985978543663" : 45.979, + "99.97998156116634" : 46.552, + "99.98010499370871" : 46.955, + "99.98022511262577" : 46.987, + "99.98034688835548" : 47.649, + "99.98046949249152" : 47.893, + "99.98059209662756" : 48.057, + "99.9807147007636" : 48.159, + "99.980835648087" : 48.948, + "99.98095908062936" : 48.975, + "99.98107919954643" : 49.33, + "99.98120180368247" : 49.945, + "99.9813277214438" : 50.055, + "99.98144535514189" : 50.448, + "99.98156795927792" : 50.846, + "99.98168973500765" : 51.158, + "99.98181316755002" : 51.533, + "99.9819341148734" : 51.879, + "99.98205671900944" : 51.936, + "99.98217849473914" : 52.312, + "99.98230027046887" : 52.96, + "99.98242287460491" : 53.398, + "99.98254465033462" : 53.524, + "99.98267139650228" : 53.795, + "99.98278820179405" : 54.071, + "99.98291163433642" : 54.497, + "99.9830325816598" : 54.594, + "99.98315518579584" : 54.758, + "99.98327696152556" : 54.916, + "99.9833995656616" : 55.158, + "99.98352216979764" : 55.58, + "99.98364311712102" : 55.73, + "99.98376489285074" : 55.765, + "99.9838883253931" : 55.982, + "99.98400927271649" : 56.174, + "99.98413187685253" : 56.298, + "99.98425365258224" : 56.755, + "99.98437791353093" : 56.838, + "99.98449720404167" : 56.923, + "99.98462063658404" : 57.057, + "99.98474158390742" : 57.343, + "99.98486418804346" : 57.665, + "99.98498596377318" : 57.734, + "99.98510939631554" : 57.916, + "99.9852295152326" : 58.041, + "99.98535211936864" : 58.174, + "99.98547389509837" : 58.404, + "99.9855998128597" : 58.732, + "99.98571827496411" : 58.804, + "99.98584087910015" : 58.879, + "99.98596348323619" : 59.008, + "99.98608940099753" : 59.182, + "99.98621200513357" : 59.237, + "99.98632881042533" : 59.278, + "99.98645307137403" : 59.49, + "99.98657401869741" : 59.6, + "99.9866949660208" : 59.937, + "99.98681757015684" : 60.116, + "99.98693934588655" : 60.2, + "99.98706195002259" : 60.323, + "99.98718289734599" : 60.427, + "99.98730632988834" : 60.58, + "99.98742810561806" : 61.043, + "99.9875507097541" : 61.276, + "99.98767579910911" : 61.442, + "99.98779343280721" : 61.486, + "99.98785473487523" : 61.524, + "99.98791520853692" : 61.673, + "99.98797733901127" : 61.982, + "99.98803946948561" : 62.047, + "99.98809828633465" : 62.128, + "99.988160416809" : 62.191, + "99.98822089047069" : 62.308, + "99.9882821925387" : 62.407, + "99.98834266620041" : 62.532, + "99.98840479667476" : 62.594, + "99.98846609874278" : 62.731, + "99.98852657240447" : 62.891, + "99.98858704606616" : 63.006, + "99.98864834813418" : 63.052, + "99.9887096502022" : 63.069, + "99.98877095227022" : 63.177, + "99.98883059752559" : 63.345, + "99.98889272799994" : 63.513, + "99.98895403006796" : 63.589, + "99.98901533213598" : 63.606, + "99.98907580579767" : 63.808, + "99.98913710786569" : 63.99, + "99.98919758152738" : 64.114, + "99.98925805518907" : 64.146, + "99.98932101406974" : 64.535, + "99.98938065932512" : 64.554, + "99.98944196139314" : 64.69, + "99.98950326346116" : 64.887, + "99.9895653939355" : 65.044, + "99.98962421078454" : 65.159, + "99.98968551285256" : 65.277, + "99.98974764332691" : 65.394, + "99.98980728858227" : 65.415, + "99.9898685906503" : 65.528, + "99.9899323779373" : 65.796, + "99.98999119478634" : 65.848, + "99.99005249685436" : 65.896, + "99.99011297051605" : 66.03, + "99.99017427258407" : 66.119, + "99.99023723146473" : 66.155, + "99.99029604831378" : 66.222, + "99.99035652197549" : 66.34, + "99.9904178240435" : 66.497, + "99.9904816113305" : 66.842, + "99.99054291339851" : 66.857, + "99.99060173024756" : 66.876, + "99.99066220390925" : 66.916, + "99.99072350597727" : 66.941, + "99.99078563645162" : 67.103, + "99.99084528170698" : 67.204, + "99.990906583775" : 67.23, + "99.9909670574367" : 67.361, + "99.99102835950472" : 67.429, + "99.99109131838539" : 67.83, + "99.99115096364076" : 67.891, + "99.99121392252142" : 67.933, + "99.99127273937047" : 67.988, + "99.99133321303216" : 68.026, + "99.99139451510018" : 68.208, + "99.9914558171682" : 68.278, + "99.99151711923622" : 68.301, + "99.99157759289793" : 68.339, + "99.99163972337226" : 68.847, + "99.99170019703396" : 68.917, + "99.99176149910198" : 69.105, + "99.99182197276367" : 69.123, + "99.99188244642536" : 69.285, + "99.99194457689971" : 69.3, + "99.9920050505614" : 69.478, + "99.99206552422311" : 69.584, + "99.99212848310377" : 69.678, + "99.99218895676546" : 69.814, + "99.99224943042717" : 69.951, + "99.99231073249518" : 70.069, + "99.99237120615688" : 70.106, + "99.9924325082249" : 70.212, + "99.99249298188658" : 70.355, + "99.99255594076726" : 70.479, + "99.99261475761631" : 70.653, + "99.99267605968433" : 70.713, + "99.99273736175235" : 70.801, + "99.99279949222668" : 71.038, + "99.99285913748206" : 71.321, + "99.9929212679564" : 71.351, + "99.9929817416181" : 71.581, + "99.99304304368611" : 71.721, + "99.99310434575413" : 71.761, + "99.99316564782215" : 71.831, + "99.9932277782965" : 71.854, + "99.99328659514555" : 71.9, + "99.99334872561988" : 72.417, + "99.9934100276879" : 72.46, + "99.99346967294328" : 72.655, + "99.99353180341762" : 72.717, + "99.99359144867299" : 72.887, + "99.993652750741" : 72.966, + "99.99371488121535" : 73.276, + "99.99377784009603" : 73.381, + "99.99383831375772" : 73.483, + "99.99389713060677" : 73.529, + "99.99392861004709" : 73.572, + "99.99395843267479" : 73.638, + "99.99399322574041" : 73.649, + "99.99401890633648" : 73.747, + "99.99404955737049" : 73.791, + "99.99408103681083" : 73.818, + "99.9941108594385" : 74.006, + "99.99414151047252" : 74.03, + "99.9941713331002" : 74.19, + "99.99420695457216" : 74.199, + "99.99423346357455" : 74.211, + "99.99426411460855" : 74.446, + "99.99429393723624" : 74.551, + "99.99432375986393" : 74.596, + "99.99435441089794" : 74.614, + "99.99438589033826" : 74.643, + "99.99441571296596" : 74.655, + "99.99444636399997" : 74.666, + "99.99447701503398" : 74.883, + "99.99450766606799" : 74.894, + "99.99453997391464" : 74.901, + "99.99456979654234" : 74.905, + "99.99459879076369" : 74.967, + "99.9946294417977" : 75.008, + "99.99466092123804" : 75.084, + "99.99469157227205" : 75.099, + "99.99472222330606" : 75.113, + "99.99475121752741" : 75.174, + "99.99478186856142" : 75.271, + "99.99481334800176" : 75.292, + "99.99484399903577" : 75.403, + "99.99487465006978" : 75.527, + "99.99490364429114" : 75.612, + "99.99493678054412" : 75.628, + "99.99496577476548" : 75.739, + "99.9949964257995" : 75.77, + "99.99502624842718" : 75.919, + "99.99505772786752" : 76.048, + "99.99508672208887" : 76.081, + "99.99511820152921" : 76.096, + "99.99514968096955" : 76.104, + "99.99517950359723" : 76.202, + "99.99520932622491" : 76.301, + "99.99524246247789" : 76.31, + "99.99527062829293" : 76.546, + "99.99530045092061" : 76.563, + "99.99533441557992" : 76.655, + "99.99536423820761" : 76.665, + "99.99539323242897" : 76.675, + "99.99542305505665" : 76.753, + "99.99545370609066" : 76.778, + "99.99548352871835" : 76.856, + "99.99551417975236" : 76.875, + "99.99554648759901" : 76.897, + "99.99557631022671" : 76.908, + "99.99560613285439" : 76.971, + "99.99564092592001" : 76.985, + "99.99566660651608" : 76.989, + "99.99569725755009" : 77.105, + "99.9957279085841" : 77.124, + "99.99575855961811" : 77.162, + "99.99578921065212" : 77.174, + "99.99581986168613" : 77.198, + "99.99585134112647" : 77.278, + "99.99588116375415" : 77.287, + "99.99591098638183" : 77.329, + "99.99594246582217" : 77.546, + "99.99597228844986" : 77.567, + "99.99600459629652" : 77.68, + "99.99603359051788" : 77.705, + "99.99606424155189" : 77.747, + "99.9960948925859" : 77.804, + "99.99612471521358" : 77.82, + "99.99615536624759" : 77.849, + "99.99618684568793" : 77.931, + "99.99621832512825" : 77.952, + "99.99624649094329" : 77.977, + "99.99627797038363" : 77.989, + "99.99630779301131" : 78.049, + "99.99633844404532" : 78.058, + "99.99636909507933" : 78.084, + "99.99640057451967" : 78.19, + "99.99642956874102" : 78.239, + "99.99646104818136" : 78.266, + "99.99649335602803" : 78.276, + "99.99652400706204" : 78.283, + "99.99655382968972" : 78.289, + "99.99658448072373" : 78.297, + "99.9966134749451" : 78.314, + "99.9966441259791" : 78.331, + "99.99667394860678" : 78.486, + "99.9967045996408" : 78.626, + "99.9967352506748" : 78.638, + "99.99676673011514" : 78.736, + "99.9967957243365" : 78.768, + "99.9968263753705" : 78.789, + "99.99685868321717" : 79.029, + "99.99688850584485" : 79.154, + "99.99691832847253" : 79.172, + "99.99694980791287" : 79.188, + "99.99696554763304" : 79.267, + "99.99697963054055" : 79.27, + "99.99699702707338" : 79.273, + "99.99700945316825" : 79.276, + "99.99702684970106" : 79.28, + "99.9970417610149" : 79.284, + "99.9970583291414" : 79.355, + "99.99707324045524" : 79.358, + "99.9970856665501" : 79.361, + "99.99710140627027" : 79.37, + "99.99711714599043" : 79.38, + "99.99713205730428" : 79.385, + "99.9971494538371" : 79.39, + "99.99716187993197" : 79.394, + "99.99717844805845" : 79.399, + "99.9971933593723" : 79.404, + "99.99720909909246" : 79.408, + "99.99722401040631" : 79.417, + "99.99723892172015" : 79.525, + "99.99725548984664" : 79.533, + "99.99726957275416" : 79.545, + "99.99728531247433" : 79.559, + "99.99729939538184" : 79.567, + "99.99731596350834" : 79.578, + "99.99733004641585" : 79.633, + "99.99735241338662" : 79.636, + "99.99736318266883" : 79.638, + "99.99737809398268" : 79.641, + "99.99739383370284" : 79.645, + "99.99740708820404" : 79.648, + "99.99742199951788" : 79.81, + "99.99743691083172" : 79.818, + "99.99745182214556" : 80.063, + "99.99746756186573" : 80.074, + "99.9974833015859" : 80.084, + "99.99749904130607" : 80.097, + "99.99751312421358" : 80.106, + "99.99752969234008" : 80.116, + "99.99754377524759" : 80.199, + "99.99756117178042" : 80.205, + "99.99757525468793" : 80.21, + "99.99759265122074" : 80.214, + "99.99760507731561" : 80.217, + "99.99761998862947" : 80.226, + "99.99763572834962" : 80.231, + "99.99765478169509" : 80.235, + "99.99766720778996" : 80.238, + "99.99768626113543" : 80.242, + "99.99770034404294" : 80.244, + "99.99771277013781" : 80.247, + "99.99772768145165" : 80.251, + "99.99774424957815" : 80.346, + "99.99775833248566" : 80.35, + "99.99777738583113" : 80.355, + "99.99778815511335" : 80.388, + "99.99780389483352" : 80.394, + "99.99781880614736" : 80.402, + "99.9978337174612" : 80.411, + "99.99784862877505" : 80.718, + "99.99786436849521" : 80.725, + "99.99788010821538" : 80.733, + "99.99789584793555" : 81.183, + "99.99790993084306" : 81.191, + "99.9979248421569" : 81.302, + "99.9979414102834" : 81.309, + "99.99796129203519" : 81.313, + "99.99797288972374" : 81.315, + "99.99798614422492" : 81.317, + "99.9980018839451" : 81.32, + "99.99801762366526" : 81.323, + "99.99803419179176" : 81.326, + "99.99804744629294" : 81.36, + "99.99806318601311" : 81.37, + "99.99807809732695" : 81.381, + "99.99809383704712" : 81.454, + "99.99810874836096" : 81.463, + "99.9981236596748" : 81.474, + "99.99814105620763" : 81.479, + "99.99815431070881" : 81.485, + "99.99817087883531" : 81.494, + "99.99818661855548" : 81.53, + "99.99820152986932" : 81.534, + "99.99822058321479" : 81.543, + "99.998231352497" : 81.553, + "99.99824709221717" : 81.565, + "99.9982611751247" : 81.876, + "99.99827691484487" : 81.882, + "99.99829348297135" : 81.894, + "99.99830673747255" : 81.902, + "99.99832164878639" : 81.913, + "99.99833738850656" : 81.924, + "99.99835312822673" : 81.944, + "99.99836803954057" : 81.953, + "99.99838460766705" : 81.958, + "99.99840200419987" : 82.056, + "99.99841443029474" : 82.062, + "99.99842934160858" : 82.075, + "99.99844425292243" : 82.158, + "99.9984599926426" : 82.169, + "99.99847490395643" : 82.177, + "99.99848235961336" : 82.181, + "99.99848981527028" : 82.281, + "99.9984972709272" : 82.289, + "99.99850472658412" : 82.303, + "99.99851301064737" : 82.311, + "99.99852129471061" : 82.418, + "99.99852875036753" : 82.422, + "99.99853537761813" : 82.426, + "99.9985444900877" : 82.429, + "99.99855194574462" : 82.432, + "99.99855857299522" : 82.44, + "99.99856602865214" : 82.445, + "99.99857348430906" : 82.45, + "99.9985817683723" : 82.455, + "99.99859005243555" : 82.46, + "99.99859750809247" : 82.464, + "99.99860413534307" : 82.471, + "99.99861241940631" : 82.486, + "99.99861987506324" : 82.49, + "99.99862733072015" : 82.495, + "99.99863561478341" : 82.501, + "99.998642242034" : 82.513, + "99.99865052609725" : 82.517, + "99.99865881016049" : 82.544, + "99.99866543741109" : 82.549, + "99.99867372147433" : 82.555, + "99.99868034872493" : 82.56, + "99.99868780438186" : 82.566, + "99.9986960884451" : 82.619, + "99.99870354410201" : 82.624, + "99.99871182816527" : 82.63, + "99.99871845541587" : 82.635, + "99.99872673947911" : 82.639, + "99.99873502354235" : 82.644, + "99.99874165079295" : 82.671, + "99.99874910644988" : 82.675, + "99.99875739051312" : 82.68, + "99.99876484617003" : 82.685, + "99.99877313023329" : 82.69, + "99.99878307110919" : 82.694, + "99.99878804154713" : 83.019, + "99.99879466879773" : 83.021, + "99.99880460967363" : 83.023, + "99.9988137221432" : 83.025, + "99.99881786417481" : 83.026, + "99.99882697664438" : 83.028, + "99.99883774592661" : 83.03, + "99.9988410595519" : 83.031, + "99.99884934361515" : 83.034, + "99.99885928449105" : 83.037, + "99.99886508333532" : 83.04, + "99.99887088217959" : 83.043, + "99.99887916624283" : 83.049, + "99.99888662189976" : 83.058, + "99.99889407755667" : 83.071, + "99.99890236161993" : 83.077, + "99.99890981727684" : 83.082, + "99.99891892974641" : 83.088, + "99.99892555699701" : 83.092, + "99.99893301265394" : 83.152, + "99.99894046831085" : 83.155, + "99.9989487523741" : 83.158, + "99.99895537962469" : 83.16, + "99.99896366368795" : 83.163, + "99.99897029093854" : 83.166, + "99.99897857500179" : 83.259, + "99.99898685906503" : 83.263, + "99.99899431472195" : 83.266, + "99.99900094197255" : 83.269, + "99.99900839762947" : 83.273, + "99.9990158532864" : 83.278, + "99.99902413734964" : 83.281, + "99.99903159300656" : 83.283, + "99.9990398770698" : 83.286, + "99.99904733272672" : 83.289, + "99.99905478838365" : 83.293, + "99.99906307244689" : 83.299, + "99.99907052810381" : 83.304, + "99.99907715535441" : 83.309, + "99.99908461101133" : 83.459, + "99.99909620869988" : 83.492, + "99.9991003507315" : 83.493, + "99.99910863479474" : 83.495, + "99.99911609045166" : 83.497, + "99.99912603132756" : 83.5, + "99.99913348698448" : 83.502, + "99.99914177104773" : 83.504, + "99.99914674148567" : 83.506, + "99.99915336873627" : 83.508, + "99.99916248120584" : 83.511, + "99.99916910845644" : 83.513, + "99.99917656411336" : 83.516, + "99.99918567658293" : 83.549, + "99.99919313223985" : 83.553, + "99.99919975949045" : 83.603, + "99.9992080435537" : 83.607, + "99.99921549921062" : 83.612, + "99.9992221264612" : 83.616, + "99.9992320673371" : 83.62, + "99.99923786618137" : 83.702, + "99.999242008213" : 83.704, + "99.99924780705727" : 83.714, + "99.99924946386993" : 83.715, + "99.99925277749522" : 83.717, + "99.99925774793317" : 83.72, + "99.99926023315214" : 83.722, + "99.99926437518377" : 83.724, + "99.99926768880907" : 83.726, + "99.99927183084068" : 83.963, + "99.99927762968495" : 83.965, + "99.99928011490394" : 83.966, + "99.99928425693555" : 83.968, + "99.99928757056085" : 83.97, + "99.99929088418615" : 83.972, + "99.9992958546241" : 83.975, + "99.9992991682494" : 83.98, + "99.9993024818747" : 83.982, + "99.99930579549999" : 83.984, + "99.99930993753162" : 83.986, + "99.99931739318853" : 84.11, + "99.99932319203282" : 84.112, + "99.99932733406443" : 84.113, + "99.99933147609606" : 84.115, + "99.99933561812769" : 84.117, + "99.99933727494033" : 84.118, + "99.99934224537827" : 84.12, + "99.9993463874099" : 84.122, + "99.99935052944153" : 84.124, + "99.99935467147314" : 84.125, + "99.9993563282858" : 84.126, + "99.9993596419111" : 84.127, + "99.9993662691617" : 84.129, + "99.99936792597434" : 84.13, + "99.99937123959964" : 84.131, + "99.99937455322494" : 84.132, + "99.99938035206921" : 84.134, + "99.99938283728818" : 84.135, + "99.99938697931981" : 84.139, + "99.99939112135142" : 84.142, + "99.99939360657041" : 84.143, + "99.99939774860202" : 84.146, + "99.99940189063365" : 84.153, + "99.99940520425895" : 84.155, + "99.99941017469689" : 84.158, + "99.99941265991586" : 84.161, + "99.99941680194749" : 84.164, + "99.99942094397912" : 84.167, + "99.99942425760442" : 84.169, + "99.99942839963603" : 84.172, + "99.99943171326133" : 84.174, + "99.99943585529296" : 84.177, + "99.9994408257309" : 84.18, + "99.99944331094987" : 84.182, + "99.9994474529815" : 84.222, + "99.99945159501313" : 84.224, + "99.99945573704474" : 84.226, + "99.99945905067004" : 84.228, + "99.99946236429534" : 84.23, + "99.99946650632697" : 84.232, + "99.99947147676491" : 84.234, + "99.99947561879654" : 84.235, + "99.99947810401551" : 84.236, + "99.99948141764081" : 84.237, + "99.99948555967244" : 84.239, + "99.99948970170405" : 84.241, + "99.99949384373568" : 84.369, + "99.99949715736098" : 84.519, + "99.99950047098628" : 84.521, + "99.99950461301789" : 84.524, + "99.99950792664319" : 84.526, + "99.99951206867482" : 84.528, + "99.99951703911276" : 84.531, + "99.99952035273806" : 84.533, + "99.99952366636336" : 84.535, + "99.99952780839499" : 84.537, + "99.99953112202029" : 84.539, + "99.99953609245823" : 84.541, + "99.99953940608353" : 84.543, + "99.99954271970883" : 84.544, + "99.99954686174046" : 84.574, + "99.99955017536575" : 84.576, + "99.9995551458037" : 84.579, + "99.999558459429" : 84.58, + "99.9995617730543" : 84.581, + "99.99956757189857" : 84.583, + "99.99957088552387" : 84.584, + "99.99957337074284" : 84.585, + "99.99957999799344" : 84.587, + "99.99958248321241" : 84.588, + "99.99958496843138" : 84.589, + "99.999589110463" : 84.59, + "99.99959325249463" : 84.591, + "99.9995990513389" : 84.593, + "99.99960153655788" : 84.594, + "99.99960402177685" : 84.595, + "99.99960733540215" : 84.596, + "99.99961147743377" : 84.599, + "99.99961479105907" : 84.601, + "99.99961976149702" : 84.605, + "99.99962224671599" : 84.606, + "99.99962307512232" : 84.609, + "99.99962638874761" : 84.611, + "99.99962970237291" : 84.613, + "99.99963135918556" : 84.614, + "99.99963301599821" : 84.615, + "99.99963467281086" : 84.616, + "99.99963715802983" : 84.617, + "99.99963798643616" : 84.618, + "99.99964047165513" : 84.619, + "99.9996429568741" : 84.62, + "99.99964461368675" : 84.621, + "99.99964709890573" : 84.622, + "99.9996495841247" : 84.623, + "99.99965372615632" : 84.625, + "99.99965538296897" : 84.626, + "99.99965703978162" : 84.627, + "99.9996595250006" : 84.628, + "99.99966118181324" : 84.629, + "99.99966366703222" : 84.63, + "99.99966532384487" : 84.631, + "99.99966698065752" : 84.632, + "99.99966863747017" : 84.633, + "99.99967029428281" : 84.938, + "99.99967360790811" : 84.941, + "99.99967526472076" : 84.942, + "99.9996769215334" : 84.943, + "99.99967857834606" : 84.944, + "99.9996802351587" : 84.945, + "99.99968189197136" : 84.946, + "99.99968520559666" : 84.947, + "99.99968769081563" : 84.948, + "99.99969266125358" : 84.949, + "99.99969597487888" : 84.95, + "99.99969928850417" : 84.951, + "99.99970094531682" : 84.952, + "99.99970260212947" : 84.953, + "99.99970508734845" : 84.959, + "99.99970757256742" : 84.961, + "99.99971005778639" : 84.962, + "99.99971088619272" : 84.963, + "99.99971254300537" : 84.964, + "99.99971419981802" : 85.057, + "99.99971668503699" : 85.058, + "99.99971917025597" : 85.059, + "99.99972082706861" : 85.06, + "99.99972248388126" : 85.061, + "99.99972414069391" : 85.062, + "99.99972662591288" : 85.063, + "99.99972745431921" : 85.064, + "99.99972993953818" : 85.065, + "99.99973159635083" : 85.067, + "99.99973325316348" : 85.068, + "99.99973490997613" : 85.069, + "99.99973739519511" : 85.071, + "99.99973905200775" : 85.072, + "99.9997407088204" : 85.073, + "99.9997440224457" : 85.075, + "99.99974485085203" : 85.076, + "99.99974650766468" : 85.077, + "99.99974899288365" : 85.078, + "99.9997506496963" : 85.079, + "99.9997539633216" : 85.08, + "99.9997572769469" : 85.082, + "99.99975976216587" : 85.083, + "99.99976224738484" : 85.604, + "99.99976473260382" : 85.605, + "99.99976638941646" : 85.606, + "99.99976804622912" : 85.607, + "99.99977053144809" : 85.609, + "99.99977218826074" : 85.61, + "99.99977384507339" : 85.611, + "99.99977550188603" : 85.612, + "99.999777987105" : 85.613, + "99.99977964391766" : 85.614, + "99.9997813007303" : 85.615, + "99.99978295754296" : 85.616, + "99.9997846143556" : 85.617, + "99.99978709957458" : 85.619, + "99.99978958479356" : 85.62, + "99.99979041319988" : 85.621, + "99.99979372682517" : 85.623, + "99.99979538363783" : 85.624, + "99.99979704045047" : 85.625, + "99.99979869726313" : 85.626, + "99.99980035407577" : 85.627, + "99.99980283929474" : 85.629, + "99.99980366770107" : 85.63, + "99.99980615292004" : 85.684, + "99.99980863813902" : 85.686, + "99.99980946654534" : 85.687, + "99.99981029495167" : 85.688, + "99.99981195176431" : 85.689, + "99.99981278017064" : 85.69, + "99.99981360857697" : 85.691, + "99.99981443698329" : 85.692, + "99.99981526538961" : 85.693, + "99.99981775060859" : 85.694, + "99.99982023582757" : 85.695, + "99.99982189264021" : 85.696, + "99.99982354945286" : 85.697, + "99.99982603467184" : 85.698, + "99.99982686307816" : 85.699, + "99.99982851989081" : 85.7, + "99.99982934829714" : 85.701, + "99.99983100510978" : 85.702, + "99.99983183351611" : 85.703, + "99.99983349032875" : 85.704, + "99.99983514714141" : 85.705, + "99.99983597554773" : 85.706, + "99.99983763236038" : 85.707, + "99.99983928917302" : 85.708, + "99.99984094598568" : 85.709, + "99.99984177439201" : 85.71, + "99.99984343120465" : 85.711, + "99.9998450880173" : 85.712, + "99.99984591642362" : 85.713, + "99.99984757323628" : 85.714, + "99.99984923004892" : 85.715, + "99.99985005845525" : 85.716, + "99.99985088686158" : 86.777, + "99.99985254367422" : 87.274, + "99.99985420048688" : 87.275, + "99.99985585729952" : 87.276, + "99.99985751411216" : 87.277, + "99.99985917092482" : 87.278, + "99.99986165614379" : 87.279, + "99.99986414136276" : 87.28, + "99.99986579817542" : 87.281, + "99.99986745498806" : 87.282, + "99.99986911180072" : 87.283, + "99.99987076861336" : 87.284, + "99.99987242542602" : 87.285, + "99.99987408223866" : 87.286, + "99.99987491064499" : 87.287, + "99.99987656745763" : 87.288, + "99.9998790526766" : 87.289, + "99.99987988108293" : 87.29, + "99.99988153789559" : 87.291, + "99.99988319470823" : 87.292, + "99.99988485152089" : 87.293, + "99.9998856799272" : 87.294, + "99.99988733673986" : 87.301, + "99.9998889935525" : 87.302, + "99.99988982195883" : 87.303, + "99.99989147877147" : 87.304, + "99.99989396399046" : 87.305, + "99.99989479239677" : 87.306, + "99.9998956208031" : 87.31, + "99.99989810602207" : 92.008, + "99.99989976283473" : 92.009, + "99.9999022480537" : 92.01, + "99.99990473327267" : 92.011, + "99.99990639008533" : 92.012, + "99.99990721849164" : 93.061, + "99.9999088753043" : 93.062, + "99.99991136052327" : 93.063, + "99.99991301733591" : 93.064, + "99.99991467414857" : 93.065, + "99.99991633096121" : 93.066, + "99.99991798777387" : 93.067, + "99.99991964458651" : 93.068, + "99.99992047299284" : 93.069, + "99.99992378661814" : 93.07, + "99.99992544343078" : 93.071, + "99.99992958546241" : 93.072, + "99.99993289908771" : 93.073, + "99.99993455590035" : 93.074, + "99.99993621271301" : 93.075, + "99.99993786952565" : 93.076, + "99.99993952633831" : 93.077, + "99.99994035474462" : 93.078, + "99.99994201155728" : 93.079, + "99.99994366836992" : 93.08, + "99.99994532518258" : 93.081, + "99.99994615358891" : 93.082, + "99.99994781040155" : 93.083, + "99.9999494672142" : 93.084, + "99.99995112402685" : 93.085, + "99.99995195243318" : 93.086, + "99.9999527808395" : 93.087, + "99.99995360924582" : 93.088, + "99.99995443765215" : 94.144, + "99.99995609446479" : 94.145, + "99.99995692287112" : 94.146, + "99.99995940809009" : 94.147, + "99.99996106490275" : 94.148, + "99.99996272171539" : 94.149, + "99.99996437852805" : 94.15, + "99.99996520693436" : 94.151, + "99.99996686374702" : 94.152, + "99.99996852055966" : 94.153, + "99.99997017737232" : 94.154, + "99.99997183418496" : 94.155, + "99.99997266259129" : 94.156, + "99.99997431940393" : 94.157, + "99.99997597621659" : 94.158, + "99.99997680462292" : 94.159, + "99.99997763302923" : 94.16, + "99.99997928984189" : 94.161, + "99.9999801182482" : 94.162, + "99.99998177506086" : 94.163, + "99.99998260346719" : 94.164, + "99.99998426027983" : 94.165, + "99.99998591709249" : 94.166, + "99.99998757390513" : 94.167, + "99.99998840231146" : 94.168, + "99.9999900591241" : 94.169, + "99.99999171593676" : 94.17, + "99.9999933727494" : 94.171, + "99.99999502956206" : 94.172, + "99.9999966863747" : 94.173, + "99.99999834318736" : 94.174, + "99.99999917159367" : 94.175, + "100.0" : 94.178 + }, + "endToEndLatencyAvg" : [ 3.2046667811865017, 3.182266808773789, 3.2612260302622937, 3.163047314081722, 3.195016170398042, 3.190760506389491, 3.1614899701131645, 3.142515902955055, 3.146753620537454, 3.1383000530909047, 3.136293311910981, 3.1411027736680506, 3.0716143326406447, 3.0970057097229367, 3.1183195032897584, 3.100393255460866, 3.1124758901453955, 3.1019670470674505, 3.0986321980857947, 3.12285881930534, 3.120142130662886, 3.124552211809066, 3.147213336778759, 3.1180819196860954, 3.135191789328095, 3.134048715133447, 3.1096167337353147, 3.1388703479101134, 3.15061610278066, 3.137777838774246, 3.1273342780176647, 3.1710496817047478, 3.13977024226271, 3.1093200898215803, 3.1538748921282567, 3.0991146158155605, 3.1029984113547373, 3.1220271005162714, 3.1237009860150047, 3.1203498685532804, 3.1301489745630393, 3.1231397426614382, 3.119608066461009, 3.1202269688887827, 3.1091367205648304, 3.1565383481984797, 4.2028967651499025, 3.1358464419699006, 3.1390128173263805, 3.1721432692895477, 3.1444850807969176, 3.1897623411364586, 3.150066734411618, 3.152732714338916, 3.1951506265442466, 3.1556777415407677, 3.1625160086087196, 3.1483817948967805, 3.173737481333601, 3.1287325414911766 ], + "endToEndLatency50pct" : [ 3.064, 3.023, 3.029, 3.025, 3.024, 3.018, 3.02, 3.009, 2.988, 3.003, 3.021, 3.013, 2.976, 2.979, 2.983, 2.981, 2.985, 2.973, 2.978, 2.971, 2.988, 2.981, 3.002, 2.998, 2.993, 2.991, 2.979, 2.998, 2.996, 2.998, 3.001, 3.036, 3.021, 2.989, 2.992, 2.978, 2.982, 2.987, 3.006, 2.985, 2.99, 2.997, 3.004, 2.979, 2.986, 3.004, 3.019, 2.999, 3.036, 3.028, 3.016, 3.046, 3.018, 3.025, 3.043, 3.03, 3.029, 2.992, 3.017, 3.008 ], + "endToEndLatency75pct" : [ 3.502, 3.431, 3.45, 3.442, 3.433, 3.433, 3.425, 3.423, 3.416, 3.418, 3.424, 3.421, 3.393, 3.408, 3.41, 3.398, 3.426, 3.4, 3.401, 3.408, 3.412, 3.412, 3.435, 3.424, 3.414, 3.421, 3.407, 3.423, 3.429, 3.435, 3.426, 3.439, 3.425, 3.415, 3.426, 3.414, 3.415, 3.419, 3.42, 3.412, 3.426, 3.415, 3.41, 3.404, 3.41, 3.451, 3.474, 3.429, 3.434, 3.446, 3.434, 3.442, 3.444, 3.435, 3.454, 3.448, 3.442, 3.427, 3.444, 3.427 ], + "endToEndLatency95pct" : [ 4.437, 4.338, 4.426, 4.37, 4.358, 4.367, 4.338, 4.342, 4.354, 4.333, 4.325, 4.333, 4.289, 4.324, 4.328, 4.295, 4.343, 4.322, 4.309, 4.326, 4.338, 4.343, 4.367, 4.335, 4.339, 4.36, 4.322, 4.361, 4.365, 4.37, 4.324, 4.367, 4.347, 4.323, 4.374, 4.311, 4.324, 4.333, 4.328, 4.33, 4.352, 4.338, 4.34, 4.336, 4.335, 4.397, 4.596, 4.336, 4.315, 4.386, 4.34, 4.374, 4.353, 4.343, 4.377, 4.364, 4.348, 4.354, 4.375, 4.339 ], + "endToEndLatency99pct" : [ 5.68, 5.145, 10.344, 5.642, 5.573, 6.105, 5.281, 5.386, 5.625, 5.185, 5.107, 5.331, 4.843, 5.051, 5.217, 4.958, 5.192, 5.126, 4.972, 5.108, 5.207, 5.298, 5.673, 5.106, 5.439, 5.711, 5.211, 5.489, 5.799, 5.642, 5.244, 6.054, 5.202, 5.123, 6.259, 5.006, 5.095, 5.263, 5.207, 5.184, 5.491, 5.115, 5.119, 5.339, 5.177, 5.961, 55.424, 5.187, 5.016, 6.044, 5.326, 5.962, 5.214, 5.308, 5.924, 5.396, 5.39, 5.939, 5.91, 5.162 ], + "endToEndLatency999pct" : [ 17.02, 28.361, 24.098, 16.685, 26.523, 20.508, 19.618, 15.936, 19.324, 17.888, 14.911, 16.531, 12.062, 14.003, 16.414, 16.193, 14.688, 14.526, 15.183, 21.855, 15.619, 16.708, 16.507, 14.618, 17.496, 15.932, 15.882, 17.466, 17.189, 16.049, 16.463, 16.318, 15.303, 14.755, 18.502, 13.635, 14.299, 15.616, 14.129, 16.393, 16.344, 15.962, 14.526, 17.752, 14.03, 17.023, 82.267, 17.768, 13.807, 16.903, 15.993, 18.668, 16.706, 15.497, 19.883, 15.552, 17.321, 17.499, 19.436, 15.547 ], + "endToEndLatency9999pct" : [ 20.154, 33.722, 61.669, 19.831, 32.501, 23.883, 32.967, 20.108, 21.673, 22.613, 17.236, 20.081, 19.04, 17.941, 20.013, 20.065, 17.835, 17.463, 18.633, 28.02, 19.266, 22.005, 20.693, 17.053, 20.609, 20.786, 20.443, 20.33, 20.821, 19.099, 23.653, 19.431, 19.377, 20.842, 21.829, 17.593, 17.121, 19.507, 17.917, 22.902, 21.066, 21.179, 20.197, 22.225, 16.696, 21.062, 86.884, 20.945, 19.207, 22.193, 20.421, 21.779, 21.24, 21.224, 24.028, 18.379, 20.579, 25.241, 24.442, 20.15 ], + "endToEndLatencyMax" : [ 20.831, 37.725, 69.955, 21.492, 34.644, 25.045, 35.964, 52.801, 22.669, 24.329, 18.092, 22.273, 21.027, 19.431, 21.007, 21.557, 24.556, 18.413, 19.733, 31.897, 30.346, 29.877, 22.499, 17.721, 21.867, 22.991, 22.612, 21.288, 22.137, 20.452, 24.649, 21.955, 22.236, 23.989, 23.88, 21.5, 18.737, 20.102, 19.21, 24.213, 36.653, 22.69, 21.173, 23.661, 18.529, 25.29, 95.874, 23.217, 20.031, 27.992, 21.439, 23.829, 22.032, 23.179, 24.472, 19.372, 21.556, 26.651, 28.093, 21.142 ], + "aggregatedEndToEndLatencyQuantiles" : { + "1.6568507235902033E-6" : 0.684, + "0.5001419299751095" : 1.482, + "1.0013856656814066" : 1.708, + "1.504645788718313" : 1.834, + "2.002711684736764" : 1.92, + "2.5054689535790606" : 1.987, + "3.0074814680211035" : 2.039, + "3.5028980597325337" : 2.081, + "4.004996730412203" : 2.116, + "4.506398695362603" : 2.146, + "5.004594654162856" : 2.172, + "5.502470840773456" : 2.195, + "6.005422789575775" : 2.216, + "6.524879456861137" : 2.236, + "7.018539786805562" : 2.254, + "7.509650223486381" : 2.271, + "8.023203531643592" : 2.288, + "8.517491808012256" : 2.304, + "9.03228775421216" : 2.32, + "9.524486741818379" : 2.335, + "10.001575250825454" : 2.349, + "10.531364867648486" : 2.364, + "11.006778300574013" : 2.377, + "11.50218412275574" : 2.39, + "12.02420642338658" : 2.403, + "12.51626292183057" : 2.415, + "13.027133788666287" : 2.427, + "13.508237675401984" : 2.438, + "14.007961250569387" : 2.449, + "14.520776431729239" : 2.46, + "15.048395574104367" : 2.471, + "15.520395066113936" : 2.485, + "16.048054801331794" : 2.497, + "16.505998400227785" : 2.506, + "17.017142647432895" : 2.516, + "17.531075374405805" : 2.526, + "18.02188260740421" : 2.535, + "18.514986235505507" : 2.544, + "19.01016755441419" : 2.553, + "19.52477296278088" : 2.562, + "20.007671218850223" : 2.57, + "20.50403718602627" : 2.578, + "21.06158485144697" : 2.587, + "21.557583826187745" : 2.595, + "22.053203382112812" : 2.603, + "22.5511383869241" : 2.611, + "23.046664330783287" : 2.619, + "23.538549345177387" : 2.627, + "24.03219144976385" : 2.635, + "24.53780678610434" : 2.643, + "25.05088872023069" : 2.651, + "25.564878608553567" : 2.659, + "26.020108285964316" : 2.666, + "26.548169807482644" : 2.674, + "27.008877861810944" : 2.681, + "27.542281070062128" : 2.689, + "28.01139847023801" : 2.696, + "28.551444821465427" : 2.704, + "29.02421226378538" : 2.711, + "29.50061483659289" : 2.718, + "30.043676656137244" : 2.726, + "30.518076096419932" : 2.733, + "31.048996513861812" : 2.741, + "31.510701992325718" : 2.748, + "32.055129056866306" : 2.756, + "32.5396742225549" : 2.763, + "33.03023458479549" : 2.77, + "33.525586559328694" : 2.777, + "34.02743587397447" : 2.784, + "34.53104145038724" : 2.791, + "35.03599570328902" : 2.798, + "35.55105343190325" : 2.805, + "36.00580345102952" : 2.815, + "36.53255606047621" : 2.823, + "37.04066744243179" : 2.83, + "37.54357714154066" : 2.837, + "38.03756552792835" : 2.844, + "38.54266309841772" : 2.851, + "39.061137253224" : 2.858, + "39.50644736535261" : 2.864, + "40.01471283442548" : 2.871, + "40.518663864214126" : 2.878, + "41.035327909604874" : 2.885, + "41.57398002094839" : 2.892, + "42.046423548951886" : 2.898, + "42.52512583056374" : 2.904, + "43.07586881006265" : 2.911, + "43.548854128252756" : 2.917, + "44.00964668196796" : 2.923, + "44.546317199846065" : 2.93, + "45.0036850431156" : 2.936, + "45.537386484497034" : 2.943, + "46.069471667997604" : 2.95, + "46.52643441126523" : 2.956, + "47.0508715718257" : 2.963, + "47.5729294947471" : 2.97, + "48.01129574549315" : 2.976, + "48.515672585917756" : 2.983, + "49.02021262613864" : 2.99, + "49.5363580772529" : 2.997, + "50.04399062934936" : 3.004, + "50.255500050596076" : 3.007, + "50.54614314767755" : 3.011, + "50.75797316953928" : 3.014, + "51.050275602620424" : 3.018, + "51.267693353547465" : 3.021, + "51.551382648142024" : 3.025, + "51.76808712483256" : 3.028, + "52.047717963579686" : 3.032, + "52.2614326531395" : 3.035, + "52.539863103537385" : 3.039, + "52.75360927326095" : 3.042, + "53.02901679951365" : 3.046, + "53.31188263929859" : 3.05, + "53.52276080041961" : 3.053, + "53.795649913572454" : 3.057, + "54.0039972352132" : 3.06, + "54.274584154285606" : 3.064, + "54.553790010822134" : 3.068, + "54.755144593983964" : 3.071, + "55.02895160243767" : 3.075, + "55.29407505624905" : 3.079, + "55.56412598411237" : 3.083, + "55.7603981776796" : 3.086, + "56.029240432940064" : 3.09, + "56.29144120207502" : 3.094, + "56.560186531568164" : 3.098, + "56.76332968508611" : 3.101, + "57.02832307611568" : 3.105, + "57.29835329334497" : 3.109, + "57.56192262117761" : 3.113, + "57.765199151178805" : 3.116, + "58.02905511418663" : 3.12, + "58.298475610349634" : 3.124, + "58.55842306250051" : 3.128, + "58.75495289635525" : 3.131, + "59.00646035092016" : 3.135, + "59.26138837380392" : 3.139, + "59.50906436107052" : 3.143, + "59.7592604182877" : 3.147, + "60.00138595563028" : 3.151, + "60.25149917031129" : 3.155, + "60.555108781155575" : 3.16, + "60.80156698314034" : 3.164, + "61.045563104949856" : 3.168, + "61.294764223307524" : 3.172, + "61.53964344655271" : 3.176, + "61.791326527294316" : 3.18, + "62.03614196178664" : 3.184, + "62.28770574927615" : 3.188, + "62.533653641238054" : 3.192, + "62.78600857494808" : 3.196, + "63.03117111966699" : 3.2, + "63.28218151901483" : 3.204, + "63.52560851260078" : 3.208, + "63.77635547268356" : 3.212, + "64.0207111311001" : 3.216, + "64.27122530365621" : 3.22, + "64.5139141702448" : 3.224, + "64.76053308674976" : 3.228, + "65.06055478735212" : 3.233, + "65.3036926604868" : 3.237, + "65.53798046548144" : 3.241, + "65.77678567397395" : 3.245, + "66.00771255727578" : 3.249, + "66.29555226293293" : 3.254, + "66.53013498735636" : 3.258, + "66.7578028452849" : 3.262, + "67.04521591188073" : 3.267, + "67.26808304483765" : 3.271, + "67.55207222941318" : 3.276, + "67.7712619821891" : 3.28, + "68.0534891060201" : 3.285, + "68.27336065286877" : 3.289, + "68.54614041387386" : 3.294, + "68.76766135561786" : 3.298, + "69.03643816527476" : 3.303, + "69.2539097638503" : 3.307, + "69.51703091356222" : 3.312, + "69.78567434673586" : 3.317, + "70.04833654879734" : 3.322, + "70.25508169578838" : 3.326, + "70.51856486738339" : 3.331, + "70.77270008719591" : 3.336, + "71.0270614671322" : 3.341, + "71.27750356668184" : 3.346, + "71.52270918951957" : 3.351, + "71.77070246369975" : 3.356, + "72.01152654479894" : 3.361, + "72.25054797231088" : 3.366, + "72.54252234894875" : 3.372, + "72.78157442819906" : 3.377, + "73.0167469914801" : 3.382, + "73.25352172941085" : 3.387, + "73.52932441456112" : 3.393, + "73.75345323934405" : 3.398, + "74.02574505781104" : 3.404, + "74.29057939117115" : 3.41, + "74.50967387503046" : 3.415, + "74.77790889450074" : 3.421, + "75.03812558489419" : 3.427, + "75.1648473272119" : 3.43, + "75.25140866484051" : 3.432, + "75.38013851023521" : 3.435, + "75.50310582881328" : 3.438, + "75.6303867582502" : 3.441, + "75.75685168870575" : 3.444, + "75.87741160318242" : 3.447, + "76.00136474794103" : 3.45, + "76.15918640676588" : 3.454, + "76.28028562615309" : 3.457, + "76.40043464165032" : 3.46, + "76.5145891712296" : 3.463, + "76.6321932640154" : 3.466, + "76.78212417126916" : 3.47, + "76.89887415750694" : 3.473, + "77.01505915764798" : 3.476, + "77.14677713332267" : 3.481, + "77.256858295398" : 3.486, + "77.38397851031475" : 3.49, + "77.52694070342508" : 3.494, + "77.63817254832796" : 3.497, + "77.78488005249898" : 3.501, + "77.88882506791948" : 3.504, + "78.03083374343841" : 3.508, + "78.13311362388171" : 3.511, + "78.27445127485758" : 3.515, + "78.37510081418887" : 3.518, + "78.51408325186115" : 3.522, + "78.64858722202757" : 3.526, + "78.75184547282315" : 3.529, + "78.88868477408447" : 3.533, + "79.0212303466956" : 3.537, + "79.154637481683" : 3.541, + "79.28267724875133" : 3.545, + "79.3817138439032" : 3.548, + "79.51121081118293" : 3.552, + "79.64749009689967" : 3.556, + "79.78178033332274" : 3.56, + "79.88493585937347" : 3.563, + "80.01603334445218" : 3.567, + "80.15090679232996" : 3.571, + "80.28122224386713" : 3.575, + "80.3811850185735" : 3.578, + "80.51083110241835" : 3.582, + "80.6423204326932" : 3.586, + "80.76717159054397" : 3.59, + "80.89670997909178" : 3.594, + "81.02040631198822" : 3.598, + "81.14770878048455" : 3.602, + "81.27094368045447" : 3.606, + "81.3971402010928" : 3.61, + "81.5188748227325" : 3.614, + "81.64200948323365" : 3.618, + "81.75705208480076" : 3.622, + "81.90307448119758" : 3.627, + "82.0127331463384" : 3.631, + "82.1261975975913" : 3.635, + "82.26241557983127" : 3.64, + "82.39837675020908" : 3.645, + "82.50131274353893" : 3.649, + "82.63028366071391" : 3.654, + "82.76176304988442" : 3.659, + "82.88750227972304" : 3.664, + "83.01520073554231" : 3.669, + "83.13972383694981" : 3.674, + "83.26233824632375" : 3.679, + "83.38793498700014" : 3.684, + "83.508248030719" : 3.689, + "83.62554312084485" : 3.694, + "83.76651626466152" : 3.7, + "83.8796128950538" : 3.705, + "84.01722346032693" : 3.711, + "84.13161160585824" : 3.716, + "84.2647354193719" : 3.722, + "84.39437570423922" : 3.728, + "84.50296652908868" : 3.733, + "84.62686334092268" : 3.739, + "84.76884219312856" : 3.746, + "84.88745199430358" : 3.752, + "85.00503951858214" : 3.758, + "85.14483961208651" : 3.765, + "85.26370705354904" : 3.771, + "85.38164334490492" : 3.777, + "85.51794748338251" : 3.784, + "85.63542648393867" : 3.79, + "85.75486139677403" : 3.796, + "85.89167087472232" : 3.803, + "86.00167167953757" : 3.811, + "86.13544994908705" : 3.821, + "86.25089268010392" : 3.827, + "86.3863816480255" : 3.834, + "86.50071925960974" : 3.84, + "86.63223758477226" : 3.847, + "86.76209160338291" : 3.854, + "86.87655679247285" : 3.86, + "87.00707023767151" : 3.867, + "87.13527071926002" : 3.874, + "87.26383736485845" : 3.881, + "87.37863392409312" : 3.887, + "87.50058227947618" : 3.893, + "87.57987666983111" : 3.897, + "87.64225378587284" : 3.9, + "87.70202881785316" : 3.903, + "87.76419137172618" : 3.906, + "87.8258204196662" : 3.909, + "87.88527982158368" : 3.912, + "87.94834121697426" : 3.915, + "88.00823554220668" : 3.918, + "88.07186440897007" : 3.921, + "88.13530688002707" : 3.924, + "88.19575045127436" : 3.927, + "88.2596601542354" : 3.93, + "88.32231479277333" : 3.933, + "88.38150909857504" : 3.936, + "88.44369401993282" : 3.939, + "88.50195386192642" : 3.942, + "88.56271057796049" : 3.945, + "88.6430222746597" : 3.949, + "88.69951757063268" : 3.952, + "88.7581717430985" : 3.955, + "88.8129927914153" : 3.958, + "88.88778966048105" : 3.962, + "88.94351949141974" : 3.965, + "89.01435731568147" : 3.969, + "89.0697325805653" : 3.972, + "89.14126959583238" : 3.976, + "89.19689338832477" : 3.979, + "89.26749345450766" : 3.983, + "89.32198478953046" : 3.986, + "89.37698891985221" : 3.989, + "89.44746720750693" : 3.993, + "89.50162468710892" : 3.996, + "89.57242357537865" : 4.0, + "89.62781623719508" : 4.003, + "89.69814955041149" : 4.007, + "89.75413122266015" : 4.01, + "89.82544456307956" : 4.014, + "89.88112220322044" : 4.017, + "89.9552447340417" : 4.021, + "90.00706191199662" : 4.024, + "90.07939338718568" : 4.028, + "90.13136133855645" : 4.031, + "90.20392642969753" : 4.035, + "90.25479754588928" : 4.038, + "90.32568590409808" : 4.042, + "90.37822215526704" : 4.045, + "90.44516306662689" : 4.049, + "90.51504157431968" : 4.053, + "90.56455987189561" : 4.056, + "90.63360498367443" : 4.06, + "90.6987001633282" : 4.064, + "90.76616215424062" : 4.068, + "90.81414869332261" : 4.071, + "90.88090983637895" : 4.075, + "90.94535387369835" : 4.079, + "91.01290284927376" : 4.083, + "91.07758630152273" : 4.087, + "91.12691571811618" : 4.09, + "91.18972610062212" : 4.094, + "91.25524874776258" : 4.098, + "91.31766562822168" : 4.102, + "91.38213700357801" : 4.106, + "91.4433352703299" : 4.11, + "91.50667584506739" : 4.114, + "91.56690402572062" : 4.118, + "91.62989500495543" : 4.122, + "91.69121339338479" : 4.126, + "91.75533268796237" : 4.13, + "91.81637769602231" : 4.134, + "91.87990383804086" : 4.138, + "91.93962916449946" : 4.142, + "92.00108755681497" : 4.146, + "92.07453492096636" : 4.151, + "92.13540098914817" : 4.155, + "92.19447517327241" : 4.159, + "92.25586066415607" : 4.163, + "92.31474679572318" : 4.167, + "92.37527155265593" : 4.171, + "92.44708277671778" : 4.176, + "92.5068428970416" : 4.18, + "92.56389655170842" : 4.184, + "92.63854513263442" : 4.189, + "92.69640070305147" : 4.193, + "92.75761885201204" : 4.197, + "92.81699706824406" : 4.201, + "92.87950756076904" : 4.205, + "92.93996687209821" : 4.209, + "93.00314341861406" : 4.213, + "93.06397800663213" : 4.217, + "93.1270087502843" : 4.221, + "93.20214775902448" : 4.226, + "93.26159390613617" : 4.23, + "93.32415410418285" : 4.234, + "93.3840567136689" : 4.238, + "93.44678922419084" : 4.242, + "93.50679455842173" : 4.246, + "93.56892894583245" : 4.25, + "93.62780016574307" : 4.254, + "93.68979040714083" : 4.258, + "93.75000119086145" : 4.262, + "93.78137531616336" : 4.264, + "93.81298637111874" : 4.266, + "93.84464298946901" : 4.268, + "93.88946162996749" : 4.271, + "93.92072060414411" : 4.273, + "93.95210881267717" : 4.275, + "93.98342163450229" : 4.277, + "94.01214562707182" : 4.279, + "94.04304175093996" : 4.281, + "94.07351040732142" : 4.283, + "94.10371976656465" : 4.285, + "94.1316559266151" : 4.287, + "94.16195641264812" : 4.289, + "94.1922187911145" : 4.291, + "94.22263608512353" : 4.293, + "94.2506128380167" : 4.295, + "94.29546627238038" : 4.298, + "94.325250649413" : 4.3, + "94.35246028042116" : 4.302, + "94.38184369957867" : 4.304, + "94.411105340208" : 4.306, + "94.44013170803457" : 4.308, + "94.48155463297505" : 4.311, + "94.51085189589493" : 4.313, + "94.5399478514519" : 4.315, + "94.56895599392051" : 4.317, + "94.59583508320932" : 4.319, + "94.63892728525381" : 4.322, + "94.66758583221976" : 4.324, + "94.69386928367344" : 4.326, + "94.72250297787852" : 4.328, + "94.75103146206266" : 4.33, + "94.7936804565386" : 4.333, + "94.81990343294085" : 4.335, + "94.84808646374913" : 4.337, + "94.87611043688793" : 4.339, + "94.91552940087823" : 4.342, + "94.94336035090772" : 4.344, + "94.97063956964628" : 4.346, + "95.01085216513317" : 4.349, + "95.03552515768352" : 4.351, + "95.07589266871307" : 4.354, + "95.10281069399387" : 4.356, + "95.12764605791513" : 4.358, + "95.16837393397707" : 4.361, + "95.19530190036221" : 4.363, + "95.22211140192063" : 4.365, + "95.26055199555864" : 4.368, + "95.28740043310907" : 4.37, + "95.3137518154424" : 4.372, + "95.35040466714966" : 4.375, + "95.375940878927" : 4.377, + "95.41413543023256" : 4.38, + "95.43772898453649" : 4.382, + "95.47580424258996" : 4.385, + "95.50078706622561" : 4.387, + "95.5361078099511" : 4.39, + "95.57364127781796" : 4.393, + "95.59887262906214" : 4.395, + "95.6345653357751" : 4.398, + "95.65976272157945" : 4.4, + "95.69722743014127" : 4.403, + "95.72206279406252" : 4.405, + "95.7570413981136" : 4.408, + "95.78126621254322" : 4.41, + "95.8172704071922" : 4.413, + "95.8512118226903" : 4.416, + "95.87500502750642" : 4.418, + "95.91005404771325" : 4.421, + "95.94336503151102" : 4.424, + "95.97834694926354" : 4.427, + "96.00163232933288" : 4.429, + "96.034545668957" : 4.432, + "96.06867679386296" : 4.435, + "96.09937658092036" : 4.438, + "96.13102657186775" : 4.441, + "96.16252081884711" : 4.444, + "96.1918263660206" : 4.447, + "96.22299835553423" : 4.45, + "96.25343304647586" : 4.453, + "96.28218851920913" : 4.456, + "96.31264889133698" : 4.459, + "96.35107954387065" : 4.463, + "96.38078853419535" : 4.466, + "96.41028710447814" : 4.469, + "96.43793083037589" : 4.472, + "96.47600857370544" : 4.476, + "96.50391905256967" : 4.48, + "96.53544809341423" : 4.485, + "96.56491518353329" : 4.489, + "96.60167573053758" : 4.493, + "96.62809338689986" : 4.496, + "96.66543466008278" : 4.5, + "96.69151017677065" : 4.503, + "96.71920195133937" : 4.506, + "96.75467181162999" : 4.51, + "96.7821208575677" : 4.513, + "96.81841582951867" : 4.517, + "96.8524392591276" : 4.521, + "96.87867549033565" : 4.524, + "96.89422089224973" : 4.526, + "96.9111936710622" : 4.528, + "96.92822278279925" : 4.53, + "96.94522289964866" : 4.532, + "96.95375319559906" : 4.533, + "96.96924557828999" : 4.535, + "96.9860153928888" : 4.537, + "97.00281751607673" : 4.539, + "97.01967431533853" : 4.541, + "97.03515675692513" : 4.543, + "97.05208314391733" : 4.545, + "97.06878419921111" : 4.547, + "97.08521601626232" : 4.549, + "97.10008625150654" : 4.551, + "97.11622729125575" : 4.553, + "97.13240312487017" : 4.555, + "97.14873967300477" : 4.557, + "97.16379050497787" : 4.559, + "97.17207807229727" : 4.56, + "97.1890317973264" : 4.562, + "97.20578255814189" : 4.564, + "97.22087563980844" : 4.566, + "97.2372063889655" : 4.568, + "97.25351808433925" : 4.57, + "97.26969143267758" : 4.572, + "97.28413254358439" : 4.574, + "97.30003665368014" : 4.576, + "97.31557294291524" : 4.578, + "97.33083999390776" : 4.58, + "97.34454049254113" : 4.582, + "97.35962280467797" : 4.584, + "97.38251965325263" : 4.587, + "97.3976748668213" : 4.589, + "97.41122873416563" : 4.591, + "97.4259374264643" : 4.593, + "97.44069499585932" : 4.595, + "97.45498201964884" : 4.597, + "97.4749860068601" : 4.6, + "97.48906012533165" : 4.602, + "97.50297187243227" : 4.604, + "97.52223773264618" : 4.607, + "97.53579657054267" : 4.609, + "97.54926428164939" : 4.611, + "97.56260110154892" : 4.613, + "97.58143038159716" : 4.616, + "97.59464045241634" : 4.618, + "97.61420785946194" : 4.621, + "97.62584723579516" : 4.623, + "97.6448761663556" : 4.626, + "97.65726692449196" : 4.628, + "97.67467545504473" : 4.631, + "97.69332330993873" : 4.634, + "97.70552932921943" : 4.636, + "97.72252281866594" : 4.639, + "97.73445048702506" : 4.641, + "97.75212328526823" : 4.644, + "97.76837533401593" : 4.647, + "97.78529757888131" : 4.65, + "97.80162749961302" : 4.653, + "97.81655158250577" : 4.656, + "97.83190976028808" : 4.659, + "97.84638566506008" : 4.662, + "97.86155661871064" : 4.665, + "97.8763001048745" : 4.668, + "97.89462238860133" : 4.672, + "97.90899474020311" : 4.675, + "97.92638256012184" : 4.679, + "97.93985027122854" : 4.682, + "97.95629699993626" : 4.686, + "97.96883604621239" : 4.689, + "97.98549982236489" : 4.693, + "98.00149008869826" : 4.697, + "98.01783077895966" : 4.701, + "98.03317901563764" : 4.705, + "98.04877163779736" : 4.709, + "98.0630926270267" : 4.713, + "98.08064281831633" : 4.718, + "98.09448166398512" : 4.722, + "98.11125147858394" : 4.727, + "98.12800058254871" : 4.732, + "98.14068294641244" : 4.736, + "98.15732932563235" : 4.741, + "98.17296336906014" : 4.746, + "98.19041663458245" : 4.752, + "98.20498449456962" : 4.757, + "98.21904204453391" : 4.762, + "98.23504225197162" : 4.768, + "98.25041616983582" : 4.774, + "98.26785369527624" : 4.781, + "98.28248948614308" : 4.787, + "98.29808542200423" : 4.793, + "98.31314370980557" : 4.799, + "98.32830058022498" : 4.805, + "98.3439859860252" : 4.819, + "98.36148978549458" : 4.827, + "98.37622498740483" : 4.834, + "98.39092870915132" : 4.841, + "98.40735721250108" : 4.849, + "98.42321575920194" : 4.857, + "98.43818292021348" : 4.865, + "98.4464506053242" : 4.87, + "98.45313434114315" : 4.874, + "98.46139622727634" : 4.879, + "98.46898128988894" : 4.883, + "98.47662434227686" : 4.887, + "98.48454326031026" : 4.891, + "98.49411323008972" : 4.896, + "98.50010108860478" : 4.899, + "98.50964040664584" : 4.904, + "98.51738618377863" : 4.908, + "98.52483538463188" : 4.912, + "98.53285288528335" : 4.916, + "98.54033273787499" : 4.92, + "98.54799153034479" : 4.924, + "98.5550190626889" : 4.928, + "98.56390806682096" : 4.933, + "98.57064813556453" : 4.937, + "98.57885120349701" : 4.942, + "98.58748339576692" : 4.947, + "98.59384984467232" : 4.951, + "98.60197421219544" : 4.956, + "98.60976638114849" : 4.961, + "98.61861147873637" : 4.967, + "98.62572019676594" : 4.972, + "98.63329117614738" : 4.978, + "98.64068238722531" : 4.984, + "98.64979589463043" : 4.991, + "98.65684248075786" : 4.996, + "98.66527253723947" : 5.002, + "98.67206231150476" : 5.007, + "98.68038467268934" : 5.013, + "98.68815198888154" : 5.019, + "98.6956426110029" : 5.025, + "98.70388958547956" : 5.032, + "98.71097179389754" : 5.038, + "98.71940019352844" : 5.045, + "98.7276040898863" : 5.052, + "98.73478073879554" : 5.058, + "98.74305919343595" : 5.065, + "98.75114462496707" : 5.072, + "98.75886803461509" : 5.079, + "98.76595438515989" : 5.086, + "98.77437781423862" : 5.095, + "98.78195542102296" : 5.103, + "98.78945764109937" : 5.111, + "98.79772698306081" : 5.12, + "98.80468906980134" : 5.128, + "98.81265023752819" : 5.137, + "98.8211739060757" : 5.147, + "98.82837209404434" : 5.155, + "98.83611455747568" : 5.164, + "98.84447502622692" : 5.175, + "98.85160942544269" : 5.184, + "98.8599790068729" : 5.195, + "98.86766927950644" : 5.205, + "98.87534215520739" : 5.215, + "98.883334803098" : 5.226, + "98.89074672480997" : 5.236, + "98.89855380541954" : 5.247, + "98.9063824250885" : 5.258, + "98.91428808831611" : 5.27, + "98.92197670409892" : 5.282, + "98.93018557100896" : 5.295, + "98.93782116756863" : 5.307, + "98.94543025451671" : 5.32, + "98.9534187602805" : 5.336, + "98.96145282943918" : 5.352, + "98.9690702006409" : 5.368, + "98.97674307634185" : 5.384, + "98.98446151543769" : 5.4, + "98.99236966394139" : 5.416, + "99.0001775729763" : 5.434, + "99.00784464969972" : 5.453, + "99.01583895444104" : 5.474, + "99.02372556388532" : 5.496, + "99.03132139602762" : 5.515, + "99.03914835884586" : 5.537, + "99.046943013075" : 5.561, + "99.05476252006498" : 5.585, + "99.06257208595062" : 5.61, + "99.07033194631455" : 5.635, + "99.07834447641383" : 5.664, + "99.08603971959955" : 5.692, + "99.09385674131346" : 5.721, + "99.10158926364045" : 5.752, + "99.10946758883112" : 5.781, + "99.11723656187404" : 5.82, + "99.12519441589944" : 5.857, + "99.13308848117198" : 5.893, + "99.14074230308961" : 5.926, + "99.14850050660282" : 5.956, + "99.15647078700864" : 5.993, + "99.16424058847693" : 6.032, + "99.17196151284885" : 6.074, + "99.17982989693519" : 6.117, + "99.1876096395078" : 6.165, + "99.19536287246885" : 6.214, + "99.20320971749577" : 6.264, + "99.21103088133647" : 6.321, + "99.21884624619965" : 6.372, + "99.2226942820052" : 6.396, + "99.22668977752512" : 6.423, + "99.23057592089731" : 6.449, + "99.23437590803186" : 6.482, + "99.23834572236558" : 6.515, + "99.24220452770082" : 6.546, + "99.24618014101208" : 6.581, + "99.25004474532486" : 6.612, + "99.25397230996512" : 6.64, + "99.25781786049458" : 6.67, + "99.26180590018626" : 6.702, + "99.2656994993867" : 6.731, + "99.26954339306542" : 6.761, + "99.27352149165277" : 6.792, + "99.27743497306189" : 6.832, + "99.28126561193483" : 6.864, + "99.2851890344483" : 6.902, + "99.28910831483493" : 6.934, + "99.2930035708861" : 6.965, + "99.2968938563851" : 6.994, + "99.30084710221158" : 7.032, + "99.30475147094171" : 7.072, + "99.30870140306676" : 7.107, + "99.31254115461867" : 7.141, + "99.31641570003579" : 7.185, + "99.32033912254926" : 7.23, + "99.32430810845761" : 7.277, + "99.32815697268852" : 7.316, + "99.332032346531" : 7.355, + "99.33598642078285" : 7.402, + "99.33992475495282" : 7.442, + "99.34379930036992" : 7.489, + "99.34767964476458" : 7.53, + "99.3515757292411" : 7.578, + "99.35556956791031" : 7.616, + "99.3594557112825" : 7.661, + "99.36332114402063" : 7.706, + "99.36722799802686" : 7.754, + "99.37114810683887" : 7.806, + "99.37501022587556" : 7.866, + "99.37892039358323" : 7.909, + "99.38289269319304" : 7.951, + "99.38672250364061" : 7.991, + "99.39064592615408" : 8.045, + "99.39460745623418" : 8.096, + "99.398492771181" : 8.148, + "99.40239465463506" : 8.195, + "99.40629985179056" : 8.235, + "99.41022658800547" : 8.289, + "99.41410444712403" : 8.341, + "99.41804775184617" : 8.395, + "99.4219438363227" : 8.45, + "99.42579601425504" : 8.507, + "99.4297086672388" : 8.564, + "99.43360640856605" : 8.613, + "99.43750000776649" : 8.669, + "99.44145076831688" : 8.731, + "99.44531620105502" : 8.781, + "99.44925039309818" : 8.849, + "99.45316553135804" : 8.899, + "99.45706244425992" : 8.957, + "99.46099912157916" : 9.008, + "99.46486538274266" : 9.065, + "99.46879129053221" : 9.123, + "99.47266335067324" : 9.18, + "99.47656689097802" : 9.234, + "99.48054250428928" : 9.291, + "99.48442781923609" : 9.347, + "99.4882874529967" : 9.403, + "99.49223075771884" : 9.464, + "99.4961218716432" : 9.518, + "99.5000204413958" : 9.58, + "99.50391321217087" : 9.636, + "99.50785900216911" : 9.697, + "99.51176419932462" : 9.754, + "99.51564454371926" : 9.821, + "99.51957210835953" : 9.891, + "99.52346487913461" : 9.95, + "99.52738001739445" : 10.012, + "99.53125042068476" : 10.079, + "99.53519869595907" : 10.147, + "99.539077383503" : 10.219, + "99.54297926695705" : 10.278, + "99.54696647822337" : 10.336, + "99.55082445513325" : 10.392, + "99.55473213756484" : 10.457, + "99.55866135905583" : 10.529, + "99.56254915927873" : 10.595, + "99.56641542044223" : 10.668, + "99.57034878406003" : 10.725, + "99.57423492743222" : 10.793, + "99.57813681088628" : 10.873, + "99.58207928718305" : 10.928, + "99.58600022442043" : 10.987, + "99.58988139724045" : 11.053, + "99.5937832806945" : 11.119, + "99.59768599257391" : 11.181, + "99.60162764044533" : 11.235, + "99.60550384271318" : 11.305, + "99.60943306420417" : 11.364, + "99.61138069222974" : 11.394, + "99.61328524213651" : 11.428, + "99.61525523764686" : 11.456, + "99.61720286567244" : 11.494, + "99.61920268449582" : 11.528, + "99.62112545976055" : 11.565, + "99.62305983298033" : 11.598, + "99.62502402951316" : 11.633, + "99.62696917226265" : 11.674, + "99.62893336879546" : 11.704, + "99.63088762422393" : 11.735, + "99.63283028169735" : 11.773, + "99.63479530665552" : 11.817, + "99.63676198846443" : 11.859, + "99.63869304798277" : 11.898, + "99.64064813183661" : 11.934, + "99.64261895577232" : 11.977, + "99.64453427520878" : 12.008, + "99.6464943296148" : 12.054, + "99.6484543840208" : 12.096, + "99.65039621306884" : 12.13, + "99.65236869385528" : 12.17, + "99.65433868936563" : 12.205, + "99.65625235195138" : 12.239, + "99.65820412210377" : 12.282, + "99.66018571556918" : 12.317, + "99.66213417202012" : 12.356, + "99.66409671170221" : 12.391, + "99.66603274177274" : 12.424, + "99.66796877184325" : 12.462, + "99.66997853177097" : 12.502, + "99.67188722380453" : 12.541, + "99.67386633199386" : 12.581, + "99.67579573466149" : 12.618, + "99.67776407332111" : 12.658, + "99.67972661300321" : 12.702, + "99.68165270196938" : 12.734, + "99.68365003551666" : 12.773, + "99.68556452652777" : 12.807, + "99.68754777684391" : 12.852, + "99.68947635108617" : 12.892, + "99.69140906745524" : 12.923, + "99.69336000918227" : 12.961, + "99.69533166154334" : 12.995, + "99.69726686318849" : 13.032, + "99.69926502516114" : 13.074, + "99.70117868774689" : 13.103, + "99.70313294317536" : 13.137, + "99.70511950719295" : 13.189, + "99.70705305198737" : 13.229, + "99.70903464545279" : 13.268, + "99.71096156284433" : 13.299, + "99.71289676448949" : 13.338, + "99.71487752952953" : 13.369, + "99.71679781951818" : 13.408, + "99.71879183936402" : 13.449, + "99.72074443794176" : 13.491, + "99.72269206596735" : 13.538, + "99.7246164980828" : 13.587, + "99.72661631690617" : 13.624, + "99.7285216952383" : 13.659, + "99.73050908768124" : 13.703, + "99.73248156846768" : 13.736, + "99.73439854475487" : 13.773, + "99.73635528545944" : 13.826, + "99.73830208505966" : 13.865, + "99.74028616380114" : 13.899, + "99.74222716442384" : 13.935, + "99.74414993968857" : 13.975, + "99.74612490575109" : 14.011, + "99.74809821496288" : 14.062, + "99.75001767652616" : 14.093, + "99.75196033399956" : 14.133, + "99.75390879045051" : 14.186, + "99.75588292808767" : 14.234, + "99.75783718351614" : 14.273, + "99.75981629170548" : 14.308, + "99.76172249846296" : 14.353, + "99.76367344018999" : 14.39, + "99.7656310093199" : 14.439, + "99.7675786373455" : 14.476, + "99.7695560886841" : 14.525, + "99.77149543245606" : 14.573, + "99.77345797213815" : 14.611, + "99.77541139914126" : 14.658, + "99.77734660078642" : 14.691, + "99.77934973331124" : 14.729, + "99.78126505274771" : 14.773, + "99.7832168229001" : 14.823, + "99.78518019100756" : 14.867, + "99.7871195347795" : 14.903, + "99.78908621658842" : 14.938, + "99.79102804563647" : 14.984, + "99.79298478634102" : 15.029, + "99.79495229657529" : 15.067, + "99.79688335609363" : 15.111, + "99.79883678309675" : 15.176, + "99.80080595018173" : 15.225, + "99.80279665632612" : 15.269, + "99.80473600009809" : 15.319, + "99.80567377760764" : 15.344, + "99.80667948599685" : 15.361, + "99.80762223405858" : 15.386, + "99.8085997759855" : 15.415, + "99.80959554327038" : 15.444, + "99.81056977149585" : 15.472, + "99.81153240176626" : 15.497, + "99.81250911526782" : 15.522, + "99.81350322570196" : 15.551, + "99.81446585597237" : 15.574, + "99.81544919687681" : 15.597, + "99.81640851344578" : 15.616, + "99.81741587868572" : 15.638, + "99.8183702247025" : 15.656, + "99.81934362450262" : 15.683, + "99.82034519076502" : 15.711, + "99.82132438954267" : 15.738, + "99.82227376500728" : 15.764, + "99.82324385110596" : 15.787, + "99.82422387830896" : 15.823, + "99.82522130244456" : 15.853, + "99.82617564846134" : 15.869, + "99.82715733251507" : 15.898, + "99.82813818814344" : 15.918, + "99.82913975440584" : 15.939, + "99.83007918876612" : 15.967, + "99.83108324030462" : 15.993, + "99.83203592947068" : 16.018, + "99.83306897589684" : 16.042, + "99.83399929757813" : 16.06, + "99.8349934080123" : 16.094, + "99.83593781292474" : 16.114, + "99.8369426928886" : 16.14, + "99.83792189166624" : 16.167, + "99.8388919777649" : 16.189, + "99.83987614709471" : 16.221, + "99.84085617429771" : 16.243, + "99.84182460354565" : 16.266, + "99.84281042972619" : 16.292, + "99.84375897676544" : 16.314, + "99.84476137145322" : 16.338, + "99.8457289722758" : 16.367, + "99.84670320050127" : 16.401, + "99.84767577187601" : 16.431, + "99.84865745592974" : 16.465, + "99.84961594407334" : 16.499, + "99.85060674080604" : 16.529, + "99.85159670911338" : 16.561, + "99.85254691300337" : 16.588, + "99.85352859705709" : 16.614, + "99.8545260211927" : 16.647, + "99.85548450933629" : 16.687, + "99.85645211015887" : 16.724, + "99.8574619606749" : 16.764, + "99.85842293409458" : 16.795, + "99.85937976538746" : 16.829, + "99.86037221897088" : 16.86, + "99.86133816294273" : 16.894, + "99.8623082490414" : 16.919, + "99.86328579096832" : 16.953, + "99.86427410242494" : 16.98, + "99.86523921797144" : 17.012, + "99.86622338730125" : 17.041, + "99.8672108703325" : 17.079, + "99.86816853005074" : 17.102, + "99.8691535278059" : 17.124, + "99.87014101083717" : 17.165, + "99.87110861165975" : 17.205, + "99.87207952618377" : 17.231, + "99.87304961228243" : 17.27, + "99.87404620799268" : 17.301, + "99.87501298038988" : 17.332, + "99.87597892436175" : 17.369, + "99.87697137794517" : 17.397, + "99.87796300310325" : 17.443, + "99.87892397652293" : 17.473, + "99.87989737632303" : 17.518, + "99.88086994769778" : 17.556, + "99.88185494545296" : 17.59, + "99.88283331580523" : 17.626, + "99.88379925977709" : 17.663, + "99.88477763012936" : 17.711, + "99.88575765733238" : 17.746, + "99.88672442972958" : 17.788, + "99.88771025591012" : 17.842, + "99.88867702830734" : 17.889, + "99.88967362401758" : 17.916, + "99.8906445385416" : 17.951, + "99.89162125204315" : 17.978, + "99.89259133814181" : 18.008, + "99.89357716432235" : 18.039, + "99.89454062301812" : 18.08, + "99.89551982179576" : 18.112, + "99.89649405002123" : 18.167, + "99.89747242037352" : 18.222, + "99.8984400211961" : 18.258, + "99.89941921997374" : 18.302, + "99.90040256087818" : 18.344, + "99.90138093123046" : 18.384, + "99.90235847315738" : 18.428, + "99.90284890097156" : 18.448, + "99.90333435823358" : 18.468, + "99.90380987439124" : 18.488, + "99.9043119001605" : 18.505, + "99.90481061222829" : 18.524, + "99.90527370200554" : 18.556, + "99.90577655620015" : 18.575, + "99.90627443984259" : 18.602, + "99.9067557549778" : 18.63, + "99.90723789853836" : 18.646, + "99.9077357821808" : 18.672, + "99.90821212676383" : 18.69, + "99.90869427032439" : 18.711, + "99.9091863549893" : 18.738, + "99.90968423863174" : 18.757, + "99.91016472534157" : 18.781, + "99.9106543247304" : 18.798, + "99.91115717892501" : 18.824, + "99.91162855295588" : 18.855, + "99.91212643659831" : 18.882, + "99.91261272228569" : 18.895, + "99.91310397852523" : 18.912, + "99.91358115153362" : 18.935, + "99.91408317730287" : 18.959, + "99.91456035031126" : 18.978, + "99.91504912127472" : 19.009, + "99.91554120593963" : 19.052, + "99.91602003579875" : 19.081, + "99.91653697322451" : 19.111, + "99.91700089142711" : 19.125, + "99.91748800553985" : 19.154, + "99.91798423233156" : 19.183, + "99.91846803274285" : 19.21, + "99.91895763213167" : 19.237, + "99.91944474624441" : 19.263, + "99.91992274767816" : 19.298, + "99.92041731761915" : 19.323, + "99.92090360330653" : 19.347, + "99.92139485954607" : 19.373, + "99.9219059979943" : 19.395, + "99.92237985730125" : 19.414, + "99.92286282928717" : 19.434, + "99.92334911497454" : 19.457, + "99.92383871436337" : 19.49, + "99.92431671579712" : 19.514, + "99.9248071436113" : 19.57, + "99.92529922827622" : 19.6, + "99.92579131294112" : 19.627, + "99.92627594177777" : 19.647, + "99.92676636959195" : 19.674, + "99.92725265527932" : 19.711, + "99.9277347988399" : 19.743, + "99.92823185405696" : 19.782, + "99.92872311029652" : 19.829, + "99.92920111173026" : 19.873, + "99.92969402482053" : 19.899, + "99.9301869379108" : 19.931, + "99.93067653729962" : 19.956, + "99.93116199456163" : 20.01, + "99.93164993709973" : 20.036, + "99.93213539436175" : 20.067, + "99.93262085162375" : 20.091, + "99.93312122054228" : 20.116, + "99.93360253567748" : 20.139, + "99.93408964979022" : 20.158, + "99.93457179335078" : 20.198, + "99.93505890746351" : 20.229, + "99.93554850685234" : 20.257, + "99.93604721892014" : 20.307, + "99.93653433303288" : 20.339, + "99.93701896186953" : 20.382, + "99.93751601708661" : 20.418, + "99.93799070481892" : 20.465, + "99.93847864735702" : 20.503, + "99.93898895737988" : 20.535, + "99.93947772834333" : 20.57, + "99.9399557297771" : 20.631, + "99.9404345596362" : 20.673, + "99.94092001689822" : 20.717, + "99.94141624368993" : 20.781, + "99.94190004410122" : 20.807, + "99.94238301608715" : 20.845, + "99.9428717870506" : 20.906, + "99.94336138643943" : 20.956, + "99.94384932897752" : 21.009, + "99.94434389891852" : 21.059, + "99.94482687090445" : 21.102, + "99.94531729871863" : 21.171, + "99.94580358440601" : 21.223, + "99.94629484064555" : 21.274, + "99.94678029790757" : 21.345, + "99.94727818155" : 21.432, + "99.9477553545584" : 21.511, + "99.9482474392233" : 21.568, + "99.9487353817614" : 21.635, + "99.94922580957558" : 21.725, + "99.94971872266585" : 21.826, + "99.95019838095033" : 21.887, + "99.95069460774204" : 21.94, + "99.95117675130261" : 22.014, + "99.95141865150825" : 22.042, + "99.9516646938407" : 22.102, + "99.95191570672533" : 22.129, + "99.95215760693097" : 22.146, + "99.95239287973372" : 22.165, + "99.95263975049154" : 22.224, + "99.95288165069718" : 22.268, + "99.953128521455" : 22.339, + "99.95336959323528" : 22.406, + "99.95361563556773" : 22.493, + "99.9538591926241" : 22.562, + "99.95410357810583" : 22.612, + "99.954351277289" : 22.659, + "99.95459234906929" : 22.705, + "99.95484253352855" : 22.77, + "99.9550819484581" : 22.815, + "99.95532384866375" : 22.88, + "99.95557154784693" : 22.917, + "99.95581676175402" : 22.969, + "99.9560578335343" : 22.987, + "99.95629890531458" : 23.072, + "99.95654660449776" : 23.129, + "99.95679264683021" : 23.163, + "99.95703537546122" : 23.186, + "99.95727727566687" : 23.248, + "99.95752248957396" : 23.365, + "99.9577643897796" : 23.465, + "99.95800794683596" : 23.528, + "99.95825481759378" : 23.591, + "99.95850085992623" : 23.67, + "99.9587402748558" : 23.767, + "99.95898631718825" : 23.842, + "99.95923567322215" : 23.883, + "99.95947591657706" : 23.958, + "99.95971781678271" : 23.99, + "99.95996220226445" : 24.083, + "99.96020575932081" : 24.139, + "99.96044931637718" : 24.229, + "99.96069535870963" : 24.36, + "99.9609430578928" : 24.51, + "99.96118330124773" : 24.573, + "99.96142934358018" : 24.662, + "99.96167207221119" : 24.769, + "99.9619148008422" : 24.968, + "99.96216084317464" : 25.051, + "99.9624027433803" : 25.157, + "99.96264878571274" : 25.286, + "99.96289151434375" : 25.367, + "99.96313838510156" : 25.471, + "99.96337945688185" : 25.546, + "99.96362798449039" : 25.706, + "99.96386739941994" : 25.917, + "99.9641134417524" : 26.057, + "99.96435782723412" : 26.325, + "99.96460138429049" : 26.457, + "99.96484494134687" : 26.586, + "99.96509429738076" : 26.697, + "99.96533454073568" : 26.916, + "99.96557975464277" : 27.09, + "99.96582165484843" : 27.151, + "99.96606769718088" : 27.289, + "99.96630959738651" : 27.429, + "99.96655315444289" : 27.569, + "99.96679753992461" : 27.828, + "99.9670427538317" : 28.021, + "99.96728962458953" : 28.2, + "99.96753152479516" : 28.367, + "99.9677759102769" : 28.76, + "99.96802112418399" : 29.059, + "99.96826468124036" : 29.232, + "99.968506581446" : 29.467, + "99.96875096692773" : 29.752, + "99.96899618083482" : 29.927, + "99.96924139474191" : 30.204, + "99.96948329494755" : 30.314, + "99.96972850885464" : 30.408, + "99.96997703646318" : 30.702, + "99.97021562296739" : 31.001, + "99.97046332215056" : 31.152, + "99.97070439393084" : 31.432, + "99.97094795098721" : 31.734, + "99.97119647859574" : 31.89, + "99.97143920722675" : 32.097, + "99.9716811074324" : 32.409, + "99.97192466448877" : 32.673, + "99.97217070682122" : 32.928, + "99.97241260702687" : 33.115, + "99.97265699250859" : 33.346, + "99.97290137799033" : 33.711, + "99.97314493504669" : 34.044, + "99.97338932052841" : 34.333, + "99.9736345344355" : 34.724, + "99.97387891991724" : 35.125, + "99.97412496224969" : 35.331, + "99.97437183300751" : 35.72, + "99.9746104195117" : 35.963, + "99.97485729026951" : 36.619, + "99.9750983620498" : 36.963, + "99.97534274753153" : 37.588, + "99.97558630458789" : 37.912, + "99.97570891154145" : 38.217, + "99.97583069006963" : 38.57, + "99.97595329702317" : 38.727, + "99.97607507555136" : 38.902, + "99.97619851093026" : 39.141, + "99.97632028945844" : 39.461, + "99.97644123956127" : 39.735, + "99.97656550336553" : 40.074, + "99.97668645346836" : 40.341, + "99.97680740357119" : 40.458, + "99.97693166737545" : 41.035, + "99.97705261747828" : 41.261, + "99.9771735675811" : 41.424, + "99.97729534610929" : 41.786, + "99.97741795306283" : 42.009, + "99.97754221686709" : 42.154, + "99.97766399539528" : 42.371, + "99.9777849454981" : 42.518, + "99.97790589560093" : 42.776, + "99.97802933097984" : 42.992, + "99.97815276635873" : 43.139, + "99.9782728880362" : 43.497, + "99.97839549498974" : 43.566, + "99.97851727351792" : 44.021, + "99.97863822362075" : 44.123, + "99.97876165899966" : 44.483, + "99.97888343752784" : 44.518, + "99.97900687290675" : 44.698, + "99.97912782300958" : 45.069, + "99.97924960153776" : 45.484, + "99.97937055164059" : 45.619, + "99.97949398701948" : 45.805, + "99.97961825082376" : 46.085, + "99.97973754407586" : 46.512, + "99.9798601510294" : 46.564, + "99.97998358640831" : 46.735, + "99.98010536493649" : 46.903, + "99.98022465818859" : 47.484, + "99.98034726514213" : 47.537, + "99.98047070052104" : 47.64, + "99.98059082219851" : 48.006, + "99.98071342915205" : 48.574, + "99.98083520768023" : 48.884, + "99.98095781463378" : 49.365, + "99.98108125001268" : 49.939, + "99.9812022001155" : 50.61, + "99.98132397864369" : 50.955, + "99.98144658559724" : 51.251, + "99.9815708494015" : 51.396, + "99.98169262792969" : 51.768, + "99.98181440645787" : 51.932, + "99.9819353565607" : 52.237, + "99.98205796351424" : 52.444, + "99.98217974204242" : 52.586, + "99.98230152057062" : 52.796, + "99.98242247067343" : 53.413, + "99.98254507762698" : 53.675, + "99.9826660277298" : 53.962, + "99.98278863468335" : 54.607, + "99.98291289848761" : 54.936, + "99.98303302016508" : 55.282, + "99.98315479869326" : 55.442, + "99.98327989092289" : 55.706, + "99.98340166945107" : 56.102, + "99.98352179112854" : 56.409, + "99.9836460549328" : 56.465, + "99.98376700503563" : 56.688, + "99.98388795513844" : 56.907, + "99.98400973366662" : 57.337, + "99.98413151219482" : 57.407, + "99.98425660442444" : 57.456, + "99.9843767261019" : 57.56, + "99.98449767620473" : 57.676, + "99.98462028315828" : 58.081, + "99.98474454696255" : 58.309, + "99.98486549706537" : 58.431, + "99.98498644716818" : 58.527, + "99.98510822569637" : 58.706, + "99.98523083264992" : 58.834, + "99.98535343960346" : 59.074, + "99.98547687498237" : 59.276, + "99.98559699665984" : 59.414, + "99.98571794676265" : 59.788, + "99.9858405537162" : 59.902, + "99.98596398909511" : 60.064, + "99.98608493919792" : 60.199, + "99.98620920300219" : 60.333, + "99.98632932467966" : 60.513, + "99.98645027478248" : 60.787, + "99.98657288173602" : 60.916, + "99.9866946602642" : 61.076, + "99.98681892406847" : 61.271, + "99.98693904574594" : 61.534, + "99.98706165269948" : 61.685, + "99.98718343122766" : 61.876, + "99.98730686660657" : 61.949, + "99.98742947356013" : 62.293, + "99.98755042366294" : 62.493, + "99.98767137376576" : 62.655, + "99.98779315229395" : 62.798, + "99.98785528419609" : 62.837, + "99.9879157592475" : 62.92, + "99.98797789114963" : 63.008, + "99.98803836620104" : 63.23, + "99.98810132652854" : 63.31, + "99.98816014472922" : 63.359, + "99.98822393348209" : 63.378, + "99.98828275168277" : 63.651, + "99.98834239830882" : 63.761, + "99.98840453021096" : 63.804, + "99.98846583368773" : 63.845, + "99.98852548031378" : 63.976, + "99.98858678379055" : 63.993, + "99.98864808726732" : 64.234, + "99.98870856231873" : 64.288, + "99.98877152264623" : 64.307, + "99.98883365454836" : 64.339, + "99.98889330117441" : 64.776, + "99.98895294780046" : 64.98, + "99.9890150797026" : 65.021, + "99.98907638317937" : 65.07, + "99.98913685823078" : 65.199, + "99.98919816170755" : 65.277, + "99.98926029360969" : 65.741, + "99.98931994023573" : 65.972, + "99.98938124371251" : 66.038, + "99.98944420404001" : 66.063, + "99.98950467909141" : 66.107, + "99.98956432571747" : 66.516, + "99.98962562919424" : 66.539, + "99.989686932671" : 66.6, + "99.98974657929706" : 66.727, + "99.98981036804992" : 67.049, + "99.9898691862506" : 67.191, + "99.98993048972739" : 67.277, + "99.9899909647788" : 67.409, + "99.99005392510628" : 67.496, + "99.99011274330698" : 67.564, + "99.99017570363448" : 67.759, + "99.99023617868588" : 67.797, + "99.99029748216266" : 68.036, + "99.9903571287887" : 68.154, + "99.99041843226547" : 68.172, + "99.99048056416761" : 68.374, + "99.99054021079367" : 68.469, + "99.99060317112115" : 68.576, + "99.99066198932185" : 68.735, + "99.99072329279862" : 68.778, + "99.99078542470075" : 68.871, + "99.99084672817753" : 68.927, + "99.9909080316543" : 68.964, + "99.99096684985498" : 69.035, + "99.99102898175713" : 69.166, + "99.99108945680854" : 69.276, + "99.99115407398675" : 69.453, + "99.99121123533672" : 69.57, + "99.99127419566422" : 69.672, + "99.99133632756634" : 69.767, + "99.99139431734167" : 69.929, + "99.99145644924381" : 69.954, + "99.99151775272058" : 70.223, + "99.99157988462271" : 70.25, + "99.99163953124877" : 70.27, + "99.99170000630018" : 70.352, + "99.99176130977695" : 70.417, + "99.99182344167909" : 70.598, + "99.99188308830513" : 70.7, + "99.99194770548335" : 70.912, + "99.99200569525868" : 70.972, + "99.99206617031008" : 71.177, + "99.99212995906295" : 71.221, + "99.99218877726364" : 71.244, + "99.99225090916576" : 71.372, + "99.99231221264255" : 71.588, + "99.99237351611932" : 71.898, + "99.99243399117073" : 71.964, + "99.99249446622214" : 72.03, + "99.99255411284818" : 72.169, + "99.99261790160105" : 72.202, + "99.99267754822709" : 72.266, + "99.99273719485315" : 72.477, + "99.99279849832992" : 72.711, + "99.99285980180669" : 72.888, + "99.99292193370883" : 72.96, + "99.99298406561095" : 73.004, + "99.99304205538628" : 73.154, + "99.99310418728842" : 73.213, + "99.99316466233982" : 73.263, + "99.99322513739124" : 73.451, + "99.9932889261441" : 73.761, + "99.9933494011955" : 73.862, + "99.99341070467229" : 73.966, + "99.99346952287297" : 74.061, + "99.99353331162582" : 74.085, + "99.9935946151026" : 74.335, + "99.99365757543009" : 74.347, + "99.99371556520542" : 74.662, + "99.99377604025683" : 74.699, + "99.99383651530825" : 74.728, + "99.99389947563574" : 74.833, + "99.9939284705234" : 74.844, + "99.99396077911251" : 75.203, + "99.99398811714946" : 75.333, + "99.99401876888784" : 75.393, + "99.99405604802912" : 75.423, + "99.99408172921534" : 75.427, + "99.994110724103" : 75.451, + "99.99414303269211" : 75.461, + "99.99417119915441" : 75.52, + "99.99420350774352" : 75.528, + "99.99423333105655" : 75.655, + "99.99426481122029" : 75.665, + "99.99429463453332" : 75.687, + "99.99432445784635" : 75.694, + "99.99435593801009" : 75.803, + "99.99438658974847" : 75.812, + "99.99441724148686" : 75.818, + "99.99444872165061" : 75.836, + "99.99447771653827" : 75.869, + "99.99451002512738" : 75.883, + "99.99453736316433" : 76.189, + "99.99456884332807" : 76.231, + "99.99460032349182" : 76.24, + "99.99463097523021" : 76.377, + "99.9946616269686" : 76.411, + "99.99469227870698" : 76.509, + "99.99472210202" : 76.519, + "99.99475275375839" : 76.599, + "99.99478340549678" : 76.793, + "99.99481240038443" : 76.805, + "99.99484305212283" : 76.847, + "99.99487453228657" : 76.856, + "99.9949043555996" : 76.863, + "99.99493500733799" : 77.027, + "99.99496565907637" : 77.044, + "99.9949954823894" : 77.058, + "99.99502944782922" : 77.103, + "99.9950584427169" : 77.154, + "99.99508909445528" : 77.163, + "99.99511726091758" : 77.229, + "99.9951495695067" : 77.246, + "99.99518104967044" : 77.309, + "99.99521252983419" : 77.326, + "99.99523986787112" : 77.335, + "99.9952730048856" : 77.351, + "99.9953011713479" : 77.498, + "99.99533265151165" : 77.522, + "99.9953641316754" : 77.532, + "99.99539312656306" : 77.646, + "99.99542294987609" : 77.68, + "99.99545360161447" : 77.689, + "99.9954834249275" : 77.728, + "99.99551407666588" : 77.828, + "99.99554472840427" : 77.839, + "99.99557538014265" : 77.896, + "99.99560603188104" : 78.017, + "99.99563668361942" : 78.036, + "99.99566816378318" : 78.22, + "99.9956979870962" : 78.273, + "99.99572863883458" : 78.285, + "99.99576011899833" : 78.33, + "99.99579159916208" : 78.34, + "99.99582059404975" : 78.555, + "99.99585207421349" : 78.669, + "99.99588272595187" : 78.677, + "99.99591089241417" : 78.686, + "99.99594320100329" : 78.82, + "99.99597468116704" : 78.829, + "99.99600284762934" : 78.866, + "99.99603432779308" : 78.998, + "99.99606415110611" : 79.1, + "99.99609563126985" : 79.15, + "99.99612462615752" : 79.22, + "99.996157763172" : 79.232, + "99.9961859296343" : 79.256, + "99.99621658137268" : 79.265, + "99.9962464046857" : 79.319, + "99.99627705642409" : 79.33, + "99.99630770816248" : 79.339, + "99.99634001675159" : 79.512, + "99.99636984006462" : 79.541, + "99.99640214865373" : 79.563, + "99.99643114354139" : 79.673, + "99.99646013842904" : 79.804, + "99.99649079016744" : 79.813, + "99.99652227033118" : 79.874, + "99.99655375049493" : 79.884, + "99.99658440223332" : 80.084, + "99.99661256869562" : 80.092, + "99.99664736256082" : 80.163, + "99.9966780142992" : 80.169, + "99.99670452391078" : 80.203, + "99.99673766092525" : 80.21, + "99.99676831266363" : 80.249, + "99.9967973075513" : 80.3, + "99.99682630243896" : 80.321, + "99.99685943945343" : 80.329, + "99.99688926276646" : 80.467, + "99.99691825765412" : 80.476, + "99.9969513946686" : 80.487, + "99.99696547789975" : 80.497, + "99.99698536010843" : 80.501, + "99.99699612963813" : 80.503, + "99.99700938444391" : 80.507, + "99.99702512452579" : 80.512, + "99.99704003618231" : 80.527, + "99.99705577626418" : 80.535, + "99.9970706879207" : 80.54, + "99.99708891327865" : 80.549, + "99.99710133965908" : 80.552, + "99.99711790816632" : 80.557, + "99.9971336482482" : 80.564, + "99.99714690305397" : 80.568, + "99.99716429998658" : 80.661, + "99.99717755479236" : 80.666, + "99.99719329487424" : 80.772, + "99.99721317708293" : 80.776, + "99.99722808873943" : 80.778, + "99.99724134354523" : 80.78, + "99.99725956890317" : 80.783, + "99.99726951000753" : 80.786, + "99.99728525008939" : 80.856, + "99.99730016174591" : 81.089, + "99.9973175586785" : 81.112, + "99.99732998505894" : 81.118, + "99.99734738199153" : 81.139, + "99.99736146522268" : 81.142, + "99.997380519006" : 81.145, + "99.99739211696107" : 81.148, + "99.9974086854683" : 81.157, + "99.99742276869945" : 81.162, + "99.99743768035597" : 81.195, + "99.99745259201248" : 81.2, + "99.99746998894508" : 81.205, + "99.99748324375086" : 81.236, + "99.99749898383274" : 81.241, + "99.99751389548925" : 81.246, + "99.99753129242185" : 81.28, + "99.99754620407836" : 81.284, + "99.99755863045878" : 81.296, + "99.99757519896603" : 81.466, + "99.99759259589862" : 81.471, + "99.99760502227905" : 81.475, + "99.99762490448774" : 81.489, + "99.99763898771889" : 81.492, + "99.99765141409931" : 81.495, + "99.99766632575583" : 81.498, + "99.99768123741234" : 81.509, + "99.99769780591957" : 81.525, + "99.99771271757608" : 81.531, + "99.9977276292326" : 81.537, + "99.99774419773983" : 81.552, + "99.99775745254563" : 81.556, + "99.99777484947822" : 81.561, + "99.99778810428401" : 81.567, + "99.99780384436588" : 81.586, + "99.9978187560224" : 81.592, + "99.99783449610426" : 81.657, + "99.99784940776078" : 81.715, + "99.99786597626802" : 81.72, + "99.99787923107381" : 81.724, + "99.99789497115567" : 81.745, + "99.9979098828122" : 81.758, + "99.99792645131943" : 81.774, + "99.99794301982666" : 81.843, + "99.99795793148317" : 81.848, + "99.99797118628896" : 81.852, + "99.9979877547962" : 81.955, + "99.99800183802735" : 81.959, + "99.99801923495995" : 81.964, + "99.99803166134038" : 82.07, + "99.99804988669834" : 82.075, + "99.99806231307876" : 82.077, + "99.998078881586" : 82.08, + "99.99809627851859" : 82.083, + "99.99811201860047" : 82.086, + "99.99812527340626" : 82.097, + "99.99813935663741" : 82.108, + "99.99815509671929" : 82.113, + "99.99816917995044" : 82.117, + "99.9981849200323" : 82.121, + "99.99820066011418" : 82.124, + "99.99821474334533" : 82.128, + "99.99823131185256" : 82.132, + "99.99824705193444" : 82.137, + "99.99826196359095" : 82.162, + "99.9982760468221" : 82.175, + "99.99829427218006" : 82.2, + "99.99830835541121" : 82.204, + "99.998321610217" : 82.208, + "99.99833817872424" : 82.268, + "99.99835474723147" : 82.273, + "99.99836800203727" : 82.445, + "99.99838539896986" : 82.45, + "99.99840031062638" : 82.457, + "99.99841605070824" : 82.461, + "99.99842847708868" : 82.465, + "99.99844421717054" : 82.541, + "99.9984624425285" : 82.544, + "99.99847901103574" : 82.547, + "99.99848398158791" : 82.548, + "99.9984906089908" : 82.552, + "99.99849889324443" : 82.556, + "99.99850552064733" : 82.56, + "99.9985146333263" : 82.648, + "99.99852126072919" : 82.65, + "99.99852788813209" : 82.652, + "99.99853617238571" : 82.655, + "99.9985452850647" : 82.659, + "99.9985535693183" : 82.662, + "99.99855936829584" : 82.713, + "99.99856599569873" : 82.715, + "99.99857593680308" : 82.74, + "99.9985817357806" : 82.742, + "99.99858919160886" : 82.744, + "99.99859913271321" : 82.747, + "99.99860576011609" : 82.749, + "99.99861155909363" : 82.751, + "99.99861984334724" : 82.82, + "99.99862895602622" : 82.823, + "99.99863558342912" : 82.825, + "99.99864221083202" : 82.827, + "99.998651323511" : 82.83, + "99.9986579509139" : 82.832, + "99.99866706359288" : 82.858, + "99.99867369099577" : 82.86, + "99.99868280367474" : 82.863, + "99.99868943107764" : 82.865, + "99.99869605848053" : 82.867, + "99.99870599958487" : 82.87, + "99.99871345541314" : 83.101, + "99.99871842596531" : 83.103, + "99.99872671021892" : 83.132, + "99.99873665132326" : 83.135, + "99.99874410715152" : 83.137, + "99.99875156297978" : 83.139, + "99.99875819038267" : 83.141, + "99.99876564621093" : 83.143, + "99.99877310203918" : 83.174, + "99.99878304314352" : 83.177, + "99.99878967054642" : 83.179, + "99.99879712637467" : 83.186, + "99.99880375377757" : 83.188, + "99.99881038118046" : 83.19, + "99.99881866543409" : 83.192, + "99.99882529283697" : 83.194, + "99.9988377192174" : 83.197, + "99.99884351819493" : 83.199, + "99.99885097402318" : 83.238, + "99.99885760142608" : 83.24, + "99.99886505725433" : 83.251, + "99.9988725130826" : 83.253, + "99.99887914048549" : 83.255, + "99.9988899100152" : 83.258, + "99.99889488056736" : 83.407, + "99.99890150797026" : 83.409, + "99.9989114490746" : 83.412, + "99.9989180764775" : 83.414, + "99.99892470388039" : 83.416, + "99.99893464498473" : 83.419, + "99.99894044396227" : 83.496, + "99.9989503850666" : 83.499, + "99.9989570124695" : 83.501, + "99.99896281144703" : 83.503, + "99.99897192412601" : 83.507, + "99.99897772310355" : 83.509, + "99.99898600735716" : 83.512, + "99.99899346318541" : 83.535, + "99.9990025758644" : 83.541, + "99.99900837484194" : 83.699, + "99.99901831594627" : 83.702, + "99.99902494334917" : 83.704, + "99.99903157075207" : 83.706, + "99.99903902658032" : 83.708, + "99.9990481392593" : 83.711, + "99.9990547666622" : 84.065, + "99.99906222249045" : 84.068, + "99.99907133516943" : 84.072, + "99.99907713414696" : 84.09, + "99.99908541840058" : 84.093, + "99.99909287422884" : 84.095, + "99.99910033005709" : 84.096, + "99.99910778588534" : 84.097, + "99.99912104069114" : 84.099, + "99.9991260112433" : 84.1, + "99.9991326386462" : 84.102, + "99.9991392660491" : 84.104, + "99.999145893452" : 84.106, + "99.9991541777056" : 84.119, + "99.9991608051085" : 84.121, + "99.99917157463821" : 84.124, + "99.9991782020411" : 84.126, + "99.99918482944399" : 84.128, + "99.99919145684689" : 84.13, + "99.99920056952587" : 84.336, + "99.99920802535412" : 84.339, + "99.99921548118238" : 84.341, + "99.99922459386136" : 84.344, + "99.9992303928389" : 84.346, + "99.99923784866715" : 84.481, + "99.99924116236859" : 84.482, + "99.9992453044954" : 84.493, + "99.99924861819686" : 84.497, + "99.99925276032366" : 84.501, + "99.99925773087583" : 84.506, + "99.99926104457728" : 84.509, + "99.99926435827872" : 84.512, + "99.99926767198018" : 84.514, + "99.99927264253235" : 84.518, + "99.99927595623379" : 84.521, + "99.9992800983606" : 84.524, + "99.99928424048741" : 84.528, + "99.9992867257635" : 84.616, + "99.99929086789031" : 84.618, + "99.99929832371856" : 84.62, + "99.99930495112146" : 84.622, + "99.9993082648229" : 84.623, + "99.99931157852434" : 84.624, + "99.99931572065115" : 84.625, + "99.99931903435261" : 84.626, + "99.99932234805405" : 84.627, + "99.99932566175549" : 84.628, + "99.99932897545695" : 84.629, + "99.99933477443447" : 84.631, + "99.9993364312852" : 84.675, + "99.99934223026274" : 84.677, + "99.99934471553883" : 84.678, + "99.99935051451635" : 84.68, + "99.99935299979244" : 84.688, + "99.99935631349389" : 84.689, + "99.99935962719533" : 84.69, + "99.99936625459823" : 84.692, + "99.99936956829967" : 84.693, + "99.99937288200113" : 84.694, + "99.99937536727721" : 84.695, + "99.99937868097865" : 84.696, + "99.99938365153082" : 84.79, + "99.9993861368069" : 84.791, + "99.99939193578444" : 84.801, + "99.99939359263517" : 84.802, + "99.9993993916127" : 84.856, + "99.99940187688878" : 84.857, + "99.99940519059024" : 84.858, + "99.99941181799312" : 84.86, + "99.99941513169458" : 84.861, + "99.99941761697066" : 84.862, + "99.9994209306721" : 84.863, + "99.99942424437356" : 84.864, + "99.99943087177644" : 84.866, + "99.9994341854779" : 84.867, + "99.99943667075398" : 84.868, + "99.9994424697315" : 84.949, + "99.99944578343296" : 84.95, + "99.9994490971344" : 84.951, + "99.99945241083586" : 84.952, + "99.9994557245373" : 84.953, + "99.99945903823875" : 84.954, + "99.9994623519402" : 84.955, + "99.99946897934309" : 84.957, + "99.99947229304453" : 84.958, + "99.99947560674599" : 84.959, + "99.99947892044743" : 84.96, + "99.9994838909996" : 85.086, + "99.99948720470105" : 85.087, + "99.99949217525322" : 85.088, + "99.99949797423075" : 85.089, + "99.99950377320829" : 85.09, + "99.99950708690973" : 85.091, + "99.99951040061119" : 85.092, + "99.99951454273798" : 85.093, + "99.99951785643944" : 85.094, + "99.99951951329015" : 85.095, + "99.99952365541697" : 85.467, + "99.9995294543945" : 85.469, + "99.99953111124522" : 85.47, + "99.9995360817974" : 85.472, + "99.99953856707349" : 85.473, + "99.99954436605101" : 85.475, + "99.9995468513271" : 85.476, + "99.99955182187927" : 85.478, + "99.99955430715535" : 85.479, + "99.9995576208568" : 85.481, + "99.9995617629836" : 85.544, + "99.99956756196114" : 85.546, + "99.99957087566258" : 85.547, + "99.99957418936404" : 85.548, + "99.99957667464012" : 85.549, + "99.99958081676694" : 85.551, + "99.99958495889373" : 85.553, + "99.99958992944592" : 85.555, + "99.999592414722" : 85.556, + "99.99959572842344" : 85.557, + "99.99960069897561" : 85.559, + "99.99960566952778" : 85.768, + "99.99960732637851" : 85.769, + "99.99961312535603" : 85.772, + "99.99961478220676" : 85.773, + "99.99961892433357" : 85.775, + "99.99962140960966" : 85.776, + "99.99962306646039" : 85.777, + "99.99962555173647" : 85.778, + "99.99962720858719" : 85.779, + "99.99962969386328" : 85.78, + "99.999631350714" : 85.781, + "99.99963383599008" : 85.782, + "99.9996379781169" : 85.784, + "99.99964046339298" : 85.785, + "99.99964294866906" : 85.786, + "99.99964460551979" : 85.787, + "99.99964709079588" : 85.788, + "99.99964791922123" : 85.789, + "99.99965206134804" : 85.897, + "99.9996553750495" : 85.898, + "99.99965868875094" : 85.899, + "99.99966200245238" : 85.9, + "99.99966531615384" : 85.901, + "99.99966780142992" : 85.902, + "99.99967194355673" : 85.903, + "99.99967525725818" : 85.904, + "99.99967857095962" : 85.905, + "99.99968188466107" : 85.906, + "99.99968519836251" : 85.907, + "99.9996876836386" : 85.908, + "99.99969016891468" : 85.942, + "99.99969348261614" : 85.943, + "99.99969679631758" : 85.944, + "99.99970011001903" : 85.945, + "99.99970342372048" : 85.946, + "99.99970673742193" : 85.947, + "99.99971005112337" : 85.948, + "99.99971336482481" : 85.949, + "99.99971419325018" : 86.06, + "99.99971667852627" : 86.061, + "99.99971833537698" : 86.062, + "99.99972082065308" : 86.074, + "99.99972413435452" : 86.075, + "99.99972827648133" : 86.076, + "99.99973159018278" : 86.077, + "99.99973407545886" : 86.078, + "99.99973738916032" : 86.079, + "99.99974153128711" : 86.08, + "99.99974484498857" : 86.081, + "99.99974815869001" : 86.082, + "99.99975147239147" : 86.083, + "99.99975561451826" : 86.084, + "99.99975727136899" : 86.085, + "99.99975892821972" : 86.744, + "99.99976058507045" : 86.745, + "99.99976307034653" : 86.747, + "99.99976472719725" : 86.748, + "99.99976638404797" : 86.749, + "99.9997680408987" : 86.75, + "99.99976969774941" : 86.751, + "99.99977135460014" : 86.752, + "99.99977383987623" : 86.753, + "99.99977549672695" : 86.754, + "99.99977715357768" : 86.755, + "99.99977963885377" : 86.756, + "99.99978212412985" : 86.757, + "99.99978378098056" : 86.758, + "99.99978626625666" : 86.759, + "99.99978875153275" : 86.76, + "99.99979123680883" : 86.761, + "99.99979372208492" : 86.762, + "99.999796207361" : 86.763, + "99.99979786421173" : 86.764, + "99.99980117791317" : 86.766, + "99.9998028347639" : 86.767, + "99.99980449161461" : 86.875, + "99.99980780531607" : 86.876, + "99.99981111901751" : 86.877, + "99.99981360429359" : 86.878, + "99.99981691799505" : 86.879, + "99.99982023169649" : 86.88, + "99.99982354539794" : 86.881, + "99.99982685909939" : 86.882, + "99.99983017280083" : 86.883, + "99.99983348650228" : 86.884, + "99.99983597177837" : 86.885, + "99.99983845705445" : 86.886, + "99.99984177075589" : 86.887, + "99.99984508445735" : 86.888, + "99.9998459128827" : 86.889, + "99.99984839815879" : 86.895, + "99.99985005500952" : 86.896, + "99.99985088343487" : 87.742, + "99.99985171186025" : 87.818, + "99.9998525402856" : 87.825, + "99.99985419713633" : 87.826, + "99.99985585398704" : 87.827, + "99.99985751083777" : 87.828, + "99.99985999611386" : 87.829, + "99.99986248138994" : 87.83, + "99.99986413824067" : 87.831, + "99.99986745194211" : 87.832, + "99.99987159406892" : 87.833, + "99.99987490777036" : 87.834, + "99.99987822147182" : 87.835, + "99.99988153517326" : 87.836, + "99.99988567730007" : 87.837, + "99.9998873341508" : 87.838, + "99.99989064785224" : 87.839, + "99.99989478997905" : 87.84, + "99.99989561840441" : 87.841, + "99.99989893210586" : 93.897, + "99.9999022458073" : 93.898, + "99.99990473108339" : 93.899, + "99.99990638793412" : 93.9, + "99.99990804478485" : 94.874, + "99.99991135848629" : 94.875, + "99.99991301533701" : 94.876, + "99.99991632903846" : 94.877, + "99.99991881431454" : 94.878, + "99.999922128016" : 94.879, + "99.99992461329208" : 94.88, + "99.99992709856816" : 94.887, + "99.9999304122696" : 94.888, + "99.99993372597106" : 94.889, + "99.9999370396725" : 94.89, + "99.99993952494859" : 94.891, + "99.99994283865004" : 94.892, + "99.99994532392613" : 94.893, + "99.99994780920221" : 94.894, + "99.99995112290365" : 94.895, + "99.99995360817974" : 94.896, + "99.99995443660511" : 95.841, + "99.99995526503047" : 95.842, + "99.99995775030655" : 95.843, + "99.99996106400799" : 95.844, + "99.99996354928408" : 95.845, + "99.9999652061348" : 95.846, + "99.99996603456016" : 95.857, + "99.99996934826162" : 95.858, + "99.9999718335377" : 95.859, + "99.99997266196306" : 95.86, + "99.99997349038843" : 95.863, + "99.99997597566451" : 95.864, + "99.99997928936595" : 95.865, + "99.99998177464204" : 95.866, + "99.99998425991812" : 95.867, + "99.99998591676885" : 95.868, + "99.99998923047029" : 95.869, + "99.99999171574638" : 95.87, + "99.99999420102247" : 95.871, + "99.99999668629856" : 95.872, + "99.99999917157464" : 95.873, + "100.0" : 95.874 + }, + "aggregatedEndToEndLatencyAvg" : 3.1580275972595193, + "aggregatedEndToEndLatency50pct" : 3.004, + "aggregatedEndToEndLatency75pct" : 3.427, + "aggregatedEndToEndLatency95pct" : 4.349, + "aggregatedEndToEndLatency99pct" : 5.434, + "aggregatedEndToEndLatency999pct" : 18.329, + "aggregatedEndToEndLatency9999pct" : 67.481, + "aggregatedEndToEndLatencyMax" : 95.874 +} \ No newline at end of file diff --git a/blog/results/kafka/latency/sync-200k.json b/blog/results/kafka/latency/sync-200k.json new file mode 100644 index 00000000..125fb876 --- /dev/null +++ b/blog/results/kafka/latency/sync-200k.json @@ -0,0 +1,2258 @@ +{ + "workload" : "100-partitions-200K-rate-4-producer", + "driver" : "Kafka", + "publishRate" : [ 203974.153890742, 199991.37724374473, 199888.8811924253, 200040.0507026323, 199986.94688105947, 199962.50460668502, 200040.68159510067, 200097.4710693472, 200067.7018797035, 199938.87443724764, 199977.33867894133, 200149.1659019169, 199800.1857893253, 200048.76232668667, 200124.0042479133, 199834.8758318643, 200096.3319996583, 200057.33447503814, 199846.85062933838, 200066.79359083186, 199999.6468460273, 200007.13778590868, 199970.2688290632, 200000.77708590872, 200043.26152172897, 200046.2726419041, 199984.08332350792, 200011.4905908545, 199837.47365183433, 199977.9635077807, 199922.19065030094, 200302.59630800784, 199584.14972845867, 200236.7866390457, 200035.29214542572, 199924.9854431966, 200012.90096703832, 199860.86640504055, 200094.6872958073, 200178.37664036502, 199879.8412543188, 199892.58432835538, 200183.75754842418, 200049.8463581543, 200018.7976221676, 200041.94142873978, 199984.71152269418, 199969.39478420184, 199981.0864802471, 200075.66196096578, 199948.87830738502, 199918.374510097, 200066.53631924893, 200031.1854815746, 199889.33860657108, 199779.61219507246, 200231.33165578346, 199947.86858760603, 200002.45483234705, 199995.56100798212 ], + "consumeRate" : [ 203987.1743761726, 199989.88683732884, 199884.71067805408, 200045.31524908173, 199981.68210871628, 199972.83513658115, 200044.15835735181, 200083.65662395366, 200067.7018797035, 199932.7111271075, 199983.60257410206, 200149.06645148483, 199800.1857893253, 200038.7278876514, 200145.165779091, 199864.6012405651, 200055.47217407264, 200057.33447503814, 199846.85062933838, 200066.79359083186, 199988.11950604312, 200018.66300361732, 199977.52353370536, 199977.63060698556, 200065.42138663237, 200040.00897614323, 199989.5483006912, 200016.5613114222, 199809.6570187624, 199999.61066885712, 199928.34739131285, 200292.05660420828, 199584.14972845867, 200241.95305542354, 200030.12755555508, 199917.53565921795, 200028.39485631027, 199862.35606383323, 200085.14821751142, 200175.19570457682, 199883.02142898558, 199884.23458804077, 200192.10659332815, 200049.8463581543, 200018.7976221676, 200047.11264510002, 199967.80919085973, 199985.89807618488, 199976.3149929029, 200075.66196096578, 199948.87830738502, 199925.03322832327, 200059.87448431834, 200036.55505387828, 199873.13491476243, 199798.6980705438, 200217.816826943, 199957.30677348928, 200003.05080527283, 199984.83136589872 ], + "backlog" : [ -57, -42, 0, -53, 0, -99, -139, 0, 0, 62, -1, 0, 0, 101, -112, -411, 0, 0, 0, 0, 116, 0, -73, 160, -63, 0, -55, -106, 174, -44, -106, 0, 0, -52, 0, 75, -81, -93, 0, 32, 0, 84, 0, 0, 0, -52, 118, -48, 0, 0, 0, -63, 0, -53, 109, -80, 53, -40, -48, 60 ], + "publishLatencyAvg" : [ 4.510764069234944, 4.520219581724492, 3.954664479220587, 4.5391720125448884, 4.115946319178377, 3.882644893473904, 3.997786043934108, 4.0134202335055535, 4.061283613861903, 4.422842582815303, 4.071845717825277, 4.11654758179087, 3.930265459098008, 6.589627619313885, 4.579638754679137, 3.9845119180121924, 3.8527884210390315, 3.8872766378679864, 4.300250108682784, 3.843413799474707, 4.086300174233944, 4.0134809341977356, 4.1992962010282, 4.3887389026393215, 4.17547622157797, 5.237677540177385, 4.255465619834628, 4.295914524901116, 4.621975930204404, 5.2304215642366, 4.5701059998480416, 5.917176327888387, 3.842312535377646, 6.044834519599445, 4.367525954025659, 4.3840562960431, 4.188949679110288, 4.459053013043195, 4.216023109409565, 4.229285424040596, 4.183698132240123, 4.361113740306916, 5.070829719777522, 4.711633157435423, 4.262711718177277, 4.084288957326652, 3.8533202768470933, 4.014543409565477, 3.89201439091023, 4.243467080689774, 3.9803808860850127, 4.059454415625746, 3.885850344181407, 4.053484973005653, 3.921233359409696, 4.429122955693655, 4.2598551528895126, 5.744380948027609, 4.1359169851072135, 4.392196080769004 ], + "publishLatency50pct" : [ 3.366, 3.286, 3.177, 3.326, 3.185, 3.141, 3.17, 3.179, 3.209, 3.272, 3.178, 3.185, 3.128, 3.284, 3.269, 3.151, 3.137, 3.166, 3.187, 3.135, 3.151, 3.195, 3.282, 3.316, 3.224, 3.221, 3.245, 3.301, 3.265, 3.356, 3.251, 3.24, 3.162, 3.256, 3.28, 3.221, 3.191, 3.267, 3.227, 3.234, 3.227, 3.236, 3.39, 3.332, 3.241, 3.197, 3.162, 3.174, 3.171, 3.253, 3.165, 3.181, 3.197, 3.242, 3.211, 3.29, 3.236, 3.202, 3.198, 3.3 ], + "publishLatency75pct" : [ 4.38, 4.306, 4.107, 4.392, 4.136, 4.066, 4.088, 4.146, 4.181, 4.316, 4.113, 4.156, 4.046, 4.377, 4.342, 4.069, 4.05, 4.095, 4.183, 4.024, 4.098, 4.161, 4.287, 4.361, 4.213, 4.199, 4.246, 4.344, 4.282, 4.492, 4.262, 4.232, 4.079, 4.293, 4.338, 4.196, 4.135, 4.317, 4.22, 4.229, 4.219, 4.24, 4.743, 4.463, 4.224, 4.136, 4.067, 4.131, 4.079, 4.273, 4.094, 4.124, 4.125, 4.23, 4.143, 4.339, 4.248, 4.18, 4.16, 4.384 ], + "publishLatency95pct" : [ 11.556, 10.898, 8.779, 11.827, 9.26, 8.445, 8.909, 9.074, 9.021, 11.538, 9.066, 9.073, 8.811, 12.734, 12.02, 8.745, 8.244, 8.364, 10.739, 8.165, 9.253, 8.997, 9.476, 10.398, 9.569, 9.783, 10.241, 10.237, 12.012, 15.743, 11.539, 11.099, 7.981, 12.43, 11.104, 11.574, 10.101, 12.023, 10.09, 10.399, 9.932, 11.256, 15.195, 12.766, 10.454, 9.2, 8.145, 8.954, 8.248, 10.279, 8.601, 9.21, 8.35, 9.037, 8.175, 11.024, 9.893, 12.877, 9.31, 10.748 ], + "publishLatency99pct" : [ 22.003, 25.263, 14.797, 21.432, 19.59, 14.931, 17.153, 15.295, 16.548, 20.215, 17.731, 19.261, 16.012, 111.999, 23.439, 17.448, 14.635, 14.025, 21.371, 14.638, 17.557, 15.203, 17.188, 20.497, 18.104, 45.555, 18.336, 17.953, 26.283, 36.955, 27.9, 85.093, 13.813, 83.628, 19.162, 21.479, 20.026, 20.292, 18.949, 18.474, 18.354, 20.743, 26.043, 24.275, 19.188, 18.261, 13.974, 15.342, 15.058, 17.157, 16.081, 18.06, 13.134, 14.448, 14.487, 19.993, 19.592, 77.393, 18.55, 18.268 ], + "publishLatency999pct" : [ 37.007, 42.711, 24.6, 36.149, 30.946, 22.023, 29.747, 21.42, 24.628, 30.545, 32.438, 31.869, 25.024, 241.086, 39.076, 27.21, 22.85, 19.777, 31.224, 23.406, 38.005, 22.044, 27.964, 31.306, 28.65, 196.311, 29.399, 26.25, 56.821, 57.599, 45.651, 209.385, 22.079, 214.301, 28.098, 35.586, 34.119, 29.925, 32.183, 27.713, 28.298, 32.592, 36.453, 43.979, 29.247, 28.227, 22.854, 30.12, 22.027, 24.021, 30.44, 30.869, 19.982, 19.995, 23.065, 34.12, 32.973, 116.134, 31.229, 34.365 ], + "publishLatency9999pct" : [ 53.633, 50.984, 33.488, 46.377, 39.216, 33.566, 40.227, 25.009, 30.709, 37.834, 39.563, 39.847, 39.605, 302.851, 54.265, 33.927, 29.196, 25.071, 41.553, 43.552, 69.728, 26.399, 34.295, 36.366, 32.888, 260.593, 36.016, 31.023, 81.777, 65.223, 63.281, 250.141, 28.606, 253.3, 32.931, 45.661, 43.272, 35.713, 46.065, 34.441, 38.747, 42.435, 43.971, 52.709, 37.677, 36.427, 28.987, 36.47, 26.793, 30.48, 34.982, 37.667, 26.455, 25.219, 27.408, 44.186, 37.594, 133.647, 37.497, 40.798 ], + "publishLatencyMax" : [ 56.809, 54.169, 36.314, 48.674, 43.53, 35.709, 43.406, 29.367, 32.655, 41.262, 42.371, 41.989, 42.923, 330.533, 58.782, 35.054, 31.055, 26.633, 44.233, 47.747, 70.849, 28.667, 37.537, 37.388, 35.362, 288.713, 38.704, 32.879, 82.954, 67.402, 67.962, 255.282, 31.197, 267.119, 35.244, 47.518, 47.557, 37.822, 48.415, 36.137, 40.961, 45.03, 47.465, 59.084, 39.324, 39.253, 31.275, 38.928, 28.435, 32.361, 36.095, 39.606, 29.854, 27.394, 29.499, 45.977, 39.728, 139.341, 39.099, 42.135 ], + "aggregatedPublishLatencyAvg" : 4.357378482063882, + "aggregatedPublishLatency50pct" : 3.222, + "aggregatedPublishLatency75pct" : 4.207, + "aggregatedPublishLatency95pct" : 10.009, + "aggregatedPublishLatency99pct" : 19.712, + "aggregatedPublishLatency999pct" : 62.293, + "aggregatedPublishLatency9999pct" : 210.828, + "aggregatedPublishLatencyMax" : 330.533, + "aggregatedPublishLatencyQuantiles" : { + "8.280981931675837E-7" : 1.044, + "0.5023069739133997" : 1.758, + "1.0035630912196698" : 1.879, + "1.5033882548481463" : 1.945, + "2.0025244407799074" : 1.995, + "2.5112160517626294" : 2.039, + "3.010270255973267" : 2.078, + "3.513175944880327" : 2.114, + "4.001869812596245" : 2.147, + "4.507557911432348" : 2.18, + "5.0000221102217575" : 2.216, + "5.5068447035825" : 2.244, + "6.0189961088162764" : 2.267, + "6.511967931798098" : 2.288, + "7.007732101887281" : 2.309, + "7.522087076413076" : 2.331, + "8.005403274462562" : 2.351, + "8.516029322824524" : 2.371, + "9.019638895195778" : 2.39, + "9.501105949979921" : 2.408, + "10.026970661292552" : 2.427, + "10.509211159789116" : 2.444, + "11.014587065606394" : 2.461, + "11.53111993838022" : 2.477, + "12.021158637561841" : 2.491, + "12.512454389800693" : 2.504, + "13.035145828837106" : 2.517, + "13.50480917197584" : 2.528, + "14.043825738792357" : 2.54, + "14.520966808615395" : 2.55, + "15.020219756392391" : 2.56, + "15.537648631411225" : 2.57, + "16.015744498450985" : 2.579, + "16.50348605324476" : 2.588, + "17.00361595700832" : 2.597, + "17.50853392452478" : 2.606, + "18.01741102950277" : 2.615, + "18.531409921805505" : 2.624, + "19.049220550091388" : 2.633, + "19.508749627542134" : 2.641, + "20.022326189766353" : 2.65, + "20.535635276274178" : 2.659, + "21.047623546163898" : 2.668, + "21.55571561405477" : 2.677, + "22.052979469971778" : 2.686, + "22.544397780743214" : 2.695, + "23.028520546432848" : 2.704, + "23.505847110251157" : 2.713, + "24.030127669720258" : 2.723, + "24.500455147609912" : 2.732, + "25.02859381656098" : 2.742, + "25.50744822154568" : 2.751, + "26.04544291519183" : 2.761, + "26.535856742854957" : 2.77, + "27.030472340750215" : 2.779, + "27.530792707098207" : 2.788, + "28.043783803899856" : 2.797, + "28.504601402139173" : 2.805, + "29.029561830224864" : 2.814, + "29.507318177005427" : 2.822, + "30.051916125643896" : 2.831, + "30.540537120718813" : 2.839, + "31.040248834894825" : 2.847, + "31.54695135401756" : 2.855, + "32.06137588879158" : 2.863, + "32.518005794468046" : 2.87, + "33.04415371536275" : 2.878, + "33.5084087492019" : 2.885, + "34.038648303269035" : 2.893, + "34.56653108987842" : 2.901, + "35.024156369583075" : 2.908, + "35.54872179483063" : 2.916, + "36.004541820474174" : 2.923, + "36.51880321990414" : 2.931, + "37.02709982804872" : 2.939, + "37.52834186768571" : 2.947, + "38.023865889298875" : 2.955, + "38.51478982544899" : 2.963, + "39.05497980740523" : 2.972, + "39.52515491522734" : 2.98, + "40.04735860442798" : 2.989, + "40.55521880482476" : 2.998, + "41.00166724321623" : 3.006, + "41.54444006343696" : 3.016, + "42.01922685009682" : 3.025, + "42.52741497737809" : 3.035, + "43.01770955890141" : 3.045, + "43.54226173457787" : 3.056, + "44.0083013200233" : 3.066, + "44.509938362498424" : 3.077, + "45.03879996117213" : 3.089, + "45.51085402379454" : 3.1, + "46.015007656678705" : 3.112, + "46.503590559236734" : 3.124, + "47.02015241544732" : 3.137, + "47.51840667680336" : 3.15, + "48.033208824353466" : 3.164, + "48.529854919018376" : 3.178, + "49.01193725076004" : 3.192, + "49.511540484072746" : 3.207, + "50.00132495710907" : 3.222, + "50.25777703035475" : 3.23, + "50.50999255324419" : 3.238, + "50.75657866461647" : 3.246, + "51.00021591832289" : 3.254, + "51.270115478127416" : 3.263, + "51.50725712960663" : 3.271, + "51.7661462958348" : 3.28, + "52.01410373781497" : 3.289, + "52.271155354152505" : 3.299, + "52.5030261606322" : 3.309, + "52.76567572075555" : 3.322, + "53.00419201523542" : 3.334, + "53.25322184437574" : 3.345, + "53.51679639018086" : 3.355, + "53.77957347742595" : 3.364, + "54.03035390614663" : 3.372, + "54.25974621473418" : 3.379, + "54.52471859028936" : 3.387, + "54.75606521061278" : 3.394, + "55.013197980573246" : 3.402, + "55.26604285808949" : 3.41, + "55.51276063707449" : 3.418, + "55.75266730842068" : 3.426, + "56.01593711409072" : 3.435, + "56.27613881595506" : 3.444, + "56.50228001103623" : 3.452, + "56.75604490564508" : 3.461, + "57.000527647606724" : 3.47, + "57.26992041131704" : 3.48, + "57.50711423298241" : 3.489, + "57.767433524790185" : 3.499, + "58.021667122976375" : 3.509, + "58.26736799738016" : 3.519, + "58.506044942909504" : 3.529, + "58.76592285838032" : 3.54, + "59.000224961155155" : 3.55, + "59.252826377802606" : 3.561, + "59.50476448779734" : 3.572, + "59.75863372277853" : 3.583, + "60.009269234315404" : 3.594, + "60.26180688740198" : 3.605, + "60.51094519740561" : 3.616, + "60.75980195402356" : 3.627, + "61.008253770625046" : 3.638, + "61.25727780307802" : 3.649, + "61.508176649840316" : 3.66, + "61.761952309725686" : 3.671, + "62.01587868348221" : 3.682, + "62.27513883770092" : 3.693, + "62.51322369302215" : 3.703, + "62.75333159222928" : 3.713, + "63.01793712028489" : 3.724, + "63.2648230032031" : 3.734, + "63.5145459505311" : 3.744, + "63.7683050484526" : 3.754, + "64.00123830491414" : 3.763, + "64.26524843036886" : 3.773, + "64.50385829994455" : 3.782, + "64.76979458179659" : 3.792, + "65.00795148166061" : 3.801, + "65.27506283484875" : 3.811, + "65.51801359515302" : 3.82, + "65.76627246487551" : 3.829, + "66.01603433281859" : 3.838, + "66.26664500140967" : 3.847, + "66.51888288295032" : 3.856, + "66.76837230658785" : 3.865, + "67.01545527687604" : 3.874, + "67.26220700788696" : 3.883, + "67.5097918056802" : 3.892, + "67.75684413633523" : 3.901, + "68.00181876862362" : 3.91, + "68.27180776303301" : 3.92, + "68.51197942580102" : 3.929, + "68.75006096872947" : 3.938, + "69.012882773277" : 3.948, + "69.27465951790475" : 3.958, + "69.50374460206262" : 3.967, + "69.75861417966117" : 3.977, + "70.01231117021818" : 3.987, + "70.26975861749206" : 3.997, + "70.52384978278901" : 4.007, + "70.77239517448633" : 4.017, + "71.0172033590379" : 4.027, + "71.26079341114729" : 4.037, + "71.52367152637196" : 4.048, + "71.7641181177401" : 4.058, + "72.00117116271264" : 4.068, + "72.258243481505" : 4.079, + "72.51245223674539" : 4.09, + "72.76906164864778" : 4.101, + "73.01708036989424" : 4.112, + "73.26142895994859" : 4.123, + "73.5017215250528" : 4.134, + "73.75646937221694" : 4.146, + "74.01131493496787" : 4.158, + "74.26240921290376" : 4.17, + "74.50878001874582" : 4.182, + "74.75101281791663" : 4.194, + "75.01283345174862" : 4.207, + "75.1319885007635" : 4.213, + "75.26880522804225" : 4.22, + "75.38668252154508" : 4.226, + "75.50405798754285" : 4.232, + "75.6398942465609" : 4.239, + "75.75564415580548" : 4.245, + "75.88681905009419" : 4.252, + "76.01718489244818" : 4.259, + "76.12733437361237" : 4.265, + "76.25386694943018" : 4.272, + "76.37822742368732" : 4.279, + "76.50159335201445" : 4.286, + "76.64004391702834" : 4.294, + "76.76103485973748" : 4.301, + "76.87767911503067" : 4.308, + "77.01168610514002" : 4.316, + "77.1264298750799" : 4.323, + "77.25486210815284" : 4.331, + "77.38200085184805" : 4.339, + "77.50689627753798" : 4.347, + "77.62831451891478" : 4.355, + "77.76441908174742" : 4.364, + "77.88281476471917" : 4.372, + "78.01467035572266" : 4.381, + "78.12667312064316" : 4.389, + "78.2608126064634" : 4.399, + "78.3868864158822" : 4.409, + "78.50055697056374" : 4.419, + "78.62896684498547" : 4.432, + "78.758537713074" : 4.446, + "78.88539904387451" : 4.458, + "79.00940509210497" : 4.468, + "79.13310557210215" : 4.477, + "79.26037184291911" : 4.486, + "79.38854570935578" : 4.495, + "79.50092111846321" : 4.503, + "79.625130050751" : 4.512, + "79.76009349427345" : 4.522, + "79.87743003965613" : 4.531, + "80.00559976560184" : 4.541, + "80.12771940614826" : 4.551, + "80.25660626512925" : 4.562, + "80.37875571721062" : 4.573, + "80.50299611722976" : 4.585, + "80.63434325594264" : 4.598, + "80.75210130330565" : 4.61, + "80.87638973301998" : 4.623, + "81.00547616366552" : 4.637, + "81.13028463904516" : 4.651, + "81.25037461092013" : 4.665, + "81.37577186411511" : 4.68, + "81.50772185831264" : 4.696, + "81.62824409744444" : 4.711, + "81.75446116785065" : 4.727, + "81.87908083684225" : 4.743, + "82.00645393232612" : 4.76, + "82.1312582672148" : 4.777, + "82.25276594319647" : 4.794, + "82.38161553775876" : 4.812, + "82.50101570383883" : 4.829, + "82.625033345444" : 4.847, + "82.75381172356168" : 4.866, + "82.87794943940484" : 4.885, + "83.00077544771004" : 4.904, + "83.12551684713604" : 4.924, + "83.25580153586709" : 4.945, + "83.37542363226292" : 4.965, + "83.50303522002643" : 4.987, + "83.62652205068977" : 5.009, + "83.75030782480086" : 5.031, + "83.87669713963125" : 5.054, + "84.00481966397994" : 5.078, + "84.12900955000929" : 5.101, + "84.25407390773061" : 5.125, + "84.37809486172856" : 5.15, + "84.50014328583036" : 5.175, + "84.62562831743382" : 5.201, + "84.75153650721398" : 5.228, + "84.875789328706" : 5.255, + "85.00039243573374" : 5.283, + "85.12594951188001" : 5.311, + "85.25348160221697" : 5.339, + "85.37764664530052" : 5.367, + "85.50187710814133" : 5.397, + "85.62869620593398" : 5.427, + "85.75054505837123" : 5.456, + "85.87613028985606" : 5.487, + "86.00111846254362" : 5.52, + "86.12790692070313" : 5.558, + "86.25108487074041" : 5.592, + "86.37596787495744" : 5.622, + "86.50210296364253" : 5.653, + "86.62562209013541" : 5.685, + "86.7515509823704" : 5.719, + "86.87737304993848" : 5.755, + "87.00030753910698" : 5.792, + "87.12596233084004" : 5.83, + "87.25248331328315" : 5.869, + "87.37527205716965" : 5.907, + "87.50297556383259" : 5.947, + "87.56350291696761" : 5.966, + "87.62773766571343" : 5.986, + "87.68822112964419" : 6.005, + "87.75278960196185" : 6.026, + "87.81290870268762" : 6.045, + "87.87629796317822" : 6.065, + "87.9386827405605" : 6.085, + "88.00240572462293" : 6.106, + "88.06323616169664" : 6.126, + "88.12630991677564" : 6.147, + "88.19036496821353" : 6.169, + "88.25222969993051" : 6.19, + "88.31315619639462" : 6.211, + "88.37679968303051" : 6.233, + "88.43986350093118" : 6.255, + "88.50241224175572" : 6.277, + "88.56378011455679" : 6.299, + "88.62538647963748" : 6.321, + "88.68803376414701" : 6.344, + "88.75088227651746" : 6.368, + "88.81452824744792" : 6.392, + "88.87590274503455" : 6.415, + "88.93772275944909" : 6.439, + "89.00125114043612" : 6.464, + "89.06335602062912" : 6.488, + "89.12687694873243" : 6.513, + "89.18799556397735" : 6.537, + "89.25166969024639" : 6.562, + "89.31372157215502" : 6.587, + "89.37704624098654" : 6.613, + "89.43880497613479" : 6.64, + "89.50057116416677" : 6.669, + "89.56250462803378" : 6.696, + "89.62518420837283" : 6.721, + "89.68966158988924" : 6.746, + "89.75098722968245" : 6.771, + "89.81285858618497" : 6.796, + "89.87502557374245" : 6.822, + "89.93853325227467" : 6.848, + "90.0015664305422" : 6.875, + "90.06283658775648" : 6.903, + "90.12656702470265" : 6.931, + "90.1885427215775" : 6.958, + "90.25216550575857" : 6.987, + "90.31272184233033" : 7.015, + "90.37618563165832" : 7.044, + "90.43870538904608" : 7.072, + "90.5014851692665" : 7.1, + "90.56440324188517" : 7.129, + "90.62700746528866" : 7.158, + "90.68792402457444" : 7.187, + "90.7509066888522" : 7.217, + "90.81286665186137" : 7.247, + "90.87544271992628" : 7.277, + "90.93866139218908" : 7.308, + "91.0002048218071" : 7.338, + "91.06409342550818" : 7.371, + "91.12678211492734" : 7.402, + "91.18847128982736" : 7.433, + "91.25121049323631" : 7.466, + "91.31310089599728" : 7.498, + "91.37542439411327" : 7.529, + "91.43943472824873" : 7.562, + "91.50183109900571" : 7.594, + "91.56289671596627" : 7.627, + "91.6250454853635" : 7.66, + "91.68851341518244" : 7.693, + "91.75129402350106" : 7.727, + "91.81300721324868" : 7.763, + "91.87544084842436" : 7.801, + "91.93837796730148" : 7.835, + "92.0006617167042" : 7.868, + "92.06295291899065" : 7.9, + "92.12556293908148" : 7.932, + "92.18866070900806" : 7.965, + "92.25151501806587" : 8.0, + "92.31315699136888" : 8.035, + "92.37653383038658" : 8.071, + "92.43878114346879" : 8.107, + "92.50123299680472" : 8.143, + "92.56376103517441" : 8.179, + "92.62508833116402" : 8.216, + "92.68893221756267" : 8.253, + "92.75115551579728" : 8.291, + "92.81374483343326" : 8.328, + "92.87529240354225" : 8.366, + "92.93792975087345" : 8.406, + "93.00147386572617" : 8.446, + "93.06348682701972" : 8.486, + "93.12603556784424" : 8.526, + "93.18899338917619" : 8.567, + "93.25135580790726" : 8.607, + "93.3130292489416" : 8.65, + "93.37606491150372" : 8.691, + "93.43848364091191" : 8.732, + "93.50048583692895" : 8.774, + "93.56381630244783" : 8.818, + "93.62623503185603" : 8.864, + "93.68850635978585" : 8.913, + "93.75063939531739" : 8.956, + "93.78196552186674" : 8.978, + "93.81288008361406" : 8.998, + "93.84468567901725" : 9.019, + "93.87561845892483" : 9.041, + "93.90720957689598" : 9.064, + "93.93869138590563" : 9.087, + "93.96960677575116" : 9.11, + "94.00000046373499" : 9.134, + "94.03175554514839" : 9.158, + "94.06287299095304" : 9.182, + "94.09421236707347" : 9.206, + "94.12569169178855" : 9.23, + "94.15728612215247" : 9.255, + "94.18793072388883" : 9.28, + "94.21965433757089" : 9.305, + "94.251129521795" : 9.33, + "94.28174431199639" : 9.356, + "94.31337269438623" : 9.383, + "94.34484787861034" : 9.409, + "94.37502708916215" : 9.435, + "94.40737508888185" : 9.462, + "94.43826397958519" : 9.488, + "94.4688183186185" : 9.515, + "94.50025706652211" : 9.541, + "94.53126189097249" : 9.569, + "94.56275777765143" : 9.597, + "94.5938114598952" : 9.625, + "94.62528664411931" : 9.654, + "94.65705000651465" : 9.68, + "94.68823784066572" : 9.707, + "94.71904474964795" : 9.734, + "94.75012989962308" : 9.761, + "94.7819669627576" : 9.791, + "94.81299911444836" : 9.82, + "94.8443956293441" : 9.85, + "94.87509157316845" : 9.88, + "94.90688557519692" : 9.911, + "94.93758565951222" : 9.941, + "94.96942686313771" : 9.975, + "95.0007347715268" : 10.009, + "95.03158805400784" : 10.042, + "95.0635054426671" : 10.073, + "95.09461957607898" : 10.103, + "95.125425656963" : 10.134, + "95.15670126952256" : 10.167, + "95.18789158796822" : 10.2, + "95.21958373391894" : 10.233, + "95.25076494328447" : 10.267, + "95.28199252614881" : 10.302, + "95.31256342714599" : 10.338, + "95.34410071873458" : 10.375, + "95.37504840440964" : 10.409, + "95.40663455379163" : 10.445, + "95.43786710524513" : 10.483, + "95.4691766698306" : 10.521, + "95.50012518360386" : 10.557, + "95.53173866022622" : 10.595, + "95.56322792211962" : 10.636, + "95.59443231823455" : 10.676, + "95.62581558355922" : 10.715, + "95.65670778665535" : 10.753, + "95.6879949925896" : 10.793, + "95.7189608964249" : 10.834, + "95.75032180309836" : 10.874, + "95.78164792964769" : 10.914, + "95.81266103508001" : 10.956, + "95.84386377499857" : 10.997, + "95.87500523565083" : 11.041, + "95.90700377793301" : 11.085, + "95.93770965893567" : 11.132, + "95.96904323836874" : 11.175, + "96.00061034149229" : 11.219, + "96.03141393808174" : 11.263, + "96.06315659802225" : 11.309, + "96.09445953782216" : 11.356, + "96.12506190655067" : 11.403, + "96.15668946084233" : 11.452, + "96.18760236639326" : 11.498, + "96.21887963514921" : 11.547, + "96.25003268917618" : 11.595, + "96.28150124861473" : 11.645, + "96.31290024780508" : 11.699, + "96.34377092034816" : 11.746, + "96.37527343181264" : 11.796, + "96.4064405635089" : 11.845, + "96.43788345190347" : 11.898, + "96.46910606617865" : 11.95, + "96.50017216989534" : 12.002, + "96.53129789668193" : 12.054, + "96.56269523967588" : 12.108, + "96.59401308524329" : 12.159, + "96.62514957730639" : 12.217, + "96.65638295685808" : 12.272, + "96.68788464022438" : 12.328, + "96.71909566112487" : 12.385, + "96.75024374656267" : 12.442, + "96.78147215752522" : 12.498, + "96.81262355535578" : 12.557, + "96.84384699772917" : 12.618, + "96.87555404944736" : 12.679, + "96.89087800651193" : 12.707, + "96.90658785733451" : 12.736, + "96.92236229981616" : 12.768, + "96.93782123688622" : 12.798, + "96.95355179016363" : 12.827, + "96.96881860845286" : 12.86, + "96.9845715203815" : 12.893, + "97.00019856138476" : 12.923, + "97.01583471146814" : 12.952, + "97.03140378559789" : 12.984, + "97.04711612071506" : 13.018, + "97.06280195669004" : 13.052, + "97.07843893487161" : 13.083, + "97.09393596445855" : 13.116, + "97.10964167479017" : 13.147, + "97.12543267923569" : 13.183, + "97.14108456318475" : 13.216, + "97.15670663559885" : 13.25, + "97.17216391647251" : 13.283, + "97.1879342184632" : 13.317, + "97.203400608417" : 13.352, + "97.21879081333701" : 13.388, + "97.23468036146751" : 13.421, + "97.25022128025869" : 13.455, + "97.26584832126196" : 13.489, + "97.28128572777898" : 13.524, + "97.29708087271545" : 13.56, + "97.31295054648932" : 13.595, + "97.32844591987988" : 13.628, + "97.34401499400963" : 13.664, + "97.35951202359657" : 13.699, + "97.37532538669329" : 13.734, + "97.39063360989218" : 13.771, + "97.40648506550579" : 13.808, + "97.42201439092227" : 13.846, + "97.43780539536777" : 13.883, + "97.45343823305839" : 13.918, + "97.46890627920858" : 13.954, + "97.48473040758182" : 13.993, + "97.50032515275555" : 14.032, + "97.51594805326785" : 14.07, + "97.53125793266312" : 14.104, + "97.54724602447861" : 14.142, + "97.56290039272226" : 14.18, + "97.57826989518745" : 14.217, + "97.59388451471781" : 14.254, + "97.60949168136445" : 14.293, + "97.62508477034179" : 14.334, + "97.64093042926805" : 14.371, + "97.65647383235381" : 14.416, + "97.67188970831782" : 14.461, + "97.68777925644831" : 14.503, + "97.7031371655388" : 14.543, + "97.71897371538493" : 14.586, + "97.73475726694672" : 14.629, + "97.75001994474498" : 14.67, + "97.76570826501454" : 14.709, + "97.78153487768236" : 14.752, + "97.79720497979167" : 14.794, + "97.81264487060328" : 14.834, + "97.82824955295533" : 14.874, + "97.84389729641343" : 14.914, + "97.85953179030042" : 14.958, + "97.87528304603266" : 15.002, + "97.89077593512864" : 15.044, + "97.90635743073129" : 15.089, + "97.92204326670627" : 15.137, + "97.93781605299152" : 15.179, + "97.95343564111106" : 15.221, + "97.96883661130758" : 15.263, + "97.98445619942711" : 15.307, + "98.00025465675637" : 15.356, + "98.01567632940773" : 15.404, + "98.03133980673148" : 15.45, + "98.04708609387457" : 15.499, + "98.06256159290848" : 15.548, + "98.07834928496122" : 15.596, + "98.09396887308075" : 15.645, + "98.10960171077137" : 15.695, + "98.12528671864816" : 15.745, + "98.14091127535684" : 15.795, + "98.15630313647326" : 15.842, + "98.17187800729035" : 15.893, + "98.18766652744128" : 15.944, + "98.20313374549326" : 15.998, + "98.2188121285845" : 16.051, + "98.23457414959326" : 16.101, + "98.25012500556275" : 16.153, + "98.2656940796925" : 16.203, + "98.28143374205003" : 16.26, + "98.29693574022613" : 16.316, + "98.31268533976198" : 16.372, + "98.32829830309596" : 16.429, + "98.34400401342758" : 16.485, + "98.35953499504043" : 16.542, + "98.3752953598528" : 16.599, + "98.39085615300061" : 16.658, + "98.40656931621596" : 16.719, + "98.4219586930378" : 16.773, + "98.43755426630972" : 16.834, + "98.44540215288637" : 16.865, + "98.45334113026426" : 16.897, + "98.46109875413786" : 16.928, + "98.46893173494703" : 16.957, + "98.47669929599894" : 16.991, + "98.484450295087" : 17.021, + "98.49237767909018" : 17.054, + "98.5000475245553" : 17.086, + "98.50786311530243" : 17.117, + "98.51582113893876" : 17.154, + "98.52356799753585" : 17.186, + "98.53133224619498" : 17.217, + "98.53911057252341" : 17.248, + "98.54708184573084" : 17.278, + "98.55478895561465" : 17.312, + "98.56250517457859" : 17.346, + "98.57042841809081" : 17.384, + "98.57830446000602" : 17.42, + "98.58609189541458" : 17.455, + "98.59393398530388" : 17.491, + "98.60181996439741" : 17.527, + "98.6094442644619" : 17.56, + "98.61720023213911" : 17.596, + "98.62508869552723" : 17.633, + "98.63305003155634" : 17.67, + "98.64063706720214" : 17.702, + "98.64856445120533" : 17.742, + "98.65632373127531" : 17.78, + "98.66419480460137" : 17.818, + "98.67200045817017" : 17.856, + "98.67970922425036" : 17.891, + "98.68750080014988" : 17.931, + "98.6953155627988" : 17.973, + "98.70332244422853" : 18.011, + "98.71114714405579" : 18.047, + "98.71886005062694" : 18.084, + "98.72664417364271" : 18.123, + "98.73450282549588" : 18.158, + "98.74221656016523" : 18.196, + "98.75003546330512" : 18.238, + "98.75798272166494" : 18.277, + "98.76575442320782" : 18.318, + "98.77358574782062" : 18.356, + "98.78129617009719" : 18.398, + "98.78915896244132" : 18.441, + "98.79702672337461" : 18.488, + "98.80469242834876" : 18.526, + "98.8126752949309" : 18.565, + "98.82039317009122" : 18.608, + "98.82829571114861" : 18.649, + "98.83595479133723" : 18.695, + "98.8438482233145" : 18.735, + "98.8517499362737" : 18.779, + "98.85952163781658" : 18.83, + "98.8673248070908" : 18.876, + "98.8750095583234" : 18.922, + "98.88283591434703" : 18.969, + "98.89066641086161" : 19.023, + "98.89850353216175" : 19.072, + "98.90637874597877" : 19.119, + "98.91408171537162" : 19.161, + "98.92199336550914" : 19.207, + "98.92982303392554" : 19.255, + "98.93762620319976" : 19.302, + "98.94542523198301" : 19.349, + "98.95318782444576" : 19.398, + "98.96104647629893" : 19.456, + "98.96887034802798" : 19.51, + "98.97667434540038" : 19.563, + "98.98442700068482" : 19.611, + "98.99232374505486" : 19.662, + "99.00007888463388" : 19.712, + "99.0078936472828" : 19.769, + "99.0156744579058" : 19.818, + "99.02345858092158" : 19.874, + "99.03138596492478" : 19.928, + "99.03911377726341" : 19.989, + "99.04696414813465" : 20.047, + "99.05469527286606" : 20.106, + "99.06261106349454" : 20.167, + "99.07037199976091" : 20.217, + "99.07829110278217" : 20.275, + "99.08596674493464" : 20.334, + "99.09381960010045" : 20.399, + "99.10165754949878" : 20.459, + "99.10941682956876" : 20.528, + "99.11730115246591" : 20.591, + "99.12500826234972" : 20.648, + "99.13290500671977" : 20.711, + "99.14071894127049" : 20.775, + "99.14845586268926" : 20.835, + "99.15630457736411" : 20.9, + "99.16415743252992" : 20.965, + "99.1719167125999" : 21.035, + "99.17977370825666" : 21.107, + "99.18760668906584" : 21.173, + "99.19535437576111" : 21.25, + "99.20320143423957" : 21.309, + "99.21097396388065" : 21.38, + "99.21879783560969" : 21.443, + "99.22266008558262" : 21.483, + "99.22662336353513" : 21.521, + "99.23057918860388" : 21.555, + "99.23440997084548" : 21.591, + "99.23831114143348" : 21.627, + "99.24228187226973" : 21.666, + "99.24620208911618" : 21.703, + "99.2500792448566" : 21.74, + "99.253956400597" : 21.777, + "99.25781533817717" : 21.823, + "99.26174632030013" : 21.86, + "99.26566570904839" : 21.9, + "99.26954783337797" : 21.941, + "99.27351193942866" : 21.98, + "99.27741476621306" : 22.02, + "99.2812645947131" : 22.06, + "99.28515831241737" : 22.105, + "99.2891414647265" : 22.141, + "99.29298880893197" : 22.184, + "99.29690736958203" : 22.223, + "99.30078618151883" : 22.264, + "99.30473455370385" : 22.313, + "99.30863075570271" : 22.366, + "99.31255262874555" : 22.408, + "99.3164844389667" : 22.45, + "99.32031356501192" : 22.487, + "99.32422136038547" : 22.526, + "99.32812584336625" : 22.578, + "99.33208001223863" : 22.622, + "99.33600105718328" : 22.668, + "99.33986579145079" : 22.719, + "99.34381085124303" : 22.769, + "99.34766316403766" : 22.818, + "99.35161898910641" : 22.86, + "99.35553340926552" : 22.914, + "99.35942795506799" : 22.965, + "99.36337218676205" : 23.012, + "99.36725099869884" : 23.056, + "99.3711231858501" : 23.101, + "99.37500696637605" : 23.15, + "99.37898266580144" : 23.201, + "99.3828300100069" : 23.253, + "99.38673614918407" : 23.302, + "99.3906828651727" : 23.346, + "99.39454263085106" : 23.406, + "99.39849597162525" : 23.467, + "99.40236153399096" : 23.525, + "99.40626436077535" : 23.578, + "99.41017215614892" : 23.623, + "99.41412052833394" : 23.68, + "99.41802997990388" : 23.737, + "99.42191624472441" : 23.802, + "99.42581410291966" : 23.865, + "99.42969788344561" : 23.922, + "99.43361975648845" : 23.983, + "99.43751927088007" : 24.029, + "99.44147509594885" : 24.085, + "99.44532658064526" : 24.134, + "99.44927578092847" : 24.194, + "99.45314382758876" : 24.253, + "99.4570425138822" : 24.306, + "99.46099419845999" : 24.365, + "99.4648713542004" : 24.42, + "99.46880150822517" : 24.482, + "99.47265961770714" : 24.541, + "99.47659391222288" : 24.602, + "99.48048928612354" : 24.666, + "99.4843846600242" : 24.727, + "99.48833137601284" : 24.796, + "99.49223420279723" : 24.858, + "99.49610390565391" : 24.93, + "99.50001335722385" : 24.995, + "99.50392694928476" : 25.067, + "99.50785461901496" : 25.145, + "99.51173011855899" : 25.215, + "99.51563294534338" : 25.296, + "99.51955150599345" : 25.371, + "99.5234617856616" : 25.437, + "99.52740353306106" : 25.505, + "99.5312649549358" : 25.574, + "99.53518848417504" : 25.656, + "99.53909793574498" : 25.735, + "99.54299993443118" : 25.82, + "99.5469019331174" : 25.89, + "99.55078405744696" : 25.963, + "99.5547299453374" : 26.059, + "99.55861621015794" : 26.128, + "99.56253228651343" : 26.215, + "99.56641027035204" : 26.298, + "99.57031309713643" : 26.398, + "99.57425567263411" : 26.488, + "99.57814442174922" : 26.568, + "99.58204559233722" : 26.645, + "99.58597160587104" : 26.729, + "99.58984379302228" : 26.816, + "99.59375076029765" : 26.908, + "99.59766683665315" : 27.006, + "99.60157131963393" : 27.108, + "99.60547166212375" : 27.198, + "99.60940347234491" : 27.287, + "99.6113321130368" : 27.332, + "99.61329139336183" : 27.383, + "99.6152457050977" : 27.437, + "99.61722651597576" : 27.493, + "99.61916426574777" : 27.537, + "99.62112023368003" : 27.597, + "99.6230646082376" : 27.656, + "99.62501809187528" : 27.709, + "99.62695832594187" : 27.755, + "99.62893830872173" : 27.81, + "99.63087108990459" : 27.869, + "99.63281298016756" : 27.921, + "99.63477888527814" : 27.977, + "99.63672574413027" : 28.043, + "99.63868585255351" : 28.096, + "99.64063353950384" : 28.164, + "99.64258371074875" : 28.229, + "99.64455624064487" : 28.278, + "99.6464923342205" : 28.33, + "99.64846900460759" : 28.377, + "99.6504075824778" : 28.441, + "99.65236106611547" : 28.511, + "99.65430130018207" : 28.575, + "99.65625561191794" : 28.643, + "99.6582124079484" : 28.715, + "99.66017086017524" : 28.783, + "99.6621276562057" : 28.852, + "99.66406789027229" : 28.909, + "99.6660296548919" : 28.965, + "99.66798976331513" : 29.028, + "99.66995980891667" : 29.087, + "99.67187851243024" : 29.16, + "99.67385187042456" : 29.237, + "99.67582191602611" : 29.307, + "99.67774641622702" : 29.367, + "99.67970072796291" : 29.431, + "99.68164179012768" : 29.496, + "99.68362260100575" : 29.566, + "99.6855686317597" : 29.631, + "99.68750141294254" : 29.715, + "99.6894565527766" : 29.785, + "99.69141666119984" : 29.859, + "99.69337014483752" : 29.93, + "99.69531948798424" : 29.988, + "99.69728290880023" : 30.045, + "99.69922562716141" : 30.116, + "99.70119236037019" : 30.204, + "99.70313176633859" : 30.27, + "99.70509932764554" : 30.344, + "99.7070445303013" : 30.426, + "99.7089947015462" : 30.505, + "99.7109473570857" : 30.596, + "99.71290829360711" : 30.685, + "99.71485763675383" : 30.772, + "99.71680118321319" : 30.862, + "99.71876874452016" : 30.943, + "99.72070400999759" : 31.023, + "99.72267571179553" : 31.095, + "99.72461925825489" : 31.192, + "99.72656694520522" : 31.29, + "99.72853533461038" : 31.366, + "99.73048302156072" : 31.454, + "99.73245141096587" : 31.54, + "99.73438916073789" : 31.631, + "99.73634016008099" : 31.721, + "99.7382895032277" : 31.823, + "99.74023636207984" : 31.927, + "99.7421923300121" : 32.017, + "99.74414829794436" : 32.118, + "99.74611171876036" : 32.212, + "99.74805526521973" : 32.32, + "99.75001620174115" : 32.423, + "99.7519738258698" : 32.534, + "99.7539248252129" : 32.634, + "99.755875824556" : 32.723, + "99.75781357432801" : 32.84, + "99.75978610422413" : 32.968, + "99.76172302589796" : 33.069, + "99.7636814781248" : 33.199, + "99.76562750887875" : 33.333, + "99.76759258589114" : 33.457, + "99.7695361323505" : 33.56, + "99.77150038126469" : 33.676, + "99.7734381310367" : 33.798, + "99.77539409896896" : 33.951, + "99.77735089499942" : 34.083, + "99.77929692575336" : 34.219, + "99.78125206558742" : 34.379, + "99.78322293928717" : 34.505, + "99.7851582047646" : 34.613, + "99.78711500079505" : 34.76, + "99.78907759351286" : 34.92, + "99.79102113997223" : 35.065, + "99.79298373269003" : 35.212, + "99.79493307583675" : 35.397, + "99.79688490327804" : 35.566, + "99.79883590262115" : 35.706, + "99.80078524576787" : 35.874, + "99.80273790130735" : 36.058, + "99.80468807255227" : 36.254, + "99.80566854081297" : 36.357, + "99.80665729005563" : 36.47, + "99.80762699303982" : 36.575, + "99.8085991803186" : 36.67, + "99.80957550808834" : 36.735, + "99.81055846064363" : 36.847, + "99.81152733552963" : 36.95, + "99.81250283520119" : 37.069, + "99.81348081916732" : 37.176, + "99.81445963123164" : 37.324, + "99.81543264660861" : 37.413, + "99.81640649008378" : 37.54, + "99.81738530214811" : 37.668, + "99.81835997372146" : 37.772, + "99.81934127008037" : 37.87, + "99.82032339453747" : 38.001, + "99.82129226942347" : 38.116, + "99.82226859719322" : 38.292, + "99.82324823735573" : 38.46, + "99.8242204246345" : 38.565, + "99.82519923669884" : 38.722, + "99.82617556446858" : 38.865, + "99.82715106414012" : 38.978, + "99.8281356728918" : 39.093, + "99.82910454777782" : 39.233, + "99.83008004744936" : 39.35, + "99.83105968761188" : 39.511, + "99.83203601538163" : 39.635, + "99.83301151505317" : 39.851, + "99.8339919833139" : 39.985, + "99.83496168629809" : 40.107, + "99.83594298265699" : 40.297, + "99.83691682613215" : 40.399, + "99.83789149770551" : 40.573, + "99.83886865357346" : 40.799, + "99.83984498134319" : 40.954, + "99.84082048101475" : 41.1, + "99.84180343357004" : 41.246, + "99.84277562084881" : 41.396, + "99.84375112052037" : 41.569, + "99.8447291044865" : 41.767, + "99.84571371323817" : 41.902, + "99.8466801038296" : 42.066, + "99.84765808779574" : 42.233, + "99.84863607176186" : 42.402, + "99.84961488382619" : 42.542, + "99.85058872730136" : 42.81, + "99.85156339887472" : 43.027, + "99.85254138284084" : 43.174, + "99.85351936680698" : 43.422, + "99.85449486647852" : 43.586, + "99.85547367854285" : 43.866, + "99.85644752201802" : 44.055, + "99.85742633408233" : 44.294, + "99.85839852136111" : 44.547, + "99.85937650532725" : 44.715, + "99.86035945788254" : 44.997, + "99.86132998896493" : 45.272, + "99.86230548863648" : 45.505, + "99.86328844119177" : 45.673, + "99.86425897227416" : 45.957, + "99.8652353000439" : 46.214, + "99.86621576830461" : 46.456, + "99.86719043987797" : 46.707, + "99.86816759574592" : 47.037, + "99.86914640781023" : 47.312, + "99.87012190748179" : 47.563, + "99.87109823525154" : 47.909, + "99.87207125062851" : 48.2, + "99.87305006269283" : 48.575, + "99.87402390616799" : 48.892, + "99.87500023393774" : 49.28, + "99.87598484268942" : 49.67, + "99.87695620187" : 49.992, + "99.87793252963975" : 50.495, + "99.87890802931129" : 50.965, + "99.87988435708104" : 51.408, + "99.88086482534175" : 51.956, + "99.8818403250133" : 52.401, + "99.88281499658666" : 52.731, + "99.88378966816002" : 53.34, + "99.88476848022434" : 53.663, + "99.8857431517977" : 54.064, + "99.88672030766564" : 54.548, + "99.88769994782815" : 55.113, + "99.88867296320512" : 55.653, + "99.88964846287668" : 56.102, + "99.89062644684282" : 56.817, + "99.89160194651436" : 57.211, + "99.89258158667688" : 57.898, + "99.89355791444663" : 58.326, + "99.89453258601998" : 58.984, + "99.89550891378973" : 59.424, + "99.89648524155947" : 60.067, + "99.8974632255256" : 60.642, + "99.89843872519715" : 61.193, + "99.8994150529669" : 61.892, + "99.90039552122761" : 62.601, + "99.90136853660458" : 63.459, + "99.90234403627613" : 64.18, + "99.90283344230829" : 64.617, + "99.90332036404588" : 64.967, + "99.90380977007804" : 65.421, + "99.90430083230659" : 65.838, + "99.90478609784779" : 66.199, + "99.90527467578175" : 66.604, + "99.90576242561752" : 67.137, + "99.90625017545331" : 67.593, + "99.90674040958366" : 67.999, + "99.90722733132124" : 68.337, + "99.90771590925522" : 68.891, + "99.90820365909099" : 69.429, + "99.90869140892676" : 69.975, + "99.90917998686074" : 70.573, + "99.90967022099109" : 70.948, + "99.91015714272866" : 71.629, + "99.91064489256445" : 72.028, + "99.9111351266948" : 72.598, + "99.91162122033418" : 73.156, + "99.91211559495551" : 73.827, + "99.91259837620213" : 74.35, + "99.9130861260379" : 74.903, + "99.91357470397188" : 75.35, + "99.91406328190584" : 75.841, + "99.91455103174161" : 76.096, + "99.91503960967559" : 76.717, + "99.91552735951136" : 77.108, + "99.91601593744532" : 77.797, + "99.91650699967389" : 78.18, + "99.91699226521507" : 78.633, + "99.91748167124723" : 79.121, + "99.91796942108301" : 79.564, + "99.91845799901698" : 80.085, + "99.91894823314733" : 80.598, + "99.91943432678673" : 80.969, + "99.91992373281889" : 81.457, + "99.92041148265466" : 81.868, + "99.92090088868683" : 82.489, + "99.9213878104244" : 82.991, + "99.92187970075115" : 83.487, + "99.92236496629235" : 84.096, + "99.92285188802992" : 84.748, + "99.92334295025847" : 85.206, + "99.92382987199606" : 85.783, + "99.92431679373364" : 86.329, + "99.92480537166762" : 87.128, + "99.92529312150339" : 87.513, + "99.92578169943735" : 88.246, + "99.92627027737133" : 88.555, + "99.92675968340349" : 89.002, + "99.92725157373023" : 89.351, + "99.92773518307504" : 89.848, + "99.92822376100901" : 90.379, + "99.92871151084478" : 90.726, + "99.92919926068056" : 91.29, + "99.92968783861453" : 91.877, + "99.93017641654849" : 92.547, + "99.93066416638428" : 93.424, + "99.93115357241643" : 94.067, + "99.9316421503504" : 94.746, + "99.93213155638256" : 95.492, + "99.93261847812015" : 95.996, + "99.93310622795592" : 96.687, + "99.9335939777917" : 97.144, + "99.93408255572567" : 97.78, + "99.93457444605241" : 98.311, + "99.93505971159361" : 99.157, + "99.93554994572396" : 99.411, + "99.93603521126515" : 100.239, + "99.93652792969009" : 100.744, + "99.93701319523129" : 101.383, + "99.93750094506706" : 101.932, + "99.93798952300104" : 102.419, + "99.93848058522958" : 103.035, + "99.93896502267258" : 103.656, + "99.93945608490114" : 104.303, + "99.93994300663871" : 104.796, + "99.94043075647448" : 105.653, + "99.94091933440846" : 106.191, + "99.9414112247352" : 107.087, + "99.94189483408002" : 107.959, + "99.94238424011218" : 108.311, + "99.94287116184975" : 109.198, + "99.94335973978373" : 109.565, + "99.9438483177177" : 110.523, + "99.94433606755346" : 111.105, + "99.94482630168382" : 112.0, + "99.9453148796178" : 112.922, + "99.94580097325718" : 113.88, + "99.94629037928934" : 114.472, + "99.9467806134197" : 115.14, + "99.94726587896089" : 116.113, + "99.94775445689487" : 117.089, + "99.94824303482883" : 118.393, + "99.9487316127628" : 119.701, + "99.94921936259858" : 121.246, + "99.94970711243435" : 122.782, + "99.95019651846651" : 124.1, + "99.9506842683023" : 125.512, + "99.95117201813807" : 126.293, + "99.95141630710505" : 126.818, + "99.95166059607203" : 127.079, + "99.95190571313721" : 127.399, + "99.9521500021042" : 127.906, + "99.9523926348748" : 128.394, + "99.95263692384178" : 128.77, + "99.95288204090696" : 128.975, + "99.95312964226672" : 129.538, + "99.95336979074273" : 130.066, + "99.95361407970972" : 131.024, + "99.9538583686767" : 132.129, + "99.9541018295455" : 133.016, + "99.95434611851248" : 133.633, + "99.95459040747946" : 134.144, + "99.95483552454463" : 134.778, + "99.95507815731524" : 135.178, + "99.955325758675" : 135.836, + "99.9555667352492" : 136.128, + "99.95581102421619" : 136.575, + "99.95605696937956" : 137.113, + "99.95630125834654" : 137.403, + "99.95654389111715" : 137.669, + "99.95679066437872" : 138.205, + "99.95703246905111" : 138.482, + "99.9572759299199" : 138.998, + "99.95752021888688" : 139.989, + "99.95776367975569" : 140.605, + "99.95800962491906" : 141.364, + "99.95825225768965" : 141.805, + "99.95849654665663" : 142.324, + "99.95874083562362" : 142.878, + "99.9589851245906" : 143.417, + "99.9592285854594" : 144.043, + "99.95947287442638" : 144.689, + "99.95971716339336" : 145.122, + "99.95996228045854" : 145.394, + "99.96020656942552" : 145.899, + "99.9604508583925" : 146.45, + "99.96069349116311" : 146.976, + "99.96093943632648" : 147.383, + "99.96118289719527" : 147.628, + "99.96142718616225" : 148.253, + "99.96167230322743" : 148.59, + "99.96191410789983" : 149.102, + "99.96215839686683" : 149.426, + "99.962403513932" : 149.995, + "99.96264697480079" : 150.501, + "99.96289126376777" : 151.089, + "99.96313555273476" : 151.985, + "99.96337984170174" : 152.686, + "99.96362330257054" : 153.031, + "99.96386759153752" : 153.558, + "99.9641127086027" : 153.855, + "99.96435616947149" : 154.029, + "99.96459963034027" : 154.339, + "99.96484391930727" : 154.851, + "99.96508820827425" : 155.023, + "99.96533249724123" : 155.339, + "99.96557761430641" : 155.791, + "99.9658210751752" : 156.259, + "99.96606784843677" : 156.757, + "99.96630965310916" : 157.211, + "99.96655311397797" : 157.833, + "99.9668015434359" : 158.283, + "99.96704252001012" : 158.912, + "99.96728680897711" : 159.528, + "99.9675302698459" : 160.465, + "99.9677737307147" : 160.801, + "99.96801801968168" : 161.726, + "99.96826313674686" : 162.156, + "99.96850742571384" : 162.985, + "99.96875005848443" : 163.666, + "99.96899517554961" : 164.04, + "99.96923946451659" : 164.754, + "99.96948375348359" : 164.979, + "99.96972887054876" : 165.37, + "99.96997233141755" : 165.958, + "99.97021496418814" : 166.188, + "99.97045925315513" : 166.694, + "99.97070354212212" : 167.27, + "99.9709486591873" : 167.61, + "99.97119294815428" : 168.358, + "99.97143558092488" : 169.031, + "99.97167986989186" : 170.237, + "99.97192498695703" : 171.679, + "99.97216844782584" : 172.433, + "99.97241356489101" : 173.179, + "99.972657853858" : 174.051, + "99.97290131472678" : 174.229, + "99.97314477559557" : 175.121, + "99.97338906456255" : 175.362, + "99.97363666592231" : 176.374, + "99.97387764249653" : 176.827, + "99.97412110336532" : 177.475, + "99.9743662204305" : 177.664, + "99.97461133749567" : 178.541, + "99.97485397026627" : 178.708, + "99.97509825923326" : 179.095, + "99.97534254820025" : 179.744, + "99.97558683716723" : 180.306, + "99.97570856760163" : 180.846, + "99.9758327823306" : 181.155, + "99.9759536846668" : 181.731, + "99.976074587003" : 181.897, + "99.9761963174374" : 182.228, + "99.97632136026456" : 182.33, + "99.97644060640438" : 182.644, + "99.97656399303517" : 182.823, + "99.97668489537136" : 183.044, + "99.97680745390396" : 183.304, + "99.97693001243654" : 183.461, + "99.97705339906733" : 183.717, + "99.97717347330534" : 184.035, + "99.97729603183792" : 184.225, + "99.97741776227232" : 184.407, + "99.97753949270671" : 184.515, + "99.9776628793375" : 184.758, + "99.97778460977189" : 185.117, + "99.9779055121081" : 185.326, + "99.97802889873888" : 185.355, + "99.97814980107508" : 185.49, + "99.97827318770587" : 185.783, + "99.97839409004206" : 186.147, + "99.97851582047646" : 186.204, + "99.97863920710724" : 186.274, + "99.97876010944344" : 186.443, + "99.97888183987784" : 186.772, + "99.97900439841042" : 186.94, + "99.97912695694302" : 187.147, + "99.9792486873774" : 187.266, + "99.97937124591" : 187.353, + "99.9794938044426" : 187.86, + "99.97961636297518" : 188.205, + "99.97973643721319" : 188.351, + "99.97985982384397" : 188.935, + "99.97998072618017" : 189.143, + "99.98010411281095" : 189.333, + "99.98022501514716" : 189.486, + "99.98034674558156" : 190.024, + "99.98047013221233" : 190.125, + "99.98059186264673" : 190.323, + "99.9807160773757" : 190.548, + "99.98083532351552" : 190.757, + "99.98095953824449" : 191.23, + "99.9810796124825" : 191.529, + "99.98120382721149" : 191.734, + "99.98132472954768" : 192.3, + "99.98144811617847" : 192.596, + "99.98156819041648" : 192.829, + "99.98168992085087" : 193.429, + "99.98181330748166" : 193.762, + "99.98193503791605" : 194.002, + "99.98205594025225" : 194.235, + "99.98217932688303" : 194.554, + "99.98230022921923" : 194.877, + "99.9824252720464" : 195.068, + "99.98254451818622" : 195.227, + "99.98266707671881" : 195.333, + "99.9827896352514" : 195.952, + "99.98291219378399" : 196.149, + "99.98303475231657" : 196.311, + "99.98315731084917" : 196.54, + "99.98327655698898" : 196.707, + "99.98340077171795" : 197.089, + "99.98352084595597" : 197.478, + "99.98364340448856" : 197.631, + "99.98376596302114" : 197.793, + "99.98388852155374" : 197.945, + "99.98401108008632" : 198.262, + "99.98413115432433" : 198.637, + "99.9842561971515" : 198.739, + "99.98437544329131" : 198.842, + "99.9844988299221" : 198.946, + "99.98462138845468" : 199.031, + "99.98474229079089" : 199.358, + "99.98486650551986" : 199.71, + "99.98498575165968" : 199.833, + "99.98511079448684" : 199.988, + "99.98523252492124" : 200.049, + "99.98535259915926" : 200.597, + "99.98547847008462" : 200.813, + "99.985600200519" : 200.984, + "99.98571779046245" : 201.109, + "99.98584034899503" : 201.42, + "99.98596290752762" : 201.682, + "99.98608712225659" : 202.078, + "99.98620636839641" : 202.256, + "99.98632975502719" : 202.362, + "99.98645148546159" : 202.687, + "99.98657238779779" : 202.905, + "99.98669494633037" : 203.085, + "99.98681667676478" : 203.469, + "99.98693923529736" : 203.877, + "99.98706345002634" : 204.141, + "99.98718435236253" : 204.441, + "99.98730525469874" : 204.667, + "99.98742698513314" : 204.849, + "99.98754954366572" : 204.997, + "99.98767293029651" : 205.519, + "99.98779300453451" : 205.747, + "99.98785676809538" : 205.917, + "99.9879155630671" : 205.934, + "99.98797767043159" : 205.992, + "99.9880381215997" : 206.111, + "99.98810022896419" : 206.51, + "99.98816233632867" : 206.798, + "99.9882203032022" : 206.891, + "99.98828158246849" : 206.924, + "99.98834286173478" : 207.173, + "99.98840662529565" : 207.544, + "99.98846542026737" : 207.586, + "99.98852752763186" : 207.881, + "99.98858797879996" : 207.993, + "99.98864760186987" : 208.24, + "99.98870970923436" : 208.508, + "99.98877016040245" : 208.62, + "99.98883143966874" : 208.667, + "99.98889189083685" : 208.951, + "99.98895317010314" : 209.068, + "99.98901444936944" : 209.112, + "99.98907490053755" : 209.15, + "99.98913617980384" : 209.268, + "99.98919745907013" : 209.348, + "99.989261222631" : 209.37, + "99.98932001760272" : 209.392, + "99.9893829530654" : 209.49, + "99.98944091993891" : 209.821, + "99.98950302730341" : 209.885, + "99.9895643065697" : 210.093, + "99.98962724203238" : 210.131, + "99.98968686510229" : 210.175, + "99.98974897246678" : 210.213, + "99.98980776743849" : 210.396, + "99.98986904670478" : 210.472, + "99.9899294978729" : 210.811, + "99.98999491763016" : 210.827, + "99.99005205640547" : 210.973, + "99.99011913235913" : 211.245, + "99.99017461493807" : 211.269, + "99.99023589420436" : 211.596, + "99.99029634537246" : 211.71, + "99.99035762463876" : 211.79, + "99.99041807580686" : 211.906, + "99.99047852697495" : 212.06, + "99.9905456029286" : 212.166, + "99.99060356980213" : 212.31, + "99.99066236477384" : 212.53, + "99.99072447213833" : 212.738, + "99.99078492330644" : 212.778, + "99.99084703067092" : 212.882, + "99.99090582564263" : 212.907, + "99.99096793300713" : 213.168, + "99.99103418086257" : 213.228, + "99.99109049153971" : 213.747, + "99.99115011460962" : 213.817, + "99.99121139387591" : 213.991, + "99.9912735012404" : 214.108, + "99.9913339524085" : 214.26, + "99.9913944035766" : 214.314, + "99.9914556828429" : 214.923, + "99.99151861830558" : 215.2, + "99.99157824137549" : 215.272, + "99.99163952064178" : 215.346, + "99.99169997180988" : 215.399, + "99.99176042297798" : 215.768, + "99.99182170224428" : 216.001, + "99.99188380960877" : 216.15, + "99.99194426077686" : 216.436, + "99.99200471194497" : 216.647, + "99.99206930360404" : 216.804, + "99.99212727047755" : 217.217, + "99.99218937784204" : 217.426, + "99.99224900091195" : 217.46, + "99.99231193637463" : 217.77, + "99.99237321564092" : 218.529, + "99.99243532300541" : 218.541, + "99.99249328987894" : 218.56, + "99.99255456914523" : 218.844, + "99.9926175046079" : 218.861, + "99.99267629957963" : 219.624, + "99.99273840694411" : 219.797, + "99.99279803001401" : 219.946, + "99.99285930928032" : 220.014, + "99.99292058854661" : 220.261, + "99.9929810397147" : 220.832, + "99.99304231898101" : 220.884, + "99.9931035982473" : 221.087, + "99.99316487751359" : 221.248, + "99.99322615677988" : 221.344, + "99.993286607948" : 221.612, + "99.99334788721428" : 221.645, + "99.99340833838238" : 221.927, + "99.99347044574688" : 221.999, + "99.99353089691498" : 222.414, + "99.99359217618127" : 222.444, + "99.99365262734938" : 222.991, + "99.99371390661567" : 223.007, + "99.99377601398015" : 223.504, + "99.99383563705005" : 223.727, + "99.99389774441455" : 223.88, + "99.99392838404769" : 223.933, + "99.99395902368084" : 223.952, + "99.99399049141218" : 224.076, + "99.99401947484894" : 224.167, + "99.9940492863839" : 224.198, + "99.99408075411525" : 224.806, + "99.99411056565019" : 224.855, + "99.99414120528334" : 224.953, + "99.99417598540745" : 224.972, + "99.99420248454963" : 224.994, + "99.99423229608459" : 225.031, + "99.99426376381592" : 225.149, + "99.99429440344908" : 225.248, + "99.99432421498403" : 225.672, + "99.99435485461717" : 225.696, + "99.99438549425032" : 225.887, + "99.99441530578528" : 225.957, + "99.99444594541842" : 226.031, + "99.99447989744435" : 226.036, + "99.99450805278292" : 226.249, + "99.99453869241606" : 226.266, + "99.99456933204921" : 226.352, + "99.99459914358417" : 226.405, + "99.99462895511911" : 226.42, + "99.99466207904685" : 226.766, + "99.99469189058179" : 226.777, + "99.99472087401855" : 227.098, + "99.9947523417499" : 227.115, + "99.99478298138304" : 227.15, + "99.994812792918" : 227.32, + "99.99484343255115" : 227.33, + "99.99487572838068" : 227.34, + "99.99490388371925" : 227.422, + "99.9949353514506" : 227.442, + "99.99496599108373" : 227.495, + "99.99499745881508" : 227.674, + "99.99502644225184" : 227.847, + "99.99505790998317" : 227.861, + "99.9950910339109" : 227.87, + "99.99511753305309" : 228.227, + "99.99514817268623" : 228.252, + "99.99517881231938" : 228.349, + "99.99521110814891" : 228.362, + "99.99524009158567" : 228.417, + "99.99526990312063" : 228.431, + "99.99530054275377" : 228.506, + "99.99533118238692" : 228.523, + "99.99536265011827" : 229.423, + "99.99539577404599" : 229.436, + "99.99542392938456" : 229.442, + "99.99545374091952" : 229.599, + "99.99548438055265" : 229.618, + "99.99551419208761" : 229.911, + "99.99554483172076" : 230.254, + "99.9955754713539" : 230.272, + "99.99560611098705" : 230.525, + "99.9956367506202" : 230.978, + "99.99566821835154" : 231.006, + "99.9956972017883" : 231.343, + "99.99572866951964" : 231.36, + "99.99576096534918" : 231.536, + "99.99578912068775" : 232.602, + "99.99581976032088" : 232.618, + "99.99585039995404" : 232.631, + "99.995880211489" : 233.265, + "99.99591085112213" : 233.722, + "99.99594231885348" : 234.146, + "99.99597295848663" : 234.163, + "99.99600525431616" : 234.295, + "99.99603340965473" : 234.308, + "99.99606404928788" : 234.336, + "99.99609386082282" : 234.796, + "99.99612532855417" : 235.032, + "99.99615514008913" : 235.056, + "99.99618577972227" : 235.251, + "99.99621724745361" : 235.28, + "99.99624705898856" : 235.377, + "99.99627769862171" : 235.411, + "99.99630999445125" : 235.487, + "99.9963381497898" : 235.504, + "99.99636961752115" : 236.13, + "99.99639942905611" : 236.57, + "99.99643172488564" : 236.582, + "99.99646236451879" : 237.742, + "99.99649051985736" : 237.957, + "99.9965219875887" : 238.809, + "99.99655262722185" : 238.83, + "99.9965824387568" : 238.915, + "99.99661307838994" : 239.029, + "99.9966437180231" : 239.048, + "99.99667518575443" : 239.242, + "99.99670582538758" : 239.417, + "99.99673480882434" : 239.434, + "99.99676544845748" : 239.467, + "99.99679608809063" : 239.669, + "99.99682755582198" : 239.688, + "99.99685736735692" : 239.896, + "99.99688800699008" : 239.917, + "99.99691781852503" : 240.005, + "99.99694845815817" : 240.034, + "99.99696750441662" : 240.113, + "99.99697992588952" : 240.118, + "99.99699648785338" : 240.131, + "99.99701056552267" : 240.319, + "99.99702464319195" : 240.331, + "99.9970428613522" : 240.337, + "99.9970552828251" : 240.467, + "99.99707184478896" : 240.481, + "99.99708675055643" : 240.491, + "99.99710165632392" : 240.507, + "99.99711656209139" : 240.516, + "99.99713146785886" : 240.527, + "99.99714720172454" : 240.533, + "99.99716293559021" : 240.541, + "99.99717866945588" : 240.551, + "99.99719274712517" : 240.557, + "99.99720765289264" : 240.749, + "99.9972250429547" : 240.762, + "99.9972382925258" : 240.77, + "99.99725568258785" : 240.786, + "99.99726976025713" : 240.796, + "99.9972846660246" : 240.806, + "99.99729957179208" : 241.092, + "99.99731447755956" : 241.102, + "99.99733103952342" : 241.113, + "99.99734511719271" : 241.144, + "99.99736167915657" : 241.556, + "99.99737658492404" : 241.567, + "99.99739149069153" : 241.577, + "99.9974072245572" : 241.621, + "99.99742213032467" : 241.734, + "99.99743703609215" : 241.747, + "99.99745194185962" : 241.767, + "99.99746850382348" : 241.875, + "99.99748423768915" : 241.89, + "99.99749831535844" : 242.178, + "99.99751404922411" : 242.187, + "99.9975281268934" : 242.202, + "99.99754386075907" : 242.232, + "99.99755876652654" : 242.256, + "99.99757450039222" : 242.647, + "99.99758940615969" : 242.828, + "99.99760514002536" : 242.864, + "99.99762087389102" : 243.326, + "99.99763577965851" : 243.337, + "99.99765151352418" : 243.342, + "99.99766559119347" : 243.351, + "99.99768132505913" : 243.969, + "99.9976970589248" : 244.042, + "99.99771196469227" : 244.047, + "99.99772687045976" : 244.405, + "99.99774177622723" : 245.068, + "99.99776082248567" : 245.11, + "99.99777324395858" : 245.114, + "99.99778814972605" : 245.118, + "99.99780388359171" : 245.208, + "99.99782044555559" : 245.212, + "99.99783617942126" : 245.221, + "99.99785108518873" : 245.371, + "99.99786433475983" : 245.468, + "99.9978792405273" : 245.471, + "99.99789497439296" : 245.475, + "99.99791070825864" : 245.578, + "99.99792644212431" : 246.189, + "99.99794051979359" : 246.198, + "99.99795625365927" : 246.285, + "99.99797115942674" : 246.295, + "99.99798606519421" : 246.307, + "99.99800511145266" : 246.431, + "99.99801918912195" : 246.434, + "99.99803326679123" : 246.441, + "99.9980481725587" : 246.54, + "99.99806307832618" : 246.544, + "99.99807798409365" : 246.551, + "99.99809288986114" : 246.644, + "99.99810862372681" : 246.658, + "99.99812352949428" : 246.672, + "99.99814009145814" : 247.507, + "99.99815499722563" : 247.512, + "99.9981699029931" : 247.516, + "99.99818480876057" : 247.746, + "99.99819971452806" : 247.757, + "99.99821544839372" : 248.718, + "99.9982303541612" : 248.734, + "99.99824691612507" : 248.836, + "99.99826099379435" : 249.804, + "99.99827589956182" : 249.817, + "99.9982924615257" : 249.831, + "99.99830819539136" : 250.126, + "99.99832227306064" : 250.134, + "99.99833800692632" : 250.145, + "99.9983520845956" : 250.898, + "99.99836781846126" : 250.913, + "99.99838272422875" : 250.927, + "99.99839845809441" : 251.02, + "99.99841502005827" : 251.211, + "99.99842909772757" : 251.217, + "99.99844400349504" : 251.225, + "99.99845890926251" : 251.357, + "99.99847464312819" : 252.079, + "99.99848209601193" : 252.084, + "99.99848954889566" : 252.089, + "99.99849865797579" : 252.095, + "99.99850611085952" : 252.1, + "99.99851273564506" : 252.105, + "99.99852018852881" : 252.11, + "99.99852846951075" : 252.22, + "99.99853592239448" : 252.225, + "99.99854420337641" : 252.436, + "99.99855082816195" : 252.444, + "99.99855828104569" : 252.453, + "99.99856573392944" : 252.461, + "99.99857401491137" : 252.471, + "99.9985814677951" : 253.108, + "99.99858974877704" : 253.112, + "99.99859720166077" : 253.17, + "99.99860382644631" : 253.174, + "99.99861293552644" : 253.181, + "99.99862038841019" : 253.187, + "99.99862701319573" : 253.192, + "99.99863446607947" : 253.198, + "99.9986427470614" : 253.284, + "99.99865268423972" : 253.288, + "99.99865930902526" : 253.291, + "99.99866510571262" : 253.293, + "99.99867338669455" : 253.298, + "99.99868083957828" : 253.303, + "99.99868829246202" : 253.308, + "99.99869657344395" : 253.314, + "99.9987031982295" : 253.539, + "99.99871147921144" : 253.548, + "99.99871976019337" : 253.553, + "99.99872638497891" : 253.558, + "99.99873466596084" : 254.174, + "99.99874377504096" : 254.177, + "99.9987503998265" : 254.178, + "99.99876033700482" : 254.179, + "99.9987644774958" : 254.183, + "99.99877193037953" : 254.191, + "99.99877938326327" : 254.198, + "99.9987876642452" : 254.355, + "99.99879594522713" : 254.359, + "99.99880257001269" : 254.363, + "99.99881085099462" : 254.368, + "99.99881830387835" : 254.373, + "99.99882575676209" : 254.376, + "99.99883486584221" : 254.379, + "99.99884066252956" : 254.381, + "99.99884811541331" : 254.385, + "99.99885888068981" : 254.389, + "99.99886384927898" : 254.392, + "99.99887130216271" : 254.402, + "99.99887875504645" : 254.635, + "99.99888703602838" : 254.699, + "99.99889448891211" : 254.707, + "99.99890276989406" : 254.717, + "99.9989093946796" : 254.726, + "99.99891767566153" : 255.234, + "99.99892595664346" : 255.237, + "99.998932581429" : 255.239, + "99.99894086241093" : 255.244, + "99.99894831529468" : 255.249, + "99.99895825247299" : 255.251, + "99.99896322106216" : 255.263, + "99.99897398633867" : 255.266, + "99.9989814392224" : 255.268, + "99.99898806400795" : 255.27, + "99.99899303259711" : 255.272, + "99.99900214167724" : 255.278, + "99.99900876646278" : 255.28, + "99.99901621934652" : 255.446, + "99.99902450032845" : 255.451, + "99.99903278131038" : 255.455, + "99.99903940609593" : 255.459, + "99.99904685897967" : 255.466, + "99.9990551399616" : 255.802, + "99.99906259284533" : 255.807, + "99.99907004572907" : 255.812, + "99.999078326711" : 255.818, + "99.99908577959474" : 255.826, + "99.99909488867486" : 256.301, + "99.99910068536222" : 256.304, + "99.99911724732608" : 256.309, + "99.99912304401343" : 256.311, + "99.99913132499536" : 256.827, + "99.99913794978092" : 256.83, + "99.99914705886104" : 256.888, + "99.99915368364658" : 256.894, + "99.99916196462851" : 256.899, + "99.99916858941405" : 256.903, + "99.9991760422978" : 256.911, + "99.99918432327974" : 257.894, + "99.99919177616347" : 257.899, + "99.9991992290472" : 257.902, + "99.99920751002914" : 257.907, + "99.99921496291287" : 257.911, + "99.9992232438948" : 257.916, + "99.99922986868036" : 257.981, + "99.99923897776048" : 258.983, + "99.99924229015325" : 258.985, + "99.99924560254603" : 258.987, + "99.9992489149388" : 258.989, + "99.99925305542976" : 258.991, + "99.99925636782254" : 258.992, + "99.99926133641169" : 258.996, + "99.99926382070628" : 258.999, + "99.99926796119723" : 259.004, + "99.9992721016882" : 259.507, + "99.99927541408098" : 259.509, + "99.99928038267014" : 259.512, + "99.99928286696472" : 259.514, + "99.99928783555387" : 259.517, + "99.99929197604484" : 260.577, + "99.9992961165358" : 260.579, + "99.99929942892858" : 260.581, + "99.99930191322316" : 260.583, + "99.99930770991051" : 260.591, + "99.99931102230329" : 260.592, + "99.99931350659786" : 260.594, + "99.99931764708883" : 260.597, + "99.99932261567798" : 260.6, + "99.99932509997257" : 260.602, + "99.99933006856173" : 260.605, + "99.9993333809545" : 260.607, + "99.99933669334727" : 260.609, + "99.99934249003462" : 260.958, + "99.9993449743292" : 260.959, + "99.99934911482018" : 260.962, + "99.99935159911475" : 260.964, + "99.99935656770391" : 260.967, + "99.99935988009668" : 261.669, + "99.99936319248945" : 261.671, + "99.99936733298043" : 261.674, + "99.99937064537319" : 261.676, + "99.99937561396236" : 261.679, + "99.99937975445332" : 261.682, + "99.9993830668461" : 261.684, + "99.99938637923886" : 261.687, + "99.99938969163163" : 261.689, + "99.9993938321226" : 261.697, + "99.99939880071176" : 262.027, + "99.99940211310454" : 262.028, + "99.99940873789008" : 262.03, + "99.99941287838105" : 262.032, + "99.99941701887201" : 262.034, + "99.99942198746118" : 262.037, + "99.99942447175575" : 262.039, + "99.99942861224672" : 262.041, + "99.99943192463948" : 262.043, + "99.99943689322865" : 262.046, + "99.99943937752323" : 263.105, + "99.99944351801419" : 263.107, + "99.99944765850516" : 263.109, + "99.99945097089793" : 263.111, + "99.99945925187986" : 263.115, + "99.99946504856722" : 263.117, + "99.99947084525456" : 263.119, + "99.99947498574554" : 263.121, + "99.9994774700401" : 263.125, + "99.99948161053108" : 264.923, + "99.99948740721842" : 264.927, + "99.9994907196112" : 264.931, + "99.99949320390579" : 264.933, + "99.99949817249494" : 265.997, + "99.99950231298591" : 266.001, + "99.99950479728048" : 266.003, + "99.99950976586965" : 266.007, + "99.99951225016423" : 266.009, + "99.99951639065519" : 266.013, + "99.99951970304797" : 266.015, + "99.99952384353892" : 266.019, + "99.9995271559317" : 266.021, + "99.99953295261905" : 266.025, + "99.99953626501183" : 266.027, + "99.99953874930641" : 266.033, + "99.99954454599376" : 267.093, + "99.99954868648473" : 267.095, + "99.9995519988775" : 267.097, + "99.99955531127027" : 267.099, + "99.99955945176123" : 267.101, + "99.999562764154" : 267.103, + "99.99956690464498" : 267.107, + "99.99957021703774" : 267.109, + "99.99957435752872" : 267.111, + "99.9995768418233" : 267.113, + "99.99958181041245" : 267.117, + "99.99958595090342" : 281.313, + "99.99959174759077" : 281.315, + "99.99959837237631" : 281.317, + "99.99960499716185" : 281.319, + "99.99960913765283" : 281.321, + "99.99961327814378" : 281.323, + "99.99961576243837" : 281.325, + "99.99961907483114" : 281.327, + "99.99962073102753" : 281.329, + "99.9996232153221" : 282.387, + "99.99962569961669" : 282.389, + "99.99962984010766" : 282.391, + "99.99963315250042" : 282.393, + "99.99964060538416" : 282.395, + "99.99964971446428" : 282.397, + "99.99965633924984" : 282.399, + "99.99966379213357" : 282.401, + "99.99966876072273" : 282.403, + "99.9996729012137" : 283.463, + "99.99967538550828" : 283.465, + "99.99967704170466" : 283.467, + "99.99967869790105" : 283.469, + "99.99968035409744" : 283.471, + "99.99968201029382" : 283.473, + "99.99968449458841" : 283.475, + "99.9996853226866" : 283.477, + "99.99968863507937" : 286.537, + "99.99969111937395" : 286.539, + "99.99969443176673" : 287.599, + "99.99969940035588" : 287.601, + "99.99970271274866" : 287.603, + "99.99970519704323" : 287.605, + "99.999708509436" : 287.607, + "99.99971264992698" : 287.609, + "99.99971596231974" : 287.611, + "99.99971927471252" : 287.613, + "99.99972258710528" : 287.615, + "99.99972507139987" : 287.617, + "99.99972838379264" : 287.619, + "99.9997316961854" : 287.621, + "99.99973418047999" : 287.623, + "99.99973749287277" : 287.625, + "99.99973997716735" : 287.627, + "99.99974328956012" : 287.629, + "99.9997449457565" : 287.631, + "99.99974743005109" : 288.689, + "99.99975074244385" : 288.691, + "99.9997581953276" : 288.693, + "99.99976564821134" : 288.695, + "99.99977144489868" : 288.697, + "99.99977641348785" : 288.699, + "99.99978055397881" : 288.701, + "99.99978303827339" : 288.703, + "99.99978635066616" : 288.705, + "99.99978966305893" : 288.707, + "99.99979049115713" : 288.709, + "99.99979297545171" : 301.747, + "99.99979628784448" : 301.749, + "99.99979877213906" : 301.751, + "99.99980125643364" : 301.753, + "99.99980291263003" : 301.755, + "99.9998053969246" : 301.757, + "99.99980705312099" : 301.759, + "99.99980870931738" : 301.761, + "99.99980953741557" : 301.763, + "99.99981119361196" : 301.765, + "99.99981367790653" : 301.767, + "99.99981450600472" : 301.769, + "99.99981533410292" : 301.775, + "99.99981616220111" : 302.837, + "99.9998186464957" : 302.839, + "99.99982195888848" : 302.841, + "99.99982444318304" : 302.843, + "99.99982527128124" : 302.845, + "99.99982858367402" : 302.847, + "99.99983189606678" : 302.849, + "99.99983438036136" : 302.851, + "99.99983520845956" : 302.853, + "99.99983852085234" : 302.855, + "99.9998410051469" : 302.857, + "99.99984348944149" : 302.859, + "99.99984431753968" : 302.861, + "99.99984680183427" : 302.863, + "99.99985011422703" : 302.865, + "99.99985259852161" : 302.867, + "99.9998550828162" : 302.871, + "99.99985756711078" : 302.873, + "99.99985839520897" : 302.879, + "99.99986005140535" : 303.943, + "99.99986253569993" : 303.945, + "99.99986419189632" : 303.947, + "99.99986501999452" : 303.949, + "99.9998666761909" : 303.951, + "99.99986833238728" : 303.953, + "99.99986916048547" : 303.955, + "99.99987164478006" : 303.957, + "99.99987247287825" : 303.959, + "99.99987330097645" : 303.961, + "99.99987578527103" : 303.963, + "99.9998774414674" : 303.965, + "99.9998782695656" : 303.967, + "99.99987992576199" : 303.969, + "99.99988158195838" : 303.971, + "99.99988323815477" : 303.973, + "99.99988572244935" : 303.975, + "99.99988655054753" : 303.977, + "99.99988820674392" : 303.979, + "99.99988903484211" : 303.981, + "99.9998915191367" : 303.983, + "99.99989317533309" : 303.985, + "99.99989400343128" : 303.989, + "99.99989483152947" : 303.991, + "99.99989565962765" : 304.001, + "99.99989731582404" : 328.319, + "99.99989897202043" : 328.321, + "99.99990062821682" : 328.323, + "99.99990228441321" : 328.325, + "99.99990559680597" : 328.327, + "99.99990808110056" : 328.329, + "99.99991056539514" : 328.331, + "99.99991139349333" : 328.333, + "99.9999138777879" : 328.335, + "99.99991553398429" : 328.337, + "99.99991636208249" : 328.341, + "99.99991884637707" : 329.401, + "99.99992050257346" : 329.403, + "99.99992298686803" : 329.405, + "99.99992547116261" : 329.407, + "99.999927127359" : 329.409, + "99.99992961165358" : 329.411, + "99.99993126784997" : 329.413, + "99.99993375214454" : 329.415, + "99.99993623643913" : 329.417, + "99.99993789263551" : 329.419, + "99.9999403769301" : 329.421, + "99.99994286122467" : 329.423, + "99.99994534551925" : 329.425, + "99.99994700171564" : 329.427, + "99.99994865791203" : 329.429, + "99.9999511422066" : 329.431, + "99.99995528269757" : 329.433, + "99.99995776699215" : 329.435, + "99.99995859509035" : 329.437, + "99.99996190748311" : 329.439, + "99.99996521987589" : 329.441, + "99.99996604797408" : 329.445, + "99.99996853226865" : 330.505, + "99.99997184466143" : 330.507, + "99.99997515705421" : 330.509, + "99.99997846944697" : 330.511, + "99.99998095374156" : 330.513, + "99.99998260993794" : 330.515, + "99.99998592233072" : 330.517, + "99.99998840662529" : 330.519, + "99.99999171901807" : 330.521, + "99.99999585950903" : 330.523, + "99.99999834380361" : 330.525, + "99.9999991719018" : 330.527, + "100.0" : 330.533 + }, + "endToEndLatencyAvg" : [ 5.0786028901319, 4.839728673313052, 4.294905409742086, 4.869949728182607, 4.635338991974981, 4.225693342491648, 4.334551625697674, 4.353744541538951, 4.412346583168294, 4.766381124920166, 4.409206624593917, 4.458683787675239, 4.27330431042413, 6.867880094399159, 4.903492118654587, 4.326916996126035, 4.204177630581405, 4.24138075099461, 4.638317213546585, 4.498674105058172, 4.416967611271659, 4.357673303605807, 4.545810073908453, 4.730328197872557, 4.528989776261972, 5.5552990647285005, 4.604090891702309, 4.645329645199394, 4.924650034123008, 5.520403217075091, 4.890583141786424, 6.223050929589885, 4.195817677532066, 6.353140465320814, 4.724862814959574, 4.730027461975821, 4.5342481398079855, 4.811145896941967, 4.559534009748363, 4.574991484616202, 4.5272889603852855, 4.706419421999358, 5.387336593600279, 5.042845426620143, 4.6084760845273225, 4.428475261524296, 4.210760108888861, 4.3704724156912, 4.24343389565003, 4.5927531951455265, 4.324664957049981, 4.414200006761151, 4.240551607870541, 4.410724837184339, 4.281163917753923, 4.775858635740912, 4.600155388898922, 5.963976574363378, 4.489095838326491, 4.7351958837559485 ], + "endToEndLatency50pct" : [ 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0 ], + "endToEndLatency75pct" : [ 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, 4.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, 5.0, 5.0, 4.0, 4.0, 4.0, 5.0, 4.0, 4.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, 5.0, 4.0, 5.0, 4.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0 ], + "endToEndLatency95pct" : [ 12.0, 11.0, 9.0, 12.0, 10.0, 9.0, 9.0, 9.0, 9.0, 12.0, 9.0, 9.0, 9.0, 13.0, 12.0, 9.0, 9.0, 9.0, 11.0, 9.0, 10.0, 9.0, 10.0, 11.0, 10.0, 10.0, 11.0, 11.0, 12.0, 16.0, 12.0, 11.0, 8.0, 13.0, 11.0, 12.0, 10.0, 12.0, 10.0, 11.0, 10.0, 12.0, 15.0, 13.0, 11.0, 10.0, 9.0, 9.0, 9.0, 11.0, 9.0, 10.0, 9.0, 9.0, 9.0, 11.0, 10.0, 13.0, 10.0, 11.0 ], + "endToEndLatency99pct" : [ 23.0, 25.0, 15.0, 22.0, 21.0, 15.0, 17.0, 16.0, 17.0, 20.0, 18.0, 19.0, 16.0, 110.0, 23.0, 18.0, 15.0, 14.0, 21.0, 16.0, 18.0, 15.0, 17.0, 20.0, 18.0, 44.0, 19.0, 18.0, 25.0, 34.0, 27.0, 81.0, 14.0, 80.0, 19.0, 22.0, 20.0, 20.0, 19.0, 19.0, 19.0, 21.0, 26.0, 24.0, 19.0, 18.0, 14.0, 16.0, 15.0, 17.0, 16.0, 18.0, 14.0, 15.0, 15.0, 20.0, 19.0, 72.0, 19.0, 18.0 ], + "endToEndLatency999pct" : [ 113.0, 41.0, 24.0, 35.0, 80.0, 22.0, 29.0, 22.0, 25.0, 30.0, 32.0, 32.0, 25.0, 238.0, 38.0, 27.0, 23.0, 20.0, 31.0, 144.0, 38.0, 22.0, 28.0, 31.0, 29.0, 195.0, 29.0, 26.0, 52.0, 54.0, 44.0, 207.0, 22.0, 212.0, 28.0, 36.0, 34.0, 30.0, 32.0, 27.0, 28.0, 32.0, 37.0, 41.0, 29.0, 28.0, 23.0, 30.0, 22.0, 24.0, 30.0, 30.0, 20.0, 20.0, 23.0, 33.0, 33.0, 111.0, 30.0, 34.0 ], + "endToEndLatency9999pct" : [ 219.0, 50.0, 33.0, 44.0, 200.0, 29.0, 41.0, 25.0, 31.0, 39.0, 37.0, 38.0, 40.0, 302.001, 51.0, 33.0, 28.0, 26.0, 39.0, 210.0, 70.0, 27.0, 33.0, 38.0, 34.0, 261.0, 35.0, 31.0, 72.0, 63.0, 56.0, 249.0, 29.0, 254.0, 33.0, 44.0, 44.0, 36.0, 44.0, 34.0, 40.0, 41.0, 43.0, 50.0, 36.0, 37.0, 30.0, 37.0, 27.0, 31.0, 35.0, 38.0, 25.0, 26.0, 28.0, 43.0, 37.0, 130.0, 35.0, 40.0 ], + "endToEndLatencyMax" : [ 234.0, 55.0, 35.0, 45.0, 207.0, 36.0, 44.0, 31.0, 33.0, 43.0, 40.0, 41.0, 43.0, 330.001, 59.0, 36.0, 30.0, 28.0, 41.0, 215.0, 72.0, 29.0, 38.0, 40.0, 36.0, 287.001, 37.0, 32.0, 81.0, 66.0, 68.0, 253.0, 32.0, 263.001, 37.0, 45.0, 45.0, 38.0, 47.0, 37.0, 42.0, 42.0, 45.0, 60.0, 41.0, 39.0, 32.0, 39.0, 29.0, 33.0, 36.0, 40.0, 30.0, 28.0, 30.0, 45.0, 40.0, 135.0, 37.0, 42.0 ], + "aggregatedEndToEndLatencyQuantiles" : { + "0.18452169536268967" : 1.0, + "6.139047015390292" : 2.0, + "44.19998958229733" : 3.0, + "72.75901841391057" : 4.0, + "84.11671255396938" : 5.0, + "88.01910282048948" : 6.0, + "90.54330389738844" : 7.0, + "92.46359621580677" : 8.0, + "93.98535426689807" : 9.0, + "95.11257039919924" : 10.0, + "95.9364922601355" : 11.0, + "96.5784728360059" : 12.0, + "97.10742465032169" : 13.0, + "97.55737665684327" : 14.0, + "97.94261717369051" : 15.0, + "98.26475771512453" : 16.0, + "98.53307069901874" : 17.0, + "98.75413219667199" : 18.0, + "98.93683038000847" : 19.0, + "99.08594762048656" : 20.0, + "99.2121699304523" : 21.0, + "99.3150360491434" : 22.0, + "99.39955856434119" : 23.0, + "99.47032275583182" : 24.0, + "99.53170853056648" : 25.0, + "99.5828471945781" : 26.0, + "99.62537344938333" : 27.0, + "99.66193892327826" : 28.0, + "99.69211465203507" : 29.0, + "99.71884707334186" : 30.0, + "99.74042364275263" : 31.0, + "99.75979411042053" : 32.0, + "99.77611379775033" : 33.0, + "99.7900832911063" : 34.0, + "99.8020313526476" : 35.0, + "99.81282502010873" : 36.0, + "99.82200965765756" : 37.0, + "99.82900309955639" : 38.0, + "99.83506159818656" : 39.0, + "99.8410521912826" : 40.0, + "99.84632066699135" : 41.0, + "99.85136720753977" : 42.0, + "99.85614543841676" : 43.0, + "99.86041023720645" : 44.0, + "99.86374588954138" : 45.0, + "99.86725213382789" : 46.0, + "99.87043210030409" : 47.0, + "99.87314169673903" : 48.0, + "99.87533620485411" : 49.0, + "99.87747854164418" : 50.0, + "99.87975668950253" : 51.0, + "99.88163982590015" : 52.0, + "99.88340288543864" : 53.0, + "99.88526780327832" : 54.0, + "99.88681389635413" : 55.0, + "99.88799064957358" : 56.0, + "99.8895524768585" : 57.0, + "99.8911780690962" : 58.0, + "99.89250553947676" : 59.0, + "99.89379905709025" : 60.0, + "99.89477457805613" : 61.0, + "99.89593890953152" : 62.0, + "99.89670077649978" : 63.0, + "99.89757443916447" : 64.0, + "99.89876278601169" : 65.0, + "99.9001738961355" : 66.0, + "99.90099041877757" : 67.0, + "99.9019038310232" : 68.0, + "99.90300688189464" : 69.0, + "99.9044743039248" : 70.0, + "99.90583572707241" : 71.0, + "99.90710026061647" : 72.0, + "99.908228154976" : 73.0, + "99.90947943865973" : 74.0, + "99.91031997667362" : 75.0, + "99.91141060580101" : 76.0, + "99.91225776874505" : 77.0, + "99.91322169608316" : 78.0, + "99.91423199793236" : 79.0, + "99.91528453371133" : 80.0, + "99.91647784925617" : 81.0, + "99.91738132410657" : 82.0, + "99.91827817402681" : 83.0, + "99.9190748218784" : 84.0, + "99.9200553115419" : 85.0, + "99.9209008182534" : 86.0, + "99.9217082316165" : 87.0, + "99.92266304967563" : 88.0, + "99.92353339987524" : 89.0, + "99.92448987416691" : 90.0, + "99.92535028697127" : 91.0, + "99.92634733896016" : 92.0, + "99.92740153097168" : 93.0, + "99.92822716289271" : 94.0, + "99.92919357457961" : 95.0, + "99.93004984680263" : 96.0, + "99.93078769839906" : 97.0, + "99.93145681634509" : 98.0, + "99.93205885687327" : 99.0, + "99.93242239991574" : 100.0, + "99.9330906897455" : 101.0, + "99.93386000976018" : 102.0, + "99.93482724956336" : 103.0, + "99.93600234655027" : 104.0, + "99.93710870988677" : 105.0, + "99.93777699971653" : 106.0, + "99.93818277668876" : 107.0, + "99.93893636249432" : 108.0, + "99.93970402627646" : 109.0, + "99.94052965819749" : 110.0, + "99.94127827530544" : 111.0, + "99.94190847178679" : 112.0, + "99.94255274624471" : 113.0, + "99.94304630354155" : 114.0, + "99.94358623534949" : 115.0, + "99.94402596508877" : 116.0, + "99.94444830438638" : 117.0, + "99.94499237677567" : 118.0, + "99.94539070070147" : 119.0, + "99.94611778678639" : 121.0, + "99.94653432927012" : 122.0, + "99.94696163726536" : 123.0, + "99.947353336261" : 124.0, + "99.9477897535352" : 125.0, + "99.9483338259245" : 126.0, + "99.94897147545227" : 127.0, + "99.94932590921577" : 128.0, + "99.94973251430426" : 129.0, + "99.95039914790148" : 131.0, + "99.95080740922252" : 132.0, + "99.95123471721776" : 133.0, + "99.9519858186745" : 134.0, + "99.95280648189792" : 135.0, + "99.95353936479673" : 136.0, + "99.95407515602332" : 137.0, + "99.954687962063" : 138.0, + "99.95511112947689" : 139.0, + "99.95546390700784" : 140.0, + "99.95595166749078" : 141.0, + "99.95638560041618" : 142.0, + "99.95681953334157" : 143.0, + "99.95729487208047" : 144.0, + "99.95787538158562" : 145.0, + "99.95851799981102" : 146.0, + "99.95916641485032" : 147.0, + "99.95987776672611" : 148.0, + "99.96064543050825" : 149.0, + "99.96139736008126" : 150.0, + "99.96197207277254" : 151.0, + "99.96235963118683" : 152.0, + "99.96287886008801" : 153.0, + "99.96356536847571" : 154.0, + "99.96400012951739" : 155.0, + "99.96436450067611" : 156.0, + "99.9646394352777" : 157.0, + "99.96505680587771" : 158.0, + "99.96552055098881" : 159.0, + "99.9659246717285" : 160.0, + "99.96644058816462" : 161.0, + "99.96721156441184" : 162.0, + "99.9677481837547" : 163.0, + "99.96818874161025" : 164.0, + "99.9685854093035" : 165.0, + "99.96887773434676" : 166.0, + "99.96937543222494" : 167.0, + "99.96980605268526" : 168.0, + "99.97032445347017" : 169.0, + "99.97069130897772" : 170.0, + "99.97099688388128" : 171.0, + "99.97150369103844" : 172.0, + "99.97190035873169" : 173.0, + "99.97225562061145" : 174.0, + "99.97248749316701" : 175.0, + "99.97283778634915" : 176.0, + "99.97334873408764" : 177.0, + "99.9738770722678" : 178.0, + "99.97430934896066" : 179.0, + "99.97466047025907" : 180.0, + "99.97511510609122" : 181.0, + "99.97576683359559" : 182.0, + "99.97627281263645" : 183.0, + "99.97667693337614" : 184.0, + "99.97704130453488" : 185.0, + "99.97777004685233" : 186.0, + "99.97853025758805" : 187.0, + "99.97892195658369" : 188.0, + "99.97940143590392" : 189.0, + "99.97991900857258" : 190.0, + "99.98046970589202" : 191.0, + "99.98101874697893" : 192.0, + "99.98152638225234" : 193.0, + "99.98193050299203" : 194.0, + "99.98252509047377" : 195.0, + "99.98321988002417" : 196.0, + "99.98391301334203" : 197.0, + "99.98457467824163" : 198.0, + "99.98499122072536" : 199.0, + "99.9854408878599" : 200.0, + "99.9860503814345" : 201.0, + "99.98673357735711" : 202.0, + "99.98729338395553" : 203.0, + "99.98750869418569" : 204.0, + "99.98784159692616" : 205.0, + "99.98835006031585" : 206.0, + "99.98897611621585" : 207.0, + "99.98932226881665" : 208.0, + "99.98990443455435" : 209.0, + "99.99060253656982" : 210.0, + "99.99093047061268" : 211.0, + "99.99131968525951" : 212.0, + "99.99148613662975" : 213.0, + "99.99182980488173" : 214.0, + "99.99221901952855" : 215.0, + "99.99268442087221" : 216.0, + "99.99304133898451" : 217.0, + "99.9933079924234" : 218.0, + "99.99362598907102" : 219.0, + "99.99403010981071" : 220.0, + "99.99419904552975" : 221.0, + "99.99442677750396" : 222.0, + "99.99462966599006" : 223.0, + "99.99475802401189" : 224.0, + "99.99486236666189" : 225.0, + "99.99513067633332" : 226.0, + "99.99542631384166" : 227.0, + "99.99568137365277" : 228.0, + "99.9958701841623" : 229.0, + "99.99606893206706" : 230.0, + "99.9961774152984" : 231.0, + "99.99643827192341" : 232.0, + "99.99664778533968" : 233.0, + "99.9967405343619" : 234.0, + "99.99688297036032" : 235.0, + "99.99700387533571" : 236.0, + "99.99711153045078" : 237.0, + "99.99720262324047" : 238.0, + "99.99733180937857" : 239.0, + "99.99757444744563" : 240.0, + "99.99771108663015" : 241.0, + "99.99782371044286" : 242.0, + "99.99792225627897" : 243.0, + "99.99805475488213" : 244.0, + "99.99817897232262" : 245.0, + "99.99830318976309" : 246.0, + "99.99838682950634" : 247.0, + "99.99847212548214" : 248.0, + "99.9986104208992" : 249.0, + "99.9987478882" : 250.0, + "99.99882490301309" : 251.0, + "99.9989673390115" : 252.0, + "99.99916608691626" : 253.0, + "99.99932342900753" : 254.0, + "99.9993739441" : 255.0, + "99.9994095530996" : 260.0, + "99.99945841195952" : 261.0, + "99.99953873923769" : 262.0, + "99.9995826294" : 263.001, + "99.99962072274842" : 282.001, + "99.99966875349206" : 283.001, + "99.99968697205" : 284.001, + "99.99969111263135" : 285.001, + "99.99974494018889" : 286.001, + "99.9997913147" : 287.001, + "99.99981533007183" : 301.001, + "99.99985839211786" : 302.001, + "99.99989565735" : 303.001, + "99.99991636025675" : 328.001, + "99.99996604723293" : 329.001, + "100.0" : 330.001 + }, + "aggregatedEndToEndLatencyAvg" : 4.706997727872547, + "aggregatedEndToEndLatency50pct" : 4.0, + "aggregatedEndToEndLatency75pct" : 5.0, + "aggregatedEndToEndLatency95pct" : 10.0, + "aggregatedEndToEndLatency99pct" : 20.0, + "aggregatedEndToEndLatency999pct" : 66.0, + "aggregatedEndToEndLatency9999pct" : 210.0, + "aggregatedEndToEndLatencyMax" : 330.001 +} \ No newline at end of file diff --git a/blog/results/kafka/throughput/default-sync.json b/blog/results/kafka/throughput/default-sync.json new file mode 100644 index 00000000..9482cdb3 --- /dev/null +++ b/blog/results/kafka/throughput/default-sync.json @@ -0,0 +1,3014 @@ +{ + "workload" : "100-partitions-1000K-rate-4-producer", + "driver" : "Kafka", + "publishRate" : [ 679757.6833864928, 602508.4064504652, 586772.4101067219, 626631.6340380496, 650783.2586578485, 606217.310569607, 626538.7898183955, 611530.0139788432, 590647.9572794023, 638373.9603494273, 629004.5684366503, 628069.1725521265, 615283.1823172497, 636621.7323664458, 630977.5123478648, 625999.7678803268, 593526.1629748514, 623477.5225139958, 620365.5178437331, 619026.4450355052, 628659.3445879563, 620627.9801835498, 615011.1323617691, 588384.6561188201, 624264.8957971968, 595030.5813081352, 609082.0585213524, 641495.8102502094, 638298.4412862423, 608562.2574627209, 630926.1237281959, 611797.4015813535, 621353.8735549947, 609759.9779105327, 627379.5107503149, 601709.7852665693, 633938.4558721228, 625687.1478953452, 608348.4470546949, 635005.7195338557, 606060.2973293763, 609071.698000472, 600584.0233141086, 614870.2486205485, 617996.390357012, 628801.5575780439, 607605.2946079762, 619510.4591911162, 604177.679885008, 625911.4599850947, 617169.7762474422, 611364.5638063604, 602176.2730991957, 632276.8175457305, 607263.296198288, 636888.5527390525, 602304.5843465958, 619075.6420063708, 632186.4099184244, 626740.0805649599 ], + "consumeRate" : [ 676774.7451604343, 605663.3427332748, 587292.1602298593, 625477.000994367, 651675.780872774, 605176.0359564131, 626372.3616248218, 612698.6585969577, 590649.3387814027, 638873.6358021217, 628601.049410821, 625866.5239667506, 617931.8076752205, 635783.9445131883, 629970.624410737, 627702.0341171047, 592608.1632356268, 623493.504763631, 621092.9333628068, 616700.0451169792, 630461.5611009658, 621053.2049555843, 615586.1754351371, 587784.1583649289, 622755.685609052, 595237.2495925848, 610382.6537090753, 641094.04976929, 638583.913560739, 608676.7403773686, 630827.403297335, 609893.6202793192, 623831.4781117511, 609484.3740435624, 626867.6509955401, 601949.1160926509, 634512.739773407, 623285.3596122247, 610353.2309244974, 635005.7195338557, 605541.216025018, 608587.8046332456, 600832.7359815873, 614831.6727267071, 618863.5676984438, 628865.1965071668, 608365.0588905783, 618709.0674807212, 603476.4180942398, 625456.0709612586, 617362.5937955903, 612628.8345548795, 600752.1971521163, 632193.7185862436, 608069.2621459693, 636475.2986654249, 602314.3447427873, 619277.507066411, 632387.9336676704, 626559.8173872865 ], + "backlog" : [ 45350, 13362, 8098, 19803, 10758, 21308, 22997, 11157, 11145, 6084, 10169, 32488, 5661, 14138, 24340, 7102, 16403, 16241, 8871, 32458, 14196, 9884, 4056, 10140, 25438, 23339, 10140, 14207, 11319, 10154, 11154, 30428, 5342, 8134, 13320, 10897, 5078, 29434, 9126, 9126, 14384, 19289, 16770, 17159, 8341, 7695, 0, 8114, 15222, 19834, 17882, 5070, 19499, 20344, 12168, 16358, 16258, 14212, 12168, 14003 ], + "publishLatencyAvg" : [ 200.8307875735973, 212.2523988591798, 216.96226524310458, 209.89549701049256, 197.32040940160633, 212.88482208218255, 206.02719017992922, 211.3084060661007, 217.11350559175736, 204.27610391042163, 202.6283355443395, 209.2924530076925, 208.05961331008993, 203.68530206338528, 204.5008544037709, 204.36952582203105, 217.5246876652774, 205.53499770549155, 209.2690669233994, 210.0604806704236, 204.01512210383248, 208.5134704718982, 207.5219502280524, 218.1966503963, 209.4208208451401, 216.4719512574189, 213.2155369873975, 201.31145988833075, 202.06993740161872, 214.08000156710338, 201.19853895013472, 212.44159199106232, 206.2800881454427, 209.19719981634103, 207.69157924566196, 216.31067129899736, 201.25699752231822, 209.85305236584867, 209.1236036095171, 203.75118675553486, 213.40826254554733, 214.41380739437025, 211.2485461582808, 209.55328019358544, 210.58409676317189, 204.641971431705, 211.13815707968917, 209.52518748026418, 212.71595387478817, 207.4393901164941, 206.95455366215543, 212.0557541170544, 217.45741729556113, 204.84120434165993, 212.09686905755936, 202.05547406485184, 211.62161715988165, 208.91039497867519, 204.91198124436931, 207.53654489811552 ], + "publishLatency50pct" : [ 79.243, 87.369, 61.062, 60.338, 73.751, 67.575, 92.161, 65.861, 53.635, 61.815, 77.622, 61.916, 65.674, 65.923, 82.5, 98.904, 62.209, 97.771, 77.356, 86.164, 51.305, 66.196, 80.292, 74.748, 59.895, 83.842, 50.588, 87.325, 79.455, 95.768, 71.046, 78.505, 75.421, 59.305, 55.95, 55.753, 61.637, 63.806, 81.151, 70.7, 70.232, 55.529, 67.339, 59.977, 63.584, 83.545, 61.235, 71.095, 48.909, 57.761, 61.279, 54.334, 64.802, 59.153, 71.543, 78.41, 58.514, 56.596, 73.017, 72.927 ], + "publishLatency75pct" : [ 228.832, 257.338, 243.494, 233.007, 238.349, 248.058, 248.484, 241.718, 228.977, 235.731, 248.15, 224.468, 242.657, 230.43, 245.814, 262.005, 242.805, 261.309, 258.32, 269.427, 231.088, 234.559, 267.977, 271.859, 247.75, 270.661, 234.302, 255.437, 246.955, 278.241, 252.098, 252.501, 256.687, 244.799, 233.792, 243.145, 240.223, 235.673, 269.379, 246.971, 231.879, 253.254, 242.965, 240.488, 238.183, 243.171, 248.969, 263.891, 220.242, 223.881, 223.934, 247.78, 257.825, 222.353, 261.34, 252.558, 238.994, 225.751, 238.841, 241.557 ], + "publishLatency95pct" : [ 816.215, 865.243, 978.619, 951.079, 818.303, 896.371, 817.131, 936.371, 1013.999, 875.439, 836.811, 929.739, 882.587, 892.291, 811.139, 761.647, 928.175, 760.807, 831.987, 807.487, 912.259, 906.411, 822.163, 914.639, 911.723, 851.711, 972.611, 768.547, 810.603, 800.995, 820.675, 889.495, 858.395, 894.695, 921.303, 982.243, 876.627, 864.759, 816.739, 851.027, 932.219, 945.979, 892.739, 910.239, 917.439, 850.443, 940.263, 841.187, 947.655, 928.471, 924.211, 919.703, 966.871, 873.163, 858.275, 780.367, 938.543, 946.675, 846.707, 870.391 ], + "publishLatency99pct" : [ 1452.639, 1465.127, 1647.039, 1617.367, 1327.263, 1636.535, 1378.623, 1555.351, 1734.663, 1476.799, 1315.159, 1716.303, 1507.775, 1551.519, 1391.031, 1223.807, 1630.055, 1241.159, 1523.263, 1408.743, 1576.071, 1562.943, 1328.151, 1483.655, 1561.399, 1553.751, 1711.943, 1279.935, 1467.423, 1371.135, 1304.087, 1523.775, 1372.055, 1472.327, 1675.159, 1618.511, 1437.679, 1642.143, 1431.807, 1406.391, 1609.087, 1633.679, 1608.367, 1578.327, 1600.175, 1457.759, 1584.943, 1571.639, 1821.127, 1623.223, 1574.167, 1601.895, 1613.263, 1612.239, 1552.999, 1371.103, 1663.343, 1559.239, 1494.471, 1470.623 ], + "publishLatency999pct" : [ 2569.935, 2078.431, 2647.503, 2631.791, 1930.119, 2655.007, 2071.207, 2018.535, 2348.159, 2381.071, 2161.839, 2427.215, 2725.087, 2192.175, 2157.455, 1862.639, 2908.111, 1974.815, 2574.975, 2132.927, 2428.431, 2889.871, 1935.287, 2214.143, 2449.823, 2371.887, 2536.495, 1958.815, 2553.247, 2232.607, 2091.983, 2776.575, 2160.735, 2459.439, 2674.799, 3277.551, 2254.095, 4231.679, 2209.983, 2148.655, 2260.431, 2460.207, 2365.391, 2970.447, 2555.711, 2186.479, 2219.935, 2431.151, 3665.343, 2581.279, 3452.447, 2328.591, 2350.239, 3026.303, 2354.703, 2063.783, 2504.431, 2768.879, 2463.503, 2894.159 ], + "publishLatency9999pct" : [ 3287.759, 2453.391, 3069.871, 3531.231, 2650.767, 3147.087, 2607.599, 2247.055, 2572.911, 3128.111, 2648.207, 2850.671, 3144.207, 2671.247, 2892.687, 2043.727, 3803.951, 2644.015, 3799.167, 3823.983, 2930.591, 3037.199, 2302.783, 2831.631, 2931.343, 3351.951, 3899.535, 2260.031, 3663.903, 2452.735, 2287.183, 3696.415, 2621.471, 3745.855, 2989.423, 4347.359, 2981.103, 4854.463, 2962.559, 2948.751, 2553.823, 3093.343, 3304.239, 3984.207, 2969.999, 2555.647, 2875.023, 3803.535, 4743.871, 3096.111, 3791.247, 2902.015, 3010.127, 3872.511, 2747.679, 2698.319, 2973.711, 4252.159, 4570.367, 3422.319 ], + "publishLatencyMax" : [ 3300.095, 2461.695, 3070.303, 3534.911, 2661.359, 3151.103, 2607.775, 2247.615, 2573.087, 3131.935, 2652.527, 2852.207, 3145.423, 2674.127, 2896.255, 2049.087, 3814.927, 2652.975, 3801.871, 3828.959, 2930.895, 3038.463, 2303.855, 2832.095, 2939.951, 3364.223, 3899.983, 2260.079, 3670.751, 2456.719, 2287.423, 3697.743, 2626.111, 3756.287, 2990.559, 4348.191, 2983.119, 4855.903, 2974.159, 2950.431, 2563.903, 3096.703, 3304.495, 3989.727, 2972.591, 2560.959, 2881.823, 3814.271, 4747.135, 3105.727, 3791.583, 2903.535, 3014.847, 3884.255, 2747.855, 2699.631, 2980.191, 4254.463, 4572.543, 3431.215 ], + "aggregatedPublishLatencyAvg" : 208.69401181584394, + "aggregatedPublishLatency50pct" : 69.41, + "aggregatedPublishLatency75pct" : 246.057, + "aggregatedPublishLatency95pct" : 879.299, + "aggregatedPublishLatency99pct" : 1521.927, + "aggregatedPublishLatency999pct" : 2470.063, + "aggregatedPublishLatency9999pct" : 3698.575, + "aggregatedPublishLatencyMax" : 4855.903, + "aggregatedPublishLatencyQuantiles" : { + "5.315977262959225E-7" : 0.726, + "0.5013593844287578" : 12.817, + "1.002309970205994" : 13.085, + "1.502997415108714" : 13.268, + "2.0023314122002844" : 13.42, + "2.5009203750784508" : 13.554, + "3.001653005787906" : 13.677, + "3.5023728781519297" : 13.796, + "4.003046767312629" : 13.916, + "4.501087918733847" : 14.038, + "5.0020866141053135" : 14.165, + "5.5023192771531875" : 14.297, + "6.002338503713953" : 14.436, + "6.502495945683556" : 14.592, + "7.0002011273417555" : 14.777, + "7.501061341505522" : 14.993, + "8.001105021561697" : 15.253, + "8.50122365689728" : 15.565, + "9.00093748056429" : 15.968, + "9.500392947736318" : 16.482, + "10.000062914590908" : 17.063, + "10.500012767648391" : 17.737, + "11.000538606842317" : 18.453, + "11.500409783436309" : 19.166, + "12.000051309812543" : 19.854, + "12.500694100506253" : 20.525, + "13.000361675171074" : 21.131, + "13.5004821710987" : 21.58, + "14.00064280265466" : 21.913, + "14.500849151615082" : 22.19, + "15.000191920069136" : 22.44, + "15.500910463438844" : 22.671, + "16.00243942754229" : 22.879, + "16.50131917437674" : 23.076, + "17.001573898730257" : 23.272, + "17.50202185885728" : 23.458, + "18.00235818346178" : 23.64, + "18.50259297290056" : 23.823, + "19.001579570877997" : 24.009, + "19.50161049258874" : 24.2, + "20.001467847641848" : 24.396, + "20.5002566912651" : 24.597, + "21.00077748028063" : 24.804, + "21.50173364783399" : 25.025, + "22.00117662245945" : 25.261, + "22.501502049310563" : 25.516, + "23.00105187507901" : 25.79, + "23.500275565642376" : 26.079, + "24.001395465295435" : 26.378, + "24.500943962069567" : 26.688, + "25.000426274926774" : 27.016, + "25.501128604565828" : 27.369, + "26.001218002026466" : 27.73, + "26.500382153644484" : 28.108, + "27.000583984024235" : 28.509, + "27.50055510099077" : 28.929, + "28.000031300474124" : 29.352, + "28.500639537315624" : 29.793, + "29.000445593188147" : 30.259, + "29.50005575529853" : 30.729, + "30.000653625984366" : 31.218, + "30.500346185742323" : 31.726, + "31.00043212781774" : 32.235, + "31.5003208471367" : 32.765, + "32.00085439449766" : 33.308, + "32.50041751020926" : 33.857, + "33.00008402167863" : 34.394, + "33.50083127132556" : 34.934, + "34.00028540950327" : 35.454, + "34.50022223841646" : 35.991, + "35.00013248744334" : 36.545, + "35.50017590170065" : 37.122, + "36.000843677487495" : 37.714, + "36.50050115179552" : 38.36, + "37.0003356481464" : 39.08, + "37.50021506450514" : 39.848, + "38.00051311407335" : 40.628, + "38.50005044729523" : 41.503, + "39.00039129048041" : 42.422, + "39.50037197620602" : 43.387, + "40.000190790423964" : 44.388, + "40.500473423658114" : 45.393, + "41.00032705752714" : 46.365, + "41.500006061543075" : 47.324, + "42.000388103552034" : 48.289, + "42.50045543970703" : 49.284, + "43.000026795183395" : 50.306, + "43.500044692749846" : 51.362, + "44.000078006650355" : 52.434, + "44.50036462686745" : 53.68, + "45.00022012132852" : 54.932, + "45.500038138149876" : 56.262, + "46.00024847409325" : 57.582, + "46.50029720432782" : 58.938, + "47.00006844054927" : 60.3, + "47.500281966079" : 61.666, + "48.00001572466074" : 63.047, + "48.5002701832154" : 64.531, + "49.000195051179745" : 66.064, + "49.50031182592328" : 67.71, + "50.00017901553433" : 69.41, + "50.250135469042085" : 70.255, + "50.50008660657257" : 71.102, + "50.75011562316997" : 71.938, + "51.00013161562306" : 72.822, + "51.25022601874079" : 73.648, + "51.50016439792585" : 74.525, + "51.750151152504" : 75.446, + "52.00014455205373" : 76.342, + "52.25000584956848" : 77.193, + "52.50011646641686" : 78.131, + "52.750227614862965" : 79.023, + "53.00015828588099" : 80.008, + "53.25003074694799" : 80.95, + "53.50009591219077" : 81.979, + "53.75020121306189" : 82.993, + "54.00009095105499" : 84.02, + "54.250155850498906" : 85.041, + "54.500134631111166" : 86.075, + "54.75010703255071" : 87.081, + "55.00010521647998" : 88.185, + "55.250080541707014" : 89.208, + "55.50006676468744" : 90.31, + "55.75000195428614" : 91.394, + "56.000183805229845" : 92.571, + "56.25008656736724" : 93.769, + "56.50008315650333" : 94.899, + "56.75008160623146" : 96.047, + "57.0000922827073" : 97.19, + "57.25001338496625" : 98.391, + "57.50009449814082" : 99.6, + "57.750062646798554" : 100.872, + "58.000075449665296" : 102.061, + "58.250135564729675" : 103.346, + "58.50015660736117" : 104.733, + "58.750090202166696" : 105.992, + "59.000074830353945" : 107.377, + "59.250168701873946" : 108.733, + "59.50016688580321" : 110.214, + "59.75013343966776" : 111.572, + "60.00011248607888" : 112.973, + "60.2501550584183" : 114.419, + "60.5001053985522" : 115.849, + "60.75006796543381" : 117.333, + "61.0000486066381" : 118.814, + "61.25007044666619" : 120.302, + "61.50002716597281" : 121.711, + "61.75015665454047" : 123.228, + "62.00010938686414" : 124.832, + "62.25008152250482" : 126.472, + "62.50007306146251" : 128.063, + "62.75004227331569" : 129.793, + "63.00007049251649" : 131.428, + "63.25004581774353" : 133.206, + "63.50000546083764" : 134.921, + "63.75007275247133" : 136.592, + "64.00006987320515" : 138.273, + "64.25009729500935" : 140.034, + "64.500112224267" : 141.727, + "64.7500048860476" : 143.621, + "65.0000057279655" : 145.538, + "65.25015329085586" : 147.419, + "65.50007120352845" : 149.323, + "65.7500911829645" : 151.301, + "66.00001308262004" : 153.263, + "66.25002588548678" : 155.164, + "66.5001030116784" : 157.142, + "66.75001135559194" : 159.167, + "67.00000076815871" : 161.321, + "67.25006327541287" : 163.405, + "67.50008750763072" : 165.561, + "67.7500588458748" : 167.755, + "68.00004506885523" : 170.006, + "68.25003341822656" : 172.234, + "68.50001565422404" : 174.407, + "68.7500600871555" : 176.688, + "69.00001813545643" : 179.074, + "69.25010376721167" : 181.536, + "69.50004772817286" : 183.907, + "69.75010571684633" : 186.288, + "70.00007625769383" : 188.686, + "70.25005902528905" : 191.239, + "70.50003169252744" : 193.69, + "70.75001206793289" : 196.35, + "71.00007218299727" : 199.021, + "71.2500647851504" : 201.669, + "71.500083701391" : 204.381, + "71.75001862519083" : 206.988, + "72.00004551539733" : 209.698, + "72.25003226997548" : 212.511, + "72.5000639445615" : 215.381, + "72.75006319168622" : 218.115, + "73.00003213774055" : 221.133, + "73.25002500569255" : 224.099, + "73.50007794418762" : 227.179, + "73.75005061142603" : 230.139, + "74.00005783251665" : 233.172, + "74.25005787703795" : 236.358, + "74.50000555918322" : 239.446, + "74.75001384346929" : 242.707, + "75.00002558314058" : 246.057, + "75.1250738478949" : 247.75, + "75.25001871689145" : 249.563, + "75.3750162140629" : 251.48, + "75.5000386963275" : 253.315, + "75.62505506521823" : 255.092, + "75.75004910700446" : 256.777, + "75.87504607257819" : 258.523, + "76.00004383554851" : 260.377, + "76.12510220065963" : 262.183, + "76.25000693402784" : 263.955, + "76.3750065575902" : 265.737, + "76.50004870897067" : 267.565, + "76.62502308164103" : 269.541, + "76.75009420509757" : 271.295, + "76.87502604994984" : 272.935, + "77.00008175707231" : 274.965, + "77.12512922443004" : 276.839, + "77.25009987591632" : 278.623, + "77.37511172622638" : 280.435, + "77.50005500042975" : 282.233, + "77.62507828009093" : 284.215, + "77.75011803928163" : 286.253, + "77.87511952343604" : 288.259, + "78.00001043526336" : 290.123, + "78.1250701293688" : 291.889, + "78.25001552996308" : 293.799, + "78.3750457203947" : 295.723, + "78.50009425094788" : 297.861, + "78.6250882927341" : 299.987, + "78.75005788102493" : 302.091, + "78.87502800091349" : 304.113, + "79.00006669690873" : 306.179, + "79.12502538744617" : 308.363, + "79.25003989574486" : 310.539, + "79.37508443931509" : 312.905, + "79.50000963919577" : 315.353, + "79.62509484999207" : 317.633, + "79.75009553674988" : 319.793, + "79.87509383131793" : 322.027, + "80.0000674065917" : 324.113, + "80.12500217523144" : 326.495, + "80.2500653247221" : 328.851, + "80.37505325313448" : 331.289, + "80.50006457184682" : 333.705, + "80.62504612108648" : 336.191, + "80.75001384878527" : 338.599, + "80.87501745933058" : 341.211, + "81.00008114041896" : 343.459, + "81.12505790527908" : 346.129, + "81.25002297498924" : 348.673, + "81.37512094413096" : 351.101, + "81.50001664033783" : 353.603, + "81.62504869136148" : 356.169, + "81.75001801385345" : 358.661, + "81.87504102771577" : 361.181, + "82.00006271258377" : 363.727, + "82.12503974324277" : 366.203, + "82.2500056103495" : 368.809, + "82.37503340859136" : 371.333, + "82.50001761581966" : 373.991, + "82.62508927087393" : 376.743, + "82.75007613609085" : 379.427, + "82.87506592509529" : 382.011, + "83.00008255978489" : 384.599, + "83.12505772985183" : 387.315, + "83.25000153565293" : 390.353, + "83.37502853649819" : 393.225, + "83.50000902254241" : 395.873, + "83.6250293784161" : 398.719, + "83.750008535466" : 401.519, + "83.87509321466456" : 404.567, + "84.00003542567248" : 407.517, + "84.12505950273025" : 410.661, + "84.25002563563585" : 413.669, + "84.37507788737312" : 416.813, + "84.50004880465826" : 420.183, + "84.62504045425472" : 423.311, + "84.75000525816601" : 426.955, + "84.87502720883288" : 430.151, + "85.00006351263835" : 433.381, + "85.12502246897465" : 436.935, + "85.25005133041195" : 440.321, + "85.37501374213348" : 443.861, + "85.50009629494113" : 447.073, + "85.62502202641954" : 450.549, + "85.75000623364784" : 453.929, + "85.87504997982148" : 457.639, + "86.00002382089411" : 461.121, + "86.12501706528376" : 464.411, + "86.2500204100302" : 468.197, + "86.37501259122439" : 471.915, + "86.50004490804692" : 475.585, + "86.62505436616722" : 479.231, + "86.75000853812398" : 482.937, + "86.87503607056698" : 486.681, + "87.00002346738162" : 490.491, + "87.12500687721334" : 494.287, + "87.25003972563358" : 498.169, + "87.37502526185621" : 502.127, + "87.50005624968442" : 506.085, + "87.56250276879354" : 508.203, + "87.62504072271157" : 510.113, + "87.68754013579446" : 511.953, + "87.75000127384105" : 513.751, + "87.81257351581245" : 515.779, + "87.8750420962272" : 517.607, + "87.9375587862362" : 519.593, + "88.00000557114417" : 521.705, + "88.06251853996908" : 523.751, + "88.12508520016434" : 525.775, + "88.18754314862457" : 527.855, + "88.2501180485846" : 529.855, + "88.31250449715064" : 531.835, + "88.37506079119024" : 533.999, + "88.43750518390846" : 536.223, + "88.5001433439979" : 538.359, + "88.56261591139561" : 540.315, + "88.62511266648987" : 542.335, + "88.68761261117048" : 544.387, + "88.75005195371028" : 546.451, + "88.8126167533135" : 548.795, + "88.87509064970553" : 551.391, + "88.9376038843293" : 553.531, + "89.00006635137021" : 555.835, + "89.06258197818374" : 558.127, + "89.12501892853379" : 560.471, + "89.18755900884274" : 562.855, + "89.25005470074154" : 565.099, + "89.31253683689832" : 567.367, + "89.37502083364714" : 569.783, + "89.43752317051752" : 572.395, + "89.50006936420033" : 574.751, + "89.56259615456611" : 577.051, + "89.62508148030925" : 579.563, + "89.68759551232961" : 582.167, + "89.75005478978416" : 584.499, + "89.8126209183817" : 587.011, + "89.87504962896698" : 589.803, + "89.937574027143" : 592.451, + "90.0000423417589" : 595.079, + "90.06252926229521" : 597.495, + "90.12501724602699" : 599.891, + "90.18752197508714" : 602.315, + "90.25006152379835" : 605.147, + "90.31252026965518" : 607.731, + "90.37502632770965" : 610.503, + "90.43755923144928" : 612.999, + "90.50003738062311" : 615.891, + "90.56253652790714" : 618.723, + "90.62505295211727" : 621.583, + "90.68752817750361" : 624.459, + "90.75005868905347" : 627.259, + "90.8125535835557" : 630.099, + "90.87504395947722" : 632.831, + "90.93764490772584" : 635.827, + "91.00002816670553" : 638.639, + "91.06252890878272" : 641.527, + "91.12508600021891" : 644.307, + "91.18754208808711" : 647.547, + "91.25004681714726" : 650.287, + "91.31258583426076" : 653.483, + "91.37503766934714" : 656.147, + "91.43755249876408" : 659.143, + "91.50001895278794" : 662.131, + "91.5625574383037" : 665.083, + "91.625081304882" : 667.959, + "91.68750018090935" : 671.023, + "91.75003919802285" : 674.107, + "91.81250246246034" : 677.451, + "91.87501383649207" : 680.731, + "91.93757597810666" : 684.175, + "92.0001434356985" : 687.347, + "92.06257081728948" : 690.459, + "92.12506092741215" : 693.531, + "92.18752073646444" : 696.675, + "92.25003503428366" : 700.023, + "92.31250520949159" : 703.671, + "92.37502562068467" : 706.791, + "92.43751360441644" : 710.171, + "92.50000344874024" : 713.835, + "92.56253023910604" : 717.131, + "92.62504187893663" : 720.579, + "92.68754155781838" : 723.859, + "92.75001678320471" : 727.227, + "92.81253001782848" : 730.791, + "92.87500577481255" : 734.287, + "92.93755462648399" : 737.803, + "93.0000112459499" : 741.491, + "93.06250853264189" : 744.727, + "93.12503425981221" : 748.703, + "93.18752516733149" : 752.327, + "93.25008385356085" : 756.339, + "93.31257183729262" : 759.875, + "93.37501383782106" : 763.399, + "93.43750899812214" : 767.603, + "93.50002754872317" : 771.447, + "93.56253413837536" : 775.427, + "93.6250388674355" : 779.299, + "93.68750665045368" : 783.599, + "93.75005151514216" : 787.739, + "93.78126400984277" : 789.635, + "93.81251026099899" : 791.719, + "93.84379345819718" : 793.755, + "93.8750375829625" : 796.111, + "93.90628755530281" : 798.419, + "93.93755693096013" : 800.479, + "93.96877527323572" : 802.735, + "94.00003773812259" : 804.811, + "94.03127016773793" : 806.947, + "94.06256452848838" : 808.943, + "94.09379084472987" : 810.819, + "94.12501822416681" : 813.183, + "94.15625995674235" : 815.135, + "94.18758009998253" : 817.107, + "94.21876681219341" : 818.855, + "94.25004044063253" : 821.331, + "94.28126782006947" : 823.487, + "94.3125385247211" : 825.679, + "94.34377520711826" : 827.795, + "94.37501561069948" : 830.047, + "94.40628099937385" : 832.187, + "94.43751077100056" : 834.219, + "94.46879529719307" : 836.731, + "94.50006068586744" : 838.707, + "94.53130986081116" : 840.995, + "94.56254282202423" : 843.067, + "94.59378854158271" : 845.495, + "94.62500449166853" : 848.047, + "94.65626323537133" : 850.383, + "94.68750204415939" : 852.691, + "94.71876769863262" : 855.095, + "94.75008093110235" : 857.783, + "94.78126870650868" : 860.011, + "94.81253622157395" : 862.779, + "94.84376386680975" : 865.551, + "94.87504706400796" : 868.327, + "94.90628401220397" : 871.131, + "94.93751404962953" : 873.735, + "94.96875870599257" : 876.439, + "95.00001027312607" : 879.299, + "95.03126130866183" : 881.791, + "95.06250915461122" : 884.071, + "95.09380059157418" : 886.871, + "95.12501733905658" : 889.963, + "95.15627182997757" : 892.519, + "95.18751170196107" : 895.095, + "95.21877496424453" : 897.683, + "95.25002918936666" : 900.407, + "95.28127251673538" : 903.427, + "95.31251850209274" : 905.951, + "95.34379532011822" : 908.871, + "95.37503598949831" : 911.855, + "95.4062984543852" : 914.207, + "95.43752423902895" : 916.987, + "95.46876650320223" : 919.847, + "95.50006750892426" : 922.747, + "95.53125422113513" : 925.091, + "95.5625116358436" : 927.499, + "95.59377356913275" : 930.447, + "95.62500254336287" : 933.631, + "95.65628680375653" : 936.803, + "95.68755617941385" : 939.511, + "95.71876840831558" : 942.323, + "95.75002289923655" : 945.611, + "95.7812502786735" : 948.367, + "95.81253799445237" : 951.355, + "95.84378663779836" : 954.491, + "95.87501561202848" : 957.947, + "95.90628073490399" : 961.351, + "95.93750146936934" : 964.635, + "95.9687583524801" : 967.655, + "96.00004128387943" : 970.687, + "96.03126999231068" : 974.259, + "96.06252155944416" : 977.383, + "96.09377525296856" : 980.651, + "96.12501671974523" : 983.995, + "96.15626722368327" : 987.655, + "96.18752809377696" : 990.895, + "96.2187987984286" : 993.779, + "96.25003840461324" : 997.231, + "96.28130352748875" : 999.983, + "96.31253462810977" : 1003.507, + "96.34376147594898" : 1007.459, + "96.37504387575059" : 1010.811, + "96.40628906371136" : 1014.171, + "96.43752627770623" : 1017.635, + "96.46875073335568" : 1021.039, + "96.50004535990499" : 1024.739, + "96.53128602928508" : 1028.215, + "96.56254291239583" : 1031.971, + "96.59376178626916" : 1035.707, + "96.6250194667765" : 1039.503, + "96.65630239817582" : 1042.839, + "96.68751914565824" : 1046.311, + "96.71876911799855" : 1049.911, + "96.75004965720811" : 1052.775, + "96.78126321510416" : 1057.383, + "96.81250175809336" : 1061.943, + "96.84380382701084" : 1065.663, + "96.87505433094887" : 1069.471, + "96.89063200492139" : 1071.615, + "96.90625566209722" : 1073.639, + "96.92192317608547" : 1075.535, + "96.93751573479433" : 1077.567, + "96.9531593268849" : 1079.879, + "96.96877580749143" : 1081.935, + "96.98438298513776" : 1084.007, + "97.00004970172942" : 1086.351, + "97.01563109688601" : 1088.727, + "97.03125209607322" : 1090.991, + "97.04690632011832" : 1093.151, + "97.06250685279306" : 1096.159, + "97.07815735565408" : 1098.519, + "97.0937826076231" : 1100.551, + "97.10941104917848" : 1102.919, + "97.12502434019865" : 1105.255, + "97.14063497323019" : 1107.111, + "97.15627856532076" : 1109.527, + "97.17188733776027" : 1111.807, + "97.18752694286789" : 1113.895, + "97.2031349179108" : 1116.503, + "97.218787015565" : 1118.663, + "97.23441147013742" : 1120.471, + "97.25000323144968" : 1122.935, + "97.2656710112368" : 1125.511, + "97.28125320378999" : 1127.575, + "97.29690423824873" : 1130.167, + "97.31253879317795" : 1132.423, + "97.32814676822086" : 1134.487, + "97.34376112243649" : 1137.407, + "97.35940311973388" : 1139.159, + "97.3750392694563" : 1142.079, + "97.39064192852194" : 1144.535, + "97.40625282735235" : 1146.839, + "97.42188339529862" : 1149.479, + "97.43752379780284" : 1152.407, + "97.45313257024235" : 1155.063, + "97.46875224043524" : 1157.663, + "97.48445696626433" : 1160.759, + "97.50001124993689" : 1163.191, + "97.51562613575024" : 1165.591, + "97.53128913115782" : 1168.575, + "97.54688328465984" : 1171.143, + "97.5625032206516" : 1173.791, + "97.5781616974785" : 1176.511, + "97.59376754613052" : 1179.655, + "97.6094124672154" : 1182.287, + "97.62505393291508" : 1184.607, + "97.64064782061824" : 1187.255, + "97.65627440158157" : 1189.735, + "97.67187520005517" : 1192.463, + "97.68754271404343" : 1194.591, + "97.70313075417161" : 1196.879, + "97.71880411573486" : 1198.943, + "97.73437647373011" : 1201.967, + "97.75001102865933" : 1204.359, + "97.76562910405904" : 1207.455, + "97.78130060503024" : 1210.951, + "97.7968822659857" : 1213.895, + "97.81250858115017" : 1216.599, + "97.82814871785553" : 1219.823, + "97.8438651388346" : 1223.111, + "97.85941091694353" : 1226.391, + "97.87503351092391" : 1229.143, + "97.89063430939753" : 1231.623, + "97.90625823237222" : 1234.559, + "97.92188401593897" : 1237.359, + "97.93752601323636" : 1240.527, + "97.95313930425654" : 1243.887, + "97.9687634930301" : 1246.759, + "97.98439113718888" : 1250.047, + "98.00000150442156" : 1253.175, + "98.01568151095638" : 1256.263, + "98.031326963639" : 1259.511, + "98.0468932082604" : 1261.975, + "98.06250968886694" : 1265.687, + "98.07814424379616" : 1268.207, + "98.09376577458109" : 1271.215, + "98.10940405069441" : 1273.887, + "98.1250258472782" : 1277.535, + "98.14063887249951" : 1280.559, + "98.15625827689354" : 1284.399, + "98.171915690525" : 1287.855, + "98.18752605775768" : 1290.879, + "98.20313483019717" : 1293.943, + "98.21878320666728" : 1297.503, + "98.23438054975567" : 1300.879, + "98.25003211581213" : 1304.383, + "98.26564886221753" : 1307.655, + "98.2812882015263" : 1310.879, + "98.2969222248578" : 1314.623, + "98.31251212557801" : 1318.367, + "98.32815518607086" : 1321.383, + "98.34379346218417" : 1325.015, + "98.3594474204304" : 1328.263, + "98.37501260185635" : 1332.391, + "98.39062855086516" : 1336.311, + "98.40629340686478" : 1340.063, + "98.42188862356227" : 1344.639, + "98.43753460784261" : 1348.119, + "98.44541846792244" : 1349.447, + "98.4531383301037" : 1351.767, + "98.4609467033064" : 1354.063, + "98.46875135532501" : 1356.095, + "98.47657514486177" : 1358.295, + "98.48437660729404" : 1360.063, + "98.49219375185922" : 1362.399, + "98.50002657855732" : 1364.903, + "98.50784212832933" : 1367.263, + "98.51566485467063" : 1369.111, + "98.52345409035519" : 1371.207, + "98.53126458994879" : 1373.247, + "98.53907296315148" : 1375.223, + "98.54688426014168" : 1377.327, + "98.55468917795915" : 1379.735, + "98.56253742099132" : 1381.775, + "98.57035642614855" : 1383.447, + "98.57814326964333" : 1385.807, + "98.58593915029945" : 1387.935, + "98.59377995096347" : 1390.559, + "98.60156945244687" : 1392.447, + "98.60937995204047" : 1395.271, + "98.61719098323181" : 1397.775, + "98.62501105158448" : 1399.623, + "98.63283085413829" : 1401.983, + "98.64064932769779" : 1404.303, + "98.64846673806184" : 1406.135, + "98.65625065776912" : 1408.559, + "98.66410235618652" : 1410.959, + "98.67187936512336" : 1413.839, + "98.67970049667149" : 1415.807, + "98.68752986798438" : 1418.247, + "98.69532601443937" : 1420.167, + "98.70313943782047" : 1423.119, + "98.71094222924704" : 1425.759, + "98.71877904292809" : 1428.511, + "98.72661373021825" : 1430.831, + "98.73438409418351" : 1432.839, + "98.74219592277143" : 1435.383, + "98.7500037643764" : 1437.415, + "98.75781771935522" : 1439.695, + "98.76568058132487" : 1441.783, + "98.77343792114584" : 1444.223, + "98.78125320511897" : 1447.999, + "98.78907805785119" : 1450.503, + "98.79688244407095" : 1452.687, + "98.80469320946341" : 1455.695, + "98.8125196569888" : 1458.295, + "98.82031819563356" : 1461.543, + "98.8281356059976" : 1463.735, + "98.83595780074118" : 1465.679, + "98.8437919564336" : 1467.815, + "98.85157853412953" : 1469.687, + "98.85939036271745" : 1472.255, + "98.86723647935871" : 1474.719, + "98.87502225965804" : 1477.119, + "98.88283727783232" : 1479.279, + "98.89064325884524" : 1481.727, + "98.89845269524339" : 1484.047, + "98.90626186584268" : 1486.631, + "98.91406598626358" : 1489.823, + "98.92190519213439" : 1492.839, + "98.92970000959507" : 1494.791, + "98.93750040883188" : 1497.263, + "98.94532074298341" : 1500.335, + "98.95314612731336" : 1504.367, + "98.96095077933197" : 1507.239, + "98.96876845549488" : 1509.031, + "98.97657815769189" : 1511.999, + "98.98440699740705" : 1515.351, + "98.99219463829843" : 1518.343, + "99.00000061931135" : 1521.927, + "99.00782600364128" : 1524.575, + "99.01564660359169" : 1527.463, + "99.02345550839212" : 1531.319, + "99.0312545786346" : 1533.871, + "99.03909245551111" : 1537.199, + "99.0468792990059" : 1540.951, + "99.05468767220859" : 1544.303, + "99.06251916991238" : 1548.479, + "99.0703137215742" : 1551.535, + "99.0781351189212" : 1554.431, + "99.08595120029092" : 1557.839, + "99.09375797870044" : 1560.759, + "99.10157804705311" : 1563.335, + "99.10938243327287" : 1566.415, + "99.11722775251754" : 1568.871, + "99.12501991198958" : 1572.791, + "99.1328548650786" : 1576.271, + "99.14063692419384" : 1579.855, + "99.14844051301701" : 1583.663, + "99.15625526539242" : 1587.071, + "99.16406895457237" : 1590.591, + "99.17188237795348" : 1593.983, + "99.1796992567198" : 1597.895, + "99.18750071915206" : 1601.031, + "99.19533700123537" : 1603.759, + "99.20313633727673" : 1607.391, + "99.21093859710557" : 1610.935, + "99.2187583996594" : 1614.079, + "99.22267281951697" : 1615.719, + "99.22656757025867" : 1617.975, + "99.23048039532307" : 1620.023, + "99.23437567766251" : 1621.615, + "99.23830498225642" : 1623.583, + "99.24218989844019" : 1625.239, + "99.24609820492392" : 1627.663, + "99.25001608016672" : 1629.631, + "99.25393820819133" : 1632.319, + "99.25781275821944" : 1634.543, + "99.2617237226918" : 1637.047, + "99.265627244796" : 1639.151, + "99.26953262749223" : 1641.535, + "99.27347920901225" : 1642.887, + "99.27735535383353" : 1644.631, + "99.28126179972521" : 1646.759, + "99.28518073816348" : 1648.935, + "99.28906432535292" : 1651.231, + "99.2929744924287" : 1653.039, + "99.29687615394084" : 1654.647, + "99.30078180243594" : 1657.543, + "99.30469356430488" : 1659.583, + "99.30860027599545" : 1661.607, + "99.3125032665019" : 1664.679, + "99.31640811760042" : 1666.487, + "99.32031801887732" : 1669.855, + "99.32422605956218" : 1672.959, + "99.32814765598907" : 1675.311, + "99.33203257217284" : 1677.479, + "99.33595257380654" : 1679.727, + "99.33985317212324" : 1682.911, + "99.34375961801493" : 1685.695, + "99.34766553230888" : 1687.471, + "99.35157038340739" : 1689.679, + "99.35547071592522" : 1691.951, + "99.35939151495552" : 1693.847, + "99.36331231398582" : 1695.871, + "99.367190585198" : 1699.655, + "99.37110181546923" : 1703.263, + "99.37500400857911" : 1705.343, + "99.37892932619008" : 1707.159, + "99.38281876095452" : 1710.495, + "99.38672254885758" : 1712.719, + "99.39063829770947" : 1715.423, + "99.3945327826523" : 1717.831, + "99.39844002594059" : 1721.543, + "99.40235763538452" : 1723.791, + "99.40625344932168" : 1725.079, + "99.4101676033804" : 1729.823, + "99.41407378347323" : 1732.959, + "99.41796959741038" : 1735.447, + "99.4218866752566" : 1738.135, + "99.42578195759603" : 1740.311, + "99.42969106147635" : 1743.719, + "99.43359670997144" : 1747.055, + "99.43750607965062" : 1751.103, + "99.44141465193321" : 1754.127, + "99.44532428741125" : 1757.863, + "99.44922488572796" : 1760.015, + "99.45312920522873" : 1763.807, + "99.45703511952269" : 1767.695, + "99.46093837582802" : 1771.391, + "99.46484747970834" : 1776.479, + "99.46876030477274" : 1780.767, + "99.47265718190535" : 1784.495, + "99.47656734898112" : 1788.327, + "99.48047113688418" : 1790.871, + "99.4843945939031" : 1793.607, + "99.48829439482321" : 1795.663, + "99.49219419574331" : 1797.967, + "99.49609718624978" : 1800.759, + "99.50000682172782" : 1803.863, + "99.50391167282633" : 1806.999, + "99.5078138659362" : 1811.535, + "99.51173120958128" : 1814.367, + "99.51563287109343" : 1816.287, + "99.51953160881808" : 1818.767, + "99.52345187625065" : 1821.359, + "99.52735433515939" : 1825.375, + "99.53125360448178" : 1827.943, + "99.53517652990297" : 1831.687, + "99.53909148135828" : 1833.599, + "99.54298144772045" : 1836.199, + "99.5468751352667" : 1839.527, + "99.550790086722" : 1841.935, + "99.5546885586478" : 1845.631, + "99.55859925732129" : 1849.175, + "99.56250065303458" : 1852.343, + "99.56640656732854" : 1856.751, + "99.57032284777816" : 1860.551, + "99.57422371189372" : 1862.687, + "99.57812936038881" : 1867.311, + "99.58203208509642" : 1873.679, + "99.58595501051762" : 1875.975, + "99.58985614043205" : 1880.271, + "99.59376072573168" : 1884.791, + "99.59766796901997" : 1888.391, + "99.60160099479796" : 1892.071, + "99.6054811266022" : 1896.063, + "99.60939926764387" : 1898.231, + "99.61133242277553" : 1900.207, + "99.61328258903445" : 1902.935, + "99.61523647647745" : 1905.279, + "99.61719062971932" : 1906.879, + "99.61914345396687" : 1910.911, + "99.62110372058258" : 1913.703, + "99.62305229204831" : 1915.695, + "99.62500724268678" : 1918.167, + "99.6269616617275" : 1920.031, + "99.6289205993489" : 1920.879, + "99.63086013365329" : 1923.415, + "99.63281641328606" : 1924.943, + "99.63476737694157" : 1928.119, + "99.63672073278684" : 1930.775, + "99.63867594922415" : 1932.687, + "99.64065508755915" : 1935.359, + "99.64258638209878" : 1937.351, + "99.64454000374293" : 1939.007, + "99.64648591722003" : 1941.855, + "99.64843794407099" : 1945.079, + "99.65039209731286" : 1949.007, + "99.65234385836494" : 1951.607, + "99.65430864356134" : 1953.879, + "99.65625508863617" : 1955.543, + "99.65820764708486" : 1957.703, + "99.66016020553354" : 1960.415, + "99.6621244591322" : 1962.071, + "99.66406532243091" : 1964.039, + "99.66602133626482" : 1965.711, + "99.667970970926" : 1970.063, + "99.66992406097242" : 1972.119, + "99.67187821421429" : 1973.967, + "99.67383582284137" : 1975.871, + "99.67578306531279" : 1978.335, + "99.67773535796262" : 1979.863, + "99.67969881416468" : 1981.527, + "99.68165748598723" : 1983.135, + "99.68359888088365" : 1984.535, + "99.68555090773461" : 1988.111, + "99.68750240298785" : 1991.583, + "99.68945815102289" : 1993.967, + "99.6914069882875" : 1997.527, + "99.69337974744977" : 1999.407, + "99.69532220554166" : 2001.175, + "99.69726918221421" : 2004.759, + "99.6992238670538" : 2008.079, + "99.70117297011727" : 2011.735, + "99.7031425396932" : 2015.383, + "99.70507888441124" : 2017.551, + "99.70703729043491" : 2019.815, + "99.70899383586654" : 2022.727, + "99.71094506532091" : 2024.175, + "99.71289283939005" : 2028.095, + "99.71485629559213" : 2031.287, + "99.71679875368402" : 2032.799, + "99.71875609651224" : 2036.719, + "99.72071104715069" : 2040.087, + "99.72266546619142" : 2040.975, + "99.72461456925488" : 2043.999, + "99.72656314072061" : 2046.231, + "99.72851596496817" : 2048.191, + "99.73047782637707" : 2052.415, + "99.73242187926212" : 2054.103, + "99.73438055108467" : 2056.815, + "99.73633018574586" : 2060.399, + "99.73828354159113" : 2063.423, + "99.74024513720116" : 2064.855, + "99.74219424026462" : 2067.831, + "99.74414095113832" : 2071.567, + "99.74609563597791" : 2075.087, + "99.74804846022546" : 2076.383, + "99.75001191642754" : 2080.575, + "99.75196341168076" : 2087.159, + "99.75391251474423" : 2089.207, + "99.75586135200884" : 2092.815, + "99.75781284726206" : 2096.383, + "99.75977284807891" : 2099.487, + "99.76172141954466" : 2101.967, + "99.76368301515468" : 2104.799, + "99.76564381336813" : 2109.215, + "99.76758175287934" : 2112.671, + "99.76955770162797" : 2119.327, + "99.77149005936306" : 2127.487, + "99.77346335012308" : 2129.839, + "99.77540394762292" : 2132.463, + "99.77735411388184" : 2136.143, + "99.77930055895666" : 2137.551, + "99.78126374935988" : 2141.471, + "99.783203815262" : 2145.983, + "99.78517258744134" : 2150.223, + "99.78711717192412" : 2153.087, + "99.78906281960236" : 2156.159, + "99.79101989663172" : 2158.303, + "99.7929711260861" : 2161.039, + "99.79493351909272" : 2163.679, + "99.79688262215618" : 2166.783, + "99.79884129397871" : 2171.327, + "99.80079597881831" : 2175.087, + "99.80275544803743" : 2176.575, + "99.80469126115774" : 2180.463, + "99.8056688693764" : 2183.055, + "99.80668395523476" : 2188.575, + "99.80762169362394" : 2190.175, + "99.80860328882555" : 2191.583, + "99.80958754201579" : 2193.535, + "99.8105632896424" : 2199.039, + "99.81152494992928" : 2200.943, + "99.81250707672861" : 2203.023, + "99.81348122956204" : 2204.671, + "99.81446016677502" : 2206.511, + "99.81543538280391" : 2209.007, + "99.81640980143621" : 2209.887, + "99.81738847285033" : 2214.639, + "99.81836794166102" : 2217.823, + "99.81934262609218" : 2219.487, + "99.82031491833358" : 2221.983, + "99.82129119755793" : 2223.791, + "99.8222730585584" : 2224.767, + "99.82325545115658" : 2226.863, + "99.82421923783436" : 2228.623, + "99.8251955170587" : 2231.151, + "99.82617339107622" : 2233.807, + "99.82715418888124" : 2237.327, + "99.82815252941123" : 2238.159, + "99.82910249454811" : 2240.463, + "99.83008940572698" : 2243.167, + "99.83107286152062" : 2247.551, + "99.83203558500296" : 2249.471, + "99.83303897571133" : 2250.815, + "99.83399718061298" : 2252.223, + "99.83496415687712" : 2253.311, + "99.83594176509577" : 2257.295, + "99.83693080266555" : 2260.223, + "99.83790522129785" : 2264.223, + "99.83886874217676" : 2268.015, + "99.83984422400451" : 2269.391, + "99.84082050322885" : 2271.039, + "99.84180502221795" : 2273.295, + "99.8427762512639" : 2275.471, + "99.84376449143708" : 2277.871, + "99.84473412568984" : 2279.023, + "99.84570854432215" : 2284.415, + "99.84668296295445" : 2285.455, + "99.84765658419016" : 2288.079, + "99.84873998035634" : 2289.823, + "99.84961871139791" : 2294.703, + "99.85058648505864" : 2299.247, + "99.85157738322046" : 2302.767, + "99.85253984090392" : 2306.335, + "99.85353499184754" : 2309.087, + "99.85450117071508" : 2310.095, + "99.85547239976103" : 2311.263, + "99.8564484131865" : 2314.799, + "99.8574257556063" : 2319.071, + "99.85840150323291" : 2322.575, + "99.85937725085952" : 2325.663, + "99.86036389623953" : 2328.127, + "99.86132901191162" : 2332.383, + "99.86231087291209" : 2334.143, + "99.86329698669437" : 2336.751, + "99.86426662094713" : 2337.983, + "99.86523572360217" : 2339.519, + "99.86621466081515" : 2345.311, + "99.86719545862016" : 2347.039, + "99.8681927359547" : 2349.103, + "99.8691411062984" : 2350.911, + "99.87013758623635" : 2354.271, + "99.87109605693686" : 2355.567, + "99.87210875060545" : 2359.855, + "99.87306296852415" : 2363.839, + "99.87404881650757" : 2365.679, + "99.8750006422365" : 2368.127, + "99.87598489542674" : 2371.215, + "99.8769625036454" : 2375.551, + "99.87794356724928" : 2376.895, + "99.87893473120995" : 2379.215, + "99.8798886833298" : 2383.407, + "99.88086416515755" : 2384.927, + "99.88184017858303" : 2394.159, + "99.8828220395835" : 2401.487, + "99.8837906106408" : 2404.591, + "99.88476768726174" : 2410.751, + "99.88574715607244" : 2413.407, + "99.88673061186608" : 2415.695, + "99.88770051191771" : 2422.271, + "99.88867838593524" : 2427.311, + "99.88965360196413" : 2429.103, + "99.89062775479756" : 2434.527, + "99.8916090842003" : 2438.207, + "99.89258084484398" : 2443.855, + "99.8935579214649" : 2447.135, + "99.89453606128129" : 2450.591, + "99.89551074571246" : 2453.199, + "99.89651068103562" : 2457.967, + "99.8974728729202" : 2459.775, + "99.89844224137411" : 2462.511, + "99.89944456888705" : 2464.447, + "99.9003910786387" : 2472.223, + "99.90137400283463" : 2478.207, + "99.90234470028285" : 2484.879, + "99.90283589658195" : 2486.431, + "99.90332549808787" : 2489.423, + "99.90382679474376" : 2494.015, + "99.90429885352471" : 2496.015, + "99.90479403680676" : 2498.463, + "99.9052769933411" : 2501.855, + "99.90576845543906" : 2503.471, + "99.90625380416317" : 2505.471, + "99.90673915288727" : 2508.063, + "99.90723433616932" : 2510.303, + "99.90771755850253" : 2513.231, + "99.90820370462322" : 2516.943, + "99.90869676151436" : 2525.263, + "99.9091797180487" : 2527.823, + "99.90968792547504" : 2528.095, + "99.91016875561847" : 2530.719, + "99.91064453558351" : 2534.943, + "99.91113546608375" : 2535.439, + "99.9116269281817" : 2536.943, + "99.91211785868194" : 2539.071, + "99.9125992204231" : 2542.815, + "99.91308775873357" : 2546.351, + "99.91357549964744" : 2549.103, + "99.91407280932039" : 2553.167, + "99.91456560041267" : 2553.647, + "99.9150464305561" : 2555.551, + "99.9155347030677" : 2556.335, + "99.91601659640659" : 2559.775, + "99.91650805850455" : 2564.575, + "99.91704922498992" : 2569.935, + "99.91748460352775" : 2571.679, + "99.91800344290863" : 2572.831, + "99.91845875636119" : 2574.159, + "99.91895287644779" : 2574.783, + "99.91943795937303" : 2578.527, + "99.91992277649942" : 2581.407, + "99.92041397279851" : 2584.831, + "99.92090490329875" : 2588.607, + "99.92139849178761" : 2589.791, + "99.92187639814355" : 2593.551, + "99.92236546805174" : 2596.799, + "99.92291354530755" : 2598.319, + "99.92335025283971" : 2602.463, + "99.92384835990924" : 2607.743, + "99.92433158224244" : 2609.855, + "99.92481320978247" : 2613.535, + "99.92529749531113" : 2615.263, + "99.92578789421364" : 2618.639, + "99.92627244554116" : 2623.151, + "99.92676869201865" : 2624.063, + "99.92725324334617" : 2631.423, + "99.92773646567937" : 2632.959, + "99.92825663405455" : 2640.447, + "99.92872337685824" : 2642.351, + "99.92920128321418" : 2647.599, + "99.92969301111101" : 2648.815, + "99.93018367581237" : 2651.087, + "99.93066424015694" : 2654.383, + "99.93116048663444" : 2654.927, + "99.93164556955969" : 2671.247, + "99.93213862645084" : 2672.207, + "99.93261945659427" : 2674.911, + "99.93310586851382" : 2678.287, + "99.93359520422088" : 2688.159, + "99.93410580383699" : 2691.743, + "99.93457121764636" : 2695.679, + "99.93507012211249" : 2698.271, + "99.93555679983092" : 2704.847, + "99.9360408195607" : 2711.135, + "99.93653015526776" : 2724.703, + "99.93702002257254" : 2727.839, + "99.93750696608983" : 2736.303, + "99.9380005545787" : 2737.103, + "99.93848111892326" : 2741.871, + "99.93896593604966" : 2747.311, + "99.93945766394647" : 2753.167, + "99.93994301267058" : 2761.279, + "99.94043633536059" : 2766.079, + "99.94092912645286" : 2766.767, + "99.94140942499857" : 2768.495, + "99.94189557111926" : 2775.583, + "99.94238915960813" : 2778.143, + "99.9428747741311" : 2778.863, + "99.94337128640747" : 2779.231, + "99.94385052175772" : 2780.879, + "99.9443504894193" : 2784.655, + "99.94484062252295" : 2786.719, + "99.94531693408571" : 2790.719, + "99.94581185156889" : 2794.847, + "99.9462892263271" : 2803.471, + "99.9467825490171" : 2805.999, + "99.94727188472416" : 2817.743, + "99.94775430966078" : 2823.087, + "99.94824550595987" : 2826.319, + "99.94873298107488" : 2831.695, + "99.94923108814443" : 2832.959, + "99.949711652489" : 2835.359, + "99.9501977986097" : 2838.127, + "99.95069191869628" : 2851.487, + "99.95118231759879" : 2853.423, + "99.9514167521961" : 2856.271, + "99.95166660312745" : 2860.095, + "99.95190475890882" : 2862.191, + "99.95215354664474" : 2864.255, + "99.95240499236927" : 2874.959, + "99.95264314815066" : 2875.135, + "99.9528866199093" : 2877.375, + "99.95313088906452" : 2877.775, + "99.95336931064477" : 2878.271, + "99.95362208536363" : 2878.735, + "99.95386130434046" : 2882.591, + "99.95410371290365" : 2889.807, + "99.95435196904184" : 2892.063, + "99.95459331440956" : 2892.911, + "99.95484130474888" : 2893.263, + "99.95508078952459" : 2893.935, + "99.95533064045594" : 2895.919, + "99.95556666984642" : 2901.903, + "99.95581306539256" : 2905.871, + "99.95606451111709" : 2906.223, + "99.95630559068597" : 2908.447, + "99.95654959404234" : 2910.927, + "99.95679067361121" : 2920.735, + "99.95703680335849" : 2926.783, + "99.95729143866939" : 2930.639, + "99.95754926356663" : 2931.343, + "99.95776987662305" : 2932.463, + "99.95801627216919" : 2934.175, + "99.95825947812897" : 2938.351, + "99.95850427888193" : 2943.791, + "99.95875359821557" : 2944.111, + "99.95898670381854" : 2945.055, + "99.95923177037037" : 2949.023, + "99.95947763431877" : 2953.487, + "99.95974157258988" : 2962.335, + "99.95997334919855" : 2962.607, + "99.9602138971697" : 2968.015, + "99.96045391354312" : 2969.967, + "99.96069579050858" : 2970.111, + "99.96094192025586" : 2973.519, + "99.96118778420427" : 2974.159, + "99.96143763513562" : 2975.999, + "99.96167260133065" : 2977.119, + "99.96191660468702" : 2981.247, + "99.96216645561839" : 2984.655, + "99.96241418015883" : 2985.583, + "99.96265951250952" : 2985.743, + "99.96290351586589" : 2985.887, + "99.96313848206091" : 2989.359, + "99.96339205417635" : 2989.615, + "99.96362329918729" : 2996.367, + "99.9638678341414" : 2996.991, + "99.96411236909549" : 2998.767, + "99.96435982783709" : 3008.143, + "99.96460648918207" : 3008.703, + "99.96484889774527" : 3010.207, + "99.96511655720046" : 3013.503, + "99.96533849925119" : 3014.495, + "99.96557878142347" : 3016.783, + "99.9658259743662" : 3019.967, + "99.96607130671688" : 3023.247, + "99.96630919669941" : 3023.519, + "99.96656356621143" : 3026.415, + "99.96680810116554" : 3028.335, + "99.96704758594123" : 3037.375, + "99.96729531048169" : 3040.527, + "99.96755021159144" : 3044.831, + "99.96777667222284" : 3048.895, + "99.96802333356784" : 3054.591, + "99.96826414733786" : 3058.799, + "99.96850788489536" : 3065.679, + "99.96876836778125" : 3069.647, + "99.96899854959673" : 3070.271, + "99.96926169047126" : 3071.567, + "99.96948389832085" : 3072.911, + "99.96972816747608" : 3080.991, + "99.96997243663131" : 3087.935, + "99.9702169715854" : 3091.327, + "99.97046070914291" : 3093.343, + "99.97070976267769" : 3095.519, + "99.9709476526602" : 3096.063, + "99.97120840134495" : 3121.551, + "99.9714417727468" : 3125.727, + "99.97168418130998" : 3125.951, + "99.97192818466635" : 3128.383, + "99.97217059322955" : 3130.863, + "99.97241938096545" : 3137.007, + "99.97265727094796" : 3141.791, + "99.97291137466114" : 3144.239, + "99.97315511221865" : 3147.087, + "99.9733948627932" : 3153.519, + "99.97363806875299" : 3167.151, + "99.97388154051163" : 3168.223, + "99.97412527806914" : 3168.879, + "99.97437778698912" : 3169.743, + "99.97461355058074" : 3171.343, + "99.97486074352346" : 3173.471, + "99.9750978361094" : 3175.471, + "99.97534821863847" : 3202.207, + "99.97559487998348" : 3212.095, + "99.97571183148327" : 3212.367, + "99.97583835174213" : 3213.695, + "99.97596194821348" : 3213.839, + "99.9760815577019" : 3213.951, + "99.97619664860964" : 3214.143, + "99.97632290306964" : 3239.567, + "99.97644277835693" : 3239.999, + "99.97657833577713" : 3262.735, + "99.9766867817133" : 3262.879, + "99.97680692279944" : 3263.039, + "99.97693450625374" : 3275.951, + "99.9770610265126" : 3276.079, + "99.97720801328393" : 3277.311, + "99.9772983848974" : 3277.423, + "99.9774280947426" : 3287.103, + "99.9775442488458" : 3287.327, + "99.97766492152968" : 3287.663, + "99.97779037859308" : 3287.855, + "99.97791131707581" : 3290.703, + "99.97803677413923" : 3290.831, + "99.97816409179467" : 3290.991, + "99.97827811950695" : 3304.239, + "99.97840410816809" : 3304.415, + "99.97851866747811" : 3322.175, + "99.97864066915629" : 3322.399, + "99.97876692361629" : 3324.143, + "99.97888360931721" : 3324.399, + "99.97900507939767" : 3324.751, + "99.97913080225993" : 3324.975, + "99.97925306973698" : 3339.807, + "99.97937214762767" : 3339.983, + "99.97949973108199" : 3340.127, + "99.97961827737495" : 3341.023, + "99.97974878461676" : 3341.263, + "99.97986228073133" : 3351.903, + "99.97998534560496" : 3352.063, + "99.98010894207633" : 3353.551, + "99.98023253854768" : 3353.743, + "99.98034922424861" : 3393.103, + "99.98047946569154" : 3393.279, + "99.98059429080043" : 3393.391, + "99.98072532963997" : 3399.295, + "99.98084015474885" : 3399.471, + "99.98096428281794" : 3410.815, + "99.98108070271999" : 3411.071, + "99.98120562818568" : 3422.255, + "99.98132789566272" : 3422.463, + "99.98146106089315" : 3428.863, + "99.98157296221454" : 3429.039, + "99.98169310330069" : 3429.391, + "99.98181244699023" : 3429.615, + "99.98194135943886" : 3429.791, + "99.98206415851364" : 3452.287, + "99.98218616019183" : 3452.463, + "99.98230204849615" : 3453.471, + "99.98242591076638" : 3453.775, + "99.98255136782979" : 3458.815, + "99.98267336950798" : 3458.991, + "99.98279749757707" : 3467.311, + "99.98291524647344" : 3467.535, + "99.98303884294481" : 3477.535, + "99.98315659184118" : 3477.759, + "99.98328284630117" : 3477.983, + "99.98340830336458" : 3482.735, + "99.98352392587005" : 3483.055, + "99.983648319738" : 3485.103, + "99.98378706674457" : 3485.311, + "99.9839779103283" : 3487.055, + "99.98404382844636" : 3487.071, + "99.98413233946779" : 3492.191, + "99.98425354374939" : 3492.543, + "99.98437793761734" : 3495.167, + "99.9844972813069" : 3495.647, + "99.9846198145828" : 3496.175, + "99.98474181626099" : 3513.775, + "99.98486355214031" : 3514.095, + "99.98498661701394" : 3524.207, + "99.98511180827849" : 3524.559, + "99.98523673374417" : 3531.167, + "99.98535262204851" : 3531.375, + "99.98548286349144" : 3546.943, + "99.98561204173893" : 3547.087, + "99.98572287986487" : 3556.607, + "99.98584753953169" : 3556.751, + "99.98596395943375" : 3556.911, + "99.98608808750284" : 3586.207, + "99.98621062077875" : 3586.463, + "99.98632916707172" : 3606.031, + "99.9864511687499" : 3606.447, + "99.98657343622695" : 3613.967, + "99.98669889329035" : 3614.143, + "99.98683896929123" : 3616.927, + "99.9869444914399" : 3617.103, + "99.98706250613513" : 3617.263, + "99.98721215089509" : 3622.639, + "99.98730757268696" : 3622.735, + "99.98743063756059" : 3647.663, + "99.9875531708365" : 3647.871, + "99.98767384352038" : 3655.711, + "99.98780381916445" : 3655.919, + "99.98786787669047" : 3655.983, + "99.98793538960172" : 3660.815, + "99.9879765884255" : 3660.879, + "99.98804596192879" : 3660.991, + "99.98809885590255" : 3661.103, + "99.98816876100356" : 3663.775, + "99.98822484456369" : 3663.871, + "99.98829926824537" : 3663.983, + "99.98835163062141" : 3664.015, + "99.98842126992355" : 3664.095, + "99.98847894827685" : 3664.127, + "99.98852572887677" : 3664.207, + "99.98859563397778" : 3664.319, + "99.98865623611857" : 3664.415, + "99.98871577506392" : 3664.959, + "99.98877159282517" : 3665.071, + "99.98883751094324" : 3665.183, + "99.98889758148631" : 3665.279, + "99.98895765202938" : 3687.375, + "99.9890174567736" : 3687.487, + "99.98907619832235" : 3687.583, + "99.98913626886542" : 3687.711, + "99.98920085798916" : 3687.807, + "99.98926438391746" : 3689.183, + "99.9893209990753" : 3689.311, + "99.98938425920474" : 3689.487, + "99.98944167175917" : 3689.663, + "99.98950626088292" : 3696.271, + "99.98956978681122" : 3696.383, + "99.98963756552132" : 3696.431, + "99.98969311748371" : 3696.511, + "99.98975398542338" : 3696.639, + "99.98981644815622" : 3698.335, + "99.9898879480504" : 3698.431, + "99.98993419705259" : 3698.463, + "99.98999267280247" : 3698.543, + "99.99005407233987" : 3703.807, + "99.99011600347498" : 3703.999, + "99.9901750108226" : 3704.255, + "99.99023587876226" : 3704.559, + "99.99029701250079" : 3704.847, + "99.99035734884272" : 3716.383, + "99.9904317725244" : 3716.447, + "99.99048280590613" : 3716.527, + "99.99054075005829" : 3716.639, + "99.99060826296953" : 3731.471, + "99.9906640807308" : 3731.551, + "99.99072920145227" : 3731.615, + "99.99078475341466" : 3731.711, + "99.9908464187509" : 3745.679, + "99.99091419746101" : 3745.807, + "99.99097320480863" : 3745.919, + "99.99102981996649" : 3746.047, + "99.99108989050956" : 3746.127, + "99.99115075844921" : 3749.391, + "99.991217208165" : 3749.615, + "99.99127701290921" : 3749.775, + "99.99133602025682" : 3749.967, + "99.99141894950213" : 3754.255, + "99.99145509814753" : 3754.303, + "99.99151623188604" : 3754.383, + "99.99157922621661" : 3754.495, + "99.9916435495415" : 3754.575, + "99.99169936730276" : 3761.807, + "99.99176156423673" : 3761.935, + "99.9918274823548" : 3762.079, + "99.9918851607081" : 3762.191, + "99.99194602864776" : 3774.783, + "99.99203453966918" : 3774.927, + "99.99207068831457" : 3774.975, + "99.99212996146105" : 3775.023, + "99.99219667697571" : 3791.231, + "99.99229741474484" : 3791.247, + "99.99232372883229" : 3791.263, + "99.99238140718559" : 3791.343, + "99.99244546471161" : 3791.407, + "99.99249570069675" : 3799.119, + "99.99256401100457" : 3799.167, + "99.99262541054196" : 3799.247, + "99.99268388629186" : 3799.295, + "99.99274448843265" : 3803.391, + "99.99280269838368" : 3803.487, + "99.99286728750742" : 3803.583, + "99.9929252316596" : 3803.695, + "99.99298397320834" : 3803.727, + "99.99304617014232" : 3803.791, + "99.99310517748994" : 3803.951, + "99.99316843761937" : 3804.111, + "99.99322903976017" : 3804.271, + "99.99329070509641" : 3823.791, + "99.99335130723722" : 3823.935, + "99.99341084618256" : 3824.127, + "99.99347011932905" : 3824.367, + "99.99353125306757" : 3824.639, + "99.99359557639245" : 3844.479, + "99.99365617853324" : 3844.527, + "99.99372369144449" : 3844.591, + "99.99378216719438" : 3844.671, + "99.9938403771454" : 3872.415, + "99.99390363727484" : 3872.511, + "99.9939291539657" : 3872.559, + "99.99396450521449" : 3872.607, + "99.99398869291105" : 3872.671, + "99.99401872818258" : 3872.735, + "99.99406125600069" : 3872.783, + "99.9940835831052" : 3899.391, + "99.99411255518127" : 3899.439, + "99.99414524844144" : 3899.471, + "99.99417182832775" : 3899.519, + "99.99420664797883" : 3899.567, + "99.99423801224468" : 3899.647, + "99.99427123710257" : 3899.679, + "99.9942991459832" : 3899.711, + "99.99432599166838" : 3899.743, + "99.99436187451491" : 3984.159, + "99.99442540044319" : 3984.175, + "99.99444852494429" : 3984.207, + "99.994486002584" : 3984.255, + "99.99450726649304" : 3984.287, + "99.99454261774184" : 3984.319, + "99.9945761083986" : 3984.367, + "99.99460401727923" : 3984.415, + "99.99463484994736" : 4007.263, + "99.99466515101776" : 4007.311, + "99.9946943888927" : 4007.375, + "99.9947246899631" : 4007.439, + "99.99475339624033" : 4007.487, + "99.99478210251755" : 4007.551, + "99.99481639057089" : 4007.615, + "99.99484695744015" : 4007.679, + "99.99487460052192" : 4007.727, + "99.99490543319004" : 4035.759, + "99.99493972124338" : 4035.775, + "99.99499474160807" : 4035.807, + "99.99500298137282" : 4035.823, + "99.99502902966141" : 4035.871, + "99.99506570990452" : 4035.919, + "99.99509335298629" : 4035.967, + "99.9951199328726" : 4035.999, + "99.99514837335096" : 4036.047, + "99.99518585099067" : 4098.367, + "99.99520924129062" : 4098.415, + "99.99525309810303" : 4098.479, + "99.99527781739731" : 4098.511, + "99.99530811846772" : 4098.559, + "99.9953312429688" : 4098.607, + "99.99536925220623" : 4098.687, + "99.99541018523117" : 4098.735, + "99.99542560156523" : 4155.583, + "99.995453244647" : 4155.647, + "99.99549338027532" : 4155.727, + "99.99552155495482" : 4155.743, + "99.99555477981271" : 4155.791, + "99.99558481508424" : 4155.823, + "99.99560740798762" : 4155.855, + "99.99563824065574" : 4155.887, + "99.99567864208294" : 4155.935, + "99.99569884279654" : 4172.191, + "99.99573206765443" : 4172.223, + "99.9957706084896" : 4172.271, + "99.99580277015203" : 4172.303, + "99.99582961583721" : 4172.335, + "99.99585247453943" : 4172.351, + "99.99589048377688" : 4172.415, + "99.99595693349265" : 4172.431, + "99.99597314722331" : 4217.215, + "99.99601540924255" : 4217.279, + "99.99604544451408" : 4217.343, + "99.9960792009697" : 4217.407, + "99.99610019907989" : 4217.439, + "99.99612571577076" : 4217.471, + "99.99616106701956" : 4217.503, + "99.99619588667062" : 4217.567, + "99.99622007436717" : 4217.631, + "99.9962487806444" : 4231.359, + "99.99629423225" : 4231.423, + "99.99631682515336" : 4231.455, + "99.99634154444763" : 4231.487, + "99.99637795889188" : 4231.583, + "99.99641809452022" : 4231.647, + "99.9964428138145" : 4231.679, + "99.99647949405761" : 4231.711, + "99.99649597358712" : 4231.743, + "99.99652840104842" : 4251.999, + "99.9965632206995" : 4252.063, + "99.99658687679832" : 4252.127, + "99.99661505147782" : 4252.191, + "99.99664508674935" : 4252.255, + "99.99669213314813" : 4252.351, + "99.99670994167195" : 4252.383, + "99.99674316652985" : 4252.447, + "99.99676549363436" : 4252.511, + "99.99680297127405" : 4273.823, + "99.99683911991944" : 4273.887, + "99.99687792655347" : 4273.951, + "99.99690743022727" : 4274.015, + "99.99692231496361" : 4274.047, + "99.99695367922946" : 4274.111, + "99.99697228514988" : 4274.143, + "99.99698903047826" : 4274.175, + "99.99700497841005" : 4274.207, + "99.9970233185316" : 4274.239, + "99.99703501368158" : 4274.271, + "99.99705574599291" : 4274.687, + "99.9970738203156" : 4274.719, + "99.99708817345422" : 4274.751, + "99.99711741132916" : 4274.815, + "99.99714000423253" : 4274.847, + "99.99717057110179" : 4274.879, + "99.99718519003926" : 4274.911, + "99.99720539075287" : 4274.943, + "99.99722319927669" : 4274.975, + "99.99724552638119" : 4275.007, + "99.99726599289366" : 4275.039, + "99.99728619360727" : 4275.071, + "99.99730134414246" : 4275.103, + "99.99731888686743" : 4312.607, + "99.99733377160376" : 4312.639, + "99.99734971953555" : 4312.671, + "99.99736487007075" : 4312.703, + "99.99738507078435" : 4312.735, + "99.99740287930818" : 4312.767, + "99.99744647032173" : 4312.799, + "99.99747305020806" : 4312.831, + "99.99749830110005" : 4312.863, + "99.99751983080796" : 4312.895, + "99.99754960028064" : 4312.927, + "99.99757405377605" : 4312.959, + "99.99759717827715" : 4313.695, + "99.9976205685771" : 4313.727, + "99.99764475627364" : 4313.791, + "99.99765937521111" : 4313.855, + "99.99766655178043" : 4313.887, + "99.99768595509744" : 4313.919, + "99.99771253498375" : 4313.951, + "99.99772688812236" : 4314.015, + "99.9977497468246" : 4314.079, + "99.99776835274501" : 4314.111, + "99.99777579511318" : 4314.143, + "99.99779254044155" : 4314.207, + "99.99781619654037" : 4314.239, + "99.99784304222555" : 4314.271, + "99.99785367418008" : 4347.103, + "99.99786483773234" : 4347.135, + "99.99788078566412" : 4347.167, + "99.99790337856749" : 4347.231, + "99.99791640271178" : 4347.263, + "99.99793128744813" : 4347.295, + "99.9979459063856" : 4347.327, + "99.99796105692079" : 4347.359, + "99.99797487846168" : 4347.391, + "99.99798843420369" : 4347.423, + "99.9980027873423" : 4347.455, + "99.99801900107296" : 4347.487, + "99.99803707539566" : 4347.519, + "99.99805249172971" : 4347.551, + "99.99807189504672" : 4347.583, + "99.99810113292168" : 4347.615, + "99.99811309387051" : 4347.647, + "99.99813967375682" : 4444.863, + "99.99815827967724" : 4444.895, + "99.99817475920676" : 4444.927, + "99.99819044133969" : 4444.959, + "99.99820665507033" : 4444.991, + "99.99822579258849" : 4445.023, + "99.99823695614074" : 4445.055, + "99.99827097839523" : 4445.087, + "99.99828506573498" : 4445.119, + "99.99830048206903" : 4445.151, + "99.99831616420195" : 4445.183, + "99.99833184633488" : 4445.215, + "99.99836188160641" : 4445.247, + "99.99838261391774" : 4445.279, + "99.99840653581543" : 4476.639, + "99.99841716776996" : 4476.671, + "99.99843391309834" : 4476.703, + "99.99845039262784" : 4476.735, + "99.99847803570961" : 4476.767, + "99.9985099315732" : 4476.799, + "99.99852561370612" : 4476.831, + "99.99854023264359" : 4476.863, + "99.9985537883856" : 4476.895, + "99.99857159690944" : 4476.927, + "99.99859339241623" : 4476.959, + "99.99861678271618" : 4476.991, + "99.99863299644683" : 4477.023, + "99.99864947597635" : 4477.055, + "99.99865213396498" : 4477.087, + "99.99866701870131" : 4570.143, + "99.99868110604106" : 4570.175, + "99.9986938643865" : 4570.207, + "99.9987060911342" : 4570.239, + "99.99872150746826" : 4570.271, + "99.99872894983643" : 4570.303, + "99.99873931599208" : 4570.335, + "99.99875446652729" : 4570.367, + "99.99877333824658" : 4570.399, + "99.9987911467704" : 4570.431, + "99.9988012471272" : 4570.463, + "99.9988163976624" : 4570.495, + "99.99883021920328" : 4570.527, + "99.99884138275554" : 4570.559, + "99.99885919127937" : 4570.591, + "99.99887434181457" : 4570.623, + "99.99889985850542" : 4570.655, + "99.99892165401221" : 4570.687, + "99.99893095697242" : 4588.735, + "99.99894212052467" : 4588.767, + "99.99894876549625" : 4588.799, + "99.99895833425532" : 4588.831, + "99.99896949780758" : 4588.863, + "99.99897747177347" : 4588.895, + "99.99898624313596" : 4588.927, + "99.99899607769389" : 4588.991, + "99.99900272266547" : 4589.023, + "99.99901494941318" : 4589.055, + "99.99903036574723" : 4589.087, + "99.99904152929949" : 4589.119, + "99.99905428764492" : 4589.151, + "99.99906731178922" : 4589.183, + "99.99908538611191" : 4589.215, + "99.99910213144028" : 4589.247, + "99.99911302919368" : 4589.279, + "99.99913535629818" : 4589.311, + "99.99915529121292" : 4589.343, + "99.99918187109922" : 4589.375, + "99.99919117405945" : 4589.407, + "99.99919143985831" : 4597.791, + "99.99920685619237" : 4639.551, + "99.9992246647162" : 4639.583, + "99.99923848625708" : 4639.615, + "99.99925018140706" : 4639.647, + "99.99925656057978" : 4639.679, + "99.99926612933885" : 4639.711, + "99.9992751665002" : 4639.743, + "99.99928420366155" : 4639.775, + "99.99929536721379" : 4639.807, + "99.99930599916831" : 4639.839, + "99.99931131514559" : 4639.871, + "99.9993198207092" : 4639.903, + "99.99933311065236" : 4639.935, + "99.99934826118756" : 4639.967, + "99.99936394332049" : 4639.999, + "99.99937537267161" : 4640.031, + "99.99939876297157" : 4640.063, + "99.99941896368516" : 4640.095, + "99.99945085954873" : 4640.127, + "99.99946069410667" : 4640.159, + "99.99946680748053" : 4743.775, + "99.9995340545929" : 4743.807, + "99.99954893932924" : 4743.839, + "99.99958402477917" : 4743.871, + "99.99960874407344" : 4743.903, + "99.9996544614779" : 4743.935, + "99.99966562503016" : 4743.967, + "99.9997302141539" : 4743.999, + "99.9997411119073" : 4854.303, + "99.99975892043112" : 4854.335, + "99.99977885534587" : 4854.367, + "99.99979825866286" : 4854.399, + "99.99982855973327" : 4854.431, + "99.99984716565369" : 4854.463, + "99.99986125299344" : 4854.495, + "99.99987799832182" : 4854.527, + "99.99989341465587" : 4854.559, + "99.99991228637516" : 4854.591, + "99.99993248708876" : 4854.623, + "99.999949498216" : 4854.655, + "99.99998936804548" : 4854.687, + "99.99999973420114" : 4854.719, + "100.0" : 4855.903 + }, + "endToEndLatencyAvg" : [ 240.63995709609793, 241.57261763197081, 241.9287416364989, 232.92397064222789, 227.19955824000044, 238.97055635020493, 229.49854146080793, 235.8991420834069, 279.5131191077835, 226.59886164808108, 222.8290176083101, 235.77201969023426, 231.17453820771303, 227.14368178952282, 225.99301587260288, 226.6129185801007, 240.45584299944898, 227.92704287322266, 234.03306393897932, 237.77192055808965, 241.39508091130944, 231.02007799612744, 230.9017263186139, 241.43324662335314, 235.4717217218658, 245.49517748186497, 235.7162020305753, 226.18307016729608, 226.18505196960987, 240.48593258906027, 226.35220061639893, 243.24918629146686, 235.5817894722915, 230.81594212838885, 230.74065465282305, 238.3062969009266, 222.56638249382655, 232.31879087351174, 234.1536286227114, 229.86025119847235, 237.59129802615217, 237.7296147525543, 233.9854727084998, 231.76861161172863, 233.85074642944207, 243.83157716627943, 234.5647261889282, 232.66488587096046, 234.91677250400986, 229.79775566330193, 227.81829453288586, 239.53919969334183, 241.72792332745675, 229.85187606453508, 238.95859690314106, 227.79313028595257, 233.57887055963238, 231.692822072578, 228.33265157357724, 230.96862133941443 ], + "endToEndLatency50pct" : [ 121.0, 125.0, 94.0, 90.0, 106.0, 101.0, 120.0, 94.0, 104.0, 90.0, 103.0, 91.0, 94.0, 95.0, 108.0, 124.0, 92.0, 128.0, 106.0, 121.0, 87.0, 95.0, 110.0, 104.0, 92.0, 116.0, 78.0, 119.0, 108.0, 128.0, 102.0, 115.0, 110.0, 87.0, 86.0, 85.0, 92.0, 94.0, 112.0, 101.0, 102.0, 85.0, 100.0, 89.0, 95.0, 117.0, 94.0, 101.0, 75.0, 88.0, 88.0, 86.0, 98.0, 90.0, 105.0, 111.0, 89.0, 85.0, 103.0, 101.0 ], + "endToEndLatency75pct" : [ 294.001, 297.001, 281.001, 262.0, 279.001, 284.001, 275.001, 279.001, 374.001, 264.001, 272.001, 267.001, 278.001, 268.001, 276.001, 291.001, 279.001, 291.001, 295.001, 303.001, 298.001, 269.001, 296.001, 307.001, 286.001, 313.001, 271.001, 291.001, 280.001, 311.001, 288.001, 290.001, 298.001, 285.001, 268.001, 277.001, 265.001, 266.001, 298.001, 285.001, 272.001, 283.001, 280.001, 272.001, 271.001, 293.001, 287.001, 298.001, 253.0, 262.0, 258.0, 297.001, 290.001, 259.0, 298.001, 293.001, 266.001, 260.0, 274.001, 275.001 ], + "endToEndLatency95pct" : [ 871.003, 899.003, 1005.003, 971.003, 857.003, 922.003, 845.003, 965.003, 1115.007, 903.003, 862.003, 972.003, 913.003, 924.003, 832.003, 787.003, 954.003, 779.003, 863.003, 852.003, 962.003, 933.003, 844.003, 935.003, 934.003, 901.003, 994.003, 789.003, 853.003, 830.003, 868.003, 930.003, 888.003, 923.003, 937.003, 1004.003, 899.003, 901.003, 838.003, 893.003, 954.003, 977.003, 919.003, 943.003, 947.003, 948.003, 960.003, 864.003, 977.003, 945.003, 957.003, 974.003, 1000.003, 920.003, 906.003, 820.003, 970.003, 972.003, 864.003, 891.003 ], + "endToEndLatency99pct" : [ 1505.007, 1485.007, 1663.007, 1665.007, 1363.007, 1703.007, 1411.007, 1577.007, 1838.007, 1499.007, 1342.007, 1742.007, 1556.007, 1583.007, 1409.007, 1250.007, 1669.007, 1260.007, 1542.007, 1424.007, 1631.007, 1595.007, 1367.007, 1489.007, 1585.007, 1574.007, 1719.007, 1306.007, 1497.007, 1387.007, 1335.007, 1545.007, 1382.007, 1498.007, 1695.007, 1646.007, 1463.007, 1657.007, 1448.007, 1426.007, 1663.007, 1656.007, 1629.007, 1606.007, 1616.007, 1536.007, 1605.007, 1596.007, 1899.007, 1639.007, 1597.007, 1633.007, 1632.007, 1630.007, 1589.007, 1378.007, 1698.007, 1576.007, 1508.007, 1502.007 ], + "endToEndLatency999pct" : [ 2576.015, 2134.015, 2666.015, 2665.007, 1935.007, 2671.007, 2081.007, 2063.007, 2499.007, 2405.007, 2179.007, 2450.015, 2730.015, 2313.007, 2162.015, 1867.007, 2913.007, 1985.007, 2647.007, 2143.007, 2469.007, 2992.015, 2010.007, 2280.015, 2470.015, 2396.015, 2546.015, 1981.007, 2564.015, 2256.015, 2096.007, 2786.015, 2167.007, 2496.015, 2681.007, 3285.007, 2370.015, 4237.023, 2240.015, 2188.015, 2255.007, 2490.015, 2429.007, 2975.007, 2576.015, 2193.007, 2225.007, 2437.007, 3671.007, 2617.007, 3461.007, 2390.015, 2356.015, 3050.015, 2382.015, 2067.007, 2534.015, 2775.007, 2472.015, 2900.015 ], + "endToEndLatency9999pct" : [ 3394.015, 2615.007, 3084.015, 3540.015, 2665.007, 3236.015, 2621.007, 2251.007, 2926.015, 3136.015, 2654.015, 2855.007, 3153.007, 2705.007, 2898.015, 2049.007, 3830.015, 2680.015, 3804.015, 3829.007, 2935.007, 3094.015, 2320.015, 2836.015, 2937.007, 3430.015, 4012.015, 2299.007, 3669.007, 2464.015, 2337.007, 3702.015, 2891.007, 3751.007, 3010.015, 4353.023, 3133.007, 4859.007, 3073.007, 2960.015, 2559.007, 3146.015, 3328.015, 3989.007, 2975.007, 2566.015, 2899.007, 3812.015, 4749.023, 3101.007, 3797.007, 2937.007, 3018.015, 3878.015, 2753.007, 2753.007, 2978.015, 4257.023, 4580.031, 3428.015 ], + "endToEndLatencyMax" : [ 3407.007, 2623.007, 3085.007, 3543.007, 2675.007, 3243.007, 2622.015, 2251.007, 2955.007, 3140.015, 2658.015, 2856.015, 3155.007, 2717.007, 2901.007, 2054.007, 3841.007, 2690.015, 3806.015, 3834.015, 2936.015, 3095.007, 2321.007, 2837.007, 2945.007, 3442.015, 4013.007, 2306.015, 3676.015, 2468.015, 2338.015, 3703.007, 2895.007, 3761.007, 3012.015, 4354.015, 3135.007, 4860.031, 3074.015, 2962.015, 2569.007, 3150.015, 3329.007, 3995.007, 2977.007, 2572.015, 2906.015, 3823.007, 4752.031, 3111.007, 3797.007, 2938.015, 3023.007, 3890.015, 2753.007, 2754.015, 2984.015, 4259.007, 4582.015, 3437.007 ], + "aggregatedEndToEndLatencyQuantiles" : { + "0.015512073010195951" : 1.0, + "1.5497746649522735" : 18.0, + "3.3655935687388117" : 19.0, + "4.834906448359793" : 20.0, + "5.790250905714382" : 21.0, + "6.482943468228626" : 22.0, + "7.106217769708637" : 23.0, + "7.710071745723184" : 24.0, + "8.337412447795765" : 25.0, + "9.140121891653514" : 26.0, + "10.28719425306999" : 27.0, + "11.750938989282005" : 28.0, + "13.339720427158172" : 29.0, + "14.796840484085973" : 30.0, + "16.081293607322174" : 31.0, + "17.21995966430429" : 32.0, + "18.26876727864751" : 33.0, + "19.258041023435442" : 34.0, + "20.179384428655727" : 35.0, + "21.053709196577852" : 36.0, + "21.895678981969557" : 37.0, + "22.727615530576607" : 38.0, + "23.55174062438171" : 39.0, + "24.361203658190217" : 40.0, + "25.162328696927872" : 41.0, + "25.92866380341103" : 42.0, + "26.64307847772525" : 43.0, + "27.332391188619447" : 44.0, + "27.982103871728476" : 45.0, + "28.606282674235775" : 46.0, + "29.198814572595463" : 47.0, + "29.77842563524" : 48.0, + "30.333135941422398" : 49.0, + "30.91108897367956" : 50.0, + "31.467385013957994" : 51.0, + "32.0188815905133" : 52.0, + "32.57296993595404" : 53.0, + "33.10468018706899" : 54.0, + "33.624981445502364" : 55.0, + "34.15067967524315" : 56.0, + "34.66097879492895" : 57.0, + "35.14478584235761" : 58.0, + "35.61757222387544" : 59.0, + "36.07950299829465" : 60.0, + "36.53963566826202" : 61.0, + "37.44055377640821" : 63.0, + "37.886928621611084" : 64.0, + "38.33187588085522" : 65.0, + "38.7531386624209" : 66.0, + "39.173025422294465" : 67.0, + "39.59274021268091" : 68.0, + "40.37827902155071" : 70.0, + "40.758295971522536" : 71.0, + "41.140249771034725" : 72.0, + "41.50458533646112" : 73.0, + "42.24517605255307" : 75.0, + "42.60973674650433" : 76.0, + "43.33508437431709" : 78.0, + "43.68486977952135" : 79.0, + "44.03227100188259" : 80.0, + "44.69953759664173" : 82.0, + "45.0253442888936" : 83.0, + "45.658907256334636" : 85.0, + "46.28585378414232" : 87.0, + "46.59158523158365" : 88.0, + "47.20207956879855" : 90.0, + "47.51195609220833" : 91.0, + "48.1139016587677" : 93.0, + "48.69830394548451" : 95.0, + "49.23995865779107" : 97.0, + "49.50233518881588" : 98.0, + "50.04254663324756" : 100.0, + "50.30168391830717" : 101.0, + "50.57104102837392" : 102.0, + "50.8368984131905" : 103.0, + "51.09478539768226" : 104.0, + "51.34251608221698" : 105.0, + "51.59629201252446" : 106.0, + "51.84319687140776" : 107.0, + "52.093586305215474" : 108.0, + "52.34241445808452" : 109.0, + "52.58281397972335" : 110.0, + "52.818271837213075" : 111.0, + "53.04687536837552" : 112.0, + "53.280907500472836" : 113.0, + "53.51361012503607" : 114.0, + "53.955690783169615" : 116.0, + "54.180182728557405" : 117.0, + "54.399091380210464" : 118.0, + "54.6193983803515" : 119.0, + "54.824062004659105" : 120.0, + "55.0380494583926" : 121.0, + "55.459172431689005" : 123.0, + "55.67367738865498" : 124.0, + "55.88278617169911" : 125.0, + "56.086848833084964" : 126.0, + "56.285784305279975" : 127.0, + "56.700143322613265" : 129.0, + "56.899053810060536" : 130.0, + "57.0905462195852" : 131.0, + "57.28463624548944" : 132.0, + "57.657985723151654" : 134.0, + "57.839460046217425" : 135.0, + "58.03705165793816" : 136.0, + "58.391453659775685" : 138.0, + "58.56310100312327" : 139.0, + "58.912259397477285" : 141.0, + "59.09302218682279" : 142.0, + "59.27285655357402" : 143.0, + "59.63485657667694" : 145.0, + "59.80857526193039" : 146.0, + "60.153260323257875" : 148.0, + "60.32666643336937" : 149.0, + "60.64497371437086" : 151.0, + "60.81408510582266" : 152.0, + "61.14166598095938" : 154.0, + "61.29743790927376" : 155.0, + "61.61108792697811" : 157.0, + "61.77324266095495" : 158.0, + "62.083871650544054" : 160.0, + "62.37714155635639" : 162.0, + "62.52232287537533" : 163.0, + "62.80876025006585" : 165.0, + "63.094148531146416" : 167.0, + "63.39680977836259" : 169.0, + "63.53600618711661" : 170.0, + "63.8026968398499" : 172.0, + "64.07213209370214" : 174.0, + "64.3396427245927" : 176.0, + "64.60478246239967" : 178.0, + "64.86259396105783" : 180.0, + "65.12534925022659" : 182.0, + "65.37659720249394" : 184.0, + "65.50958171189187" : 185.0, + "65.76266551152787" : 187.0, + "66.0002127849963" : 189.0, + "66.3634859670533" : 192.0, + "66.61450241171126" : 194.0, + "66.85262167642585" : 196.0, + "67.08168210951774" : 198.0, + "67.30491737525315" : 200.0, + "67.53822229171408" : 202.0, + "67.77180522994242" : 204.0, + "68.00795123117581" : 206.0, + "68.33757660290433" : 209.0, + "68.56074276189067" : 211.0, + "68.76951956674407" : 213.0, + "69.08363552341427" : 216.0, + "69.29653959595846" : 218.0, + "69.50240727247106" : 220.0, + "69.81930849692411" : 223.0, + "70.01969069233145" : 225.0, + "70.31748602702731" : 228.0, + "70.51455694597331" : 230.0, + "70.80512982800548" : 233.0, + "71.09032381280306" : 236.0, + "71.28493426568686" : 238.0, + "71.56028718362126" : 241.0, + "71.84024872433326" : 244.0, + "72.01678988869598" : 246.0, + "72.28621238437916" : 249.0, + "72.54795339910768" : 252.0, + "72.7942110467064" : 255.0, + "73.01866312281587" : 258.0, + "73.25762043976059" : 261.0, + "73.51337893638089" : 264.001, + "73.8265651414809" : 268.001, + "74.0742772203524" : 271.001, + "74.30686767934598" : 274.001, + "74.53599775077733" : 277.001, + "74.75477430222158" : 280.001, + "75.06478877333431" : 284.001, + "75.14056113415062" : 285.001, + "75.29374714107372" : 287.001, + "75.43861030325174" : 289.001, + "75.51837862893561" : 290.001, + "75.66718459694341" : 292.001, + "75.8185719678243" : 294.001, + "75.89584421089069" : 295.001, + "76.03476817957625" : 297.001, + "76.18287882737032" : 299.001, + "76.25603629511977" : 300.001, + "76.38924885678965" : 302.001, + "76.51982526177756" : 304.001, + "76.65809696906994" : 306.001, + "76.79228818862477" : 308.001, + "76.93172328145828" : 310.001, + "77.0601512639356" : 312.001, + "77.1258659348099" : 313.001, + "77.25652393892075" : 315.001, + "77.38344539426828" : 317.001, + "77.50651149040308" : 319.001, + "77.63222703297929" : 321.001, + "77.75540051037035" : 323.001, + "77.88730403073566" : 325.001, + "78.01074702444811" : 327.001, + "78.14037985651599" : 329.001, + "78.25747406635014" : 331.001, + "78.37820541754705" : 333.001, + "78.55350053406494" : 336.001, + "78.67513851265063" : 338.001, + "78.78986023463007" : 340.001, + "78.9120781783176" : 342.001, + "79.02016724715716" : 344.001, + "79.13770692972764" : 346.001, + "79.25556264277753" : 348.001, + "79.425607241137" : 351.001, + "79.53362640584191" : 353.001, + "79.63914045089294" : 355.001, + "79.757577989611" : 357.001, + "79.91911049705098" : 360.001, + "80.02522151809592" : 362.001, + "80.13116827771421" : 364.001, + "80.29320898555508" : 367.001, + "80.4068024069583" : 369.001, + "80.5207102640698" : 371.001, + "80.67671077624651" : 374.001, + "80.79306262011849" : 376.001, + "80.90128564973318" : 378.001, + "81.00408539431676" : 380.001, + "81.15847731401118" : 383.001, + "81.26089962942676" : 385.001, + "81.42112176658624" : 388.001, + "81.52503811675773" : 390.001, + "81.66990287370687" : 393.001, + "81.7701281260923" : 395.001, + "81.91913423787724" : 398.001, + "82.01791701977336" : 400.001, + "82.16445761538752" : 403.001, + "82.26407951269451" : 405.001, + "82.41108312352746" : 408.001, + "82.50829824540037" : 410.001, + "82.6386527114057" : 413.001, + "82.77698900692894" : 416.001, + "82.9111180304096" : 419.001, + "83.04345001261916" : 422.001, + "83.13295733981373" : 424.001, + "83.27315792279083" : 427.001, + "83.39589336971085" : 430.001, + "83.53744419224675" : 433.001, + "83.62868184612003" : 435.001, + "83.76266601122282" : 438.001, + "83.91418521651732" : 442.001, + "84.04091662830488" : 445.001, + "84.16576647595136" : 448.001, + "84.2878424850081" : 451.001, + "84.40208072553921" : 454.001, + "84.53148577113035" : 457.001, + "84.6505463337708" : 460.001, + "84.76697951097056" : 463.001, + "84.87719892824788" : 466.001, + "85.0327220722656" : 470.001, + "85.14174806914546" : 473.001, + "85.26108612196298" : 476.001, + "85.3771987501651" : 479.001, + "85.51916128944838" : 483.001, + "85.63091461075993" : 486.001, + "85.77962755045169" : 490.001, + "85.89410606983343" : 493.001, + "86.00041484249878" : 496.001, + "86.13356627127524" : 500.001, + "86.27643145101948" : 504.001, + "86.37850690371373" : 507.001, + "86.51010103847935" : 511.001, + "86.65369742078781" : 515.001, + "86.76061858556804" : 518.001, + "86.8906814742513" : 522.001, + "87.00192925311387" : 525.003, + "87.13403557520819" : 529.003, + "87.25353602888603" : 533.003, + "87.39091599332018" : 537.003, + "87.51505058611374" : 541.003, + "87.58035407183105" : 543.003, + "87.64229524841078" : 545.003, + "87.70317537059704" : 547.003, + "87.76385853854843" : 549.003, + "87.83379191065845" : 551.003, + "87.89593482578643" : 553.003, + "87.95101396797838" : 555.003, + "88.01040244756543" : 557.003, + "88.07348069596259" : 559.003, + "88.13333883564813" : 561.003, + "88.19038991234537" : 563.003, + "88.2515966968186" : 565.003, + "88.34106814166269" : 568.003, + "88.40043774979132" : 570.003, + "88.45784392886073" : 572.003, + "88.51811378529364" : 574.003, + "88.57296806475591" : 576.003, + "88.62754166449889" : 578.003, + "88.69465920237937" : 580.003, + "88.77753148427736" : 583.003, + "88.8400954189843" : 585.003, + "88.88758185581464" : 587.003, + "88.94629760777897" : 589.003, + "89.00357966049523" : 591.003, + "89.08238554180066" : 594.003, + "89.13559587802057" : 596.003, + "89.19049188732748" : 598.003, + "89.26829704974729" : 601.003, + "89.32203020510346" : 603.003, + "89.38183518575126" : 605.003, + "89.45577116760855" : 608.003, + "89.50011563951277" : 610.003, + "89.58453511520443" : 613.003, + "89.63295954325585" : 615.003, + "89.71009995190862" : 618.003, + "89.76362126849935" : 620.003, + "89.81538913422996" : 622.003, + "89.8875623623955" : 625.003, + "89.94182551335803" : 627.003, + "90.01240317300555" : 630.003, + "90.08428296328273" : 633.003, + "90.13064987077809" : 635.003, + "90.20319069368966" : 638.003, + "90.25067447256812" : 640.003, + "90.32407966143349" : 643.003, + "90.39290200965456" : 646.003, + "90.44125812834247" : 648.003, + "90.5090212827364" : 651.003, + "90.57497011917198" : 654.003, + "90.64242495114698" : 657.003, + "90.70706182253092" : 660.003, + "90.75110408530554" : 662.003, + "90.8156790264105" : 665.003, + "90.88479428092958" : 668.003, + "90.95288675556236" : 671.003, + "91.00032003335495" : 673.003, + "91.0659416759132" : 676.003, + "91.13234262996482" : 679.003, + "91.1984211744525" : 682.003, + "91.25852225094057" : 685.003, + "91.31767390701444" : 688.003, + "91.37580012525014" : 691.003, + "91.44223270892923" : 694.003, + "91.50851139719403" : 697.003, + "91.57552102222789" : 700.003, + "91.63820934908316" : 703.003, + "91.70022760626762" : 706.003, + "91.76346692654916" : 709.003, + "91.82905906584143" : 712.003, + "91.89032910956959" : 715.003, + "91.95456622498966" : 718.003, + "92.01316582445651" : 721.003, + "92.07132420391005" : 724.003, + "92.13650143691271" : 727.003, + "92.19592048294646" : 730.003, + "92.25160404339762" : 733.003, + "92.32533297080288" : 737.003, + "92.37530326367201" : 740.003, + "92.45420004693199" : 744.003, + "92.51141299289917" : 747.003, + "92.56631910242325" : 750.003, + "92.63811490142079" : 754.003, + "92.69174439665335" : 757.003, + "92.76308568587814" : 761.003, + "92.8202917211704" : 764.003, + "92.89037500176687" : 768.003, + "92.94887439644756" : 771.003, + "93.00475730329029" : 774.003, + "93.07357832253541" : 778.003, + "93.12615553461573" : 781.003, + "93.1914247327537" : 785.003, + "93.25500373928645" : 789.003, + "93.3156975390454" : 793.003, + "93.37904477217357" : 797.003, + "93.43884071578495" : 801.003, + "93.50363546951101" : 805.003, + "93.56351035429346" : 809.003, + "93.63252061971296" : 813.003, + "93.69887532540176" : 817.003, + "93.76134835815415" : 821.003, + "93.79412409446836" : 823.003, + "93.82626404869109" : 825.003, + "93.84498054849676" : 826.003, + "93.89134373485948" : 829.003, + "93.9080144090974" : 830.003, + "93.9409886944176" : 832.003, + "93.97291973362198" : 834.003, + "94.00240306493323" : 836.003, + "94.04633927542754" : 839.003, + "94.07424670706473" : 841.003, + "94.10489820823051" : 843.003, + "94.13680931279573" : 845.003, + "94.16650820400505" : 847.003, + "94.19693457664597" : 849.003, + "94.2250772370252" : 851.003, + "94.25139946615674" : 853.003, + "94.29120707998432" : 856.003, + "94.31949805407886" : 858.003, + "94.34690339860454" : 860.003, + "94.38753657228834" : 863.003, + "94.41537091024864" : 865.003, + "94.44184730058964" : 867.003, + "94.48090351141865" : 870.003, + "94.50539813283238" : 872.003, + "94.53250286299959" : 874.003, + "94.5693580238706" : 877.003, + "94.59487781732733" : 879.003, + "94.63711665974634" : 882.003, + "94.66263379525117" : 884.003, + "94.6879175625803" : 886.003, + "94.73069437446131" : 889.003, + "94.75610598927622" : 891.003, + "94.79119520691323" : 894.003, + "94.81377822932954" : 896.003, + "94.8493458783063" : 899.003, + "94.8900122763887" : 902.003, + "94.91721933770356" : 904.003, + "94.93870754973744" : 906.003, + "94.97259112039832" : 909.003, + "95.0009453537478" : 911.003, + "95.03598220973264" : 914.003, + "95.07001303092808" : 917.003, + "95.09730541249853" : 919.003, + "95.12813207269369" : 922.003, + "95.16355353431663" : 925.003, + "95.2016071656937" : 928.003, + "95.22859042745964" : 930.003, + "95.25495438643581" : 932.003, + "95.28207453272395" : 934.003, + "95.31660292251273" : 937.003, + "95.34536648045287" : 940.003, + "95.37864244331227" : 943.003, + "95.40916237585962" : 946.003, + "95.44570549317906" : 949.003, + "95.4790210595216" : 952.003, + "95.50755762837056" : 954.003, + "95.53810148248489" : 957.003, + "95.56833355884284" : 960.003, + "95.59969712531925" : 963.003, + "95.63381379836066" : 966.003, + "95.6661966893859" : 969.003, + "95.6913845046519" : 972.003, + "95.72546848488508" : 975.003, + "95.75319065727572" : 978.003, + "95.78398489045786" : 981.003, + "95.81261528500843" : 984.003, + "95.84947310383134" : 988.003, + "95.87520526764388" : 991.003, + "95.91455411897567" : 995.003, + "95.93781332435215" : 997.003, + "95.97226835466883" : 1000.003, + "96.0000394333742" : 1003.003, + "96.03453220660768" : 1006.003, + "96.07122416923282" : 1010.003, + "96.09797087328077" : 1013.003, + "96.13038884927093" : 1016.003, + "96.1576501328043" : 1019.003, + "96.18768153379474" : 1022.003, + "96.2256572871815" : 1026.003, + "96.25730791246175" : 1030.003, + "96.28570493883662" : 1033.003, + "96.31954704544806" : 1037.003, + "96.3453002070805" : 1040.003, + "96.37964440080347" : 1044.003, + "96.40709758846312" : 1047.003, + "96.44625400407827" : 1051.007, + "96.46952756239493" : 1054.007, + "96.50358762106114" : 1057.007, + "96.53343535757615" : 1061.007, + "96.5684626449342" : 1065.007, + "96.59430511375005" : 1068.007, + "96.63172987371055" : 1073.007, + "96.66357213732189" : 1077.007, + "96.68927081094064" : 1080.007, + "96.72103998087508" : 1084.007, + "96.75887566019738" : 1088.007, + "96.78678282603938" : 1092.007, + "96.81653806582872" : 1096.007, + "96.84427778070182" : 1100.007, + "96.88084189584117" : 1105.007, + "96.89659424770198" : 1107.007, + "96.90949807252505" : 1109.007, + "96.92547714768187" : 1111.007, + "96.9395956565175" : 1113.007, + "96.95636228281855" : 1115.007, + "96.97012329712531" : 1117.007, + "96.98689417614939" : 1119.007, + "97.00268054979438" : 1121.007, + "97.01855809118909" : 1123.007, + "97.03443164565597" : 1125.007, + "97.05053272080443" : 1127.007, + "97.06538349538502" : 1129.007, + "97.08441150715191" : 1132.007, + "97.09658572418188" : 1134.007, + "97.11202576669592" : 1136.007, + "97.12708359572856" : 1138.007, + "97.14332713709817" : 1140.007, + "97.1563758202991" : 1142.007, + "97.17198889548102" : 1144.007, + "97.18859631046402" : 1147.007, + "97.21021901486341" : 1150.007, + "97.22203042146074" : 1152.007, + "97.24058770994836" : 1155.007, + "97.2519717178822" : 1157.007, + "97.27049259242897" : 1160.007, + "97.28342166779495" : 1162.007, + "97.3011262853171" : 1165.007, + "97.31827831464183" : 1167.007, + "97.3296216559118" : 1169.007, + "97.34836101410369" : 1172.007, + "97.36071544027163" : 1174.007, + "97.37835865910516" : 1177.007, + "97.39164469740965" : 1179.007, + "97.40957258289032" : 1182.007, + "97.4268604335565" : 1185.007, + "97.4406320796708" : 1187.007, + "97.45495498500658" : 1189.007, + "97.468752147459" : 1191.007, + "97.48478943176215" : 1193.007, + "97.50085223240342" : 1196.007, + "97.52202627452421" : 1199.007, + "97.53680209486159" : 1201.007, + "97.55220200230214" : 1203.007, + "97.5662888815103" : 1205.007, + "97.58009428361358" : 1207.007, + "97.59465268348657" : 1209.007, + "97.61217842084667" : 1212.007, + "97.62621533055935" : 1215.007, + "97.64487468439944" : 1219.007, + "97.65631211716622" : 1221.007, + "97.6742376104902" : 1224.007, + "97.68969306912518" : 1227.007, + "97.70444789164266" : 1230.007, + "97.72091709312751" : 1233.007, + "97.73698520967257" : 1236.007, + "97.75504519536204" : 1239.007, + "97.76639438412616" : 1241.007, + "97.78326148100857" : 1244.007, + "97.80077153645253" : 1247.007, + "97.81871909077718" : 1250.007, + "97.83074393091107" : 1253.007, + "97.84472475783892" : 1256.007, + "97.86519497429991" : 1260.007, + "97.87677407590229" : 1262.007, + "97.89353831004665" : 1265.007, + "97.90968616514832" : 1268.007, + "97.9241789136097" : 1271.007, + "97.94210281216253" : 1275.007, + "97.95377733423767" : 1277.007, + "97.97084616966833" : 1280.007, + "97.98603237777712" : 1283.007, + "98.0008839497433" : 1286.007, + "98.01564594873086" : 1289.007, + "98.03386541153358" : 1292.007, + "98.04691037360188" : 1295.007, + "98.0668747818187" : 1299.007, + "98.08178403134083" : 1302.007, + "98.09541826134256" : 1305.007, + "98.11030863940628" : 1308.007, + "98.12684242912201" : 1311.007, + "98.14590526005861" : 1314.007, + "98.1612759300284" : 1317.007, + "98.17411330605428" : 1320.007, + "98.19224957496293" : 1324.007, + "98.20504017103559" : 1326.007, + "98.22435736796783" : 1330.007, + "98.23824649555556" : 1333.007, + "98.25422477332681" : 1336.007, + "98.26594793592147" : 1339.007, + "98.28284639663616" : 1343.007, + "98.2976891973611" : 1347.007, + "98.3172363071316" : 1351.007, + "98.3315251906832" : 1354.007, + "98.34593102411785" : 1358.007, + "98.36359045645789" : 1362.007, + "98.37816214609032" : 1365.007, + "98.3913487769942" : 1368.007, + "98.40726113755865" : 1372.007, + "98.42233571168818" : 1376.007, + "98.43852423345372" : 1380.007, + "98.44782865983083" : 1382.007, + "98.45531611029772" : 1384.007, + "98.46259384836067" : 1386.007, + "98.47339337267447" : 1388.007, + "98.47786856626732" : 1389.007, + "98.4871006963531" : 1392.007, + "98.49366530592465" : 1394.007, + "98.50052866928836" : 1396.007, + "98.51044442459958" : 1399.007, + "98.51923001876828" : 1401.007, + "98.52825482860683" : 1403.007, + "98.53159560833414" : 1404.007, + "98.54327225677078" : 1407.007, + "98.54708136762065" : 1408.007, + "98.55671591162219" : 1411.007, + "98.56432669105664" : 1413.007, + "98.57169798902603" : 1415.007, + "98.58094713000389" : 1418.007, + "98.58877081138452" : 1420.007, + "98.59647647970135" : 1422.007, + "98.60358889315691" : 1424.007, + "98.6098906312868" : 1426.007, + "98.61989542798625" : 1429.007, + "98.62633697438542" : 1431.007, + "98.63448306533" : 1434.007, + "98.64079304311075" : 1436.007, + "98.65066148687838" : 1439.007, + "98.65810561272949" : 1441.007, + "98.66534294992375" : 1443.007, + "98.67545486208427" : 1446.007, + "98.68194318843666" : 1448.007, + "98.6895898502216" : 1450.007, + "98.69628496523083" : 1452.007, + "98.70450388405712" : 1455.007, + "98.71210031055138" : 1457.007, + "98.7216641530327" : 1460.007, + "98.72793851425816" : 1462.007, + "98.73596925009082" : 1465.007, + "98.74354334978922" : 1467.007, + "98.75034398548839" : 1469.007, + "98.76141515248509" : 1472.007, + "98.76588503017416" : 1473.007, + "98.77555465914061" : 1476.007, + "98.78200896370885" : 1478.007, + "98.79259133335343" : 1481.007, + "98.80022603435486" : 1483.007, + "98.80568918866427" : 1485.007, + "98.81640817703588" : 1488.007, + "98.82093307432903" : 1489.007, + "98.83036056387854" : 1492.007, + "98.83780070280181" : 1495.007, + "98.84393791370988" : 1497.007, + "98.85267486735903" : 1499.007, + "98.86030903677009" : 1502.007, + "98.86955419082011" : 1506.007, + "98.87729839943931" : 1509.007, + "98.88463062551597" : 1511.007, + "98.89179646380445" : 1513.007, + "98.90158543481066" : 1516.007, + "98.90849797028427" : 1518.007, + "98.91564493711438" : 1521.007, + "98.92425803020556" : 1524.007, + "98.93050395134583" : 1526.007, + "98.9378614279654" : 1529.007, + "98.94804085210386" : 1532.007, + "98.9539141283895" : 1534.007, + "98.96222341757998" : 1537.007, + "98.97018478086838" : 1540.007, + "98.9776331594425" : 1543.007, + "98.98461506746038" : 1546.007, + "98.99417093608605" : 1550.007, + "99.00163924929934" : 1553.007, + "99.0085507215922" : 1556.007, + "99.01674199771887" : 1559.007, + "99.02715239787635" : 1563.007, + "99.03135887253339" : 1564.007, + "99.04080549933647" : 1567.007, + "99.04892182121992" : 1571.007, + "99.05468904522525" : 1573.007, + "99.06333695748617" : 1577.007, + "99.07123771947154" : 1580.007, + "99.07978675592226" : 1584.007, + "99.08626019774407" : 1587.007, + "99.09417212312736" : 1591.007, + "99.10156681107337" : 1594.007, + "99.11065727232355" : 1598.007, + "99.11795042650745" : 1601.007, + "99.1273058855608" : 1606.007, + "99.1331047391936" : 1608.007, + "99.14198601963024" : 1611.007, + "99.14902374463776" : 1614.007, + "99.1589838877455" : 1618.007, + "99.16637139922142" : 1621.007, + "99.17316033993227" : 1624.007, + "99.18124210844117" : 1628.007, + "99.18871095324484" : 1631.007, + "99.1955612926443" : 1635.007, + "99.2040869391184" : 1641.007, + "99.21140640702599" : 1644.007, + "99.21901080737591" : 1647.007, + "99.22365690727513" : 1649.007, + "99.22812253224119" : 1652.007, + "99.23071270635548" : 1654.007, + "99.23605412646845" : 1657.007, + "99.2387702875022" : 1658.007, + "99.24230855305474" : 1660.007, + "99.24752398624824" : 1662.007, + "99.25173285306198" : 1664.007, + "99.2541191622665" : 1665.007, + "99.25844524475848" : 1668.007, + "99.26398893501009" : 1670.007, + "99.26571740112247" : 1671.007, + "99.26994859473207" : 1674.007, + "99.27352354002065" : 1676.007, + "99.27884210174739" : 1679.007, + "99.28190804924954" : 1681.007, + "99.28715218832342" : 1684.007, + "99.28970515111129" : 1687.007, + "99.29315543845635" : 1689.007, + "99.29699431836737" : 1691.007, + "99.30130950325659" : 1694.007, + "99.30610843538933" : 1697.007, + "99.30886552888217" : 1699.007, + "99.31449719734124" : 1701.007, + "99.31666130176798" : 1703.007, + "99.32039997689283" : 1705.007, + "99.32460113564609" : 1708.007, + "99.32878528350727" : 1710.007, + "99.33334579735572" : 1712.007, + "99.33629373179406" : 1714.007, + "99.34200301244825" : 1717.007, + "99.34548386624002" : 1719.007, + "99.34989606637315" : 1721.007, + "99.35184992680558" : 1722.007, + "99.35606942542687" : 1725.007, + "99.35957845350865" : 1727.007, + "99.36525610453538" : 1730.007, + "99.36729767738011" : 1732.007, + "99.37165087098133" : 1735.007, + "99.37592166807404" : 1738.007, + "99.3793156068391" : 1740.007, + "99.38325495733145" : 1743.007, + "99.38696200282884" : 1746.007, + "99.39149886090549" : 1751.007, + "99.39567689547732" : 1754.007, + "99.39902086474689" : 1756.007, + "99.40238902137864" : 1759.007, + "99.40686926508008" : 1763.007, + "99.41160759590979" : 1766.007, + "99.41441519048847" : 1769.007, + "99.4193587152039" : 1772.007, + "99.42219156032552" : 1774.007, + "99.42620506767553" : 1779.007, + "99.43114008694491" : 1783.007, + "99.43412124578184" : 1786.007, + "99.4380675069491" : 1792.007, + "99.44264875282227" : 1795.007, + "99.4468881860827" : 1798.007, + "99.45077065640466" : 1800.007, + "99.45361679128571" : 1802.007, + "99.45775150124179" : 1805.007, + "99.46100855548464" : 1807.007, + "99.46490484715642" : 1810.007, + "99.46978883374956" : 1814.007, + "99.47342464613637" : 1816.007, + "99.47690363936182" : 1819.007, + "99.48184424033016" : 1822.007, + "99.48469010941602" : 1825.007, + "99.48875278887596" : 1829.007, + "99.49260336377526" : 1831.007, + "99.49664371643934" : 1834.007, + "99.50221292302906" : 1838.007, + "99.50499606445038" : 1840.007, + "99.50817816445" : 1843.007, + "99.51394645163609" : 1847.007, + "99.51768406358019" : 1849.007, + "99.5207409740459" : 1852.007, + "99.52452749230474" : 1854.007, + "99.5276590912185" : 1857.007, + "99.53143311710346" : 1861.007, + "99.5353419011491" : 1864.007, + "99.54025007510442" : 1867.007, + "99.5442739484668" : 1870.007, + "99.54738375217508" : 1873.007, + "99.55156763424107" : 1875.007, + "99.55504662746652" : 1879.007, + "99.55886397796723" : 1883.007, + "99.5629423393433" : 1888.007, + "99.56836695335035" : 1892.007, + "99.57130106643888" : 1896.007, + "99.57485421652198" : 1900.007, + "99.57859475221315" : 1904.007, + "99.58224598072091" : 1908.007, + "99.58613350115145" : 1912.007, + "99.59071607600056" : 1918.007, + "99.59411772282608" : 1921.007, + "99.59796882931577" : 1924.007, + "99.60271088127813" : 1929.007, + "99.60649128624762" : 1932.007, + "99.61060818792605" : 1936.007, + "99.6119055342423" : 1937.007, + "99.6142525057589" : 1939.007, + "99.61588927253116" : 1941.007, + "99.61771262752595" : 1943.007, + "99.62028818290486" : 1947.007, + "99.62190049651977" : 1948.007, + "99.62398991249847" : 1950.007, + "99.62615454851559" : 1954.007, + "99.62728205170623" : 1955.007, + "99.63082483577698" : 1958.007, + "99.63291079641823" : 1959.007, + "99.63599960230661" : 1963.007, + "99.63708510985744" : 1964.007, + "99.64011570659947" : 1967.007, + "99.64107708779716" : 1968.007, + "99.64266574564027" : 1970.007, + "99.64484553198314" : 1972.007, + "99.64739238148167" : 1975.007, + "99.64884521798334" : 1976.007, + "99.65046258170683" : 1978.007, + "99.65299374928924" : 1982.007, + "99.65450213698534" : 1984.007, + "99.65693682091423" : 1986.007, + "99.65874662035436" : 1988.007, + "99.66121107334439" : 1990.007, + "99.6632316483692" : 1992.007, + "99.66476475501787" : 1993.007, + "99.66648391829867" : 1995.007, + "99.66861479832681" : 1999.007, + "99.67071378293231" : 2002.007, + "99.6727136259324" : 2004.007, + "99.67466110728033" : 2006.007, + "99.67657270627775" : 2008.007, + "99.67845666257557" : 2011.007, + "99.67994989994592" : 2014.007, + "99.68188063619695" : 2016.007, + "99.68382625697853" : 2018.007, + "99.68570542896295" : 2020.007, + "99.68814277084371" : 2023.007, + "99.68993396462065" : 2025.007, + "99.69171027386702" : 2027.007, + "99.69458617780921" : 2030.007, + "99.69564590322672" : 2031.007, + "99.69742752837686" : 2035.007, + "99.69961927550324" : 2038.007, + "99.70118454336973" : 2041.007, + "99.70321282645503" : 2043.007, + "99.7057115670244" : 2046.007, + "99.70793494377823" : 2048.007, + "99.7092437192876" : 2049.007, + "99.71151042065719" : 2051.007, + "99.7139065642837" : 2053.007, + "99.71502024612454" : 2057.007, + "99.7173751914968" : 2060.007, + "99.71904252471577" : 2062.007, + "99.72093099953179" : 2065.007, + "99.72316846343062" : 2068.007, + "99.72504072474013" : 2072.007, + "99.72676148279204" : 2074.007, + "99.72923656758961" : 2076.007, + "99.73113434523724" : 2079.007, + "99.73305338649996" : 2081.007, + "99.73488072842255" : 2083.007, + "99.73694728601504" : 2085.007, + "99.73837487197376" : 2093.007, + "99.7403502618165" : 2097.007, + "99.74257496754628" : 2100.015, + "99.74471701097235" : 2103.007, + "99.74707355111573" : 2106.015, + "99.74835946823887" : 2107.007, + "99.7501533199677" : 2109.007, + "99.75201415208409" : 2113.007, + "99.75411313668958" : 2118.015, + "99.75674610382927" : 2121.007, + "99.75822897518727" : 2125.007, + "99.76026576371859" : 2132.015, + "99.76212951958206" : 2135.007, + "99.7639063604188" : 2138.015, + "99.765752839595" : 2141.007, + "99.76767294403847" : 2145.007, + "99.77026311815276" : 2148.015, + "99.77176672153547" : 2151.007, + "99.77350156673239" : 2155.007, + "99.77549343587684" : 2160.015, + "99.77749274728656" : 2162.015, + "99.77933683430605" : 2165.007, + "99.78225553127363" : 2169.007, + "99.78330515647397" : 2171.007, + "99.78537197986164" : 2174.015, + "99.78785264635816" : 2178.015, + "99.78919703842283" : 2180.015, + "99.79124844568955" : 2185.007, + "99.79377190521146" : 2188.015, + "99.79507403584111" : 2191.007, + "99.79688702482352" : 2194.015, + "99.79913671530103" : 2199.007, + "99.80098027073015" : 2206.015, + "99.80322065837606" : 2209.007, + "99.80503444474404" : 2213.007, + "99.80594107213284" : 2215.007, + "99.8071698432904" : 2219.007, + "99.80773917658469" : 2222.015, + "99.80864234863603" : 2224.015, + "99.80961436164127" : 2225.007, + "99.81055952933244" : 2227.007, + "99.81204718500382" : 2229.007, + "99.81262050522594" : 2232.015, + "99.81376156397121" : 2235.007, + "99.81451137219865" : 2238.015, + "99.81580526317745" : 2241.007, + "99.81699363346632" : 2242.015, + "99.81756429573655" : 2243.007, + "99.81847863118583" : 2247.007, + "99.8195628097607" : 2249.007, + "99.8207551669774" : 2252.015, + "99.82153261790447" : 2253.007, + "99.82233611676004" : 2255.007, + "99.82350402081937" : 2258.015, + "99.82427482686673" : 2263.007, + "99.82548499236107" : 2265.007, + "99.82638364589421" : 2267.007, + "99.82768790288537" : 2270.015, + "99.82820832986492" : 2272.015, + "99.82932148011538" : 2274.015, + "99.8301263079469" : 2276.015, + "99.83156266514686" : 2278.015, + "99.83215724898407" : 2279.007, + "99.8331670049061" : 2281.007, + "99.83461638607032" : 2285.007, + "99.8357973140939" : 2286.015, + "99.83627547963845" : 2287.007, + "99.83736577150268" : 2290.015, + "99.83797789782234" : 2293.007, + "99.83903363631202" : 2295.007, + "99.84002771031793" : 2299.007, + "99.84098005447919" : 2302.015, + "99.84206210669257" : 2305.007, + "99.84309206304894" : 2310.015, + "99.84394872094225" : 2313.007, + "99.84566123934331" : 2315.007, + "99.84588769684413" : 2316.015, + "99.84680841137794" : 2319.007, + "99.84767995380182" : 2321.007, + "99.8487901803052" : 2326.015, + "99.84987808001272" : 2329.007, + "99.85068716056725" : 2333.007, + "99.85201427594464" : 2337.007, + "99.85255942187675" : 2338.015, + "99.85365104271692" : 2342.015, + "99.85451195333326" : 2346.015, + "99.8557125502008" : 2350.015, + "99.85660854578205" : 2351.007, + "99.85764594440371" : 2355.007, + "99.85877185282322" : 2358.015, + "99.85996421003993" : 2360.015, + "99.86092293328572" : 2361.007, + "99.86154356505143" : 2363.007, + "99.86254401814186" : 2365.007, + "99.86331588736996" : 2369.007, + "99.86459675438452" : 2373.007, + "99.86533407023809" : 2376.015, + "99.86641691983702" : 2379.007, + "99.86739717249311" : 2382.015, + "99.8683558957389" : 2385.007, + "99.86953150785871" : 2389.007, + "99.87027227904973" : 2393.007, + "99.87114382147362" : 2396.015, + "99.8721243399249" : 2399.007, + "99.87338793025218" : 2406.015, + "99.8746884661107" : 2409.007, + "99.87522430921119" : 2410.015, + "99.8762537339772" : 2413.007, + "99.87775148986576" : 2418.015, + "99.87844601269394" : 2419.007, + "99.87896218695047" : 2421.007, + "99.8802675071224" : 2424.015, + "99.88087298856234" : 2429.007, + "99.88199916277705" : 2432.015, + "99.88290499278028" : 2436.015, + "99.88404179880254" : 2440.015, + "99.88514644360696" : 2448.015, + "99.88581677907295" : 2449.007, + "99.88690919729869" : 2454.015, + "99.88779323209644" : 2458.015, + "99.88880431699442" : 2460.015, + "99.89047935827388" : 2462.015, + "99.8911374671612" : 2464.015, + "99.89186122746015" : 2465.007, + "99.89264452588138" : 2467.007, + "99.89399689180169" : 2470.015, + "99.894570477819" : 2478.015, + "99.89554727513763" : 2483.007, + "99.89672076089593" : 2489.007, + "99.89779191550656" : 2491.007, + "99.89851913114296" : 2494.015, + "99.89966151886418" : 2499.007, + "99.9005933967959" : 2505.007, + "99.90137217669891" : 2507.007, + "99.90235136617424" : 2510.015, + "99.90303977571308" : 2512.015, + "99.90355276042736" : 2515.007, + "99.90403411551418" : 2524.015, + "99.90432170590839" : 2526.015, + "99.90500479954346" : 2533.007, + "99.90541837685714" : 2534.015, + "99.905813880098" : 2536.015, + "99.90625908703913" : 2540.015, + "99.90674708700567" : 2542.015, + "99.90728665123882" : 2549.007, + "99.90809466861259" : 2558.015, + "99.90848299538335" : 2559.007, + "99.90890348337193" : 2561.007, + "99.90936756177148" : 2563.007, + "99.90988825454623" : 2564.015, + "99.91019790594112" : 2565.007, + "99.91077149195841" : 2567.007, + "99.91124832852702" : 2569.007, + "99.91178364003714" : 2575.007, + "99.91240666395956" : 2576.015, + "99.91282635456258" : 2577.007, + "99.91340791443555" : 2578.015, + "99.91370294709506" : 2579.007, + "99.91427759629312" : 2581.007, + "99.91456252873544" : 2585.007, + "99.91510129558303" : 2589.007, + "99.91576179662705" : 2592.015, + "99.9161219491078" : 2596.015, + "99.9168919577696" : 2601.007, + "99.91749052853464" : 2602.015, + "99.91833575723484" : 2604.015, + "99.9185489249762" : 2611.007, + "99.9189858922665" : 2614.015, + "99.91966393579298" : 2616.015, + "99.92006209698572" : 2617.007, + "99.92073190086136" : 2621.007, + "99.92129644984225" : 2625.007, + "99.9215407156207" : 2628.015, + "99.92199788334533" : 2633.007, + "99.92261240182171" : 2636.015, + "99.92318705101977" : 2638.015, + "99.92344806189512" : 2640.015, + "99.92399559998393" : 2645.007, + "99.92432093329494" : 2646.015, + "99.92491923826479" : 2648.015, + "99.92534291579565" : 2650.015, + "99.92626363032946" : 2662.015, + "99.92642177846676" : 2663.007, + "99.9269166891082" : 2665.007, + "99.92746555617295" : 2668.015, + "99.92781427946058" : 2670.015, + "99.92830839271646" : 2674.015, + "99.92933170419312" : 2680.015, + "99.92983990459399" : 2682.015, + "99.93019447537577" : 2686.015, + "99.93077151673053" : 2696.015, + "99.93127280645649" : 2701.007, + "99.93166777810697" : 2705.007, + "99.93224375628097" : 2707.007, + "99.93262012226823" : 2713.007, + "99.933225337913" : 2725.007, + "99.93369845334897" : 2727.007, + "99.93423748599173" : 2732.015, + "99.93467392169164" : 2737.007, + "99.93511700227128" : 2745.007, + "99.93574986061567" : 2747.007, + "99.93616450111011" : 2750.015, + "99.93672718952467" : 2752.015, + "99.93719817859913" : 2753.007, + "99.93764976462481" : 2766.015, + "99.93801098028631" : 2769.007, + "99.9385069541085" : 2771.007, + "99.93910871441581" : 2773.007, + "99.93957677974319" : 2774.015, + "99.94007886685472" : 2783.007, + "99.94043662717877" : 2785.007, + "99.94120716743093" : 2788.015, + "99.94164838744425" : 2790.015, + "99.94204708022735" : 2791.007, + "99.9428867272286" : 2795.007, + "99.94340024353325" : 2796.015, + "99.94393263129629" : 2802.015, + "99.94447910620435" : 2816.015, + "99.94501787305194" : 2823.007, + "99.94552740242875" : 2829.007, + "99.9458851627528" : 2831.007, + "99.94642020846774" : 2837.007, + "99.94691671388031" : 2840.015, + "99.94744378573958" : 2844.015, + "99.9478023434492" : 2850.015, + "99.94844025190218" : 2855.007, + "99.94904334118544" : 2858.015, + "99.94929292286767" : 2862.015, + "99.94980404701562" : 2866.015, + "99.95049484871116" : 2873.007, + "99.950753733225" : 2881.007, + "99.95120080073247" : 2883.007, + "99.95144985082432" : 2887.007, + "99.95167258719248" : 2889.007, + "99.95201067867255" : 2891.007, + "99.95215420807448" : 2897.007, + "99.9525645958459" : 2898.015, + "99.95286042589096" : 2899.007, + "99.95310309689829" : 2900.015, + "99.95321419928719" : 2907.007, + "99.95337314481004" : 2908.015, + "99.95377130600279" : 2911.007, + "99.95392413823632" : 2912.015, + "99.9541819595694" : 2913.007, + "99.95445147589078" : 2920.015, + "99.95460510550987" : 2926.015, + "99.95487010331304" : 2929.007, + "99.95512898782688" : 2932.015, + "99.9554354496795" : 2935.007, + "99.95596969800887" : 2937.007, + "99.95606804222871" : 2938.015, + "99.95633729275491" : 2940.015, + "99.9566065432811" : 2942.015, + "99.95686542779494" : 2944.015, + "99.95746213799366" : 2954.015, + "99.95768487436183" : 2955.007, + "99.9579546564784" : 2958.015, + "99.95810190701297" : 2960.015, + "99.9583865736601" : 2967.007, + "99.95852877408609" : 2972.015, + "99.95902527949866" : 2973.007, + "99.95954251693595" : 2975.007, + "99.95975010297836" : 2978.015, + "99.96011105284467" : 2982.015, + "99.96025165849952" : 2984.015, + "99.96065008548744" : 2991.007, + "99.96089169331401" : 2992.015, + "99.96106366280112" : 2998.015, + "99.9611893839254" : 2999.007, + "99.96145890024678" : 3004.015, + "99.96172841656816" : 3007.007, + "99.96199421175692" : 3008.015, + "99.96215873897874" : 3010.015, + "99.96273471715274" : 3013.007, + "99.96293459513468" : 3018.015, + "99.96334524870129" : 3020.015, + "99.96347841209085" : 3024.015, + "99.96378487394347" : 3026.015, + "99.96388428134406" : 3027.007, + "99.96415432925582" : 3033.007, + "99.96437307869616" : 3042.015, + "99.96480552746824" : 3045.007, + "99.96496234662959" : 3046.015, + "99.96509577581435" : 3049.007, + "99.96548383678991" : 3051.007, + "99.9656212529025" : 3057.007, + "99.96603961452958" : 3062.015, + "99.96620573652254" : 3065.007, + "99.96630992823653" : 3066.015, + "99.96684816349372" : 3074.015, + "99.96711900879106" : 3078.015, + "99.96738852511244" : 3082.015, + "99.96765777563863" : 3083.007, + "99.96806523966298" : 3084.015, + "99.96838419388946" : 3085.007, + "99.96873584092417" : 3094.015, + "99.96899791498028" : 3096.015, + "99.96927460777175" : 3098.015, + "99.96975357070187" : 3101.007, + "99.97008289094072" : 3105.007, + "99.97035240726211" : 3108.015, + "99.9705342111712" : 3127.007, + "99.97075535276824" : 3131.007, + "99.97114022420153" : 3133.007, + "99.97120560981797" : 3135.007, + "99.97155699105748" : 3137.007, + "99.97169998886903" : 3138.015, + "99.97196977098561" : 3147.007, + "99.97219729166717" : 3153.007, + "99.972494184893" : 3157.007, + "99.97267200187426" : 3172.015, + "99.9729330127496" : 3174.015, + "99.97328147024204" : 3175.007, + "99.9734148994268" : 3178.015, + "99.97385585364492" : 3179.007, + "99.97392682096032" : 3190.015, + "99.97412616735187" : 3191.007, + "99.97439594946844" : 3198.015, + "99.97465323921115" : 3229.007, + "99.97493445052083" : 3230.015, + "99.97520396684222" : 3236.015, + "99.97547002782615" : 3252.015, + "99.97567495591667" : 3269.007, + "99.97574326528017" : 3270.015, + "99.97614116067773" : 3281.007, + "99.97628229792295" : 3282.015, + "99.97655181424433" : 3285.007, + "99.9765783937632" : 3288.015, + "99.97681654625232" : 3289.007, + "99.97695369656971" : 3296.015, + "99.97709031529672" : 3297.007, + "99.97732820199064" : 3317.007, + "99.97762987952987" : 3320.015, + "99.9778204546802" : 3328.015, + "99.97816891217265" : 3329.007, + "99.97843470736139" : 3330.015, + "99.97867179666974" : 3331.007, + "99.97893652867774" : 3345.007, + "99.97924697745817" : 3359.007, + "99.97940778354737" : 3362.015, + "99.97951649377957" : 3363.007, + "99.97974029332849" : 3369.007, + "99.97991518656268" : 3394.015, + "99.98005552642233" : 3395.007, + "99.98023068545172" : 3404.015, + "99.98038617563714" : 3421.007, + "99.98059455906511" : 3422.015, + "99.98073888585259" : 3423.007, + "99.98086434118167" : 3424.015, + "99.98110010151409" : 3428.015, + "99.98140284223408" : 3430.015, + "99.98160085964969" : 3444.015, + "99.98182838033125" : 3460.015, + "99.98194214067203" : 3461.007, + "99.98216275067868" : 3471.007, + "99.98221165699341" : 3472.015, + "99.98248090751962" : 3476.015, + "99.98270763081561" : 3477.007, + "99.98288571359207" : 3488.015, + "99.98302020595757" : 3489.007, + "99.98305050660909" : 3490.015, + "99.98328945648376" : 3491.007, + "99.98355923860034" : 3492.015, + "99.98364721680781" : 3493.007, + "99.98382848912654" : 3494.015, + "99.9840961448816" : 3502.015, + "99.9843677875645" : 3519.007, + "99.98463730388588" : 3528.015, + "99.98490682020726" : 3540.015, + "99.98517633652865" : 3552.015, + "99.98544585285003" : 3562.015, + "99.98571536917142" : 3585.007, + "99.98577410990814" : 3611.007, + "99.9859848854928" : 3612.015, + "99.9862544018142" : 3620.015, + "99.98652365234038" : 3628.015, + "99.98679290286658" : 3629.007, + "99.98696779610077" : 3646.015, + "99.98706295077834" : 3647.007, + "99.98718495076997" : 3653.007, + "99.98733273289491" : 3654.015, + "99.98748210979099" : 3660.015, + "99.98760198342111" : 3661.007, + "99.98805941694094" : 3669.007, + "99.98820773065626" : 3670.015, + "99.98841026659008" : 3671.007, + "99.98864788748881" : 3673.007, + "99.98891394847274" : 3702.015, + "99.98911993974401" : 3703.007, + "99.98921934714461" : 3704.015, + "99.98942640159663" : 3706.015, + "99.9894885976708" : 3707.007, + "99.98952846694911" : 3722.015, + "99.99002763031358" : 3723.007, + "99.9901520224619" : 3728.015, + "99.99029714663496" : 3729.007, + "99.99056666295634" : 3737.007, + "99.99063231436796" : 3750.015, + "99.99083617927772" : 3751.007, + "99.99100894615042" : 3754.015, + "99.99110542980392" : 3755.007, + "99.99124630125395" : 3758.015, + "99.9913749461253" : 3759.007, + "99.99149747770731" : 3779.007, + "99.99164472824188" : 3780.015, + "99.99191451035846" : 3797.007, + "99.99218376088466" : 3802.015, + "99.99223186981382" : 3803.007, + "99.99245327720604" : 3804.015, + "99.99272279352742" : 3812.015, + "99.99281342968678" : 3828.015, + "99.9929923098488" : 3829.007, + "99.99321105928914" : 3830.015, + "99.993261560375" : 3831.007, + "99.99339552115013" : 3849.007, + "99.99353134249158" : 3850.015, + "99.99378278474012" : 3873.007, + "99.99403927709726" : 3878.015, + "99.99407037513434" : 3879.007, + "99.99420008318646" : 3989.007, + "99.99433989145572" : 3990.015, + "99.99447651018275" : 4012.015, + "99.9946096735723" : 4013.007, + "99.99481938597623" : 4014.015, + "99.9948789240985" : 4015.007, + "99.99508624434571" : 4071.007, + "99.99514844041988" : 4072.015, + "99.995348584197" : 4107.007, + "99.99541795674126" : 4108.015, + "99.99563564300085" : 4161.007, + "99.99568773885784" : 4162.015, + "99.99595698938404" : 4177.007, + "99.99610796105125" : 4221.023, + "99.99622650570542" : 4222.015, + "99.99636897192659" : 4236.031, + "99.9964960220268" : 4237.023, + "99.9965459915223" : 4256.031, + "99.9967655383482" : 4257.023, + "99.99686893267662" : 4298.015, + "99.99703505466958" : 4299.007, + "99.99718602633678" : 4300.031, + "99.99730457099096" : 4301.023, + "99.99735241412493" : 4317.023, + "99.99757435310754" : 4318.015, + "99.99777290211352" : 4322.015, + "99.99784360363373" : 4323.007, + "99.99809371690634" : 4353.023, + "99.9981133857503" : 4354.015, + "99.99831379532262" : 4502.015, + "99.9983826362765" : 4503.007, + "99.99846024847162" : 4525.023, + "99.99865215259788" : 4526.015, + "99.99878505019225" : 4580.031, + "99.99892166891927" : 4581.023, + "99.99895356434192" : 4615.007, + "99.99919118524066" : 4616.031, + "99.99919145103584" : 4624.031, + "99.99930680614776" : 4671.007, + "99.99946070156204" : 4672.031, + "99.99967759043605" : 4749.023, + "99.99973021788342" : 4750.015, + "99.99999096296358" : 4859.007, + "100.0" : 4860.031 + }, + "aggregatedEndToEndLatencyAvg" : 234.26833819498606, + "aggregatedEndToEndLatency50pct" : 100.0, + "aggregatedEndToEndLatency75pct" : 284.001, + "aggregatedEndToEndLatency95pct" : 911.003, + "aggregatedEndToEndLatency99pct" : 1553.007, + "aggregatedEndToEndLatency999pct" : 2500.015, + "aggregatedEndToEndLatency9999pct" : 3723.007, + "aggregatedEndToEndLatencyMax" : 4860.031 +} \ No newline at end of file diff --git a/blog/results/kafka/throughput/sync.json b/blog/results/kafka/throughput/sync.json new file mode 100644 index 00000000..baa9a540 --- /dev/null +++ b/blog/results/kafka/throughput/sync.json @@ -0,0 +1,3041 @@ +{ + "workload" : "100-partitions-1000K-rate-4-producer", + "driver" : "Kafka", + "publishRate" : [ 599590.2471351388, 601174.6268855081, 536367.3273553957, 597058.4911254985, 618150.0246190743, 567436.9159989435, 562177.8667838611, 553867.4694451087, 578490.1761022257, 588345.7775994382, 621042.851003223, 526708.7456504045, 613906.5352691645, 622346.0188841533, 613008.5465021562, 633093.5399946645, 577415.95394357, 613751.59923315, 573462.9864980706, 617778.5683869056, 579211.1541577312, 592415.9110518487, 603584.8543145321, 606676.0486677226, 595552.0461178117, 602896.274858412, 589935.8827496587, 582786.3406876931, 573500.9110676995, 614629.7024771104, 557234.378071359, 618482.7542612578, 581529.3408626128, 611790.6013163315, 579329.9733287552, 599620.9179811089, 589425.2440782933, 603134.5543109551, 565223.6959016058, 606764.1629020413, 640329.58272088, 559630.2220154932, 641920.4887966333, 565825.3728307928, 653816.0038424243, 574997.2823295947, 603691.1963385361, 590410.9364461305, 519556.03344868164, 581611.2454289275, 606356.6519721786, 597810.9969921105, 574837.1874527903, 587297.4790789413, 579801.3698521937, 613404.4796091211, 570572.3033689467, 570195.9032795515, 539070.0349611666, 592941.8281447807 ], + "consumeRate" : [ 600894.8563222273, 600940.3084218149, 536224.0235144596, 596436.1679903832, 617650.4853040716, 568586.0417923221, 561528.1976750321, 553667.5062908835, 579075.390326671, 587857.9205088492, 621744.8301680146, 526774.5366634909, 613229.7611580681, 622849.1356047044, 609417.5778413884, 636546.0523339566, 576874.3923089285, 614337.4883733299, 573712.5655441636, 617050.8722672719, 578816.8527077105, 593788.0376061107, 602561.7286458858, 606152.4498677083, 596498.425702986, 602896.274858412, 590235.3544820542, 582529.4740874574, 573558.4070981302, 614529.6011255581, 556382.800705607, 619081.5973324834, 581181.1043416478, 612888.3926567171, 579730.7953909251, 598118.6822006338, 589962.4357236382, 603226.177969816, 564989.8002470233, 606081.7720530166, 640312.7226457347, 559583.9217258289, 642882.2402557395, 564815.4149538999, 654113.0431692356, 575188.9501608572, 603948.6647536953, 589763.7142786535, 520755.9788253694, 581565.8888816626, 605621.2663874407, 598090.310620619, 574145.7320670148, 587758.5603053691, 579180.1679692947, 613855.1319372361, 571868.8518611527, 569104.0970005243, 539365.7370480166, 593042.0920599522 ], + "backlog" : [ 4056, 6433, 7887, 14200, 19266, 7617, 14196, 16224, 10288, 15229, 8112, 7447, 14315, 9210, 45600, 10592, 16083, 10149, 7616, 14987, 18984, 5070, 15440, 20748, 11154, 11154, 8112, 10722, 10140, 11154, 19780, 13715, 17246, 6090, 2028, 17238, 11795, 10866, 13237, 20152, 20324, 20794, 11041, 21275, 18263, 16318, 13710, 20280, 8112, 8572, 16024, 13182, 20182, 15506, 21808, 17238, 4111, 15170, 12171, 11156 ], + "publishLatencyAvg" : [ 216.62008511714458, 219.15407764481466, 238.72590318372642, 217.91959028683212, 209.7238845717675, 224.78613325140614, 230.27096747972905, 232.6682351180175, 223.05302827644107, 218.05222894246924, 210.3160808084113, 245.98586831185474, 208.81982980813243, 208.2837221694863, 209.71713517822076, 205.42876044592415, 221.09183694453594, 210.92378277504437, 223.85621192445342, 209.72467555244103, 223.91876263471502, 218.78917638138014, 211.04092287955015, 215.1610532927658, 215.10285166355055, 215.48875926756654, 216.24025620624136, 223.27151600928394, 226.66411291903813, 206.04451628944253, 233.39287723430448, 206.9300093280425, 224.2920469814364, 211.01272604564193, 222.55674880362966, 216.9308771813773, 216.94722466952092, 215.89481356947877, 227.01918944681154, 210.0089195597037, 204.61749561167176, 231.1869095678463, 200.789351825807, 227.10038613290843, 200.01981764115524, 221.37252524242066, 215.53787975039435, 214.6479884687909, 248.56011216614328, 223.04525782959377, 215.29587570205044, 216.72262915774837, 220.4038949154215, 222.1057533286814, 222.03084314621958, 211.82323101675522, 225.65149194141483, 224.91715934752443, 241.21723258312207, 215.96832788961134 ], + "publishLatency50pct" : [ 94.142, 82.951, 83.579, 90.694, 90.325, 92.724, 79.199, 75.275, 85.152, 81.972, 96.79, 98.549, 98.307, 89.928, 90.291, 83.763, 97.658, 84.056, 80.774, 81.503, 99.662, 95.323, 98.727, 79.518, 85.318, 87.993, 91.253, 90.468, 89.237, 75.498, 70.36, 88.685, 94.3, 86.597, 90.827, 101.358, 91.154, 89.656, 92.001, 79.698, 96.481, 91.327, 102.267, 92.818, 90.858, 96.384, 82.635, 80.642, 84.441, 81.385, 84.671, 89.298, 89.662, 84.298, 76.797, 94.463, 81.902, 91.335, 85.95, 92.427 ], + "publishLatency75pct" : [ 258.908, 248.67, 279.159, 270.105, 257.496, 270.883, 254.017, 266.509, 262.437, 254.965, 261.689, 297.961, 262.553, 249.799, 252.556, 244.632, 279.879, 241.506, 269.985, 238.632, 268.299, 275.757, 253.248, 256.882, 245.848, 264.329, 274.775, 265.667, 273.039, 233.736, 280.517, 236.871, 258.177, 254.812, 255.436, 274.317, 261.12, 257.984, 257.261, 244.642, 247.163, 271.035, 250.42, 280.531, 248.495, 269.677, 262.321, 229.431, 294.265, 262.805, 265.263, 263.863, 254.301, 269.081, 260.109, 253.045, 261.645, 276.387, 289.025, 259.178 ], + "publishLatency95pct" : [ 823.171, 893.691, 982.791, 827.775, 808.195, 901.443, 1005.515, 1025.943, 949.899, 902.907, 784.007, 996.611, 760.291, 813.819, 817.831, 823.819, 830.167, 839.819, 917.851, 868.411, 868.723, 849.463, 781.575, 864.215, 882.951, 854.471, 844.303, 895.459, 886.859, 850.295, 999.211, 825.543, 848.455, 846.211, 892.623, 792.607, 879.387, 841.167, 895.243, 842.707, 740.167, 891.315, 705.391, 886.183, 742.491, 852.967, 871.723, 908.879, 1008.847, 888.847, 870.435, 836.583, 899.827, 880.663, 907.155, 810.919, 921.311, 872.739, 1003.963, 846.931 ], + "publishLatency99pct" : [ 1370.791, 1507.719, 1700.575, 1413.119, 1276.071, 1408.471, 1718.511, 1676.823, 1504.247, 1498.167, 1340.111, 1630.999, 1235.447, 1365.423, 1284.167, 1297.167, 1348.911, 1494.783, 1475.575, 1467.063, 1472.439, 1358.455, 1396.271, 1462.199, 1410.711, 1423.311, 1276.327, 1522.327, 1503.015, 1470.799, 1639.735, 1455.583, 1653.255, 1436.663, 1555.111, 1382.615, 1277.623, 1327.215, 1610.231, 1533.815, 1311.647, 1627.959, 1233.103, 1537.839, 1170.311, 1457.575, 1333.623, 1663.055, 1736.559, 1513.535, 1382.223, 1446.639, 1477.847, 1440.471, 1611.599, 1398.887, 1567.183, 1429.383, 1643.191, 1400.703 ], + "publishLatency999pct" : [ 2656.239, 2440.463, 2749.887, 2445.855, 2092.839, 2118.063, 2478.559, 2855.791, 2330.591, 2408.879, 2173.327, 2200.575, 1876.047, 2123.679, 2096.951, 2041.119, 2133.295, 2108.479, 2058.799, 2206.655, 2309.151, 2069.447, 2252.079, 2179.503, 2542.159, 1956.439, 2133.231, 2150.591, 2552.879, 2458.831, 2319.695, 2083.831, 3052.927, 2072.367, 2537.823, 2061.167, 1863.583, 2205.407, 2939.519, 2674.799, 2713.215, 2856.303, 1812.655, 2368.655, 1830.423, 2341.407, 2008.759, 2692.895, 2524.943, 2678.591, 1931.255, 2403.183, 2622.031, 2265.215, 2354.527, 2153.103, 2765.487, 2051.095, 2426.431, 2035.975 ], + "publishLatency9999pct" : [ 3318.559, 4057.295, 4130.607, 3114.351, 2517.087, 3809.743, 3358.207, 3646.703, 2744.319, 2744.863, 2621.215, 3108.719, 2474.159, 2835.903, 3067.983, 2761.343, 3160.719, 3108.783, 2583.903, 2499.807, 3477.183, 2873.679, 2526.431, 3029.679, 3748.735, 2585.887, 2486.239, 2390.559, 2932.255, 3337.647, 2792.047, 3752.255, 3631.679, 3091.951, 3383.823, 2864.271, 3326.559, 2755.375, 3579.775, 2881.167, 3967.487, 5064.863, 2580.575, 2906.031, 2335.375, 2631.791, 2947.695, 3080.607, 3222.047, 2961.711, 2446.767, 2874.767, 3049.391, 2583.455, 2873.823, 2608.975, 3209.839, 2438.063, 3107.199, 2350.031 ], + "publishLatencyMax" : [ 3322.623, 4059.087, 4131.551, 3116.847, 2520.767, 3813.759, 3365.679, 3653.023, 2752.591, 2750.543, 2634.879, 3113.023, 2497.663, 2842.495, 3078.303, 2764.127, 3171.023, 3114.239, 2584.047, 2512.239, 3488.143, 2881.807, 2527.039, 3030.975, 3749.647, 2600.303, 2495.359, 2393.503, 2935.871, 3341.087, 2792.607, 3753.727, 3641.935, 3099.759, 3386.879, 2864.447, 3343.679, 2756.319, 3582.079, 2884.031, 3970.751, 5065.055, 2584.239, 2914.223, 2336.879, 2638.127, 2950.175, 3091.775, 3223.919, 2970.447, 2451.119, 2875.423, 3049.583, 2586.607, 2879.151, 2621.791, 3209.983, 2438.223, 3112.623, 2350.623 ], + "aggregatedPublishLatencyAvg" : 218.63026293668852, + "aggregatedPublishLatency50pct" : 88.445, + "aggregatedPublishLatency75pct" : 260.227, + "aggregatedPublishLatency95pct" : 865.551, + "aggregatedPublishLatency99pct" : 1463.207, + "aggregatedPublishLatency999pct" : 2341.407, + "aggregatedPublishLatency9999pct" : 3243.119, + "aggregatedPublishLatencyMax" : 5065.055, + "aggregatedPublishLatencyQuantiles" : { + "2.7852487045355673E-7" : 1.008, + "0.5005607193060754" : 15.178, + "1.0004457372764304" : 15.632, + "1.5001176837208885" : 16.025, + "2.0008151587383565" : 16.414, + "2.500353413244997" : 16.844, + "3.0007896319339795" : 17.384, + "3.5005058638328395" : 18.077, + "4.000361358166926" : 18.974, + "4.500133573564748" : 19.974, + "5.000470358874979" : 20.978, + "5.500269034135493" : 21.983, + "6.000477419480444" : 23.039, + "6.500167748566352" : 24.074, + "7.000193978646028" : 25.048, + "7.500398464642792" : 25.979, + "8.00008767962922" : 26.669, + "8.500182426827026" : 27.219, + "9.00013401224142" : 27.682, + "9.500614237859933" : 28.092, + "10.00116325912145" : 28.482, + "10.501191717400088" : 28.862, + "11.000123901788621" : 29.245, + "11.500363203394194" : 29.635, + "12.000689126234477" : 30.041, + "12.500559660911568" : 30.462, + "13.000566394250312" : 30.901, + "13.5000862661155" : 31.361, + "14.000707982368207" : 31.822, + "14.500562084077941" : 32.28, + "15.000576337588186" : 32.739, + "15.50004328972799" : 33.197, + "16.000127174455848" : 33.656, + "16.50099761341787" : 34.134, + "17.000829990187707" : 34.592, + "17.500562376529054" : 35.056, + "18.00024017199579" : 35.52, + "18.500549104818976" : 35.985, + "19.000928782959257" : 36.433, + "19.500997348819244" : 36.889, + "20.000568747785465" : 37.334, + "20.50092029491383" : 37.794, + "21.000515647018915" : 38.253, + "21.501011470030175" : 38.717, + "22.000991464981354" : 39.198, + "22.500688200139283" : 39.671, + "23.000302491935557" : 40.156, + "23.50040754455357" : 40.634, + "24.000759370206804" : 41.13, + "24.500445799944526" : 41.606, + "25.00098173053713" : 42.07, + "25.50039548442668" : 42.559, + "26.000919716974725" : 43.051, + "26.500327900366862" : 43.522, + "27.000297032848096" : 44.019, + "27.50094381633914" : 44.553, + "28.000016377262384" : 45.079, + "28.500624445796436" : 45.619, + "29.000063545449194" : 46.186, + "29.500216225820054" : 46.763, + "30.000546883583137" : 47.351, + "30.500776993867984" : 47.926, + "31.00077509293574" : 48.553, + "31.50071692997967" : 49.199, + "32.00020699968372" : 49.873, + "32.500224038442674" : 50.534, + "33.00073211654823" : 51.219, + "33.50046700961341" : 51.925, + "34.00053139760034" : 52.649, + "34.50035959649712" : 53.372, + "35.00054904215088" : 54.158, + "35.50016946149431" : 54.937, + "36.000055872089014" : 55.754, + "36.50034280144743" : 56.559, + "37.00018548363748" : 57.39, + "37.500396375706266" : 58.261, + "38.000415921189045" : 59.101, + "38.50003383380864" : 59.997, + "39.00031881349297" : 60.955, + "39.50004925016022" : 61.887, + "40.0001423262088" : 62.861, + "40.50006243831283" : 63.855, + "41.000210383760894" : 64.86, + "41.500485336549886" : 65.933, + "42.00008848735134" : 67.039, + "42.50005204933517" : 68.135, + "43.0000899774594" : 69.282, + "43.50017887563493" : 70.451, + "44.000051917035854" : 71.604, + "44.500187050339875" : 72.797, + "45.00023667650867" : 74.053, + "45.50028073218005" : 75.333, + "46.00011060222606" : 76.677, + "46.50004018417568" : 77.988, + "47.0002432775481" : 79.389, + "47.50015029898322" : 80.825, + "48.000124166387245" : 82.29, + "48.50025567886795" : 83.767, + "49.000174676872504" : 85.315, + "49.50014910132627" : 86.902, + "50.00024941902149" : 88.445, + "50.25015223821263" : 89.252, + "50.5002168803535" : 90.088, + "50.75028180101924" : 90.951, + "51.000254808477735" : 91.766, + "51.25006097953882" : 92.668, + "51.500250400821656" : 93.549, + "51.7501560052615" : 94.41, + "52.00007581446974" : 95.337, + "52.25008224491268" : 96.317, + "52.500144658854595" : 97.233, + "52.75014969667318" : 98.157, + "53.00003942519541" : 99.105, + "53.25010434586115" : 100.089, + "53.50020965263311" : 101.105, + "53.75023335161803" : 102.057, + "54.00018825495994" : 103.06, + "54.25025401120029" : 104.075, + "54.50015098136915" : 105.098, + "54.75007051205252" : 106.18, + "55.00009866743536" : 107.226, + "55.25018587009074" : 108.298, + "55.50004050447929" : 109.425, + "55.75003300867871" : 110.508, + "56.00015335579367" : 111.656, + "56.25013026260035" : 112.775, + "56.50015145486143" : 113.881, + "56.750120284446865" : 115.052, + "57.00003424463282" : 116.222, + "57.25015319912343" : 117.408, + "57.500118686410424" : 118.623, + "57.750085566321765" : 119.871, + "58.00014992993776" : 121.062, + "58.25018198466879" : 122.326, + "58.500023806913305" : 123.59, + "58.75010543907127" : 124.882, + "59.00016256104064" : 126.203, + "59.25005841711002" : 127.592, + "59.50015508961099" : 128.962, + "59.750103865405755" : 130.3, + "60.000093305831605" : 131.67, + "60.25017995143724" : 133.025, + "60.50010755934185" : 134.454, + "60.750009542958374" : 135.815, + "61.00003491309251" : 137.204, + "61.250115431151" : 138.665, + "61.50010292190275" : 140.135, + "61.750025237834826" : 141.624, + "62.00010909819176" : 143.155, + "62.25002500805181" : 144.662, + "62.50008519379475" : 146.18, + "62.75006015092733" : 147.775, + "63.00007354449205" : 149.425, + "63.25005212244795" : 151.053, + "63.50003989172457" : 152.675, + "63.75014965489446" : 154.374, + "64.00007085672705" : 156.133, + "64.25008230061766" : 157.773, + "64.50005224430258" : 159.48, + "64.7501154938191" : 161.156, + "65.00006928306152" : 162.919, + "65.25013225405317" : 164.749, + "65.50014007712048" : 166.616, + "65.75009553751212" : 168.507, + "66.00011784387269" : 170.344, + "66.25012705956433" : 172.309, + "66.50000926791506" : 174.341, + "66.75002015475594" : 176.212, + "67.00005610883515" : 178.151, + "67.25006643862629" : 180.188, + "67.50013637273969" : 182.34, + "67.75008403443498" : 184.343, + "68.00000941414062" : 186.526, + "68.25011054303953" : 188.627, + "68.50010861773636" : 190.737, + "68.75005265860833" : 192.933, + "69.00006187429997" : 195.164, + "69.25008473771028" : 197.386, + "69.50009172520296" : 199.741, + "69.75007754480549" : 202.199, + "70.00000682385932" : 204.599, + "70.25003163694372" : 207.1, + "70.50005227215506" : 209.554, + "70.75010438067676" : 212.039, + "71.00007961633422" : 214.526, + "71.25003981164868" : 217.054, + "71.50006044686" : 219.711, + "71.7500579645071" : 222.321, + "72.00004434115938" : 224.852, + "72.25003294601062" : 227.546, + "72.50009034650485" : 230.323, + "72.75008340775402" : 233.141, + "73.00007396227934" : 235.918, + "73.25001104002955" : 238.939, + "73.50006175592691" : 241.916, + "73.7500422835569" : 245.043, + "74.00001389839103" : 248.011, + "74.25008717480289" : 251.11, + "74.50005489028885" : 254.134, + "74.750017870852" : 257.126, + "75.0000577242794" : 260.227, + "75.12503211217678" : 261.867, + "75.25000594302442" : 263.543, + "75.37510678121299" : 265.287, + "75.50006473614302" : 266.891, + "75.62505499995801" : 268.693, + "75.75014664682585" : 270.239, + "75.87503246381443" : 271.949, + "76.00015976186569" : 273.647, + "76.12508317971178" : 275.271, + "76.25010129601382" : 276.839, + "76.37514531512882" : 278.733, + "76.50011608220288" : 280.469, + "76.62507905058058" : 282.111, + "76.75013226101629" : 283.839, + "76.87506988363077" : 285.539, + "77.00002588888671" : 287.317, + "77.1250473474872" : 288.981, + "77.25000001044468" : 290.787, + "77.37509304993688" : 292.623, + "77.5000189745068" : 294.393, + "77.6250930743078" : 296.309, + "77.75012428127876" : 298.187, + "77.8750783368606" : 299.905, + "78.00001651652482" : 301.805, + "78.12500009574292" : 303.669, + "78.25001403417191" : 305.737, + "78.37507337215477" : 307.675, + "78.50012769668999" : 309.419, + "78.6250046008827" : 311.375, + "78.75004416359977" : 313.417, + "78.87503721266347" : 315.453, + "79.00009989294479" : 317.527, + "79.12505924049917" : 319.687, + "79.250090725995" : 321.781, + "79.3750667850416" : 323.925, + "79.5001069048084" : 325.939, + "79.62512307143635" : 328.159, + "79.7500119521985" : 330.247, + "79.87500527978708" : 332.231, + "80.00009581255543" : 334.575, + "80.1251033449124" : 336.705, + "80.25004096752689" : 338.857, + "80.37504125823722" : 341.015, + "80.50003430730092" : 343.291, + "80.6250813901895" : 345.565, + "80.75003823102003" : 347.887, + "80.87500454169617" : 350.119, + "81.00009980938732" : 352.243, + "81.12503019035518" : 354.327, + "81.25002908844115" : 356.821, + "81.37509009757325" : 359.297, + "81.50003830413281" : 361.673, + "81.62501492022915" : 364.079, + "81.75000574109389" : 366.649, + "81.87502831379386" : 369.211, + "82.00002219843218" : 371.831, + "82.12506761017153" : 374.195, + "82.25004868266579" : 376.881, + "82.37503838943105" : 379.349, + "82.5000280961963" : 382.245, + "82.6250269942823" : 384.851, + "82.7500718489719" : 387.587, + "82.87502256225528" : 390.205, + "83.00003705773402" : 392.993, + "83.12505378141171" : 395.661, + "83.25007384738784" : 398.415, + "83.3750398795391" : 401.187, + "83.50005103271938" : 404.047, + "83.62502959848983" : 406.983, + "83.75001373475767" : 409.969, + "83.87500817644573" : 412.993, + "84.00005581638403" : 415.979, + "84.12503438215448" : 418.671, + "84.2500282667928" : 421.363, + "84.37504638309483" : 424.585, + "84.50003915363367" : 427.633, + "84.62502858187405" : 430.521, + "84.75001717453982" : 433.741, + "84.8750386331403" : 437.065, + "85.00007680323303" : 440.131, + "85.12501943929517" : 443.529, + "85.25009186794696" : 446.457, + "85.37500887972102" : 449.573, + "85.50001891880183" : 452.725, + "85.62501196786553" : 456.145, + "85.75007158437327" : 459.915, + "85.87507800263074" : 463.279, + "86.00001673934472" : 466.635, + "86.1250476677908" : 469.953, + "86.25005937802082" : 473.415, + "86.37503042361976" : 476.921, + "86.50006023796635" : 480.395, + "86.62500928010053" : 484.129, + "86.75003213132537" : 487.839, + "86.87507113699269" : 491.207, + "87.00004134701702" : 494.897, + "87.12500041604653" : 498.753, + "87.25002995186826" : 502.235, + "87.37505336014284" : 505.835, + "87.50000407342623" : 509.345, + "87.56255379620833" : 511.349, + "87.62502998842464" : 513.211, + "87.68750339539226" : 514.911, + "87.75001941666503" : 516.853, + "87.8125128774233" : 518.657, + "87.87503948264117" : 520.655, + "87.93751288960877" : 522.793, + "88.00003113908052" : 524.571, + "88.06250092522481" : 526.863, + "88.12503532913904" : 528.887, + "88.18760009226415" : 530.955, + "88.25016429833951" : 532.899, + "88.31259007755428" : 534.823, + "88.37506738387006" : 537.091, + "88.43761989190088" : 539.279, + "88.5000855001721" : 541.547, + "88.56254609499567" : 543.359, + "88.62510946549644" : 545.339, + "88.6875416507832" : 547.443, + "88.75001171545236" : 549.291, + "88.81258260612462" : 551.503, + "88.87506938228601" : 553.747, + "88.93759208815568" : 555.723, + "89.00005769642692" : 557.959, + "89.06253082486965" : 560.239, + "89.12509948734295" : 562.431, + "89.18754643444785" : 564.623, + "89.25005967047193" : 566.831, + "89.3125400405613" : 568.947, + "89.37510953860921" : 571.159, + "89.43751080763536" : 573.455, + "89.5000630371413" : 575.703, + "89.56260691090114" : 577.891, + "89.62500957255165" : 579.919, + "89.68759856734049" : 582.071, + "89.75005554134073" : 584.383, + "89.81257518343683" : 586.927, + "89.87501126807179" : 589.223, + "89.93750277915598" : 591.651, + "90.00010012969094" : 594.171, + "90.06250306986631" : 596.283, + "90.12504137312872" : 598.651, + "90.1875518239041" : 601.247, + "90.25008734191782" : 603.899, + "90.31251339965743" : 606.271, + "90.37500156844318" : 609.027, + "90.43756271074497" : 611.503, + "90.50007371857009" : 614.131, + "90.5625329207693" : 616.855, + "90.62504197892032" : 619.571, + "90.68755326527031" : 622.255, + "90.7500314071607" : 624.655, + "90.81257388829619" : 627.263, + "90.8750687416788" : 629.971, + "90.93752961502724" : 632.439, + "91.0000514853223" : 634.803, + "91.06251625801892" : 637.319, + "91.12507712179585" : 640.087, + "91.18757977387484" : 643.387, + "91.25007407020773" : 646.227, + "91.31250820516861" : 648.919, + "91.37511112620096" : 651.975, + "91.43759511711364" : 654.947, + "91.50006796703151" : 657.759, + "91.56257117616025" : 660.555, + "91.62501812326516" : 663.651, + "91.68751687599598" : 666.431, + "91.75004849466151" : 669.475, + "91.81257147905605" : 672.315, + "91.87506299014024" : 675.339, + "91.93756703484358" : 678.227, + "92.00004239148528" : 681.307, + "92.06251245615444" : 684.579, + "92.12507081320753" : 687.843, + "92.18750244144456" : 691.211, + "92.25005745619922" : 694.035, + "92.31254451088547" : 696.819, + "92.37504521329038" : 700.167, + "92.43751945583259" : 703.723, + "92.50001486626496" : 707.103, + "92.5625398003336" : 710.559, + "92.6250104220525" : 714.295, + "92.6875375843201" : 717.611, + "92.75005722641619" : 720.871, + "92.8125136433667" : 724.623, + "92.8750775709172" : 728.179, + "92.93755571280761" : 731.283, + "93.00003051239956" : 734.987, + "93.06255099007026" : 738.323, + "93.12505865559693" : 741.899, + "93.18755462307905" : 745.119, + "93.25008457059535" : 748.523, + "93.31253653114793" : 752.635, + "93.37506731423885" : 756.071, + "93.43750841232148" : 760.203, + "93.50004309476058" : 764.031, + "93.56252680714839" : 767.787, + "93.62506121106263" : 771.835, + "93.68755495034577" : 775.559, + "93.75001275992062" : 778.987, + "93.7812766195793" : 780.903, + "93.81251234822605" : 782.951, + "93.8437547614697" : 784.607, + "93.87501611440453" : 786.219, + "93.90628610161036" : 788.175, + "93.93753993437369" : 790.191, + "93.96878736106501" : 792.275, + "94.00002810315942" : 794.147, + "94.0312579827839" : 796.179, + "94.06253019818868" : 798.623, + "94.09376620536031" : 800.639, + "94.12504287716303" : 802.623, + "94.15626078021808" : 804.971, + "94.18750068673788" : 807.103, + "94.21876231819759" : 809.255, + "94.25003202687854" : 811.243, + "94.28125939977919" : 813.515, + "94.3125491622508" : 815.587, + "94.34377569957684" : 817.687, + "94.37502061954432" : 819.863, + "94.40629394904859" : 822.079, + "94.43751797965078" : 824.507, + "94.46880161457526" : 826.551, + "94.50000308466294" : 828.807, + "94.53126360202316" : 831.039, + "94.56253386775386" : 833.855, + "94.59378240854466" : 836.111, + "94.62505100312612" : 838.167, + "94.65625804371122" : 840.539, + "94.68751967517093" : 842.759, + "94.718774064984" : 845.039, + "94.75000589428257" : 847.115, + "94.78131598906974" : 849.275, + "94.81252748605276" : 851.083, + "94.8437710133959" : 853.079, + "94.87504378585042" : 855.503, + "94.90627450104951" : 857.835, + "94.93751942101699" : 860.439, + "94.96878912969794" : 863.035, + "95.0000577242794" : 865.551, + "95.03126532191425" : 867.855, + "95.06254199371695" : 870.047, + "95.09375265512537" : 872.507, + "95.12502180675658" : 874.891, + "95.15631324037741" : 876.995, + "95.18756345231743" : 879.575, + "95.2188094863844" : 882.431, + "95.25003936600888" : 885.203, + "95.2813121384634" : 887.931, + "95.3125681994257" : 890.235, + "95.34378164608282" : 893.167, + "95.3750906267705" : 895.247, + "95.40627900618928" : 897.907, + "95.43754704372101" : 900.087, + "95.46876578235067" : 902.799, + "95.50001181641763" : 905.379, + "95.53126481360636" : 908.011, + "95.56250109930285" : 910.603, + "95.59376105961333" : 913.375, + "95.6250079292549" : 916.531, + "95.65628014465969" : 919.283, + "95.68753592709712" : 921.927, + "95.71878251821381" : 924.515, + "95.75002103210927" : 927.343, + "95.78128656291717" : 930.175, + "95.81254819437689" : 932.955, + "95.84376943973037" : 935.875, + "95.87502299396884" : 939.059, + "95.9062567729415" : 942.411, + "95.93750865603074" : 945.803, + "95.9687594250205" : 948.787, + "96.00001854975638" : 951.535, + "96.03125010053007" : 954.511, + "96.0625161883877" : 957.555, + "96.0937675144272" : 960.947, + "96.12502691768795" : 963.855, + "96.15626849535698" : 967.139, + "96.18751982139648" : 970.323, + "96.21875443594375" : 973.459, + "96.25000576198326" : 976.627, + "96.28125430277406" : 979.479, + "96.31254378672081" : 982.755, + "96.34378230061627" : 985.799, + "96.37503724747909" : 989.327, + "96.40627353317558" : 992.503, + "96.4375020201757" : 995.543, + "96.46877172885665" : 998.935, + "96.50004867918423" : 1001.963, + "96.53125627681908" : 1005.647, + "96.56251178073163" : 1009.083, + "96.59375614364937" : 1012.303, + "96.62502947315363" : 1015.935, + "96.65626158097707" : 1019.715, + "96.68751429964092" : 1023.447, + "96.71877927339908" : 1026.319, + "96.75001528057071" : 1029.823, + "96.78126688513508" : 1033.503, + "96.81250567755541" : 1037.091, + "96.84375533244568" : 1040.351, + "96.87504342376809" : 1043.535, + "96.89065446423214" : 1045.363, + "96.90627720274074" : 1047.583, + "96.92187933040894" : 1049.159, + "96.93750179039269" : 1050.871, + "96.95315962303496" : 1053.063, + "96.96879600926223" : 1055.455, + "96.98448810046358" : 1057.007, + "97.00003480168256" : 1059.127, + "97.01563135885335" : 1061.231, + "97.0313150943086" : 1063.431, + "97.04689772523585" : 1065.631, + "97.06252269194343" : 1068.063, + "97.07812621223597" : 1069.727, + "97.0937770817565" : 1071.183, + "97.10950900201433" : 1073.447, + "97.12500083383384" : 1075.471, + "97.1406277502155" : 1077.103, + "97.15629366007903" : 1079.583, + "97.17191222071459" : 1081.695, + "97.18757228155583" : 1084.231, + "97.20317440922403" : 1086.583, + "97.21877347311866" : 1089.583, + "97.23439454047804" : 1091.791, + "97.25001337963846" : 1093.663, + "97.26568987344707" : 1095.967, + "97.28126860502616" : 1098.015, + "97.29690805502699" : 1099.975, + "97.31250210547394" : 1101.911, + "97.32818305568048" : 1104.135, + "97.3437745994036" : 1106.159, + "97.35939121036506" : 1108.367, + "97.37504263693532" : 1110.679, + "97.3906731741403" : 1112.807, + "97.40627697295773" : 1114.655, + "97.42193369150053" : 1116.791, + "97.43757731937443" : 1118.735, + "97.4531437958592" : 1120.439, + "97.46876347059424" : 1123.087, + "97.48438342385415" : 1125.167, + "97.50000031334048" : 1127.127, + "97.51566399500504" : 1129.463, + "97.53125247495458" : 1131.975, + "97.54693537483521" : 1134.143, + "97.56252385478476" : 1136.663, + "97.57815856986281" : 1138.807, + "97.59377072442634" : 1140.623, + "97.6094344060909" : 1142.543, + "97.62505185262698" : 1144.767, + "97.64070884969465" : 1146.647, + "97.65626975568202" : 1149.231, + "97.67188079614607" : 1151.647, + "97.68751161187593" : 1154.231, + "97.70313574300889" : 1156.759, + "97.71879079040248" : 1159.199, + "97.73445670026601" : 1161.791, + "97.75001816330311" : 1163.911, + "97.76569493563659" : 1166.407, + "97.78130346937681" : 1168.647, + "97.79688359358025" : 1171.287, + "97.81256537936139" : 1173.463, + "97.82813770486845" : 1176.055, + "97.84377241994649" : 1178.967, + "97.85939209468152" : 1181.639, + "97.87501176941656" : 1183.783, + "97.89065456171583" : 1186.343, + "97.90626448808041" : 1188.679, + "97.92189363266104" : 1191.743, + "97.93755230087794" : 1194.031, + "97.95313381770572" : 1197.007, + "97.96877131803247" : 1200.471, + "97.9844127177074" : 1203.983, + "98.0000243152212" : 1207.023, + "98.01564176175727" : 1210.095, + "98.03131547031717" : 1212.519, + "98.04697107476049" : 1215.423, + "98.06251916860381" : 1218.111, + "98.07814831318446" : 1221.247, + "98.09375099790239" : 1224.479, + "98.10939963922395" : 1227.279, + "98.1250616497393" : 1230.799, + "98.14063481082097" : 1233.735, + "98.15632550939796" : 1236.879, + "98.17187750258948" : 1240.159, + "98.18750803979447" : 1243.751, + "98.20313969109893" : 1247.423, + "98.21877579880132" : 1250.479, + "98.23438823188972" : 1253.111, + "98.25000957777398" : 1256.479, + "98.2656454069515" : 1259.951, + "98.28126703136063" : 1262.671, + "98.29689784709049" : 1266.063, + "98.31253228364366" : 1269.215, + "98.32813691803568" : 1272.767, + "98.34379335805362" : 1277.231, + "98.35941331131353" : 1280.503, + "98.37502073095426" : 1283.423, + "98.39063845601521" : 1286.543, + "98.40625061057874" : 1290.679, + "98.42188281893294" : 1294.423, + "98.43756655438818" : 1298.919, + "98.44532040825675" : 1300.615, + "98.45313414497245" : 1303.071, + "98.46096570727985" : 1305.159, + "98.46877359497329" : 1306.639, + "98.47657535511956" : 1308.959, + "98.48438797773578" : 1310.639, + "98.49219057345667" : 1312.495, + "98.50003160560968" : 1314.535, + "98.50782222476113" : 1316.191, + "98.51567579053331" : 1318.191, + "98.52348005740342" : 1319.631, + "98.5312676127813" : 1322.119, + "98.53906658767887" : 1324.199, + "98.5468819955438" : 1326.591, + "98.55471467195069" : 1328.007, + "98.5625019488037" : 1330.087, + "98.57034353800645" : 1332.239, + "98.57813165043407" : 1333.975, + "98.58599217932802" : 1336.207, + "98.59376636551211" : 1338.415, + "98.60157425320554" : 1340.671, + "98.60940135911503" : 1342.871, + "98.61723849191985" : 1344.695, + "98.62500125858426" : 1347.047, + "98.63286819355022" : 1349.439, + "98.64066939664676" : 1350.959, + "98.6484611298977" : 1353.399, + "98.65627932301132" : 1355.743, + "98.66408358988143" : 1358.303, + "98.67190484676864" : 1360.663, + "98.67968905984807" : 1362.799, + "98.68751839395652" : 1364.695, + "98.69531792590384" : 1366.719, + "98.70312999147032" : 1368.951, + "98.71096350345182" : 1371.295, + "98.71875050177997" : 1374.303, + "98.72656340292106" : 1376.743, + "98.73438271013417" : 1379.319, + "98.74220898046904" : 1381.743, + "98.75000851241636" : 1383.999, + "98.75782698405486" : 1385.919, + "98.76564629126797" : 1387.847, + "98.77344498764067" : 1390.351, + "98.78125788878177" : 1392.831, + "98.78906521942544" : 1394.783, + "98.79689483205877" : 1397.103, + "98.8046893505584" : 1399.935, + "98.81250865777152" : 1402.231, + "98.82033353548204" : 1404.519, + "98.82813418152884" : 1407.063, + "98.83595627399065" : 1409.927, + "98.84375162806491" : 1412.223, + "98.85156815002931" : 1415.239, + "98.85938912839165" : 1418.463, + "98.86721456315192" : 1421.551, + "98.87502885691735" : 1423.671, + "98.88282476804136" : 1426.063, + "98.8906588370726" : 1428.807, + "98.89848761413131" : 1430.415, + "98.90627294131023" : 1432.239, + "98.91406578866065" : 1435.087, + "98.92188788112247" : 1437.407, + "98.92970050373869" : 1439.919, + "98.93750365650932" : 1442.223, + "98.94532073552347" : 1444.719, + "98.95317012342258" : 1447.047, + "98.96095433650203" : 1450.247, + "98.96878088536177" : 1452.543, + "98.97657568238628" : 1455.023, + "98.98439554664914" : 1457.687, + "98.99218839399956" : 1460.247, + "99.00002524827951" : 1463.207, + "99.00782366612734" : 1465.183, + "99.01562793299745" : 1467.351, + "99.02344863283491" : 1470.895, + "99.03128687973921" : 1473.679, + "99.03909142513419" : 1476.431, + "99.04688956445715" : 1479.007, + "99.05468937492934" : 1481.799, + "99.06252149428649" : 1484.879, + "99.07032186180841" : 1489.287, + "99.0781328132754" : 1491.903, + "99.08594682851599" : 1494.623, + "99.09375638735862" : 1497.719, + "99.10158822819092" : 1500.231, + "99.10938023996673" : 1502.431, + "99.11719592635652" : 1504.799, + "99.12501996849242" : 1508.311, + "99.13286573556823" : 1511.871, + "99.14062571698395" : 1516.015, + "99.1484380610753" : 1518.319, + "99.15625319041536" : 1520.911, + "99.164062749258" : 1524.959, + "99.17188289204573" : 1528.255, + "99.17969579318682" : 1532.791, + "99.18750813727817" : 1535.183, + "99.19532688744154" : 1538.607, + "99.20314563760492" : 1540.935, + "99.21093792790559" : 1545.279, + "99.21877116136223" : 1548.871, + "99.22265769740454" : 1551.367, + "99.22657264298363" : 1552.815, + "99.23049120938605" : 1554.271, + "99.23438610117447" : 1556.287, + "99.23829129838309" : 1558.047, + "99.24218953246996" : 1560.471, + "99.24609640082781" : 1562.599, + "99.25000995378255" : 1565.847, + "99.25391180869275" : 1567.423, + "99.2578337173936" : 1569.415, + "99.26172610245818" : 1571.607, + "99.26563102114194" : 1572.695, + "99.26953259752726" : 1574.599, + "99.27344698605661" : 1576.687, + "99.27734438456886" : 1578.551, + "99.28125375965055" : 1581.207, + "99.28516369178199" : 1583.815, + "99.28910064082585" : 1585.223, + "99.29299915343758" : 1587.015, + "99.2968809545571" : 1588.151, + "99.30078810143982" : 1590.343, + "99.30469329864844" : 1592.743, + "99.3085973817576" : 1594.815, + "99.31251371996105" : 1596.263, + "99.31641223257277" : 1597.615, + "99.3203213291296" : 1599.335, + "99.32422513371387" : 1601.239, + "99.32814425716603" : 1604.271, + "99.332035806656" : 1606.599, + "99.33595186633458" : 1608.743, + "99.33988268783129" : 1610.519, + "99.34375334795598" : 1612.535, + "99.34766105188845" : 1614.055, + "99.35158184648982" : 1617.255, + "99.3554761812285" : 1619.063, + "99.35937942876303" : 1622.503, + "99.36328128367322" : 1625.255, + "99.36719678630206" : 1626.703, + "99.37110086941121" : 1629.423, + "99.37501163711724" : 1632.247, + "99.37891683432588" : 1634.423, + "99.3828362363029" : 1637.159, + "99.38674895368302" : 1640.119, + "99.39063827497404" : 1641.735, + "99.39454124398371" : 1643.455, + "99.39844449151825" : 1647.207, + "99.40234996725174" : 1650.559, + "99.4062793961241" : 1652.175, + "99.41016426101719" : 1653.999, + "99.41406444477815" : 1656.839, + "99.4179732628101" : 1658.711, + "99.42189322183685" : 1662.311, + "99.42578282165275" : 1664.439, + "99.4296924752593" : 1667.047, + "99.43359906509228" : 1669.415, + "99.43751735296982" : 1672.879, + "99.44140639573597" : 1675.135, + "99.44531688491713" : 1678.623, + "99.44922514589933" : 1681.591, + "99.45313257130692" : 1684.183, + "99.45703275506789" : 1686.391, + "99.46095995574129" : 1689.351, + "99.46484649178359" : 1692.543, + "99.46875113194248" : 1694.743, + "99.47267192654385" : 1698.439, + "99.47658380834937" : 1700.399, + "99.48047480078961" : 1702.671, + "99.48441509213193" : 1705.007, + "99.4882924368535" : 1707.087, + "99.49218983536576" : 1709.135, + "99.49610394537024" : 1713.615, + "99.5000060788053" : 1717.399, + "99.50390988338957" : 1720.999, + "99.50781730879717" : 1724.287, + "99.51172501272963" : 1728.407, + "99.51562881731391" : 1732.423, + "99.51953679977125" : 1735.975, + "99.52345230240007" : 1739.343, + "99.52734691566363" : 1742.015, + "99.53125378402149" : 1744.223, + "99.53516817255084" : 1747.487, + "99.53906947041128" : 1751.031, + "99.54299499993544" : 1752.463, + "99.5468868279503" : 1756.455, + "99.55078339088794" : 1758.647, + "99.55469694384269" : 1761.471, + "99.5585965705539" : 1765.191, + "99.56251095908326" : 1767.143, + "99.56640807907065" : 1769.287, + "99.5703394576171" : 1774.311, + "99.57421930906251" : 1776.615, + "99.5781258988955" : 1778.847, + "99.58203388135283" : 1782.327, + "99.58594102823555" : 1785.887, + "99.58986405103589" : 1789.967, + "99.59378122481395" : 1791.607, + "99.59765745543605" : 1795.335, + "99.60157240101515" : 1798.607, + "99.60547091362689" : 1803.127, + "99.60938223838266" : 1805.111, + "99.61132884870227" : 1808.479, + "99.61328381476798" : 1810.095, + "99.6152368311596" : 1811.719, + "99.61719263279993" : 1813.991, + "99.61914648476616" : 1816.119, + "99.62111871937384" : 1817.663, + "99.62306170887013" : 1820.799, + "99.62502113133377" : 1822.991, + "99.62696523492953" : 1825.591, + "99.62891240229887" : 1827.335, + "99.63086291196666" : 1828.887, + "99.6328223344303" : 1831.943, + "99.63477674344627" : 1834.183, + "99.63674145788245" : 1835.119, + "99.63868054803055" : 1836.215, + "99.64062771539989" : 1839.039, + "99.64258184589099" : 1841.359, + "99.64456215771992" : 1844.615, + "99.64649818409444" : 1845.567, + "99.64843922391663" : 1848.543, + "99.65039781080566" : 1850.623, + "99.65236419639106" : 1853.351, + "99.6543085785117" : 1855.743, + "99.65625574588104" : 1857.991, + "99.65822491671514" : 1860.599, + "99.66015927194044" : 1862.567, + "99.66212120112792" : 1863.143, + "99.66407310342005" : 1863.855, + "99.66601637144122" : 1867.543, + "99.66797050193232" : 1869.879, + "99.66992463242342" : 1870.919, + "99.67188321931245" : 1873.375, + "99.67383846390302" : 1875.799, + "99.67578368159828" : 1877.871, + "99.67773502684068" : 1879.639, + "99.67969110700587" : 1881.671, + "99.68164412339749" : 1883.031, + "99.68359407601554" : 1887.423, + "99.68556686767296" : 1889.583, + "99.68750735044541" : 1892.687, + "99.68945479633962" : 1897.143, + "99.69141087650482" : 1899.303, + "99.6933613861726" : 1901.319, + "99.69531356698961" : 1903.527, + "99.69727410355273" : 1905.671, + "99.69922266354642" : 1908.151, + "99.70117762961215" : 1910.199, + "99.70313733060065" : 1913.103, + "99.7050900684674" : 1914.431, + "99.70703361501343" : 1915.671, + "99.70899025222836" : 1918.055, + "99.71093992632154" : 1919.903, + "99.71289266418829" : 1923.439, + "99.71484930140322" : 1925.583, + "99.71680287484459" : 1926.975, + "99.71876313288284" : 1928.407, + "99.72071224992627" : 1931.239, + "99.72265913877074" : 1934.183, + "99.724610762538" : 1935.207, + "99.72656266483015" : 1936.455, + "99.7285276577912" : 1939.167, + "99.73047064728748" : 1942.351, + "99.73242533482832" : 1946.543, + "99.73437751564533" : 1949.383, + "99.73633610253437" : 1953.543, + "99.73828299137884" : 1957.927, + "99.7402385144943" : 1961.631, + "99.74219570875897" : 1965.911, + "99.74414343317805" : 1968.159, + "99.74609533547019" : 1972.159, + "99.74805169416025" : 1976.839, + "99.7500016467783" : 1979.447, + "99.75195438464505" : 1981.631, + "99.75390684398693" : 1985.543, + "99.75586041742828" : 1987.415, + "99.75781983989192" : 1988.511, + "99.75977313480841" : 1991.271, + "99.76172030217776" : 1994.751, + "99.76367304004451" : 1998.423, + "99.76562912020971" : 2002.239, + "99.76758687152412" : 2004.991, + "99.76953292479398" : 2008.047, + "99.77148705528508" : 2012.759, + "99.77344452807463" : 2015.199, + "99.77539392364294" : 2017.823, + "99.77735947365373" : 2021.111, + "99.77929744970234" : 2025.039, + "99.78125158019344" : 2027.503, + "99.78321044560734" : 2031.303, + "99.78516039822539" : 2033.375, + "99.78711703544033" : 2035.991, + "99.78906420280967" : 2040.831, + "99.7910172192013" : 2043.623, + "99.79296884296855" : 2045.039, + "99.79493160773065" : 2049.471, + "99.79687571132641" : 2053.143, + "99.79883039886725" : 2058.423, + "99.80078731460706" : 2061.007, + "99.80273754574998" : 2063.991, + "99.80469000509186" : 2068.615, + "99.80567013411098" : 2069.711, + "99.80664831345601" : 2071.895, + "99.80761785853007" : 2072.911, + "99.80859575935023" : 2074.031, + "99.80957672394396" : 2075.079, + "99.81054933279158" : 2078.615, + "99.81152611951227" : 2080.591, + "99.81251711100134" : 2081.783, + "99.81348052852823" : 2083.023, + "99.81445954344788" : 2084.119, + "99.81543577311882" : 2085.751, + "99.81640838196644" : 2087.943, + "99.81738572573687" : 2089.767, + "99.81836167688293" : 2092.375, + "99.81933846360361" : 2094.039, + "99.82031719999839" : 2095.159, + "99.82129593639317" : 2097.695, + "99.82227745803664" : 2100.783, + "99.82324756016042" : 2102.143, + "99.82422211868214" : 2104.415, + "99.82519890540283" : 2108.783, + "99.8261729068748" : 2110.143, + "99.82716167016491" : 2112.767, + "99.82813483606228" : 2113.839, + "99.82914198199384" : 2117.215, + "99.83009230885183" : 2118.079, + "99.83105906867718" : 2123.167, + "99.83203418424863" : 2126.479, + "99.83302322606362" : 2127.279, + "99.83398970736408" : 2129.311, + "99.83496983638321" : 2130.879, + "99.8359455090044" : 2132.527, + "99.83692257424995" : 2135.631, + "99.83789351194837" : 2139.967, + "99.83887893294002" : 2141.631, + "99.83984430014102" : 2142.463, + "99.84082136538657" : 2145.679, + "99.84181152130103" : 2150.911, + "99.84277354620357" : 2152.639, + "99.84376760146623" : 2155.711, + "99.84473185456774" : 2160.751, + "99.84576657446148" : 2163.615, + "99.84668682063345" : 2169.695, + "99.84766277177953" : 2172.943, + "99.84864958539553" : 2174.207, + "99.84961216734783" : 2178.175, + "99.85059452456592" : 2181.503, + "99.85156769046328" : 2182.495, + "99.85256648064873" : 2184.319, + "99.85352516325283" : 2186.815, + "99.8545086345704" : 2187.759, + "99.85547901521906" : 2189.903, + "99.85645413079051" : 2191.775, + "99.85742284028996" : 2193.535, + "99.85840826128162" : 2196.671, + "99.8593869976764" : 2197.759, + "99.86035236487739" : 2200.159, + "99.86133332947112" : 2204.095, + "99.86232014308713" : 2204.943, + "99.86329219488502" : 2205.583, + "99.8642737165285" : 2207.439, + "99.86525356702276" : 2211.247, + "99.8662128066766" : 2213.647, + "99.86719572094442" : 2219.487, + "99.86816777274231" : 2227.967, + "99.86914233126403" : 2231.631, + "99.87012524553185" : 2233.567, + "99.87110565307586" : 2236.111, + "99.87207074175198" : 2238.271, + "99.87306869636281" : 2241.039, + "99.87403434208868" : 2243.279, + "99.87500862208552" : 2251.727, + "99.8759854088062" : 2255.183, + "99.87695662502948" : 2261.135, + "99.87794260307088" : 2262.511, + "99.87891744011746" : 2265.279, + "99.87990007586042" : 2268.607, + "99.88087463438214" : 2272.047, + "99.88184278683184" : 2275.007, + "99.88281650977895" : 2278.031, + "99.88380304487009" : 2279.743, + "99.88478094569025" : 2282.783, + "99.88574575584151" : 2285.087, + "99.88672672043525" : 2288.031, + "99.88769960780773" : 2291.295, + "99.88868363617505" : 2298.447, + "99.88971222852163" : 2305.727, + "99.89063136059413" : 2308.239, + "99.89161622453605" : 2311.935, + "99.89259858175414" : 2314.095, + "99.89355559320903" : 2318.575, + "99.8945390645266" : 2320.735, + "99.89551390157318" : 2322.815, + "99.89649681584102" : 2325.071, + "99.89747388108657" : 2329.007, + "99.89846598667512" : 2334.911, + "99.89942132698077" : 2338.671, + "99.90039142910456" : 2342.751, + "99.9013723936983" : 2345.471, + "99.90234416697132" : 2349.583, + "99.90284356206404" : 2350.239, + "99.90333432288578" : 2351.839, + "99.90381366418782" : 2355.487, + "99.90430526058418" : 2356.463, + "99.90479184353286" : 2359.999, + "99.9052901245261" : 2365.791, + "99.90576500943023" : 2366.991, + "99.90625911255042" : 2368.607, + "99.90677995405815" : 2370.287, + "99.90723339254725" : 2370.863, + "99.90773780108765" : 2371.087, + "99.90820544434514" : 2372.111, + "99.90877558475496" : 2375.807, + "99.90921370437619" : 2378.415, + "99.90967689123575" : 2379.407, + "99.91015678958753" : 2379.855, + "99.91064810745901" : 2384.031, + "99.91113329778335" : 2385.439, + "99.91162238745586" : 2385.839, + "99.91211147712838" : 2389.295, + "99.91260112385064" : 2392.591, + "99.91309411287133" : 2393.807, + "99.91357568237235" : 2394.687, + "99.91406560761948" : 2396.319, + "99.9145594322148" : 2399.455, + "99.915044901064" : 2401.071, + "99.91553928270905" : 2404.767, + "99.91601667433702" : 2407.951, + "99.91651189155668" : 2408.959, + "99.9169990315551" : 2410.335, + "99.91748533597891" : 2412.255, + "99.9179727545022" : 2413.903, + "99.9184601730255" : 2415.871, + "99.91895344057107" : 2421.071, + "99.91944085909437" : 2421.663, + "99.91992604941869" : 2424.031, + "99.92041179679276" : 2425.455, + "99.92090589991295" : 2426.591, + "99.92139081171241" : 2428.015, + "99.92188797860616" : 2432.143, + "99.92237344745537" : 2435.151, + "99.92285947335431" : 2435.855, + "99.9233733517403" : 2437.439, + "99.92383514597552" : 2440.207, + "99.92431866515062" : 2445.759, + "99.92482418779049" : 2446.063, + "99.92530213646819" : 2446.783, + "99.92582409207542" : 2453.167, + "99.92627697351477" : 2453.695, + "99.9267585430158" : 2456.207, + "99.92725765958365" : 2457.391, + "99.92773755793543" : 2464.815, + "99.92822609055821" : 2467.887, + "99.92871490170586" : 2468.351, + "99.92920594105247" : 2473.663, + "99.9296939166255" : 2475.039, + "99.93017966399957" : 2475.535, + "99.93067209597054" : 2478.639, + "99.93115477957103" : 2480.559, + "99.93164247661919" : 2484.303, + "99.93213295891606" : 2486.367, + "99.93263040433469" : 2493.775, + "99.93310751743778" : 2494.767, + "99.93360468433154" : 2496.335, + "99.93410045860095" : 2499.023, + "99.93457283678124" : 2499.791, + "99.93506164792888" : 2501.087, + "99.93556744909363" : 2506.591, + "99.93605124679361" : 2507.807, + "99.93653003104592" : 2509.599, + "99.93702107039252" : 2509.999, + "99.9375558381438" : 2511.727, + "99.93799117251632" : 2514.223, + "99.93848193333805" : 2517.487, + "99.93896823776187" : 2518.255, + "99.93945621333489" : 2523.791, + "99.93994474595767" : 2524.735, + "99.94043522825454" : 2526.335, + "99.940920140054" : 2531.807, + "99.94142064924621" : 2537.903, + "99.94189720529955" : 2540.143, + "99.94238629497207" : 2542.127, + "99.94287399202024" : 2543.551, + "99.94336029644404" : 2545.199, + "99.94386108416113" : 2552.943, + "99.94433958988856" : 2554.399, + "99.94483592120771" : 2559.871, + "99.94532473235536" : 2561.439, + "99.9458115938289" : 2570.799, + "99.94630124055116" : 2571.247, + "99.94677807512939" : 2574.367, + "99.94727078562522" : 2580.735, + "99.94775876119824" : 2583.711, + "99.94825815629098" : 2584.767, + "99.9487330411951" : 2589.359, + "99.94921878856917" : 2595.631, + "99.94971456283858" : 2601.407, + "99.95019808201369" : 2606.111, + "99.95069302070847" : 2612.431, + "99.95119854334835" : 2621.151, + "99.95142219881933" : 2621.391, + "99.95166061610843" : 2622.447, + "99.95190738914366" : 2628.447, + "99.95214887020634" : 2631.503, + "99.95240650571151" : 2631.743, + "99.95265940629388" : 2631.919, + "99.9528911389861" : 2632.415, + "99.95312788512598" : 2643.055, + "99.95337103733789" : 2643.487, + "99.95361920299746" : 2650.719, + "99.95386179815962" : 2654.015, + "99.95410522889641" : 2656.335, + "99.95434726700883" : 2658.255, + "99.95459320446943" : 2665.903, + "99.95483802783056" : 2667.087, + "99.95508201561708" : 2667.519, + "99.95533575177407" : 2669.487, + "99.95557528316266" : 2669.887, + "99.95581258635228" : 2670.111, + "99.9560585238129" : 2672.415, + "99.95632841441237" : 2672.639, + "99.95655179135846" : 2674.511, + "99.95678825897349" : 2674.815, + "99.95703280380974" : 2675.711, + "99.95728152651905" : 2676.063, + "99.95752133643252" : 2677.311, + "99.95776671684338" : 2678.719, + "99.95801766775166" : 2680.223, + "99.95825719914025" : 2680.895, + "99.95849812315319" : 2681.871, + "99.95874155388998" : 2682.399, + "99.95899334037287" : 2683.903, + "99.95923537848529" : 2684.175, + "99.95947880922206" : 2691.439, + "99.95972056880962" : 2693.167, + "99.959964835121" : 2696.399, + "99.96020520208421" : 2697.615, + "99.96045476036814" : 2698.175, + "99.9607076609505" : 2700.143, + "99.9609641823562" : 2700.655, + "99.96118811635203" : 2705.983, + "99.9614307115142" : 2708.367, + "99.96167609192507" : 2708.751, + "99.96195043892247" : 2713.167, + "99.96221364492504" : 2716.463, + "99.96240471298619" : 2716.623, + "99.96265092897166" : 2730.399, + "99.96289547380792" : 2731.551, + "99.96313890454469" : 2739.711, + "99.96338623462965" : 2740.047, + "99.96363050094105" : 2744.239, + "99.96387198200372" : 2744.495, + "99.96411429864102" : 2744.991, + "99.96435577970371" : 2745.311, + "99.96460227421406" : 2747.199, + "99.96484904724927" : 2749.839, + "99.96510723980418" : 2750.063, + "99.96533479462335" : 2754.319, + "99.96557906093474" : 2755.295, + "99.96582583396996" : 2755.551, + "99.96606954323161" : 2756.623, + "99.966313809543" : 2759.679, + "99.9665569617549" : 2761.455, + "99.9667992783922" : 2765.519, + "99.96704382322845" : 2766.815, + "99.96729282446263" : 2776.911, + "99.96753207732635" : 2777.839, + "99.9677749510134" : 2778.367, + "99.96802395224758" : 2792.191, + "99.96826543331026" : 2793.695, + "99.96852279029056" : 2797.023, + "99.96875452298278" : 2799.935, + "99.96900686651541" : 2800.655, + "99.9692416629812" : 2801.295, + "99.96948509371798" : 2801.839, + "99.96972852445475" : 2803.983, + "99.96997195519153" : 2806.175, + "99.97021844970189" : 2809.551, + "99.97046383011275" : 2817.791, + "99.97070809642415" : 2818.639, + "99.97095960438216" : 2831.039, + "99.97119245117386" : 2831.375, + "99.97146540554691" : 2831.823, + "99.97168460461995" : 2834.415, + "99.97192998503083" : 2836.063, + "99.97217258019299" : 2839.023, + "99.97242492372561" : 2855.743, + "99.97266306248986" : 2856.191, + "99.97291596307223" : 2856.463, + "99.97315354478673" : 2856.703, + "99.97344961672401" : 2864.303, + "99.97363957068566" : 2867.279, + "99.97387770944991" : 2872.511, + "99.97412364691051" : 2873.647, + "99.97439075226127" : 2873.807, + "99.9746102298592" : 2874.639, + "99.97485700289441" : 2875.023, + "99.97509931953171" : 2877.695, + "99.97534609256694" : 2878.047, + "99.9755886877291" : 2881.215, + "99.97571012457261" : 2881.407, + "99.9758393601125" : 2881.791, + "99.97595968285654" : 2881.983, + "99.9760788915011" : 2901.231, + "99.97620367064306" : 2901.455, + "99.97632455043684" : 2903.551, + "99.97644515170575" : 2903.663, + "99.97656324625082" : 2905.791, + "99.976689696542" : 2906.047, + "99.97681670388293" : 2906.239, + "99.97693312727878" : 2906.959, + "99.97705679232126" : 2907.167, + "99.97717850768964" : 2910.863, + "99.97729660223472" : 2911.103, + "99.97743168679689" : 2917.263, + "99.97754532494403" : 2917.471, + "99.97766119129014" : 2917.679, + "99.97778959125542" : 2932.207, + "99.97790907842484" : 2932.479, + "99.97803190789271" : 2939.471, + "99.97816253605696" : 2939.583, + "99.97827199633105" : 2946.255, + "99.97840262449529" : 2946.367, + "99.97851765526678" : 2946.463, + "99.9786438270331" : 2947.407, + "99.97876860617507" : 2947.551, + "99.9789039692621" : 2947.647, + "99.97900841608853" : 2947.855, + "99.97912706768334" : 2948.719, + "99.9792510112507" : 2948.911, + "99.97937244809421" : 2949.103, + "99.97950084805949" : 2953.919, + "99.97961699293047" : 2954.111, + "99.97974093649782" : 2961.023, + "99.97986989351284" : 2961.167, + "99.97998381018486" : 2961.551, + "99.98011499539884" : 2961.759, + "99.98022974764547" : 2961.983, + "99.98034951333976" : 2962.767, + "99.98047484953146" : 2963.055, + "99.98059823604908" : 2974.767, + "99.98072329371591" : 2974.879, + "99.98084361645995" : 2986.959, + "99.98096588887807" : 2987.151, + "99.98108231227393" : 3001.711, + "99.98120152091848" : 3001.887, + "99.98133075645836" : 3002.159, + "99.98144996510293" : 3007.135, + "99.98156917374747" : 3007.295, + "99.98169116764073" : 3023.759, + "99.98182040318062" : 3024.031, + "99.98193599100186" : 3024.175, + "99.98207051851429" : 3024.335, + "99.98218025731325" : 3024.575, + "99.9823117210521" : 3026.639, + "99.98243872839303" : 3026.767, + "99.98256601425884" : 3026.831, + "99.98266823288628" : 3026.927, + "99.98279496170234" : 3027.839, + "99.98292837511529" : 3027.903, + "99.983053711307" : 3027.935, + "99.9831592722329" : 3029.663, + "99.98327848087744" : 3029.871, + "99.98339936067123" : 3049.295, + "99.98353082441008" : 3049.503, + "99.98365031157951" : 3052.879, + "99.98377119137328" : 3053.087, + "99.983887893294" : 3053.247, + "99.9840226993313" : 3056.895, + "99.98413856567741" : 3057.039, + "99.9842678012173" : 3067.967, + "99.9843884024862" : 3068.063, + "99.98450454735719" : 3080.431, + "99.9846192996038" : 3080.655, + "99.98474324317117" : 3080.927, + "99.98486746526339" : 3089.375, + "99.9849983719525" : 3089.487, + "99.98511395977374" : 3090.159, + "99.985235953667" : 3090.319, + "99.98535906165974" : 3091.711, + "99.98549219654781" : 3091.887, + "99.98561446896595" : 3091.983, + "99.98573284203589" : 3092.079, + "99.98584648018303" : 3092.287, + "99.98596485325298" : 3103.615, + "99.98609130354416" : 3103.855, + "99.98627429438405" : 3107.167, + "99.98633751952964" : 3107.263, + "99.98645087915192" : 3108.511, + "99.98660211815657" : 3108.703, + "99.98671046433118" : 3108.767, + "99.9868176964063" : 3108.847, + "99.98693941177469" : 3108.927, + "99.98706057009333" : 3110.527, + "99.98718507071044" : 3110.767, + "99.98731040690214" : 3114.207, + "99.98742905849694" : 3114.383, + "99.9875530020643" : 3114.623, + "99.98767304628346" : 3115.103, + "99.9878000536244" : 3115.279, + "99.98785520154874" : 3115.375, + "99.98791898374408" : 3142.159, + "99.98797663839225" : 3142.271, + "99.98803986353785" : 3142.351, + "99.98810058195961" : 3142.479, + "99.98817522662489" : 3153.871, + "99.98822675372593" : 3153.951, + "99.98828691509794" : 3154.031, + "99.98834568384561" : 3154.127, + "99.98841197276478" : 3154.239, + "99.98847380528602" : 3160.639, + "99.98853452370778" : 3160.703, + "99.98859635622902" : 3160.767, + "99.98865345382747" : 3160.847, + "99.98872197094559" : 3209.695, + "99.98877294099688" : 3209.759, + "99.98884619303782" : 3209.855, + "99.98890134096217" : 3209.919, + "99.98895342511294" : 3209.935, + "99.98901720730828" : 3220.047, + "99.98907959687925" : 3220.191, + "99.98913697300257" : 3220.319, + "99.98919852699895" : 3220.463, + "99.98926230919427" : 3220.575, + "99.98933054778753" : 3221.967, + "99.98939822933106" : 3222.031, + "99.98944919938235" : 3222.127, + "99.9895071325554" : 3222.239, + "99.98956896507664" : 3239.743, + "99.9896335828466" : 3239.855, + "99.98969040192016" : 3239.967, + "99.98974805656835" : 3240.079, + "99.98980738236575" : 3240.191, + "99.98987367128493" : 3242.975, + "99.98993661790564" : 3243.055, + "99.99000262829993" : 3243.119, + "99.99005944737351" : 3243.183, + "99.99011459529787" : 3243.279, + "99.99017475666989" : 3258.127, + "99.99024383083776" : 3258.223, + "99.99029647203827" : 3258.271, + "99.990359418659" : 3258.351, + "99.990419580031" : 3265.455, + "99.99048224812687" : 3265.599, + "99.99054296654862" : 3265.775, + "99.99060479906986" : 3265.983, + "99.99066969536467" : 3266.143, + "99.990727071488" : 3269.615, + "99.99081675649627" : 3269.695, + "99.99084655865741" : 3269.743, + "99.99091006232788" : 3269.807, + "99.99096799550094" : 3273.791, + "99.99103038507191" : 3273.919, + "99.99109221759315" : 3274.079, + "99.99115460716413" : 3274.239, + "99.9912153255859" : 3274.415, + "99.99127799368175" : 3304.207, + "99.99133926915324" : 3304.319, + "99.99139580970194" : 3304.399, + "99.99145736369832" : 3304.511, + "99.99152114589366" : 3304.623, + "99.99158464956412" : 3318.367, + "99.99163924043873" : 3318.511, + "99.99170330115894" : 3318.639, + "99.99176374105582" : 3318.751, + "99.99182752325115" : 3326.351, + "99.99189019134701" : 3326.495, + "99.99194923861954" : 3326.607, + "99.99200745031746" : 3326.751, + "99.99207318218689" : 3326.879, + "99.99213473618326" : 3337.567, + "99.99219099820709" : 3337.631, + "99.99225255220347" : 3337.727, + "99.992311599476" : 3337.839, + "99.99237259642263" : 3337.919, + "99.99243637861797" : 3358.063, + "99.99249960376356" : 3358.207, + "99.99256060071019" : 3358.319, + "99.99261630568428" : 3358.447, + "99.9926800878796" : 3364.191, + "99.99274303450034" : 3364.287, + "99.99280013209878" : 3364.383, + "99.9928658639682" : 3364.527, + "99.99292936763867" : 3364.607, + "99.99298590818736" : 3383.727, + "99.99304634808426" : 3383.807, + "99.993115700777" : 3383.839, + "99.99317586214902" : 3383.919, + "99.99322738925005" : 3407.119, + "99.99329033587077" : 3407.199, + "99.99335049724279" : 3407.279, + "99.99341093713969" : 3407.375, + "99.9934805683573" : 3407.455, + "99.99353543775678" : 3409.375, + "99.9935964347034" : 3409.503, + "99.99365603902568" : 3409.615, + "99.993719821221" : 3409.775, + "99.99378165374226" : 3409.887, + "99.99384376478837" : 3439.935, + "99.99390392616039" : 3440.047, + "99.9939415270179" : 3440.079, + "99.99397105065417" : 3440.111, + "99.99398887624587" : 3440.127, + "99.99402814825261" : 3440.159, + "99.99405043024224" : 3440.175, + "99.99408775257488" : 3440.207, + "99.99411254128836" : 3440.223, + "99.99415961199146" : 3440.255, + "99.99418440070492" : 3440.271, + "99.99420779679404" : 3440.287, + "99.99423537075623" : 3440.319, + "99.99426879374067" : 3440.367, + "99.99429831737694" : 3440.447, + "99.99433034773705" : 3440.479, + "99.9943582002241" : 3476.895, + "99.99439468698212" : 3476.991, + "99.99441780454637" : 3477.039, + "99.99444927785673" : 3477.135, + "99.99448214379144" : 3477.199, + "99.99451194595258" : 3477.263, + "99.99454453336243" : 3477.327, + "99.99457071470025" : 3477.375, + "99.99460775850802" : 3477.439, + "99.99463310427123" : 3477.471, + "99.99466569168108" : 3562.911, + "99.9946927085935" : 3562.991, + "99.99472613157796" : 3563.071, + "99.99475509816449" : 3563.135, + "99.99478378622615" : 3563.215, + "99.99481553806137" : 3563.295, + "99.99484478317278" : 3563.375, + "99.99487876320697" : 3563.439, + "99.99491162914168" : 3563.487, + "99.99494087425307" : 3570.063, + "99.99500772022199" : 3570.095, + "99.99502860958728" : 3570.111, + "99.99507707291474" : 3570.143, + "99.995091556208" : 3570.159, + "99.99512135836913" : 3570.207, + "99.99515478135359" : 3570.271, + "99.99517957006707" : 3570.319, + "99.9952093722282" : 3579.503, + "99.99524335226239" : 3579.599, + "99.9952781678712" : 3579.711, + "99.99531131233078" : 3579.743, + "99.99533108759658" : 3579.791, + "99.99536256090695" : 3579.903, + "99.99539932618985" : 3579.983, + "99.99542355785358" : 3580.047, + "99.99546979298208" : 3580.095, + "99.99548483332508" : 3587.535, + "99.99551742073493" : 3587.599, + "99.99555641421678" : 3587.679, + "99.99559317949968" : 3587.711, + "99.9956071057432" : 3587.727, + "99.9956438710261" : 3587.775, + "99.99567729401056" : 3587.839, + "99.99570013304994" : 3587.871, + "99.99574107620589" : 3587.919, + "99.99575862327274" : 3587.935, + "99.99578953953335" : 3631.487, + "99.99582324104267" : 3631.551, + "99.99585582845252" : 3631.615, + "99.99588228831522" : 3631.679, + "99.99591348310071" : 3631.743, + "99.99594328526184" : 3631.807, + "99.99597503709708" : 3631.887, + "99.99601180237998" : 3631.951, + "99.99603770519293" : 3631.983, + "99.99607279932661" : 3646.527, + "99.99609424574163" : 3646.559, + "99.99613184659914" : 3646.623, + "99.99615802793696" : 3646.671, + "99.99619033682194" : 3646.719, + "99.99621735373437" : 3646.767, + "99.9962538404924" : 3646.847, + "99.9962811359297" : 3646.895, + "99.99631065956598" : 3646.975, + "99.99633906910276" : 3702.031, + "99.99636942831364" : 3702.095, + "99.99641176409395" : 3702.159, + "99.99642958968566" : 3702.191, + "99.99646746906804" : 3702.255, + "99.99649365040587" : 3702.303, + "99.9965226169924" : 3702.367, + "99.9965593822753" : 3702.431, + "99.99658918443643" : 3702.479, + "99.99661564429911" : 3725.215, + "99.99665575188047" : 3725.263, + "99.99668443994211" : 3725.295, + "99.99673067507062" : 3725.327, + "99.99676103428149" : 3725.343, + "99.99677468200015" : 3725.359, + "99.99680309153693" : 3725.391, + "99.99682871582502" : 3725.423, + "99.9968590750359" : 3725.455, + "99.99688943424677" : 3725.487, + "99.99692675657941" : 3737.679, + "99.9969504311934" : 3737.711, + "99.99696380038719" : 3737.727, + "99.99698747500118" : 3737.743, + "99.99700474354314" : 3737.759, + "99.9970156060131" : 3737.775, + "99.99702674700791" : 3737.791, + "99.99710334134728" : 3737.807, + "99.99712896563537" : 3737.823, + "99.99713370055817" : 3737.839, + "99.99714929795091" : 3737.951, + "99.99716545239339" : 3738.015, + "99.99718884848251" : 3748.607, + "99.99719943242759" : 3748.623, + "99.9972097378478" : 3748.639, + "99.99722923458873" : 3748.671, + "99.9972398185338" : 3748.687, + "99.99726934217007" : 3748.719, + "99.99729496645816" : 3748.735, + "99.99731864107214" : 3748.751, + "99.99734092306178" : 3748.767, + "99.99736069832758" : 3748.783, + "99.9973935642623" : 3748.799, + "99.99741974560011" : 3748.815, + "99.99743200069442" : 3748.831, + "99.99744871218664" : 3748.847, + "99.99745790350737" : 3748.863, + "99.9974726653255" : 3751.983, + "99.99749021239235" : 3752.015, + "99.99749856813845" : 3752.031, + "99.99751778635452" : 3752.095, + "99.9975292058742" : 3752.127, + "99.99754786704052" : 3752.191, + "99.99756207180891" : 3752.223, + "99.99757432690322" : 3752.287, + "99.99759159544519" : 3752.351, + "99.99760524316385" : 3752.383, + "99.99762000498197" : 3752.495, + "99.99763978024778" : 3752.559, + "99.99765231386695" : 3752.607, + "99.99766568306073" : 3752.671, + "99.99768128045348" : 3752.719, + "99.99769715637109" : 3752.767, + "99.99771331081358" : 3752.831, + "99.99772695853223" : 3752.879, + "99.99774589822341" : 3809.567, + "99.99776539496435" : 3809.599, + "99.99777792858352" : 3809.615, + "99.99779658974984" : 3809.631, + "99.9978082877944" : 3809.647, + "99.99781998583896" : 3809.663, + "99.99783781143067" : 3809.695, + "99.997856472597" : 3809.727, + "99.99786566391771" : 3809.743, + "99.99788265393481" : 3809.759, + "99.99789741575294" : 3809.791, + "99.99791663396901" : 3809.823, + "99.99793223136176" : 3809.839, + "99.99794699317988" : 3809.871, + "99.997955348926" : 3809.887, + "99.99797902353998" : 3809.919, + "99.99799740618144" : 3809.935, + "99.99801077537522" : 3809.951, + "99.99802080227056" : 3809.967, + "99.99803723523792" : 3925.935, + "99.99806063132704" : 3925.967, + "99.99806258100112" : 3925.983, + "99.99808402741616" : 3926.031, + "99.99810101743324" : 3926.063, + "99.9981099302291" : 3926.079, + "99.99813471894257" : 3926.111, + "99.99814892371097" : 3926.127, + "99.99816229290475" : 3926.143, + "99.99817426947418" : 3926.159, + "99.99818568899387" : 3926.175, + "99.99820435016018" : 3926.207, + "99.9982202260778" : 3926.239, + "99.99823498789594" : 3926.271, + "99.9982514208633" : 3926.303, + "99.99827036055449" : 3926.335, + "99.99828205859905" : 3926.351, + "99.99829570631769" : 3926.367, + "99.99830991108608" : 3967.119, + "99.99832801520267" : 3967.167, + "99.99833887767261" : 3967.199, + "99.99835336096588" : 3967.295, + "99.99836895835863" : 3967.359, + "99.99838344165188" : 3967.407, + "99.99839876051976" : 3967.455, + "99.99842354923324" : 3967.519, + "99.99842911973064" : 3967.535, + "99.99844471712339" : 3967.583, + "99.99846003599126" : 3967.631, + "99.99847646895861" : 3967.695, + "99.99848426765499" : 3967.743, + "99.99849123077675" : 3967.791, + "99.9985020932467" : 3967.823, + "99.99851044899282" : 3967.839, + "99.99851796916431" : 3967.855, + "99.99852576786068" : 3967.871, + "99.99853663033063" : 3967.887, + "99.9985435934524" : 3967.903, + "99.9985511136239" : 3967.919, + "99.99855891232028" : 3967.935, + "99.99856671101665" : 3967.951, + "99.99858202988452" : 3967.967, + "99.99859818432701" : 4027.887, + "99.99862436566482" : 4027.903, + "99.99864024158245" : 4027.919, + "99.99865249667674" : 4027.935, + "99.99866530882079" : 4027.951, + "99.99867700686535" : 4027.967, + "99.99868675523581" : 4027.983, + "99.99870346672805" : 4027.999, + "99.99873633266276" : 4028.015, + "99.99876334957519" : 4028.031, + "99.99878145369176" : 4028.047, + "99.99879649403476" : 4028.063, + "99.99881042027829" : 4028.079, + "99.99882378947207" : 4028.095, + "99.99884245063839" : 4028.111, + "99.99885526278244" : 4028.127, + "99.998866960827" : 4028.143, + "99.99887615214772" : 4057.135, + "99.99888617904305" : 4057.151, + "99.99890066233633" : 4057.167, + "99.9989131959555" : 4057.183, + "99.99892656514928" : 4057.199, + "99.99894411221611" : 4057.215, + "99.99895636731041" : 4057.231, + "99.99896917945445" : 4057.247, + "99.99897335732751" : 4057.263, + "99.99897781372543" : 4057.279, + "99.99899090439435" : 4057.295, + "99.9989998171902" : 4057.311, + "99.99901179375964" : 4057.327, + "99.99903156902543" : 4057.343, + "99.99904048182128" : 4057.359, + "99.99904967314201" : 4057.375, + "99.99905858593787" : 4057.391, + "99.99906722020886" : 4057.407, + "99.99907501890523" : 4057.423, + "99.99908643842491" : 4057.439, + "99.99909451564615" : 4057.455, + "99.99910314991713" : 4057.471, + "99.999112062713" : 4057.487, + "99.99912069698398" : 4057.503, + "99.99912933125496" : 4057.519, + "99.99913963667517" : 4057.535, + "99.99914938504564" : 4057.551, + "99.99915774079174" : 4130.527, + "99.99916888178657" : 4130.543, + "99.99918197245547" : 4130.559, + "99.99924464055132" : 4130.575, + "99.99928363403319" : 4130.591, + "99.99929449650314" : 4130.607, + "99.9993081442218" : 4130.623, + "99.99933683228345" : 4130.639, + "99.99936997674304" : 4130.655, + "99.99937749691453" : 4130.671, + "99.99939504398138" : 4130.687, + "99.9994231749933" : 4130.703, + "99.9994267958166" : 4130.719, + "99.99943487303786" : 4130.735, + "99.99943737976169" : 5019.999, + "99.99944462140832" : 5020.031, + "99.99945715502749" : 5020.063, + "99.99946662487308" : 5020.095, + "99.99947665176842" : 5020.127, + "99.99948612161401" : 5020.159, + "99.99949531293474" : 5020.191, + "99.99950533983008" : 5020.223, + "99.99951843049898" : 5020.255, + "99.99952511509588" : 5020.287, + "99.9995315211679" : 5020.319, + "99.99954238363784" : 5020.351, + "99.99955937365495" : 5020.383, + "99.99957747777152" : 5020.415, + "99.99959196106478" : 5020.447, + "99.99959613893785" : 5020.479, + "99.99961786387773" : 5020.511, + "99.99963290422075" : 5020.543, + "99.99965379358602" : 5020.575, + "99.99967691115027" : 5020.607, + "99.9996955723166" : 5020.639, + "99.9997172972565" : 5020.671, + "99.9997181328311" : 5064.575, + "99.99972927382592" : 5064.607, + "99.99973846514665" : 5064.639, + "99.99974765646736" : 5064.671, + "99.99976603910882" : 5064.703, + "99.99978748552384" : 5064.735, + "99.99980419701608" : 5064.767, + "99.99981700916011" : 5064.799, + "99.99984012672437" : 5064.831, + "99.99986296576374" : 5064.863, + "99.99988942562644" : 5064.895, + "99.99990613711866" : 5064.927, + "99.99992981173264" : 5064.959, + "99.9999537648715" : 5064.991, + "99.99998551670673" : 5065.023, + "100.0" : 5065.055 + }, + "endToEndLatencyAvg" : [ 241.66791345754874, 241.73957102589085, 264.40887868431696, 241.29297505319036, 232.01227803548326, 251.69875972782924, 253.11528261394034, 257.987950175439, 248.15702181470039, 240.6798601930962, 232.61320050479534, 273.78679355602424, 235.0522429330484, 230.05739472210507, 234.67155140943572, 236.23939896970796, 244.77028312799473, 232.13662390963066, 245.90852342471925, 246.69210307711106, 246.23867015093214, 256.29014253393063, 233.76428252855587, 237.4250544345617, 241.49635286560053, 242.1618258621254, 241.44953434119807, 247.77391998881322, 250.4046275031247, 230.85577114055778, 255.653474700844, 234.6365613762811, 248.70920163868357, 232.59471653355644, 244.70516921066397, 240.61961499504253, 240.7766600947148, 238.76196780760418, 256.68156508554046, 229.77430131626173, 230.266756808853, 256.7171326691087, 224.71322644238342, 249.59271824265863, 223.45851211512547, 246.51487926038777, 240.3690278370535, 237.5625104048694, 273.41688787276996, 246.0496403385728, 237.4764053477107, 240.74387829515393, 244.28367678345086, 245.95764231921115, 253.17277867423667, 235.61262208965945, 251.33171533805802, 247.88703552551078, 266.0044929431198, 244.02293162873178 ], + "endToEndLatency50pct" : [ 124.0, 109.0, 116.0, 120.0, 118.0, 125.0, 108.0, 105.0, 118.0, 108.0, 127.0, 134.0, 131.0, 117.0, 121.0, 112.0, 128.0, 111.0, 106.0, 114.0, 130.0, 126.0, 126.0, 108.0, 116.0, 119.0, 124.0, 122.0, 119.0, 104.0, 97.0, 119.0, 127.0, 116.0, 119.0, 131.0, 121.0, 118.0, 127.0, 106.0, 127.0, 123.0, 132.0, 122.0, 122.0, 127.0, 112.0, 108.0, 118.0, 113.0, 114.0, 118.0, 118.0, 110.0, 111.0, 123.0, 113.0, 121.0, 118.0, 125.0 ], + "endToEndLatency75pct" : [ 295.001, 283.001, 315.001, 303.001, 289.001, 308.001, 283.001, 302.001, 296.001, 281.001, 288.001, 336.001, 299.001, 278.001, 282.001, 284.001, 313.001, 269.001, 304.001, 290.001, 296.001, 319.001, 283.001, 284.001, 284.001, 297.001, 305.001, 297.001, 306.001, 271.001, 314.001, 273.001, 293.001, 278.001, 283.001, 301.001, 298.001, 292.001, 299.001, 267.001, 279.001, 312.001, 282.001, 306.001, 282.001, 301.001, 298.001, 259.0, 334.001, 294.001, 290.001, 297.001, 287.001, 306.001, 308.001, 285.001, 303.001, 309.001, 324.001, 298.001 ], + "endToEndLatency95pct" : [ 859.003, 929.003, 1008.003, 859.003, 842.003, 933.003, 1037.003, 1055.007, 974.003, 934.003, 809.003, 1029.003, 789.003, 842.003, 849.003, 891.003, 857.003, 865.003, 939.003, 950.003, 877.003, 984.003, 809.003, 884.003, 917.003, 896.003, 863.003, 932.003, 915.003, 877.003, 1030.003, 874.003, 872.003, 872.003, 921.003, 815.003, 904.003, 860.003, 921.003, 860.003, 775.003, 918.003, 731.003, 925.003, 772.003, 878.003, 908.003, 943.003, 1044.003, 917.003, 896.003, 861.003, 929.003, 915.003, 961.003, 845.003, 950.003, 909.003, 1029.003, 885.003 ], + "endToEndLatency99pct" : [ 1401.007, 1551.007, 1710.007, 1445.007, 1316.007, 1434.007, 1728.007, 1693.007, 1509.007, 1526.007, 1410.007, 1670.007, 1269.007, 1392.007, 1317.007, 1481.007, 1370.007, 1509.007, 1496.007, 1489.007, 1496.007, 1460.007, 1445.007, 1480.007, 1443.007, 1486.007, 1310.007, 1543.007, 1535.007, 1482.007, 1645.007, 1521.007, 1702.007, 1466.007, 1581.007, 1413.007, 1324.007, 1349.007, 1618.007, 1553.007, 1329.007, 1647.007, 1253.007, 1544.007, 1191.007, 1484.007, 1386.007, 1679.007, 1752.007, 1531.007, 1423.007, 1512.007, 1505.007, 1495.007, 1653.007, 1435.007, 1579.007, 1453.007, 1679.007, 1425.007 ], + "endToEndLatency999pct" : [ 2703.007, 2502.015, 2799.007, 2452.015, 2099.007, 2196.015, 2528.015, 2867.007, 2336.015, 2413.007, 2178.015, 2206.015, 1881.007, 2189.007, 2157.007, 2269.007, 2138.015, 2097.007, 2078.007, 2212.015, 2314.015, 2168.015, 2271.007, 2237.007, 2809.007, 2009.007, 2239.007, 2161.007, 2557.007, 2463.007, 2372.015, 2263.007, 3107.007, 2098.015, 2572.015, 2116.015, 1875.007, 2220.015, 2944.015, 2704.015, 2719.007, 2866.015, 1819.007, 2373.007, 1964.007, 2350.015, 2033.007, 2714.015, 2557.007, 2689.007, 1941.007, 2412.015, 2630.015, 2270.015, 2359.007, 2234.015, 2804.015, 2061.007, 2458.015, 2110.015 ], + "endToEndLatency9999pct" : [ 3323.007, 4071.007, 4182.015, 3120.015, 2525.007, 3814.015, 3363.007, 3651.007, 2749.007, 2750.015, 2651.007, 3121.007, 2479.007, 2871.007, 3072.015, 2808.015, 3166.015, 3114.015, 2588.015, 2505.007, 3610.015, 2878.015, 2540.015, 3035.007, 3854.015, 2590.015, 2534.015, 2416.015, 2938.015, 3373.007, 2796.015, 3765.007, 3636.015, 3165.007, 3388.015, 2869.007, 3335.007, 2760.015, 3585.007, 2915.007, 3972.015, 5079.007, 2589.007, 2912.015, 2340.015, 2646.015, 3024.015, 3104.015, 3228.015, 2999.007, 2451.007, 2880.015, 3054.015, 2588.015, 2880.015, 2632.015, 3250.015, 2442.015, 3193.007, 2410.015 ], + "endToEndLatencyMax" : [ 3327.007, 4072.015, 4183.007, 3122.015, 2529.007, 3818.015, 3371.007, 3657.007, 2757.007, 2756.015, 2664.015, 3126.015, 2503.007, 2878.015, 3083.007, 2811.007, 3176.015, 3118.015, 2589.007, 2517.007, 3622.015, 2886.015, 2541.007, 3036.015, 3855.007, 2605.007, 2543.007, 2419.007, 2941.007, 3376.015, 2797.007, 3766.015, 3646.015, 3170.015, 3391.007, 2870.015, 3352.015, 2761.007, 3588.015, 2918.015, 3975.007, 5080.031, 2593.007, 2920.015, 2346.015, 2652.015, 3025.007, 3105.007, 3229.007, 3003.007, 2456.015, 2881.007, 3054.015, 2591.007, 2886.015, 2632.015, 3250.015, 2443.007, 3198.015, 2411.007 ], + "aggregatedEndToEndLatencyQuantiles" : { + "0.00160657014100987" : 1.0, + "0.600236385850675" : 20.0, + "1.296308524348363" : 21.0, + "1.9016829822155443" : 22.0, + "2.3677504284867124" : 23.0, + "2.7532476022978174" : 24.0, + "3.143965572004049" : 25.0, + "3.527654240280207" : 26.0, + "4.2659314331740115" : 28.0, + "4.647297983685676" : 29.0, + "5.051253166628991" : 30.0, + "5.532453790587632" : 31.0, + "6.158494734467755" : 32.0, + "6.961545281384145" : 33.0, + "7.811858180555583" : 34.0, + "8.624670702212283" : 35.0, + "9.40723720129922" : 36.0, + "10.168818852779737" : 37.0, + "10.959724030244196" : 38.0, + "11.755379006705645" : 39.0, + "12.559889894684677" : 40.0, + "13.332051568149634" : 41.0, + "14.162473134689273" : 42.0, + "14.990977568378604" : 43.0, + "15.779333346311049" : 44.0, + "16.582521209295315" : 45.0, + "17.418302001924268" : 46.0, + "18.221136965399406" : 47.0, + "19.022111059402963" : 48.0, + "19.824481432206255" : 49.0, + "20.597607660525288" : 50.0, + "21.345686658175037" : 51.0, + "22.073092763585553" : 52.0, + "22.77749021094503" : 53.0, + "23.45657721529415" : 54.0, + "24.128527683555728" : 55.0, + "24.765338329424807" : 56.0, + "25.40372992052973" : 57.0, + "26.035160171909578" : 58.0, + "26.64251749607944" : 59.0, + "27.231133265970843" : 60.0, + "27.810729069245316" : 61.0, + "28.391361845584104" : 62.0, + "28.968097965148843" : 63.0, + "29.540885899597626" : 64.0, + "30.082178318818436" : 65.0, + "30.636992610548884" : 66.0, + "31.152104175578575" : 67.0, + "31.674532208095098" : 68.0, + "32.184467542282114" : 69.0, + "32.68477988898617" : 70.0, + "33.15440975413797" : 71.0, + "33.626641104226856" : 72.0, + "34.1075336722604" : 73.0, + "34.5656275950526" : 74.0, + "35.00494319739807" : 75.0, + "35.90676549832354" : 77.0, + "36.360171177597444" : 78.0, + "36.79174666592618" : 79.0, + "37.205356867483914" : 80.0, + "37.63152940026561" : 81.0, + "38.05878458529039" : 82.0, + "38.86103351832575" : 84.0, + "39.254147973727754" : 85.0, + "39.645533862157656" : 86.0, + "40.027478087161775" : 87.0, + "40.792593747301986" : 89.0, + "41.16480301512884" : 90.0, + "41.524952979761316" : 91.0, + "42.28201879877024" : 93.0, + "42.64608352472933" : 94.0, + "43.35248807063875" : 96.0, + "43.70006567691046" : 97.0, + "44.05193796158096" : 98.0, + "44.70837060004607" : 100.0, + "45.0070065871799" : 101.0, + "45.64000162896408" : 103.0, + "46.256715942960064" : 105.0, + "46.56300291400572" : 106.0, + "47.15830873386539" : 108.0, + "47.748997335759114" : 110.0, + "48.036811535498934" : 111.0, + "48.60103156008163" : 113.0, + "49.15965477113911" : 115.0, + "49.694336800422924" : 117.0, + "50.23303776184346" : 119.0, + "50.508205235291236" : 120.0, + "50.773123582269044" : 121.0, + "51.03674313649937" : 122.0, + "51.298402942547966" : 123.0, + "51.56129023726013" : 124.0, + "51.807581506437984" : 125.0, + "52.06831909443234" : 126.0, + "52.318175567806605" : 127.0, + "52.564973764456134" : 128.0, + "52.80201778524953" : 129.0, + "53.04202593909435" : 130.0, + "53.28194941933951" : 131.0, + "53.523680012461725" : 132.0, + "53.75747022736274" : 133.0, + "54.20602695039795" : 135.0, + "54.430406697409886" : 136.0, + "54.66089603458186" : 137.0, + "54.887605141179314" : 138.0, + "55.10919372324967" : 139.0, + "55.32492422917479" : 140.0, + "55.545778323474366" : 141.0, + "55.76382621212716" : 142.0, + "56.20010916265305" : 144.0, + "56.39643493061287" : 145.0, + "56.604726415156904" : 146.0, + "56.802708888941744" : 147.0, + "57.202035712656006" : 149.0, + "57.400002310140906" : 150.0, + "57.59754164018539" : 151.0, + "57.79750920852553" : 152.0, + "58.196971955649786" : 154.0, + "58.37884360590891" : 155.0, + "58.56480799917289" : 156.0, + "58.75617701917338" : 157.0, + "59.125013269592536" : 159.0, + "59.29034404356976" : 160.0, + "59.651038815968505" : 162.0, + "59.82509821253223" : 163.0, + "60.17333816689606" : 165.0, + "60.341263183989334" : 166.0, + "60.51567520153062" : 167.0, + "60.84914546191606" : 169.0, + "61.02020200953904" : 170.0, + "61.33956687375926" : 172.0, + "61.505843819506424" : 173.0, + "61.8243630618563" : 175.0, + "62.142477876355144" : 177.0, + "62.2958348563324" : 178.0, + "62.612044236307206" : 180.0, + "62.78351579598118" : 181.0, + "63.08331047447885" : 183.0, + "63.377873772881436" : 185.0, + "63.519731855198934" : 186.0, + "63.8122913974305" : 188.0, + "64.09910455467956" : 190.0, + "64.3920025127782" : 192.0, + "64.5341611306682" : 193.0, + "64.81006504160779" : 195.0, + "65.090851611107" : 197.0, + "65.37324363662091" : 199.0, + "65.50857906644843" : 200.0, + "65.77513657176186" : 202.0, + "66.03446590409864" : 204.0, + "66.28461817800859" : 206.0, + "66.54119533982467" : 208.0, + "66.78066927010317" : 210.0, + "67.02572330201224" : 212.0, + "67.26620607366571" : 214.0, + "67.51141385500574" : 216.0, + "67.86794987241569" : 219.0, + "68.10720710512663" : 221.0, + "68.33893785754107" : 223.0, + "68.57668210672117" : 225.0, + "68.80266034645835" : 227.0, + "69.03306027499384" : 229.0, + "69.35180791323755" : 232.0, + "69.55525489804812" : 234.0, + "69.78545818328965" : 236.0, + "70.09599220383429" : 239.0, + "70.29621713535235" : 241.0, + "70.59521994857421" : 244.0, + "70.79666011336641" : 246.0, + "71.08604940917895" : 249.0, + "71.29637835221493" : 251.0, + "71.57736017235021" : 254.0, + "71.77291886434465" : 256.0, + "72.0455544857498" : 259.0, + "72.33858948138476" : 262.0, + "72.52158472802891" : 264.001, + "72.79568431140723" : 267.001, + "73.06799739324525" : 270.001, + "73.32713927383013" : 273.001, + "73.57452433651417" : 276.001, + "73.83592872910589" : 279.001, + "74.08009480234479" : 282.001, + "74.25053078161234" : 284.001, + "74.57807667533702" : 288.001, + "74.8186886856426" : 291.001, + "75.05276244568986" : 294.001, + "75.13072482698657" : 295.001, + "75.29249178942526" : 297.001, + "75.45029023394282" : 299.001, + "75.5257410960021" : 300.001, + "75.68042165803726" : 302.001, + "75.75469850949592" : 303.001, + "75.91483912605158" : 305.001, + "76.07023077920499" : 307.001, + "76.14666513626563" : 308.001, + "76.2919330021591" : 310.001, + "76.4413429111467" : 312.001, + "76.51527299079095" : 313.001, + "76.65779592798476" : 315.001, + "76.79497133741552" : 317.001, + "76.93711575019505" : 319.001, + "77.00742575492202" : 320.001, + "77.1491999992346" : 322.001, + "77.28497829427089" : 324.001, + "77.42164956154576" : 326.001, + "77.55413227095299" : 328.001, + "77.68891760091427" : 330.001, + "77.75318402746518" : 331.001, + "77.88366520895401" : 333.001, + "78.01169447696309" : 335.001, + "78.15265067403152" : 337.001, + "78.27398599263024" : 339.001, + "78.40598210737097" : 341.001, + "78.53103164456026" : 343.001, + "78.65792561785804" : 345.001, + "78.7842867602474" : 347.001, + "78.9090129222748" : 349.001, + "79.02820159800306" : 351.001, + "79.15646873197961" : 353.001, + "79.28457041819892" : 355.001, + "79.40931941981572" : 357.001, + "79.53568084073665" : 359.001, + "79.65636940901162" : 361.001, + "79.77414147313496" : 363.001, + "79.8871754365876" : 365.001, + "80.00620200693756" : 367.001, + "80.17356049080149" : 370.001, + "80.28264236969608" : 372.001, + "80.39460955720557" : 374.001, + "80.50524313552033" : 376.001, + "80.66638785841413" : 379.001, + "80.78322990559904" : 381.001, + "80.88743831747608" : 383.001, + "81.04894485288949" : 386.001, + "81.15778413077977" : 388.001, + "81.26190954024662" : 390.001, + "81.42192453906067" : 393.001, + "81.52523273687811" : 395.001, + "81.62638092230935" : 397.001, + "81.78371282643403" : 400.001, + "81.88669737055801" : 402.001, + "82.02154926956639" : 405.001, + "82.16890890760949" : 408.001, + "82.26417701290084" : 410.001, + "82.40813828716266" : 413.001, + "82.54500619773148" : 416.001, + "82.63937074658432" : 418.001, + "82.78142547219576" : 421.001, + "82.92438737515626" : 424.001, + "83.02168207620802" : 426.001, + "83.16415153533889" : 429.001, + "83.25570096553444" : 431.001, + "83.38877555454461" : 434.001, + "83.51793956020181" : 437.001, + "83.66079896354167" : 440.001, + "83.75043237501322" : 442.001, + "83.8791429312617" : 445.001, + "84.00368414832141" : 448.001, + "84.13698629763067" : 451.001, + "84.28530408430154" : 455.001, + "84.41105468547227" : 458.001, + "84.53557529119523" : 461.001, + "84.6561179089234" : 464.001, + "84.76228606898215" : 467.001, + "84.87956123277063" : 470.001, + "85.03407857530118" : 474.001, + "85.15634864587514" : 477.001, + "85.2769731518872" : 480.001, + "85.3877281699699" : 483.001, + "85.53719322820993" : 487.001, + "85.65386258581658" : 490.001, + "85.76679572083803" : 493.001, + "85.88999552981885" : 496.001, + "86.03284936252714" : 500.001, + "86.13828024949935" : 503.001, + "86.25267762502553" : 506.001, + "86.39908830598289" : 510.001, + "86.51767145406093" : 513.001, + "86.65017059683126" : 517.001, + "86.76409363308036" : 520.001, + "86.89592652831648" : 524.001, + "87.00894879344284" : 527.003, + "87.14588995781665" : 531.003, + "87.28237182361858" : 535.003, + "87.38262453002706" : 538.003, + "87.51391038924429" : 542.003, + "87.57993741389875" : 544.003, + "87.64363034393088" : 546.003, + "87.70911757438748" : 548.003, + "87.7719517915651" : 550.003, + "87.83632795955768" : 552.003, + "87.9018639330404" : 554.003, + "87.96054050935554" : 556.003, + "88.02232995458468" : 558.003, + "88.08495388042103" : 560.003, + "88.14975787291718" : 562.003, + "88.21114316882685" : 564.003, + "88.26974871958964" : 566.003, + "88.33199857751696" : 568.003, + "88.38911760524877" : 570.003, + "88.45014777339671" : 572.003, + "88.51402035629654" : 574.003, + "88.57530705202765" : 576.003, + "88.63728562019814" : 578.003, + "88.69581346065071" : 580.003, + "88.7556534633665" : 582.003, + "88.81617391872697" : 584.003, + "88.88298111033099" : 586.003, + "88.93819832444929" : 588.003, + "89.0163239252506" : 591.003, + "89.07244413874427" : 593.003, + "89.13105191775969" : 595.003, + "89.18786066131379" : 597.003, + "89.27382971134722" : 600.003, + "89.32981400143092" : 602.003, + "89.38579411354092" : 604.003, + "89.46559703150403" : 607.003, + "89.52194814767574" : 609.003, + "89.5812040696728" : 611.003, + "89.63618676020255" : 613.003, + "89.6890058174356" : 615.003, + "89.77013900221449" : 618.003, + "89.8173590176697" : 620.003, + "89.88810241753183" : 623.003, + "89.93949455749157" : 625.003, + "90.020638605002" : 628.003, + "90.07302733094728" : 630.003, + "90.14883861286829" : 633.003, + "90.19963580937777" : 635.003, + "90.27430344064014" : 638.003, + "90.33157315395557" : 640.003, + "90.3844468033779" : 642.003, + "90.45458578971609" : 645.003, + "90.50258374386821" : 647.003, + "90.57339092746166" : 650.003, + "90.62764887882587" : 652.003, + "90.69599857830798" : 655.003, + "90.77066955194928" : 658.003, + "90.82130325042257" : 660.003, + "90.8866957801427" : 663.003, + "90.95527526817654" : 666.003, + "91.00036563118755" : 668.003, + "91.06802930739343" : 671.003, + "91.13519301941709" : 674.003, + "91.2041574380915" : 677.003, + "91.25236679771122" : 679.003, + "91.31374902977355" : 682.003, + "91.38227476121286" : 685.003, + "91.45397993061327" : 688.003, + "91.5206147111706" : 691.003, + "91.56299663311864" : 693.003, + "91.64612271133701" : 697.003, + "91.69021593129933" : 699.003, + "91.75174494950319" : 702.003, + "91.82844864659961" : 706.003, + "91.88679293474237" : 709.003, + "91.94762339574898" : 712.003, + "92.0193296792757" : 716.003, + "92.07736897534073" : 719.003, + "92.14041905449119" : 722.003, + "92.20559962168059" : 725.003, + "92.26364393131401" : 728.003, + "92.32140915230644" : 731.003, + "92.37931642440357" : 734.003, + "92.45755817287285" : 738.003, + "92.51949551836981" : 741.003, + "92.57792336598594" : 744.003, + "92.64142856573459" : 747.003, + "92.70320129906905" : 750.003, + "92.76187592566315" : 753.003, + "92.82418204696917" : 757.003, + "92.87795173247741" : 760.003, + "92.94947307103645" : 764.003, + "93.00180107709777" : 767.003, + "93.06538983631978" : 771.003, + "93.13998699909295" : 775.003, + "93.18935727832913" : 778.003, + "93.25691399840912" : 782.003, + "93.32665106368049" : 786.003, + "93.38331302109306" : 789.003, + "93.44039388999873" : 792.003, + "93.50287910710932" : 796.003, + "93.57079429733" : 800.003, + "93.63087578692378" : 804.003, + "93.69809158435248" : 808.003, + "93.75963536472996" : 812.003, + "93.7886444285625" : 814.003, + "93.82059172200975" : 816.003, + "93.85233513034201" : 818.003, + "93.88323876596706" : 820.003, + "93.91106407059378" : 822.003, + "93.93999848796348" : 824.003, + "93.98396191221053" : 827.003, + "94.01479062284115" : 829.003, + "94.04686436962473" : 831.003, + "94.06327934963345" : 832.003, + "94.10594565232248" : 835.003, + "94.1374681851135" : 837.003, + "94.16548651212366" : 839.003, + "94.18936001072392" : 841.003, + "94.22147108073892" : 843.003, + "94.25376263921639" : 845.003, + "94.28434373527429" : 847.003, + "94.31712411667087" : 849.003, + "94.34941595367991" : 851.003, + "94.38634199908113" : 853.003, + "94.41339799948983" : 855.003, + "94.44498905104902" : 857.003, + "94.47576762599562" : 859.003, + "94.50313251792416" : 861.003, + "94.532681097423" : 863.003, + "94.57610639866165" : 866.003, + "94.60232290489473" : 868.003, + "94.62870987245346" : 870.003, + "94.65779274715413" : 872.003, + "94.68835880250685" : 874.003, + "94.72017713583355" : 876.003, + "94.7579387759683" : 879.003, + "94.78765614560332" : 881.003, + "94.81475420428028" : 883.003, + "94.84967398672629" : 886.003, + "94.8788808079791" : 888.003, + "94.91698197810726" : 891.003, + "94.94762992174385" : 893.003, + "94.97456643210566" : 895.003, + "95.01072623713623" : 898.003, + "95.0410978774476" : 900.003, + "95.06440874226061" : 902.003, + "95.10073260239052" : 905.003, + "95.13770766934945" : 908.003, + "95.16168227491245" : 910.003, + "95.18815447313399" : 912.003, + "95.22551864870717" : 915.003, + "95.25889870859085" : 918.003, + "95.28674852399641" : 920.003, + "95.32060431581505" : 923.003, + "95.34476581606678" : 925.003, + "95.376655732009" : 928.003, + "95.41456025884318" : 931.003, + "95.43876465295791" : 933.003, + "95.47409721920228" : 936.003, + "95.50755136848566" : 939.003, + "95.5333183247521" : 941.003, + "95.56512523828411" : 944.003, + "95.59778919348115" : 947.003, + "95.63195749773013" : 950.003, + "95.66450502672762" : 953.003, + "95.68772341905678" : 955.003, + "95.73089469949645" : 959.003, + "95.75243995263749" : 961.003, + "95.7814130858965" : 964.003, + "95.81670053002526" : 967.003, + "95.85076020695888" : 970.003, + "95.88125551529082" : 973.003, + "95.91172157780707" : 976.003, + "95.94367472041745" : 979.003, + "95.97362772776732" : 982.003, + "96.0088421966227" : 985.003, + "96.03564696154818" : 988.003, + "96.06596178141767" : 991.003, + "96.09449037827844" : 994.003, + "96.1347816422032" : 998.003, + "96.15687058898418" : 1000.003, + "96.18897135333081" : 1003.003, + "96.22253942202954" : 1006.003, + "96.25208243089682" : 1009.003, + "96.28474582903071" : 1012.003, + "96.32158218726386" : 1016.003, + "96.34541836263269" : 1018.003, + "96.38188566652519" : 1022.003, + "96.40972963276762" : 1025.003, + "96.44664704368992" : 1029.003, + "96.47582740444285" : 1032.003, + "96.5071900601082" : 1035.003, + "96.53661692130753" : 1038.003, + "96.57010310172235" : 1042.003, + "96.60016195107181" : 1045.003, + "96.63228388381836" : 1048.003, + "96.66366130165733" : 1051.007, + "96.69135430378456" : 1054.007, + "96.72399541939222" : 1058.007, + "96.75493498559082" : 1062.007, + "96.78390811884984" : 1066.007, + "96.81708373655538" : 1070.007, + "96.84898312257123" : 1074.007, + "96.87640204962587" : 1077.007, + "96.89355959482111" : 1079.007, + "96.90993140243526" : 1081.007, + "96.92421589440505" : 1083.007, + "96.9407687475448" : 1085.007, + "96.95777170771434" : 1087.007, + "96.9747203542262" : 1089.007, + "96.99072143631025" : 1091.007, + "97.0038622776214" : 1093.007, + "97.01825066186971" : 1095.007, + "97.03843445265825" : 1098.007, + "97.05157835781675" : 1100.007, + "97.0681727121616" : 1102.007, + "97.08441472406048" : 1104.007, + "97.10386096323089" : 1106.007, + "97.11355079829254" : 1107.007, + "97.12693507620271" : 1109.007, + "97.14602005991665" : 1112.007, + "97.15828408382075" : 1114.007, + "97.17865393370329" : 1117.007, + "97.18765440310976" : 1118.007, + "97.20550939137594" : 1120.007, + "97.22526312940829" : 1122.007, + "97.23979885686128" : 1124.007, + "97.25675892316784" : 1126.007, + "97.27381981790558" : 1128.007, + "97.28140618249134" : 1129.007, + "97.3023729255452" : 1132.007, + "97.316639591494" : 1134.007, + "97.3317435233658" : 1136.007, + "97.3508981399742" : 1139.007, + "97.36600290744073" : 1141.007, + "97.38004981197462" : 1143.007, + "97.39655893565664" : 1145.007, + "97.41398442822978" : 1147.007, + "97.42254676746431" : 1148.007, + "97.43810665552904" : 1150.007, + "97.4538297630984" : 1152.007, + "97.4687727037182" : 1154.007, + "97.48989765270828" : 1157.007, + "97.50345768404408" : 1159.007, + "97.51994842464197" : 1162.007, + "97.53337671054145" : 1164.007, + "97.55229958887709" : 1167.007, + "97.56483518106958" : 1169.007, + "97.5840560881935" : 1172.007, + "97.59869152995137" : 1174.007, + "97.61184991875191" : 1176.007, + "97.63109561518628" : 1179.007, + "97.64558232108158" : 1181.007, + "97.65797586216937" : 1183.007, + "97.67721348118796" : 1186.007, + "97.69164336664137" : 1188.007, + "97.70470315526337" : 1190.007, + "97.7246293043424" : 1193.007, + "97.73688497229915" : 1195.007, + "97.75094357515931" : 1197.007, + "97.76974222841122" : 1200.007, + "97.78166310141141" : 1202.007, + "97.80331893158885" : 1206.007, + "97.81313299173422" : 1208.007, + "97.828285109569" : 1211.007, + "97.84445776710498" : 1214.007, + "97.85969845798151" : 1217.007, + "97.8801669080426" : 1220.007, + "97.89143100358223" : 1222.007, + "97.90861361661948" : 1225.007, + "97.92456901952475" : 1228.007, + "97.94072273691346" : 1231.007, + "97.95408055432374" : 1233.007, + "97.97230153308321" : 1236.007, + "97.98610834339698" : 1238.007, + "98.00301632429849" : 1241.007, + "98.0193457951128" : 1244.007, + "98.0329423140853" : 1247.007, + "98.04706414361362" : 1250.007, + "98.06355850512202" : 1253.007, + "98.07889640351921" : 1256.007, + "98.09640350584466" : 1259.007, + "98.11431392189483" : 1263.007, + "98.12717456043866" : 1265.007, + "98.14175652413358" : 1268.007, + "98.15737156145073" : 1271.007, + "98.17234151963359" : 1274.007, + "98.19092180412846" : 1278.007, + "98.20543469199208" : 1282.007, + "98.22151431998107" : 1285.007, + "98.23657312973727" : 1288.007, + "98.25104563052209" : 1291.007, + "98.26705562561662" : 1295.007, + "98.28582837543179" : 1299.007, + "98.29877925820685" : 1302.007, + "98.31555298688782" : 1305.007, + "98.3292606399599" : 1309.007, + "98.34682846216931" : 1313.007, + "98.36143410104835" : 1316.007, + "98.37604141111684" : 1319.007, + "98.39342094597964" : 1323.007, + "98.41023450467625" : 1327.007, + "98.42338481606104" : 1330.007, + "98.44163086266252" : 1334.007, + "98.44934758002671" : 1336.007, + "98.45405532075544" : 1337.007, + "98.46106791029085" : 1339.007, + "98.46951243066795" : 1341.007, + "98.4806367033555" : 1344.007, + "98.48524166593202" : 1345.007, + "98.49357170983063" : 1347.007, + "98.50294206917249" : 1349.007, + "98.51070780809438" : 1351.007, + "98.51964644349059" : 1354.007, + "98.52441072612962" : 1355.007, + "98.53142693657554" : 1357.007, + "98.54264117496274" : 1360.007, + "98.54886635572757" : 1362.007, + "98.55567923812166" : 1364.007, + "98.56639295526347" : 1367.007, + "98.57079124740922" : 1368.007, + "98.57869625212004" : 1370.007, + "98.58776551882625" : 1372.007, + "98.59504605573953" : 1374.007, + "98.60537261398814" : 1377.007, + "98.6127403312853" : 1379.007, + "98.61994984264624" : 1381.007, + "98.62815872530848" : 1383.007, + "98.63465073932488" : 1385.007, + "98.64293064753949" : 1387.007, + "98.65098828755497" : 1389.007, + "98.65990157657758" : 1391.007, + "98.66423859177621" : 1392.007, + "98.67225278086553" : 1394.007, + "98.6805909021799" : 1397.007, + "98.68780793389345" : 1399.007, + "98.69578619240924" : 1401.007, + "98.70556125813371" : 1404.007, + "98.71239335920667" : 1406.007, + "98.71938589446847" : 1408.007, + "98.73046588063514" : 1411.007, + "98.73696959297783" : 1414.007, + "98.74388079701889" : 1416.007, + "98.75347788106512" : 1419.007, + "98.75865689722356" : 1421.007, + "98.76656245899754" : 1424.007, + "98.77657650481581" : 1426.007, + "98.78301921874294" : 1428.007, + "98.79267785826787" : 1431.007, + "98.79692518629842" : 1432.007, + "98.80530787266524" : 1435.007, + "98.81295746391918" : 1437.007, + "98.82263615771771" : 1440.007, + "98.82908917731322" : 1442.007, + "98.8376523521425" : 1445.007, + "98.84480253627736" : 1447.007, + "98.85401858912509" : 1449.007, + "98.8621876417717" : 1451.007, + "98.86933531912236" : 1454.007, + "98.87582733313877" : 1456.007, + "98.88450219913075" : 1459.007, + "98.89116411740964" : 1461.007, + "98.8985518889804" : 1463.007, + "98.90815482218977" : 1466.007, + "98.91665087090878" : 1469.007, + "98.92421578856305" : 1471.007, + "98.93167347155985" : 1474.007, + "98.93904536683067" : 1477.007, + "98.9474102271765" : 1480.007, + "98.95558457192311" : 1483.007, + "98.96231528750172" : 1485.007, + "98.97147619109705" : 1488.007, + "98.97785567835601" : 1491.007, + "98.98624226416493" : 1494.007, + "98.9925863779135" : 1496.007, + "99.00314383884013" : 1500.007, + "99.00885930681751" : 1502.007, + "99.01923460809225" : 1505.007, + "99.02454843353436" : 1507.007, + "99.03365307375097" : 1510.007, + "99.04074755157025" : 1513.007, + "99.04785094240003" : 1516.007, + "99.05641328163456" : 1519.007, + "99.06515220988945" : 1522.007, + "99.07121639940229" : 1524.007, + "99.07859080145732" : 1527.007, + "99.08787704426267" : 1531.007, + "99.09488434169809" : 1534.007, + "99.10328680380694" : 1538.007, + "99.11135279976976" : 1541.007, + "99.11769245701309" : 1544.007, + "99.12508524215225" : 1547.007, + "99.1347135217352" : 1551.007, + "99.143244665433" : 1554.007, + "99.14859525704341" : 1556.007, + "99.15648884195954" : 1559.007, + "99.16649508889361" : 1563.007, + "99.17230442201273" : 1566.007, + "99.1801244745923" : 1571.007, + "99.18793338590876" : 1574.007, + "99.19792849157973" : 1578.007, + "99.20390912161922" : 1581.007, + "99.21251714003252" : 1585.007, + "99.21952165215217" : 1588.007, + "99.2230063607226" : 1590.007, + "99.22738376299999" : 1592.007, + "99.2320806409972" : 1594.007, + "99.23539265998936" : 1596.007, + "99.23977368317728" : 1598.007, + "99.24282165423364" : 1600.007, + "99.24746310444684" : 1602.007, + "99.25043030134563" : 1604.007, + "99.25464420558684" : 1606.007, + "99.25823057818317" : 1608.007, + "99.2641050876915" : 1611.007, + "99.26583560438465" : 1612.007, + "99.27031717747218" : 1614.007, + "99.27477423978085" : 1616.007, + "99.27836841126137" : 1617.007, + "99.28230796189841" : 1619.007, + "99.28675833944921" : 1622.007, + "99.29004334087831" : 1623.007, + "99.29412884206215" : 1626.007, + "99.29724756013928" : 1628.007, + "99.30106344275575" : 1630.007, + "99.30665635683889" : 1633.007, + "99.30983161682632" : 1635.007, + "99.31334390002294" : 1637.007, + "99.31763105806913" : 1639.007, + "99.32177087291063" : 1642.007, + "99.325419915112" : 1645.007, + "99.33005579469364" : 1647.007, + "99.33316977773394" : 1649.007, + "99.33732296209119" : 1652.007, + "99.34137559654884" : 1654.007, + "99.34454612149945" : 1656.007, + "99.34908507209201" : 1658.007, + "99.35296418137665" : 1660.007, + "99.35646588037332" : 1662.007, + "99.35958320579256" : 1664.007, + "99.36367706292373" : 1667.007, + "99.36737429108804" : 1669.007, + "99.37292124746082" : 1671.007, + "99.37609929276404" : 1673.007, + "99.37904337154185" : 1675.007, + "99.38376726710212" : 1678.007, + "99.38816165980577" : 1680.007, + "99.39200511704846" : 1683.007, + "99.39479238254795" : 1685.007, + "99.39857651256455" : 1687.007, + "99.40287119096334" : 1689.007, + "99.40767753187063" : 1691.007, + "99.41071046222179" : 1693.007, + "99.41491238960516" : 1695.007, + "99.4199393275221" : 1698.007, + "99.4235513250236" : 1700.007, + "99.42580018898312" : 1702.007, + "99.43037590574396" : 1705.007, + "99.43430849309155" : 1707.007, + "99.43875441413711" : 1709.007, + "99.44225026397065" : 1711.007, + "99.44662126002177" : 1713.007, + "99.44995249769279" : 1715.007, + "99.45321995163249" : 1718.007, + "99.45732327883731" : 1722.007, + "99.46281898539976" : 1725.007, + "99.46485226591803" : 1727.007, + "99.46890183652832" : 1730.007, + "99.47267009024499" : 1733.007, + "99.477439664984" : 1737.007, + "99.48181261075617" : 1740.007, + "99.48475446128137" : 1743.007, + "99.48972012225119" : 1746.007, + "99.4934903256889" : 1748.007, + "99.49767247733024" : 1750.007, + "99.5012897669317" : 1752.007, + "99.50410794943635" : 1755.007, + "99.5091435218322" : 1758.007, + "99.51210264131524" : 1761.007, + "99.5165950771343" : 1764.007, + "99.51962717189072" : 1767.007, + "99.52554568938834" : 1770.007, + "99.52873014091784" : 1772.007, + "99.53241901313483" : 1775.007, + "99.53608086778875" : 1779.007, + "99.53998783023118" : 1782.007, + "99.54464376408644" : 1785.007, + "99.54915179767386" : 1788.007, + "99.5524061606294" : 1790.007, + "99.55524049796556" : 1793.007, + "99.55944075415945" : 1795.007, + "99.56341400711742" : 1797.007, + "99.56664190957306" : 1800.007, + "99.57117055449724" : 1804.007, + "99.57451599727874" : 1808.007, + "99.57847337393676" : 1812.007, + "99.58218592133785" : 1815.007, + "99.58757383617969" : 1819.007, + "99.59051150873121" : 1822.007, + "99.59522287037046" : 1825.007, + "99.59822321252702" : 1828.007, + "99.60244380152609" : 1832.007, + "99.60552073986655" : 1837.007, + "99.60941906783007" : 1840.007, + "99.61242219530239" : 1842.007, + "99.61384131369151" : 1843.007, + "99.616404918334" : 1845.007, + "99.61783601358097" : 1847.007, + "99.61996594455675" : 1849.007, + "99.6212739288463" : 1850.007, + "99.62404698923532" : 1854.007, + "99.62615213090068" : 1855.007, + "99.62699468892366" : 1856.007, + "99.6290611146997" : 1859.007, + "99.6313213984539" : 1864.007, + "99.6340810893272" : 1866.007, + "99.63554115185826" : 1867.007, + "99.63786911878589" : 1869.007, + "99.63876431927709" : 1870.007, + "99.6412407435357" : 1874.007, + "99.64392550941454" : 1876.007, + "99.6453429566142" : 1877.007, + "99.6472364142804" : 1878.007, + "99.64874048480075" : 1881.007, + "99.6509915770129" : 1883.007, + "99.65254021258572" : 1884.007, + "99.6549227717026" : 1886.007, + "99.65718611930417" : 1888.007, + "99.65844452497288" : 1889.007, + "99.66052459879621" : 1892.007, + "99.66279853059775" : 1894.007, + "99.66453433939088" : 1896.007, + "99.66658767418275" : 1898.007, + "99.66846107757533" : 1902.007, + "99.67020357112634" : 1905.007, + "99.67224604318668" : 1908.007, + "99.67414813533178" : 1910.007, + "99.67618030172373" : 1912.007, + "99.67876591036087" : 1914.007, + "99.68018447168683" : 1915.007, + "99.6823773507992" : 1917.007, + "99.6846214797219" : 1919.007, + "99.68716280183816" : 1921.007, + "99.68925791636671" : 1922.007, + "99.69016481518418" : 1923.007, + "99.69157864147331" : 1926.007, + "99.69340274477662" : 1929.007, + "99.69624209568117" : 1931.007, + "99.69845586466188" : 1933.007, + "99.69942264776859" : 1935.007, + "99.70212078316317" : 1938.007, + "99.70317725343793" : 1939.007, + "99.70581216216435" : 1941.007, + "99.70724827097972" : 1942.007, + "99.70963528660185" : 1945.007, + "99.71120007700618" : 1948.007, + "99.71304200633047" : 1952.007, + "99.71492933630195" : 1954.007, + "99.71691164554147" : 1959.007, + "99.71877780711303" : 1961.007, + "99.72208007749997" : 1966.007, + "99.72306301543817" : 1967.007, + "99.72494338212022" : 1970.007, + "99.72738136902109" : 1973.007, + "99.72950795761793" : 1976.007, + "99.73064910149236" : 1978.007, + "99.732667619837" : 1982.007, + "99.73522816063213" : 1985.007, + "99.73665452084228" : 1987.007, + "99.73846302637723" : 1990.007, + "99.7406369653423" : 1993.007, + "99.74274433526028" : 1999.007, + "99.74440438346424" : 2002.007, + "99.74639783396688" : 2006.007, + "99.74908928460358" : 2009.007, + "99.7500156806315" : 2010.007, + "99.75198879832895" : 2013.007, + "99.75464069748162" : 2017.007, + "99.75588740482405" : 2018.007, + "99.75830867983026" : 2024.007, + "99.76008933220743" : 2027.007, + "99.7620396103155" : 2030.007, + "99.76418708878067" : 2032.007, + "99.76628081065134" : 2035.007, + "99.76832606802745" : 2038.007, + "99.77058440206062" : 2041.007, + "99.77162165365651" : 2043.007, + "99.77416993906222" : 2046.007, + "99.77568459378254" : 2047.007, + "99.77747750154913" : 2051.007, + "99.77989654830272" : 2054.007, + "99.78134268425488" : 2056.007, + "99.78351328084103" : 2059.007, + "99.78570894526918" : 2061.007, + "99.78801964323898" : 2065.007, + "99.78918752614489" : 2067.007, + "99.79162077800895" : 2071.007, + "99.79327971208659" : 2075.007, + "99.79521160711052" : 2078.007, + "99.79733708158105" : 2081.007, + "99.79944194471483" : 2087.007, + "99.80121173436045" : 2089.007, + "99.80319850010522" : 2093.007, + "99.80525183489709" : 2097.007, + "99.80586878234203" : 2098.015, + "99.8066712318178" : 2102.015, + "99.80827223132725" : 2104.015, + "99.80884544931446" : 2106.015, + "99.81010385498315" : 2109.007, + "99.81074336348588" : 2110.015, + "99.81189759834447" : 2112.015, + "99.81348244302242" : 2114.015, + "99.8149271863167" : 2116.015, + "99.8156263005771" : 2117.007, + "99.81665157531513" : 2119.007, + "99.81778742708958" : 2122.015, + "99.81849239051311" : 2126.015, + "99.81938202037276" : 2128.015, + "99.82057413552593" : 2131.007, + "99.82192835605741" : 2135.007, + "99.82273637616474" : 2136.015, + "99.8233505382939" : 2137.007, + "99.8242894682428" : 2141.007, + "99.82575537993701" : 2146.015, + "99.82630325155063" : 2147.007, + "99.82724329562585" : 2150.015, + "99.82827052008494" : 2156.015, + "99.8291648849814" : 2157.007, + "99.83033722439255" : 2161.007, + "99.8310619635581" : 2162.015, + "99.83251617692603" : 2166.015, + "99.8333236399702" : 2168.015, + "99.83424084445605" : 2172.015, + "99.83503382385817" : 2173.007, + "99.83605519915413" : 2177.007, + "99.83771580442124" : 2179.007, + "99.83811494017229" : 2180.015, + "99.83886976074825" : 2183.007, + "99.84043037317892" : 2187.007, + "99.84082978746154" : 2188.015, + "99.84243412934994" : 2194.015, + "99.84283883573255" : 2195.007, + "99.84398833555431" : 2196.015, + "99.84550828237461" : 2198.015, + "99.84572303022114" : 2199.007, + "99.84684439835354" : 2202.015, + "99.84776717347093" : 2204.015, + "99.84878659904585" : 2208.015, + "99.84968764870018" : 2210.015, + "99.8506717007647" : 2212.015, + "99.85210836664322" : 2213.007, + "99.8527108304461" : 2214.015, + "99.85363722647402" : 2216.015, + "99.85465665204893" : 2218.015, + "99.85548946146669" : 2219.007, + "99.85652169949418" : 2224.015, + "99.85790627996765" : 2228.015, + "99.85878226177996" : 2231.007, + "99.85939670244069" : 2235.007, + "99.86041389976299" : 2236.015, + "99.86173943154195" : 2239.007, + "99.86241904859189" : 2241.007, + "99.86330115809892" : 2244.015, + "99.86443199630497" : 2248.015, + "99.86530463573837" : 2251.007, + "99.8665524572071" : 2257.007, + "99.8673120128199" : 2259.007, + "99.86824955011092" : 2260.015, + "99.86923220951756" : 2263.007, + "99.87013966539817" : 2267.007, + "99.87141227617735" : 2270.015, + "99.8723746027788" : 2275.007, + "99.87307037466026" : 2276.015, + "99.87408283694573" : 2279.007, + "99.87528860014622" : 2283.007, + "99.87600971840126" : 2285.007, + "99.87737424460113" : 2288.015, + "99.87824437725031" : 2292.015, + "99.87906493127865" : 2293.007, + "99.87994509106463" : 2296.015, + "99.8815697657582" : 2303.007, + "99.88194216247778" : 2304.015, + "99.88299389771572" : 2313.007, + "99.8839194581489" : 2316.015, + "99.88489069776085" : 2322.015, + "99.88604159024051" : 2323.007, + "99.88683568376894" : 2325.007, + "99.88783644772813" : 2326.015, + "99.8887344335351" : 2328.015, + "99.88995969394605" : 2331.007, + "99.89084013226362" : 2333.007, + "99.89227262016847" : 2340.015, + "99.89272969048771" : 2341.007, + "99.89357865473698" : 2344.015, + "99.89461590633289" : 2348.015, + "99.89599045966955" : 2354.015, + "99.89658651724613" : 2356.015, + "99.8977510577731" : 2361.007, + "99.89850002918593" : 2363.007, + "99.90006342693238" : 2372.015, + "99.90056784761985" : 2373.007, + "99.90170174967326" : 2376.015, + "99.90247049682812" : 2381.007, + "99.9029044490264" : 2383.007, + "99.90340691999283" : 2385.007, + "99.90474052918755" : 2390.015, + "99.90514802088593" : 2391.007, + "99.90537808796924" : 2392.015, + "99.90622538102905" : 2394.015, + "99.90628136587618" : 2399.007, + "99.90707852325198" : 2401.007, + "99.90733505083517" : 2403.007, + "99.90779379234388" : 2405.007, + "99.90842243811508" : 2406.015, + "99.90903604318108" : 2409.007, + "99.90953962827382" : 2410.015, + "99.90981760278851" : 2412.015, + "99.91030503304974" : 2413.007, + "99.91068884956401" : 2415.007, + "99.91117739395155" : 2416.015, + "99.91207621535325" : 2418.015, + "99.9126814644719" : 2419.007, + "99.91319424110672" : 2421.007, + "99.91357499377364" : 2423.007, + "99.91407467942429" : 2427.007, + "99.91465681042199" : 2429.007, + "99.91515092544108" : 2430.015, + "99.91555145385003" : 2431.007, + "99.91602690725341" : 2434.015, + "99.91658536306699" : 2437.007, + "99.9175078596528" : 2442.015, + "99.91805879511378" : 2445.007, + "99.91862867072206" : 2451.007, + "99.91922361417234" : 2453.007, + "99.91949016889232" : 2455.007, + "99.91993108438005" : 2458.015, + "99.92062518507205" : 2463.007, + "99.92092683477085" : 2464.015, + "99.92163430497858" : 2465.007, + "99.92200503050869" : 2470.015, + "99.92243396913857" : 2471.007, + "99.92289103945782" : 2472.015, + "99.92346007947135" : 2475.007, + "99.92455944360911" : 2479.007, + "99.9248713989763" : 2480.015, + "99.92543653954775" : 2484.015, + "99.92595934331936" : 2488.015, + "99.92656654215907" : 2491.007, + "99.927351722677" : 2494.015, + "99.92811267094768" : 2498.015, + "99.92872599748209" : 2499.007, + "99.92955936396301" : 2502.015, + "99.92984959386712" : 2504.015, + "99.93023786688663" : 2505.007, + "99.9309587066101" : 2507.007, + "99.93136703390321" : 2510.015, + "99.93175307867011" : 2514.015, + "99.93231933336787" : 2517.007, + "99.9329978362915" : 2518.015, + "99.93328583794299" : 2521.007, + "99.93362787472059" : 2523.007, + "99.9342261605498" : 2526.015, + "99.93471080549524" : 2528.015, + "99.93522664597741" : 2532.015, + "99.93577535318578" : 2534.015, + "99.93616947536842" : 2536.015, + "99.93676386175554" : 2540.015, + "99.93728777965347" : 2541.007, + "99.93758051634178" : 2542.015, + "99.93814593544481" : 2544.015, + "99.93898292283623" : 2549.007, + "99.93959624937065" : 2552.015, + "99.94028589355739" : 2557.007, + "99.9406880931558" : 2558.015, + "99.94094879871267" : 2559.007, + "99.94143260806338" : 2561.007, + "99.94202253794525" : 2565.007, + "99.94238295780698" : 2568.015, + "99.94294754131528" : 2572.015, + "99.94376029645943" : 2574.015, + "99.94420121194716" : 2575.007, + "99.94435997494654" : 2576.015, + "99.94492427992324" : 2578.015, + "99.94576962326201" : 2589.007, + "99.946048711903" : 2590.015, + "99.94633782768081" : 2595.007, + "99.94689516936808" : 2600.015, + "99.94743858447644" : 2607.007, + "99.94777031558566" : 2613.007, + "99.94831038831511" : 2614.015, + "99.94887942832864" : 2620.015, + "99.94944401183693" : 2624.015, + "99.94977323616195" : 2631.007, + "99.9502918619599" : 2633.007, + "99.95070715254246" : 2643.007, + "99.95142102897648" : 2646.015, + "99.95170345999641" : 2649.007, + "99.95198589101635" : 2651.007, + "99.95223684796798" : 2656.015, + "99.95245605231975" : 2658.015, + "99.95283346260773" : 2663.007, + "99.95308609074884" : 2668.015, + "99.95319248981157" : 2672.015, + "99.9533983246476" : 2673.007, + "99.95369050427276" : 2674.015, + "99.95413726892362" : 2675.007, + "99.95447707744859" : 2677.007, + "99.95462609184274" : 2680.015, + "99.95509235370405" : 2681.007, + "99.95535110953988" : 2683.007, + "99.95573353339626" : 2685.007, + "99.95635716559904" : 2686.015, + "99.95659614569284" : 2687.007, + "99.9571144929592" : 2688.015, + "99.95735040920565" : 2689.007, + "99.95763423288346" : 2697.007, + "99.95797153462424" : 2701.007, + "99.95819937345492" : 2702.015, + "99.95840242297517" : 2703.007, + "99.95876423549478" : 2704.015, + "99.9590469450463" : 2709.007, + "99.9594842396235" : 2713.007, + "99.95989368104294" : 2714.015, + "99.960026262074" : 2716.015, + "99.96032707617807" : 2717.007, + "99.96050756464051" : 2718.015, + "99.96074069557118" : 2719.007, + "99.9609741050334" : 2721.007, + "99.96120222239566" : 2733.007, + "99.96144008836313" : 2736.015, + "99.96187125524564" : 2739.007, + "99.96214978682349" : 2744.015, + "99.96243583875393" : 2746.015, + "99.96328257475058" : 2750.015, + "99.96356584136525" : 2756.015, + "99.96384827238519" : 2758.015, + "99.96405271456332" : 2759.007, + "99.96426969066246" : 2760.015, + "99.96449000914055" : 2761.007, + "99.96469528691341" : 2762.015, + "99.96497771793335" : 2765.007, + "99.96523647376917" : 2769.007, + "99.9654473221736" : 2782.015, + "99.9656824028253" : 2796.015, + "99.96582584658789" : 2797.007, + "99.96627734627558" : 2799.007, + "99.96639043009618" : 2800.015, + "99.96657342534283" : 2801.007, + "99.96691406946253" : 2804.015, + "99.96708480931974" : 2805.007, + "99.96751931858118" : 2806.015, + "99.96776414783811" : 2808.015, + "99.96799755730035" : 2809.007, + "99.96819141527853" : 2810.015, + "99.96836689017256" : 2811.007, + "99.96864959972407" : 2815.007, + "99.96893230927559" : 2819.007, + "99.96901419755947" : 2820.015, + "99.9692654330427" : 2822.015, + "99.96949744984704" : 2823.007, + "99.96973169490401" : 2824.015, + "99.9700623118869" : 2836.015, + "99.97034446437527" : 2839.007, + "99.97048373016419" : 2843.007, + "99.9708079409208" : 2847.007, + "99.97145886921822" : 2854.015, + "99.97177667374855" : 2866.015, + "99.97224210001512" : 2867.007, + "99.9725755023138" : 2869.007, + "99.97288634355468" : 2871.007, + "99.97316849604303" : 2872.015, + "99.97341248970523" : 2878.015, + "99.97375201969862" : 2879.007, + "99.97429766305962" : 2880.015, + "99.97446283228528" : 2882.015, + "99.97462243087939" : 2883.007, + "99.97486224656791" : 2884.015, + "99.97514523465101" : 2887.007, + "99.9754282227341" : 2906.015, + "99.97569199213831" : 2909.007, + "99.97571037522245" : 2910.015, + "99.9759925277108" : 2912.015, + "99.97620671849417" : 2913.007, + "99.97642731550383" : 2915.007, + "99.97655683268752" : 2916.015, + "99.97666935944497" : 2923.007, + "99.9768387066443" : 2924.015, + "99.97702866518038" : 2925.007, + "99.97712225179055" : 2926.015, + "99.97718965643239" : 2937.007, + "99.97740523987363" : 2938.015, + "99.9776709589989" : 2944.015, + "99.97780131177733" : 2951.007, + "99.97797010191351" : 2952.015, + "99.97810908917086" : 2959.007, + "99.97825225440187" : 2960.015, + "99.97835531108566" : 2962.015, + "99.97853524248495" : 2963.007, + "99.97879817629445" : 2966.015, + "99.97897782916215" : 2973.007, + "99.97909982599325" : 2974.015, + "99.97926555228206" : 2976.015, + "99.97938253554476" : 2977.007, + "99.9795440838599" : 2989.007, + "99.97966468803311" : 2990.015, + "99.97994684052148" : 2992.015, + "99.98014487647332" : 2993.007, + "99.9802292715414" : 2994.015, + "99.98034987571461" : 2998.015, + "99.98069497633956" : 2999.007, + "99.98079413358127" : 3000.015, + "99.98092142251235" : 3006.015, + "99.98107712166437" : 3007.007, + "99.98111834433789" : 3011.007, + "99.98135927415272" : 3012.015, + "99.98144534041027" : 3023.007, + "99.98164170517266" : 3024.015, + "99.9820032391607" : 3035.007, + "99.9822068457441" : 3036.015, + "99.98248899823247" : 3047.007, + "99.98278591289444" : 3053.007, + "99.98305386027234" : 3054.015, + "99.98315468870351" : 3060.015, + "99.98333656982385" : 3061.007, + "99.98347527854962" : 3072.015, + "99.9836187223122" : 3073.007, + "99.98373626263805" : 3088.015, + "99.98406604402622" : 3089.007, + "99.9841833058205" : 3090.015, + "99.98446545830885" : 3094.015, + "99.98465012474496" : 3095.007, + "99.98474761079721" : 3096.015, + "99.98503004181714" : 3099.007, + "99.98524228287945" : 3104.015, + "99.98555674503085" : 3107.007, + "99.98559573945175" : 3108.015, + "99.9858778919401" : 3114.015, + "99.98598568366073" : 3115.007, + "99.98642047145374" : 3116.015, + "99.98658174123732" : 3119.007, + "99.98700761601984" : 3120.015, + "99.98717863440864" : 3121.007, + "99.98729004703978" : 3122.015, + "99.98753961133353" : 3159.007, + "99.98757275659129" : 3160.015, + "99.98770812293812" : 3162.015, + "99.98785518761123" : 3163.007, + "99.98799918843697" : 3165.007, + "99.98841949258794" : 3166.015, + "99.98868604730794" : 3193.007, + "99.98876932824972" : 3225.007, + "99.98898491169096" : 3226.015, + "99.98908768984319" : 3227.007, + "99.98926706417932" : 3228.015, + "99.98955005226242" : 3250.015, + "99.98971466442492" : 3263.007, + "99.98983220475077" : 3264.015, + "99.99011435723912" : 3273.007, + "99.99039678825906" : 3275.007, + "99.99047644829032" : 3279.007, + "99.990679219279" : 3280.015, + "99.99085552976777" : 3315.007, + "99.99096192883052" : 3316.015, + "99.99107445558796" : 3320.015, + "99.99124435985044" : 3321.007, + "99.9915265123388" : 3323.007, + "99.99180894335873" : 3335.007, + "99.9919716058002" : 3363.007, + "99.99209165291025" : 3364.015, + "99.99237408393019" : 3373.007, + "99.99265651495011" : 3388.015, + "99.99274258120766" : 3404.015, + "99.99293894597005" : 3405.007, + "99.99338682474723" : 3414.015, + "99.99350352947835" : 3415.007, + "99.9936121567937" : 3436.015, + "99.99378623902986" : 3437.007, + "99.99406867004978" : 3448.015, + "99.99412298370747" : 3523.007, + "99.99435110106973" : 3524.015, + "99.99437644744332" : 3567.007, + "99.99463353208967" : 3568.015, + "99.99482961832047" : 3585.007, + "99.99491596310959" : 3586.015, + "99.99519839412953" : 3588.015, + "99.99534323055" : 3610.015, + "99.99548082514947" : 3611.007, + "99.99559864400689" : 3625.007, + "99.99576353470098" : 3626.015, + "99.99589138069521" : 3636.015, + "99.99604568718934" : 3637.007, + "99.99623675985174" : 3651.007, + "99.99632811820926" : 3652.015, + "99.99634120919343" : 3708.015, + "99.9966105492292" : 3709.007, + "99.99683894512303" : 3730.015, + "99.99689298024914" : 3731.007, + "99.99717541126907" : 3765.007, + "99.99742748234702" : 3804.015, + "99.99745784228901" : 3805.007, + "99.99774027330895" : 3814.015, + "99.99784973621904" : 3853.007, + "99.99802270432887" : 3854.015, + "99.99822046174914" : 3931.007, + "99.99830513534882" : 3932.015, + "99.99838117446957" : 3971.007, + "99.99858756636876" : 3972.015, + "99.99870538522617" : 4032.015, + "99.99886999738868" : 4033.007, + "99.99898224561456" : 4070.015, + "99.99915242840862" : 4071.007, + "99.9993827740235" : 4182.015, + "99.99943513796013" : 4183.007, + "99.99970280680644" : 5025.023, + "99.99971729044849" : 5026.015, + "99.99984235112694" : 5079.007, + "100.0" : 5080.031 + }, + "aggregatedEndToEndLatencyAvg" : 243.39480092467136, + "aggregatedEndToEndLatency50pct" : 119.0, + "aggregatedEndToEndLatency75pct" : 294.001, + "aggregatedEndToEndLatency95pct" : 898.003, + "aggregatedEndToEndLatency99pct" : 1500.007, + "aggregatedEndToEndLatency999pct" : 2372.015, + "aggregatedEndToEndLatency9999pct" : 3273.007, + "aggregatedEndToEndLatencyMax" : 5080.031 +} \ No newline at end of file diff --git a/blog/results/pulsar/latency/default-sync-200k.json b/blog/results/pulsar/latency/default-sync-200k.json new file mode 100644 index 00000000..e6e88217 --- /dev/null +++ b/blog/results/pulsar/latency/default-sync-200k.json @@ -0,0 +1,2230 @@ +{ + "workload" : "100-partitions-200K-rate-4-producer", + "driver" : "Pulsar", + "publishRate" : [ 203434.37889087608, 199868.4088082702, 200000.5958810861, 200113.52154762833, 199904.46971277593, 200031.32113760946, 199893.65652549264, 200192.21244666286, 200077.97407390235, 199996.5124489606, 199991.1342100833, 200033.69202220277, 199959.16816737235, 199963.99367359452, 199903.2557836127, 199998.97045618412, 200145.01526069085, 200039.37204024842, 199996.08315320956, 200010.23303502382, 199867.15822005805, 200116.24638311905, 199986.64063987823, 200002.36226281544, 200014.6109897825, 200012.23540050178, 200003.2093744593, 199965.30154961284, 200003.73193080892, 200042.12744119792, 200030.1419690063, 199860.45337746825, 200090.4437736812, 199986.01671941133, 200058.99075758664, 200075.12814046766, 199702.73464573652, 200220.5096198005, 200067.28011846237, 199906.12722768213, 199993.49873528804, 200013.00155309297, 200083.07068831776, 199954.2309603092, 200086.2367797373, 199929.25939884575, 200061.6251006592, 199740.82073420406, 200235.4378004144, 199957.40338160543, 199982.8294559432, 200022.4352869315, 200092.41330926854, 200051.11061408382, 200001.36226692967, 199863.58309502323, 200143.4159996389, 199968.80727785823, 200012.63022609337, 199904.60756807638 ], + "consumeRate" : [ 203333.61060280993, 199937.1217967668, 199936.54506940919, 200131.79744445827, 199898.8093719432, 200053.66009017391, 199797.0709353271, 200269.6872509457, 200089.20449901212, 200002.57436770032, 199968.97470379074, 200023.75384750706, 199972.681600764, 199944.22403889135, 199921.72101967773, 199971.6755551582, 200202.53470477258, 200072.05993301014, 199943.01985092624, 200032.1870082914, 199854.74450562336, 200126.97434096748, 199942.93709196523, 200018.55316673836, 200042.82555057204, 200014.32169475628, 199953.82765689775, 199999.46365494624, 200026.97071843807, 200029.90991488725, 200017.32332042776, 199865.7168982752, 200115.46986391157, 199918.89185679736, 200095.643405153, 200020.8768646684, 199910.7628809674, 200070.31674692588, 200082.3866990793, 199893.81029956715, 199948.915797439, 200054.90514666613, 200096.58225607825, 199992.07795786145, 199934.01103311643, 199985.9693119956, 200095.6037343763, 199760.3728673493, 200208.61406123242, 199992.37220651208, 200043.10736268008, 199958.4697766007, 200096.68523461602, 200023.08112844094, 200006.82747190807, 199900.9322147784, 200081.11811946012, 199972.682522948, 200029.72167916707, 199910.66568071052 ], + "backlog" : [ 2146, 1455, 2102, 1918, 1975, 1750, 2721, 1943, 1830, 1768, 1992, 2092, 1956, 2155, 1969, 2244, 1665, 1336, 1870, 1647, 1776, 1666, 2106, 1943, 1659, 1638, 2134, 1791, 1557, 1678, 1809, 1756, 1504, 2180, 1811, 2356, 260, 1775, 1623, 1747, 2194, 1774, 1645, 1257, 2789, 2218, 1876, 1679, 1949, 1597, 996, 1634, 1591, 1873, 1817, 1442, 2069, 2030, 1858, 1797 ], + "publishLatencyAvg" : [ 3.3313874399379126, 3.2812481245923433, 3.3351622097474607, 3.398003391174904, 3.312343926612248, 3.2950374530124646, 3.3335996470359164, 3.410670195530227, 3.305117361778894, 3.292296926509803, 3.385438998805428, 3.404347610121418, 3.341624759761103, 3.33509873087696, 3.4288416471572156, 3.3876819122815465, 3.4090006372765065, 3.3499494941517507, 3.372072120328211, 3.308167058408627, 3.4358545405219547, 3.4021740700676686, 3.645291331731538, 3.448487739015078, 3.4270354078340373, 3.4863229096190853, 3.4491617110694928, 3.5523277109678344, 3.526528753877809, 3.4851512383212957, 3.3601602106895543, 3.6093293957529187, 3.49797202766656, 3.694222870647581, 3.4021728332659724, 3.5160346502373567, 3.3013227468639084, 3.3305646662613078, 3.390799064006887, 3.5975093446960753, 3.5718241899564784, 3.6250777946759003, 3.420594090450864, 3.624692781421617, 3.5384162335592144, 3.369429365863256, 3.3172529983317776, 3.442013048410652, 3.4674945692300363, 3.5152400991586616, 3.5948581003295805, 3.4949090734352044, 3.431038907827455, 3.410030778364575, 3.3716560707428473, 3.4551527803177278, 3.3948181526613257, 3.675790190745172, 3.611940402602533, 3.448043490959811 ], + "publishLatency50pct" : [ 3.156, 3.14, 3.141, 3.157, 3.15, 3.145, 3.149, 3.165, 3.154, 3.157, 3.161, 3.173, 3.165, 3.167, 3.162, 3.182, 3.162, 3.152, 3.16, 3.169, 3.194, 3.176, 3.192, 3.168, 3.141, 3.152, 3.145, 3.166, 3.18, 3.176, 3.163, 3.198, 3.187, 3.174, 3.158, 3.191, 3.146, 3.16, 3.147, 3.168, 3.178, 3.204, 3.183, 3.219, 3.224, 3.19, 3.181, 3.196, 3.186, 3.198, 3.203, 3.19, 3.217, 3.201, 3.181, 3.216, 3.226, 3.226, 3.204, 3.216 ], + "publishLatency75pct" : [ 3.805, 3.784, 3.772, 3.786, 3.789, 3.777, 3.789, 3.809, 3.797, 3.816, 3.824, 3.835, 3.826, 3.845, 3.807, 3.832, 3.805, 3.793, 3.794, 3.815, 3.87, 3.831, 3.864, 3.825, 3.795, 3.805, 3.783, 3.818, 3.837, 3.851, 3.826, 3.874, 3.847, 3.843, 3.811, 3.858, 3.797, 3.807, 3.792, 3.823, 3.864, 3.918, 3.882, 3.93, 3.937, 3.891, 3.879, 3.907, 3.877, 3.888, 3.908, 3.891, 3.926, 3.898, 3.889, 3.909, 3.928, 3.943, 3.911, 3.909 ], + "publishLatency95pct" : [ 4.36, 4.338, 4.345, 4.375, 4.361, 4.348, 4.372, 4.413, 4.371, 4.351, 4.394, 4.409, 4.38, 4.382, 4.437, 4.45, 4.379, 4.376, 4.361, 4.386, 4.452, 4.387, 4.488, 4.421, 4.343, 4.397, 4.366, 4.428, 4.49, 4.433, 4.378, 4.478, 4.452, 4.437, 4.38, 4.542, 4.347, 4.381, 4.36, 4.474, 4.44, 4.463, 4.393, 4.555, 4.52, 4.415, 4.374, 4.42, 4.407, 4.458, 4.528, 4.422, 4.461, 4.433, 4.392, 4.468, 4.435, 4.613, 4.494, 4.468 ], + "publishLatency99pct" : [ 8.49, 7.09, 7.95, 10.848, 7.808, 7.732, 10.086, 12.097, 8.203, 7.0, 10.168, 9.972, 8.634, 8.331, 13.585, 9.909, 9.445, 9.713, 8.106, 7.297, 10.575, 8.783, 16.866, 11.322, 10.366, 12.803, 12.956, 14.645, 15.653, 12.991, 8.414, 16.402, 13.0, 26.216, 10.574, 14.012, 7.455, 8.934, 9.148, 19.046, 16.983, 16.812, 8.087, 15.621, 13.112, 7.992, 6.073, 10.73, 12.084, 14.892, 14.978, 11.943, 8.245, 9.255, 7.272, 10.784, 6.703, 18.105, 16.885, 10.512 ], + "publishLatency999pct" : [ 23.992, 20.503, 30.015, 32.946, 23.57, 19.486, 21.041, 25.538, 15.82, 17.509, 24.194, 27.237, 21.117, 18.86, 23.628, 20.552, 43.32, 23.578, 38.873, 18.796, 24.574, 34.281, 54.912, 35.736, 49.299, 47.663, 44.239, 51.883, 30.046, 34.147, 26.644, 53.56, 42.566, 47.467, 30.496, 27.749, 23.652, 20.961, 39.581, 35.596, 37.957, 43.219, 38.72, 40.309, 28.489, 18.131, 15.533, 26.131, 33.519, 30.13, 36.857, 40.896, 28.459, 26.762, 26.158, 22.633, 23.879, 32.887, 39.289, 22.902 ], + "publishLatency9999pct" : [ 30.829, 24.272, 49.675, 37.247, 31.035, 58.6, 23.651, 30.587, 58.107, 21.214, 27.589, 58.434, 24.847, 22.945, 52.929, 25.084, 81.208, 60.256, 65.287, 23.531, 46.536, 57.043, 60.879, 58.796, 57.873, 58.698, 52.633, 57.841, 51.091, 43.162, 32.069, 71.362, 53.357, 51.296, 54.092, 33.647, 27.354, 33.038, 46.636, 43.435, 42.633, 51.1, 47.397, 46.617, 35.591, 28.778, 36.297, 37.86, 39.317, 37.11, 43.548, 48.002, 34.029, 36.035, 35.375, 28.372, 28.577, 37.515, 48.624, 27.045 ], + "publishLatencyMax" : [ 32.216, 25.409, 50.818, 37.52, 32.83, 59.838, 24.846, 31.819, 58.257, 22.881, 28.079, 59.606, 26.526, 23.311, 53.465, 27.448, 83.576, 60.38, 68.707, 24.693, 47.856, 58.203, 62.247, 59.896, 59.087, 59.823, 52.964, 58.278, 51.403, 44.925, 33.209, 72.479, 55.461, 54.335, 55.518, 35.329, 28.518, 33.392, 49.473, 44.807, 44.901, 52.368, 49.629, 47.47, 36.765, 30.711, 39.736, 39.312, 40.479, 38.23, 45.647, 48.98, 36.149, 38.322, 37.114, 29.508, 29.642, 39.413, 51.264, 28.661 ], + "aggregatedPublishLatencyAvg" : 3.4392448633780863, + "aggregatedPublishLatency50pct" : 3.177, + "aggregatedPublishLatency75pct" : 3.847, + "aggregatedPublishLatency95pct" : 4.414, + "aggregatedPublishLatency99pct" : 10.962, + "aggregatedPublishLatency999pct" : 33.313, + "aggregatedPublishLatency9999pct" : 54.127, + "aggregatedPublishLatencyMax" : 83.576, + "aggregatedPublishLatencyQuantiles" : { + "8.277030899894526E-7" : 0.714, + "0.5008092039259282" : 1.51, + "1.002182073656139" : 1.642, + "1.5049454845775325" : 1.74, + "2.006055144725127" : 1.821, + "2.5000258657215624" : 1.889, + "3.00399192923271" : 1.948, + "3.501205590935724" : 1.998, + "4.004062532306286" : 2.042, + "4.510907347164418" : 2.081, + "5.0046396896709355" : 2.115, + "5.509860551066508" : 2.146, + "6.009713757923498" : 2.173, + "6.510888806615202" : 2.197, + "7.0005885796672915" : 2.218, + "7.51073013593285" : 2.238, + "8.00210683544526" : 2.256, + "8.5214607271024" : 2.274, + "9.004810362048092" : 2.29, + "9.514427982257688" : 2.306, + "10.013133992631953" : 2.321, + "10.531741296101924" : 2.336, + "11.000848643978166" : 2.349, + "11.52315081404185" : 2.363, + "12.025753650563786" : 2.376, + "12.503915242541423" : 2.388, + "13.034165017675186" : 2.401, + "13.53521342779412" : 2.413, + "14.000814625381167" : 2.424, + "14.517346049501445" : 2.436, + "15.037698151085115" : 2.448, + "15.515585773339964" : 2.459, + "16.041211999013047" : 2.471, + "16.522138947014337" : 2.482, + "17.00536442649653" : 2.493, + "17.528998370832007" : 2.505, + "18.008679625682866" : 2.516, + "18.529466271388777" : 2.528, + "19.006898656944134" : 2.539, + "19.528582532799597" : 2.551, + "20.00539165792819" : 2.562, + "20.5255252458961" : 2.574, + "21.001802985640925" : 2.585, + "21.52467709853979" : 2.597, + "22.004209366834452" : 2.608, + "22.531908988747954" : 2.62, + "23.016207171434775" : 2.631, + "23.502780709915974" : 2.642, + "24.03854960925379" : 2.654, + "24.532776090505028" : 2.665, + "25.0333998889388" : 2.676, + "25.537671374890152" : 2.687, + "26.000734007100203" : 2.697, + "26.518353860783815" : 2.708, + "27.042499325628906" : 2.719, + "27.52490786216128" : 2.729, + "28.014271587758834" : 2.739, + "28.510785012647716" : 2.749, + "29.01043543224766" : 2.759, + "29.51413994158237" : 2.769, + "30.0196703639336" : 2.779, + "30.529375720670735" : 2.789, + "31.03729572184276" : 2.799, + "31.544796077548163" : 2.809, + "32.001367034423424" : 2.818, + "32.51098713774229" : 2.828, + "33.01960985883772" : 2.838, + "33.52739494440608" : 2.848, + "34.03440695528839" : 2.858, + "34.543172041315295" : 2.868, + "35.04935965991998" : 2.878, + "35.50326706825165" : 2.887, + "36.00706428033244" : 2.897, + "36.51008096839937" : 2.907, + "37.01424236983976" : 2.917, + "37.51621946282566" : 2.927, + "38.018702282399545" : 2.937, + "38.52230498425419" : 2.947, + "39.02764834570708" : 2.957, + "39.531939696532596" : 2.967, + "40.03678643613149" : 2.977, + "40.54124415527809" : 2.987, + "41.051145677647554" : 2.997, + "41.511752514789606" : 3.006, + "42.02204140220518" : 3.016, + "42.53357763817738" : 3.026, + "43.04752249014143" : 3.036, + "43.510478348652875" : 3.045, + "44.02336870688029" : 3.055, + "44.53395391200208" : 3.065, + "45.0443967521924" : 3.075, + "45.503026206652464" : 3.084, + "46.01051994073315" : 3.094, + "46.51403656146643" : 3.104, + "47.01425892390156" : 3.114, + "47.51075248391628" : 3.124, + "48.00136935199208" : 3.134, + "48.53461789542087" : 3.145, + "49.013042696981124" : 3.155, + "49.53162434165531" : 3.166, + "50.038302788192354" : 3.177, + "50.26613302993049" : 3.182, + "50.534887395546974" : 3.188, + "50.75513753238699" : 3.193, + "51.016767029804846" : 3.199, + "51.27465199844359" : 3.205, + "51.52567034224778" : 3.211, + "51.77488429331579" : 3.217, + "52.02099435779635" : 3.223, + "52.26372573826357" : 3.229, + "52.50120782573407" : 3.235, + "52.77484563958149" : 3.242, + "53.00514988585561" : 3.248, + "53.268677306458805" : 3.255, + "53.52752654919739" : 3.262, + "53.781523796422455" : 3.269, + "54.03139080522847" : 3.276, + "54.27646541314345" : 3.283, + "54.51994752031328" : 3.29, + "54.759966517754606" : 3.297, + "55.030390360503596" : 3.305, + "55.26627580871351" : 3.312, + "55.53319681198567" : 3.32, + "55.76697410042538" : 3.327, + "56.00015047642176" : 3.334, + "56.26641345573738" : 3.342, + "56.500494511211116" : 3.349, + "56.768247356088715" : 3.357, + "57.002085066853994" : 3.364, + "57.27148835169303" : 3.372, + "57.50625971154382" : 3.379, + "57.77727536200216" : 3.387, + "58.01548913900421" : 3.394, + "58.25502806865334" : 3.401, + "58.52758076374978" : 3.409, + "58.76651547014322" : 3.416, + "59.005198554797296" : 3.423, + "59.2781601352202" : 3.431, + "59.517006277383004" : 3.438, + "59.75729593373475" : 3.445, + "60.03274807275543" : 3.453, + "60.2754256525218" : 3.46, + "60.51902612123351" : 3.467, + "60.76584552726218" : 3.474, + "61.014814478215555" : 3.481, + "61.26529233190199" : 3.488, + "61.51834185908901" : 3.495, + "61.774569766141596" : 3.502, + "62.033361069663876" : 3.509, + "62.255484298596535" : 3.515, + "62.51784051932741" : 3.522, + "62.78283545750916" : 3.529, + "63.01189235522666" : 3.535, + "63.28022128145489" : 3.542, + "63.5111711361392" : 3.548, + "63.78147330653396" : 3.555, + "64.01473328054243" : 3.561, + "64.28737702297877" : 3.568, + "64.52146966629577" : 3.574, + "64.75591822194147" : 3.58, + "65.02780130523811" : 3.587, + "65.26195685398994" : 3.593, + "65.53560791108681" : 3.6, + "65.76974690577684" : 3.606, + "66.00349936312385" : 3.612, + "66.2742335945316" : 3.619, + "66.50650280794135" : 3.625, + "66.7760294205408" : 3.632, + "67.00688408936975" : 3.638, + "67.27486786340945" : 3.645, + "67.50282805453273" : 3.651, + "67.76940390561636" : 3.658, + "68.03542271252043" : 3.665, + "68.26316025151249" : 3.671, + "68.52800537543494" : 3.678, + "68.75481257615385" : 3.684, + "69.01872901720935" : 3.691, + "69.28497544246318" : 3.698, + "69.5118472040231" : 3.704, + "69.77589028365136" : 3.711, + "70.00276038980512" : 3.717, + "70.26845639250409" : 3.724, + "70.53255492823938" : 3.731, + "70.76077087961745" : 3.737, + "71.02730782865586" : 3.744, + "71.25696977733215" : 3.75, + "71.52460426066787" : 3.757, + "71.75271178294116" : 3.763, + "72.02090827667499" : 3.77, + "72.2525848546723" : 3.776, + "72.52328763336263" : 3.783, + "72.75553284338277" : 3.789, + "73.02558339203817" : 3.796, + "73.25777976757601" : 3.802, + "73.53091930416326" : 3.809, + "73.76585537692895" : 3.815, + "74.00158438925486" : 3.821, + "74.27759771097055" : 3.828, + "74.51502103152167" : 3.834, + "74.7558577996159" : 3.84, + "75.03845798252172" : 3.847, + "75.15946651887201" : 3.85, + "75.28293085029028" : 3.853, + "75.40454857611479" : 3.856, + "75.52664885284076" : 3.859, + "75.6513398402384" : 3.862, + "75.77500695891374" : 3.865, + "75.90064152783395" : 3.868, + "76.02535982943357" : 3.871, + "76.14956743822665" : 3.874, + "76.2765147442476" : 3.877, + "76.40191921170882" : 3.88, + "76.52762165228243" : 3.883, + "76.65597025963473" : 3.886, + "76.78235721066376" : 3.889, + "76.91037308137389" : 3.892, + "77.03806863098819" : 3.895, + "77.16516988978388" : 3.898, + "77.2514571092122" : 3.9, + "77.37914603720178" : 3.903, + "77.50614714392358" : 3.906, + "77.63530772800716" : 3.909, + "77.76208535489467" : 3.912, + "77.88884808312655" : 3.915, + "78.0177967752191" : 3.918, + "78.14432609117961" : 3.921, + "78.27226415779927" : 3.924, + "78.39929588953541" : 3.927, + "78.52583762104227" : 3.93, + "78.65491046859832" : 3.933, + "78.78119147363182" : 3.936, + "78.90767029970384" : 3.939, + "79.03608926181879" : 3.942, + "79.16219976001577" : 3.945, + "79.28979019133764" : 3.948, + "79.41623590928606" : 3.951, + "79.50025687765398" : 3.953, + "79.6273730351053" : 3.956, + "79.7535629927989" : 3.959, + "79.87870259527132" : 3.962, + "80.00535110047679" : 3.965, + "80.13004374328061" : 3.968, + "80.25494165645074" : 3.971, + "80.38152973933065" : 3.974, + "80.50616195980889" : 3.977, + "80.63205973831174" : 3.98, + "80.75718195901926" : 3.983, + "80.88146571649662" : 3.986, + "81.00754558967927" : 3.989, + "81.13153882337205" : 3.992, + "81.25572905040025" : 3.995, + "81.38236514005936" : 3.998, + "81.50693031658733" : 4.001, + "81.63227850023841" : 4.004, + "81.75628911569609" : 4.007, + "81.8787006087839" : 4.01, + "82.0029570520593" : 4.013, + "82.16519761783739" : 4.017, + "82.2883292126135" : 4.02, + "82.41013731014871" : 4.023, + "82.5315332115451" : 4.026, + "82.65462673197906" : 4.029, + "82.77550118042876" : 4.032, + "82.89585914215031" : 4.035, + "83.01837492582746" : 4.038, + "83.1381294919964" : 4.041, + "83.25937144061805" : 4.044, + "83.37990156458233" : 4.047, + "83.53976745019524" : 4.051, + "83.66119563201215" : 4.054, + "83.78000082273687" : 4.057, + "83.9002280073702" : 4.06, + "84.01921943129017" : 4.063, + "84.13738563522942" : 4.066, + "84.25722628251972" : 4.069, + "84.41419603502078" : 4.073, + "84.53258820190361" : 4.076, + "84.65016839205515" : 4.079, + "84.76662621681666" : 4.082, + "84.88478745453737" : 4.085, + "85.00049455259627" : 4.088, + "85.1558858753047" : 4.092, + "85.27172126734256" : 4.095, + "85.38686966581571" : 4.098, + "85.50328941623508" : 4.101, + "85.65551808543667" : 4.105, + "85.77113413615567" : 4.108, + "85.88536212879275" : 4.111, + "86.03609182769837" : 4.115, + "86.15088017532737" : 4.118, + "86.26380784641009" : 4.121, + "86.37793072075475" : 4.124, + "86.5286322777553" : 4.128, + "86.64076369846545" : 4.131, + "86.75466226527271" : 4.134, + "86.90395672702029" : 4.138, + "87.01765912819523" : 4.141, + "87.12937421425111" : 4.144, + "87.27902293292121" : 4.148, + "87.39054764726639" : 4.151, + "87.50095413473699" : 4.154, + "87.57599204146925" : 4.156, + "87.65043731278908" : 4.158, + "87.72391748230598" : 4.16, + "87.76081400294845" : 4.161, + "87.83415346294005" : 4.163, + "87.90905562636556" : 4.165, + "87.94573197798607" : 4.166, + "88.01870062699336" : 4.168, + "88.09155339756806" : 4.17, + "88.12801123557283" : 4.171, + "88.20228268924376" : 4.173, + "88.27453206426584" : 4.175, + "88.34655961485981" : 4.177, + "88.38257463171144" : 4.178, + "88.4557278585078" : 4.18, + "88.52794991932792" : 4.182, + "88.56397569631972" : 4.183, + "88.63547186152991" : 4.185, + "88.70714515520136" : 4.187, + "88.78040846650869" : 4.189, + "88.81619503730748" : 4.19, + "88.88728811111285" : 4.192, + "88.95800292460609" : 4.194, + "89.03022912394167" : 4.196, + "89.06616468129666" : 4.197, + "89.13662207912891" : 4.199, + "89.20703395329123" : 4.201, + "89.2773249828024" : 4.203, + "89.31357258422231" : 4.204, + "89.38407053950598" : 4.206, + "89.45385667013225" : 4.208, + "89.5234400135015" : 4.21, + "89.59418131349362" : 4.212, + "89.62946133000133" : 4.213, + "89.6985364636733" : 4.215, + "89.76754124258264" : 4.217, + "89.83625632541047" : 4.219, + "89.90634125685224" : 4.221, + "89.94016617132775" : 4.222, + "90.00824143966703" : 4.224, + "90.07587305915007" : 4.226, + "90.14465849674055" : 4.228, + "90.21270727858094" : 4.23, + "90.27982158363274" : 4.232, + "90.31316891342532" : 4.233, + "90.38028570158639" : 4.235, + "90.44875164578413" : 4.237, + "90.51532297760889" : 4.239, + "90.58171138705077" : 4.241, + "90.64801371537128" : 4.243, + "90.71558656793493" : 4.245, + "90.78149987580315" : 4.247, + "90.8141800769052" : 4.248, + "90.87934017496154" : 4.25, + "90.94577990199498" : 4.252, + "91.01084729730523" : 4.254, + "91.07552649986629" : 4.256, + "91.14002526315372" : 4.258, + "91.20540139171653" : 4.26, + "91.26979503671153" : 4.262, + "91.33324261707467" : 4.264, + "91.39622171748888" : 4.266, + "91.46039105494648" : 4.268, + "91.5236267433186" : 4.27, + "91.5857210291296" : 4.272, + "91.64760259524648" : 4.274, + "91.71052210103821" : 4.276, + "91.77208748457471" : 4.278, + "91.83284171908304" : 4.28, + "91.89319700070197" : 4.282, + "91.95402572848839" : 4.284, + "92.01379085780417" : 4.286, + "92.0727994664957" : 4.288, + "92.1313304905043" : 4.29, + "92.1907223257265" : 4.292, + "92.27793822802177" : 4.295, + "92.3352103156305" : 4.297, + "92.39214138956616" : 4.299, + "92.450288359341" : 4.301, + "92.50673771007828" : 4.303, + "92.56286673971974" : 4.305, + "92.64701103584807" : 4.308, + "92.70266413621277" : 4.31, + "92.75748456726896" : 4.312, + "92.83926659877847" : 4.315, + "92.8944710840684" : 4.317, + "92.94797546721149" : 4.319, + "93.00094101564301" : 4.321, + "93.08063557995955" : 4.324, + "93.13321541875113" : 4.326, + "93.21060979618059" : 4.329, + "93.261633553163" : 4.331, + "93.31357357746602" : 4.333, + "93.38873646736486" : 4.336, + "93.43858736906876" : 4.338, + "93.51360292781759" : 4.341, + "93.58622145841781" : 4.344, + "93.63394350777425" : 4.346, + "93.70658190324863" : 4.349, + "93.7530028033476" : 4.351, + "93.7992300209235" : 4.353, + "93.82209118026901" : 4.354, + "93.84489026188278" : 4.355, + "93.89132606063737" : 4.357, + "93.91401009152162" : 4.358, + "93.95852892991978" : 4.36, + "93.98079000452505" : 4.361, + "94.00280276820332" : 4.362, + "94.04734312688184" : 4.364, + "94.0694229345104" : 4.365, + "94.11226898496369" : 4.367, + "94.13371394432224" : 4.368, + "94.17620408244684" : 4.37, + "94.19727243689944" : 4.371, + "94.21894667001389" : 4.372, + "94.26104530457694" : 4.374, + "94.2817271216865" : 4.375, + "94.32245342452634" : 4.377, + "94.36317227803838" : 4.379, + "94.38390624044261" : 4.38, + "94.42394886053013" : 4.382, + "94.44362750149463" : 4.383, + "94.48270170896684" : 4.385, + "94.50204016396135" : 4.386, + "94.5411954863364" : 4.388, + "94.5793294230984" : 4.39, + "94.59807938119593" : 4.391, + "94.63522172965611" : 4.393, + "94.67197588536709" : 4.395, + "94.69082930635088" : 4.396, + "94.72730618152671" : 4.398, + "94.76299673876706" : 4.4, + "94.79853499863884" : 4.402, + "94.81611292916095" : 4.403, + "94.85194916214513" : 4.405, + "94.88616475247912" : 4.407, + "94.91991269056726" : 4.409, + "94.95348267249105" : 4.411, + "94.97077090693166" : 4.412, + "95.00407436846048" : 4.414, + "95.03638706939057" : 4.416, + "95.06852843578105" : 4.418, + "95.10075836640215" : 4.42, + "95.13243208054676" : 4.422, + "95.16318621655842" : 4.424, + "95.19361009903716" : 4.426, + "95.2242988465047" : 4.428, + "95.25433950245278" : 4.43, + "95.28337284374034" : 4.432, + "95.32638360710854" : 4.435, + "95.35543598556717" : 4.437, + "95.38331219793493" : 4.439, + "95.41071993035375" : 4.441, + "95.43792239240625" : 4.443, + "95.47886141494023" : 4.446, + "95.50521299821622" : 4.448, + "95.5440587596356" : 4.451, + "95.5702861874481" : 4.453, + "95.59530847956157" : 4.455, + "95.63258077740689" : 4.458, + "95.65771398173442" : 4.46, + "95.69429597520268" : 4.463, + "95.72978457288906" : 4.466, + "95.75359841849115" : 4.468, + "95.78845299561061" : 4.471, + "95.82234909255186" : 4.474, + "95.84504884979482" : 4.476, + "95.87829271670115" : 4.479, + "95.91080158326358" : 4.482, + "95.9429967503549" : 4.485, + "95.9738957344073" : 4.488, + "96.00416235329894" : 4.491, + "96.03457713104369" : 4.494, + "96.06362537098687" : 4.497, + "96.1021532944197" : 4.501, + "96.12961565524246" : 4.504, + "96.15661036381938" : 4.507, + "96.19215193450353" : 4.511, + "96.22615149433102" : 4.515, + "96.25143534062093" : 4.518, + "96.28355518673106" : 4.522, + "96.31523303939113" : 4.526, + "96.34499144858553" : 4.53, + "96.38157013124143" : 4.535, + "96.40927500906956" : 4.539, + "96.44315620735519" : 4.544, + "96.46887542547043" : 4.548, + "96.50545079731397" : 4.554, + "96.53464057448554" : 4.559, + "96.56772303928933" : 4.565, + "96.59878342544427" : 4.571, + "96.6285799089808" : 4.577, + "96.6568335539576" : 4.583, + "96.68760507173413" : 4.59, + "96.71986976588501" : 4.598, + "96.75347202822931" : 4.607, + "96.78454979614915" : 4.616, + "96.81334144813442" : 4.625, + "96.84618718985448" : 4.636, + "96.8762816465034" : 4.647, + "96.89190288692078" : 4.653, + "96.90675850197991" : 4.659, + "96.92382656739858" : 4.666, + "96.93775018877838" : 4.672, + "96.95346247653565" : 4.679, + "96.97063731565294" : 4.687, + "96.98498885953026" : 4.694, + "97.00039572484732" : 4.702, + "97.0170168305974" : 4.711, + "97.03126656699466" : 4.719, + "97.0479977572557" : 4.729, + "97.0625587100148" : 4.738, + "97.0795837348728" : 4.749, + "97.09392534631304" : 4.759, + "97.1101019755038" : 4.771, + "97.12530522586073" : 4.783, + "97.14166726054363" : 4.797, + "97.15720076443347" : 4.811, + "97.17221281537661" : 4.825, + "97.188395238489" : 4.841, + "97.2033518333251" : 4.857, + "97.21930001646301" : 4.875, + "97.23484676360229" : 4.893, + "97.25077922038149" : 4.912, + "97.26564062936225" : 4.93, + "97.28127345762289" : 4.95, + "97.29706272176752" : 4.971, + "97.31303573599814" : 4.993, + "97.32834493235059" : 5.014, + "97.34387512542806" : 5.036, + "97.35949636584543" : 5.059, + "97.37515568060493" : 5.081, + "97.39097391435773" : 5.103, + "97.40661667505543" : 5.125, + "97.42222715533264" : 5.148, + "97.43817699387674" : 5.172, + "97.45340673073254" : 5.195, + "97.46911405227127" : 5.219, + "97.48441083307736" : 5.243, + "97.50061063795464" : 5.269, + "97.51599101677283" : 5.294, + "97.53141857466714" : 5.319, + "97.54726163951263" : 5.347, + "97.56277279541902" : 5.375, + "97.57827484659144" : 5.403, + "97.594054178299" : 5.431, + "97.60971266535542" : 5.459, + "97.62529252061829" : 5.487, + "97.64099984215702" : 5.515, + "97.65628751822912" : 5.543, + "97.67193607284847" : 5.573, + "97.68765829304282" : 5.603, + "97.70314958407506" : 5.633, + "97.71904562191831" : 5.663, + "97.73447400751571" : 5.692, + "97.75019622771006" : 5.722, + "97.76569993428865" : 5.754, + "97.78170936745522" : 5.788, + "97.79721141862764" : 5.823, + "97.81256200013459" : 5.857, + "97.82829663587529" : 5.891, + "97.84386738640417" : 5.924, + "97.85941827205889" : 5.958, + "97.87535403965046" : 5.995, + "97.89077580362314" : 6.03, + "97.90641939202393" : 6.065, + "97.92209360543907" : 6.101, + "97.93750129845922" : 6.138, + "97.95324752204318" : 6.175, + "97.9689639483159" : 6.211, + "97.98443289136472" : 6.247, + "98.0000119189245" : 6.284, + "98.01591043987702" : 6.322, + "98.03141083564324" : 6.359, + "98.04715292071175" : 6.399, + "98.06264752255636" : 6.438, + "98.0782464149903" : 6.477, + "98.0939984324959" : 6.52, + "98.10972975742423" : 6.56, + "98.12514324436601" : 6.6, + "98.14091016052723" : 6.644, + "98.1563898637162" : 6.69, + "98.172116222426" : 6.737, + "98.18752391544615" : 6.783, + "98.20344726749137" : 6.827, + "98.21902050112952" : 6.87, + "98.23460449490784" : 6.914, + "98.25028119143225" : 6.96, + "98.26588091156928" : 7.008, + "98.281505462799" : 7.058, + "98.29715567282453" : 7.109, + "98.31263620371661" : 7.163, + "98.32817550152807" : 7.215, + "98.34382985006903" : 7.271, + "98.3594179823628" : 7.326, + "98.3751120606521" : 7.379, + "98.3907879294734" : 7.438, + "98.40646710910707" : 7.497, + "98.4220585522132" : 7.557, + "98.4376615831626" : 7.619, + "98.44541467800653" : 7.65, + "98.4531892931308" : 7.68, + "98.46115759077813" : 7.71, + "98.46885026329649" : 7.739, + "98.47662322301458" : 7.771, + "98.4844764699324" : 7.805, + "98.49221301071454" : 7.839, + "98.50015978808152" : 7.877, + "98.50792860928416" : 7.914, + "98.51567673790956" : 7.949, + "98.52363179230744" : 7.983, + "98.53132777563816" : 8.016, + "98.53918598877452" : 8.051, + "98.54707979314375" : 8.087, + "98.55487427314219" : 8.126, + "98.56267620246842" : 8.164, + "98.57033824997245" : 8.204, + "98.57830489221361" : 8.251, + "98.58608033504096" : 8.289, + "98.59378045688715" : 8.328, + "98.60174130520666" : 8.367, + "98.6093859709458" : 8.404, + "98.61730874492318" : 8.443, + "98.62503866408059" : 8.481, + "98.6329092927633" : 8.524, + "98.6408395160685" : 8.565, + "98.64857605685062" : 8.607, + "98.65627866180607" : 8.651, + "98.66413190872389" : 8.692, + "98.67188252045854" : 8.73, + "98.67971838561148" : 8.77, + "98.68765771365065" : 8.813, + "98.6953263827794" : 8.854, + "98.70329219731747" : 8.895, + "98.71097410969566" : 8.936, + "98.71889108975141" : 8.98, + "98.72664501229842" : 9.026, + "98.73440638417325" : 9.073, + "98.74231343179193" : 9.117, + "98.75008308069766" : 9.162, + "98.75795867559891" : 9.21, + "98.765722530583" : 9.258, + "98.77358322682863" : 9.305, + "98.7813917777796" : 9.359, + "98.78917798074713" : 9.406, + "98.79693769721578" : 9.454, + "98.80475121438528" : 9.5, + "98.81258211331968" : 9.55, + "98.82042294469115" : 9.6, + "98.82821163076794" : 9.652, + "98.83607481012284" : 9.704, + "98.84378486440609" : 9.765, + "98.85159920927869" : 9.822, + "98.85943424672853" : 9.869, + "98.86728418283398" : 9.921, + "98.87505879795826" : 9.978, + "98.88282016983308" : 10.037, + "98.89070486946832" : 10.093, + "98.89844306565664" : 10.153, + "98.906292174059" : 10.207, + "98.91410982974396" : 10.263, + "98.92196638747414" : 10.327, + "98.92972362083351" : 10.386, + "98.93758266167296" : 10.45, + "98.94533244570454" : 10.513, + "98.95323949332321" : 10.571, + "98.9609379597632" : 10.629, + "98.96877299721304" : 10.694, + "98.97659230830418" : 10.758, + "98.98440085925513" : 10.816, + "98.99218871762885" : 10.888, + "99.00011231930931" : 10.962, + "99.00791755944792" : 11.024, + "99.01572197188342" : 11.092, + "99.0235288674282" : 11.168, + "99.03127451294432" : 11.241, + "99.03916169568883" : 11.313, + "99.0469371385162" : 11.385, + "99.05471837526518" : 11.459, + "99.0625062336389" : 11.534, + "99.07038927786796" : 11.615, + "99.07822348761471" : 11.691, + "99.08603783248729" : 11.764, + "99.09382072464247" : 11.835, + "99.10157050867404" : 11.908, + "99.10938071503118" : 11.98, + "99.11727451940041" : 12.068, + "99.12505327304012" : 12.144, + "99.132860996288" : 12.233, + "99.14062898978754" : 12.336, + "99.14847478737757" : 12.428, + "99.15625767953273" : 12.505, + "99.16410513252892" : 12.59, + "99.171896301715" : 12.68, + "99.17968995401033" : 12.779, + "99.1875390624127" : 12.868, + "99.19540472487687" : 12.954, + "99.2032000325784" : 13.044, + "99.21101437745098" : 13.13, + "99.2188022358247" : 13.22, + "99.22269492345691" : 13.266, + "99.2265983712293" : 13.317, + "99.23052665009439" : 13.37, + "99.23443258097606" : 13.426, + "99.2383153361712" : 13.477, + "99.242259341395" : 13.527, + "99.24617603241683" : 13.572, + "99.25007368626758" : 13.617, + "99.25395313065037" : 13.665, + "99.2578367135486" : 13.714, + "99.2617385059148" : 13.766, + "99.2656411259841" : 13.819, + "99.26953464131942" : 13.875, + "99.27349520060501" : 13.929, + "99.27739450986196" : 13.986, + "99.28127229883856" : 14.03, + "99.28521299325" : 14.076, + "99.28909740385131" : 14.131, + "99.29299257459282" : 14.182, + "99.29690761020846" : 14.231, + "99.30080609176231" : 14.287, + "99.3046929854729" : 14.348, + "99.30860057176073" : 14.403, + "99.31254209387527" : 14.463, + "99.31640663960243" : 14.524, + "99.32036057726332" : 14.58, + "99.32427644058205" : 14.63, + "99.32817823294826" : 14.685, + "99.33207919761138" : 14.742, + "99.33600416566411" : 14.793, + "99.33984470800166" : 14.847, + "99.34375808821113" : 14.907, + "99.34768388396695" : 14.963, + "99.35156829456827" : 15.016, + "99.35548333018393" : 15.079, + "99.35938926106559" : 15.134, + "99.36332912777394" : 15.183, + "99.36719863971963" : 15.239, + "99.37113850642798" : 15.299, + "99.37500553526442" : 15.35, + "99.37891560466153" : 15.407, + "99.38281408621538" : 15.468, + "99.38676802387626" : 15.535, + "99.39067147164864" : 15.606, + "99.39455422684378" : 15.673, + "99.39847091786561" : 15.729, + "99.40234787913913" : 15.792, + "99.40625546542697" : 15.856, + "99.41021602471257" : 15.915, + "99.41410457382933" : 15.97, + "99.41797408577504" : 16.031, + "99.42192636802973" : 16.086, + "99.42583395431758" : 16.149, + "99.42972581424671" : 16.214, + "99.43363753905" : 16.285, + "99.43750291248024" : 16.351, + "99.44143946837623" : 16.426, + "99.4453453992579" : 16.494, + "99.44922649904686" : 16.567, + "99.45315808872431" : 16.646, + "99.45705988109052" : 16.721, + "99.46097822751852" : 16.793, + "99.46489491854035" : 16.861, + "99.46875367034589" : 16.934, + "99.47270678030368" : 16.999, + "99.47660360645135" : 17.062, + "99.4804855339434" : 17.13, + "99.48439891415288" : 17.199, + "99.48830236192526" : 17.274, + "99.49224636714906" : 17.345, + "99.49610346354841" : 17.423, + "99.50002925930423" : 17.511, + "99.50390870368702" : 17.587, + "99.5078460872861" : 17.672, + "99.5117569843863" : 17.762, + "99.51563891187834" : 17.846, + "99.51956056911871" : 17.934, + "99.52346236148492" : 18.025, + "99.52735835992951" : 18.102, + "99.53130236515331" : 18.16, + "99.53517353250518" : 18.236, + "99.5390662201374" : 18.315, + "99.54297794494069" : 18.392, + "99.54688635893163" : 18.469, + "99.55079394521947" : 18.572, + "99.55474291666181" : 18.654, + "99.5586041515766" : 18.747, + "99.56251587637989" : 18.832, + "99.56641270252757" : 18.93, + "99.57033270436176" : 19.045, + "99.57421877036926" : 19.145, + "99.57813546139108" : 19.232, + "99.58204387538201" : 19.3, + "99.58597960357491" : 19.39, + "99.58984828781753" : 19.478, + "99.59375752951155" : 19.573, + "99.59767008201793" : 19.682, + "99.60160084399229" : 19.765, + "99.60547118364107" : 19.855, + "99.60939532399071" : 19.945, + "99.6113404262522" : 19.996, + "99.61328635621676" : 20.046, + "99.61526291119566" : 20.097, + "99.61718897628606" : 20.153, + "99.61914732179697" : 20.209, + "99.6210957348708" : 20.262, + "99.62304994186627" : 20.315, + "99.62501242589263" : 20.36, + "99.62695338963866" : 20.399, + "99.62892166758665" : 20.441, + "99.63087421917595" : 20.499, + "99.6328209768436" : 20.557, + "99.63478263316688" : 20.615, + "99.63673104624071" : 20.681, + "99.63867780390837" : 20.731, + "99.64065353118417" : 20.803, + "99.64258290708693" : 20.857, + "99.64457104990909" : 20.893, + "99.64650539203039" : 20.939, + "99.64844635577641" : 20.992, + "99.65041132291205" : 21.044, + "99.6523754623446" : 21.096, + "99.65432966934007" : 21.159, + "99.65627394389846" : 21.217, + "99.65822235697229" : 21.275, + "99.66017077004612" : 21.338, + "99.6621233216354" : 21.407, + "99.66407752863087" : 21.465, + "99.6660259417047" : 21.511, + "99.66799090884034" : 21.559, + "99.66993435569563" : 21.614, + "99.67191173837762" : 21.679, + "99.67385104671746" : 21.743, + "99.67581270304075" : 21.813, + "99.67774621745896" : 21.864, + "99.67968800890807" : 21.929, + "99.68165628685607" : 21.991, + "99.68362870331951" : 22.045, + "99.68556139003464" : 22.098, + "99.68751145851465" : 22.153, + "99.68946069929157" : 22.214, + "99.69142566642721" : 22.281, + "99.6933773903134" : 22.355, + "99.69533573582432" : 22.413, + "99.6972891151167" : 22.479, + "99.699223457238" : 22.543, + "99.70118428585819" : 22.596, + "99.7031591854309" : 22.652, + "99.70509932147384" : 22.726, + "99.70705435617239" : 22.786, + "99.70899283680914" : 22.849, + "99.71095780394478" : 22.917, + "99.71291780486187" : 22.98, + "99.7148579409048" : 23.049, + "99.71680552627556" : 23.13, + "99.71878787517609" : 23.185, + "99.72073214973447" : 23.251, + "99.72266897496505" : 23.318, + "99.72461324952343" : 23.392, + "99.72656993962816" : 23.462, + "99.72855311623178" : 23.533, + "99.73049242457162" : 23.598, + "99.73244414845782" : 23.661, + "99.73438593990693" : 23.723, + "99.7363475962302" : 23.808, + "99.7383001478195" : 23.875, + "99.74024442237788" : 23.947, + "99.74218869693627" : 24.016, + "99.74415118096263" : 24.083, + "99.74610621566119" : 24.138, + "99.74804966251648" : 24.236, + "99.75001462965211" : 24.306, + "99.75195476569505" : 24.384, + "99.75391642201832" : 24.471, + "99.75587890604469" : 24.547, + "99.7578215251969" : 24.624, + "99.75978400922327" : 24.705, + "99.76174649324963" : 24.784, + "99.76368745699565" : 24.871, + "99.76563752547567" : 24.954, + "99.76759587098658" : 25.034, + "99.76953352392024" : 25.11, + "99.77150428497751" : 25.19, + "99.77345021494207" : 25.261, + "99.77540359423445" : 25.353, + "99.77734621338665" : 25.44, + "99.77930124808522" : 25.55, + "99.78126455981467" : 25.663, + "99.78321711140396" : 25.762, + "99.78517214610251" : 25.859, + "99.78712552539488" : 25.935, + "99.78906317832855" : 26.03, + "99.79102980087036" : 26.114, + "99.7929691092102" : 26.184, + "99.79493407634584" : 26.28, + "99.7968882833413" : 26.364, + "99.79883255789969" : 26.472, + "99.8007842817859" : 26.599, + "99.802735177969" : 26.724, + "99.80469104037064" : 26.829, + "99.80566524690755" : 26.892, + "99.80666097372482" : 26.965, + "99.80762773093392" : 27.007, + "99.8086052482832" : 27.044, + "99.8095728331954" : 27.091, + "99.8105652492003" : 27.136, + "99.81153945573722" : 27.175, + "99.81252193930503" : 27.217, + "99.81348041948324" : 27.257, + "99.81446041994178" : 27.3, + "99.81543297107252" : 27.339, + "99.81640800531252" : 27.387, + "99.81739628280198" : 27.437, + "99.81837545555743" : 27.475, + "99.81934055736036" : 27.528, + "99.8203205578189" : 27.593, + "99.82129807516819" : 27.658, + "99.82227145400202" : 27.733, + "99.82325228216365" : 27.801, + "99.82422069477894" : 27.866, + "99.82520648915911" : 27.911, + "99.82618152339913" : 27.963, + "99.82716235156076" : 28.015, + "99.82813407498841" : 28.077, + "99.82911242004077" : 28.132, + "99.83009076509315" : 28.192, + "99.83106414392697" : 28.258, + "99.83204911060406" : 28.312, + "99.83302497254716" : 28.357, + "99.83401159463043" : 28.4, + "99.83497586873027" : 28.44, + "99.83594676445482" : 28.494, + "99.83692842031955" : 28.559, + "99.83790014374719" : 28.603, + "99.83887931650266" : 28.66, + "99.8398510399303" : 28.728, + "99.84082110795177" : 28.799, + "99.84180110841032" : 28.885, + "99.84277531494723" : 28.959, + "99.8437627647336" : 29.033, + "99.84473117734888" : 29.096, + "99.8457136609167" : 29.16, + "99.84669531678142" : 29.223, + "99.8476645570998" : 29.273, + "99.84864704066761" : 29.326, + "99.84961131476746" : 29.384, + "99.85059876455381" : 29.434, + "99.85157048798146" : 29.485, + "99.85254469451839" : 29.531, + "99.85351972875839" : 29.592, + "99.854518766388" : 29.671, + "99.85547559116003" : 29.724, + "99.85645145310313" : 29.79, + "99.85742565964004" : 29.873, + "99.8584056600986" : 29.958, + "99.85938152204169" : 30.048, + "99.86035821168788" : 30.128, + "99.86133407363097" : 30.196, + "99.86231159098026" : 30.277, + "99.86328662522027" : 30.34, + "99.86427076419426" : 30.398, + "99.865243315325" : 30.466, + "99.86623324822062" : 30.527, + "99.86720000542974" : 30.592, + "99.86818166129446" : 30.638, + "99.86914179687885" : 30.697, + "99.87012428044666" : 30.776, + "99.87109848698358" : 30.855, + "99.87207931514521" : 30.924, + "99.87305434938523" : 30.996, + "99.87402772821906" : 31.076, + "99.87500524556833" : 31.176, + "99.87598524602689" : 31.26, + "99.87695365864217" : 31.341, + "99.87793200369454" : 31.42, + "99.87890703793454" : 31.494, + "99.87988455528382" : 31.556, + "99.880870349664" : 31.636, + "99.8818462116071" : 31.709, + "99.88282290125328" : 31.772, + "99.88378965846239" : 31.847, + "99.88476965892094" : 31.936, + "99.8857488316764" : 32.015, + "99.88671889969787" : 32.1, + "99.88770138326568" : 32.189, + "99.88867476209951" : 32.288, + "99.88965641796423" : 32.394, + "99.89062814139189" : 32.482, + "99.89160483103807" : 32.567, + "99.89258400379353" : 32.646, + "99.89355903803353" : 32.736, + "99.89453903849208" : 32.813, + "99.89550993421665" : 32.881, + "99.89649407319064" : 32.942, + "99.89746165810284" : 33.038, + "99.89845159099846" : 33.141, + "99.89941420969213" : 33.256, + "99.90040165947848" : 33.357, + "99.90137255520304" : 33.484, + "99.90235007255231" : 33.568, + "99.90283427885996" : 33.618, + "99.90332262368305" : 33.667, + "99.90381262391233" : 33.709, + "99.90430510725086" : 33.748, + "99.90478848585542" : 33.807, + "99.90528262460015" : 33.856, + "99.90576765861088" : 33.897, + "99.90626014194943" : 33.952, + "99.9067418651478" : 33.984, + "99.90723931470488" : 34.021, + "99.90771607168472" : 34.055, + "99.908206071914" : 34.104, + "99.90869524444017" : 34.185, + "99.9091885554818" : 34.247, + "99.90967110638327" : 34.3, + "99.910165245128" : 34.36, + "99.9106453129202" : 34.416, + "99.91113696855564" : 34.466, + "99.91162448567565" : 34.524, + "99.91211034738947" : 34.57, + "99.91260614154038" : 34.609, + "99.91308869244183" : 34.658, + "99.91357455415566" : 34.7, + "99.91406372668185" : 34.775, + "99.91455952083275" : 34.819, + "99.91504538254657" : 34.881, + "99.91552958885421" : 34.943, + "99.91603117692675" : 35.004, + "99.91650876160968" : 35.064, + "99.91699876183895" : 35.121, + "99.91748793436513" : 35.182, + "99.91797296837586" : 35.236, + "99.9184580023866" : 35.297, + "99.91895048572515" : 35.34, + "99.91943800284514" : 35.395, + "99.91992551996515" : 35.447, + "99.92041303708515" : 35.521, + "99.92090220961134" : 35.565, + "99.92139055443444" : 35.634, + "99.92187807155443" : 35.7, + "99.92237221029916" : 35.771, + "99.92285310579445" : 35.828, + "99.92334310602372" : 35.91, + "99.92383807247153" : 35.968, + "99.92432145107608" : 36.011, + "99.92481558982081" : 36.067, + "99.92529731301919" : 36.123, + "99.92578648554536" : 36.172, + "99.92627234725919" : 36.267, + "99.92676317519155" : 36.321, + "99.92724986460847" : 36.374, + "99.92774317565011" : 36.423, + "99.92822407114538" : 36.469, + "99.92871407137466" : 36.533, + "99.92920241619775" : 36.605, + "99.92968827791158" : 36.688, + "99.93018076125011" : 36.777, + "99.93066413985467" : 36.861, + "99.93115496778704" : 36.967, + "99.93164248490704" : 37.084, + "99.9321341405425" : 37.164, + "99.93262000225631" : 37.205, + "99.93310669167323" : 37.261, + "99.93359420879324" : 37.342, + "99.9340858644287" : 37.441, + "99.93457172614251" : 37.51, + "99.93506503718415" : 37.57, + "99.93555420971033" : 37.636, + "99.93603841601798" : 37.709, + "99.93652510543488" : 37.79, + "99.93701427796107" : 37.87, + "99.93750427819035" : 37.971, + "99.93798848449799" : 38.111, + "99.93847931243036" : 38.23, + "99.93896600184726" : 38.309, + "99.93945682977963" : 38.405, + "99.93994600230582" : 38.499, + "99.94043434712891" : 38.582, + "99.940922691952" : 38.641, + "99.94140772596273" : 38.725, + "99.94189607078583" : 38.802, + "99.94238524331202" : 38.903, + "99.94287276043202" : 39.013, + "99.94336276066129" : 39.132, + "99.94385276089056" : 39.271, + "99.94433613949512" : 39.382, + "99.94482779513058" : 39.48, + "99.94531365684439" : 39.57, + "99.94580282937058" : 39.662, + "99.9462895187875" : 39.765, + "99.94677786361059" : 39.839, + "99.94726703613678" : 39.946, + "99.94775538095986" : 40.055, + "99.94824538118914" : 40.127, + "99.94873207060606" : 40.24, + "99.9492245539446" : 40.391, + "99.94970710484606" : 40.51, + "99.95019876048151" : 40.595, + "99.95068627760152" : 40.689, + "99.95117213931535" : 40.796, + "99.95141631172689" : 40.836, + "99.95166379495079" : 40.88, + "99.95190548425307" : 40.939, + "99.95214882896153" : 40.989, + "99.95239465677926" : 41.066, + "99.95264214000316" : 41.135, + "99.95288300160234" : 41.196, + "99.95312551860772" : 41.244, + "99.9533746572378" : 41.291, + "99.95361469113391" : 41.341, + "99.95386051895163" : 41.38, + "99.95410303595699" : 41.422, + "99.95434638066546" : 41.458, + "99.95459138078009" : 41.515, + "99.95484051941017" : 41.646, + "99.9550863472279" : 41.706, + "99.955326381124" : 41.744, + "99.95556807042628" : 41.81, + "99.95581058743164" : 41.882, + "99.95605724295245" : 41.93, + "99.9563022430671" : 41.964, + "99.95654393236937" : 42.02, + "99.95679307099947" : 42.063, + "99.95703310489556" : 42.115, + "99.95728058811946" : 42.151, + "99.95752227742175" : 42.183, + "99.9577656221302" : 42.273, + "99.95800896683866" : 42.375, + "99.9582539669533" : 42.442, + "99.95849731166174" : 42.525, + "99.95874396718257" : 42.563, + "99.95898482878175" : 42.603, + "99.95923313970874" : 42.693, + "99.9594773121203" : 42.81, + "99.95972148453184" : 42.875, + "99.95996234613104" : 42.961, + "99.96020900165185" : 43.031, + "99.96045151865721" : 43.083, + "99.96069569106876" : 43.137, + "99.96093903577722" : 43.194, + "99.96118486359495" : 43.227, + "99.96142903600649" : 43.267, + "99.96167155301185" : 43.37, + "99.96191489772032" : 43.447, + "99.96216072553804" : 43.504, + "99.9624032425434" : 43.586, + "99.96264741495496" : 43.631, + "99.96289820899122" : 43.672, + "99.96313493207496" : 43.71, + "99.96338241529887" : 43.768, + "99.96362410460114" : 43.904, + "99.96387158782505" : 43.998, + "99.96412238186132" : 44.066, + "99.96435827724197" : 44.106, + "99.96460410505969" : 44.159, + "99.96484744976814" : 44.19, + "99.96509327758588" : 44.228, + "99.96533248377888" : 44.286, + "99.96557748389351" : 44.314, + "99.96582248400816" : 44.356, + "99.96606582871661" : 44.423, + "99.96630917342507" : 44.471, + "99.96655748435207" : 44.548, + "99.96679751824816" : 44.642, + "99.96704169065971" : 44.739, + "99.96728751847743" : 44.778, + "99.96753417399826" : 44.825, + "99.9677783464098" : 44.88, + "99.9680258296337" : 44.978, + "99.96826172501436" : 45.087, + "99.96850672512899" : 45.183, + "99.96875172524364" : 45.247, + "99.96899755306136" : 45.291, + "99.96924007006672" : 45.328, + "99.96948341477518" : 45.361, + "99.9697292425929" : 45.4, + "99.96997341500445" : 45.437, + "99.97022089822836" : 45.485, + "99.97046175982754" : 45.53, + "99.97070344912983" : 45.622, + "99.97094762154137" : 45.691, + "99.971192621656" : 45.775, + "99.97143679406756" : 45.896, + "99.9716809664791" : 46.005, + "99.97192431118756" : 46.142, + "99.97217013900529" : 46.261, + "99.97241596682301" : 46.324, + "99.97265765612529" : 46.394, + "99.97290596705228" : 46.443, + "99.97314931176074" : 46.516, + "99.97339348417229" : 46.569, + "99.97363600117765" : 46.63, + "99.97387934588612" : 46.722, + "99.97412517370384" : 46.777, + "99.97436603530302" : 46.879, + "99.97461103541767" : 46.972, + "99.97485438012612" : 47.085, + "99.97509855253767" : 47.155, + "99.97534686346467" : 47.26, + "99.97558606965767" : 47.387, + "99.97571022512118" : 47.43, + "99.97583520828776" : 47.461, + "99.9759560529389" : 47.484, + "99.9760802084024" : 47.505, + "99.97620105305353" : 47.519, + "99.97631941459541" : 47.552, + "99.97644191465272" : 47.603, + "99.97656441471004" : 47.646, + "99.97668774247045" : 47.663, + "99.97681603644939" : 47.682, + "99.97693439799126" : 47.697, + "99.97705193183005" : 47.762, + "99.97717608729354" : 47.827, + "99.9772952765385" : 47.874, + "99.97741777659581" : 47.976, + "99.97754358746549" : 48.014, + "99.97766525981973" : 48.044, + "99.9777836213616" : 48.107, + "99.97790777682509" : 48.155, + "99.97802779377314" : 48.224, + "99.97815029383045" : 48.265, + "99.97827196618469" : 48.334, + "99.97839363853892" : 48.413, + "99.97851613859623" : 48.495, + "99.97863863865355" : 48.528, + "99.97876031100778" : 48.564, + "99.97888446647129" : 48.592, + "99.97900944963787" : 48.612, + "99.97912781117974" : 48.628, + "99.97924948353396" : 48.643, + "99.97937363899746" : 48.66, + "99.97949365594552" : 48.7, + "99.97961615600283" : 48.734, + "99.97974196687251" : 48.775, + "99.97985950071129" : 48.789, + "99.9799820007686" : 48.824, + "99.98010284541974" : 48.881, + "99.98022700088325" : 48.954, + "99.98034784553438" : 48.986, + "99.98046951788861" : 49.026, + "99.98059201794592" : 49.12, + "99.98071534570633" : 49.168, + "99.98083784576366" : 49.222, + "99.9809586904148" : 49.321, + "99.98107953506593" : 49.377, + "99.98120782904488" : 49.401, + "99.98132536288365" : 49.428, + "99.98144537983171" : 49.459, + "99.98156870759212" : 49.489, + "99.98168955224325" : 49.558, + "99.98181205230057" : 49.604, + "99.9819337246548" : 49.661, + "99.98205622471212" : 49.704, + "99.98218038017562" : 49.738, + "99.98230039712367" : 49.772, + "99.98242289718098" : 49.836, + "99.98254622494139" : 49.891, + "99.98266624188945" : 49.924, + "99.98278874194676" : 49.958, + "99.98291206970717" : 50.001, + "99.98303622517066" : 50.038, + "99.98315789752489" : 50.064, + "99.98327956987913" : 50.097, + "99.98340041453027" : 50.193, + "99.98352208688449" : 50.262, + "99.98364293153563" : 50.384, + "99.98376708699912" : 50.476, + "99.98388875935335" : 50.514, + "99.98401043170759" : 50.544, + "99.984133759468" : 50.577, + "99.98425543182222" : 50.631, + "99.98437544877027" : 50.68, + "99.98449877653067" : 50.766, + "99.98462210429109" : 50.822, + "99.9847446043484" : 50.865, + "99.98486544899954" : 50.92, + "99.98498794905686" : 50.999, + "99.9851079660049" : 51.038, + "99.98523129376532" : 51.095, + "99.98535379382264" : 51.127, + "99.98547381077069" : 51.189, + "99.98560376015581" : 51.214, + "99.98571881088532" : 51.242, + "99.98584131094265" : 51.271, + "99.98596215559378" : 51.354, + "99.9860846556511" : 51.392, + "99.98620715570841" : 51.455, + "99.986332138875" : 51.544, + "99.98645050041688" : 51.609, + "99.98657548358347" : 51.65, + "99.98669467282842" : 51.749, + "99.98681717288574" : 51.788, + "99.98693884523996" : 51.88, + "99.98706134529729" : 52.011, + "99.98718384535461" : 52.087, + "99.98730551770883" : 52.14, + "99.98742719006306" : 52.214, + "99.98755051782346" : 52.298, + "99.98767219017769" : 52.331, + "99.98779469023502" : 52.391, + "99.98785428485749" : 52.433, + "99.98791553488616" : 52.481, + "99.98797844032099" : 52.518, + "99.98803803494347" : 52.538, + "99.98809928497214" : 52.596, + "99.98816053500079" : 52.627, + "99.98822178502945" : 52.65, + "99.98828137965192" : 52.714, + "99.98834594049295" : 52.737, + "99.98840470741234" : 52.759, + "99.9884651297379" : 52.788, + "99.98852555206348" : 52.829, + "99.98858680209213" : 52.923, + "99.98864970752697" : 52.939, + "99.98871012985255" : 52.968, + "99.9887713798812" : 52.999, + "99.98883594072223" : 53.048, + "99.98889222453234" : 53.142, + "99.988953474561" : 53.169, + "99.98901389688658" : 53.206, + "99.98907597461832" : 53.356, + "99.98913639694389" : 53.4, + "99.98919930237872" : 53.438, + "99.98925806929812" : 53.462, + "99.98931931932678" : 53.502, + "99.98938222476161" : 53.548, + "99.98944347479028" : 53.576, + "99.98950389711584" : 53.605, + "99.98956431944141" : 53.63, + "99.98962474176699" : 53.66, + "99.98968516409255" : 53.689, + "99.9897472418243" : 53.759, + "99.98980766414986" : 53.905, + "99.98986891417853" : 53.958, + "99.9899301642072" : 54.09, + "99.98999058653276" : 54.118, + "99.99005266426451" : 54.217, + "99.99011308659007" : 54.255, + "99.99017516432183" : 54.29, + "99.99023475894431" : 54.312, + "99.99029600897296" : 54.545, + "99.99035808670472" : 54.593, + "99.99042016443646" : 54.659, + "99.99047893135585" : 54.706, + "99.99054100908761" : 54.741, + "99.99060060371008" : 54.762, + "99.99066350914492" : 54.784, + "99.9907231037674" : 54.851, + "99.99078435379606" : 54.924, + "99.99084560382472" : 54.981, + "99.99090768155646" : 55.112, + "99.99096810388204" : 55.131, + "99.99103597553541" : 55.152, + "99.99108894853318" : 55.29, + "99.991151853968" : 55.344, + "99.99121144859049" : 55.37, + "99.99127269861916" : 55.415, + "99.99133312094472" : 55.451, + "99.99139602637956" : 55.469, + "99.99145562100203" : 55.58, + "99.99151769873379" : 55.673, + "99.99157812105936" : 55.692, + "99.9916410264942" : 55.714, + "99.99170062111668" : 55.742, + "99.99176104344224" : 55.787, + "99.991823121174" : 55.85, + "99.99188437120266" : 55.873, + "99.99194396582513" : 55.903, + "99.99200769896306" : 56.006, + "99.99206563817935" : 56.21, + "99.99212771591111" : 56.251, + "99.99218979364286" : 56.29, + "99.99224856056225" : 56.39, + "99.99231394910636" : 56.437, + "99.99237188832265" : 56.586, + "99.99243231064823" : 56.691, + "99.9924927329738" : 56.759, + "99.99255398300245" : 56.789, + "99.99261854384348" : 56.808, + "99.99267648305977" : 56.843, + "99.99273690538534" : 56.948, + "99.99280063852328" : 56.972, + "99.99286188855193" : 56.989, + "99.99292148317441" : 57.005, + "99.99298107779688" : 57.029, + "99.99304315552864" : 57.046, + "99.99310771636966" : 57.063, + "99.99316648328904" : 57.08, + "99.99322773331771" : 57.1, + "99.99328732794018" : 57.117, + "99.99334940567194" : 57.137, + "99.99340900029442" : 57.321, + "99.99347025032307" : 57.358, + "99.99353150035174" : 57.381, + "99.9935919226773" : 57.462, + "99.99365565581523" : 57.516, + "99.99371525043772" : 57.521, + "99.99377484506019" : 57.573, + "99.99383692279194" : 57.612, + "99.99389651741441" : 57.692, + "99.99392714242875" : 57.797, + "99.99395942284926" : 57.824, + "99.9939892201605" : 57.842, + "99.99402067287792" : 57.858, + "99.99404964248606" : 57.872, + "99.99408109520348" : 57.892, + "99.9941125479209" : 57.961, + "99.99414234523215" : 58.011, + "99.99417297024648" : 58.023, + "99.99420525066698" : 58.034, + "99.99423422027513" : 58.044, + "99.99426484528946" : 58.061, + "99.9942946426007" : 58.079, + "99.9943269230212" : 58.097, + "99.99435506492627" : 58.109, + "99.99438734534678" : 58.116, + "99.99441962576729" : 58.12, + "99.99444776767236" : 58.127, + "99.99447756498358" : 58.148, + "99.994509017701" : 58.16, + "99.99453964271534" : 58.169, + "99.99456944002658" : 58.183, + "99.99460006504091" : 58.196, + "99.99462986235214" : 58.21, + "99.99466131506956" : 58.216, + "99.9946919400839" : 58.221, + "99.99472256509823" : 58.228, + "99.99475153470638" : 58.236, + "99.99478547053306" : 58.244, + "99.99481444014121" : 58.255, + "99.99484258204627" : 58.376, + "99.9948740347637" : 58.396, + "99.99490465977803" : 58.434, + "99.99493611249544" : 58.453, + "99.99496508210359" : 58.486, + "99.99499570711792" : 58.574, + "99.99502633213226" : 58.606, + "99.99505695714659" : 58.629, + "99.9950875821609" : 58.647, + "99.99511737947215" : 58.672, + "99.99514883218957" : 58.681, + "99.9951794572039" : 58.692, + "99.99521173762442" : 58.701, + "99.99523987952946" : 58.714, + "99.9952705045438" : 58.732, + "99.99530030185504" : 58.788, + "99.99533092686937" : 58.805, + "99.9953623795868" : 58.815, + "99.99539548771038" : 58.828, + "99.99542280191235" : 58.839, + "99.99545425462978" : 58.907, + "99.9954857073472" : 58.939, + "99.99551467695535" : 58.957, + "99.99554447426658" : 58.991, + "99.99557758239018" : 59.004, + "99.99560572429525" : 59.014, + "99.99563717701267" : 59.033, + "99.99566697432391" : 59.051, + "99.99569842704132" : 59.068, + "99.99572822435256" : 59.08, + "99.99575967706998" : 59.091, + "99.99578864667814" : 59.116, + "99.99582092709865" : 59.126, + "99.99585072440988" : 59.133, + "99.9958821771273" : 59.144, + "99.99591362984472" : 59.152, + "99.99594177174978" : 59.162, + "99.9959732244672" : 59.184, + "99.99600467718462" : 59.194, + "99.99603612990204" : 59.202, + "99.99606344410401" : 59.209, + "99.99609655222761" : 59.221, + "99.99612552183576" : 59.234, + "99.996155319147" : 59.25, + "99.99618594416133" : 59.3, + "99.99621739687875" : 59.34, + "99.99624719418999" : 59.476, + "99.99627699150123" : 59.494, + "99.99631092732791" : 59.503, + "99.99634155234224" : 59.509, + "99.99637383276276" : 59.514, + "99.99639949155855" : 59.52, + "99.99643177197906" : 59.528, + "99.99646156929029" : 59.537, + "99.99649053889844" : 59.55, + "99.99652116391277" : 59.57, + "99.99655344433329" : 59.601, + "99.99658241394144" : 59.631, + "99.99661303895576" : 59.726, + "99.99664366397009" : 59.749, + "99.99667428898442" : 59.772, + "99.99670574170185" : 59.795, + "99.99673471131" : 59.808, + "99.99676533632432" : 59.957, + "99.99679596133865" : 59.999, + "99.99682658635298" : 60.059, + "99.99685721136731" : 60.143, + "99.99688783638165" : 60.192, + "99.99691928909905" : 60.22, + "99.9969490864103" : 60.232, + "99.99696481276901" : 60.237, + "99.99698053912772" : 60.243, + "99.99699461008025" : 60.249, + "99.99701199184514" : 60.254, + "99.99702523509458" : 60.258, + "99.99704261685947" : 60.264, + "99.9970558601089" : 60.272, + "99.9970724141707" : 60.28, + "99.99708565742014" : 60.285, + "99.99710221148194" : 60.289, + "99.99712373176229" : 60.291, + "99.99714194123027" : 60.292, + "99.99715021826117" : 60.293, + "99.99716346151061" : 60.297, + "99.99717753246314" : 60.304, + "99.99719243111876" : 60.317, + "99.99720898518055" : 60.33, + "99.99722305613308" : 60.338, + "99.99723878249179" : 60.349, + "99.9972545088505" : 60.361, + "99.99727023520921" : 60.374, + "99.99728430616175" : 60.395, + "99.99729920481737" : 60.405, + "99.99731493117608" : 60.578, + "99.99733065753479" : 60.603, + "99.9973463838935" : 60.611, + "99.99736045484602" : 60.619, + "99.99737618120473" : 60.632, + "99.99739107986035" : 60.648, + "99.99740680621906" : 60.858, + "99.99742170487468" : 60.878, + "99.9974366035303" : 60.896, + "99.99745232988901" : 61.03, + "99.99746722854464" : 61.049, + "99.99748295490335" : 61.063, + "99.99749950896515" : 61.074, + "99.99751357991767" : 61.082, + "99.99752847857329" : 61.104, + "99.997544204932" : 61.246, + "99.99755910358762" : 61.264, + "99.99757400224324" : 61.276, + "99.99759055630504" : 61.289, + "99.99760628266375" : 61.302, + "99.99762035361628" : 61.311, + "99.99763690767809" : 61.318, + "99.99765015092753" : 61.323, + "99.99766587728622" : 61.329, + "99.99768077594184" : 61.334, + "99.99769650230056" : 61.339, + "99.99771222865927" : 61.344, + "99.99772795501798" : 61.347, + "99.99774202597051" : 61.361, + "99.99775775232922" : 61.902, + "99.99777265098484" : 61.915, + "99.99778754964046" : 61.939, + "99.99780327599917" : 61.982, + "99.99781817465478" : 62.0, + "99.9978339010135" : 62.02, + "99.99784879966911" : 62.197, + "99.99786452602783" : 62.218, + "99.99787942468345" : 62.238, + "99.99789432333907" : 62.383, + "99.99791501591632" : 62.396, + "99.99792577605649" : 62.397, + "99.99794398552447" : 62.398, + "99.99795640107082" : 62.401, + "99.99797129972643" : 62.425, + "99.99798619838205" : 62.439, + "99.99800854636548" : 62.443, + "99.99802758353655" : 62.444, + "99.99803751597364" : 62.445, + "99.99804744841072" : 62.456, + "99.99806234706634" : 62.478, + "99.99807807342505" : 63.009, + "99.99809297208067" : 63.03, + "99.99810869843937" : 63.053, + "99.99812359709499" : 63.31, + "99.99813849575061" : 63.32, + "99.99815422210932" : 63.34, + "99.99816912076494" : 63.368, + "99.99818484712365" : 63.457, + "99.99820140118545" : 63.463, + "99.99822126605962" : 63.499, + "99.99823202619979" : 63.501, + "99.99824692485541" : 63.507, + "99.99826513432338" : 63.509, + "99.99827589446355" : 63.555, + "99.99829162082226" : 64.136, + "99.99830651947788" : 64.16, + "99.99832224583659" : 64.185, + "99.99833714449221" : 64.462, + "99.99835287085092" : 64.488, + "99.99836776950654" : 64.515, + "99.99838266816217" : 64.541, + "99.99840584384869" : 64.545, + "99.99841329317648" : 64.548, + "99.9984530229248" : 64.56, + "99.99846295536189" : 64.561, + "99.99847454320515" : 65.252, + "99.99848199253296" : 65.264, + "99.99848944186077" : 65.275, + "99.99849771889167" : 65.288, + "99.99850516821948" : 65.301, + "99.99851261754729" : 65.311, + "99.9985200668751" : 65.569, + "99.99854820878016" : 65.571, + "99.99856476284195" : 65.572, + "99.99856724595122" : 65.573, + "99.99857800609139" : 65.6, + "99.99859042163774" : 65.601, + "99.998611114215" : 65.602, + "99.99861276962118" : 65.603, + "99.9986193912459" : 65.949, + "99.9986268405737" : 65.963, + "99.9986351176046" : 66.378, + "99.99864256693242" : 66.389, + "99.99865001626023" : 66.407, + "99.99865746558804" : 66.418, + "99.99866491491585" : 66.429, + "99.99867319194675" : 66.438, + "99.99868064127456" : 66.45, + "99.99869057371164" : 66.617, + "99.99869719533636" : 66.621, + "99.99870381696108" : 66.628, + "99.99871623250742" : 66.649, + "99.99872119872596" : 66.65, + "99.99872699264759" : 66.652, + "99.99873361427231" : 66.657, + "99.99874189130321" : 67.036, + "99.99874934063102" : 67.049, + "99.99875678995883" : 67.062, + "99.99876423928664" : 67.068, + "99.99877251631754" : 67.075, + "99.99878244875462" : 67.077, + "99.99878741497317" : 67.078, + "99.99879734741025" : 67.08, + "99.99880396903497" : 67.082, + "99.99881059065969" : 67.085, + "99.9988180399875" : 67.096, + "99.99882548931531" : 67.11, + "99.99883293864312" : 67.511, + "99.99884038797093" : 67.522, + "99.99884866500183" : 67.534, + "99.99885611432964" : 67.549, + "99.99886356365745" : 67.562, + "99.99887101298525" : 67.58, + "99.99888260082851" : 68.14, + "99.99889336096868" : 68.141, + "99.99889418867177" : 68.142, + "99.99890329340576" : 68.144, + "99.99891074273357" : 68.145, + "99.99892150287374" : 68.147, + "99.9989248136861" : 68.148, + "99.99893640152936" : 68.15, + "99.9989413677479" : 68.151, + "99.99895130018498" : 68.154, + "99.99895543870043" : 68.155, + "99.99896288802825" : 68.158, + "99.99897033735606" : 68.643, + "99.99897778668387" : 68.655, + "99.99898606371477" : 68.667, + "99.99899351304258" : 68.678, + "99.99900096237039" : 68.687, + "99.9990084116982" : 68.695, + "99.99901586102601" : 68.707, + "99.9990241380569" : 69.206, + "99.99903407049398" : 69.21, + "99.99904400293106" : 69.212, + "99.99905227996196" : 69.213, + "99.99906221239904" : 69.214, + "99.99907131713303" : 69.216, + "99.99907711105466" : 69.217, + "99.99908621578865" : 69.219, + "99.99909449281955" : 69.222, + "99.99910111444427" : 69.223, + "99.99910773606899" : 69.226, + "99.9991151853968" : 70.149, + "99.99912263472461" : 70.284, + "99.99913091175551" : 70.288, + "99.99913836108333" : 70.292, + "99.99914663811423" : 70.294, + "99.99915325973895" : 70.296, + "99.99916815839455" : 70.298, + "99.99917643542545" : 70.299, + "99.99918388475326" : 70.3, + "99.99919216178417" : 70.303, + "99.99919961111198" : 70.305, + "99.99920706043979" : 70.309, + "99.9992145097676" : 70.315, + "99.99922195909541" : 71.219, + "99.99923023612631" : 71.23, + "99.99923851315721" : 71.24, + "99.99924099626648" : 71.243, + "99.99924513478193" : 71.249, + "99.99924927329738" : 71.257, + "99.99925258410974" : 71.263, + "99.99925755032828" : 71.268, + "99.99926168884373" : 71.272, + "99.999264171953" : 71.356, + "99.99926913817154" : 71.358, + "99.9992724489839" : 71.36, + "99.99928238142098" : 71.361, + "99.99929314156115" : 71.362, + "99.9993055571075" : 71.363, + "99.99931548954459" : 71.364, + "99.99932045576311" : 71.365, + "99.99932542198165" : 71.366, + "99.99933287130946" : 71.367, + "99.9993386652311" : 71.368, + "99.99934114834036" : 71.37, + "99.99934445915272" : 71.378, + "99.99934942537126" : 71.381, + "99.99935273618362" : 71.382, + "99.99935604699598" : 71.384, + "99.99935935780834" : 71.387, + "99.9993634963238" : 72.333, + "99.99936680713616" : 72.338, + "99.9993709456516" : 72.344, + "99.99937508416706" : 72.349, + "99.9993792226825" : 72.353, + "99.99938253349487" : 72.356, + "99.99938584430723" : 72.36, + "99.99938998282268" : 72.364, + "99.99939412133813" : 72.375, + "99.99939825985358" : 72.38, + "99.99940157066594" : 72.386, + "99.99940653688448" : 72.431, + "99.99941150310302" : 72.432, + "99.9994131585092" : 72.433, + "99.99941646932156" : 72.434, + "99.99942309094628" : 72.436, + "99.99942474635246" : 72.437, + "99.99942888486791" : 72.44, + "99.99943302338336" : 72.443, + "99.9994379896019" : 72.445, + "99.99944212811735" : 72.446, + "99.99944378352353" : 72.447, + "99.99944792203898" : 72.448, + "99.99945123285134" : 72.451, + "99.99945702677297" : 72.453, + "99.99945950988224" : 72.454, + "99.9994636483977" : 72.456, + "99.99946778691314" : 72.457, + "99.99947275313167" : 72.458, + "99.99947771935021" : 72.459, + "99.99948516867802" : 72.46, + "99.99948930719347" : 72.463, + "99.99949344570892" : 72.473, + "99.99949923963055" : 72.477, + "99.99950089503673" : 73.45, + "99.99950420584909" : 73.452, + "99.99950834436454" : 73.455, + "99.99951248288" : 73.459, + "99.99951662139544" : 73.464, + "99.9995199322078" : 73.469, + "99.99952324302016" : 73.473, + "99.99952738153561" : 73.479, + "99.99953152005106" : 73.485, + "99.99953483086342" : 73.489, + "99.99953896937888" : 73.496, + "99.99954228019124" : 73.501, + "99.99954641870669" : 73.509, + "99.99955055722214" : 74.569, + "99.9995538680345" : 74.574, + "99.99955883425304" : 74.58, + "99.9995613173623" : 74.584, + "99.99956545587776" : 74.591, + "99.99956959439321" : 74.597, + "99.99957290520557" : 74.602, + "99.99957704372102" : 74.608, + "99.99958118223647" : 74.613, + "99.99958532075192" : 74.619, + "99.99958863156428" : 74.625, + "99.99959277007973" : 74.633, + "99.99959608089209" : 75.603, + "99.99960021940754" : 75.618, + "99.99960435792299" : 75.661, + "99.99960766873535" : 75.667, + "99.99961097954771" : 75.673, + "99.99961594576625" : 75.679, + "99.9996200842817" : 75.682, + "99.99962091198479" : 75.683, + "99.99962256739096" : 75.684, + "99.99962505050023" : 75.688, + "99.99962670590641" : 75.691, + "99.99962918901568" : 75.694, + "99.99963001671877" : 75.695, + "99.99963249982804" : 75.698, + "99.99963415523422" : 75.699, + "99.9996358106404" : 75.7, + "99.99963994915585" : 75.703, + "99.99964160456203" : 75.704, + "99.9996440876713" : 75.706, + "99.99964657078057" : 75.707, + "99.99964822618675" : 75.708, + "99.99965070929602" : 75.709, + "99.9996523647022" : 75.71, + "99.99965319240529" : 75.711, + "99.99965567551456" : 75.713, + "99.99965733092074" : 75.715, + "99.99965898632692" : 75.718, + "99.9996606417331" : 75.72, + "99.99966312484237" : 75.724, + "99.99966478024855" : 75.727, + "99.99966643565473" : 75.729, + "99.999668918764" : 75.732, + "99.99967057417018" : 75.735, + "99.99967222957636" : 75.737, + "99.99967388498254" : 75.74, + "99.99967636809181" : 75.744, + "99.99967802349799" : 75.748, + "99.99967967890417" : 75.75, + "99.99968216201344" : 75.754, + "99.99968381741962" : 75.757, + "99.9996854728258" : 75.759, + "99.99968878363816" : 75.761, + "99.99968961134125" : 75.762, + "99.99969126674743" : 75.764, + "99.99969292215361" : 76.773, + "99.99969540526288" : 76.776, + "99.99969706066906" : 76.777, + "99.99969871607524" : 76.78, + "99.9997020268876" : 76.784, + "99.9997028545907" : 76.785, + "99.99970450999687" : 76.787, + "99.99970699310614" : 76.791, + "99.99970864851232" : 76.793, + "99.9997111316216" : 76.796, + "99.99971278702778" : 76.799, + "99.99971444243396" : 76.8, + "99.99971609784014" : 76.803, + "99.99971775324632" : 76.805, + "99.99972023635559" : 76.808, + "99.99972189176177" : 76.81, + "99.99972354716795" : 76.813, + "99.99972603027722" : 76.816, + "99.9997276856834" : 76.818, + "99.99973016879267" : 76.821, + "99.99973182419885" : 76.823, + "99.99973347960503" : 76.826, + "99.9997359627143" : 76.828, + "99.99973679041739" : 76.83, + "99.99973927352666" : 76.833, + "99.99974092893284" : 76.835, + "99.99974258433902" : 76.837, + "99.99974506744829" : 76.84, + "99.99974672285447" : 76.841, + "99.99974837826065" : 76.844, + "99.99975086136992" : 76.847, + "99.9997525167761" : 77.229, + "99.99975417218228" : 77.231, + "99.99975665529155" : 77.235, + "99.99975831069773" : 80.584, + "99.99975996610391" : 80.587, + "99.99976162151009" : 80.59, + "99.99976410461936" : 80.595, + "99.99976576002554" : 80.598, + "99.99976741543172" : 80.607, + "99.99976989854099" : 80.611, + "99.99977155394717" : 80.614, + "99.99977320935334" : 80.617, + "99.9997756924626" : 80.622, + "99.99977734786879" : 80.626, + "99.99977900327497" : 80.63, + "99.99978065868115" : 80.635, + "99.99978314179042" : 80.64, + "99.9997847971966" : 80.643, + "99.99978645260278" : 80.647, + "99.99978893571205" : 80.652, + "99.99979059111823" : 80.656, + "99.99979224652441" : 80.659, + "99.99979472963368" : 80.662, + "99.99979638503986" : 80.664, + "99.99979804044604" : 80.671, + "99.99980052355531" : 80.675, + "99.99980217896149" : 80.683, + "99.99980383436767" : 80.784, + "99.99980548977385" : 80.85, + "99.99980797288312" : 81.168, + "99.9998096282893" : 81.171, + "99.99981045599239" : 81.172, + "99.99981128369548" : 81.173, + "99.99981293910166" : 81.175, + "99.99981376680475" : 81.177, + "99.99981459450784" : 81.178, + "99.99981624991402" : 81.18, + "99.99981707761711" : 81.182, + "99.9998179053202" : 81.183, + "99.99981956072638" : 81.186, + "99.99982038842947" : 81.187, + "99.99982121613256" : 81.188, + "99.99982204383565" : 81.189, + "99.99982287153874" : 81.191, + "99.99982369924183" : 81.193, + "99.99982452694492" : 81.194, + "99.9998261823511" : 81.196, + "99.99982701005419" : 81.198, + "99.99982783775728" : 81.199, + "99.99982866546037" : 81.2, + "99.99982949316346" : 81.201, + "99.99983032086655" : 81.202, + "99.99983197627273" : 81.205, + "99.99983280397582" : 81.207, + "99.99983363167891" : 81.208, + "99.999834459382" : 81.209, + "99.99983528708509" : 81.21, + "99.99983611478818" : 81.212, + "99.99983694249127" : 81.213, + "99.99983859789745" : 81.216, + "99.99983942560054" : 81.217, + "99.99984025330363" : 81.218, + "99.99984108100672" : 81.219, + "99.99984190870981" : 81.22, + "99.9998427364129" : 81.221, + "99.99984439181908" : 81.224, + "99.99984521952217" : 81.225, + "99.99984604722526" : 81.226, + "99.99984687492835" : 81.228, + "99.99984770263144" : 81.229, + "99.99984853033453" : 81.231, + "99.99984935803762" : 81.232, + "99.9998510134438" : 81.235, + "99.99985184114689" : 81.236, + "99.99985266884998" : 81.237, + "99.99985432425616" : 81.238, + "99.99985515195925" : 81.242, + "99.99985680736543" : 82.302, + "99.99985763506852" : 82.303, + "99.99985846277161" : 82.305, + "99.9998592904747" : 82.306, + "99.99986094588088" : 82.308, + "99.99986177358397" : 82.31, + "99.99986342899015" : 82.313, + "99.99986425669324" : 82.314, + "99.99986508439633" : 82.315, + "99.99986591209942" : 82.317, + "99.99986673980251" : 82.318, + "99.9998675675056" : 82.319, + "99.99986922291178" : 82.321, + "99.99987087831796" : 82.323, + "99.99987170602105" : 82.325, + "99.99987253372414" : 82.327, + "99.99987336142723" : 82.328, + "99.99987418913032" : 82.329, + "99.9998758445365" : 82.332, + "99.9998766722396" : 82.333, + "99.99987749994268" : 82.334, + "99.99987832764577" : 82.335, + "99.99987915534886" : 82.337, + "99.99987998305195" : 82.338, + "99.99988081075504" : 82.339, + "99.99988246616122" : 82.341, + "99.99988329386431" : 82.342, + "99.9998849492705" : 82.344, + "99.99988577697358" : 82.345, + "99.99988743237977" : 82.346, + "99.99988826008286" : 82.347, + "99.99988991548904" : 82.348, + "99.99989157089522" : 82.349, + "99.9998923985983" : 82.35, + "99.99989405400449" : 82.351, + "99.99989488170758" : 82.352, + "99.99989653711376" : 82.353, + "99.99989736481685" : 82.354, + "99.99989819251994" : 82.355, + "99.99989902022303" : 82.356, + "99.9999006756292" : 82.359, + "99.9999015033323" : 82.362, + "99.99990233103539" : 82.366, + "99.99990315873848" : 82.371, + "99.99990398644157" : 82.373, + "99.99990564184775" : 82.374, + "99.99990646955084" : 82.376, + "99.99990729725393" : 82.377, + "99.99990812495702" : 82.378, + "99.9999097803632" : 82.38, + "99.99991060806629" : 82.382, + "99.99991143576938" : 82.383, + "99.99991226347247" : 82.385, + "99.99991309117556" : 82.387, + "99.99991391887865" : 82.388, + "99.99991474658174" : 82.389, + "99.99991557428483" : 82.39, + "99.99991640198792" : 82.392, + "99.99991722969101" : 82.394, + "99.9999180573941" : 82.395, + "99.99991888509719" : 82.396, + "99.99991971280028" : 82.398, + "99.99992054050337" : 82.4, + "99.99992136820646" : 82.401, + "99.99992219590955" : 82.402, + "99.99992302361264" : 82.403, + "99.99992385131573" : 82.405, + "99.9999246790188" : 82.406, + "99.9999255067219" : 82.407, + "99.99992633442498" : 82.408, + "99.99992716212807" : 82.409, + "99.99992798983116" : 82.411, + "99.99992881753425" : 82.412, + "99.99992964523734" : 82.414, + "99.99993047294043" : 82.415, + "99.99993130064352" : 82.416, + "99.99993212834661" : 82.417, + "99.9999329560497" : 82.419, + "99.99993461145588" : 82.421, + "99.99993543915897" : 82.423, + "99.99993626686206" : 82.424, + "99.99993709456515" : 82.425, + "99.99993792226824" : 82.427, + "99.99993957767443" : 82.428, + "99.9999412330806" : 82.429, + "99.99994371618988" : 82.43, + "99.99994454389297" : 82.431, + "99.99994619929915" : 82.432, + "99.99994702700224" : 82.433, + "99.99994785470533" : 82.434, + "99.9999495101115" : 82.436, + "99.9999503378146" : 82.437, + "99.99995116551769" : 82.438, + "99.99995199322078" : 82.442, + "99.99995282092387" : 83.501, + "99.99995447633005" : 83.503, + "99.99995530403314" : 83.505, + "99.99995613173623" : 83.506, + "99.99995695943932" : 83.507, + "99.9999577871424" : 83.509, + "99.9999586148455" : 83.51, + "99.99995944254859" : 83.511, + "99.99996027025168" : 83.513, + "99.99996109795477" : 83.514, + "99.99996192565786" : 83.516, + "99.99996275336095" : 83.517, + "99.99996358106404" : 83.518, + "99.99996440876713" : 83.519, + "99.99996523647022" : 83.52, + "99.99996606417331" : 83.522, + "99.9999668918764" : 83.523, + "99.99996771957949" : 83.524, + "99.99996854728258" : 83.525, + "99.99996937498567" : 83.527, + "99.99997020268876" : 83.529, + "99.99997103039185" : 83.53, + "99.99997185809494" : 83.531, + "99.99997268579803" : 83.532, + "99.99997351350112" : 83.534, + "99.99997434120421" : 83.535, + "99.9999751689073" : 83.536, + "99.99997599661039" : 83.537, + "99.99997682431348" : 83.538, + "99.99997765201657" : 83.54, + "99.99997847971966" : 83.541, + "99.99997930742275" : 83.542, + "99.99998013512584" : 83.543, + "99.99998096282893" : 83.545, + "99.99998179053202" : 83.546, + "99.99998261823511" : 83.547, + "99.9999834459382" : 83.549, + "99.99998427364129" : 83.55, + "99.99998510134438" : 83.551, + "99.99998592904747" : 83.553, + "99.99998675675056" : 83.554, + "99.99998758445365" : 83.555, + "99.99998841215674" : 83.557, + "99.99998923985983" : 83.558, + "99.99999006756292" : 83.559, + "99.9999917229691" : 83.561, + "99.99999337837528" : 83.563, + "99.99999420607837" : 83.565, + "99.99999503378146" : 83.566, + "99.99999586148455" : 83.567, + "99.99999668918764" : 83.568, + "99.99999751689073" : 83.57, + "99.99999834459382" : 83.571, + "99.99999917229691" : 83.572, + "100.0" : 83.576 + }, + "endToEndLatencyAvg" : [ 13.017340324965136, 12.743609461139974, 13.113829268510676, 13.051599080423244, 12.776108921433849, 13.038054703884974, 12.785927301386918, 13.127496139165762, 13.028873247827098, 12.807649473746462, 13.072329081916635, 13.023656478201932, 12.99747900119766, 13.006654427040363, 12.993890564570242, 13.0558412749434, 12.92562315673194, 13.143819580605085, 13.004931928261236, 12.832482404594518, 13.055154994510543, 13.065679550859164, 13.395758743053074, 13.249674496301026, 13.139064143790812, 13.304665054658598, 13.158634048460437, 13.280645124434384, 13.288124982002584, 13.178630780696611, 13.014527291704857, 13.367730214331182, 13.220718786897596, 13.499536316109724, 13.32872185451829, 13.245441162008243, 13.015730003150871, 13.026763560077955, 13.174711959766249, 13.387312473977147, 13.360579639905016, 13.431050920877812, 13.193225380367855, 13.428492234511493, 13.273517931105758, 13.110700071195028, 13.02281152944049, 13.128769436340534, 13.24485976393045, 13.203790800372282, 13.334425002617921, 13.225921802032236, 13.129676100155926, 13.119236607378058, 13.077265337214627, 13.174259322688586, 13.106347705803438, 13.435433952062718, 13.386618187814001, 13.194563643177144 ], + "endToEndLatency50pct" : [ 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 14.0, 13.0, 14.0, 14.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 14.0, 13.0, 14.0 ], + "endToEndLatency75pct" : [ 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 16.0, 16.0, 16.0, 15.0, 16.0, 15.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0 ], + "endToEndLatency95pct" : [ 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 20.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 20.0, 20.0, 20.0, 19.0, 20.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 20.0, 20.0, 19.0 ], + "endToEndLatency99pct" : [ 24.0, 21.0, 31.0, 28.0, 21.0, 26.0, 21.0, 29.0, 27.0, 21.0, 27.0, 25.0, 24.0, 23.0, 25.0, 25.0, 22.0, 29.0, 22.0, 21.0, 25.0, 22.0, 31.0, 30.0, 25.0, 30.0, 27.0, 27.0, 29.0, 26.0, 22.0, 30.0, 26.0, 41.0, 29.0, 26.0, 21.0, 22.0, 24.0, 31.0, 30.0, 31.0, 22.0, 28.0, 25.0, 21.0, 21.0, 22.0, 25.0, 27.0, 28.0, 24.0, 21.0, 22.0, 21.0, 23.0, 21.0, 30.0, 29.0, 23.0 ], + "endToEndLatency999pct" : [ 61.0, 29.0, 64.0, 49.0, 33.0, 60.0, 34.0, 60.0, 59.0, 28.0, 56.0, 44.0, 57.0, 61.0, 39.0, 50.0, 62.0, 62.0, 73.0, 33.0, 38.0, 50.0, 72.0, 54.0, 66.0, 62.0, 58.0, 67.0, 42.0, 49.0, 39.0, 58.0, 55.0, 64.0, 59.0, 41.0, 35.0, 34.0, 55.0, 49.0, 51.0, 57.0, 52.0, 54.0, 42.0, 33.0, 27.0, 36.0, 45.0, 44.0, 52.0, 53.0, 43.0, 36.0, 37.0, 33.0, 38.0, 47.0, 54.0, 35.0 ], + "endToEndLatency9999pct" : [ 79.0, 34.0, 82.0, 55.0, 44.0, 110.0, 39.0, 70.0, 74.0, 32.0, 67.0, 55.0, 66.0, 83.0, 53.0, 68.0, 86.0, 73.0, 97.0, 40.0, 43.0, 72.0, 87.0, 74.0, 78.0, 70.0, 68.0, 76.0, 49.0, 60.0, 47.0, 68.0, 71.0, 75.0, 77.0, 45.0, 44.0, 42.0, 72.0, 58.0, 58.0, 73.0, 64.0, 67.0, 51.0, 38.0, 43.0, 42.0, 59.0, 50.0, 65.0, 70.0, 59.0, 45.0, 47.0, 40.0, 48.0, 57.0, 68.0, 44.0 ], + "endToEndLatencyMax" : [ 85.0, 35.0, 87.0, 60.0, 46.0, 113.0, 42.0, 78.0, 77.0, 36.0, 72.0, 56.0, 73.0, 89.0, 56.0, 73.0, 93.0, 76.0, 100.0, 42.0, 50.0, 74.0, 93.0, 74.0, 85.0, 75.0, 74.0, 85.0, 53.0, 65.0, 50.0, 70.0, 76.0, 78.0, 78.0, 50.0, 47.0, 47.0, 75.0, 62.0, 65.0, 77.0, 69.0, 72.0, 57.0, 40.0, 45.0, 45.0, 63.0, 56.0, 70.0, 73.0, 65.0, 47.0, 49.0, 42.0, 51.0, 64.0, 73.0, 46.0 ], + "aggregatedEndToEndLatencyQuantiles" : { + "0.02046066891032937" : 1.0, + "0.6627770123064562" : 2.0, + "3.24174255899506" : 3.0, + "6.007780153005476" : 4.0, + "8.824940862591308" : 5.0, + "10.706005483201016" : 6.0, + "12.101212197167676" : 7.0, + "13.763989399852136" : 8.0, + "15.962870230481625" : 9.0, + "18.981027068962536" : 10.0, + "25.395751791020377" : 11.0, + "37.22376493243315" : 12.0, + "52.11240658927404" : 13.0, + "65.1413506592546" : 14.0, + "74.75907601675283" : 15.0, + "82.23326260128347" : 16.0, + "88.25978008840939" : 17.0, + "92.86386101306574" : 18.0, + "95.90014514832794" : 19.0, + "97.67656311949158" : 20.0, + "98.44674064044004" : 21.0, + "98.71571247680399" : 22.0, + "98.85296011762117" : 23.0, + "98.96465737501164" : 24.0, + "99.06209531999798" : 25.0, + "99.14857245841" : 26.0, + "99.22568713774015" : 27.0, + "99.29464784444052" : 28.0, + "99.35628479214907" : 29.0, + "99.41106895948994" : 30.0, + "99.46171530232809" : 31.0, + "99.50505195759203" : 32.0, + "99.54742347915519" : 33.0, + "99.5847284626545" : 34.0, + "99.62062382120321" : 35.0, + "99.65028305856697" : 36.0, + "99.67839112907374" : 37.0, + "99.70266432442126" : 38.0, + "99.7255444494271" : 39.0, + "99.74598111415449" : 40.0, + "99.76473500288385" : 41.0, + "99.78272489641098" : 42.0, + "99.79944174051118" : 43.0, + "99.81539127848737" : 44.0, + "99.83098240918015" : 45.0, + "99.84528972995021" : 46.0, + "99.85927920222876" : 47.0, + "99.8716339068752" : 48.0, + "99.88111969779362" : 49.0, + "99.88975209862157" : 50.0, + "99.89799298294825" : 51.0, + "99.90493267501282" : 52.0, + "99.9113417918611" : 53.0, + "99.91863658028728" : 54.0, + "99.92529732719134" : 55.0, + "99.93185626325047" : 56.0, + "99.93785399806677" : 57.0, + "99.94289239329542" : 58.0, + "99.94805329263019" : 59.0, + "99.95255283533808" : 60.0, + "99.9569729159231" : 61.0, + "99.96072005165502" : 62.0, + "99.96490009041051" : 63.0, + "99.96905115860038" : 64.0, + "99.97288603375964" : 65.0, + "99.97634429156567" : 66.0, + "99.97900130629935" : 67.0, + "99.9811053970947" : 68.0, + "99.983109332506" : 69.0, + "99.98540297357363" : 70.0, + "99.98740608125448" : 71.0, + "99.98912776058347" : 72.0, + "99.99062181403964" : 73.0, + "99.99205461544277" : 74.0, + "99.99284840894109" : 75.0, + "99.99378539980668" : 76.0, + "99.9944674496947" : 77.0, + "99.9950336173202" : 78.0, + "99.99551949509237" : 79.0, + "99.99592094435899" : 80.0, + "99.99627521299016" : 81.0, + "99.9967552966492" : 82.0, + "99.9970855610974" : 83.0, + "99.9975524010693" : 84.0, + "99.99798695955378" : 85.0, + "99.99867480355493" : 86.0, + "99.99892726134117" : 87.0, + "99.99893967729787" : 88.0, + "99.99896947559394" : 89.0, + "99.99898851339421" : 90.0, + "99.999077080552" : 91.0, + "99.99915985359667" : 92.0, + "99.99927408039831" : 93.0, + "99.99935354252118" : 94.0, + "99.99941562230468" : 95.0, + "99.9994586642879" : 96.0, + "99.9995935843507" : 97.0, + "99.99959937846383" : 98.0, + "99.99965152548197" : 99.0, + "99.99969787838698" : 100.0, + "99.99972105483948" : 101.0, + "99.99975250859646" : 102.0, + "99.9997549917878" : 103.0, + "99.99975913044003" : 104.0, + "99.99976409682272" : 106.0, + "99.99983031525844" : 107.0, + "99.99983279844977" : 109.0, + "99.99983528164113" : 110.0, + "99.99983942029336" : 111.0, + "99.9999271597207" : 112.0, + "100.0" : 113.0 + }, + "aggregatedEndToEndLatencyAvg" : 13.142203163673507, + "aggregatedEndToEndLatency50pct" : 13.0, + "aggregatedEndToEndLatency75pct" : 16.0, + "aggregatedEndToEndLatency95pct" : 19.0, + "aggregatedEndToEndLatency99pct" : 25.0, + "aggregatedEndToEndLatency999pct" : 52.0, + "aggregatedEndToEndLatency9999pct" : 73.0, + "aggregatedEndToEndLatencyMax" : 113.0 +} \ No newline at end of file diff --git a/blog/results/pulsar/throughput/default-sync-colocated.json b/blog/results/pulsar/throughput/default-sync-colocated.json new file mode 100644 index 00000000..44268b76 --- /dev/null +++ b/blog/results/pulsar/throughput/default-sync-colocated.json @@ -0,0 +1,2739 @@ +{ + "workload" : "100-partitions-1000K-rate-4-producer", + "driver" : "Pulsar", + "publishRate" : [ 318542.94642923475, 315228.8362353819, 311398.76469528687, 313750.73813030665, 313497.8281793931, 311752.475205172, 313843.90000618796, 313227.16859699896, 312525.4816428692, 313899.1174347656, 312102.0288653355, 313583.03859409195, 313274.16360685043, 311569.22092652245, 311480.72935913503, 315487.99660682265, 312944.4333282714, 311218.75862289645, 313208.01598225767, 313229.3721786198, 312242.623645481, 313202.1278589404, 314248.43150838814, 312858.9843225151, 310712.53312556766, 314632.0821799692, 313745.7932182224, 311771.2458009971, 312906.84051476035, 313933.0086184013, 312377.2091549734, 313056.73350308696, 312858.0552254437, 312101.6444015981, 311409.12745833147, 314058.78540163155, 313763.6653747603, 312766.3497096528, 313149.75766541174, 312096.6390338387, 312342.0025614479, 314149.07397260197, 311668.786836844, 313667.6319722119, 311184.0663281331, 314521.94933442195, 313693.618194175, 313276.2212279572, 313087.8864299857, 312711.2144700027, 311398.8426697606, 314230.1515938169, 312678.2271831732, 312885.9793500849, 312313.55603393435, 313277.85409756104, 312148.09426931624, 312928.3060095232, 312599.0885510916, 313072.77449239197 ], + "consumeRate" : [ 321260.67634600843, 313630.60588678, 313058.83938113274, 312233.1780914675, 313768.60230560624, 312622.6416851143, 312559.23564347596, 312047.30849732, 314301.8316027331, 312810.1318037432, 312566.5015629881, 313753.7287823926, 312415.588333871, 311861.9781927853, 313618.0662149689, 312414.79585637705, 312940.0800263048, 311415.2692642574, 313484.88617214817, 312576.87423708243, 313591.2169035944, 312518.1376926451, 314587.5832855118, 312720.85197043576, 312044.34017247346, 313235.39596332976, 313653.365353449, 312303.3538913923, 312503.1782648656, 313924.7923840712, 312778.53624748444, 312954.4530079378, 313092.2264884772, 312679.1194662315, 312521.6638374223, 311847.7192892147, 313938.3064626466, 311753.7154805009, 314019.82365807175, 311991.9544486775, 312140.71500735875, 315251.82796880265, 311256.7548383245, 314324.30953078246, 311903.47492935817, 313705.7848262022, 312996.29272730707, 313032.7721152507, 312301.27029840386, 312278.0485853331, 313935.2522047043, 312223.48052493134, 313489.8849753406, 312443.46457710216, 313606.55324627133, 311527.1968964179, 312906.45345343865, 311883.4653106402, 314586.67295763467, 312638.68825255515 ], + "backlog" : [ 54294, 70439, 53661, 68993, 66258, 57464, 70434, 82353, 64417, 75402, 70723, 68987, 77653, 74692, 53109, 84201, 84245, 82269, 79459, 86060, 72429, 79334, 75910, 77305, 63844, 77951, 78886, 73509, 77582, 77663, 73611, 74641, 72279, 66449, 55210, 77549, 75786, 86006, 77223, 78291, 80315, 69180, 73339, 66706, 59430, 67684, 74721, 77178, 85117, 89503, 63871, 84134, 75929, 80397, 67345, 85030, 77369, 87925, 67862, 72257 ], + "publishLatencyAvg" : [ 131.40370804976416, 134.09425771300553, 133.36439698853312, 134.5314034926517, 136.04756436366782, 137.07024846334335, 134.8823118414429, 137.23550791897566, 134.62491898797276, 132.89200806416932, 137.33689469237038, 134.5391228694671, 134.26130596308312, 135.91794025605094, 135.73248953745318, 137.77042876749098, 135.6303588839177, 134.86610506066347, 136.2251304910553, 133.3703657291102, 135.81540723678665, 134.39718674485056, 134.41665534449575, 134.64738016835224, 134.9122727587677, 134.478383330685, 133.9304275658052, 135.22067314927432, 134.84048174283183, 135.96590593144342, 135.5298235127274, 135.05146653409338, 135.4328337614616, 135.83240314906092, 133.81962232999504, 135.98540582375375, 137.56654028504397, 134.0610669956925, 132.95000912932167, 134.24520316614922, 132.91043010637642, 135.58222744819975, 134.8771929389842, 134.7878632775141, 134.49166504462752, 137.63222730214648, 134.50965502071642, 134.6894577814072, 136.17387576563425, 135.47490435497417, 135.6342091096031, 134.5760164306206, 134.3207067025308, 134.66451292975165, 135.40546152531104, 135.71050947269066, 133.7483275406408, 134.67390267595488, 135.39509156290097, 134.73082557412312 ], + "publishLatency50pct" : [ 126.825, 127.691, 128.601, 128.592, 127.997, 131.389, 129.813, 132.185, 129.953, 131.698, 130.763, 129.369, 129.578, 129.564, 130.14, 130.631, 129.2, 128.336, 128.912, 128.519, 129.612, 128.605, 127.861, 128.914, 130.251, 129.801, 128.836, 129.101, 129.406, 130.104, 129.819, 127.227, 132.04, 130.182, 128.818, 130.818, 130.959, 129.25, 129.119, 130.031, 128.843, 128.497, 129.445, 129.323, 127.772, 131.357, 128.98, 128.727, 129.001, 130.543, 130.769, 128.258, 128.563, 128.781, 130.856, 130.695, 127.735, 126.605, 129.494, 129.193 ], + "publishLatency75pct" : [ 147.288, 156.347, 158.748, 153.581, 161.958, 160.912, 158.972, 162.312, 158.286, 153.117, 159.426, 155.31, 151.83, 159.756, 159.675, 162.437, 158.785, 157.652, 159.715, 152.552, 161.682, 157.944, 154.994, 155.979, 158.006, 157.393, 152.178, 158.873, 156.052, 154.327, 157.778, 156.557, 159.08, 157.497, 151.823, 162.849, 158.51, 154.856, 154.631, 159.927, 152.709, 155.697, 158.359, 156.651, 161.671, 164.467, 155.468, 156.075, 158.623, 160.468, 156.686, 157.346, 154.221, 157.463, 155.085, 158.71, 150.729, 155.524, 159.031, 155.374 ], + "publishLatency95pct" : [ 187.612, 193.15, 196.432, 201.516, 197.015, 206.368, 199.029, 204.836, 196.974, 191.182, 202.142, 195.816, 200.737, 195.522, 202.802, 205.585, 203.805, 196.083, 204.857, 195.23, 197.43, 195.657, 195.21, 204.807, 193.763, 200.062, 193.721, 198.578, 202.297, 196.79, 200.468, 196.744, 196.205, 194.742, 196.101, 194.522, 197.61, 196.546, 194.508, 190.313, 194.012, 201.294, 199.78, 201.311, 200.061, 205.103, 193.947, 195.904, 198.812, 202.692, 199.958, 193.634, 201.251, 195.045, 199.551, 204.676, 195.846, 199.13, 196.916, 196.124 ], + "publishLatency99pct" : [ 203.06, 225.758, 222.721, 226.097, 218.229, 235.794, 219.617, 221.197, 212.715, 209.869, 221.697, 210.76, 218.992, 208.723, 224.719, 229.225, 216.291, 221.605, 228.905, 210.498, 220.764, 213.754, 210.704, 223.044, 212.881, 212.528, 211.279, 227.171, 216.844, 222.234, 226.829, 210.508, 216.834, 215.012, 214.092, 207.233, 213.364, 214.243, 211.853, 219.923, 226.349, 220.556, 215.34, 219.862, 221.057, 221.111, 209.699, 209.468, 216.674, 217.959, 215.952, 208.774, 211.809, 208.635, 217.216, 226.013, 225.247, 225.563, 223.998, 254.288 ], + "publishLatency999pct" : [ 221.648, 258.719, 244.341, 244.187, 242.139, 257.295, 238.894, 240.589, 238.601, 230.725, 246.937, 234.407, 241.961, 226.398, 242.044, 245.783, 236.321, 251.694, 244.296, 238.378, 239.891, 234.761, 232.039, 253.624, 229.811, 235.913, 243.953, 275.857, 238.704, 251.132, 239.609, 229.291, 237.6, 232.933, 231.366, 239.982, 234.52, 242.66, 230.215, 233.926, 242.719, 257.683, 236.472, 235.518, 238.659, 233.618, 232.981, 234.191, 248.285, 239.661, 243.008, 237.237, 238.098, 243.063, 242.271, 284.445, 325.147, 290.427, 283.611, 313.583 ], + "publishLatency9999pct" : [ 253.366, 265.971, 245.757, 283.701, 255.652, 258.932, 260.814, 256.166, 268.149, 254.24, 250.385, 236.854, 244.332, 246.239, 275.071, 282.675, 237.555, 253.696, 252.76, 240.685, 242.942, 284.299, 262.227, 275.745, 242.312, 243.971, 246.433, 282.939, 250.837, 255.98, 241.748, 244.005, 245.802, 251.197, 240.557, 246.866, 244.769, 251.137, 253.369, 251.873, 251.698, 268.817, 240.32, 242.068, 243.547, 257.02, 245.908, 244.806, 250.848, 258.971, 266.923, 247.081, 250.938, 266.003, 249.461, 297.123, 327.367, 324.731, 292.291, 360.713 ], + "publishLatencyMax" : [ 329.883, 304.931, 324.929, 331.393, 336.761, 369.977, 312.183, 343.097, 312.583, 292.675, 322.713, 374.879, 334.995, 324.299, 330.543, 334.259, 314.443, 317.817, 316.563, 313.661, 346.017, 329.457, 298.375, 333.995, 335.327, 320.447, 319.057, 333.581, 301.045, 336.471, 304.085, 344.005, 309.309, 317.549, 327.713, 305.743, 314.747, 315.419, 293.201, 356.409, 341.343, 326.323, 316.105, 329.353, 322.955, 311.991, 291.889, 312.365, 349.487, 313.029, 323.503, 326.455, 319.483, 303.581, 324.293, 351.909, 327.407, 325.889, 303.401, 360.835 ], + "aggregatedPublishLatencyAvg" : 135.0170670054526, + "aggregatedPublishLatency50pct" : 129.35, + "aggregatedPublishLatency75pct" : 157.116, + "aggregatedPublishLatency95pct" : 198.429, + "aggregatedPublishLatency99pct" : 218.942, + "aggregatedPublishLatency999pct" : 246.031, + "aggregatedPublishLatency9999pct" : 290.685, + "aggregatedPublishLatencyMax" : 374.879, + "aggregatedPublishLatencyQuantiles" : { + "5.272046342890056E-7" : 6.027, + "0.500008256024573" : 22.853, + "1.0000196752769517" : 32.627, + "1.5000221320505474" : 40.769, + "2.0000361873260974" : 48.151, + "2.5000792388565336" : 54.026, + "3.000040573668655" : 59.686, + "3.5001173662956853" : 64.138, + "4.000002256435835" : 68.503, + "4.500121225433609" : 72.063, + "5.000029839782301" : 74.926, + "5.5000043547102795" : 77.689, + "6.000189751491973" : 80.314, + "6.500237547864118" : 82.752, + "7.000102404228164" : 85.034, + "7.5000152362139305" : 87.17, + "8.000233319682952" : 89.151, + "8.500140879622375" : 90.958, + "9.000305715423332" : 92.624, + "9.500194295995922" : 94.117, + "10.00017882781195" : 95.533, + "10.500148070693587" : 96.888, + "11.000402531282372" : 98.169, + "11.50025895237227" : 99.377, + "12.000278279694163" : 100.513, + "12.500200601363346" : 101.618, + "13.000306390245264" : 102.629, + "13.500151740037841" : 103.63, + "14.000267018603175" : 104.595, + "14.500110259577216" : 105.476, + "15.000002530582245" : 106.306, + "15.500563297063552" : 107.101, + "16.000532539945187" : 107.84, + "16.500552394471715" : 108.522, + "17.000006031221016" : 109.188, + "17.500604756435994" : 109.824, + "18.000755357711824" : 110.423, + "18.50040775060825" : 110.989, + "19.000631106123613" : 111.544, + "19.500081052440475" : 112.076, + "20.000871680142332" : 112.573, + "20.500208804667455" : 113.074, + "21.000882392940504" : 113.552, + "21.500870615188973" : 113.998, + "22.000807698587916" : 114.422, + "22.501007329894737" : 114.827, + "23.001209070020092" : 115.223, + "23.50100380816778" : 115.602, + "24.000471152237573" : 115.973, + "24.50026641758989" : 116.321, + "25.000369570448637" : 116.672, + "25.50012582265802" : 117.018, + "26.000298039323855" : 117.347, + "26.501610072409026" : 117.665, + "27.00090554776804" : 117.968, + "27.50035918451734" : 118.272, + "28.000843506326678" : 118.57, + "28.50151920341826" : 118.869, + "29.001011326105864" : 119.151, + "29.501610051320842" : 119.429, + "30.001731656341786" : 119.709, + "30.50106140000203" : 119.98, + "31.0010327517022" : 120.245, + "31.501587718932534" : 120.504, + "32.001668201992004" : 120.757, + "32.50146663057213" : 121.012, + "33.00015951103415" : 121.264, + "33.50020150815532" : 121.511, + "34.00035738147749" : 121.749, + "34.50118754952692" : 121.986, + "35.00122638342028" : 122.225, + "35.50025034839264" : 122.462, + "36.00197940034353" : 122.697, + "36.50195655129468" : 122.928, + "37.00159312805208" : 123.157, + "37.50049794477709" : 123.384, + "38.0000870731174" : 123.607, + "38.501141830341034" : 123.834, + "39.000509532734945" : 124.063, + "39.50209834825312" : 124.291, + "40.00003785329274" : 124.516, + "40.501942991591484" : 124.745, + "41.001883238218234" : 124.971, + "41.501602058898584" : 125.195, + "42.00173737124002" : 125.42, + "42.50153790863868" : 125.648, + "43.001338446037344" : 125.877, + "43.50189973972329" : 126.104, + "44.0009537553598" : 126.336, + "44.501218232836635" : 126.568, + "45.00183277419064" : 126.801, + "45.500610534598785" : 127.032, + "46.001137032778864" : 127.269, + "46.50161871856503" : 127.508, + "47.00027364029338" : 127.757, + "47.50140905982607" : 128.008, + "48.00087376787268" : 128.256, + "48.50043706318592" : 128.514, + "49.00066041870128" : 128.786, + "49.5017056862415" : 129.063, + "50.00114192523787" : 129.35, + "50.25081338712592" : 129.496, + "50.50017063505194" : 129.639, + "50.75100352874932" : 129.782, + "51.00124806207484" : 129.929, + "51.25033485402347" : 130.078, + "51.50123048507234" : 130.229, + "51.750430626017334" : 130.378, + "52.00066725127334" : 130.529, + "52.250870135432756" : 130.683, + "52.5003723646332" : 130.842, + "52.75048509680015" : 131.001, + "53.00126790605728" : 131.159, + "53.25101159498023" : 131.318, + "53.501313066406254" : 131.478, + "53.75045205161367" : 131.642, + "54.00050310083841" : 131.811, + "54.25120472058186" : 131.984, + "54.500103827680675" : 132.156, + "54.75044114902183" : 132.33, + "55.000514340841214" : 132.505, + "55.25008563384875" : 132.687, + "55.50060484078873" : 132.876, + "55.750433936862436" : 133.063, + "56.001131866173445" : 133.247, + "56.25075693405368" : 133.433, + "56.50091131538674" : 133.632, + "56.75110840029517" : 133.829, + "57.0001783216955" : 134.02, + "57.2510713167212" : 134.222, + "57.50119617459474" : 134.428, + "57.75095409804281" : 134.638, + "58.00017690878708" : 134.843, + "58.250733547256104" : 135.062, + "58.50015405973823" : 135.28, + "58.750634780739915" : 135.502, + "59.00093994259838" : 135.728, + "59.250125849018254" : 135.959, + "59.50108527182787" : 136.189, + "59.75096919718354" : 136.424, + "60.000780895504306" : 136.652, + "60.25094529372542" : 136.878, + "60.50059988506517" : 137.12, + "60.750076281238535" : 137.367, + "61.000550148579975" : 137.611, + "61.25020157669192" : 137.867, + "61.500185670928104" : 138.126, + "61.750433367481435" : 138.375, + "62.000594602474735" : 138.621, + "62.250468510942355" : 138.875, + "62.50063132754956" : 139.138, + "62.750705573778205" : 139.399, + "63.000805653033936" : 139.664, + "63.25049556708419" : 139.935, + "63.500813381853874" : 140.201, + "63.75019909883014" : 140.477, + "64.00077208064282" : 140.756, + "64.25068500225338" : 141.039, + "64.50008126332233" : 141.327, + "64.75025778725004" : 141.623, + "65.00022606534718" : 141.911, + "65.25022808454094" : 142.21, + "65.50014153335613" : 142.515, + "65.75046778339996" : 142.819, + "66.00054413844714" : 143.127, + "66.25055195689187" : 143.447, + "66.50031778840946" : 143.77, + "66.75010523531705" : 144.096, + "67.00004135393151" : 144.434, + "67.25005391721795" : 144.764, + "67.50035591584862" : 145.11, + "67.75000523514201" : 145.465, + "68.00045274225174" : 145.828, + "68.25032348749156" : 146.19, + "68.50020161359625" : 146.546, + "68.75045036455884" : 146.915, + "69.0004386764321" : 147.282, + "69.25056827914734" : 147.636, + "69.50049859851083" : 148.014, + "69.75014159134864" : 148.393, + "70.00043515470514" : 148.774, + "70.250202040632" : 149.143, + "70.50029632063675" : 149.533, + "70.75051712975373" : 149.908, + "71.00014641527103" : 150.296, + "71.25001083405523" : 150.707, + "71.50012831106389" : 151.12, + "71.75003332460493" : 151.54, + "72.00049401183051" : 151.959, + "72.25025193527858" : 152.378, + "72.50054866186291" : 152.789, + "72.75058442215325" : 153.199, + "73.00037766831181" : 153.632, + "73.25054364814683" : 154.056, + "73.50016080795756" : 154.467, + "73.75000044812394" : 154.893, + "74.0002070227158" : 155.334, + "74.25029075862786" : 155.767, + "74.50019419055499" : 156.216, + "74.7500079976943" : 156.665, + "75.00027572802374" : 157.116, + "75.12504503118383" : 157.34, + "75.25051129887048" : 157.56, + "75.37540923996134" : 157.789, + "75.50012687706729" : 158.017, + "75.62513711274526" : 158.241, + "75.75020534093301" : 158.459, + "75.87527989557637" : 158.686, + "76.00046938083" : 158.927, + "76.12524079280864" : 159.169, + "76.25011606410024" : 159.41, + "76.3751537144192" : 159.652, + "76.50050399708628" : 159.888, + "76.62526697379079" : 160.123, + "76.750099541507" : 160.355, + "76.87539868532457" : 160.584, + "77.00048483846987" : 160.818, + "77.1250269164326" : 161.058, + "77.25020533038892" : 161.301, + "77.37551607270844" : 161.54, + "77.50027799500366" : 161.783, + "77.62503148202474" : 162.028, + "77.7505119842365" : 162.275, + "77.87503877326483" : 162.516, + "78.00039063754582" : 162.763, + "78.12535922405769" : 163.013, + "78.25037736780517" : 163.26, + "78.37501223378354" : 163.498, + "78.50031823126135" : 163.735, + "78.62509544249097" : 163.987, + "78.75024855062483" : 164.23, + "78.87548601150019" : 164.469, + "79.00000858289144" : 164.71, + "79.12538944342732" : 164.963, + "79.25048772227923" : 165.218, + "79.37534981345496" : 165.461, + "79.50048499663127" : 165.697, + "79.6253976994519" : 165.947, + "79.75013062549223" : 166.173, + "79.87521836025145" : 166.406, + "80.00009046831525" : 166.65, + "80.12530051454961" : 166.905, + "80.25019951004975" : 167.151, + "80.37500835355743" : 167.391, + "80.50037550677281" : 167.638, + "80.6254073578408" : 167.885, + "80.75030898936411" : 168.131, + "80.8752564876906" : 168.384, + "81.00025248884346" : 168.638, + "81.12503549932406" : 168.891, + "81.25018386261621" : 169.138, + "81.37509340220903" : 169.393, + "81.50033402631219" : 169.647, + "81.62513338013645" : 169.9, + "81.75017946572956" : 170.142, + "81.87540269207979" : 170.39, + "82.00047092026753" : 170.647, + "82.12505464739637" : 170.899, + "82.2501687423873" : 171.146, + "82.37524435143992" : 171.381, + "82.50032470533426" : 171.623, + "82.6250286351197" : 171.867, + "82.75017330797942" : 172.121, + "82.87521201270765" : 172.365, + "83.00031029155956" : 172.612, + "83.12529680302899" : 172.865, + "83.25003605552494" : 173.109, + "83.37502942065461" : 173.354, + "83.5002289227963" : 173.602, + "83.62526973634307" : 173.848, + "83.75038277692472" : 174.1, + "83.87539670303514" : 174.343, + "84.00049392747778" : 174.588, + "84.12531805991985" : 174.844, + "84.25035465582953" : 175.098, + "84.37508020100499" : 175.351, + "84.50000555673685" : 175.598, + "84.62549396701812" : 175.846, + "84.75044726459559" : 176.096, + "84.87503889979394" : 176.353, + "85.00012979778096" : 176.602, + "85.12544370332829" : 176.863, + "85.25014130665812" : 177.11, + "85.37528334349467" : 177.36, + "85.50041378182927" : 177.611, + "85.62540978298212" : 177.863, + "85.7500557202578" : 178.125, + "85.87520355634533" : 178.374, + "86.00036509975334" : 178.627, + "86.12547075947012" : 178.877, + "86.25013093127093" : 179.122, + "86.37505892302595" : 179.372, + "86.50030060153838" : 179.622, + "86.6250272011231" : 179.856, + "86.7503020935275" : 180.098, + "86.87533341739083" : 180.342, + "87.00014911455877" : 180.579, + "87.12514089807453" : 180.817, + "87.25017222193789" : 181.053, + "87.37546978414154" : 181.304, + "87.50027599162605" : 181.538, + "87.56276555692833" : 181.66, + "87.6254196100765" : 181.787, + "87.68795978702367" : 181.913, + "87.75012933911293" : 182.041, + "87.81276388568963" : 182.171, + "87.87519967611921" : 182.301, + "87.93771823767638" : 182.431, + "88.00007969225251" : 182.56, + "88.06275799681387" : 182.688, + "88.12530450021664" : 182.813, + "88.18765013865377" : 182.94, + "88.25014339438847" : 183.066, + "88.31280166517372" : 183.197, + "88.37501497524764" : 183.329, + "88.43769380701362" : 183.459, + "88.50026719785275" : 183.588, + "88.56251846666032" : 183.719, + "88.62518675433363" : 183.854, + "88.6878608412579" : 183.984, + "88.75006202562523" : 184.106, + "88.81251995864945" : 184.228, + "88.8752246234425" : 184.35, + "88.93769837260575" : 184.476, + "89.00045101302054" : 184.599, + "89.06296588414526" : 184.728, + "89.12520713606479" : 184.863, + "89.18767772200023" : 184.988, + "89.25027430984326" : 185.112, + "89.3127554398714" : 185.238, + "89.37501830718092" : 185.365, + "89.43756481058371" : 185.491, + "89.50017879617967" : 185.619, + "89.56294830714276" : 185.749, + "89.6250914990003" : 185.872, + "89.68770706621018" : 185.995, + "89.7503221062154" : 186.117, + "89.8125797014786" : 186.237, + "89.87515783715943" : 186.363, + "89.93775284338857" : 186.487, + "90.00006105029665" : 186.609, + "90.06267187266481" : 186.735, + "90.12532645301762" : 186.86, + "90.18779651174843" : 186.987, + "90.25029134909705" : 187.116, + "90.31267336465393" : 187.244, + "90.37533532587162" : 187.367, + "90.43800150472637" : 187.491, + "90.50020532511687" : 187.615, + "90.56280296736918" : 187.737, + "90.62507532436213" : 187.859, + "90.68752007727049" : 187.984, + "90.75011930113669" : 188.112, + "90.81289830178319" : 188.239, + "90.87537732299279" : 188.365, + "90.93752262366887" : 188.493, + "91.00019249295607" : 188.63, + "91.06267784062128" : 188.764, + "91.12511099502768" : 188.895, + "91.18788208760466" : 189.025, + "91.25020294742397" : 189.158, + "91.31288177918995" : 189.287, + "91.37535869158101" : 189.414, + "91.43766320805665" : 189.544, + "91.50044800795412" : 189.681, + "91.56298449446885" : 189.813, + "91.62501908217173" : 189.948, + "91.6876267413121" : 190.083, + "91.75005409646752" : 190.225, + "91.8129496093382" : 190.366, + "91.87508172989843" : 190.505, + "91.93772629336318" : 190.642, + "92.00023589244157" : 190.784, + "92.062684862987" : 190.923, + "92.12523558402685" : 191.061, + "92.18785273285063" : 191.207, + "92.25020680656189" : 191.364, + "92.31260200223463" : 191.521, + "92.37514692402351" : 191.672, + "92.43755635422137" : 191.823, + "92.50017666627295" : 191.975, + "92.56256500828545" : 192.123, + "92.62515316085432" : 192.277, + "92.68755626459658" : 192.426, + "92.75037006074895" : 192.577, + "92.81256386425139" : 192.728, + "92.87520948212541" : 192.882, + "92.93768006806086" : 193.035, + "93.00029036322438" : 193.189, + "93.06289169590913" : 193.347, + "93.12513452944255" : 193.502, + "93.187675760799" : 193.656, + "93.25013685705102" : 193.811, + "93.31281621602163" : 193.966, + "93.37526624097634" : 194.119, + "93.43787917216304" : 194.27, + "93.50005663232182" : 194.422, + "93.56265269296021" : 194.579, + "93.62509533705004" : 194.732, + "93.68782688927945" : 194.887, + "93.75030591048905" : 195.045, + "93.78130607018987" : 195.124, + "93.8126552393586" : 195.203, + "93.84405923780929" : 195.282, + "93.87511686281526" : 195.359, + "93.90659308830085" : 195.436, + "93.93788162893664" : 195.513, + "93.96909688812825" : 195.592, + "94.00006699716492" : 195.67, + "94.03163495625688" : 195.751, + "94.06253547428183" : 195.831, + "94.09384563030763" : 195.908, + "94.12523117659612" : 195.987, + "94.15661777729387" : 196.065, + "94.18767751111838" : 196.145, + "94.21877362206264" : 196.226, + "94.25023139538604" : 196.308, + "94.28128269393639" : 196.39, + "94.31252378615508" : 196.472, + "94.34393252944749" : 196.556, + "94.3750170418898" : 196.64, + "94.40655231429443" : 196.725, + "94.43764578921554" : 196.805, + "94.4687772228703" : 196.89, + "94.50033621948347" : 196.979, + "94.53152300962483" : 197.067, + "94.56272139826815" : 197.156, + "94.59396407210076" : 197.245, + "94.6250306595855" : 197.336, + "94.65642147792035" : 197.427, + "94.68761354010805" : 197.521, + "94.71887044846578" : 197.615, + "94.75015318985058" : 197.706, + "94.78136423140514" : 197.797, + "94.81260321480529" : 197.887, + "94.84409578363454" : 197.978, + "94.87513284765977" : 198.067, + "94.90649994178607" : 198.157, + "94.93753331537886" : 198.247, + "94.96889144702637" : 198.335, + "95.00019527659654" : 198.429, + "95.03131089411228" : 198.523, + "95.0627507424781" : 198.616, + "95.09396020241874" : 198.709, + "95.12503786120081" : 198.8, + "95.15647191031566" : 198.889, + "95.187529008117" : 198.981, + "95.21907535181894" : 199.078, + "95.2502621419603" : 199.168, + "95.28125755681943" : 199.257, + "95.31271374852892" : 199.348, + "95.34403392144276" : 199.443, + "95.3750620229892" : 199.54, + "95.40626093883715" : 199.644, + "95.43771660334201" : 199.749, + "95.46900303515926" : 199.854, + "95.50029579343212" : 199.953, + "95.53138505071614" : 200.054, + "95.56255391589994" : 200.152, + "95.59395211509965" : 200.253, + "95.62504453561148" : 200.358, + "95.65645011567608" : 200.462, + "95.68755202587133" : 200.561, + "95.71888010685468" : 200.661, + "95.75022558559097" : 200.761, + "95.78128268339229" : 200.859, + "95.81259125780419" : 200.965, + "95.84400685475683" : 201.076, + "95.87524478374772" : 201.184, + "95.90632507855297" : 201.288, + "95.93757829647825" : 201.388, + "95.9687787939401" : 201.488, + "96.000179629163" : 201.595, + "96.03133267820776" : 201.701, + "96.06260803872769" : 201.808, + "96.09395509907789" : 201.92, + "96.12519619129658" : 202.033, + "96.15626857803231" : 202.143, + "96.1875602818959" : 202.254, + "96.21896269873268" : 202.367, + "96.25000345319036" : 202.476, + "96.28133258858298" : 202.586, + "96.31254152131899" : 202.703, + "96.34387698316722" : 202.818, + "96.3751808127374" : 202.933, + "96.40650256726515" : 203.049, + "96.4375369952672" : 203.164, + "96.46895575544765" : 203.284, + "96.50007084575876" : 203.399, + "96.53129137699672" : 203.509, + "96.56273333418108" : 203.624, + "96.59383946201339" : 203.731, + "96.62515489008553" : 203.842, + "96.6563480066825" : 203.963, + "96.68769401262342" : 204.09, + "96.71878485152135" : 204.213, + "96.75004070546981" : 204.334, + "96.78136720483927" : 204.458, + "96.81272797250995" : 204.581, + "96.84391054501424" : 204.702, + "96.87522966351881" : 204.827, + "96.89088447792939" : 204.892, + "96.90640169193041" : 204.955, + "96.92202909170001" : 205.018, + "96.93755105054275" : 205.082, + "96.95334662859068" : 205.145, + "96.96881375815146" : 205.209, + "96.98438685584371" : 205.275, + "97.00014974720432" : 205.342, + "97.01582723141418" : 205.408, + "97.03134813584765" : 205.473, + "97.04705145308458" : 205.538, + "97.06272102922492" : 205.603, + "97.0781591625308" : 205.668, + "97.09385088126578" : 205.737, + "97.10951044051806" : 205.806, + "97.12502343688202" : 205.876, + "97.14074889671359" : 205.944, + "97.15639263982685" : 206.015, + "97.17187980316372" : 206.083, + "97.18757732114967" : 206.152, + "97.20332703239443" : 206.223, + "97.21880417884324" : 206.294, + "97.23452383942384" : 206.366, + "97.25008322979562" : 206.435, + "97.26583821308671" : 206.507, + "97.28127476477869" : 206.577, + "97.29687896754437" : 206.646, + "97.31270775948427" : 206.72, + "97.32829772772483" : 206.789, + "97.34375273157902" : 206.86, + "97.35956992501696" : 206.932, + "97.37524635481753" : 206.997, + "97.39077411291125" : 207.06, + "97.40629923498179" : 207.128, + "97.4220500006358" : 207.201, + "97.43769954300005" : 207.274, + "97.45316983578861" : 207.35, + "97.46889371400628" : 207.431, + "97.48447630138197" : 207.513, + "97.50004781746033" : 207.592, + "97.5157901478402" : 207.673, + "97.53137168080661" : 207.75, + "97.54696533947961" : 207.828, + "97.56254634524139" : 207.903, + "97.57831292703443" : 207.984, + "97.59382170576131" : 208.065, + "97.60953609429556" : 208.147, + "97.62504329140855" : 208.229, + "97.6406332596491" : 208.312, + "97.65629703653846" : 208.393, + "97.67196766708807" : 208.472, + "97.6875064964791" : 208.551, + "97.70321508576238" : 208.628, + "97.71895372570981" : 208.709, + "97.73450995285377" : 208.789, + "97.75007988731824" : 208.868, + "97.76583223458616" : 208.95, + "97.78134364933621" : 209.034, + "97.79700900783946" : 209.118, + "97.81264484288322" : 209.201, + "97.82814413192668" : 209.284, + "97.84394814524876" : 209.365, + "97.8594716857054" : 209.444, + "97.87505532749034" : 209.529, + "97.89077973291265" : 209.613, + "97.90626531463562" : 209.697, + "97.9219369995945" : 209.788, + "97.93755754570384" : 209.884, + "97.9531828366549" : 209.982, + "97.96889089873355" : 210.08, + "97.98442445607823" : 210.175, + "98.00003551250417" : 210.265, + "98.01570034380279" : 210.355, + "98.03139100812851" : 210.443, + "98.04688449792098" : 210.535, + "98.06254669319645" : 210.635, + "98.07817778339849" : 210.726, + "98.09381572726076" : 210.818, + "98.10951904449769" : 210.909, + "98.1250299320431" : 210.997, + "98.14075802789786" : 211.099, + "98.15630581976767" : 211.202, + "98.17197170547557" : 211.307, + "98.18760595890541" : 211.407, + "98.2032011991923" : 211.508, + "98.21889028190412" : 211.606, + "98.23438746212905" : 211.7, + "98.25011503077916" : 211.802, + "98.26568707406214" : 211.904, + "98.28137193913689" : 212.008, + "98.29696823383306" : 212.115, + "98.31251128086116" : 212.22, + "98.32825941049201" : 212.329, + "98.34380931118037" : 212.435, + "98.35943987417777" : 212.546, + "98.37505778426394" : 212.659, + "98.39076057429624" : 212.768, + "98.40637321233608" : 212.881, + "98.42195421809785" : 213.004, + "98.4375378598828" : 213.125, + "98.44536632149736" : 213.183, + "98.45319689193045" : 213.239, + "98.4610005749272" : 213.291, + "98.46887964818664" : 213.344, + "98.47659001596313" : 213.402, + "98.48444958265111" : 213.462, + "98.4922585376942" : 213.525, + "98.50000897302287" : 213.591, + "98.50789279112404" : 213.655, + "98.51571070864591" : 213.717, + "98.5235027931407" : 213.783, + "98.53130858495598" : 213.847, + "98.53915286270957" : 213.912, + "98.54692175020045" : 213.977, + "98.5546916921006" : 214.044, + "98.5625591668581" : 214.114, + "98.57031751025629" : 214.186, + "98.57820238276672" : 214.254, + "98.58596336218808" : 214.321, + "98.59381976564826" : 214.392, + "98.60163399273769" : 214.46, + "98.60938495527101" : 214.524, + "98.61718863826776" : 214.586, + "98.62500128374329" : 214.648, + "98.632930441443" : 214.709, + "98.6406597885863" : 214.772, + "98.64850775677233" : 214.839, + "98.65634518086567" : 214.91, + "98.66407610962288" : 214.978, + "98.67197521665844" : 215.053, + "98.6797409409215" : 215.132, + "98.68758785469826" : 215.219, + "98.69537044950964" : 215.301, + "98.70321999930957" : 215.382, + "98.71103949844534" : 215.456, + "98.71879151538793" : 215.529, + "98.72665160928055" : 215.598, + "98.73444422097997" : 215.672, + "98.74218780264842" : 215.747, + "98.75005105976884" : 215.822, + "98.75791748011706" : 215.895, + "98.76567740512915" : 215.969, + "98.77346632639615" : 216.047, + "98.78126210132338" : 216.131, + "98.78916331717747" : 216.211, + "98.79689635475322" : 216.29, + "98.8047622478968" : 216.387, + "98.81258016541868" : 216.487, + "98.82037594034591" : 216.585, + "98.82817540570558" : 216.687, + "98.83596274535867" : 216.786, + "98.84380860472615" : 216.876, + "98.85161017890437" : 216.977, + "98.85941913394745" : 217.078, + "98.8672428507203" : 217.179, + "98.87506445867461" : 217.279, + "98.88288343060576" : 217.382, + "98.89067604230517" : 217.481, + "98.89847076282314" : 217.581, + "98.90625968409013" : 217.676, + "98.91412083239202" : 217.782, + "98.92188602945045" : 217.883, + "98.92970605579086" : 217.979, + "98.93753399020079" : 218.076, + "98.94535823417827" : 218.176, + "98.95320198472722" : 218.29, + "98.96093765832615" : 218.402, + "98.96878351769364" : 218.509, + "98.97660723446648" : 218.619, + "98.98441987994201" : 218.725, + "98.99226099446778" : 218.834, + "99.00005887821355" : 218.942, + "99.00783725538786" : 219.039, + "99.01569576766657" : 219.138, + "99.0234730904316" : 219.245, + "99.03130049763689" : 219.359, + "99.03910839827071" : 219.466, + "99.04691946213234" : 219.565, + "99.05473685244958" : 219.654, + "99.06255793319924" : 219.735, + "99.07035528974039" : 219.829, + "99.07816529919275" : 219.934, + "99.08596054691535" : 220.043, + "99.09377846443721" : 220.155, + "99.10162326939543" : 220.262, + "99.10939637452339" : 220.375, + "99.11725066916503" : 220.476, + "99.1250548793664" : 220.583, + "99.13283694697314" : 220.687, + "99.1406253410355" : 220.799, + "99.14849492461153" : 220.924, + "99.15625379521435" : 221.067, + "99.1641144163116" : 221.209, + "99.17193075221958" : 221.324, + "99.17971281982632" : 221.447, + "99.18751913884624" : 221.573, + "99.19532440345688" : 221.697, + "99.20315602829925" : 221.814, + "99.21094389515696" : 221.938, + "99.21880504345884" : 222.061, + "99.22269844968308" : 222.12, + "99.22659291031657" : 222.186, + "99.23047840847127" : 222.259, + "99.2344103006338" : 222.338, + "99.23830107083485" : 222.422, + "99.24219236824054" : 222.508, + "99.24614113095137" : 222.584, + "99.25002768351534" : 222.651, + "99.25391529048859" : 222.714, + "99.25785350910674" : 222.784, + "99.26171950068998" : 222.855, + "99.26563715832738" : 222.925, + "99.26954954391843" : 222.994, + "99.2734498038029" : 223.059, + "99.27736957025884" : 223.126, + "99.28127246616648" : 223.193, + "99.2851627091629" : 223.262, + "99.2890772035725" : 223.34, + "99.29297904507087" : 223.424, + "99.29692359014462" : 223.499, + "99.30081066991323" : 223.567, + "99.3047325451877" : 223.635, + "99.3086407131417" : 223.705, + "99.31252093925006" : 223.778, + "99.31645863066356" : 223.855, + "99.32031935020046" : 223.918, + "99.3242744393669" : 223.982, + "99.32814201256404" : 224.051, + "99.33207864956829" : 224.125, + "99.33594516835616" : 224.19, + "99.33988865902064" : 224.265, + "99.3437825924495" : 224.353, + "99.34766387296713" : 224.437, + "99.35156782328404" : 224.518, + "99.35548706253535" : 224.597, + "99.35938468639665" : 224.68, + "99.36330708887576" : 224.763, + "99.36721947446682" : 224.839, + "99.37111867994201" : 224.926, + "99.37502421187283" : 225.015, + "99.37894977757975" : 225.104, + "99.38282473164178" : 225.19, + "99.38673606282356" : 225.28, + "99.39067006380462" : 225.359, + "99.39453763700178" : 225.446, + "99.39847321959674" : 225.527, + "99.4023566089329" : 225.599, + "99.40627953861666" : 225.676, + "99.41016450956673" : 225.755, + "99.4140863848412" : 225.841, + "99.41797715504225" : 225.908, + "99.42187741492673" : 225.981, + "99.42580825267999" : 226.073, + "99.4297122029969" : 226.157, + "99.43362458858796" : 226.248, + "99.43752537567705" : 226.332, + "99.44143090760787" : 226.408, + "99.44532853146917" : 226.483, + "99.44921982887486" : 226.557, + "99.4531596291069" : 226.641, + "99.45703669198747" : 226.729, + "99.46097227458243" : 226.82, + "99.46487200726226" : 226.894, + "99.46878281123942" : 226.979, + "99.47265671089218" : 227.065, + "99.47659809273812" : 227.163, + "99.48049413498552" : 227.265, + "99.48437963314022" : 227.36, + "99.488318378963" : 227.45, + "99.49220018668527" : 227.538, + "99.49613682368951" : 227.629, + "99.50002390345811" : 227.726, + "99.50392627216112" : 227.814, + "99.5078449842078" : 227.909, + "99.511744189683" : 227.988, + "99.51566290172967" : 228.072, + "99.51954945429365" : 228.161, + "99.52344180610861" : 228.257, + "99.52735840933674" : 228.357, + "99.53127764858804" : 228.455, + "99.53516420115201" : 228.567, + "99.53908554922187" : 228.702, + "99.54299002674341" : 228.829, + "99.54689134103714" : 228.928, + "99.55079107371698" : 229.017, + "99.55471294899145" : 229.111, + "99.55866856536252" : 229.198, + "99.56250661510015" : 229.28, + "99.56640740218926" : 229.403, + "99.57033665832861" : 229.528, + "99.57422004766478" : 229.667, + "99.5781487765995" : 229.79, + "99.58206590703227" : 229.902, + "99.58597354778162" : 230.013, + "99.58986589959657" : 230.125, + "99.59376036023006" : 230.232, + "99.59768592593699" : 230.345, + "99.60156667924998" : 230.462, + "99.6054922449569" : 230.587, + "99.60938775999966" : 230.7, + "99.61136846781069" : 230.748, + "99.61329276472584" : 230.793, + "99.61527189092297" : 230.843, + "99.61721411279568" : 230.899, + "99.61914526337108" : 230.955, + "99.6211043557921" : 231.012, + "99.62304974089263" : 231.07, + "99.62500408847194" : 231.134, + "99.62697583380418" : 231.185, + "99.62891172922129" : 231.254, + "99.6308724032562" : 231.331, + "99.63283360449576" : 231.421, + "99.63476791829898" : 231.521, + "99.63674388126829" : 231.593, + "99.63868030389003" : 231.648, + "99.64062621619519" : 231.716, + "99.64258267259304" : 231.778, + "99.64454598265112" : 231.838, + "99.64649769420727" : 231.906, + "99.6484509873773" : 231.981, + "99.65040638936588" : 232.045, + "99.65235493769421" : 232.11, + "99.65430243161329" : 232.18, + "99.65625730639722" : 232.244, + "99.65822694291093" : 232.302, + "99.66017180080682" : 232.365, + "99.66211560429345" : 232.445, + "99.66407733273763" : 232.525, + "99.6660264082706" : 232.6, + "99.66797970144064" : 232.699, + "99.6699240321319" : 232.809, + "99.67188048852975" : 232.913, + "99.673852233862" : 233.005, + "99.67578707486983" : 233.1, + "99.6777393136306" : 233.187, + "99.67969524282381" : 233.284, + "99.68165591685873" : 233.367, + "99.68360551959633" : 233.468, + "99.68554879587832" : 233.571, + "99.68750156184373" : 233.663, + "99.68946118146938" : 233.743, + "99.69141394743478" : 233.821, + "99.69338358394849" : 233.889, + "99.69532158818414" : 233.943, + "99.69726855489857" : 233.999, + "99.69925137152813" : 234.06, + "99.70119148458231" : 234.113, + "99.70313686968284" : 234.192, + "99.70509332608069" : 234.29, + "99.70704398322755" : 234.37, + "99.70899938521613" : 234.44, + "99.71094160708886" : 234.512, + "99.71289331864499" : 234.583, + "99.71484713901967" : 234.658, + "99.7168157211241" : 234.739, + "99.71875847020145" : 234.848, + "99.72072125305492" : 234.968, + "99.72266874697398" : 235.069, + "99.72461782250694" : 235.161, + "99.7265774421326" : 235.237, + "99.72853442573508" : 235.323, + "99.73048561008657" : 235.408, + "99.73243310400565" : 235.514, + "99.73438323394788" : 235.607, + "99.73633389109474" : 235.705, + "99.73828665706016" : 235.805, + "99.74024047743482" : 235.885, + "99.74220167867439" : 235.99, + "99.74415075420735" : 236.106, + "99.74611511867471" : 236.209, + "99.74807210227719" : 236.305, + "99.75001537855918" : 236.39, + "99.75196287247825" : 236.47, + "99.75391300242048" : 236.541, + "99.75586418677199" : 236.647, + "99.7578248608069" : 236.774, + "99.75977077311207" : 236.878, + "99.76172564789601" : 236.981, + "99.76367314181508" : 237.101, + "99.7656385606917" : 237.214, + "99.76757920095052" : 237.303, + "99.7695546367152" : 237.388, + "99.77149000492767" : 237.469, + "99.77345753262284" : 237.545, + "99.77539342803995" : 237.618, + "99.77734724841463" : 237.698, + "99.77931214008662" : 237.789, + "99.7812506715269" : 237.892, + "99.7832171448128" : 238.002, + "99.78515778507162" : 238.128, + "99.78711055103703" : 238.251, + "99.78907227948122" : 238.369, + "99.7910340079254" : 238.502, + "99.79298255625373" : 238.609, + "99.79493110458206" : 238.723, + "99.79688756097991" : 238.837, + "99.7988340004897" : 238.959, + "99.80078992968292" : 239.077, + "99.80273478757881" : 239.256, + "99.80469598881837" : 239.408, + "99.80567079018716" : 239.479, + "99.80664559155596" : 239.531, + "99.80762092012941" : 239.57, + "99.80860204795381" : 239.617, + "99.80957421329944" : 239.669, + "99.81055692273776" : 239.722, + "99.81152803367412" : 239.784, + "99.81251074311244" : 239.847, + "99.81347974523025" : 239.912, + "99.81445876423614" : 239.969, + "99.815437783242" : 240.024, + "99.81641680224789" : 240.067, + "99.81739318523059" : 240.117, + "99.81836060573451" : 240.178, + "99.81934331517282" : 240.249, + "99.82032760622504" : 240.307, + "99.82130767964019" : 240.357, + "99.82227984498581" : 240.417, + "99.82325201033144" : 240.489, + "99.82423102933731" : 240.555, + "99.82521690200343" : 240.617, + "99.82617641443784" : 240.648, + "99.82715806946689" : 240.697, + "99.82812865319862" : 240.748, + "99.82911188984156" : 240.79, + "99.83009407207524" : 240.834, + "99.83106149257917" : 240.883, + "99.83204841965456" : 240.933, + "99.83301214972603" : 240.988, + "99.83398905991336" : 241.026, + "99.8349812590351" : 241.074, + "99.83594393469731" : 241.127, + "99.83692664413563" : 241.176, + "99.8379040815276" : 241.223, + "99.83887361085006" : 241.272, + "99.83985052103739" : 241.326, + "99.84083217606644" : 241.384, + "99.84180381420744" : 241.458, + "99.84279074128283" : 241.524, + "99.84376027060529" : 241.588, + "99.84473928961116" : 241.662, + "99.84572252625411" : 241.733, + "99.8466925827812" : 241.789, + "99.84766632974073" : 241.839, + "99.8486437671327" : 241.907, + "99.84962331334322" : 241.96, + "99.85059284266566" : 242.036, + "99.85156764403446" : 242.101, + "99.85254877185888" : 242.166, + "99.85353095409256" : 242.233, + "99.85450048341502" : 242.293, + "99.85548688328578" : 242.352, + "99.85645430378969" : 242.414, + "99.85742594193069" : 242.475, + "99.858408651369" : 242.532, + "99.85937976230537" : 242.604, + "99.86037301583636" : 242.668, + "99.86132883783833" : 242.756, + "99.8623078568442" : 242.908, + "99.86328687585008" : 243.008, + "99.86426747646986" : 243.103, + "99.86525124031743" : 243.168, + "99.86621707920746" : 243.23, + "99.86719398939479" : 243.309, + "99.86816510033115" : 243.381, + "99.86914253772312" : 243.455, + "99.87012366554754" : 243.53, + "99.87111481026" : 243.594, + "99.87207695871759" : 243.654, + "99.87305123288175" : 243.731, + "99.87403657834324" : 243.817, + "99.87500189002861" : 243.888, + "99.87598143623913" : 243.978, + "99.8769652000867" : 244.064, + "99.877932093386" : 244.149, + "99.87891058518723" : 244.241, + "99.87989065860238" : 244.317, + "99.88087020481288" : 244.392, + "99.88183709811217" : 244.481, + "99.88281928034586" : 244.566, + "99.88379988096563" : 244.642, + "99.88477099190199" : 244.72, + "99.8857537013403" : 244.784, + "99.8867221762535" : 244.828, + "99.88769961364547" : 244.903, + "99.88867388780963" : 244.979, + "99.88965817886185" : 245.044, + "99.89062507216113" : 245.125, + "99.89160303675774" : 245.203, + "99.89258100135434" : 245.291, + "99.89356160197413" : 245.383, + "99.89454114818463" : 245.467, + "99.8955154223488" : 245.581, + "99.89648811489906" : 245.674, + "99.89746766110957" : 245.764, + "99.89843929925057" : 245.87, + "99.89941726384717" : 245.97, + "99.90039470123915" : 246.074, + "99.90137161142648" : 246.182, + "99.90235221204625" : 246.285, + "99.90283724030981" : 246.31, + "99.90332701341507" : 246.344, + "99.90381467770177" : 246.382, + "99.9043023419885" : 246.427, + "99.90479053347984" : 246.485, + "99.9052787249712" : 246.551, + "99.90576797087182" : 246.611, + "99.90625036311219" : 246.674, + "99.90673960901282" : 246.752, + "99.90723359975514" : 246.83, + "99.90771546479088" : 246.903, + "99.90820418348687" : 246.974, + "99.90869395659212" : 247.058, + "99.9091810936742" : 247.154, + "99.90966875796092" : 247.276, + "99.91015958547544" : 247.422, + "99.9106477769668" : 247.556, + "99.91113596845815" : 247.663, + "99.91162468715413" : 247.768, + "99.91211182423622" : 247.857, + "99.91259948852293" : 247.958, + "99.91308768001429" : 248.035, + "99.91357428989174" : 248.104, + "99.91406617181552" : 248.162, + "99.91455330889761" : 248.233, + "99.91504255479823" : 248.312, + "99.91552916467568" : 248.47, + "99.91601946498557" : 248.591, + "99.91650976529546" : 248.652, + "99.9169963751729" : 248.758, + "99.9174882570967" : 248.821, + "99.91797223095098" : 248.9, + "99.91845778641915" : 248.975, + "99.91895019554758" : 249.089, + "99.91943469660649" : 249.249, + "99.91992657853028" : 249.415, + "99.92041477002164" : 249.465, + "99.92089979828518" : 249.539, + "99.92139168020897" : 249.612, + "99.92187829008643" : 249.707, + "99.92237122641949" : 249.759, + "99.92285256425059" : 249.864, + "99.9233418101512" : 249.987, + "99.92382894723329" : 250.087, + "99.92431713872465" : 250.202, + "99.92480480301136" : 250.316, + "99.92529352170735" : 250.456, + "99.9257848764265" : 250.586, + "99.92627359512248" : 250.702, + "99.9267612594092" : 250.8, + "99.92725208692373" : 250.881, + "99.92773553357337" : 250.955, + "99.9282263610879" : 251.041, + "99.92871349816998" : 251.121, + "99.92920116245669" : 251.192, + "99.92968829953878" : 251.265, + "99.93018176307648" : 251.346, + "99.93066520972611" : 251.408, + "99.93115498283137" : 251.491, + "99.93164633755053" : 251.593, + "99.93213294742797" : 251.668, + "99.93262272053323" : 251.738, + "99.93310722159214" : 251.787, + "99.9335969946974" : 251.848, + "99.93412578094559" : 251.867, + "99.93457285047546" : 251.91, + "99.93506104196682" : 251.999, + "99.9355481790489" : 252.108, + "99.93603795215415" : 252.211, + "99.93652561644087" : 252.329, + "99.93701433513685" : 252.499, + "99.93750041780967" : 252.698, + "99.9379912453242" : 252.934, + "99.93848049122482" : 253.005, + "99.93897342755788" : 253.085, + "99.93945792861679" : 253.153, + "99.93994453849423" : 253.247, + "99.94043009396242" : 253.352, + "99.94091933986304" : 253.457, + "99.94141016737755" : 253.596, + "99.94189730445964" : 253.702, + "99.94238496874637" : 253.829, + "99.94287157862381" : 254.021, + "99.94336398775224" : 254.153, + "99.94385007042504" : 254.258, + "99.94433615309786" : 254.415, + "99.94482434458922" : 254.653, + "99.94531253608056" : 254.765, + "99.94580125477655" : 254.871, + "99.94629260949571" : 254.957, + "99.94677921937316" : 255.073, + "99.94726741086451" : 255.302, + "99.9477561295605" : 255.674, + "99.94824537546111" : 255.864, + "99.94873303974784" : 255.986, + "99.94922123123919" : 256.15, + "99.94971100434444" : 256.28, + "99.95019603260799" : 256.499, + "99.95068580571323" : 256.767, + "99.95117241559069" : 256.964, + "99.951417038541" : 257.077, + "99.95166218869595" : 257.213, + "99.95190470282772" : 257.319, + "99.95214985298266" : 257.478, + "99.95239447593298" : 257.64, + "99.95263804447401" : 257.715, + "99.95288477624285" : 257.792, + "99.95312623596537" : 257.847, + "99.95337296773421" : 257.89, + "99.95361390025208" : 257.937, + "99.95385746879312" : 258.022, + "99.9541031461527" : 258.098, + "99.95434724189838" : 258.208, + "99.95459028323478" : 258.452, + "99.9548349061851" : 258.605, + "99.95507847472614" : 258.734, + "99.95532467929036" : 258.858, + "99.9555682478314" : 258.94, + "99.95581076196316" : 259.019, + "99.95605749373202" : 259.145, + "99.95629948065915" : 259.315, + "99.9565446308141" : 259.484, + "99.95678714494586" : 259.56, + "99.95703229510082" : 259.741, + "99.95727744525576" : 259.984, + "99.95752101379679" : 260.1, + "99.95776563674711" : 260.19, + "99.95800867808352" : 260.291, + "99.95825330103382" : 260.429, + "99.9584973967795" : 260.572, + "99.95874096532054" : 260.706, + "99.95898453386158" : 260.848, + "99.95923021122117" : 260.996, + "99.95947272535294" : 261.094, + "99.95971682109861" : 261.36, + "99.95996513448137" : 261.508, + "99.96020659420387" : 261.599, + "99.9604501627449" : 261.693, + "99.96069373128594" : 261.909, + "99.96093940864553" : 262.135, + "99.96118244998193" : 262.271, + "99.96142707293224" : 262.423, + "99.96167275029183" : 262.557, + "99.96191737324213" : 262.691, + "99.96216041457853" : 262.783, + "99.96240398311959" : 262.901, + "99.96264807886526" : 263.123, + "99.96289270181556" : 263.289, + "99.96313627035661" : 263.381, + "99.96338247492082" : 263.469, + "99.96362973389431" : 263.535, + "99.96387330243535" : 263.607, + "99.96411265333931" : 263.665, + "99.96435674908498" : 263.763, + "99.9646013720353" : 263.923, + "99.96484546778098" : 264.063, + "99.96508798191275" : 264.219, + "99.96533524088623" : 264.349, + "99.965577755018" : 264.447, + "99.96582185076367" : 264.543, + "99.96606858253253" : 264.643, + "99.9663095150504" : 264.777, + "99.96655519240997" : 264.897, + "99.96679876095102" : 265.073, + "99.96704232949206" : 265.221, + "99.96728537082846" : 265.407, + "99.96753210259732" : 265.797, + "99.96777567113836" : 265.899, + "99.96802187570256" : 265.973, + "99.96826438983435" : 266.047, + "99.96850901278465" : 266.153, + "99.96875258132569" : 266.315, + "99.96899562266209" : 266.475, + "99.96924077281705" : 266.965, + "99.96948645017662" : 267.303, + "99.96973265474084" : 267.407, + "99.96997938650968" : 267.511, + "99.97021926461828" : 267.611, + "99.97046072434078" : 267.767, + "99.97070482008647" : 267.843, + "99.97094944303677" : 267.945, + "99.97119986523806" : 268.017, + "99.97143974334666" : 268.099, + "99.97168067586453" : 268.137, + "99.97192529881484" : 268.195, + "99.97216992176516" : 268.293, + "99.97241243589693" : 268.389, + "99.9726596948704" : 268.465, + "99.97290642663926" : 268.531, + "99.97315104958956" : 268.603, + "99.9733898732889" : 268.665, + "99.97363396903457" : 268.747, + "99.97387753757562" : 268.969, + "99.97412479654909" : 269.317, + "99.97436678347623" : 269.553, + "99.97460982481265" : 270.351, + "99.97485392055832" : 270.845, + "99.97509959791789" : 273.145, + "99.97534211204967" : 273.299, + "99.97558620779535" : 273.859, + "99.97571220970293" : 273.929, + "99.97583083074565" : 274.027, + "99.97595314222082" : 274.363, + "99.97607545369597" : 274.507, + "99.97619776517112" : 275.073, + "99.976319022237" : 275.155, + "99.9764418609168" : 275.429, + "99.9765662812105" : 275.505, + "99.97668648386711" : 275.583, + "99.97680721372836" : 275.657, + "99.97693057961278" : 275.737, + "99.97705130947404" : 275.815, + "99.97717309374455" : 275.887, + "99.97729962285679" : 275.957, + "99.97741771669486" : 276.005, + "99.97753950096539" : 276.085, + "99.97766392125908" : 276.165, + "99.9777841239157" : 276.257, + "99.97790538098158" : 276.367, + "99.97802769245673" : 279.413, + "99.97815000393189" : 279.761, + "99.97827336981632" : 279.949, + "99.97839568129147" : 280.017, + "99.97851693835736" : 280.125, + "99.97863819542324" : 280.321, + "99.97876103410303" : 280.429, + "99.97888439998745" : 280.503, + "99.97900512984872" : 280.553, + "99.97912849573314" : 280.609, + "99.97924922559439" : 280.663, + "99.9793710098649" : 280.713, + "99.97949226693079" : 280.803, + "99.97961563281521" : 280.947, + "99.9797368898811" : 281.137, + "99.97986025576553" : 281.241, + "99.97998309444532" : 281.315, + "99.98010329710193" : 281.373, + "99.98022560857709" : 281.465, + "99.9803473928476" : 281.543, + "99.98047128593667" : 281.625, + "99.98059254300256" : 281.705, + "99.98071380006844" : 281.863, + "99.98083558433896" : 282.103, + "99.98095789581411" : 282.251, + "99.98107968008463" : 282.351, + "99.98120357317369" : 282.449, + "99.98132483023959" : 282.533, + "99.98145030494254" : 282.665, + "99.98159159578454" : 282.673, + "99.98169914552993" : 282.681, + "99.98181196732166" : 282.773, + "99.98193533320608" : 282.973, + "99.98205659027198" : 283.097, + "99.98217942895177" : 283.219, + "99.98230015881302" : 283.287, + "99.98242405190207" : 283.365, + "99.98254478176332" : 283.441, + "99.98266814764774" : 283.541, + "99.982788877509" : 283.575, + "99.98291435221196" : 283.615, + "99.98303560927785" : 283.651, + "99.98316055677617" : 283.697, + "99.98328234104669" : 283.741, + "99.98339885327087" : 283.859, + "99.98352327356457" : 284.017, + "99.98364347622119" : 284.113, + "99.98377000533341" : 284.181, + "99.98388757196686" : 284.223, + "99.98401093785128" : 284.279, + "99.98413799416815" : 284.317, + "99.9842571424155" : 284.349, + "99.98437629066285" : 284.377, + "99.98449754772874" : 284.419, + "99.98462144081779" : 284.455, + "99.98474375229294" : 284.525, + "99.9848660637681" : 284.617, + "99.98498679362935" : 284.723, + "99.98510805069523" : 284.903, + "99.98523088937503" : 285.055, + "99.98535267364555" : 285.253, + "99.98547445791607" : 285.419, + "99.98559624218659" : 285.595, + "99.9857180264571" : 285.673, + "99.98584244675081" : 285.755, + "99.98596739424913" : 285.819, + "99.98608601529185" : 285.869, + "99.98620779956237" : 285.933, + "99.98633063824215" : 286.329, + "99.98646349380999" : 286.337, + "99.9865757883971" : 286.355, + "99.98670706235103" : 286.379, + "99.98682621059838" : 287.001, + "99.98694746766428" : 287.023, + "99.98706081666064" : 287.041, + "99.98718365534043" : 287.225, + "99.98730596681558" : 287.749, + "99.98743829517879" : 288.345, + "99.98755955224468" : 288.353, + "99.98767395565032" : 288.441, + "99.98779415830694" : 288.547, + "99.98785425963526" : 288.593, + "99.98792543226088" : 288.631, + "99.98797867992894" : 288.637, + "99.98803772684798" : 288.645, + "99.9881009914041" : 288.663, + "99.98816003832314" : 288.693, + "99.98822066685608" : 288.729, + "99.98828129538903" : 288.757, + "99.98834350553587" : 288.791, + "99.98840518847808" : 288.839, + "99.9884668714203" : 288.879, + "99.98852591833933" : 288.931, + "99.98858654687228" : 289.045, + "99.98864770260985" : 289.159, + "99.98870885834744" : 289.279, + "99.9887715956989" : 289.325, + "99.98883064261796" : 289.375, + "99.9888928527648" : 289.465, + "99.98895295409311" : 289.989, + "99.98901569144459" : 290.141, + "99.98907526556826" : 290.181, + "99.98913642130584" : 290.233, + "99.98919704983878" : 290.299, + "99.98925978719026" : 290.373, + "99.98931936131395" : 290.419, + "99.98938473468858" : 290.453, + "99.98944272719837" : 290.475, + "99.98950704616375" : 290.497, + "99.98956398426425" : 290.519, + "99.98962566720647" : 290.543, + "99.98968840455794" : 290.567, + "99.98974639706772" : 290.589, + "99.98981018882846" : 290.613, + "99.98986818133824" : 290.637, + "99.98993250030362" : 290.657, + "99.98999260163193" : 290.681, + "99.99005481177878" : 290.705, + "99.99011280428854" : 290.727, + "99.9901750144354" : 290.751, + "99.99023617017296" : 290.775, + "99.99029943472908" : 290.803, + "99.99036059046666" : 290.827, + "99.9904196373857" : 290.851, + "99.99048184753255" : 290.877, + "99.99054089445158" : 290.899, + "99.99060152298453" : 290.927, + "99.99066162431284" : 290.951, + "99.99072857930139" : 290.977, + "99.99078815342507" : 291.001, + "99.9908456187302" : 291.023, + "99.99090941049096" : 291.047, + "99.99096951181926" : 291.073, + "99.99102855873831" : 291.165, + "99.99108971447588" : 291.349, + "99.99115087021346" : 291.531, + "99.99121202595104" : 291.937, + "99.99127265448398" : 292.011, + "99.99133328301693" : 292.085, + "99.99139496595913" : 292.171, + "99.99145612169671" : 292.229, + "99.99151622302502" : 292.295, + "99.9915773787626" : 292.367, + "99.99163958890945" : 292.437, + "99.99169969023775" : 294.613, + "99.9917603187707" : 296.329, + "99.9918220017129" : 296.473, + "99.99188263024585" : 296.621, + "99.99194378598342" : 296.763, + "99.992004941721" : 296.907, + "99.99206609745859" : 297.049, + "99.99212672599153" : 297.197, + "99.99218788172911" : 297.359, + "99.99224956467131" : 297.499, + "99.9923107204089" : 299.001, + "99.9923708217372" : 299.069, + "99.99243197747478" : 299.143, + "99.992493660417" : 299.217, + "99.9925537617453" : 299.293, + "99.99261649909678" : 299.355, + "99.99267660042509" : 299.389, + "99.9927398649812" : 299.421, + "99.99279838469562" : 299.447, + "99.99285901322855" : 299.495, + "99.9929212233754" : 299.561, + "99.99298237911297" : 299.637, + "99.99304353485056" : 300.123, + "99.99310310897422" : 300.195, + "99.99316479191644" : 300.269, + "99.99322594765403" : 300.347, + "99.99328657618696" : 300.421, + "99.99334825912918" : 300.491, + "99.99341046927603" : 300.541, + "99.9934716250136" : 300.579, + "99.99353067193265" : 300.635, + "99.99359182767022" : 303.581, + "99.9936529834078" : 310.889, + "99.99371466635" : 310.961, + "99.99377529488295" : 311.029, + "99.99383697782517" : 311.529, + "99.99389813356274" : 311.603, + "99.99392712981762" : 311.639, + "99.99395770768642" : 311.675, + "99.9939898671691" : 311.723, + "99.99401886342399" : 311.759, + "99.99404996849742" : 312.149, + "99.99408107357084" : 312.185, + "99.99411059703036" : 312.219, + "99.99414117489914" : 312.253, + "99.9941712255633" : 312.287, + "99.99420391225063" : 312.317, + "99.99423238130088" : 312.343, + "99.99426348637431" : 312.377, + "99.99429406424309" : 312.411, + "99.99432411490724" : 312.997, + "99.99435521998066" : 313.033, + "99.99438527064483" : 313.065, + "99.99441637571825" : 313.089, + "99.99444589917776" : 313.111, + "99.99447753145583" : 313.135, + "99.99450863652925" : 313.159, + "99.99453763278413" : 313.179, + "99.99456979226683" : 313.207, + "99.99459878852171" : 313.229, + "99.99463042079977" : 313.253, + "99.9946631074871" : 313.281, + "99.99469104933272" : 313.303, + "99.99472109999687" : 313.327, + "99.99475220507028" : 313.349, + "99.99478383734835" : 313.373, + "99.99481441521714" : 313.395, + "99.99484393867665" : 313.415, + "99.99487451654544" : 313.435, + "99.99490562161887" : 313.455, + "99.99493409066912" : 313.473, + "99.99496572294717" : 313.497, + "99.99499630081597" : 313.515, + "99.99502846029866" : 313.533, + "99.9950569293489" : 313.549, + "99.99508856162696" : 313.567, + "99.99511966670039" : 313.585, + "99.99514813575064" : 313.641, + "99.99517924082406" : 313.701, + "99.99520876428357" : 313.761, + "99.99524145097091" : 314.013, + "99.99527097443043" : 314.037, + "99.99530102509458" : 314.063, + "99.99533107575874" : 314.091, + "99.9953627080368" : 314.121, + "99.99539275870094" : 314.151, + "99.99542386377438" : 314.175, + "99.9954549688478" : 314.199, + "99.99548449230731" : 314.221, + "99.99551454297146" : 314.245, + "99.99554459363563" : 314.273, + "99.99557728032295" : 314.307, + "99.9956073309871" : 314.335, + "99.99563738165126" : 314.361, + "99.99566690511078" : 314.383, + "99.9956980101842" : 314.409, + "99.99572806084835" : 314.445, + "99.99575863871715" : 314.485, + "99.9957886893813" : 314.531, + "99.99581979445472" : 314.599, + "99.99584984511888" : 314.663, + "99.99588042298767" : 314.731, + "99.99591100085645" : 314.803, + "99.99594157872524" : 314.869, + "99.99597215659404" : 316.397, + "99.99600220725819" : 317.041, + "99.9960333123316" : 317.107, + "99.99606336299577" : 317.169, + "99.99609446806919" : 317.235, + "99.99612504593797" : 317.301, + "99.99615509660212" : 317.365, + "99.99618567447092" : 317.429, + "99.9962162523397" : 317.489, + "99.99624683020849" : 317.599, + "99.99627688087266" : 317.699, + "99.99630798594607" : 317.799, + "99.99633961822413" : 324.533, + "99.99636861447901" : 324.567, + "99.99640024675708" : 324.605, + "99.9964297702166" : 324.637, + "99.99646034808538" : 324.667, + "99.99649198036344" : 324.681, + "99.99652308543686" : 324.707, + "99.9965557721242" : 324.723, + "99.99658371396981" : 324.737, + "99.99661534624786" : 324.751, + "99.99664486970738" : 324.775, + "99.99667544757618" : 324.795, + "99.99671024308203" : 324.809, + "99.99673554890448" : 324.957, + "99.9967666539779" : 324.973, + "99.99680144948377" : 324.991, + "99.99682675530622" : 325.003, + "99.996857333175" : 325.017, + "99.9968894926577" : 325.025, + "99.99692059773112" : 325.037, + "99.99695064839527" : 325.047, + "99.99697279098991" : 325.051, + "99.99698069905942" : 325.053, + "99.99700126004016" : 325.059, + "99.99702129381626" : 325.063, + "99.99703131070432" : 325.065, + "99.99704449082017" : 325.067, + "99.9970555621175" : 325.069, + "99.99707401427969" : 325.075, + "99.99709035762336" : 325.081, + "99.99710142892067" : 325.085, + "99.99711619065044" : 325.093, + "99.99713200678947" : 325.111, + "99.9971494045424" : 325.133, + "99.99716205745362" : 325.137, + "99.99718209122973" : 325.143, + "99.99719896177803" : 325.149, + "99.99721108748462" : 325.153, + "99.99722690362364" : 325.157, + "99.9972385021256" : 325.161, + "99.99725431826462" : 325.553, + "99.99727277042682" : 325.559, + "99.99728700495194" : 325.565, + "99.99730282109098" : 325.569, + "99.99731758282074" : 325.573, + "99.9973339261644" : 325.579, + "99.99734816068953" : 325.585, + "99.99736661285172" : 325.591, + "99.99737979296758" : 325.603, + "99.99739191867417" : 325.607, + "99.99741089804101" : 325.613, + "99.99742249654297" : 325.615, + "99.99744042150053" : 325.619, + "99.99745676484419" : 325.623, + "99.99747258098321" : 325.627, + "99.9974847066898" : 325.631, + "99.99750895810298" : 325.637, + "99.99751633896787" : 325.639, + "99.9975400631764" : 325.645, + "99.99755218888299" : 325.647, + "99.99756009695251" : 325.649, + "99.99758171234252" : 325.653, + "99.99759014761666" : 325.655, + "99.99760649096032" : 325.671, + "99.99762019828081" : 325.685, + "99.99763654162449" : 325.701, + "99.99765183055888" : 325.717, + "99.99766659228864" : 325.731, + "99.99768082681376" : 325.745, + "99.99769717015742" : 326.123, + "99.99771298629645" : 326.137, + "99.99772722082157" : 326.151, + "99.99774409136988" : 326.165, + "99.99775727148574" : 326.177, + "99.99777308762476" : 326.193, + "99.99778837655916" : 326.583, + "99.99780366549355" : 326.599, + "99.99781895442794" : 326.615, + "99.99783424336233" : 326.633, + "99.99785058670601" : 326.649, + "99.99786482123113" : 326.663, + "99.99788063737016" : 326.679, + "99.99789539909992" : 326.695, + "99.99791174244358" : 326.705, + "99.99792492255943" : 326.713, + "99.99794073869846" : 326.721, + "99.99795919086067" : 326.731, + "99.9979765886136" : 326.735, + "99.99798765991092" : 326.741, + "99.99800189443604" : 326.747, + "99.99801771057507" : 326.753, + "99.99803774435118" : 326.761, + "99.99804776123923" : 326.765, + "99.99806357737826" : 326.773, + "99.99808044792655" : 326.781, + "99.99809415524705" : 326.787, + "99.99811260740924" : 326.791, + "99.99812367870656" : 326.795, + "99.99813844043632" : 326.801, + "99.99815741980316" : 326.809, + "99.99816954550975" : 326.813, + "99.99818694326268" : 326.819, + "99.99820434101561" : 326.823, + "99.99821752113147" : 326.825, + "99.99823333727049" : 326.829, + "99.99824651738635" : 326.831, + "99.99826971439026" : 326.835, + "99.99827920407368" : 326.837, + "99.99829660182661" : 326.843, + "99.99830925473783" : 326.845, + "99.99832928851394" : 327.209, + "99.99833719658345" : 327.213, + "99.99835248551784" : 327.223, + "99.99836935606615" : 327.239, + "99.99838411779591" : 327.257, + "99.99840046113957" : 327.267, + "99.99841311405079" : 327.271, + "99.99843420223617" : 327.277, + "99.99844738235201" : 327.283, + "99.99846530730959" : 327.289, + "99.99848744990422" : 327.293, + "99.99849852120154" : 327.295, + "99.99850906529423" : 327.297, + "99.99851644615912" : 327.299, + "99.99852646304716" : 327.301, + "99.99853278950278" : 327.303, + "99.99853858875375" : 327.305, + "99.99854280639083" : 327.307, + "99.9985533504835" : 327.311, + "99.99856073134839" : 327.315, + "99.99857074823645" : 327.319, + "99.99857602028278" : 327.321, + "99.99858181953377" : 327.323, + "99.99858972760327" : 327.333, + "99.99860185330986" : 327.337, + "99.99860659815157" : 327.339, + "99.99862135988134" : 327.343, + "99.9986361216111" : 327.345, + "99.99864613849914" : 327.347, + "99.99865246495476" : 327.349, + "99.99866300904745" : 327.353, + "99.99866880829842" : 327.355, + "99.99867302593549" : 327.357, + "99.99868515164208" : 327.363, + "99.9986898964838" : 327.365, + "99.99869569573477" : 327.367, + "99.99870993025989" : 327.371, + "99.99872047435258" : 327.373, + "99.99873049124064" : 327.375, + "99.99873945371941" : 327.377, + "99.99874788899356" : 327.379, + "99.99875737867698" : 327.381, + "99.99876686836039" : 327.383, + "99.99878637493187" : 327.385, + "99.99879744622919" : 327.387, + "99.99880429988943" : 327.389, + "99.99881115354968" : 327.391, + "99.99882064323309" : 327.393, + "99.99883224173504" : 327.395, + "99.99883540496286" : 327.397, + "99.99884120421383" : 327.399, + "99.99885385712506" : 327.403, + "99.99886018358066" : 327.405, + "99.99886334680848" : 329.457, + "99.99887125487798" : 336.761, + "99.9988791629475" : 358.861, + "99.99888812542629" : 358.869, + "99.99889550629116" : 358.875, + "99.99890183274678" : 358.879, + "99.99891343124872" : 358.885, + "99.99891817609044" : 358.889, + "99.99892555695531" : 359.325, + "99.99893504663874" : 359.329, + "99.99894137309435" : 359.331, + "99.99895033557313" : 359.335, + "99.99895877084728" : 359.337, + "99.99896457009825" : 359.341, + "99.99897036934924" : 359.345, + "99.99897775021411" : 359.351, + "99.99898565828363" : 359.355, + "99.9989930391485" : 359.361, + "99.99900147442266" : 359.367, + "99.99901201851534" : 359.373, + "99.99901676335705" : 359.377, + "99.99902572583584" : 359.383, + "99.99903363390534" : 359.389, + "99.99903890595169" : 359.393, + "99.9990468140212" : 359.399, + "99.99905419488609" : 359.405, + "99.99906421177414" : 359.411, + "99.99907159263901" : 359.417, + "99.9990789735039" : 359.423, + "99.99908899039195" : 359.427, + "99.99909215361976" : 359.429, + "99.99910322491708" : 359.435, + "99.99911007857732" : 359.439, + "99.99911798664684" : 359.445, + "99.99912325869317" : 359.449, + "99.99913063955806" : 359.455, + "99.99913960203683" : 359.461, + "99.99914909172026" : 359.467, + "99.9991543637666" : 359.471, + "99.99916174463148" : 359.477, + "99.99917017990563" : 359.481, + "99.99917650636124" : 359.487, + "99.99918494163539" : 359.495, + "99.9991928497049" : 359.499, + "99.99919970336515" : 359.505, + "99.99920866584394" : 359.511, + "99.99921446509491" : 359.513, + "99.99922606359686" : 359.519, + "99.99923186284784" : 359.521, + "99.99923871650809" : 359.525, + "99.99924135253126" : 359.527, + "99.9992466245776" : 359.531, + "99.99924873339614" : 359.533, + "99.99925295103321" : 359.537, + "99.99925716867028" : 359.541, + "99.99926138630737" : 359.545, + "99.99926454953517" : 359.547, + "99.99926771276297" : 359.557, + "99.99927245760468" : 359.561, + "99.99927562083249" : 359.563, + "99.9992819472881" : 359.567, + "99.9992851105159" : 359.569, + "99.99929038256225" : 359.571, + "99.99929407299469" : 359.573, + "99.99929776342712" : 359.575, + "99.9993003994503" : 359.577, + "99.99930356267811" : 359.579, + "99.99930725311054" : 359.581, + "99.99930988913371" : 359.583, + "99.99931516118006" : 359.587, + "99.99931779720323" : 359.589, + "99.9993220148403" : 359.593, + "99.99932623247737" : 359.595, + "99.99932992290982" : 359.599, + "99.99933466775153" : 359.601, + "99.99933677657006" : 359.603, + "99.99934257582105" : 359.607, + "99.99934521184421" : 359.609, + "99.99935311991372" : 359.611, + "99.99936050077861" : 359.613, + "99.99936471841568" : 359.617, + "99.99937209928056" : 359.621, + "99.99937526250837" : 359.623, + "99.99938106175935" : 359.627, + "99.99938369778252" : 359.629, + "99.99938633380569" : 359.631, + "99.99939213305666" : 359.635, + "99.99939371467057" : 359.637, + "99.99939740510301" : 359.641, + "99.99940162274008" : 359.645, + "99.99940584037715" : 359.647, + "99.99941163962814" : 359.651, + "99.99941374844667" : 359.653, + "99.99941638446984" : 359.655, + "99.99942376533473" : 359.659, + "99.99942534694863" : 359.661, + "99.99942851017643" : 359.665, + "99.99943220060887" : 359.669, + "99.99943589104132" : 359.673, + "99.99943958147375" : 359.677, + "99.99944485352009" : 359.683, + "99.99944696233862" : 359.685, + "99.99945117997571" : 359.691, + "99.99945539761278" : 360.037, + "99.99945856084058" : 360.041, + "99.99946225127303" : 360.447, + "99.9994664689101" : 360.451, + "99.9994712137518" : 360.455, + "99.99947543138889" : 360.457, + "99.99947859461669" : 360.459, + "99.99948544827693" : 360.463, + "99.99949177473255" : 360.465, + "99.99949757398352" : 360.467, + "99.9995017916206" : 360.471, + "99.99950442764377" : 360.473, + "99.99951075409938" : 360.477, + "99.99951339012254" : 360.479, + "99.99951655335036" : 360.481, + "99.99952129819206" : 360.485, + "99.9995249886245" : 360.487, + "99.99952815185232" : 360.489, + "99.99953131508012" : 360.491, + "99.99953500551256" : 360.495, + "99.99953922314963" : 360.499, + "99.99954502240061" : 360.503, + "99.99954818562841" : 360.505, + "99.99955187606085" : 360.507, + "99.99955503928867" : 360.509, + "99.9995587297211" : 360.513, + "99.99956136574427" : 360.515, + "99.99956611058597" : 360.519, + "99.99957349145086" : 360.523, + "99.9995771818833" : 360.525, + "99.99958192672501" : 360.529, + "99.99958508995282" : 360.531, + "99.99958983479452" : 360.535, + "99.9995940524316" : 360.537, + "99.9995972156594" : 360.539, + "99.99960037888721" : 360.541, + "99.99960459652428" : 360.543, + "99.99960828695673" : 360.545, + "99.99961145018453" : 360.547, + "99.99961672223087" : 360.551, + "99.9996188310494" : 360.553, + "99.99962357589112" : 360.555, + "99.99962832073282" : 360.557, + "99.999630956756" : 360.559, + "99.99963411998381" : 360.561, + "99.99963728321161" : 360.563, + "99.99963991923478" : 360.565, + "99.99964255525795" : 360.567, + "99.99964466407648" : 360.569, + "99.99964624569039" : 360.571, + "99.9996494089182" : 360.573, + "99.9996509905321" : 360.575, + "99.99965362655527" : 360.577, + "99.99965626257844" : 360.579, + "99.99965837139698" : 360.581, + "99.99966048021552" : 360.583, + "99.9996631162387" : 360.585, + "99.9996678610804" : 360.587, + "99.9996726059221" : 360.589, + "99.99967629635455" : 360.591, + "99.99967893237772" : 360.593, + "99.99968156840089" : 360.595, + "99.99968367721942" : 360.597, + "99.99968684044724" : 360.601, + "99.99968894926577" : 360.603, + "99.99969211249358" : 360.605, + "99.99969474851675" : 360.607, + "99.99969738453991" : 360.609, + "99.99969949335845" : 360.611, + "99.99970212938163" : 360.613, + "99.99970371099553" : 360.615, + "99.99970581981407" : 360.617, + "99.99970845583724" : 360.619, + "99.99971161906504" : 360.621, + "99.99971425508822" : 360.623, + "99.99971689111139" : 360.625, + "99.99972058154383" : 360.627, + "99.99972374477163" : 360.629, + "99.99972690799945" : 360.631, + "99.99972954402261" : 360.633, + "99.99973218004578" : 360.635, + "99.99973428886432" : 360.637, + "99.99973639768285" : 360.639, + "99.99973956091065" : 360.641, + "99.99974219693384" : 360.643, + "99.99974536016164" : 360.645, + "99.99974799618481" : 360.647, + "99.99975010500334" : 360.649, + "99.99975484984506" : 360.651, + "99.99975906748213" : 360.653, + "99.99976433952847" : 360.655, + "99.99976802996092" : 360.657, + "99.99977172039335" : 360.659, + "99.99977646523506" : 360.661, + "99.99978173728141" : 360.663, + "99.99978437330458" : 360.665, + "99.99978700932775" : 360.667, + "99.99978911814628" : 360.669, + "99.99979069976018" : 360.671, + "99.99979280857872" : 360.673, + "99.99979491739727" : 360.675, + "99.99979755342044" : 360.677, + "99.99979966223897" : 360.679, + "99.99980071664824" : 360.681, + "99.9998033526714" : 360.685, + "99.99980546148994" : 360.687, + "99.99980757030849" : 360.689, + "99.99980967912703" : 360.691, + "99.99981178794556" : 360.693, + "99.9998138967641" : 360.695, + "99.99981600558263" : 360.697, + "99.99981811440117" : 360.699, + "99.99982022321971" : 360.701, + "99.99982285924288" : 360.703, + "99.99982444085678" : 360.705, + "99.99982654967532" : 360.707, + "99.99982918569849" : 360.709, + "99.99983076731239" : 360.711, + "99.99983234892629" : 360.713, + "99.99983445774484" : 360.715, + "99.99983709376801" : 360.717, + "99.99983920258654" : 360.719, + "99.99984078420044" : 360.721, + "99.99984289301898" : 360.723, + "99.99984500183751" : 360.725, + "99.99984711065606" : 360.727, + "99.99984869226996" : 360.729, + "99.9998508010885" : 360.731, + "99.99985290990703" : 360.733, + "99.99985501872557" : 360.735, + "99.99985765474874" : 360.737, + "99.99985976356727" : 360.739, + "99.99986187238582" : 360.741, + "99.99986398120436" : 360.743, + "99.99986714443216" : 360.745, + "99.9998692532507" : 360.747, + "99.99987136206923" : 360.749, + "99.99987294368313" : 360.757, + "99.99987505250168" : 360.759, + "99.99987716132021" : 360.761, + "99.99987927013875" : 360.763, + "99.99988085175265" : 360.765, + "99.99988296057118" : 360.767, + "99.99988506938972" : 360.769, + "99.99988717820827" : 360.771, + "99.99989192304997" : 360.773, + "99.99989614068704" : 360.775, + "99.9999014127334" : 360.777, + "99.9999045759612" : 360.779, + "99.9999061575751" : 360.781, + "99.99990879359827" : 360.783, + "99.9999109024168" : 360.785, + "99.99991301123534" : 360.787, + "99.99991564725852" : 360.789, + "99.99991828328169" : 360.791, + "99.99991986489559" : 360.793, + "99.9999261913512" : 360.795, + "99.99992988178364" : 360.797, + "99.99993409942071" : 360.799, + "99.99993726264852" : 360.801, + "99.99994200749023" : 360.803, + "99.99994517071804" : 360.805, + "99.9999478067412" : 360.807, + "99.99994991555974" : 360.809, + "99.99995360599219" : 360.811, + "99.99995887803853" : 360.813, + "99.9999630956756" : 360.815, + "99.99996573169877" : 360.817, + "99.99996784051731" : 360.819, + "99.99997100374512" : 360.821, + "99.99997416697292" : 360.823, + "99.99997891181462" : 360.825, + "99.99998471106561" : 360.827, + "99.99998998311194" : 360.829, + "99.99999314633975" : 360.831, + "99.99999630956756" : 360.833, + "99.99999894559073" : 360.835, + "99.99999947279537" : 369.977, + "100.0" : 374.879 + }, + "endToEndLatencyAvg" : [ 354.82088229486305, 350.04715541228035, 358.061402605532, 356.48471652637545, 357.67503693215076, 357.30857610569313, 355.1642711129127, 361.5971594667902, 358.85180886880795, 357.03656889043884, 353.12577205615156, 365.821619470342, 374.1563856199302, 365.9980571695218, 387.12396566656366, 375.54900743922013, 375.2712957962545, 374.03500059862296, 380.87055665609796, 378.0787200901685, 378.86326841131796, 374.7973664564129, 378.8433271976067, 378.19711142090915, 373.936951363364, 379.0020248677707, 378.34611063525693, 371.31109331677374, 378.2344234223419, 371.7402393692417, 372.6940299468847, 367.3924672333612, 380.1857960360996, 375.1060657001118, 374.1288217388799, 375.2116204269227, 374.3187671187238, 376.7306190416728, 375.27839448080726, 376.61053795827814, 377.7842774727789, 371.7076845797964, 382.91203996436064, 372.42581289052475, 390.962442162707, 375.92440138514326, 366.83427987465046, 386.08980117466484, 376.66051339672583, 388.2489521042181, 371.97110424805777, 376.7127622787086, 385.4959347411811, 373.8024700754445, 378.6873263843486, 376.7010378454308, 379.92633013035464, 375.0094914649074, 374.82231076536544, 373.92846815427737 ], + "endToEndLatency50pct" : [ 336.001, 337.001, 340.001, 340.001, 342.001, 341.001, 340.001, 345.001, 342.001, 337.001, 337.001, 349.001, 356.001, 349.001, 366.001, 354.001, 360.001, 354.001, 360.001, 358.001, 355.001, 358.001, 360.001, 359.001, 355.001, 359.001, 360.001, 352.001, 359.001, 354.001, 356.001, 351.001, 358.001, 353.001, 352.001, 354.001, 355.001, 358.001, 359.001, 357.001, 363.001, 356.001, 362.001, 356.001, 369.001, 357.001, 350.001, 364.001, 358.001, 367.001, 355.001, 358.001, 366.001, 353.001, 356.001, 356.001, 361.001, 354.001, 352.001, 354.001 ], + "endToEndLatency75pct" : [ 421.001, 416.001, 425.001, 421.001, 420.001, 425.001, 424.001, 425.001, 428.001, 425.001, 420.001, 437.001, 451.001, 435.001, 458.001, 453.001, 448.001, 445.001, 455.001, 455.001, 461.001, 444.001, 458.001, 453.001, 450.001, 457.001, 454.001, 446.001, 451.001, 445.001, 446.001, 434.001, 456.001, 446.001, 444.001, 452.001, 446.001, 451.001, 442.001, 448.001, 451.001, 441.001, 456.001, 445.001, 465.001, 447.001, 434.001, 465.001, 449.001, 463.001, 446.001, 451.001, 468.001, 449.001, 454.001, 454.001, 457.001, 450.001, 450.001, 445.001 ], + "endToEndLatency95pct" : [ 580.003, 565.003, 586.003, 582.003, 585.003, 586.003, 574.003, 599.003, 574.003, 595.003, 588.003, 602.003, 605.003, 581.003, 648.003, 616.003, 605.003, 609.003, 620.003, 617.003, 628.003, 605.003, 625.003, 607.003, 609.003, 607.003, 625.003, 606.003, 608.003, 608.003, 599.003, 598.003, 621.003, 621.003, 622.003, 607.003, 613.003, 614.003, 598.003, 621.003, 613.003, 607.003, 624.003, 606.003, 644.003, 609.003, 592.003, 635.003, 620.003, 640.003, 596.003, 617.003, 619.003, 618.003, 629.003, 625.003, 622.003, 615.003, 622.003, 637.003 ], + "endToEndLatency99pct" : [ 684.003, 640.003, 685.003, 730.003, 689.003, 674.003, 662.003, 697.003, 663.003, 707.003, 669.003, 686.003, 700.003, 659.003, 749.003, 699.003, 683.003, 703.003, 720.003, 709.003, 718.003, 684.003, 711.003, 696.003, 690.003, 699.003, 716.003, 690.003, 707.003, 690.003, 697.003, 687.003, 709.003, 737.003, 714.003, 699.003, 700.003, 710.003, 706.003, 718.003, 709.003, 683.003, 704.003, 706.003, 754.003, 698.003, 677.003, 757.003, 698.003, 735.003, 681.003, 695.003, 714.003, 725.003, 720.003, 739.003, 712.003, 703.003, 719.003, 747.003 ], + "endToEndLatency999pct" : [ 852.003, 717.003, 791.003, 962.003, 815.003, 764.003, 765.003, 796.003, 737.003, 808.003, 769.003, 791.003, 797.003, 735.003, 830.003, 797.003, 786.003, 789.003, 835.003, 778.003, 820.003, 747.003, 761.003, 857.003, 840.003, 793.003, 795.003, 751.003, 827.003, 831.003, 777.003, 793.003, 802.003, 881.003, 850.003, 816.003, 792.003, 789.003, 931.003, 876.003, 777.003, 755.003, 819.003, 776.003, 920.003, 785.003, 732.003, 965.003, 799.003, 867.003, 765.003, 780.003, 902.003, 826.003, 832.003, 867.003, 783.003, 760.003, 813.003, 848.003 ], + "endToEndLatency9999pct" : [ 908.003, 761.003, 854.003, 1030.003, 842.003, 822.003, 821.003, 822.003, 759.003, 851.003, 802.003, 837.003, 845.003, 792.003, 866.003, 870.003, 822.003, 812.003, 876.003, 832.003, 902.003, 774.003, 777.003, 902.003, 907.003, 858.003, 862.003, 774.003, 867.003, 910.003, 819.003, 836.003, 836.003, 902.003, 922.003, 850.003, 837.003, 827.003, 999.003, 918.003, 808.003, 837.003, 865.003, 797.003, 990.003, 819.003, 751.003, 1019.003, 824.003, 946.003, 810.003, 834.003, 978.003, 880.003, 873.003, 936.003, 842.003, 786.003, 840.003, 896.003 ], + "endToEndLatencyMax" : [ 913.003, 771.003, 857.003, 1039.003, 844.003, 828.003, 827.003, 836.003, 773.003, 853.003, 812.003, 851.003, 847.003, 802.003, 876.003, 876.003, 831.003, 815.003, 892.003, 841.003, 908.003, 777.003, 783.003, 910.003, 916.003, 877.003, 872.003, 780.003, 876.003, 917.003, 829.003, 846.003, 842.003, 910.003, 932.003, 855.003, 844.003, 833.003, 1008.003, 928.003, 813.003, 847.003, 871.003, 803.003, 999.003, 825.003, 759.003, 1033.003, 829.003, 957.003, 819.003, 835.003, 988.003, 887.003, 883.003, 942.003, 848.003, 789.003, 845.003, 903.003 ], + "aggregatedEndToEndLatencyQuantiles" : { + "8.43567511962789E-6" : 17.0, + "0.5084766619561154" : 91.0, + "1.0006234385697161" : 142.0, + "1.5120462600613616" : 161.0, + "2.0172888950684897" : 172.0, + "2.510737401798988" : 180.0, + "3.068728840558844" : 187.0, + "3.5414519479798066" : 192.0, + "4.109075873266888" : 197.0, + "4.628874265692934" : 201.0, + "5.060388572924819" : 204.0, + "5.519734281295137" : 207.0, + "6.029124632312647" : 210.0, + "6.579300418074168" : 213.0, + "7.156823080884437" : 216.0, + "7.549098845297373" : 218.0, + "8.188333216674977" : 221.0, + "8.619513787509941" : 223.0, + "9.07046178129867" : 225.0, + "9.527000518772931" : 227.0, + "10.240106097173115" : 230.0, + "10.728750486922985" : 232.0, + "11.237095341455356" : 234.0, + "11.74683577299033" : 236.0, + "12.003320366083837" : 237.0, + "12.527765233811714" : 239.0, + "13.055726196375389" : 241.0, + "13.60147905222575" : 243.0, + "14.159561701722836" : 245.0, + "14.714275353469024" : 247.0, + "15.276302735543926" : 249.0, + "15.562013252319078" : 250.0, + "16.1173843594949" : 252.0, + "16.681858087354495" : 254.0, + "17.252335906980484" : 256.0, + "17.5494904715148" : 257.0, + "18.139604961130203" : 259.0, + "18.721083955571576" : 261.0, + "19.009179659486804" : 262.0, + "19.59031226401858" : 264.001, + "20.182134977845703" : 266.001, + "20.76527210967778" : 268.001, + "21.055843684240617" : 269.001, + "21.65710750021569" : 271.001, + "22.24860438609132" : 273.001, + "22.552290272087006" : 274.001, + "23.15189858681985" : 276.001, + "23.75748199568587" : 278.001, + "24.054042372353948" : 279.001, + "24.677348607416608" : 281.001, + "25.298326068916555" : 283.001, + "25.602754821552466" : 284.001, + "26.224903260204957" : 286.001, + "26.540032666730117" : 287.001, + "27.177030002511934" : 289.001, + "27.81187782282733" : 291.001, + "28.12873337937384" : 292.001, + "28.77303231920139" : 294.001, + "29.102680049837126" : 295.001, + "29.76077711801191" : 297.001, + "30.090527658438166" : 298.001, + "30.77550236923317" : 300.001, + "31.107455675325035" : 301.001, + "31.78497852161124" : 303.001, + "32.13183186611285" : 304.001, + "32.81924448701742" : 306.001, + "33.163660975868844" : 307.001, + "33.50922946160379" : 308.001, + "34.21513993635663" : 310.001, + "34.5621957370611" : 311.001, + "35.275139983174626" : 313.001, + "35.63514929025499" : 314.001, + "36.34548216768928" : 316.001, + "36.70255006030137" : 317.001, + "37.05742784076052" : 318.001, + "37.77890160887937" : 320.001, + "38.14423171804144" : 321.001, + "38.50854111051403" : 322.001, + "39.25138771600785" : 324.001, + "39.61617583304348" : 325.001, + "40.35264454091717" : 327.001, + "40.719902729073766" : 328.001, + "41.08858074679893" : 329.001, + "41.829354285132105" : 331.001, + "42.19724725784145" : 332.001, + "42.56328438202448" : 333.001, + "43.308592095734454" : 335.001, + "43.6809354142991" : 336.001, + "44.048873201532516" : 337.001, + "44.77903307887611" : 339.001, + "45.14416864028073" : 340.001, + "45.51566417349586" : 341.001, + "46.25756914675445" : 343.001, + "46.62022356521451" : 344.001, + "47.354154189336576" : 346.001, + "47.71656133706969" : 347.001, + "48.075903698585904" : 348.001, + "48.80654177326284" : 350.001, + "49.17727229619056" : 351.001, + "49.536881963162124" : 352.001, + "50.26263156410724" : 354.001, + "50.62154423342205" : 355.001, + "50.97529216064486" : 356.001, + "51.33707928625668" : 357.001, + "51.69403171556557" : 358.001, + "52.04705312026871" : 359.001, + "52.40092494646984" : 360.001, + "52.7538915192847" : 361.001, + "53.105002243573246" : 362.001, + "53.44474642286778" : 363.001, + "53.78957573257037" : 364.001, + "54.124849004051505" : 365.001, + "54.46971943767031" : 366.001, + "54.80865484661275" : 367.001, + "55.15065135116423" : 368.001, + "55.48342397220209" : 369.001, + "55.81902412609411" : 370.001, + "56.155586474179465" : 371.001, + "56.48381173909815" : 372.001, + "56.80843338905167" : 373.001, + "57.13421125372628" : 374.001, + "57.46058330626712" : 375.001, + "57.784999863869295" : 376.001, + "58.106256206679774" : 377.001, + "58.42170880500796" : 378.001, + "58.73512840563231" : 379.001, + "59.05019296290498" : 380.001, + "59.358174716455345" : 381.001, + "59.66428638627762" : 382.001, + "59.97026835759493" : 383.001, + "60.27409237777071" : 384.001, + "60.58017241381128" : 385.001, + "60.87789954979434" : 386.001, + "61.176812952591106" : 387.001, + "61.47597626226328" : 388.001, + "61.77034494508934" : 389.001, + "62.0652071149099" : 390.001, + "62.354890307436705" : 391.001, + "62.64452604929096" : 392.001, + "62.93675787016328" : 393.001, + "63.22326713992632" : 394.001, + "63.504197265057115" : 395.001, + "63.78721363809094" : 396.001, + "64.06903267248747" : 397.001, + "64.34732243130581" : 398.001, + "64.62175814105389" : 399.001, + "64.89426577180744" : 400.001, + "65.16649607974142" : 401.001, + "65.42998808271086" : 402.001, + "65.6955484077737" : 403.001, + "65.95409657789335" : 404.001, + "66.21651461397413" : 405.001, + "66.47128149272139" : 406.001, + "66.72698209525846" : 407.001, + "66.98543272788454" : 408.001, + "67.23379692921601" : 409.001, + "67.48375916375296" : 410.001, + "67.73378308416423" : 411.001, + "67.97950481026447" : 412.001, + "68.22133241783763" : 413.001, + "68.46364771287864" : 414.001, + "68.70556705841872" : 415.001, + "68.9454491884174" : 416.001, + "69.18141452901212" : 417.001, + "69.41378679923555" : 418.001, + "69.65267404679982" : 419.001, + "69.88883604407076" : 420.001, + "70.1198222274261" : 421.001, + "70.34518023378756" : 422.001, + "70.57071960716411" : 423.001, + "70.79650203343003" : 424.001, + "71.02308426714323" : 425.001, + "71.464907496601" : 427.001, + "71.67914201085786" : 428.001, + "71.89343557484054" : 429.001, + "72.10426207634906" : 430.001, + "72.31537011851469" : 431.001, + "72.52459964127713" : 432.001, + "72.9374658341977" : 434.001, + "73.1380498444219" : 435.001, + "73.34093732118346" : 436.001, + "73.53685113076956" : 437.001, + "73.93216110207709" : 439.001, + "74.12917787618508" : 440.001, + "74.32037508891993" : 441.001, + "74.51131448633392" : 442.001, + "74.88662083578434" : 444.001, + "75.07314204835443" : 445.001, + "75.25435827573367" : 446.001, + "75.43562511716362" : 447.001, + "75.61641165234145" : 448.001, + "75.79577255842406" : 449.001, + "75.9770842143781" : 450.001, + "76.15223466411662" : 451.001, + "76.33078890876591" : 452.001, + "76.50337807664624" : 453.001, + "76.6744324788845" : 454.001, + "76.84469656380999" : 455.001, + "77.01411549953443" : 456.001, + "77.18572823801966" : 457.001, + "77.35611727638285" : 458.001, + "77.52179129958387" : 459.001, + "77.69256152501653" : 460.001, + "77.85448430893778" : 461.001, + "78.01955781751623" : 462.001, + "78.18071137331252" : 463.001, + "78.33809840016788" : 464.001, + "78.49771560863302" : 465.001, + "78.65573425666297" : 466.001, + "78.80904316182769" : 467.001, + "78.96427961875726" : 468.001, + "79.12488854627863" : 469.001, + "79.28032007819533" : 470.001, + "79.43341387364451" : 471.001, + "79.58881798961707" : 472.001, + "79.73996208965423" : 473.001, + "79.89751783001199" : 474.001, + "80.04952078722226" : 475.001, + "80.20238734667291" : 476.001, + "80.35304165032342" : 477.001, + "80.5002172924465" : 478.001, + "80.65095806176699" : 479.001, + "80.79916285625464" : 480.001, + "80.94811948028733" : 481.001, + "81.09073300385977" : 482.001, + "81.23466196552116" : 483.001, + "81.37926103612487" : 484.001, + "81.52397978786934" : 485.001, + "81.66702774871044" : 486.001, + "81.8082209154846" : 487.001, + "81.94883782020214" : 488.001, + "82.09333144486686" : 489.001, + "82.23491265269652" : 490.001, + "82.376304057836" : 491.001, + "82.51621500199198" : 492.001, + "82.64989936345029" : 493.001, + "82.78872263274552" : 494.001, + "82.92226042434862" : 495.001, + "83.05794614972906" : 496.001, + "83.19546083492136" : 497.001, + "83.3290481861158" : 498.001, + "83.46641788314199" : 499.001, + "83.60156267085537" : 500.001, + "83.7343945018969" : 501.001, + "83.86960308440338" : 502.001, + "83.99830723416294" : 503.001, + "84.1275871187494" : 504.001, + "84.25882038935576" : 505.001, + "84.38955595513005" : 506.001, + "84.51966675371581" : 507.001, + "84.65113885937399" : 508.001, + "84.78315190269922" : 509.001, + "84.90834944775747" : 510.001, + "85.03721176642551" : 511.001, + "85.16486514740298" : 512.001, + "85.29254067202764" : 513.001, + "85.4197938856666" : 514.001, + "85.54724955550846" : 515.001, + "85.67451542266012" : 516.001, + "85.79493995728976" : 517.001, + "85.91998355127708" : 518.001, + "86.04509463066537" : 519.001, + "86.17114154276224" : 520.001, + "86.29450327402259" : 521.001, + "86.4175961181385" : 522.001, + "86.546379879582" : 523.001, + "86.66448302186465" : 524.001, + "86.78776461421137" : 525.003, + "86.91144321051841" : 526.003, + "87.026435170371" : 527.003, + "87.14360353440446" : 528.003, + "87.26416356706572" : 529.003, + "87.38417580807388" : 530.003, + "87.50075420207867" : 531.003, + "87.61586320692355" : 532.003, + "87.73430430344068" : 533.003, + "87.84389479506824" : 534.003, + "87.95587732782191" : 535.003, + "88.07499275111893" : 536.003, + "88.19181156186461" : 537.003, + "88.30113053019926" : 538.003, + "88.41465099197318" : 539.003, + "88.5261980329988" : 540.003, + "88.64153216492343" : 541.003, + "88.75204689020629" : 542.003, + "88.86054179852769" : 543.003, + "88.97554588466328" : 544.003, + "89.08768236848788" : 545.003, + "89.19752487590964" : 546.003, + "89.30636037461399" : 547.003, + "89.41393315819887" : 548.003, + "89.52317884160593" : 549.003, + "89.63211345949293" : 550.003, + "89.74327193223336" : 551.003, + "89.85050517989467" : 552.003, + "89.95534533197049" : 553.003, + "90.06011167188902" : 554.003, + "90.16552386818388" : 555.003, + "90.27151232653537" : 556.003, + "90.37399576187464" : 557.003, + "90.47505989487505" : 558.003, + "90.57725599003055" : 559.003, + "90.67548679065014" : 560.003, + "90.77651665372036" : 561.003, + "90.8800012982504" : 562.003, + "90.98260230581165" : 563.003, + "91.08364376793517" : 564.003, + "91.18105472637907" : 565.003, + "91.27954281508981" : 566.003, + "91.37671230233342" : 567.003, + "91.47769629642018" : 568.003, + "91.57245792564682" : 569.003, + "91.66851917607158" : 570.003, + "91.76403210761357" : 571.003, + "91.8605161962537" : 572.003, + "91.9574341949328" : 573.003, + "92.05183625350747" : 574.003, + "92.14486856933459" : 575.003, + "92.23591428367105" : 576.003, + "92.3287114550542" : 577.003, + "92.4223021071283" : 578.003, + "92.51358718374628" : 579.003, + "92.60346613876774" : 580.003, + "92.69193422712544" : 581.003, + "92.78268943789996" : 582.003, + "92.87168422872296" : 583.003, + "92.96207301485946" : 584.003, + "93.05175794935317" : 585.003, + "93.13634931776372" : 586.003, + "93.22693476057646" : 587.003, + "93.31373891201682" : 588.003, + "93.40296146606804" : 589.003, + "93.4883062457127" : 590.003, + "93.5728290742629" : 591.003, + "93.65483912608683" : 592.003, + "93.73746814557268" : 593.003, + "93.82040032213312" : 594.003, + "93.90207347418198" : 595.003, + "93.98441146287618" : 596.003, + "94.06536600085079" : 597.003, + "94.14214857024902" : 598.003, + "94.22258325974437" : 599.003, + "94.30118740773875" : 600.003, + "94.38088186674236" : 601.003, + "94.4598165877555" : 602.003, + "94.53408743488687" : 603.003, + "94.61134292932151" : 604.003, + "94.68615629580901" : 605.003, + "94.76080094879413" : 606.003, + "94.83158944379018" : 607.003, + "94.90097234441942" : 608.003, + "94.97295079683704" : 609.003, + "95.04148011259011" : 610.003, + "95.11368896438444" : 611.003, + "95.18256256112834" : 612.003, + "95.25076973953777" : 613.003, + "95.32230373732253" : 614.003, + "95.38785315083959" : 615.003, + "95.45373102845663" : 616.003, + "95.5208964009888" : 617.003, + "95.58597236223979" : 618.003, + "95.65083057762673" : 619.003, + "95.71390939279314" : 620.003, + "95.77881136824479" : 621.003, + "95.84286397665781" : 622.003, + "95.90346059442027" : 623.003, + "95.96544277182113" : 624.003, + "96.02305843288818" : 625.003, + "96.08553515174293" : 626.003, + "96.14485850979202" : 627.003, + "96.20411332798076" : 628.003, + "96.26385688809674" : 629.003, + "96.31733485051763" : 630.003, + "96.37518196542078" : 631.003, + "96.43239587746027" : 632.003, + "96.4880824050734" : 633.003, + "96.54727606461752" : 634.003, + "96.59958146819677" : 635.003, + "96.65427100445672" : 636.003, + "96.70757603553764" : 637.003, + "96.75887548485888" : 638.003, + "96.81313005662047" : 639.003, + "96.86282145537201" : 640.003, + "96.91563985344449" : 641.003, + "96.96775229095537" : 642.003, + "97.01841484680509" : 643.003, + "97.06766126369408" : 644.003, + "97.11361302221917" : 645.003, + "97.15701246179087" : 646.003, + "97.20160027709505" : 647.003, + "97.24849261339598" : 648.003, + "97.29296865600483" : 649.003, + "97.33824239714218" : 650.003, + "97.38143358098436" : 651.003, + "97.42510401661929" : 652.003, + "97.46916354776911" : 653.003, + "97.5081142231746" : 654.003, + "97.54966308651694" : 655.003, + "97.58967454806873" : 656.003, + "97.62868163705157" : 657.003, + "97.66695218615055" : 658.003, + "97.706746429068" : 659.003, + "97.74515774849553" : 660.003, + "97.78238807340632" : 661.003, + "97.82069605581363" : 662.003, + "97.85707964983428" : 663.003, + "97.89542559277963" : 664.003, + "97.93059339512367" : 665.003, + "97.96574959841442" : 666.003, + "98.00273528874672" : 667.003, + "98.04010796567515" : 668.003, + "98.07434784375603" : 669.003, + "98.10444158751561" : 670.003, + "98.13678818376182" : 671.003, + "98.17080346199263" : 672.003, + "98.2055062477457" : 673.003, + "98.23603021093638" : 674.003, + "98.26352154892155" : 675.003, + "98.29269896747125" : 676.003, + "98.32494591730512" : 677.003, + "98.35630712125142" : 678.003, + "98.38593637564972" : 679.003, + "98.41489235772754" : 680.003, + "98.44158125211696" : 681.003, + "98.46966466904959" : 682.003, + "98.50047702688342" : 683.003, + "98.52711847060029" : 684.003, + "98.55510540449875" : 685.003, + "98.57954935484695" : 686.003, + "98.60671908271819" : 687.003, + "98.6340912667923" : 688.003, + "98.65802960386301" : 689.003, + "98.68348794414436" : 690.003, + "98.70809744461678" : 691.003, + "98.73205581641592" : 692.003, + "98.75559345891847" : 693.003, + "98.77691251886455" : 694.003, + "98.79846777771397" : 695.003, + "98.82152880457225" : 696.003, + "98.84185034593544" : 697.003, + "98.86387062137584" : 698.003, + "98.88584397337338" : 699.003, + "98.90656884545322" : 700.003, + "98.92767174122436" : 701.003, + "98.94681386975988" : 702.003, + "98.96818723436455" : 703.003, + "98.98738261309926" : 704.003, + "99.00654899420074" : 705.003, + "99.02599058920302" : 706.003, + "99.04437667035594" : 707.003, + "99.06404233797858" : 708.003, + "99.08213844279926" : 709.003, + "99.09958131002787" : 710.003, + "99.11703419462069" : 711.003, + "99.13511922761778" : 712.003, + "99.15262272626131" : 713.003, + "99.16924733300331" : 714.003, + "99.18527617019" : 715.003, + "99.20314872962001" : 716.003, + "99.21842573726165" : 717.003, + "99.23265988456664" : 718.003, + "99.24846781251114" : 719.003, + "99.26370844130382" : 720.003, + "99.27839495168709" : 721.003, + "99.29214931996965" : 722.003, + "99.30623215235217" : 723.003, + "99.3209766580019" : 724.003, + "99.3345892014965" : 725.003, + "99.34658420428691" : 726.003, + "99.35891241624455" : 727.003, + "99.3715854364227" : 728.003, + "99.38385301696543" : 729.003, + "99.39543098106712" : 730.003, + "99.4064321558825" : 731.003, + "99.41806653356156" : 732.003, + "99.42963131692088" : 733.003, + "99.44204335840001" : 734.003, + "99.45281887890594" : 735.003, + "99.46341145070772" : 736.003, + "99.47415955526952" : 737.003, + "99.48561678377106" : 738.003, + "99.49554399169777" : 739.003, + "99.5059109091901" : 740.003, + "99.51530245174672" : 741.003, + "99.52522333291711" : 742.003, + "99.53400381625724" : 743.003, + "99.5428876366176" : 744.003, + "99.55252803159026" : 745.003, + "99.56098163251951" : 746.003, + "99.56902399428668" : 747.003, + "99.57889584309542" : 748.003, + "99.58778177237457" : 749.003, + "99.59669037253059" : 750.003, + "99.60480601922536" : 751.003, + "99.61296648044421" : 752.003, + "99.62170373094938" : 753.003, + "99.63046312510171" : 754.003, + "99.63942128484906" : 755.003, + "99.6477304248419" : 756.003, + "99.6550146303077" : 757.003, + "99.66186387127514" : 758.003, + "99.66979656926576" : 759.003, + "99.67759271476538" : 760.003, + "99.6854721625568" : 761.003, + "99.6926419591788" : 762.003, + "99.69885008883715" : 763.003, + "99.70452360758479" : 764.003, + "99.71125264018178" : 765.003, + "99.71751929233628" : 766.003, + "99.72437696897885" : 767.003, + "99.7294288839161" : 768.003, + "99.73511452894674" : 769.003, + "99.74059508162601" : 770.003, + "99.7460561268066" : 771.003, + "99.75107588073246" : 772.003, + "99.75606927317358" : 773.003, + "99.76132364431372" : 774.003, + "99.76577768077689" : 775.003, + "99.77037090587953" : 776.003, + "99.77573230464775" : 777.003, + "99.78070039006352" : 778.003, + "99.78518026078173" : 779.003, + "99.78907332484944" : 780.003, + "99.79404668256215" : 781.003, + "99.79884500001613" : 782.003, + "99.80301644136279" : 783.003, + "99.8068462378671" : 784.003, + "99.81107409279112" : 785.003, + "99.81585975673242" : 786.003, + "99.81958937959469" : 787.003, + "99.82302375382777" : 788.003, + "99.82672596074589" : 789.003, + "99.83021885747512" : 790.003, + "99.8340507628982" : 791.003, + "99.83702750175604" : 792.003, + "99.83961936293655" : 793.003, + "99.84265462429053" : 794.003, + "99.84603943893228" : 795.003, + "99.84886697178644" : 796.003, + "99.85187903503385" : 797.003, + "99.85435806905963" : 798.003, + "99.85750141250108" : 799.003, + "99.86020082853936" : 800.003, + "99.8625570180462" : 801.003, + "99.86564447513999" : 802.003, + "99.86807025896658" : 803.003, + "99.87099058424705" : 804.003, + "99.87327085267783" : 805.003, + "99.87569083697777" : 806.003, + "99.87798006831336" : 807.003, + "99.88034258457655" : 808.003, + "99.88293233683828" : 809.003, + "99.88509608750647" : 810.003, + "99.88757301261346" : 811.003, + "99.89002199454663" : 812.003, + "99.89249997411302" : 813.003, + "99.89456513282825" : 814.003, + "99.8962280152862" : 815.003, + "99.89813078725537" : 816.003, + "99.9003641322433" : 817.003, + "99.90271241330473" : 818.003, + "99.90487510951351" : 819.003, + "99.90681109695348" : 820.003, + "99.90867907176278" : 821.003, + "99.91075108446404" : 822.003, + "99.91256317292567" : 823.003, + "99.91406472309696" : 824.003, + "99.91546926300438" : 825.003, + "99.91688961980265" : 826.003, + "99.91866374772624" : 827.003, + "99.92040255126028" : 828.003, + "99.9216705386767" : 829.003, + "99.92341935957494" : 830.003, + "99.92511334858489" : 831.003, + "99.92702771960735" : 832.003, + "99.92827830844384" : 833.003, + "99.92954893200873" : 834.003, + "99.93082746401905" : 835.003, + "99.93234272216242" : 836.003, + "99.93384058172585" : 837.003, + "99.93486340733409" : 838.003, + "99.9361023971173" : 839.003, + "99.93733558737384" : 840.003, + "99.93893889287627" : 841.003, + "99.94053007209571" : 842.003, + "99.94167416053381" : 843.003, + "99.9426505899289" : 844.003, + "99.94401242423103" : 845.003, + "99.9454744321752" : 846.003, + "99.9464608789345" : 847.003, + "99.94749477636636" : 848.003, + "99.94868104318004" : 849.003, + "99.95015412294781" : 850.003, + "99.95131930057372" : 851.003, + "99.95232736375051" : 852.003, + "99.9535041404297" : 853.003, + "99.95443944590859" : 854.003, + "99.95600584533236" : 855.003, + "99.95697594797112" : 856.003, + "99.95785167649447" : 857.003, + "99.95884339555073" : 858.003, + "99.95982667893186" : 859.003, + "99.96056480050483" : 860.003, + "99.96126970660701" : 861.003, + "99.96222715573309" : 862.003, + "99.96313768141631" : 863.003, + "99.96363749516715" : 864.003, + "99.96437350782134" : 865.003, + "99.96508315899078" : 866.003, + "99.9656994905042" : 867.003, + "99.96625044553545" : 868.003, + "99.96693320799045" : 869.003, + "99.96755217565236" : 870.003, + "99.96811209358842" : 871.003, + "99.9688069823264" : 872.003, + "99.96943544012281" : 873.003, + "99.96968692868731" : 874.003, + "99.9701387645359" : 875.003, + "99.97100869353262" : 876.003, + "99.97150903451315" : 877.003, + "99.97182431787074" : 878.003, + "99.97216701717248" : 879.003, + "99.97252711505415" : 880.003, + "99.97342340553561" : 881.003, + "99.9739074023956" : 882.003, + "99.97415783650071" : 883.003, + "99.97444939452204" : 884.003, + "99.97488014118284" : 885.003, + "99.97540104412147" : 886.003, + "99.9759846873938" : 887.003, + "99.9762066510954" : 888.003, + "99.97640067162314" : 889.003, + "99.97677025963932" : 890.003, + "99.9770670899576" : 891.003, + "99.97759062904471" : 892.003, + "99.9776850031601" : 893.003, + "99.97793912787309" : 894.003, + "99.9783366590631" : 895.003, + "99.97882065592309" : 896.003, + "99.97928725420314" : 897.003, + "99.97950605452655" : 898.003, + "99.97984137261257" : 899.003, + "99.98054469702566" : 900.003, + "99.9810018051712" : 901.003, + "99.98152270810985" : 902.003, + "99.9818638257225" : 903.003, + "99.9822835005597" : 904.003, + "99.98282971052369" : 905.003, + "99.98332688812606" : 906.003, + "99.98378610519038" : 907.003, + "99.98396747220545" : 908.003, + "99.98426852036128" : 909.003, + "99.98478204208419" : 910.003, + "99.98519486293536" : 911.003, + "99.98561611946164" : 912.003, + "99.98585811789164" : 913.003, + "99.98604897504121" : 914.003, + "99.9863763846818" : 915.003, + "99.98668850466123" : 916.003, + "99.98696793639957" : 917.003, + "99.98718884564175" : 918.003, + "99.98749305717577" : 920.003, + "99.98764384486853" : 921.003, + "99.9879723089685" : 922.003, + "99.98819690881855" : 923.003, + "99.98849373913683" : 924.003, + "99.98894399329633" : 925.003, + "99.98910848896116" : 926.003, + "99.98936577705231" : 927.003, + "99.98942904461572" : 928.003, + "99.98968106040992" : 929.003, + "99.9899773634985" : 930.003, + "99.99006646531694" : 931.003, + "99.99039809279509" : 932.003, + "99.99044501623794" : 933.003, + "99.99061109359185" : 934.003, + "99.99085256479215" : 935.003, + "99.99098068160804" : 936.003, + "99.99118841010785" : 937.003, + "99.99135079685391" : 938.003, + "99.99151476528904" : 939.003, + "99.991644463794" : 940.003, + "99.9917599270972" : 941.003, + "99.99204041329493" : 942.003, + "99.99234198868047" : 943.003, + "99.99254339042395" : 944.003, + "99.99264620021447" : 945.003, + "99.99275006446437" : 946.003, + "99.99283811182343" : 947.003, + "99.99292984979036" : 948.003, + "99.99298573613802" : 950.003, + "99.99318239281426" : 951.003, + "99.99328889321264" : 953.003, + "99.9933563786136" : 956.003, + "99.9936605901476" : 957.003, + "99.99382350412334" : 958.003, + "99.99390575195577" : 959.003, + "99.99394845756106" : 960.003, + "99.99396058384404" : 961.003, + "99.9942168174758" : 962.003, + "99.99446936049969" : 963.003, + "99.9946886880528" : 964.003, + "99.99483578513771" : 965.003, + "99.99488587195873" : 966.003, + "99.99503033289515" : 967.003, + "99.99519641024906" : 968.003, + "99.99538041341262" : 969.003, + "99.99550536685032" : 970.003, + "99.99552171097086" : 971.003, + "99.99560975832993" : 972.003, + "99.9957700361572" : 973.003, + "99.99585122953023" : 974.003, + "99.99594349472684" : 976.003, + "99.99615333214545" : 977.003, + "99.99633891699808" : 978.003, + "99.99637265969857" : 980.003, + "99.99658460603594" : 981.003, + "99.99684558473496" : 982.003, + "99.99692308750012" : 983.003, + "99.99696157526785" : 984.003, + "99.9970617489099" : 985.003, + "99.99733221774342" : 986.003, + "99.99739284915835" : 987.003, + "99.99744029983088" : 988.003, + "99.99752992887903" : 989.003, + "99.99770813251594" : 990.003, + "99.99785364791175" : 991.003, + "99.99797649243068" : 993.003, + "99.99808246559937" : 994.003, + "99.99823588944061" : 995.003, + "99.99829388470705" : 997.003, + "99.99835873395953" : 998.003, + "99.99848210570816" : 999.003, + "99.99857911597203" : 1000.003, + "99.99868456191103" : 1001.003, + "99.99869299758615" : 1002.003, + "99.9987504656229" : 1003.003, + "99.99881056980813" : 1004.003, + "99.99890336223444" : 1005.003, + "99.99891548851743" : 1006.003, + "99.998919706355" : 1007.003, + "99.99893183263798" : 1008.003, + "99.9989608302712" : 1009.003, + "99.99902884290185" : 1010.003, + "99.9990341151988" : 1011.003, + "99.99908841985739" : 1012.003, + "99.99913217992207" : 1013.003, + "99.99921337329509" : 1014.003, + "99.99921495498418" : 1015.003, + "99.99925238829252" : 1016.003, + "99.99934992578609" : 1017.003, + "99.99941688395735" : 1018.003, + "99.99946907969716" : 1019.003, + "99.99947856983167" : 1020.003, + "99.9995697805689" : 1021.003, + "99.99958401577067" : 1022.003, + "99.99959825097243" : 1023.003, + "99.9996003598912" : 1024.003, + "99.99968155326424" : 1025.003, + "99.9996841894127" : 1026.003, + "99.99968998893935" : 1028.003, + "99.99970053353326" : 1029.003, + "99.9997796179875" : 1030.003, + "99.99978805366261" : 1031.003, + "99.99988295500772" : 1032.003, + "99.99988822730467" : 1033.003, + "99.99996573006983" : 1034.003, + "99.99997047513708" : 1035.003, + "99.99997416574494" : 1037.003, + "99.99997943804189" : 1038.003, + "100.0" : 1039.003 + }, + "aggregatedEndToEndLatencyAvg" : 372.7430884688423, + "aggregatedEndToEndLatency50pct" : 354.001, + "aggregatedEndToEndLatency75pct" : 445.001, + "aggregatedEndToEndLatency95pct" : 610.003, + "aggregatedEndToEndLatency99pct" : 705.003, + "aggregatedEndToEndLatency999pct" : 817.003, + "aggregatedEndToEndLatency9999pct" : 931.003, + "aggregatedEndToEndLatencyMax" : 1039.003 +} \ No newline at end of file diff --git a/blog/results/pulsar/throughput/default-sync-raid0.json b/blog/results/pulsar/throughput/default-sync-raid0.json new file mode 100644 index 00000000..986bab5a --- /dev/null +++ b/blog/results/pulsar/throughput/default-sync-raid0.json @@ -0,0 +1,3361 @@ +{ + "workload" : "100-partitions-500K-rate-4-producer", + "driver" : "Pulsar", + "publishRate" : [ 318848.46943582286, 308180.4421003094, 312661.38111611333, 308358.38045221026, 317170.2514664031, 313426.2012435112, 318224.35051162046, 316949.6155919123, 315488.4960322737, 306527.76235647785, 309914.69411509467, 301102.94109983253, 320357.61232714314, 313978.8843154795, 322000.2126725628, 319155.4974107985, 300977.5406568862, 302028.2503923922, 315642.0974820395, 318409.55329542427, 318747.1665973758, 309298.3095519192, 297312.2057086718, 328676.712364771, 314919.7294061506, 309624.4535030326, 302888.4484570802, 313410.2905894075, 306544.8538978216, 318335.04087112966, 317360.89454534405, 320026.7614705383, 313963.9207970459, 305640.13075904595, 311141.79961037735, 304037.6149904631, 317896.9056672453, 319432.1526461222, 315924.5963102809, 317391.61350239837, 301837.545058325, 248847.4751213333, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], + "consumeRate" : [ 329439.4822039596, 315635.12769440626, 310858.3720180052, 311113.24923361803, 314337.1643443242, 311688.89232638024, 309936.90021733503, 312820.20114193443, 306576.89412782626, 311825.12735310843, 310724.25649077375, 312693.5378564287, 305511.9457272889, 314570.62933389086, 314079.48101495096, 309619.14138282207, 307782.735217848, 318936.39853695617, 316383.0089461503, 314605.3940053247, 308682.91342609166, 312238.7585810575, 316332.40755385486, 313378.6741177981, 317623.02221262665, 315897.9855280767, 305397.0998432861, 320396.88579848653, 307243.59751563316, 315399.8795488501, 306567.09642717434, 313210.4456917268, 310182.4675479921, 313128.76358681504, 312413.2562039948, 315086.24584262, 311245.8380173672, 311015.6498280903, 312598.1529829534, 313954.4599992928, 318559.118853108, 267578.4561223526, 121785.38376752514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], + "backlog" : [ 1370828, 1295357, 1313621, 1285724, 1314409, 1332012, 1416086, 1457911, 1548086, 1494495, 1486287, 1368855, 1519126, 1513106, 1593369, 1689972, 1620981, 1449618, 1442110, 1480668, 1582593, 1552794, 1359349, 1514440, 1487080, 1423548, 1398126, 1327346, 1320276, 1350020, 1459399, 1528426, 1566718, 1490903, 1478034, 1366150, 1433631, 1518786, 1552461, 1587288, 1417683, 1228103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], + "publishLatencyAvg" : [ 126.08470767764605, 127.93290156054037, 128.54594388138617, 129.2941373321015, 125.13271043032397, 127.54009788616196, 123.80249565865718, 124.8922400899913, 124.30591781510631, 129.15000363307286, 125.84360377550985, 131.71223123149994, 122.80006620994708, 123.79343878314329, 121.45340963591039, 122.48052182772392, 129.67080982409362, 128.59241237103635, 126.34130205590918, 123.65740597634309, 124.35148359518286, 127.53166361106338, 131.303652053754, 121.78426095941491, 123.24659597299559, 126.63725316770163, 128.2160289010204, 127.02612131689462, 127.6350328690673, 125.45982140030696, 125.46449009041729, 123.50162656104825, 126.05351658131286, 127.26336539428577, 128.15989115648418, 128.1176611494447, 124.88234656736158, 122.2511246643609, 123.24256831496113, 122.809028235978, 128.3639618865636, 139.06400455167181, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], + "publishLatency50pct" : [ 66.857, 65.382, 68.684, 66.932, 71.747, 70.387, 69.576, 68.856, 69.924, 71.394, 72.315, 73.634, 71.484, 71.802, 69.626, 71.324, 73.213, 75.525, 73.338, 70.044, 70.408, 71.693, 71.096, 66.437, 73.169, 70.752, 70.511, 71.555, 68.9, 68.871, 68.579, 68.173, 68.117, 69.453, 71.188, 70.974, 69.725, 68.576, 69.816, 67.649, 69.552, 65.435, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], + "publishLatency75pct" : [ 178.118, 158.175, 174.498, 192.552, 198.62, 189.517, 171.997, 201.013, 183.441, 195.556, 193.509, 199.283, 158.505, 188.125, 176.859, 173.533, 208.108, 205.957, 211.751, 174.59, 191.064, 190.817, 202.059, 165.28, 176.169, 211.968, 200.897, 184.009, 193.041, 172.445, 184.124, 177.699, 174.335, 169.166, 175.884, 203.896, 170.889, 116.753, 183.182, 149.595, 161.95, 115.065, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], + "publishLatency95pct" : [ 364.319, 413.269, 388.415, 388.179, 332.895, 377.057, 353.787, 343.039, 353.253, 365.003, 346.557, 343.963, 355.193, 333.947, 336.145, 346.167, 343.805, 326.621, 313.489, 350.479, 354.219, 353.751, 361.613, 367.479, 344.669, 325.917, 337.431, 352.779, 352.503, 355.497, 355.541, 353.019, 361.105, 375.615, 352.163, 354.437, 336.817, 391.217, 345.377, 370.285, 387.323, 546.599, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], + "publishLatency99pct" : [ 422.627, 470.107, 444.933, 491.755, 429.071, 511.563, 418.369, 421.927, 426.641, 430.915, 404.997, 434.033, 433.963, 390.139, 382.475, 401.511, 403.741, 425.193, 400.645, 440.203, 415.797, 441.703, 504.305, 433.895, 431.559, 413.601, 445.115, 457.517, 454.947, 454.975, 445.103, 411.165, 471.021, 440.771, 465.455, 448.663, 443.825, 446.587, 417.691, 482.469, 488.501, 700.615, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], + "publishLatency999pct" : [ 575.163, 599.175, 627.143, 652.103, 568.371, 569.547, 511.577, 522.799, 580.839, 560.651, 518.715, 507.319, 489.903, 510.385, 489.343, 469.897, 503.159, 493.373, 509.123, 550.735, 555.551, 590.303, 581.359, 537.587, 542.143, 512.219, 596.903, 611.767, 568.555, 556.095, 538.595, 517.887, 544.675, 532.095, 512.863, 524.499, 497.347, 586.035, 507.843, 587.479, 672.147, 794.007, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], + "publishLatency9999pct" : [ 713.379, 680.751, 669.591, 820.395, 672.375, 721.763, 597.759, 643.103, 604.719, 693.899, 585.155, 578.487, 563.591, 513.659, 541.783, 494.435, 525.507, 580.659, 615.379, 747.271, 668.519, 704.327, 620.207, 677.651, 686.479, 742.275, 846.023, 742.435, 805.639, 595.679, 646.607, 621.131, 588.743, 600.571, 681.071, 592.943, 588.871, 670.139, 612.767, 978.907, 902.563, 1018.591, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], + "publishLatencyMax" : [ 713.503, 823.819, 1019.591, 865.063, 752.499, 858.099, 686.395, 765.647, 765.055, 775.487, 678.039, 712.687, 768.171, 607.919, 658.207, 638.075, 674.863, 980.155, 686.807, 747.479, 853.135, 846.195, 869.579, 677.859, 689.903, 742.403, 846.111, 789.923, 954.679, 713.731, 766.855, 771.175, 819.499, 679.635, 780.271, 771.587, 687.583, 791.479, 612.967, 979.419, 902.707, 1035.807, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], + "aggregatedPublishLatencyAvg" : 126.20689446009546, + "aggregatedPublishLatency50pct" : 70.059, + "aggregatedPublishLatency75pct" : 185.977, + "aggregatedPublishLatency95pct" : 358.819, + "aggregatedPublishLatency99pct" : 447.939, + "aggregatedPublishLatency999pct" : 615.187, + "aggregatedPublishLatency9999pct" : 785.543, + "aggregatedPublishLatencyMax" : 1035.807, + "aggregatedPublishLatencyQuantiles" : { + "1.5109383437056103E-6" : 5.894, + "0.5001417449033689" : 13.348, + "1.0000077435590116" : 16.41, + "1.5000203032339936" : 18.954, + "2.0001915114350646" : 21.133, + "2.500059021029051" : 23.11, + "3.000148638559562" : 24.937, + "3.5001649755804034" : 26.677, + "4.000106521153231" : 28.319, + "4.50009717222223" : 29.904, + "5.000218519457959" : 31.27, + "5.500086029051944" : 32.607, + "6.000293499773265" : 33.874, + "6.500088484326754" : 35.091, + "7.0001116205701415" : 36.208, + "7.500189906063074" : 37.298, + "8.00027725718607" : 38.305, + "8.500302659836974" : 39.225, + "9.000530528225934" : 40.092, + "9.50047131832959" : 40.927, + "10.000407575618215" : 41.706, + "10.500594648671894" : 42.431, + "11.000377545718633" : 43.105, + "11.50065300866542" : 43.748, + "12.000525051074439" : 44.356, + "12.500088106592168" : 44.924, + "13.000165636615929" : 45.475, + "13.500722889563816" : 45.997, + "14.00054053819246" : 46.48, + "14.500051466337332" : 46.955, + "15.000769634218825" : 47.422, + "15.500700603223247" : 47.896, + "16.000404931476112" : 48.344, + "16.500743853833335" : 48.769, + "17.00106313399209" : 49.184, + "17.500160820499957" : 49.589, + "18.000329762293514" : 49.974, + "18.500754808136328" : 50.342, + "19.0012614446497" : 50.694, + "19.50040068196202" : 51.039, + "20.001306961667304" : 51.375, + "20.50046130836306" : 51.704, + "21.00068313299865" : 52.036, + "21.500758396614895" : 52.363, + "22.001574020019554" : 52.674, + "22.5012171552695" : 52.972, + "23.001113372692018" : 53.267, + "23.500906846307164" : 53.548, + "24.000882387992725" : 53.822, + "24.501776580191258" : 54.088, + "25.00149979517342" : 54.354, + "25.50128798050436" : 54.613, + "26.000211153633533" : 54.864, + "26.501291946717515" : 55.119, + "27.000783232663917" : 55.369, + "27.50190406561401" : 55.613, + "28.00101535056697" : 55.85, + "28.500561030293746" : 56.092, + "29.001650133538618" : 56.334, + "29.501535774392732" : 56.572, + "30.00064328199983" : 56.808, + "30.500003116310335" : 57.041, + "31.00204335524257" : 57.277, + "31.500022191906922" : 57.515, + "32.001486763330206" : 57.754, + "32.500773317131035" : 57.992, + "33.00063931578668" : 58.235, + "33.50178054640441" : 58.478, + "34.00034411620778" : 58.717, + "34.50077520580397" : 58.952, + "35.00138005330968" : 59.199, + "35.500664340703" : 59.457, + "36.000433639304646" : 59.72, + "36.50159753399753" : 59.986, + "37.000396810182515" : 60.261, + "37.501574303320496" : 60.544, + "38.00065083669155" : 60.826, + "38.50051532440885" : 61.11, + "39.001445779127636" : 61.407, + "39.50100732370702" : 61.715, + "40.000468390886546" : 62.022, + "40.500412958336064" : 62.339, + "41.0013366138323" : 62.668, + "41.50147684779733" : 63.009, + "42.000990797818886" : 63.354, + "42.50069361513341" : 63.711, + "43.00121989384525" : 64.078, + "43.50096199555671" : 64.447, + "44.000555269841314" : 64.841, + "44.500180273831134" : 65.235, + "45.000298599190174" : 65.621, + "45.50101676707167" : 66.037, + "46.00112376039313" : 66.448, + "46.50060598070947" : 66.87, + "47.00099778590872" : 67.308, + "47.50035308740419" : 67.758, + "48.000597576114934" : 68.207, + "48.5003019043678" : 68.661, + "49.00012257487313" : 69.119, + "49.50085434119972" : 69.581, + "50.000860857121324" : 70.059, + "50.250679402869615" : 70.29, + "50.50046168609765" : 70.528, + "50.750538602302704" : 70.768, + "51.00013126276861" : 71.01, + "51.25042348768765" : 71.257, + "51.500747442311905" : 71.509, + "51.750933146077706" : 71.758, + "52.00000302187669" : 72.019, + "52.25058383601937" : 72.286, + "52.5006267561117" : 72.542, + "52.750776197357254" : 72.794, + "53.00009839985963" : 73.047, + "53.250013645661916" : 73.314, + "53.50095179672289" : 73.575, + "53.75081718155983" : 73.837, + "54.00005779339165" : 74.097, + "54.25006369549455" : 74.371, + "54.50025997582876" : 74.646, + "54.75046834366972" : 74.912, + "55.00020152140159" : 75.176, + "55.25083144104045" : 75.443, + "55.50048227263258" : 75.724, + "55.750410361410786" : 76.014, + "56.00047745651661" : 76.292, + "56.25054606256078" : 76.577, + "56.50006695345535" : 76.87, + "56.75013404856118" : 77.171, + "57.000192078036946" : 77.467, + "57.25031809973817" : 77.778, + "57.50065111999249" : 78.106, + "57.75047268761746" : 78.442, + "58.00036149199873" : 78.78, + "58.25046636056315" : 79.116, + "58.50060220336361" : 79.46, + "58.75016917787767" : 79.826, + "59.00045838092002" : 80.196, + "59.25055191744686" : 80.573, + "59.5002080373232" : 80.964, + "59.75053048100911" : 81.363, + "60.0003732017709" : 81.76, + "60.25027484912808" : 82.196, + "60.50003597921931" : 82.638, + "60.75012196105443" : 83.108, + "61.00038698908328" : 83.576, + "61.25024028641347" : 84.043, + "61.50017970722926" : 84.533, + "61.75042811493633" : 85.054, + "62.00011747545622" : 85.604, + "62.250263894825096" : 86.16, + "62.50029850475653" : 86.764, + "62.750322538119555" : 87.381, + "63.00017205810389" : 88.062, + "63.250197602405265" : 88.782, + "63.50028660611707" : 89.517, + "63.75019731910432" : 90.345, + "64.00006648128712" : 91.177, + "64.25004443103067" : 92.047, + "64.5001651644477" : 92.979, + "64.75019599703327" : 93.906, + "65.00013239597237" : 94.994, + "65.25016322855794" : 96.097, + "65.50017895176008" : 97.26, + "65.75013197102096" : 98.621, + "66.0000940559119" : 99.997, + "66.25015586273352" : 101.456, + "66.50007413041249" : 102.915, + "66.75009212002215" : 104.415, + "67.00006931429651" : 106.036, + "67.25005784060848" : 107.625, + "67.50008338490984" : 109.249, + "67.75008777607441" : 111.09, + "68.0000725250405" : 113.066, + "68.25000967944877" : 115.059, + "68.50012361364324" : 116.972, + "68.75001997271623" : 118.967, + "69.00004702795594" : 121.092, + "69.25005897381223" : 123.117, + "69.50003994543246" : 125.124, + "69.75002998268276" : 127.406, + "70.00001926446389" : 129.989, + "70.25007578300131" : 132.857, + "70.50003711242307" : 135.841, + "70.75005736844024" : 138.487, + "71.0000753580499" : 141.288, + "71.25001326792733" : 143.961, + "71.50003503488284" : 146.555, + "71.75004849167748" : 148.917, + "72.00008159067056" : 151.792, + "72.25000212475705" : 154.446, + "72.50008281830796" : 157.239, + "72.75002375006208" : 160.199, + "73.00001378731238" : 162.895, + "73.25002799957618" : 165.628, + "73.5000255915182" : 168.509, + "73.75000958501512" : 171.404, + "74.00000113320375" : 174.345, + "74.25003347672768" : 177.798, + "74.50006884212829" : 180.89, + "74.75000221919069" : 183.519, + "75.00001567598531" : 185.977, + "75.12503524735855" : 187.216, + "75.25004801950924" : 188.376, + "75.37508874401928" : 189.556, + "75.50004938879711" : 190.837, + "75.62500550075991" : 192.109, + "75.75000920728053" : 193.298, + "75.87501744661618" : 194.508, + "76.00002795235936" : 195.777, + "76.1250686768694" : 197.103, + "76.25000741304125" : 198.373, + "76.37507684537982" : 199.537, + "76.50009943862975" : 200.68, + "76.62507745919852" : 201.822, + "76.75002148365458" : 202.948, + "76.87500856985342" : 204.208, + "77.00001227637404" : 205.464, + "77.12506508839084" : 206.768, + "77.25006728397312" : 208.126, + "77.37507552330878" : 209.352, + "77.5000709196685" : 210.473, + "77.62508520275753" : 211.53, + "77.75003829284366" : 212.559, + "77.87501404700491" : 213.676, + "78.00002984103229" : 214.778, + "78.12505847803558" : 215.935, + "78.25012791037416" : 217.084, + "78.37501074182728" : 218.349, + "78.50003560148473" : 219.536, + "78.62507632599477" : 220.727, + "78.75003092701922" : 221.879, + "78.87508449450519" : 223.004, + "79.00002247520786" : 224.096, + "79.12500578406085" : 225.154, + "79.25008881484452" : 226.293, + "79.3750774119817" : 227.382, + "79.50000179423928" : 228.409, + "79.62511731019734" : 229.539, + "79.75009759717364" : 230.595, + "79.87501366927033" : 231.649, + "80.00002493048267" : 232.723, + "80.12508983000622" : 233.804, + "80.25006029588327" : 234.894, + "80.37501187503105" : 235.911, + "80.50008130736963" : 236.958, + "80.62506839356847" : 237.969, + "80.7500690782124" : 238.962, + "80.87508638317811" : 239.904, + "81.00008102406868" : 240.859, + "81.12505602276077" : 241.872, + "81.25005670740471" : 242.794, + "81.37507703424711" : 243.805, + "81.50006638685348" : 244.844, + "81.62506858243576" : 245.918, + "81.7500503803504" : 246.982, + "81.87500875872071" : 247.985, + "82.00006534808337" : 249.107, + "82.12502523739202" : 250.19, + "82.25001005718335" : 251.215, + "82.37512179579555" : 252.187, + "82.50004240070727" : 253.228, + "82.6250136220535" : 254.258, + "82.75001355122826" : 255.359, + "82.87503765541653" : 256.387, + "83.00003909552964" : 257.506, + "83.12509266301561" : 258.702, + "83.25004122028669" : 259.854, + "83.3750879885501" : 260.917, + "83.50004938879711" : 262.01, + "83.62523365244981" : 263.053, + "83.75009155342026" : 264.063, + "83.8752131131317" : 265.021, + "84.00004759455783" : 265.945, + "84.12508831906787" : 266.851, + "84.25008144902009" : 267.725, + "84.3750670242806" : 268.577, + "84.50004655578772" : 269.473, + "84.62522930850207" : 270.401, + "84.75001921724706" : 271.289, + "84.87509242693149" : 272.197, + "85.00024118353312" : 273.031, + "85.1250416688465" : 273.897, + "85.2500597292814" : 274.771, + "85.37509818738393" : 275.663, + "85.50014571111652" : 276.593, + "85.62510937777104" : 277.533, + "85.75009495303154" : 278.479, + "85.87515531974005" : 279.401, + "86.00013031843214" : 280.265, + "86.12512722573022" : 281.133, + "86.25020119088383" : 281.965, + "86.37515503643911" : 282.817, + "86.50017762968903" : 283.687, + "86.62513525259017" : 284.571, + "86.7501389591108" : 285.473, + "86.87515853048403" : 286.463, + "87.00000736582443" : 287.493, + "87.12523544668909" : 288.465, + "87.25020213522029" : 289.427, + "87.37521113002512" : 290.521, + "87.50003579035202" : 291.637, + "87.56256219636042" : 292.171, + "87.62513393051913" : 292.695, + "87.68771850765376" : 293.303, + "87.75012630500217" : 293.849, + "87.81263911256548" : 294.383, + "87.87501140286281" : 294.887, + "87.93752496589529" : 295.413, + "88.0002817900011" : 295.875, + "88.06261328496316" : 296.375, + "88.1252273253955" : 296.827, + "88.18775524234223" : 297.263, + "88.25001345679462" : 297.717, + "88.31256026047066" : 298.181, + "88.3751365274444" : 298.661, + "88.43777927570527" : 299.087, + "88.50021804728972" : 299.559, + "88.56279280332512" : 300.011, + "88.62511145531126" : 300.511, + "88.68757138003254" : 301.005, + "88.7502005298483" : 301.507, + "88.81270049443569" : 301.951, + "88.87522010122154" : 302.471, + "88.93773819706904" : 302.975, + "89.00000094433646" : 303.447, + "89.0626391597823" : 303.947, + "89.12520938300266" : 304.447, + "89.18769121632992" : 304.961, + "89.25004613083631" : 305.419, + "89.31253854073196" : 305.917, + "89.3752115077597" : 306.437, + "89.4376948520253" : 306.897, + "89.50007696342188" : 307.371, + "89.56272424449777" : 307.893, + "89.62522723096184" : 308.399, + "89.68773475024095" : 308.937, + "89.75016521166452" : 309.421, + "89.81265686609102" : 309.949, + "89.87508279469955" : 310.483, + "89.93752609909905" : 311.019, + "90.0000751691826" : 311.551, + "90.06252451733546" : 312.071, + "90.12521712656168" : 312.609, + "90.1875599535613" : 313.111, + "90.2500463197036" : 313.585, + "90.31259085697212" : 314.097, + "90.37520338646611" : 314.587, + "90.43774112451209" : 315.075, + "90.50008092963503" : 315.527, + "90.56275767400864" : 316.009, + "90.62503930800534" : 316.467, + "90.68769792111883" : 316.945, + "90.75010420752889" : 317.421, + "90.81277566361828" : 317.861, + "90.87508147262851" : 318.297, + "90.93765245131804" : 318.737, + "91.00021587531586" : 319.163, + "91.06261007421918" : 319.609, + "91.1250125832834" : 320.083, + "91.18757449634286" : 320.511, + "91.25025879540819" : 320.955, + "91.31262806382884" : 321.393, + "91.37511065262527" : 321.847, + "91.43773224774931" : 322.321, + "91.50016044276538" : 322.797, + "91.56263925421594" : 323.273, + "91.62509917893722" : 323.823, + "91.68765278183581" : 324.285, + "91.7501708776833" : 324.821, + "91.81271692589017" : 325.373, + "91.87510281463261" : 325.929, + "91.93760353468916" : 326.503, + "92.00012842975922" : 327.061, + "92.06261328496316" : 327.707, + "92.12503241434915" : 328.391, + "92.18765098759651" : 329.049, + "92.25010637950277" : 329.689, + "92.31262674175778" : 330.239, + "92.37506626881142" : 330.875, + "92.43765688969943" : 331.507, + "92.5001221027049" : 332.095, + "92.56254878678261" : 332.727, + "92.62500644509637" : 333.311, + "92.68758195660094" : 333.905, + "92.75016048998219" : 334.587, + "92.81269822802817" : 335.183, + "92.87515437540358" : 335.793, + "92.93751382272501" : 336.381, + "93.00000094433646" : 337.037, + "93.06251073002308" : 337.677, + "93.12511268294867" : 338.357, + "93.18760207096764" : 339.033, + "93.25004008708294" : 339.697, + "93.31258991263566" : 340.375, + "93.37506947955539" : 340.995, + "93.4375475355368" : 341.697, + "93.50013891189397" : 342.449, + "93.56251800141386" : 343.129, + "93.6251992786025" : 343.719, + "93.68761311970428" : 344.315, + "93.7500692670797" : 344.901, + "93.78136306658536" : 345.189, + "93.81269086220375" : 345.461, + "93.84389173900126" : 345.729, + "93.87509186032962" : 345.995, + "93.90644232002316" : 346.289, + "93.93759031397866" : 346.577, + "93.96875643919427" : 346.891, + "94.00002681915561" : 347.195, + "94.03131608584623" : 347.471, + "94.06258948768425" : 347.795, + "94.09380396292686" : 348.147, + "94.12514837886704" : 348.451, + "94.15628806266163" : 348.749, + "94.18766798565288" : 349.049, + "94.2189496976518" : 349.355, + "94.25016568383275" : 349.663, + "94.28135447312353" : 349.983, + "94.31257045930448" : 350.291, + "94.34389296663868" : 350.653, + "94.3751097082888" : 351.031, + "94.40634004838402" : 351.427, + "94.43766633306407" : 351.789, + "94.46887854189917" : 352.107, + "94.50009301714178" : 352.433, + "94.53135508694223" : 352.779, + "94.5625144129353" : 353.101, + "94.59389433592655" : 353.475, + "94.62505743926548" : 353.867, + "94.65631270984336" : 354.261, + "94.68763748358508" : 354.711, + "94.7188247619375" : 355.127, + "94.75006945594698" : 355.521, + "94.7813964960962" : 355.951, + "94.81263136900647" : 356.371, + "94.84387001926258" : 356.813, + "94.87504369916991" : 357.247, + "94.90632087835378" : 357.637, + "94.93750286842202" : 358.083, + "94.96893416331694" : 358.423, + "95.00015997059714" : 358.819, + "95.03136840208639" : 359.171, + "95.06253981558619" : 359.507, + "95.09389254168727" : 359.901, + "95.12504280205027" : 360.275, + "95.15635322187771" : 360.649, + "95.18759187213382" : 361.021, + "95.2188932263312" : 361.385, + "95.25010921251216" : 361.741, + "95.28128440335783" : 362.141, + "95.3126582825957" : 362.571, + "95.34385689298571" : 362.989, + "95.37505701431407" : 363.415, + "95.4062571356424" : 363.877, + "95.43754942420972" : 364.323, + "95.46876087757565" : 364.745, + "95.50004863332794" : 365.161, + "95.53130012655997" : 365.539, + "95.562599969819" : 365.987, + "95.5938605286811" : 366.443, + "95.62508029220793" : 366.933, + "95.65635369404593" : 367.393, + "95.68755230443594" : 367.915, + "95.71879850938377" : 368.401, + "95.75011950577962" : 368.889, + "95.78130602866288" : 369.315, + "95.81256734299414" : 369.723, + "95.84376821979167" : 370.141, + "95.87508090602662" : 370.521, + "95.90632408909777" : 370.929, + "95.93754989637796" : 371.379, + "95.96880894430171" : 371.821, + "96.00007479144801" : 372.295, + "96.03127037996133" : 372.709, + "96.06251582943999" : 373.161, + "96.09388290945532" : 373.571, + "96.12506716593106" : 374.007, + "96.1562861739887" : 374.407, + "96.18763512274391" : 374.779, + "96.21882240109633" : 375.163, + "96.25012753263957" : 375.525, + "96.28128081487927" : 375.895, + "96.31253004170378" : 376.329, + "96.34376264820652" : 376.731, + "96.37505418130466" : 377.235, + "96.40628829874575" : 377.705, + "96.43751863884097" : 378.143, + "96.46875200081288" : 378.687, + "96.5000306909351" : 379.249, + "96.53137510687527" : 379.775, + "96.56251025785485" : 380.309, + "96.59376175108689" : 380.955, + "96.6250245763565" : 381.517, + "96.65629646725617" : 382.129, + "96.68750112139955" : 382.683, + "96.71881305216533" : 383.235, + "96.75002148365458" : 383.825, + "96.78131906050609" : 384.349, + "96.81252673652617" : 384.859, + "96.84383262353857" : 385.407, + "96.87511055819162" : 385.929, + "96.890704952837" : 386.191, + "96.90627366153055" : 386.465, + "96.92190960698038" : 386.769, + "96.93750928990997" : 387.103, + "96.95318451975675" : 387.421, + "96.96879100190888" : 387.731, + "96.98444810049553" : 388.039, + "97.00008782329122" : 388.379, + "97.01569279450501" : 388.693, + "97.0313355391774" : 388.961, + "97.04687931738827" : 389.239, + "97.06255001442001" : 389.567, + "97.07819200362323" : 389.903, + "97.0938430584565" : 390.211, + "97.10944349685526" : 390.521, + "97.12507264308256" : 390.821, + "97.14065646115954" : 391.097, + "97.15633169100632" : 391.413, + "97.17193212940506" : 391.751, + "97.1875763850158" : 392.113, + "97.20312620698004" : 392.387, + "97.21878406103586" : 392.659, + "97.23439734241055" : 392.953, + "97.25000004721683" : 393.239, + "97.26565563486513" : 393.531, + "97.28133313111942" : 393.825, + "97.29695925547003" : 394.111, + "97.31253702979363" : 394.399, + "97.32817901899683" : 394.693, + "97.34375905972796" : 395.013, + "97.3594728185025" : 395.305, + "97.37507703424711" : 395.569, + "97.39066236326244" : 395.889, + "97.40631795091075" : 396.237, + "97.42193576510046" : 396.559, + "97.43755433475934" : 396.849, + "97.45321747709937" : 397.193, + "97.46877032094031" : 397.493, + "97.48445688282466" : 397.815, + "97.50000066103553" : 398.191, + "97.51563509554703" : 398.565, + "97.53131183633214" : 398.991, + "97.54696742398045" : 399.375, + "97.56254519830405" : 399.781, + "97.57817207812383" : 400.211, + "97.59380122435111" : 400.539, + "97.60940015181153" : 400.983, + "97.62501721053206" : 401.449, + "97.64065391145108" : 401.821, + "97.65629741159263" : 402.203, + "97.6719431781417" : 402.615, + "97.68753908372544" : 403.145, + "97.70312667914828" : 403.537, + "97.71880795274842" : 403.955, + "97.73444163179074" : 404.353, + "97.75003149362111" : 404.781, + "97.76567877110851" : 405.159, + "97.78127014387721" : 405.529, + "97.79693555262476" : 405.881, + "97.81257225354376" : 406.215, + "97.82820744352443" : 406.551, + "97.84379503894726" : 406.949, + "97.85939018906183" : 407.315, + "97.87501102512823" : 407.705, + "97.89062581744125" : 408.121, + "97.90630482463389" : 408.567, + "97.92187579973495" : 409.101, + "97.93753138738325" : 409.573, + "97.95314920157296" : 410.081, + "97.96882140954305" : 410.647, + "97.98440900496588" : 411.161, + "98.00001850899471" : 411.695, + "98.01565067709869" : 412.183, + "98.03129644364776" : 412.619, + "98.04692105706002" : 413.099, + "98.06251469623624" : 413.609, + "98.07815290809359" : 414.117, + "98.09375108008483" : 414.597, + "98.1093779599046" : 415.061, + "98.12501466082361" : 415.589, + "98.14066722659524" : 416.131, + "98.15630015016839" : 416.711, + "98.17192551904982" : 417.175, + "98.1875546652771" : 417.647, + "98.20320345370287" : 418.077, + "98.21880842491666" : 418.493, + "98.23441566253797" : 418.955, + "98.2500274329743" : 419.413, + "98.26565355732491" : 419.971, + "98.28127137151462" : 420.429, + "98.29690278414942" : 420.899, + "98.3125296639692" : 421.389, + "98.32816560941905" : 421.927, + "98.34376227047194" : 422.435, + "98.35940123779847" : 423.045, + "98.37502434027238" : 423.559, + "98.39062780054783" : 424.139, + "98.40628263272696" : 424.837, + "98.42188231565655" : 425.411, + "98.43753488142816" : 426.045, + "98.44531923577495" : 426.307, + "98.4531254987277" : 426.639, + "98.46094611559471" : 426.943, + "98.46876371058505" : 427.269, + "98.47657375088366" : 427.645, + "98.48443138574011" : 427.901, + "98.49222405024777" : 428.141, + "98.50001520381709" : 428.431, + "98.50784488631416" : 428.797, + "98.51563226253762" : 429.105, + "98.52343928095955" : 429.405, + "98.53125007672733" : 429.697, + "98.53908429203945" : 429.939, + "98.54688979952303" : 430.205, + "98.55475121172533" : 430.461, + "98.56255520827058" : 430.761, + "98.57035391653162" : 431.063, + "98.57813751540921" : 431.347, + "98.58595057758451" : 431.615, + "98.59376439522899" : 431.943, + "98.60158047928097" : 432.383, + "98.60942829303818" : 432.723, + "98.61719149424815" : 433.003, + "98.62503553065949" : 433.285, + "98.63286747956408" : 433.533, + "98.64064956750335" : 433.765, + "98.64847245077787" : 433.999, + "98.65625302777879" : 434.249, + "98.66410990716606" : 434.533, + "98.67191994746467" : 434.827, + "98.67974660808507" : 435.091, + "98.6875483382228" : 435.339, + "98.69534251366879" : 435.549, + "98.70313895552232" : 435.795, + "98.71095730598182" : 436.031, + "98.71879983145483" : 436.263, + "98.7266295139519" : 436.473, + "98.73441462376785" : 436.675, + "98.74223070781984" : 436.977, + "98.75004452546432" : 437.213, + "98.75784247825618" : 437.447, + "98.76565629590065" : 437.657, + "98.77349731043532" : 437.879, + "98.78130961714145" : 438.105, + "98.78909774883408" : 438.367, + "98.79691156647854" : 438.643, + "98.80469592082532" : 438.931, + "98.81254297911336" : 439.199, + "98.82037190614126" : 439.469, + "98.82815928236472" : 439.687, + "98.83597687735505" : 439.921, + "98.84376047623266" : 440.183, + "98.85159015872973" : 440.483, + "98.85940397637421" : 440.807, + "98.86720495104277" : 441.169, + "98.87500214836545" : 441.575, + "98.88284694024598" : 442.043, + "98.89066831258216" : 442.407, + "98.8984428458297" : 442.839, + "98.9062747947343" : 443.275, + "98.91410523270056" : 443.615, + "98.9219062073691" : 444.003, + "98.92968905077754" : 444.407, + "98.93751646686711" : 444.839, + "98.94532650716572" : 445.193, + "98.9531561896628" : 445.519, + "98.9609533869855" : 445.909, + "98.96878080307506" : 446.409, + "98.97659159884284" : 446.841, + "98.98438124147383" : 447.135, + "98.99222225600849" : 447.511, + "99.0000239861462" : 447.939, + "99.00781816159221" : 448.339, + "99.01563349017503" : 448.779, + "99.02344050859696" : 449.371, + "99.03126490280984" : 450.047, + "99.03906512200922" : 450.589, + "99.04689102716044" : 451.087, + "99.05469502370568" : 451.583, + "99.06252546167194" : 451.999, + "99.07033625743972" : 452.341, + "99.07813043288573" : 452.703, + "99.08596389272867" : 453.223, + "99.09376940021225" : 453.631, + "99.10158699520258" : 454.043, + "99.10938721440196" : 454.579, + "99.11720783126898" : 454.955, + "99.12502013797511" : 455.395, + "99.13283546655794" : 455.887, + "99.14064777326406" : 456.397, + "99.14846385731605" : 456.929, + "99.15626936479963" : 457.441, + "99.16407638322156" : 458.049, + "99.1719045547803" : 458.545, + "99.17970175210299" : 459.001, + "99.18751103693243" : 459.557, + "99.19533165379946" : 460.091, + "99.20312582924547" : 460.631, + "99.21096759924929" : 461.135, + "99.2187617746953" : 461.779, + "99.22265924015288" : 462.105, + "99.22659070172321" : 462.359, + "99.23048363436577" : 462.583, + "99.2343848771692" : 462.813, + "99.23829971841775" : 463.135, + "99.24221229325877" : 463.459, + "99.2460954048021" : 463.769, + "99.2500034468281" : 464.009, + "99.25392886464505" : 464.323, + "99.25781273165754" : 464.607, + "99.26172908384443" : 464.935, + "99.2656454360313" : 465.189, + "99.26955045618061" : 465.465, + "99.27344565523069" : 465.677, + "99.27736276288675" : 465.927, + "99.28126173928268" : 466.273, + "99.28515769380192" : 466.613, + "99.2890634694204" : 466.931, + "99.29297604426142" : 467.191, + "99.29688257534907" : 467.513, + "99.30080346035099" : 467.765, + "99.30470394768527" : 468.023, + "99.30860745689624" : 468.267, + "99.31250341141548" : 468.535, + "99.31642203000987" : 468.787, + "99.32033007203587" : 469.129, + "99.32423509218518" : 469.419, + "99.32812802482773" : 469.705, + "99.3320609973364" : 470.013, + "99.33595997373234" : 470.251, + "99.33985441731323" : 470.509, + "99.3437632148084" : 470.813, + "99.34767881152612" : 471.161, + "99.35157476604536" : 471.453, + "99.35547072056461" : 471.787, + "99.35937951805977" : 472.111, + "99.36328302727074" : 472.431, + "99.36720466774183" : 472.703, + "99.37110288866859" : 473.061, + "99.37501848538629" : 473.407, + "99.37892199459726" : 473.711, + "99.38282701474657" : 474.109, + "99.38674034505677" : 474.389, + "99.39064158786022" : 474.733, + "99.39453225409525" : 475.099, + "99.39845842738137" : 475.453, + "99.40235060455475" : 475.949, + "99.4062518473582" : 476.477, + "99.41015913391503" : 476.827, + "99.4140762415711" : 477.415, + "99.41797370702868" : 477.955, + "99.4218757053013" : 478.535, + "99.42578223638895" : 479.287, + "99.42970387686003" : 480.187, + "99.43359832044094" : 480.589, + "99.43751618356616" : 481.063, + "99.4414151599621" : 481.485, + "99.44533000121064" : 481.767, + "99.44922444479154" : 482.043, + "99.45314381885511" : 482.401, + "99.45704808353524" : 482.759, + "99.46095083727704" : 483.515, + "99.464854346488" : 483.905, + "99.46876163304482" : 484.275, + "99.47265985397159" : 484.981, + "99.47657620615847" : 485.671, + "99.48047140520855" : 486.265, + "99.48440513318639" : 486.593, + "99.48828975566805" : 486.949, + "99.49219250940985" : 487.437, + "99.49609677408998" : 487.983, + "99.50000330517763" : 488.517, + "99.50391588001865" : 489.083, + "99.50782694392133" : 489.519, + "99.51172894219395" : 490.179, + "99.51562716312071" : 491.131, + "99.51953520514671" : 492.317, + "99.52344022529601" : 493.129, + "99.52734977826036" : 493.991, + "99.53126159763221" : 494.507, + "99.53517643888075" : 494.949, + "99.53907088246164" : 495.479, + "99.54297061432675" : 496.443, + "99.54687790088357" : 496.921, + "99.55078367650205" : 497.799, + "99.5546932294664" : 498.677, + "99.55859749414653" : 499.441, + "99.56251384633342" : 500.145, + "99.56640677897597" : 500.995, + "99.57031482100197" : 501.591, + "99.57422664037382" : 502.233, + "99.57812788317727" : 502.791, + "99.58204196895664" : 503.381, + "99.58593792347588" : 504.575, + "99.58984898737856" : 505.361, + "99.59375023018201" : 506.133, + "99.59766053861553" : 507.771, + "99.60156329235731" : 509.089, + "99.60547888907503" : 509.995, + "99.60938466469351" : 510.451, + "99.61134359625612" : 510.603, + "99.61329195125033" : 510.775, + "99.61523728436785" : 511.131, + "99.61718941670792" : 511.481, + "99.61914305998633" : 511.717, + "99.62109670326474" : 512.043, + "99.62304732466646" : 512.307, + "99.62500474529074" : 512.565, + "99.6269568776308" : 512.799, + "99.62890749903252" : 512.995, + "99.63087625169437" : 513.157, + "99.63281554105852" : 513.373, + "99.6347752280903" : 513.607, + "99.63672584949204" : 513.953, + "99.6386779818321" : 514.483, + "99.64062784776465" : 515.087, + "99.64258526838893" : 515.553, + "99.64453740072899" : 515.871, + "99.64649557682243" : 516.233, + "99.6484424208783" : 516.807, + "99.6504043743176" : 517.219, + "99.65236406134939" : 517.413, + "99.65431846009697" : 517.583, + "99.65625926039945" : 517.789, + "99.65820534898616" : 518.375, + "99.66015748132622" : 518.677, + "99.66211565741966" : 518.997, + "99.66406930069807" : 519.313, + "99.66601690022311" : 519.589, + "99.66797583178572" : 519.845, + "99.66993854069419" : 520.069, + "99.67188387381172" : 520.499, + "99.67384280537433" : 520.723, + "99.6757813392693" : 520.943, + "99.67774555911612" : 521.171, + "99.67969542504868" : 521.495, + "99.6816460464504" : 521.793, + "99.68359515691378" : 522.459, + "99.68555635488391" : 522.817, + "99.68750093253226" : 523.083, + "99.6894591086257" : 523.409, + "99.69140897455826" : 524.145, + "99.69336110689832" : 524.559, + "99.69531399470756" : 524.931, + "99.69727292627017" : 526.027, + "99.69922203673356" : 526.627, + "99.701180212827" : 527.071, + "99.70313838892044" : 527.727, + "99.70510789705146" : 527.979, + "99.70704189813141" : 528.219, + "99.70899705234815" : 528.495, + "99.71094465187319" : 528.819, + "99.7129013170283" : 529.407, + "99.71484665014582" : 529.699, + "99.7168010488934" : 530.103, + "99.71877584530863" : 530.375, + "99.72070380263519" : 531.051, + "99.72265820138277" : 531.999, + "99.72461184466118" : 532.695, + "99.7265707762238" : 533.195, + "99.7285274413789" : 533.523, + "99.73047655184227" : 533.899, + "99.7324354834049" : 534.263, + "99.73438081652242" : 534.819, + "99.73633445980083" : 535.419, + "99.73828205932585" : 536.023, + "99.74023872448096" : 536.635, + "99.74220445526612" : 537.203, + "99.74414223369192" : 538.067, + "99.746094366032" : 539.111, + "99.74806009681716" : 540.291, + "99.75000316352715" : 541.119, + "99.75196436149729" : 541.507, + "99.75391876024487" : 541.855, + "99.75588449103003" : 542.079, + "99.75781849210998" : 542.479, + "99.75977591273424" : 542.991, + "99.76171973491343" : 543.263, + "99.76367564459935" : 543.551, + "99.76565195195292" : 543.827, + "99.76758595303286" : 544.315, + "99.76954790647216" : 544.775, + "99.771490217713" : 545.643, + "99.77343932817638" : 546.255, + "99.77541790193746" : 546.731, + "99.77735416942491" : 547.727, + "99.77930554629582" : 548.423, + "99.78126070051256" : 549.091, + "99.78320376722257" : 550.955, + "99.78515816597016" : 553.591, + "99.7871110537794" : 554.539, + "99.78906922987284" : 555.359, + "99.79101682939788" : 555.795, + "99.79297651642966" : 556.447, + "99.794943002684" : 557.235, + "99.79687775923311" : 557.911, + "99.79884424548744" : 558.511, + "99.80079939970419" : 558.955, + "99.80274020000668" : 559.379, + "99.8046885550009" : 560.267, + "99.80567897508519" : 560.503, + "99.80665504125523" : 560.643, + "99.80762506367189" : 560.843, + "99.80859433061937" : 561.327, + "99.80957039678941" : 561.975, + "99.81055477312033" : 562.339, + "99.81152404006782" : 562.943, + "99.81250010623785" : 563.455, + "99.81348372709961" : 563.735, + "99.81446130420798" : 564.119, + "99.8154351039705" : 564.587, + "99.81641872483225" : 564.915, + "99.81738421443389" : 565.123, + "99.8183633024806" : 565.327, + "99.81933936865063" : 565.611, + "99.82032374498156" : 566.063, + "99.82130812131248" : 566.267, + "99.82229325311258" : 566.391, + "99.82325798724504" : 566.539, + "99.82422725419252" : 566.731, + "99.82520332036256" : 567.135, + "99.82618467481679" : 567.711, + "99.82715016441843" : 567.995, + "99.82813227434183" : 568.219, + "99.82910305222767" : 568.451, + "99.83007836292852" : 568.995, + "99.83106047285193" : 569.475, + "99.83203502808362" : 569.975, + "99.83301109425365" : 570.483, + "99.83398716042369" : 573.147, + "99.83496624847041" : 573.863, + "99.83594155917127" : 574.535, + "99.83692140268717" : 574.763, + "99.8379027571414" : 575.247, + "99.83886975768138" : 575.551, + "99.83984733478975" : 575.987, + "99.84082944471317" : 576.231, + "99.8417972007223" : 577.051, + "99.84277553329986" : 577.387, + "99.84375764322326" : 577.855, + "99.84473748673915" : 578.215, + "99.84571959666256" : 578.483, + "99.84667979797999" : 578.779, + "99.84766039696505" : 580.615, + "99.8486387295426" : 580.999, + "99.84962083946601" : 581.419, + "99.85058632906764" : 582.659, + "99.85157372727525" : 583.451, + "99.85253997234605" : 584.415, + "99.85352434867697" : 585.019, + "99.85449965937784" : 585.247, + "99.85548101383208" : 585.687, + "99.8564517917179" : 586.463, + "99.8574233250729" : 586.831, + "99.85840619046549" : 587.175, + "99.85938376757386" : 587.371, + "99.86035378999053" : 587.587, + "99.86133816632145" : 588.199, + "99.86231649889899" : 588.419, + "99.86328878772318" : 588.727, + "99.86426183201652" : 589.091, + "99.86523865365572" : 589.583, + "99.86621471982576" : 590.155, + "99.86719531881083" : 591.107, + "99.86816609669665" : 591.587, + "99.86914594021255" : 592.383, + "99.87011822903672" : 592.879, + "99.8711063827135" : 593.119, + "99.87207111684596" : 593.543, + "99.873047183016" : 593.851, + "99.87403307028526" : 594.151, + "99.87502877865377" : 594.299, + "99.87599804560125" : 594.427, + "99.87695598051116" : 594.867, + "99.87794640059546" : 595.171, + "99.87892095582716" : 595.359, + "99.87988417902126" : 595.907, + "99.8808602451913" : 596.707, + "99.88183631136133" : 597.079, + "99.88282144316143" : 597.659, + "99.88378919917056" : 598.131, + "99.88476904268646" : 598.767, + "99.88574359791815" : 599.203, + "99.88672268596487" : 600.159, + "99.88769648572739" : 600.955, + "99.8886785956508" : 602.791, + "99.8896531508825" : 604.631, + "99.89062846158335" : 605.023, + "99.89160603869173" : 605.695, + "99.8925889040843" : 606.967, + "99.89355590462428" : 611.135, + "99.89454330283189" : 611.623, + "99.89551181431021" : 611.971, + "99.89648485860356" : 612.747, + "99.89746394665028" : 613.531, + "99.89844379016617" : 614.043, + "99.89941532352117" : 614.935, + "99.90042009751974" : 615.351, + "99.90137274414545" : 615.751, + "99.90234427750045" : 616.555, + "99.90283382152381" : 616.935, + "99.90332185460882" : 617.419, + "99.90381819785473" : 617.715, + "99.90429792077886" : 618.527, + "99.9047904866789" : 618.755, + "99.90527700882558" : 619.011, + "99.90576579737977" : 619.911, + "99.90625156405727" : 620.203, + "99.90675168464904" : 620.359, + "99.90723065210399" : 620.559, + "99.90771792971984" : 620.755, + "99.90820369639734" : 621.055, + "99.90869550682821" : 621.591, + "99.90918278444406" : 622.199, + "99.90967610581328" : 622.691, + "99.91016187249078" : 622.799, + "99.91064839463745" : 623.167, + "99.91113944959916" : 623.863, + "99.9116214389308" : 624.139, + "99.91210947201581" : 624.447, + "99.91260505979255" : 624.671, + "99.9130946038159" : 624.859, + "99.91358565877762" : 624.971, + "99.91407066998595" : 625.091, + "99.9145526593176" : 625.263, + "99.91504144787177" : 625.691, + "99.91553250283349" : 626.195, + "99.91601600310346" : 627.375, + "99.91650781353434" : 628.387, + "99.91699358021185" : 628.775, + "99.91748085782768" : 628.951, + "99.9179688909127" : 630.723, + "99.91845919040524" : 631.331, + "99.91894722349025" : 633.047, + "99.91943827845196" : 634.403, + "99.91992328966029" : 635.235, + "99.92041132274531" : 636.959, + "99.92090313317618" : 637.451, + "99.9213911662612" : 637.827, + "99.92188902044545" : 638.231, + "99.92236345508537" : 638.983, + "99.9228537545779" : 639.635, + "99.92334103219375" : 642.223, + "99.9238283098096" : 642.619, + "99.9243193647713" : 642.843, + "99.92480588691798" : 643.031, + "99.92529694187968" : 643.735, + "99.925781953088" : 644.055, + "99.92626998617303" : 645.099, + "99.92676104113472" : 645.843, + "99.92724831875057" : 646.147, + "99.92774088465062" : 646.359, + "99.92822967320481" : 646.551, + "99.92871619535148" : 647.055, + "99.92919969562148" : 647.367, + "99.929689995114" : 647.563, + "99.9301787836682" : 647.895, + "99.93067210503742" : 648.303, + "99.93117222562918" : 648.443, + "99.93165043761496" : 648.523, + "99.93212940506992" : 648.631, + "99.93261743815494" : 648.843, + "99.93310547123995" : 649.255, + "99.93359954807835" : 649.411, + "99.93409060304005" : 649.547, + "99.93457032596417" : 649.695, + "99.9350606254567" : 650.091, + "99.93555243588759" : 650.367, + "99.93604046897259" : 650.615, + "99.93652548018093" : 650.879, + "99.93701577967346" : 651.255, + "99.93751061198103" : 651.443, + "99.93799562318935" : 651.587, + "99.93849045549692" : 651.715, + "99.93897848858194" : 651.815, + "99.93945896697524" : 651.915, + "99.93995379928279" : 652.039, + "99.94043352220692" : 652.191, + "99.94092231076111" : 652.451, + "99.94140807743861" : 652.727, + "99.94190064333866" : 652.919, + "99.942385654547" : 653.263, + "99.94287217669367" : 653.463, + "99.94336096524785" : 653.635, + "99.94384899833287" : 653.811, + "99.94433854235623" : 653.983, + "99.94482808637959" : 654.383, + "99.94531460852626" : 654.703, + "99.94580264161128" : 655.691, + "99.94629520751133" : 656.039, + "99.94677870778132" : 656.251, + "99.94726825180467" : 656.719, + "99.94775779582804" : 657.103, + "99.94825489454311" : 657.271, + "99.94873084012139" : 657.379, + "99.94922642789811" : 657.511, + "99.94970841722976" : 657.659, + "99.95019947219146" : 657.951, + "99.9506867498073" : 658.387, + "99.95117780476902" : 659.023, + "99.95142106584235" : 659.179, + "99.95166508238486" : 659.359, + "99.95190985439653" : 660.883, + "99.95215915922324" : 660.999, + "99.9523941101357" : 661.359, + "99.95263888214737" : 661.563, + "99.95288743150492" : 662.771, + "99.95312540429406" : 663.071, + "99.95336942083655" : 663.403, + "99.95361419284824" : 665.703, + "99.95385820939075" : 667.847, + "99.95410298140243" : 668.427, + "99.95434775341411" : 668.787, + "99.95459101448745" : 669.375, + "99.95483578649912" : 669.675, + "99.95508509132584" : 669.903, + "99.95532608599166" : 670.103, + "99.95557161347251" : 670.311, + "99.95581940736088" : 671.963, + "99.95605738015001" : 672.067, + "99.9563074404459" : 672.199, + "99.9565461687042" : 672.367, + "99.9567879188392" : 672.579, + "99.9570319353817" : 677.439, + "99.95727746286255" : 677.651, + "99.95752374581258" : 677.855, + "99.95776549594757" : 679.795, + "99.95801102342843" : 680.003, + "99.95825503997094" : 680.215, + "99.95852172058859" : 680.687, + "99.95874156211761" : 680.731, + "99.95899162241349" : 680.775, + "99.95923261707931" : 680.839, + "99.95947285627595" : 681.115, + "99.95972065016433" : 681.267, + "99.95996240029932" : 681.419, + "99.960207172311" : 681.639, + "99.96045269979184" : 681.955, + "99.96069596086518" : 682.159, + "99.96093997740769" : 682.367, + "99.9611817275427" : 683.003, + "99.96142725502354" : 683.207, + "99.9616727825044" : 683.427, + "99.96191453263938" : 684.107, + "99.9621585491819" : 684.519, + "99.9624025657244" : 685.331, + "99.96264658226691" : 685.787, + "99.96289286521693" : 686.259, + "99.96314141457448" : 686.407, + "99.9633929858087" : 686.503, + "99.96362415937529" : 686.907, + "99.9638681759178" : 687.355, + "99.9641121924603" : 687.899, + "99.96435620900282" : 688.443, + "99.96460173648366" : 689.703, + "99.96485028584121" : 693.799, + "99.96508825863033" : 693.911, + "99.96533227517284" : 695.935, + "99.96558233546872" : 696.619, + "99.96582106372703" : 696.939, + "99.96606659120789" : 697.819, + "99.96631136321957" : 698.191, + "99.96655462429291" : 698.415, + "99.9667986408354" : 698.835, + "99.96704190190874" : 699.611, + "99.96728516298208" : 699.895, + "99.96752993499376" : 700.523, + "99.96777395153627" : 700.735, + "99.96801947901713" : 701.175, + "99.96826576196715" : 701.643, + "99.96851280038635" : 701.803, + "99.96875606145969" : 701.927, + "99.96899781159468" : 702.091, + "99.96923956172967" : 702.427, + "99.96948660014887" : 703.091, + "99.96972759481469" : 703.299, + "99.96997387776472" : 703.515, + "99.97021638336888" : 703.827, + "99.97046644366476" : 703.975, + "99.9707044164539" : 704.087, + "99.97094767752723" : 704.163, + "99.97119622688477" : 704.219, + "99.97144024342728" : 704.275, + "99.97169483653819" : 704.347, + "99.97193280932733" : 704.423, + "99.97217909227734" : 704.519, + "99.9724163095973" : 704.863, + "99.9726580597323" : 705.039, + "99.9729020762748" : 705.283, + "99.97314533734814" : 705.523, + "99.97339010935983" : 706.387, + "99.97363563684068" : 706.851, + "99.97388569713657" : 706.967, + "99.97413575743245" : 707.071, + "99.97436617552987" : 707.343, + "99.97461019207238" : 707.791, + "99.97485496408405" : 708.571, + "99.97510124703408" : 708.795, + "99.97534450810741" : 709.207, + "99.97559079105744" : 712.499, + "99.97571242159411" : 712.611, + "99.97583254119243" : 712.711, + "99.9759541717291" : 712.827, + "99.97607731320412" : 712.931, + "99.97619667733326" : 713.107, + "99.97633039537668" : 713.227, + "99.97644598215997" : 713.271, + "99.97656383535079" : 713.323, + "99.97668773229496" : 713.387, + "99.97681238470832" : 713.455, + "99.97692948242995" : 713.631, + "99.9770518684358" : 713.827, + "99.97717652084916" : 713.935, + "99.97729664044748" : 714.047, + "99.97741827098415" : 714.167, + "99.97754065698999" : 714.787, + "99.97766530940335" : 714.907, + "99.97778391806332" : 714.991, + "99.97790630406917" : 715.075, + "99.978028690075" : 715.179, + "99.9781525870192" : 715.303, + "99.97827497302502" : 715.423, + "99.97839509262336" : 715.515, + "99.9785174786292" : 715.591, + "99.97865044120344" : 715.655, + "99.97876376157922" : 715.703, + "99.97889219133843" : 715.763, + "99.97900400077587" : 715.871, + "99.97912865318922" : 716.515, + "99.97925103919506" : 716.611, + "99.97937493613925" : 716.663, + "99.97949354479923" : 716.711, + "99.97961441986672" : 716.783, + "99.97973680587256" : 716.855, + "99.97986523563178" : 716.991, + "99.97998157788425" : 717.095, + "99.98010471935926" : 717.219, + "99.98022559442676" : 717.431, + "99.98035175777845" : 717.907, + "99.98046961096927" : 718.467, + "99.98059199697511" : 718.715, + "99.98071362751178" : 718.947, + "99.98083676898678" : 719.179, + "99.98095839952344" : 719.431, + "99.98108154099846" : 719.663, + "99.98120770435015" : 719.903, + "99.98132706847932" : 719.959, + "99.98144718807764" : 720.023, + "99.98156806314513" : 720.071, + "99.98169724837352" : 720.107, + "99.98181207968764" : 720.139, + "99.98193748757018" : 720.175, + "99.98205685169933" : 720.243, + "99.98218074864351" : 720.339, + "99.98230162371101" : 720.415, + "99.98242627612436" : 721.511, + "99.98254412931517" : 721.611, + "99.98266727079019" : 721.715, + "99.98278814585768" : 721.815, + "99.98291128733268" : 721.907, + "99.98303593974605" : 728.859, + "99.98315605934437" : 728.959, + "99.98327693441186" : 729.063, + "99.98340158682522" : 729.167, + "99.98352095095437" : 729.267, + "99.9836463588369" : 729.791, + "99.98376572296606" : 729.887, + "99.98388886444107" : 729.983, + "99.98401351685442" : 730.091, + "99.98413439192191" : 730.199, + "99.98425375605107" : 730.299, + "99.98437840846442" : 735.423, + "99.98450306087778" : 735.527, + "99.98462015859943" : 735.575, + "99.98474330007443" : 735.627, + "99.98486870795696" : 735.675, + "99.98499033849363" : 735.707, + "99.98511272449947" : 735.743, + "99.98523435503614" : 735.779, + "99.98536354026453" : 735.819, + "99.9854821489245" : 735.859, + "99.98560529039952" : 735.911, + "99.98571785530612" : 735.955, + "99.98584326318866" : 736.227, + "99.98596338278698" : 736.335, + "99.98608425785447" : 736.435, + "99.98621268761369" : 741.767, + "99.98633205174283" : 742.171, + "99.98645897056372" : 742.235, + "99.98657909016204" : 742.287, + "99.98670751992125" : 742.327, + "99.9868215957662" : 742.347, + "99.98694624817955" : 742.375, + "99.98706183496284" : 742.407, + "99.98718950925289" : 742.447, + "99.98731491713542" : 742.507, + "99.98743050391872" : 747.011, + "99.98755062351704" : 747.115, + "99.98767452046123" : 747.223, + "99.9877961509979" : 747.331, + "99.9878550775933" : 747.375, + "99.98791778153456" : 747.427, + "99.98797670812996" : 752.499, + "99.98803714566371" : 782.011, + "99.9880990941358" : 782.103, + "99.98815953166955" : 782.191, + "99.98822072467247" : 782.295, + "99.98828342861374" : 782.395, + "99.98834311067831" : 782.483, + "99.98840505915041" : 782.519, + "99.98846625215333" : 782.559, + "99.98853046703293" : 782.599, + "99.98858712722082" : 782.631, + "99.98865134210043" : 782.675, + "99.98871026869583" : 782.731, + "99.98877070622957" : 783.211, + "99.9888318992325" : 783.299, + "99.98889460317376" : 783.399, + "99.98895352976916" : 783.487, + "99.98901547824126" : 783.591, + "99.98907516030583" : 783.695, + "99.98913710877792" : 783.807, + "99.98919754631167" : 783.863, + "99.98925949478377" : 783.919, + "99.98932295419421" : 783.971, + "99.98938112532043" : 784.015, + "99.98944760660756" : 784.067, + "99.98950653320297" : 784.115, + "99.98956319339085" : 784.963, + "99.98962438639377" : 785.071, + "99.98968557939669" : 785.179, + "99.98974828333796" : 785.287, + "99.98980796540253" : 785.371, + "99.98986915840545" : 785.427, + "99.98993110687755" : 785.483, + "99.9899915444113" : 785.535, + "99.99005500382172" : 785.591, + "99.99011468588631" : 785.651, + "99.99017512342006" : 785.751, + "99.9902355609538" : 785.859, + "99.99029599848755" : 785.959, + "99.99035870242882" : 786.471, + "99.99041762902422" : 786.571, + "99.99048033296549" : 786.683, + "99.99054077049924" : 786.803, + "99.99060498537884" : 786.895, + "99.99066466744341" : 786.951, + "99.99072510497716" : 787.003, + "99.99078403157257" : 787.055, + "99.9908452245755" : 787.111, + "99.99090792851675" : 787.179, + "99.9909683660505" : 787.283, + "99.99102955905342" : 787.387, + "99.99108924111799" : 787.919, + "99.99115118959008" : 788.051, + "99.991212382593" : 788.183, + "99.99127357559593" : 788.319, + "99.99133552406802" : 788.455, + "99.99139445066342" : 788.591, + "99.99145564366634" : 788.731, + "99.99151683666926" : 788.867, + "99.99157878514136" : 788.935, + "99.99163846720593" : 788.991, + "99.99170192661637" : 789.043, + "99.9917653860268" : 789.095, + "99.99182280168387" : 789.143, + "99.99188248374844" : 789.763, + "99.99194367675136" : 789.895, + "99.99200562522346" : 790.027, + "99.99206757369555" : 790.167, + "99.99212725576012" : 790.303, + "99.99218769329387" : 790.451, + "99.99224888629679" : 790.515, + "99.99231159023806" : 790.575, + "99.99237127230263" : 790.639, + "99.99243246530555" : 790.715, + "99.9924929028393" : 790.795, + "99.99255409584222" : 790.927, + "99.99261528884514" : 791.071, + "99.99267723731722" : 791.923, + "99.99273767485099" : 792.083, + "99.99279962332307" : 792.195, + "99.99285930538765" : 792.331, + "99.99292049839056" : 792.463, + "99.99298169139348" : 792.523, + "99.9930428843964" : 792.579, + "99.99310558833767" : 792.639, + "99.99316753680976" : 792.707, + "99.99322646340516" : 792.767, + "99.99328765640809" : 792.875, + "99.99334733847266" : 792.979, + "99.99340928694475" : 793.527, + "99.99347047994767" : 793.631, + "99.99353091748142" : 793.739, + "99.99359135501517" : 793.847, + "99.99365405895644" : 793.951, + "99.99371449649018" : 794.019, + "99.99377871136979" : 794.083, + "99.99383914890355" : 794.139, + "99.9938965645606" : 794.195, + "99.99392753879664" : 794.235, + "99.99395775756352" : 794.267, + "99.99398873179956" : 794.307, + "99.99401895056644" : 794.351, + "99.99404992480248" : 794.407, + "99.99408165450771" : 794.467, + "99.99411036233623" : 794.519, + "99.99414133657228" : 794.575, + "99.99417155533915" : 794.631, + "99.99421235067443" : 802.667, + "99.99423954756462" : 802.683, + "99.99426523351647" : 802.699, + "99.99429696322169" : 802.715, + "99.99432491558105" : 802.743, + "99.99435437887874" : 802.771, + "99.99438988592982" : 802.807, + "99.99442086016586" : 802.827, + "99.99444805705605" : 802.855, + "99.99447827582293" : 802.895, + "99.99450925005897" : 802.915, + "99.9945409797642" : 805.407, + "99.99457195400024" : 805.427, + "99.99460217276712" : 805.447, + "99.99463163606481" : 805.467, + "99.99466487670837" : 805.491, + "99.99469434000608" : 805.519, + "99.99472380330378" : 805.539, + "99.99475477753982" : 805.555, + "99.99478272989919" : 805.575, + "99.99481748148109" : 805.599, + "99.99484316743293" : 805.619, + "99.99487716354567" : 805.643, + "99.9949081377817" : 805.663, + "99.99493609014107" : 805.675, + "99.99496630890795" : 805.695, + "99.99499577220564" : 805.715, + "99.99503052378755" : 805.739, + "99.99505998708526" : 805.759, + "99.99508869491379" : 805.775, + "99.99512118008818" : 815.163, + "99.99515290979339" : 815.187, + "99.99518086215275" : 815.207, + "99.99520881451211" : 815.227, + "99.99524281062484" : 815.251, + "99.9952707629842" : 815.271, + "99.99530249268942" : 815.295, + "99.9953349778638" : 815.315, + "99.99536293022317" : 815.335, + "99.99539465992838" : 815.367, + "99.99542638963361" : 815.391, + "99.99545434199297" : 815.411, + "99.99548456075983" : 815.439, + "99.9955178014034" : 815.459, + "99.99554499829358" : 815.479, + "99.99557748346797" : 815.503, + "99.9956114795807" : 815.527, + "99.99564169834758" : 815.547, + "99.99567191711445" : 815.567, + "99.9956976030663" : 819.499, + "99.99572933277152" : 820.223, + "99.99576030700756" : 820.255, + "99.99579128124361" : 820.295, + "99.99582150001048" : 820.335, + "99.99585247424653" : 820.375, + "99.99588193754423" : 820.411, + "99.9959121563111" : 820.451, + "99.99594237507797" : 820.495, + "99.99597183837568" : 820.535, + "99.99600432355007" : 820.579, + "99.99603454231695" : 820.623, + "99.99606476108382" : 820.659, + "99.99609422438152" : 820.707, + "99.99612444314839" : 843.151, + "99.99615768379196" : 843.191, + "99.99618639162048" : 843.227, + "99.99621812132571" : 843.263, + "99.9962475846234" : 843.299, + "99.99628006979779" : 843.339, + "99.99631028856467" : 843.371, + "99.99633975186238" : 843.407, + "99.99637223703677" : 843.443, + "99.99640018939613" : 843.479, + "99.996430408163" : 843.515, + "99.99646062692987" : 843.551, + "99.99649084569674" : 843.591, + "99.99652257540197" : 843.623, + "99.99655430510718" : 843.663, + "99.99658301293572" : 843.699, + "99.99661398717176" : 843.747, + "99.99664345046946" : 844.315, + "99.99667366923633" : 844.383, + "99.99671219816409" : 845.879, + "99.996746949746" : 845.891, + "99.9967711247595" : 845.903, + "99.99680134352637" : 845.915, + "99.99682778494738" : 845.927, + "99.99685800371427" : 845.939, + "99.99689124435783" : 845.955, + "99.99692448500139" : 845.967, + "99.99695470376827" : 845.979, + "99.9969698131517" : 845.983, + "99.99697887878176" : 845.987, + "99.99700154285692" : 845.995, + "99.99701060848697" : 845.999, + "99.99703025068544" : 846.007, + "99.99704687100723" : 846.019, + "99.99706273585984" : 846.023, + "99.99707406789742" : 846.027, + "99.99709522103423" : 846.035, + "99.99711033041767" : 846.039, + "99.99711788510938" : 846.043, + "99.99713299449282" : 846.051, + "99.99715565856798" : 846.063, + "99.99716396872887" : 846.067, + "99.99718058905064" : 846.075, + "99.99719267655739" : 846.079, + "99.99722516173179" : 846.087, + "99.99724631486859" : 846.095, + "99.99726066878286" : 846.099, + "99.99726973441292" : 846.103, + "99.99728786567304" : 846.111, + "99.99729995317979" : 895.071, + "99.9973158180324" : 895.099, + "99.99733017194667" : 895.127, + "99.99734679226846" : 895.159, + "99.99736039071355" : 895.183, + "99.99737625556615" : 895.211, + "99.99739287588794" : 895.239, + "99.9974072298022" : 895.255, + "99.99742158371646" : 895.271, + "99.99743744856907" : 895.287, + "99.99745331342169" : 895.307, + "99.99746993374346" : 895.327, + "99.99748277671938" : 902.247, + "99.997498641572" : 902.259, + "99.99751526189378" : 902.271, + "99.99753263768473" : 902.283, + "99.9975439697223" : 902.291, + "99.99755983457491" : 902.303, + "99.99757721036586" : 902.323, + "99.99759458615682" : 902.335, + "99.99760894007109" : 902.343, + "99.99762329398536" : 902.351, + "99.9976353814921" : 902.359, + "99.99765200181388" : 902.371, + "99.99766937760484" : 902.383, + "99.99768146511158" : 902.391, + "99.99769808543337" : 902.403, + "99.99771395028597" : 902.415, + "99.99773057060776" : 902.427, + "99.9977426581145" : 902.435, + "99.99775852296712" : 902.447, + "99.99777438781972" : 902.459, + "99.99779176361068" : 902.471, + "99.99780838393245" : 902.479, + "99.99782122690837" : 902.487, + "99.99783784723016" : 902.499, + "99.99784917926773" : 902.507, + "99.99786655505869" : 902.519, + "99.99788317538047" : 902.531, + "99.99789526288721" : 902.539, + "99.99791414961652" : 902.551, + "99.99793530275332" : 902.559, + "99.99794890119841" : 902.563, + "99.99795947776683" : 902.567, + "99.99798138637281" : 902.575, + "99.99798894106453" : 902.579, + "99.998008583263" : 902.587, + "99.99801991530057" : 902.599, + "99.99803578015319" : 902.611, + "99.99804711219076" : 902.619, + "99.99806373251253" : 902.631, + "99.99807959736515" : 902.643, + "99.99809772862527" : 902.655, + "99.99810906066286" : 902.663, + "99.99812870286132" : 902.675, + "99.99814230130642" : 902.683, + "99.99815589975151" : 902.691, + "99.99817176460412" : 902.703, + "99.9981853630492" : 977.143, + "99.99819971696347" : 977.155, + "99.99821558181608" : 977.183, + "99.99823069119952" : 977.207, + "99.99824655605212" : 977.235, + "99.99826166543556" : 977.263, + "99.998276774819" : 977.287, + "99.99829263967162" : 977.315, + "99.99830850452422" : 977.343, + "99.99832210296931" : 977.367, + "99.99833721235275" : 977.395, + "99.99835383267454" : 977.423, + "99.99836743111963" : 977.447, + "99.9983870733181" : 977.479, + "99.99839916082485" : 977.499, + "99.99841502567746" : 977.527, + "99.99842862412254" : 977.551, + "99.99844448897515" : 977.579, + "99.99846035382777" : 977.607, + "99.99847546321121" : 977.643, + "99.99848301790291" : 977.659, + "99.99848981712546" : 977.675, + "99.99849812728635" : 977.695, + "99.99850568197807" : 977.711, + "99.9985132366698" : 977.727, + "99.99852079136151" : 977.743, + "99.99852759058406" : 977.759, + "99.99853665621413" : 977.779, + "99.99854496637501" : 977.795, + "99.99855252106673" : 977.819, + "99.99856007575845" : 977.835, + "99.998566874981" : 977.851, + "99.99857442967271" : 977.867, + "99.99858122889526" : 977.879, + "99.99858953905616" : 977.895, + "99.9985963382787" : 977.915, + "99.99860389297042" : 977.931, + "99.99861371406965" : 977.955, + "99.99861975782302" : 977.967, + "99.99862806798392" : 977.987, + "99.99863486720646" : 978.003, + "99.99864242189818" : 978.019, + "99.99865073205908" : 978.039, + "99.99865753128162" : 978.055, + "99.99866659691168" : 978.079, + "99.99867264066505" : 978.091, + "99.99868019535677" : 978.107, + "99.99869001645601" : 978.123, + "99.99869757114773" : 978.135, + "99.99870588130861" : 978.143, + "99.998711925062" : 978.147, + "99.99872325709957" : 978.155, + "99.99873156726046" : 978.159, + "99.99874289929804" : 978.163, + "99.9987519649281" : 978.167, + "99.99876178602733" : 978.171, + "99.99877236259574" : 978.175, + "99.99878369463332" : 978.179, + "99.99879351573256" : 978.183, + "99.99880333683178" : 978.187, + "99.99881240246185" : 978.191, + "99.9988192016844" : 978.199, + "99.99882751184528" : 978.207, + "99.99883355559867" : 978.215, + "99.99884035482121" : 978.223, + "99.99884942045126" : 978.591, + "99.99885621967381" : 978.599, + "99.99886528530388" : 978.611, + "99.99887132905725" : 978.619, + "99.99887888374897" : 978.627, + "99.99888719390987" : 978.635, + "99.99889550407075" : 978.643, + "99.99890381423164" : 978.655, + "99.99891061345419" : 978.671, + "99.99891741267673" : 978.679, + "99.99892496736845" : 978.687, + "99.99893403299852" : 978.699, + "99.9989400767519" : 978.707, + "99.99894989785112" : 978.719, + "99.99895745254284" : 978.727, + "99.99896425176539" : 978.735, + "99.99897105098793" : 978.743, + "99.99897785021048" : 978.751, + "99.99898767130972" : 978.763, + "99.99899447053227" : 978.771, + "99.99900126975481" : 978.779, + "99.99901184632321" : 978.791, + "99.99901864554576" : 978.799, + "99.99902771117583" : 978.807, + "99.99903451039837" : 978.815, + "99.99904130962092" : 978.823, + "99.99904659790512" : 978.835, + "99.99905490806601" : 978.843, + "99.99906472916524" : 978.855, + "99.99907152838779" : 978.863, + "99.99908134948703" : 978.871, + "99.9990904151171" : 978.879, + "99.9990926815246" : 978.883, + "99.99910023621632" : 978.895, + "99.99910779090804" : 978.907, + "99.99911534559976" : 978.919, + "99.99912441122983" : 978.931, + "99.99913196592153" : 978.943, + "99.99913952061326" : 978.955, + "99.99914783077415" : 978.967, + "99.99915538546587" : 978.979, + "99.99916294015759" : 978.991, + "99.99917125031848" : 979.003, + "99.99917956047936" : 979.015, + "99.9991840932944" : 979.019, + "99.99919542533198" : 979.027, + "99.99920071361618" : 979.031, + "99.99921129018459" : 979.039, + "99.99921431206127" : 979.043, + "99.99922262222216" : 979.055, + "99.99923168785223" : 979.071, + "99.99923924254395" : 979.083, + "99.99924150895146" : 979.087, + "99.99924679723566" : 979.095, + "99.99924906364318" : 979.099, + "99.99925435192738" : 979.107, + "99.9992566183349" : 979.111, + "99.9992619066191" : 979.119, + "99.99926492849579" : 979.123, + "99.99926946131082" : 979.127, + "99.99927399412584" : 979.131, + "99.99927701600254" : 979.135, + "99.99928003787923" : 979.139, + "99.99928532616343" : 979.147, + "99.99928834804011" : 979.151, + "99.99929061444763" : 979.155, + "99.99929590273183" : 979.163, + "99.99929892460852" : 979.167, + "99.9993019464852" : 979.171, + "99.99930723476942" : 979.179, + "99.9993102566461" : 979.183, + "99.99931478946112" : 979.191, + "99.99931781133782" : 979.195, + "99.99932309962202" : 979.203, + "99.99932536602954" : 979.207, + "99.99933065431374" : 979.215, + "99.99933292072126" : 979.219, + "99.99933820900546" : 979.227, + "99.99934123088214" : 979.231, + "99.99934425275883" : 979.235, + "99.99934878557386" : 979.243, + "99.99935256291973" : 1017.839, + "99.9993555847964" : 1017.843, + "99.9993638949573" : 1017.851, + "99.9993691832415" : 1017.855, + "99.99937371605654" : 1017.859, + "99.99937824887157" : 1017.863, + "99.99938353715577" : 1017.867, + "99.9993880699708" : 1017.871, + "99.99939260278583" : 1017.875, + "99.99939638013169" : 1017.879, + "99.99939940200838" : 1017.883, + "99.9994016684159" : 1018.227, + "99.99940620123093" : 1018.231, + "99.99941073404595" : 1018.235, + "99.99941526686099" : 1018.239, + "99.99941979967602" : 1018.243, + "99.99942433249105" : 1018.247, + "99.99942886530609" : 1018.251, + "99.99943339812111" : 1018.255, + "99.99943793093614" : 1018.259, + "99.99944246375117" : 1018.263, + "99.9994469965662" : 1018.267, + "99.99945152938123" : 1018.271, + "99.99945606219626" : 1018.275, + "99.9994605950113" : 1018.279, + "99.9994658832955" : 1018.283, + "99.9994711715797" : 1018.287, + "99.99947721533307" : 1018.291, + "99.99948174814811" : 1018.295, + "99.99948628096314" : 1018.299, + "99.999490058309" : 1018.303, + "99.99949459112403" : 1018.307, + "99.99949912393906" : 1018.311, + "99.99950441222326" : 1018.315, + "99.9995089450383" : 1018.319, + "99.99951347785333" : 1018.323, + "99.99951725519918" : 1018.327, + "99.9995225434834" : 1018.331, + "99.99952632082925" : 1018.335, + "99.99953085364427" : 1018.339, + "99.99953538645931" : 1018.343, + "99.99953916380517" : 1018.347, + "99.99954369662021" : 1018.351, + "99.99954822943523" : 1018.355, + "99.99955276225026" : 1018.359, + "99.99956107241115" : 1018.363, + "99.99956484975701" : 1018.367, + "99.99956938257205" : 1018.371, + "99.99957391538707" : 1018.375, + "99.9995784482021" : 1018.379, + "99.99958298101714" : 1018.383, + "99.99958751383217" : 1018.387, + "99.9995920466472" : 1018.391, + "99.99959657946224" : 1018.395, + "99.99960035680809" : 1018.399, + "99.99960488962311" : 1018.403, + "99.99960942243816" : 1018.407, + "99.99961395525318" : 1018.411, + "99.99961848806821" : 1018.415, + "99.99962302088325" : 1018.419, + "99.99962755369828" : 1018.423, + "99.9996320865133" : 1018.427, + "99.99963661932834" : 1018.431, + "99.9996403966742" : 1018.435, + "99.99964492948924" : 1018.439, + "99.99964946230426" : 1018.443, + "99.99965399511929" : 1018.447, + "99.99965852793433" : 1018.451, + "99.99966306074936" : 1018.455, + "99.99966759356438" : 1018.459, + "99.99967137091025" : 1018.463, + "99.99967590372528" : 1018.467, + "99.9996804365403" : 1018.471, + "99.99968496935534" : 1018.475, + "99.99968950217037" : 1018.479, + "99.9996940349854" : 1018.483, + "99.99969856780044" : 1018.487, + "99.99970385608464" : 1018.491, + "99.99970763343049" : 1018.495, + "99.99971216624553" : 1018.499, + "99.99971594359138" : 1018.503, + "99.99972047640641" : 1018.507, + "99.99972500922145" : 1018.511, + "99.99973029750565" : 1018.515, + "99.99973483032068" : 1018.519, + "99.99973936313572" : 1018.523, + "99.99974314048157" : 1018.527, + "99.99974993970412" : 1018.531, + "99.99975673892666" : 1018.535, + "99.99976127174169" : 1018.539, + "99.99976580455673" : 1018.543, + "99.99977033737176" : 1018.547, + "99.99977487018678" : 1018.551, + "99.99977940300182" : 1018.555, + "99.99978393581685" : 1018.559, + "99.99978846863188" : 1018.563, + "99.99979300144692" : 1018.567, + "99.99979753426194" : 1018.571, + "99.99980206707697" : 1018.575, + "99.99980735536118" : 1018.579, + "99.99980811083034" : 1018.587, + "99.99981339911456" : 1018.591, + "99.99981868739876" : 1018.595, + "99.99982322021378" : 1018.599, + "99.99982850849798" : 1018.603, + "99.99983304131302" : 1018.607, + "99.99983757412805" : 1018.611, + "99.99984286241225" : 1018.615, + "99.99984815069645" : 1018.619, + "99.99985268351149" : 1018.623, + "99.99985797179569" : 1018.627, + "99.99986326007989" : 1018.631, + "99.99986779289493" : 1018.635, + "99.99987308117913" : 1018.639, + "99.99987761399416" : 1018.643, + "99.99988290227836" : 1018.647, + "99.9998874350934" : 1018.651, + "99.9998927233776" : 1018.655, + "99.99989725619263" : 1018.659, + "99.99990178900767" : 1018.663, + "99.99990632182269" : 1018.667, + "99.99991161010689" : 1018.671, + "99.99991614292192" : 1018.675, + "99.99992143120613" : 1018.679, + "99.99992671949033" : 1018.683, + "99.99993200777453" : 1018.687, + "99.99993729605873" : 1018.691, + "99.9999433398121" : 1018.695, + "99.99994409528128" : 1019.591, + "99.99994485075045" : 1027.743, + "99.99995013903465" : 1035.775, + "99.9999546718497" : 1035.779, + "99.99995920466472" : 1035.783, + "99.99996600388727" : 1035.787, + "99.9999758249865" : 1035.791, + "99.9999811132707" : 1035.795, + "99.9999864015549" : 1035.799, + "99.99999546718497" : 1035.803, + "100.0" : 1035.807 + }, + "endToEndLatencyAvg" : [ 4568.136294539819, 4481.7059320836825, 4461.359856433945, 4569.45452699476, 4698.779138081656, 4687.916211019565, 4565.0332885606695, 4633.78919636341, 4644.725951778537, 4811.357786626611, 4776.406141493598, 4861.37740750367, 4724.87345891231, 4879.983187570335, 4808.166313372985, 4865.947124249701, 4972.084420891801, 5057.394384212628, 4830.0604335160415, 4711.738304809057, 4771.768581572996, 4815.634896475242, 4879.520137579242, 4810.997441267243, 4785.615718789955, 4531.847902555981, 4552.324287496918, 4666.8749505095175, 4596.409888935392, 4727.61238013606, 4588.7647865355575, 4840.781763769625, 4807.297155502852, 4933.279406135218, 4949.0910886219535, 5051.81058850724, 4935.591752310285, 4948.748393402412, 4974.647084486068, 5081.632192034727, 4942.394590956403, 4923.533212526088, 7143.036824952758, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], + "endToEndLatency50pct" : [ 4441.023, 4356.031, 4401.023, 4524.031, 4644.031, 4597.023, 4486.015, 4565.023, 4657.023, 4837.023, 4711.007, 4766.015, 4803.007, 4851.007, 4892.031, 4987.007, 5035.007, 5187.007, 4663.007, 4704.031, 4713.023, 4713.023, 4807.007, 4820.031, 4656.031, 4424.031, 4411.007, 4528.031, 4588.031, 4593.023, 4584.031, 4821.023, 4864.031, 4987.007, 5053.023, 5012.031, 5091.007, 5132.031, 5051.007, 5319.007, 5016.031, 4704.031, 7442.015, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], + "endToEndLatency75pct" : [ 6789.023, 6417.023, 6400.031, 6611.007, 6710.015, 6793.023, 6429.023, 6654.015, 6495.007, 6798.015, 6666.015, 7049.023, 6595.007, 6821.023, 6904.031, 6957.023, 7200.031, 7583.007, 6930.015, 6858.015, 6800.031, 6989.023, 7053.023, 6910.015, 6929.023, 6705.023, 6728.031, 6905.023, 6659.007, 7150.015, 6427.007, 6863.007, 6764.031, 6886.015, 6931.007, 7148.031, 6919.007, 7010.015, 7172.031, 7309.023, 7154.015, 7244.031, 9346.047, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], + "endToEndLatency95pct" : [ 8777.023, 8899.007, 8640.063, 8777.023, 9048.063, 8980.031, 8810.047, 8899.007, 8629.055, 9033.023, 9151.039, 9364.031, 8934.015, 9489.023, 9002.047, 9245.055, 9058.047, 9530.047, 9421.055, 9068.031, 9265.023, 9202.047, 9437.055, 9331.007, 9552.063, 8783.039, 8575.039, 9099.007, 8746.047, 9179.007, 8752.063, 9276.031, 9009.023, 9231.039, 9158.015, 9612.031, 9158.015, 9186.047, 9195.007, 9582.015, 9296.063, 9235.007, 10902.015, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], + "endToEndLatency99pct" : [ 9201.023, 9531.007, 9180.031, 9332.031, 10004.031, 9525.055, 9800.063, 9374.015, 9177.023, 9834.047, 9967.039, 10095.039, 9535.039, 10411.007, 9363.007, 9611.007, 9533.055, 9966.015, 10537.023, 9744.063, 10121.023, 10629.055, 10008.063, 9992.063, 10110.015, 9449.023, 9270.015, 9630.015, 9463.039, 10503.039, 9788.031, 10059.007, 9494.015, 9867.007, 9889.023, 10666.047, 9758.015, 9460.031, 9867.007, 10234.047, 9998.015, 9692.031, 11553.023, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], + "endToEndLatency999pct" : [ 9420.031, 9707.007, 9488.063, 9498.047, 10431.039, 9820.031, 9935.039, 9497.023, 9417.023, 10218.047, 10400.063, 10390.015, 10141.055, 10515.007, 9513.023, 9681.023, 9708.031, 10231.039, 10917.055, 10156.031, 10406.015, 10880.063, 10358.015, 10101.055, 10273.023, 9707.007, 9434.047, 10169.023, 9746.047, 10778.047, 10041.023, 10342.015, 9644.031, 9976.063, 10005.055, 10879.039, 9868.031, 9672.063, 10043.007, 10403.007, 10201.023, 10485.055, 11687.039, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], + "endToEndLatency9999pct" : [ 9451.007, 9742.015, 9501.055, 9538.047, 10464.063, 9860.031, 9962.047, 9541.055, 9462.015, 10237.055, 10443.007, 10440.063, 10185.023, 10553.023, 9546.047, 9714.047, 9780.031, 10324.031, 10940.031, 10195.007, 10428.031, 10912.063, 10406.015, 10115.007, 10313.023, 9791.039, 9461.055, 10208.063, 9814.015, 10821.055, 10091.007, 10385.023, 9669.055, 10022.015, 10024.063, 10923.007, 9894.015, 9714.047, 10068.031, 10446.015, 10241.023, 10558.015, 11696.063, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], + "endToEndLatencyMax" : [ 9455.039, 9746.047, 9507.007, 9541.055, 10469.055, 9864.063, 9968.063, 9547.007, 9467.007, 10241.023, 10447.039, 10445.055, 10189.055, 10563.007, 9550.015, 9719.039, 9787.007, 10324.031, 10949.055, 10199.039, 10432.063, 10917.055, 10412.031, 10116.031, 10317.055, 9795.007, 9465.023, 10213.055, 9818.047, 10824.063, 10093.055, 10389.055, 9678.015, 10025.023, 10029.055, 10927.039, 9900.031, 9719.039, 10079.039, 10451.007, 10246.015, 10560.063, 11697.023, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], + "aggregatedEndToEndLatencyQuantiles" : { + "1.1961161897996871E-5" : 12.0, + "0.502730624863283" : 208.0, + "1.0029292212672838" : 322.001, + "1.5025394780204269" : 381.001, + "2.000677016714879" : 415.001, + "2.510375765956364" : 447.001, + "3.0064679459662584" : 478.001, + "3.502050281450251" : 508.001, + "4.005327381897748" : 538.003, + "4.510884578832052" : 567.003, + "5.009739787240385" : 596.003, + "5.511181596909158" : 625.003, + "6.001167603770125" : 655.003, + "6.503921403384585" : 689.003, + "7.001300903443752" : 729.003, + "7.500681655402977" : 775.003, + "8.007414784066377" : 827.003, + "8.503515187375077" : 880.003, + "9.008814471755954" : 936.003, + "9.509276961294331" : 992.003, + "10.002954481746068" : 1046.003, + "10.507742426455806" : 1103.007, + "11.005698305003932" : 1158.007, + "11.506482998340935" : 1215.007, + "12.001800693117934" : 1270.007, + "12.50575285164005" : 1325.007, + "13.004211098987891" : 1381.007, + "13.503208346193762" : 1437.007, + "14.003641680400012" : 1492.007, + "14.500130821470396" : 1548.007, + "15.002065281494843" : 1605.007, + "15.503650625106394" : 1663.007, + "16.000272086530273" : 1719.007, + "16.507402923826785" : 1778.007, + "17.000187842571883" : 1836.007, + "17.504930932924502" : 1895.007, + "18.007345334570108" : 1954.007, + "18.501044534627784" : 2010.007, + "19.002902742245134" : 2066.007, + "19.504092619941428" : 2123.007, + "20.00132185790425" : 2177.007, + "20.50265751226118" : 2230.015, + "21.005924894264638" : 2283.007, + "21.501231375452356" : 2333.007, + "22.001897204743" : 2383.007, + "22.50989672142235" : 2436.015, + "23.0085680269665" : 2487.007, + "23.504128682844552" : 2538.015, + "24.00459491024602" : 2589.007, + "24.5015976337054" : 2637.007, + "25.008772577786406" : 2685.007, + "25.502525603072627" : 2732.015, + "26.00203718024011" : 2778.015, + "26.50461754300705" : 2824.015, + "27.00067383953125" : 2867.007, + "27.508558230027333" : 2911.007, + "28.006635215339674" : 2955.007, + "28.508388762790418" : 3002.015, + "29.00857390288728" : 3046.015, + "29.501047831423033" : 3088.015, + "30.003137786552156" : 3130.015, + "30.51083976932929" : 3174.015, + "31.009822812655408" : 3215.007, + "31.50478989587427" : 3255.007, + "32.00189055134669" : 3294.015, + "32.50759128222377" : 3331.007, + "33.0014609288385" : 3367.007, + "33.50852074673623" : 3407.007, + "34.01172907050282" : 3445.007, + "34.510933395324045" : 3484.015, + "35.00545343011697" : 3522.015, + "35.5110517435453" : 3562.015, + "36.00546936088948" : 3600.015, + "36.511275499505786" : 3640.015, + "37.00002277853769" : 3675.007, + "37.51137590598419" : 3713.007, + "38.007832901431975" : 3751.007, + "38.50850695402142" : 3791.007, + "39.00843492913748" : 3829.007, + "39.5083935547309" : 3868.015, + "40.002260958627765" : 3905.007, + "40.503156292712326" : 3943.007, + "41.01050392606824" : 3982.015, + "41.50104986482056" : 4021.007, + "42.000239238189415" : 4062.015, + "42.50636010487816" : 4105.007, + "43.01029506923005" : 4148.015, + "43.50068551287769" : 4191.007, + "44.001555429493216" : 4235.007, + "44.51193222709979" : 4278.015, + "45.00285045701619" : 4320.031, + "45.504917984966745" : 4363.007, + "46.00386738752503" : 4406.015, + "46.50716467243323" : 4452.031, + "47.00396330856772" : 4497.023, + "47.50484070090943" : 4542.015, + "48.00310457937643" : 4588.031, + "48.503193282605494" : 4635.007, + "49.0048047912587" : 4682.015, + "49.5068700764914" : 4730.015, + "50.003242596233285" : 4778.015, + "50.256415539256764" : 4803.007, + "50.502045474558315" : 4827.007, + "50.75118601087693" : 4852.031, + "51.006168079637476" : 4876.031, + "51.25649949913756" : 4899.007, + "51.506556559486604" : 4923.007, + "51.752789038318774" : 4948.031, + "52.00847233019559" : 4973.023, + "52.252489003786145" : 4997.023, + "52.50907910124936" : 5022.015, + "52.75783314252414" : 5046.015, + "53.010585949735955" : 5070.015, + "53.25234420644565" : 5093.023, + "53.50388220815219" : 5116.031, + "53.751022987715984" : 5138.015, + "54.003269688264986" : 5160.031, + "54.25308303994036" : 5182.015, + "54.50082337274429" : 5204.031, + "54.75823056707966" : 5226.015, + "55.00711319084485" : 5247.007, + "55.25956846415444" : 5268.031, + "55.504942729620424" : 5288.031, + "55.75306581960509" : 5308.031, + "56.009929528646715" : 5328.031, + "56.26035215200627" : 5348.031, + "56.50924897965122" : 5368.031, + "56.75593822535336" : 5388.031, + "57.002758296263764" : 5408.031, + "57.259450811175725" : 5428.031, + "57.50212110648014" : 5447.007, + "57.750748807982376" : 5466.015, + "58.00332070262048" : 5486.015, + "58.25737279104346" : 5506.015, + "58.509048346111825" : 5526.015, + "58.75948816364161" : 5545.023, + "59.00028130410066" : 5563.007, + "59.2546084992473" : 5582.015, + "59.50321452114359" : 5601.023, + "59.7566939689407" : 5621.023, + "60.011276086350286" : 5641.023, + "60.25731120601114" : 5660.031, + "60.50412081090488" : 5678.015, + "60.757825278060196" : 5697.023, + "61.00563513511766" : 5716.031, + "61.257531224108526" : 5735.007, + "61.51302986554854" : 5754.015, + "61.750100094366836" : 5771.007, + "62.00538717275579" : 5790.015, + "62.252461418356525" : 5808.031, + "62.500823731579146" : 5826.015, + "62.76324639061287" : 5845.023, + "63.006912452645295" : 5863.007, + "63.254158639948315" : 5881.023, + "63.51109860139704" : 5900.031, + "63.76291320497247" : 5919.007, + "64.0071616260748" : 5937.023, + "64.26367547113092" : 5955.007, + "64.50186257344144" : 5972.031, + "64.76206419422523" : 5991.007, + "65.00463580994399" : 6009.023, + "65.25443271502175" : 6028.031, + "65.50149649460583" : 6047.007, + "65.76054535841169" : 6067.007, + "66.00877236099035" : 6086.015, + "66.25809680017315" : 6105.023, + "66.51148728682864" : 6125.023, + "66.75721814443371" : 6144.031, + "67.00302600201849" : 6162.015, + "67.2517366840814" : 6180.031, + "67.50464199610741" : 6199.007, + "67.75096044579071" : 6218.015, + "68.00795572761321" : 6238.015, + "68.261414243377" : 6258.015, + "68.50722509125227" : 6279.007, + "68.75713413222283" : 6301.023, + "69.00280368887316" : 6323.007, + "69.25300204044713" : 6345.023, + "69.50086123729743" : 6367.007, + "69.75668955826225" : 6390.015, + "70.0077341620405" : 6413.023, + "70.25728212543628" : 6436.031, + "70.5068285936868" : 6458.015, + "70.7569439647001" : 6481.023, + "71.00066983254202" : 6502.015, + "71.25647572632829" : 6525.023, + "71.5002815844404" : 6548.031, + "71.7556994880376" : 6572.031, + "72.01230304180794" : 6595.007, + "72.25835087020332" : 6617.023, + "72.50608821271676" : 6639.007, + "72.75781011728749" : 6662.015, + "73.00714502248695" : 6684.031, + "73.25045972538862" : 6706.015, + "73.50204781446061" : 6728.031, + "73.75231195242502" : 6750.015, + "74.00920033136306" : 6774.015, + "74.25455067450524" : 6798.015, + "74.50885619004593" : 6823.007, + "74.75389404783354" : 6848.031, + "75.00369992378273" : 6874.015, + "75.13196320067804" : 6887.007, + "75.25513550804052" : 6899.007, + "75.37898436862285" : 6911.007, + "75.5011153073276" : 6923.007, + "75.6312407876159" : 6937.023, + "75.75919606459233" : 6950.015, + "75.87650964534265" : 6962.015, + "76.00833809605619" : 6976.031, + "76.12759686076016" : 6988.031, + "76.25733659357726" : 7001.023, + "76.37625969817547" : 7013.023, + "76.50585141161409" : 7026.015, + "76.63190561142137" : 7038.015, + "76.75686910277807" : 7050.015, + "76.876631731427" : 7061.023, + "77.00620550312276" : 7073.023, + "77.13008800447294" : 7085.023, + "77.25724711661054" : 7097.023, + "77.38103617138339" : 7109.023, + "77.50144918821051" : 7121.023, + "77.63354601749414" : 7134.015, + "77.75233231630315" : 7146.015, + "77.87950488474789" : 7159.007, + "78.00705796765551" : 7172.031, + "78.12563644127654" : 7183.007, + "78.25221468948948" : 7196.031, + "78.37932745212473" : 7209.023, + "78.5063691953612" : 7222.015, + "78.62625965892792" : 7234.015, + "78.75445042127923" : 7247.007, + "78.88427163951175" : 7260.031, + "79.00510778244103" : 7272.031, + "79.13290681674017" : 7285.023, + "79.25300510549486" : 7297.023, + "79.38008946037061" : 7310.015, + "79.50179802054582" : 7323.007, + "79.62797856012564" : 7336.031, + "79.75085333358591" : 7349.023, + "79.88563918157872" : 7363.007, + "80.00911649856961" : 7376.031, + "80.13152478671584" : 7389.023, + "80.25099810476138" : 7401.023, + "80.37683251821878" : 7414.015, + "80.5029846500391" : 7427.007, + "80.63337701375225" : 7440.031, + "80.75473870023242" : 7452.031, + "80.87706475539062" : 7464.031, + "81.00034321806494" : 7476.031, + "81.12778416507976" : 7489.023, + "81.25236116139264" : 7502.015, + "81.37629898311658" : 7515.007, + "81.50941251116154" : 7529.023, + "81.63049909091805" : 7542.015, + "81.75706687311433" : 7555.007, + "81.87880533619429" : 7568.031, + "82.0024687987672" : 7581.023, + "82.13079262904462" : 7595.007, + "82.25054329653166" : 7608.031, + "82.38061943702714" : 7622.015, + "82.50621462724658" : 7636.031, + "82.62938618703643" : 7649.023, + "82.75757470666989" : 7663.007, + "82.8787539854311" : 7677.023, + "83.0046564279968" : 7691.007, + "83.13280158841837" : 7705.023, + "83.25101524660151" : 7718.015, + "83.38023018344035" : 7732.031, + "83.50534318932077" : 7746.015, + "83.62752571053619" : 7759.007, + "83.75560059913161" : 7773.023, + "83.88035551772772" : 7787.007, + "84.0000643211481" : 7800.031, + "84.12751947204269" : 7814.015, + "84.25038153676843" : 7828.031, + "84.3757532027749" : 7842.015, + "84.5025063829806" : 7856.031, + "84.62673052501748" : 7870.015, + "84.75500950093779" : 7884.031, + "84.87734676968526" : 7898.015, + "85.00325295011406" : 7912.031, + "85.12628919925994" : 7926.015, + "85.25096038972276" : 7941.023, + "85.38225058815088" : 7956.031, + "85.50206330416526" : 7970.015, + "85.62599888317136" : 7985.023, + "85.75791779017175" : 8000.031, + "85.87583241930744" : 8014.015, + "86.00127659985792" : 8029.023, + "86.13204274988038" : 8045.023, + "86.25105855348332" : 8059.007, + "86.37837390829822" : 8075.007, + "86.5038823800939" : 8090.015, + "86.62928992958606" : 8105.023, + "86.75295339215897" : 8120.031, + "86.88167792135998" : 8136.031, + "87.00546024797926" : 8151.007, + "87.12568263378864" : 8166.015, + "87.25727709427255" : 8182.015, + "87.37879577100263" : 8197.023, + "87.50701344596821" : 8212.031, + "87.56959499259115" : 8219.007, + "87.62543642448456" : 8226.015, + "87.69293176592971" : 8234.015, + "87.7536324198442" : 8241.023, + "87.81552395694014" : 8248.031, + "87.87516754317188" : 8255.007, + "87.9441378453936" : 8263.007, + "88.00350931519216" : 8270.015, + "88.06388926045325" : 8277.023, + "88.12961659265535" : 8285.023, + "88.19519515790637" : 8293.023, + "88.25414499674802" : 8300.031, + "88.31909784371724" : 8308.031, + "88.37562255698408" : 8315.007, + "88.44225594719997" : 8323.007, + "88.50192943633645" : 8330.015, + "88.56265625529258" : 8337.023, + "88.6305799558482" : 8345.023, + "88.69083729919984" : 8352.031, + "88.7500039341009" : 8359.007, + "88.81645117873475" : 8367.007, + "88.88122535584812" : 8375.007, + "88.94232222325047" : 8382.015, + "89.00844651651306" : 8390.015, + "89.06475742401098" : 8397.055, + "89.13112243565678" : 8405.055, + "89.18937030380955" : 8412.031, + "89.25455788858102" : 8420.031, + "89.31835797857231" : 8428.031, + "89.37642568172399" : 8435.007, + "89.44061002404126" : 8443.007, + "89.50738246276421" : 8451.007, + "89.56372551588473" : 8458.047, + "89.62640723723855" : 8466.047, + "89.68787490065975" : 8474.047, + "89.75664560099229" : 8483.007, + "89.81516932344132" : 8491.007, + "89.87606359866402" : 8499.007, + "89.9416571153674" : 8507.007, + "90.00639615656769" : 8515.007, + "90.06634624757307" : 8522.047, + "90.13001177449301" : 8530.047, + "90.18865809885152" : 8537.023, + "90.25415218839662" : 8545.023, + "90.31797844342957" : 8553.023, + "90.37821410717525" : 8560.063, + "90.4441350606856" : 8568.063, + "90.50163535621974" : 8575.039, + "90.57044792061892" : 8583.039, + "90.62576754682453" : 8590.015, + "90.6910358694388" : 8598.015, + "90.75623616294479" : 8606.015, + "90.81381869146698" : 8613.055, + "90.87754103390594" : 8621.055, + "90.94433515223483" : 8629.055, + "91.0021053214843" : 8636.031, + "91.06618799392544" : 8644.031, + "91.1306250157878" : 8652.031, + "91.19503736775376" : 8660.031, + "91.25247636233317" : 8667.007, + "91.31907910207168" : 8675.007, + "91.37885650380217" : 8682.047, + "91.44277994327554" : 8690.047, + "91.5057801305649" : 8698.047, + "91.56440402774484" : 8705.023, + "91.63156146636638" : 8713.023, + "91.69480984776513" : 8721.023, + "91.75863386008022" : 8729.023, + "91.81782366973246" : 8736.063, + "91.8768848968943" : 8743.039, + "91.9434629667364" : 8751.039, + "92.00828573606998" : 8759.039, + "92.06316279928537" : 8766.015, + "92.12695242326001" : 8774.015, + "92.19175725085074" : 8782.015, + "92.25402332182861" : 8790.015, + "92.31848576116002" : 8798.015, + "92.37969326930993" : 8806.015, + "92.4407310784754" : 8814.015, + "92.50194980021458" : 8822.015, + "92.56496792924679" : 8830.015, + "92.62969127142209" : 8838.015, + "92.69216741030581" : 8846.015, + "92.75500537433693" : 8854.015, + "92.81762654230866" : 8862.015, + "92.88123824400006" : 8870.015, + "92.93924240347916" : 8877.055, + "93.00420795918289" : 8885.055, + "93.06333048729945" : 8892.031, + "93.13046923660553" : 8900.031, + "93.19079460906546" : 8907.007, + "93.25792139720964" : 8915.007, + "93.31504117828091" : 8922.047, + "93.38401671351093" : 8930.047, + "93.44076794128122" : 8937.023, + "93.50690868114143" : 8945.023, + "93.57012192662711" : 8953.023, + "93.62724021255313" : 8960.063, + "93.69011106977948" : 8968.063, + "93.7541406645647" : 8976.063, + "93.78494439431513" : 8980.031, + "93.81780619148464" : 8984.063, + "93.849249095824" : 8988.031, + "93.88118091265594" : 8992.063, + "93.91333102069252" : 8996.031, + "93.9445817988689" : 9000.063, + "93.96918441374784" : 9003.007, + "94.00107586165836" : 9007.039, + "94.03182800889812" : 9011.007, + "94.06986824159684" : 9016.063, + "94.10033107823318" : 9020.031, + "94.13172613792496" : 9024.063, + "94.16230185802671" : 9028.031, + "94.19150877266375" : 9032.063, + "94.22088762900309" : 9036.031, + "94.25258246531493" : 9040.063, + "94.28425188415773" : 9044.031, + "94.31598933210883" : 9048.063, + "94.34741429470535" : 9052.031, + "94.37644029676869" : 9056.063, + "94.40724477409174" : 9060.031, + "94.44528500679047" : 9065.023, + "94.47440819329422" : 9069.055, + "94.5050242823174" : 9073.023, + "94.53689255547675" : 9077.055, + "94.56932300324532" : 9081.023, + "94.59939635454735" : 9085.055, + "94.63237776333584" : 9089.023, + "94.66485157031629" : 9093.055, + "94.68932335998696" : 9096.063, + "94.72083354586199" : 9100.031, + "94.75161933386958" : 9104.063, + "94.78769793601704" : 9109.055, + "94.81885900547918" : 9113.023, + "94.8509590261503" : 9117.055, + "94.88318090115827" : 9121.023, + "94.90672046777352" : 9124.031, + "94.93967197365727" : 9128.063, + "94.97093247027769" : 9132.031, + "95.00410600522916" : 9136.063, + "95.03400816240153" : 9140.031, + "95.06509297945658" : 9144.063, + "95.09807812610816" : 9148.031, + "95.12905155484302" : 9152.063, + "95.16105663379159" : 9156.031, + "95.19317908164128" : 9160.063, + "95.22464217044134" : 9164.031, + "95.2570524337492" : 9168.063, + "95.2875616198879" : 9172.031, + "95.31799006818378" : 9176.063, + "95.34890892411748" : 9180.031, + "95.37988235285235" : 9184.063, + "95.41002522840792" : 9188.031, + "95.43809284237419" : 9192.063, + "95.47591029843255" : 9197.055, + "95.50672374662703" : 9201.023, + "95.53753345695841" : 9205.055, + "95.56707453655599" : 9209.023, + "95.60000137254333" : 9213.055, + "95.62509289991485" : 9216.063, + "95.65905661912421" : 9220.031, + "95.68966224213071" : 9224.063, + "95.72030972920385" : 9228.031, + "95.75496943852116" : 9232.063, + "95.78770489591813" : 9236.031, + "95.8191567711289" : 9240.063, + "95.84475814302633" : 9243.007, + "95.87540189223637" : 9247.039, + "95.91138106722555" : 9252.031, + "95.94264455413644" : 9256.063, + "95.97134909997378" : 9260.031, + "96.0064954790658" : 9265.023, + "96.0364267915703" : 9269.055, + "96.06419836677959" : 9273.023, + "96.09849924123996" : 9278.015, + "96.12516216625583" : 9282.047, + "96.15929334173177" : 9287.039, + "96.18761064495266" : 9291.007, + "96.22091500511239" : 9296.063, + "96.25711022858835" : 9301.055, + "96.28620725005045" : 9305.023, + "96.31421431063463" : 9309.055, + "96.35009555361076" : 9314.047, + "96.37733111925249" : 9318.015, + "96.41265542062776" : 9323.007, + "96.44094581123437" : 9327.039, + "96.47223845347739" : 9332.031, + "96.50318048416227" : 9337.023, + "96.53337643737376" : 9342.015, + "96.56513631250341" : 9347.007, + "96.59660089644872" : 9352.063, + "96.62852374240923" : 9357.055, + "96.6617570831702" : 9362.047, + "96.68935671667721" : 9367.039, + "96.72074579578802" : 9372.031, + "96.7504917102831" : 9377.023, + "96.78449729355911" : 9383.039, + "96.81663394528856" : 9388.031, + "96.85010650928749" : 9393.023, + "96.87625435676912" : 9397.055, + "96.89707799206091" : 9400.063, + "96.91107703691728" : 9402.047, + "96.92467089741436" : 9404.031, + "96.93791564149853" : 9406.015, + "96.95724786941616" : 9409.023, + "96.96910063328447" : 9411.007, + "96.98871469607933" : 9414.015, + "97.00186674115879" : 9416.063, + "97.01710974685255" : 9418.047, + "97.03468293639857" : 9421.055, + "97.04858180652404" : 9423.039, + "97.06593820001065" : 9426.047, + "97.07831575985722" : 9428.031, + "97.0960122988853" : 9431.039, + "97.1132961778279" : 9434.047, + "97.1250883883141" : 9436.031, + "97.14255317983041" : 9439.039, + "97.159427388978" : 9442.047, + "97.17593678268771" : 9445.055, + "97.1922286327654" : 9448.063, + "97.20853094885976" : 9451.007, + "97.21991498469617" : 9453.055, + "97.23472140798066" : 9456.063, + "97.25191258791855" : 9459.007, + "97.268146127332" : 9462.015, + "97.28514592867953" : 9465.023, + "97.3014572156453" : 9468.031, + "97.3166740562974" : 9471.039, + "97.3283503930277" : 9473.023, + "97.3448470780029" : 9476.031, + "97.36133927754238" : 9479.039, + "97.37685439966933" : 9482.047, + "97.39268948287703" : 9485.055, + "97.40888639123216" : 9488.063, + "97.42572994990239" : 9491.007, + "97.44229840184897" : 9494.015, + "97.45810881516027" : 9497.023, + "97.4692887636718" : 9499.007, + "97.48545053611386" : 9502.015, + "97.5002838720126" : 9505.023, + "97.51675887738186" : 9508.031, + "97.53381997968411" : 9511.039, + "97.54894711162198" : 9514.047, + "97.56360252523751" : 9517.055, + "97.57902868622283" : 9520.063, + "97.59708929311618" : 9524.031, + "97.61218652214932" : 9527.039, + "97.62683520761126" : 9530.047, + "97.64251404814169" : 9533.055, + "97.65670596673367" : 9536.063, + "97.67307406921846" : 9539.007, + "97.68853461854422" : 9542.015, + "97.70391293488196" : 9545.023, + "97.7216072311922" : 9549.055, + "97.73855619760165" : 9553.023, + "97.7522853687427" : 9556.031, + "97.76576933606484" : 9559.039, + "97.78182794348551" : 9563.007, + "97.79922919132925" : 9567.039, + "97.81359454676874" : 9570.047, + "97.832076784619" : 9574.015, + "97.846646974956" : 9577.023, + "97.86161188363563" : 9580.031, + "97.8758636080371" : 9583.039, + "97.89253672015028" : 9586.047, + "97.91014130774627" : 9589.055, + "97.92475186700467" : 9592.063, + "97.93886678561694" : 9595.007, + "97.95374721859066" : 9598.015, + "97.96914497181648" : 9601.023, + "97.98832469491991" : 9605.055, + "98.00365591418267" : 9608.063, + "98.01862007528969" : 9611.007, + "98.033885508162" : 9614.015, + "98.04918906723788" : 9617.023, + "98.06289805391822" : 9620.031, + "98.07831001102377" : 9623.039, + "98.0966135790182" : 9627.007, + "98.10945313874308" : 9630.015, + "98.12815292022535" : 9634.047, + "98.14067401401469" : 9637.055, + "98.15909345576499" : 9641.023, + "98.17401051979704" : 9644.031, + "98.19077707848756" : 9648.063, + "98.20609035600746" : 9652.031, + "98.22257433224814" : 9656.063, + "98.23565461035622" : 9659.007, + "98.25153230520318" : 9663.039, + "98.26834596096867" : 9667.007, + "98.2836592384886" : 9671.039, + "98.29965654495454" : 9675.007, + "98.31589606494893" : 9679.039, + "98.33069127464414" : 9683.007, + "98.34403544588659" : 9687.039, + "98.36267915942247" : 9692.031, + "98.37803803887212" : 9696.063, + "98.39381705413344" : 9701.055, + "98.40906005982718" : 9706.047, + "98.422787735823" : 9710.015, + "98.43958793528135" : 9716.031, + "98.44536368133285" : 9718.015, + "98.45433754304682" : 9721.023, + "98.46108064806681" : 9723.007, + "98.47067125719116" : 9726.015, + "98.47700020698043" : 9728.063, + "98.48731297125435" : 9731.007, + "98.49408224131601" : 9733.055, + "98.50027513288869" : 9735.039, + "98.50969679060123" : 9738.047, + "98.51570951717282" : 9740.031, + "98.52564774756482" : 9743.039, + "98.53199164880647" : 9745.023, + "98.54154637444512" : 9748.031, + "98.54787382908916" : 9750.015, + "98.55677517625912" : 9753.023, + "98.5626548349046" : 9755.007, + "98.57157113352694" : 9758.015, + "98.57886146170377" : 9761.023, + "98.58722605173357" : 9764.031, + "98.59383907911793" : 9767.039, + "98.60317551355193" : 9771.007, + "98.61196173453862" : 9774.015, + "98.61743994668791" : 9776.063, + "98.62615963371155" : 9779.007, + "98.63404428212019" : 9782.015, + "98.64295385258895" : 9785.023, + "98.64909441407833" : 9787.007, + "98.65644978107298" : 9790.015, + "98.66585349704266" : 9794.047, + "98.67266164088048" : 9797.055, + "98.68000728943109" : 9800.063, + "98.68963976262206" : 9803.007, + "98.69640529482062" : 9805.055, + "98.70354311818325" : 9807.039, + "98.71381476596316" : 9810.047, + "98.71989477407044" : 9812.031, + "98.72888657752725" : 9815.039, + "98.7351220807392" : 9817.023, + "98.74311811746801" : 9820.031, + "98.75129955220625" : 9823.039, + "98.75926643360293" : 9826.047, + "98.76768484886126" : 9829.055, + "98.77455130336332" : 9831.039, + "98.78349900003565" : 9834.047, + "98.78932707617045" : 9836.031, + "98.7976378409717" : 9839.039, + "98.80808666346222" : 9842.047, + "98.81401192403744" : 9844.031, + "98.82239744610055" : 9847.039, + "98.82849988138639" : 9849.023, + "98.83709472378273" : 9852.031, + "98.84452185774876" : 9855.039, + "98.8516282830614" : 9858.047, + "98.86106713494416" : 9862.015, + "98.8696462783155" : 9865.023, + "98.87697622784111" : 9868.031, + "98.8847263131784" : 9871.039, + "98.89318210706766" : 9874.047, + "98.89984746453533" : 9876.031, + "98.90625117158646" : 9878.015, + "98.9142285189998" : 9881.023, + "98.9227814973295" : 9885.055, + "98.93149146590909" : 9888.063, + "98.93988521127102" : 9891.007, + "98.94647057846848" : 9893.055, + "98.9545510909032" : 9896.063, + "98.96289923433538" : 9899.007, + "98.9692498637306" : 9901.055, + "98.97852873507297" : 9904.063, + "98.98486067515272" : 9906.047, + "98.99408721641178" : 9909.055, + "99.00116598153754" : 9911.039, + "99.01004340638372" : 9914.047, + "99.0170272297869" : 9916.031, + "99.02584484882358" : 9919.039, + "99.03179253657737" : 9921.023, + "99.04000163150248" : 9924.031, + "99.04799019250511" : 9927.039, + "99.05684967560843" : 9930.047, + "99.0652374403894" : 9933.055, + "99.07086142919931" : 9935.039, + "99.07861899026278" : 9938.047, + "99.0869402210807" : 9942.015, + "99.09418046189208" : 9945.023, + "99.10230732382915" : 9948.031, + "99.1094578559263" : 9951.039, + "99.11847059141644" : 9955.007, + "99.12578334677183" : 9958.015, + "99.13414270379329" : 9962.047, + "99.14186288622582" : 9966.015, + "99.150475670365" : 9970.047, + "99.15791551306556" : 9973.055, + "99.16532844315184" : 9976.063, + "99.1726322276358" : 9979.007, + "99.18182886599013" : 9983.039, + "99.18758293243567" : 9986.047, + "99.19599760983093" : 9990.015, + "99.20473523859741" : 9994.047, + "99.21270585785719" : 9998.015, + "99.2207377780717" : 10002.047, + "99.22322794246433" : 10003.007, + "99.22705102883597" : 10005.055, + "99.23055415412685" : 10007.039, + "99.2347383180733" : 10009.023, + "99.2383348899415" : 10011.007, + "99.24288013146274" : 10013.055, + "99.24757040207199" : 10015.039, + "99.25181661454577" : 10017.023, + "99.25564044849004" : 10019.007, + "99.25798184593158" : 10020.031, + "99.26360060173316" : 10023.039, + "99.26697888239673" : 10025.023, + "99.26955726035837" : 10027.007, + "99.27349547291328" : 10030.015, + "99.27770056889304" : 10033.023, + "99.28208358715604" : 10036.031, + "99.2855455959529" : 10038.015, + "99.29083018679395" : 10041.023, + "99.29415688494683" : 10043.007, + "99.29718903948798" : 10045.055, + "99.3010233394489" : 10047.039, + "99.3049166976467" : 10049.023, + "99.31033659913173" : 10052.031, + "99.31437498641753" : 10054.015, + "99.31760450013" : 10056.063, + "99.32233513966065" : 10058.047, + "99.3243154595274" : 10059.007, + "99.32896536121524" : 10061.055, + "99.33311139895814" : 10063.039, + "99.33665713588827" : 10065.023, + "99.3399980379209" : 10067.007, + "99.34392653203177" : 10069.055, + "99.34860932691484" : 10072.063, + "99.35286974326839" : 10075.007, + "99.35685131503519" : 10077.055, + "99.36016081901784" : 10079.039, + "99.36366842974442" : 10081.023, + "99.36829515668109" : 10083.007, + "99.37185734020883" : 10085.055, + "99.37543298004373" : 10087.039, + "99.37896152280364" : 10089.023, + "99.38340584202136" : 10091.007, + "99.38704801581929" : 10093.055, + "99.392021616451" : 10096.063, + "99.3954694213681" : 10098.047, + "99.39858081860682" : 10100.031, + "99.40310438052212" : 10103.039, + "99.40695064164494" : 10106.047, + "99.41083951440703" : 10109.055, + "99.4148644453857" : 10112.063, + "99.41883928899894" : 10115.007, + "99.42273638505982" : 10118.015, + "99.42609149097221" : 10121.023, + "99.42987121813198" : 10124.031, + "99.43422807135333" : 10127.039, + "99.43802947811903" : 10130.047, + "99.44189218583946" : 10133.055, + "99.44546408781126" : 10135.039, + "99.45016856230026" : 10138.047, + "99.45383540599461" : 10140.031, + "99.45743646329854" : 10142.015, + "99.46125880209756" : 10145.023, + "99.46557453882488" : 10149.055, + "99.46949705235481" : 10152.063, + "99.47312651741822" : 10155.007, + "99.47741683667651" : 10158.015, + "99.48114647647084" : 10161.023, + "99.48554818404929" : 10164.031, + "99.48933762965311" : 10167.039, + "99.49320183251878" : 10170.047, + "99.49702641403566" : 10173.055, + "99.50014154913747" : 10175.039, + "99.50504114007994" : 10178.047, + "99.50843511976849" : 10181.055, + "99.51211467219737" : 10184.063, + "99.51619268083196" : 10188.031, + "99.51985130122752" : 10192.063, + "99.52378727106458" : 10196.031, + "99.52737188177088" : 10200.063, + "99.53167490976368" : 10205.055, + "99.53533801559495" : 10209.023, + "99.539185771863" : 10213.055, + "99.5432794795226" : 10217.023, + "99.54750027452735" : 10221.055, + "99.55213671990806" : 10225.023, + "99.55553967046805" : 10228.031, + "99.55993091202984" : 10231.039, + "99.5627829015699" : 10233.023, + "99.56756437603863" : 10236.031, + "99.5704492587739" : 10238.015, + "99.57526362643785" : 10242.047, + "99.57867031486091" : 10245.055, + "99.5823423915636" : 10248.063, + "99.58594494401275" : 10251.007, + "99.59000575847712" : 10255.039, + "99.59413161175931" : 10259.007, + "99.59856546496037" : 10263.039, + "99.6025642308974" : 10267.007, + "99.60572422035634" : 10270.015, + "99.61008331629553" : 10274.047, + "99.61244265547991" : 10276.031, + "99.61365671341255" : 10277.055, + "99.61606913025285" : 10279.039, + "99.61809878991242" : 10281.023, + "99.61930836240936" : 10282.047, + "99.62161238121996" : 10284.031, + "99.62389995343295" : 10286.015, + "99.62502878808708" : 10287.039, + "99.6270928360871" : 10289.023, + "99.62923762192993" : 10291.007, + "99.63129419420378" : 10294.015, + "99.63342402859423" : 10297.023, + "99.63503579516" : 10299.007, + "99.63677689178877" : 10301.055, + "99.6392625707457" : 10304.063, + "99.64095806544474" : 10306.047, + "99.64319256000181" : 10309.055, + "99.64468770523905" : 10311.039, + "99.6468893066009" : 10314.047, + "99.64910062640679" : 10317.055, + "99.65086938322246" : 10319.039, + "99.65258207209173" : 10321.023, + "99.6550169161106" : 10324.031, + "99.65680810010481" : 10326.015, + "99.65844005113128" : 10328.063, + "99.66047942923488" : 10330.047, + "99.66218912781368" : 10332.031, + "99.66423523407086" : 10334.015, + "99.66617892287928" : 10337.023, + "99.66894867943128" : 10340.031, + "99.67064193141248" : 10342.015, + "99.6725332901376" : 10344.063, + "99.67399180431653" : 10346.047, + "99.67582186208692" : 10348.031, + "99.67809597799278" : 10350.015, + "99.68020488034992" : 10353.023, + "99.6816529285122" : 10355.007, + "99.68413785989651" : 10358.015, + "99.68610322831087" : 10361.023, + "99.68754454831958" : 10363.007, + "99.68964373223268" : 10366.015, + "99.69152387736851" : 10369.023, + "99.69382789617912" : 10372.031, + "99.69583886652322" : 10375.039, + "99.69748502142943" : 10377.023, + "99.70027496244214" : 10380.031, + "99.70133801070583" : 10381.055, + "99.70340504899632" : 10383.039, + "99.70533229120714" : 10385.023, + "99.70800785360919" : 10388.031, + "99.70974147451179" : 10390.015, + "99.71179580406776" : 10392.063, + "99.71399740542961" : 10394.047, + "99.71515390027062" : 10395.007, + "99.71751847246334" : 10397.055, + "99.7196886757752" : 10399.039, + "99.72179384026926" : 10401.023, + "99.72278512156154" : 10402.047, + "99.72516015977092" : 10405.055, + "99.72687733407591" : 10407.039, + "99.72910584805203" : 10410.047, + "99.7312401678782" : 10412.031, + "99.73323394405207" : 10414.015, + "99.73474703103217" : 10416.063, + "99.73642906942408" : 10418.047, + "99.73882952510247" : 10421.055, + "99.74036130139804" : 10423.039, + "99.74233937854692" : 10425.023, + "99.74469572744083" : 10428.031, + "99.74700348411452" : 10431.039, + "99.74857861962197" : 10433.023, + "99.75029579392694" : 10435.007, + "99.75218640507944" : 10438.015, + "99.75435586081869" : 10441.023, + "99.75619339431528" : 10444.031, + "99.75810643264633" : 10447.039, + "99.75984080112154" : 10450.047, + "99.76238703346058" : 10454.015, + "99.76367435350986" : 10456.063, + "99.76578624615746" : 10459.007, + "99.76765143984093" : 10462.015, + "99.76956672088986" : 10465.023, + "99.77203595324917" : 10470.015, + "99.7737830304589" : 10473.023, + "99.77547927273055" : 10476.031, + "99.77777955367806" : 10480.063, + "99.7795109318628" : 10483.007, + "99.78147704784978" : 10486.015, + "99.78330710562018" : 10489.023, + "99.7852066876441" : 10492.031, + "99.78727596865245" : 10495.039, + "99.78951569621786" : 10498.047, + "99.79134500641563" : 10501.055, + "99.79342624858589" : 10504.063, + "99.79543871407522" : 10507.007, + "99.79745117956456" : 10510.015, + "99.79906593642079" : 10513.023, + "99.8011135378232" : 10516.031, + "99.80308264410066" : 10519.039, + "99.80471534269974" : 10522.047, + "99.80574026475988" : 10524.031, + "99.80679508972474" : 10526.015, + "99.8077886137349" : 10528.063, + "99.80907817650203" : 10531.007, + "99.80982425397542" : 10533.055, + "99.81087459350458" : 10535.039, + "99.81190325342781" : 10537.023, + "99.81295508810221" : 10539.007, + "99.8137691946839" : 10541.055, + "99.81461469931557" : 10543.039, + "99.81547739811745" : 10545.023, + "99.81666454343583" : 10548.031, + "99.81753172767344" : 10550.015, + "99.81865981475494" : 10553.023, + "99.81951578540327" : 10555.007, + "99.82042483370752" : 10558.015, + "99.82144601790456" : 10561.023, + "99.82229974583502" : 10564.031, + "99.82332466789516" : 10567.039, + "99.82429202686366" : 10570.047, + "99.82525564796907" : 10573.055, + "99.8262043176221" : 10577.023, + "99.8271836377525" : 10580.031, + "99.82848964711724" : 10583.039, + "99.82942486046313" : 10585.023, + "99.83036680196261" : 10587.007, + "99.83149339389888" : 10589.055, + "99.8321123840271" : 10590.015, + "99.83328158760263" : 10593.023, + "99.83440369410319" : 10595.007, + "99.83513033468849" : 10597.055, + "99.8363668197997" : 10600.063, + "99.83712635358022" : 10602.047, + "99.83819612999747" : 10605.055, + "99.83887492593517" : 10607.039, + "99.84000974117025" : 10610.047, + "99.84100177003516" : 10612.031, + "99.84216574060237" : 10614.015, + "99.84287144915434" : 10615.039, + "99.84400701196203" : 10617.023, + "99.84501997286027" : 10619.007, + "99.84617945799177" : 10621.055, + "99.84698608884726" : 10623.039, + "99.84780019542895" : 10625.023, + "99.84866364180345" : 10627.007, + "99.84966090367669" : 10629.055, + "99.85073068009395" : 10631.039, + "99.85171299051483" : 10633.023, + "99.85272744655829" : 10635.007, + "99.85363275699945" : 10637.055, + "99.85491858190349" : 10640.063, + "99.85558466910668" : 10642.047, + "99.85656697952756" : 10645.055, + "99.85755751324723" : 10648.063, + "99.85855402754785" : 10650.047, + "99.8594630758521" : 10652.031, + "99.86072572600496" : 10655.039, + "99.8615824442259" : 10657.023, + "99.8626499779253" : 10659.007, + "99.86328167678803" : 10660.031, + "99.8644239677493" : 10662.015, + "99.86581146252946" : 10664.063, + "99.86632728763632" : 10665.023, + "99.86741276307856" : 10667.007, + "99.86859691810646" : 10669.055, + "99.86962109259397" : 10671.039, + "99.87056976224702" : 10673.023, + "99.87143246104891" : 10675.007, + "99.87238113070194" : 10677.055, + "99.8733350333633" : 10679.039, + "99.87428370301635" : 10681.023, + "99.87519873190153" : 10683.007, + "99.87599265402251" : 10685.055, + "99.876975712016" : 10687.039, + "99.87822415828911" : 10690.047, + "99.87933280848253" : 10692.031, + "99.88019924514752" : 10694.015, + "99.88107465268394" : 10696.063, + "99.88191492430727" : 10698.047, + "99.88300339003997" : 10701.055, + "99.88404326355248" : 10704.063, + "99.88479307888898" : 10706.047, + "99.88574623397771" : 10708.031, + "99.88674200070572" : 10710.015, + "99.88793363145982" : 10713.023, + "99.88868867980462" : 10715.007, + "99.8897554659314" : 10718.015, + "99.89095457241167" : 10721.023, + "99.89183147509333" : 10723.007, + "99.8927016496214" : 10725.055, + "99.89356659114115" : 10727.039, + "99.89487559079636" : 10730.047, + "99.8955394352817" : 10732.031, + "99.89666228935488" : 10735.039, + "99.89766553180907" : 10738.047, + "99.89851327915859" : 10740.031, + "99.8994933468616" : 10742.015, + "99.90057059900505" : 10745.023, + "99.9016403754223" : 10748.031, + "99.90256886061464" : 10751.039, + "99.9030532876715" : 10752.063, + "99.90344501572366" : 10753.023, + "99.9038359962032" : 10754.047, + "99.90448488923616" : 10756.031, + "99.90481382118836" : 10757.055, + "99.90543206374396" : 10759.039, + "99.90588210246037" : 10760.063, + "99.90630672370776" : 10761.023, + "99.90702439342164" : 10763.007, + "99.90740864574761" : 10764.031, + "99.907890082514" : 10765.055, + "99.90824816979833" : 10766.015, + "99.9090099462967" : 10768.063, + "99.90948988791786" : 10769.023, + "99.90972537329273" : 10770.047, + "99.91028829547454" : 10772.031, + "99.9109162564742" : 10774.015, + "99.91122724668354" : 10775.039, + "99.91169447957019" : 10776.063, + "99.91252428517686" : 10778.047, + "99.91282630451478" : 10779.007, + "99.91328307138475" : 10780.031, + "99.91375254698926" : 10781.055, + "99.91409792553907" : 10782.015, + "99.91468626518991" : 10784.063, + "99.91509144954921" : 10785.023, + "99.91577174063217" : 10787.007, + "99.91607375997009" : 10788.031, + "99.91672639086615" : 10790.015, + "99.91703439078502" : 10791.039, + "99.91774757506319" : 10793.023, + "99.91804959440111" : 10794.047, + "99.91881884662568" : 10796.031, + "99.91910142907551" : 10797.055, + "99.91946773965864" : 10798.015, + "99.92008149677854" : 10800.063, + "99.92072889466627" : 10802.047, + "99.92111838000056" : 10803.007, + "99.92159533133125" : 10804.031, + "99.92202892345006" : 10805.055, + "99.92251783594263" : 10806.015, + "99.92294843777096" : 10807.039, + "99.92334016582312" : 10808.063, + "99.92409969960364" : 10810.047, + "99.92449666066413" : 10812.031, + "99.925085000315" : 10814.015, + "99.92543112643742" : 10815.039, + "99.92610767965726" : 10817.023, + "99.92645754364278" : 10818.047, + "99.92690608721396" : 10819.007, + "99.92747199968626" : 10820.031, + "99.9280752907895" : 10821.055, + "99.92862924209989" : 10822.015, + "99.92910619343057" : 10823.039, + "99.92963547484456" : 10824.063, + "99.92992254273011" : 10825.023, + "99.93027240671563" : 10826.047, + "99.93098783371165" : 10828.031, + "99.93128761033172" : 10829.055, + "99.93191183346828" : 10831.039, + "99.93228711492281" : 10832.063, + "99.93284106623322" : 10834.047, + "99.93315205644257" : 10835.007, + "99.9338315999529" : 10837.055, + "99.9343735901014" : 10839.039, + "99.93469280360955" : 10840.063, + "99.93517872581167" : 10842.047, + "99.93557493929953" : 10843.007, + "99.93621037602536" : 10845.055, + "99.9366170555299" : 10847.039, + "99.93720240489029" : 10850.047, + "99.93757095819126" : 10852.031, + "99.93800230759221" : 10854.015, + "99.93875885108226" : 10857.023, + "99.93915581214274" : 10858.047, + "99.93950044311993" : 10860.031, + "99.94006859831009" : 10863.039, + "99.94060909331336" : 10866.047, + "99.94107483105475" : 10869.055, + "99.94159738431517" : 10872.063, + "99.94202275313518" : 10874.047, + "99.94255577241225" : 10876.031, + "99.94304094704174" : 10878.015, + "99.9436576944521" : 10880.063, + "99.94394027690194" : 10881.023, + "99.94453160684327" : 10883.007, + "99.94500556788348" : 10885.055, + "99.94551840269986" : 10887.039, + "99.94581668417469" : 10888.063, + "99.94639979081722" : 10890.047, + "99.94684908196102" : 10892.031, + "99.94732678086432" : 10894.015, + "99.94779102346048" : 10896.063, + "99.948301615559" : 10899.007, + "99.94875389699327" : 10902.015, + "99.94938036284768" : 10905.023, + "99.949722751107" : 10907.007, + "99.95036715870427" : 10910.015, + "99.95088373138373" : 10912.063, + "99.95119771188355" : 10913.023, + "99.95147281860721" : 10914.047, + "99.9517292360154" : 10915.007, + "99.95193855634861" : 10916.031, + "99.95232878925553" : 10918.015, + "99.95251418726495" : 10919.039, + "99.95269734255652" : 10920.063, + "99.95314812884554" : 10922.047, + "99.95351294428343" : 10924.031, + "99.95368114812263" : 10925.055, + "99.95400634221173" : 10926.015, + "99.9542179052628" : 10927.039, + "99.9543868566746" : 10928.063, + "99.95468588572206" : 10930.047, + "99.95487726431243" : 10931.007, + "99.95514788560037" : 10933.055, + "99.95536019622406" : 10935.039, + "99.9556988466203" : 10938.047, + "99.95584088541783" : 10940.031, + "99.95609356496293" : 10944.063, + "99.95631409888543" : 10946.047, + "99.95658546774598" : 10949.055, + "99.9568067492411" : 10957.055, + "99.9570840986826" : 10963.007, + "99.9572926714432" : 10967.039, + "99.95753937040735" : 10972.031, + "99.95784438003575" : 10976.063, + "99.95800809843922" : 10978.047, + "99.95826152555694" : 10983.039, + "99.95854261286155" : 10988.031, + "99.95874296232333" : 10994.047, + "99.95900835060294" : 11005.055, + "99.95930513693254" : 11010.047, + "99.95956080676811" : 11012.031, + "99.95974022419658" : 11016.063, + "99.9599899134512" : 11021.055, + "99.96025679687605" : 11024.063, + "99.96048106866164" : 11028.031, + "99.96071954432698" : 11037.055, + "99.96095801999232" : 11040.063, + "99.96119873837551" : 11045.055, + "99.96148730140631" : 11050.047, + "99.96174670910497" : 11054.015, + "99.9619321071144" : 11060.031, + "99.96227898080943" : 11065.023, + "99.96243522348672" : 11067.007, + "99.96266248556279" : 11074.047, + "99.96292114568882" : 11081.023, + "99.96317382523392" : 11084.031, + "99.9634137960445" : 11087.039, + "99.96363806783009" : 11091.007, + "99.96387579592282" : 11096.063, + "99.96415987351789" : 11100.031, + "99.9643609705523" : 11104.063, + "99.96462635883191" : 11109.055, + "99.96486109663417" : 11113.023, + "99.96509359171856" : 11118.015, + "99.96536271786125" : 11129.023, + "99.96557652363019" : 11149.055, + "99.96589648471095" : 11155.007, + "99.9660990768906" : 11159.039, + "99.96636297002497" : 11161.023, + "99.96657378550343" : 11162.047, + "99.96685935824374" : 11165.055, + "99.96709110575551" : 11167.039, + "99.96737294063274" : 11170.047, + "99.96754936777073" : 11171.007, + "99.96783793080152" : 11173.055, + "99.9680255715288" : 11175.039, + "99.9682782510739" : 11187.007, + "99.96851971702971" : 11192.063, + "99.96879332860813" : 11196.031, + "99.96904002757228" : 11201.023, + "99.96924112460668" : 11204.031, + "99.96952520220177" : 11209.023, + "99.96975769728616" : 11213.055, + "99.97003728944551" : 11218.047, + "99.97026903695729" : 11222.015, + "99.97052919222857" : 11226.047, + "99.9707272989725" : 11233.023, + "99.97095605619381" : 11236.031, + "99.97127825999243" : 11239.039, + "99.97152645410182" : 11241.023, + "99.97172605599098" : 11246.015, + "99.97194658991349" : 11251.007, + "99.97220749275739" : 11257.023, + "99.97244148298701" : 11260.031, + "99.97267846350712" : 11264.063, + "99.97299543429742" : 11267.007, + "99.97315990027352" : 11269.055, + "99.97338940506744" : 11271.039, + "99.97365853121013" : 11274.047, + "99.97395232724925" : 11278.015, + "99.97419753106817" : 11280.063, + "99.97440610382876" : 11282.047, + "99.9746206571703" : 11283.007, + "99.97493089980703" : 11286.015, + "99.97511480267121" : 11289.023, + "99.97543775404246" : 11294.015, + "99.97561941418878" : 11297.023, + "99.97573080250896" : 11299.007, + "99.97583546267558" : 11304.063, + "99.9759610548755" : 11311.039, + "99.97610010338256" : 11314.047, + "99.97631390915149" : 11316.031, + "99.97635951108123" : 11317.055, + "99.97645295765855" : 11319.039, + "99.97659275373825" : 11327.039, + "99.97671610322031" : 11330.047, + "99.97683272454881" : 11333.055, + "99.97703531672846" : 11335.039, + "99.97707493807725" : 11336.063, + "99.97721548172956" : 11338.047, + "99.9773096758795" : 11341.055, + "99.97742704478063" : 11345.023, + "99.977602724346" : 11348.031, + "99.97769766606856" : 11349.055, + "99.97778438449232" : 11350.015, + "99.97790623882916" : 11352.063, + "99.97803855918266" : 11353.023, + "99.97819031642425" : 11355.007, + "99.97828002513847" : 11357.055, + "99.9784616852848" : 11359.039, + "99.9785618600157" : 11360.063, + "99.97867997648945" : 11361.023, + "99.97878164636558" : 11363.007, + "99.97891770458216" : 11365.055, + "99.97903881134638" : 11368.063, + "99.9792443938165" : 11370.047, + "99.9793684908712" : 11371.007, + "99.9794447432783" : 11372.031, + "99.97952323840325" : 11374.015, + "99.97966079176507" : 11376.063, + "99.97974526747097" : 11378.047, + "99.97986786938043" : 11380.031, + "99.98008840330293" : 11382.015, + "99.98024913141593" : 11383.039, + "99.98036351002658" : 11384.063, + "99.98060871384548" : 11386.047, + "99.9807335584728" : 11387.007, + "99.98089129629533" : 11389.055, + "99.98102361664883" : 11391.039, + "99.98109015061189" : 11392.063, + "99.9812030340773" : 11393.023, + "99.98132414084151" : 11394.047, + "99.98145421847715" : 11395.007, + "99.98166802424608" : 11397.055, + "99.98174577179842" : 11398.015, + "99.98182800478646" : 11399.039, + "99.98200443192447" : 11401.023, + "99.98206124744348" : 11402.047, + "99.98223393671839" : 11405.055, + "99.98234906290165" : 11406.015, + "99.98246643180278" : 11407.039, + "99.98254941236344" : 11412.031, + "99.98271462591215" : 11423.039, + "99.98281928607877" : 11425.023, + "99.98291946080965" : 11427.007, + "99.98311382969051" : 11429.055, + "99.98321998500235" : 11430.015, + "99.98329623740945" : 11431.039, + "99.98350555774266" : 11434.047, + "99.98355938297121" : 11435.007, + "99.98365731498424" : 11437.055, + "99.98378215961155" : 11439.039, + "99.98391522753766" : 11448.063, + "99.98406175177092" : 11451.007, + "99.98413202359707" : 11453.055, + "99.98428378083865" : 11456.063, + "99.98439217886835" : 11458.047, + "99.98451253805995" : 11460.031, + "99.98468447976224" : 11462.015, + "99.98475998459672" : 11463.039, + "99.98487436320737" : 11466.047, + "99.98503434374776" : 11468.031, + "99.98513152818818" : 11469.055, + "99.98525562524286" : 11470.015, + "99.98537822715232" : 11471.039, + "99.98557708146888" : 11473.023, + "99.98569669308785" : 11474.047, + "99.98587087750799" : 11475.007, + "99.98600245028886" : 11477.055, + "99.98614149879593" : 11479.039, + "99.98620728518637" : 11480.063, + "99.98636950844461" : 11482.047, + "99.98647715890169" : 11483.007, + "99.98663115886113" : 11485.055, + "99.98675376077058" : 11486.015, + "99.98684945006578" : 11487.039, + "99.98701242089663" : 11488.063, + "99.98707671214183" : 11489.023, + "99.98724267326317" : 11492.031, + "99.9873600421643" : 11494.015, + "99.98745199359638" : 11497.023, + "99.98769719741529" : 11499.007, + "99.98790427503064" : 11501.055, + "99.98800220704369" : 11502.015, + "99.98812256623529" : 11503.039, + "99.98824591571736" : 11504.063, + "99.98841337198394" : 11505.023, + "99.98855914864457" : 11506.047, + "99.98869894472425" : 11507.007, + "99.98877818742183" : 11508.031, + "99.98887387671701" : 11509.055, + "99.98904058541096" : 11510.015, + "99.98918411935374" : 11511.039, + "99.98932765329651" : 11512.063, + "99.98941661443813" : 11513.023, + "99.98947118723929" : 11514.047, + "99.98951753674164" : 11515.007, + "99.98957360468803" : 11516.031, + "99.98966256582966" : 11523.007, + "99.98970442989629" : 11524.031, + "99.98978367259387" : 11526.015, + "99.98981806093433" : 11527.039, + "99.98987338130812" : 11528.063, + "99.9899974783628" : 11533.055, + "99.99008344921394" : 11535.039, + "99.99015073074962" : 11536.063, + "99.99020829384125" : 11537.023, + "99.99025240062575" : 11538.047, + "99.99031370158048" : 11539.007, + "99.99036976952688" : 11540.031, + "99.9904191093197" : 11541.055, + "99.990487138428" : 11543.039, + "99.99055965297201" : 11550.015, + "99.99066431313861" : 11551.039, + "99.99076299272427" : 11552.063, + "99.99090951695752" : 11553.023, + "99.99097380820272" : 11554.047, + "99.99114500233239" : 11556.031, + "99.99124741978115" : 11557.055, + "99.99132666247871" : 11558.015, + "99.99147393428458" : 11559.039, + "99.99162270123568" : 11560.063, + "99.9917355847011" : 11561.023, + "99.99180660409988" : 11562.047, + "99.99188509922483" : 11563.007, + "99.99196583706764" : 11564.031, + "99.99201218657" : 11565.055, + "99.99206750694377" : 11566.015, + "99.99214151663301" : 11567.039, + "99.99223870107343" : 11568.063, + "99.99234635153051" : 11569.023, + "99.99243979810785" : 11570.047, + "99.99251455536971" : 11571.007, + "99.992582584478" : 11572.031, + "99.99263117669821" : 11573.055, + "99.99278218636718" : 11575.039, + "99.99286666207308" : 11576.063, + "99.99297132223968" : 11578.047, + "99.99303112804918" : 11579.007, + "99.99304607950155" : 11585.023, + "99.99311709890033" : 11589.055, + "99.99319185616218" : 11591.039, + "99.99325016682644" : 11592.063, + "99.99331445807164" : 11593.023, + "99.99337650659898" : 11594.047, + "99.99341837066562" : 11595.007, + "99.9935297589858" : 11596.031, + "99.9935656424715" : 11597.055, + "99.9936142346917" : 11600.063, + "99.99365535118574" : 11601.023, + "99.99378019581304" : 11603.007, + "99.99385345792966" : 11604.031, + "99.99390728315821" : 11605.055, + "99.9939394287808" : 11606.015, + "99.9939872734284" : 11607.039, + "99.99404184622956" : 11608.063, + "99.99409417631287" : 11609.023, + "99.99416519571163" : 11610.047, + "99.99421229278661" : 11611.007, + "99.99427658403181" : 11612.031, + "99.99432293353416" : 11613.055, + "99.9943887199246" : 11614.015, + "99.99443731214481" : 11615.039, + "99.99455916648165" : 11616.063, + "99.99470195285181" : 11617.023, + "99.99477521496843" : 11618.047, + "99.99481707903507" : 11619.007, + "99.99486716640052" : 11620.031, + "99.99489632173265" : 11621.055, + "99.9950391081028" : 11622.015, + "99.99515572943132" : 11623.039, + "99.99524319542769" : 11624.063, + "99.99537925364427" : 11625.023, + "99.99553325360371" : 11626.047, + "99.99565660308579" : 11627.007, + "99.99573659335599" : 11628.031, + "99.99583153507855" : 11629.055, + "99.99586218555591" : 11630.015, + "99.99588237001662" : 11634.047, + "99.99594815640705" : 11635.007, + "99.99600497192607" : 11636.031, + "99.99611187481054" : 11637.055, + "99.99621803012238" : 11638.015, + "99.9962711077783" : 11639.039, + "99.99632867086993" : 11640.063, + "99.99641763201156" : 11641.023, + "99.99646996209485" : 11642.047, + "99.99653126304958" : 11643.007, + "99.99656864168051" : 11644.031, + "99.99662545719953" : 11645.055, + "99.99674731153637" : 11646.015, + "99.99680412705538" : 11647.039, + "99.99684300083155" : 11648.063, + "99.9968968260601" : 11649.023, + "99.9969334571184" : 11650.047, + "99.99697083574934" : 11653.055, + "99.99702839884097" : 11654.015, + "99.99707325319808" : 11655.039, + "99.99713231143495" : 11656.063, + "99.99717866093731" : 11657.023, + "99.9972182822861" : 11658.047, + "99.99727958324083" : 11659.007, + "99.99733565118723" : 11660.031, + "99.99738050554434" : 11661.055, + "99.99748142784786" : 11662.015, + "99.99760103946683" : 11663.039, + "99.99770196177035" : 11664.063, + "99.99778942776673" : 11665.023, + "99.99786717531906" : 11666.047, + "99.99790679666785" : 11667.007, + "99.99797482577614" : 11668.031, + "99.99803014614993" : 11669.055, + "99.99809144710466" : 11670.015, + "99.99814228204272" : 11671.039, + "99.9982058257153" : 11672.063, + "99.99826413637955" : 11673.023, + "99.99832169947119" : 11674.047, + "99.99841514604852" : 11675.007, + "99.99851831106989" : 11676.031, + "99.99858634017818" : 11677.055, + "99.99866259258528" : 11678.015, + "99.99869025277216" : 11679.039, + "99.99870595179716" : 11680.063, + "99.99875005858166" : 11681.023, + "99.99879341779354" : 11682.047, + "99.99885397117565" : 11683.007, + "99.99890854397681" : 11684.031, + "99.99897358279463" : 11685.055, + "99.99906553422672" : 11686.015, + "99.99913206818978" : 11687.039, + "99.99921654389568" : 11688.063, + "99.9993496118218" : 11689.023, + "99.99946324285983" : 11690.047, + "99.99954921371096" : 11691.007, + "99.9996269612633" : 11692.031, + "99.99968228163708" : 11693.055, + "99.99975330103585" : 11694.015, + "99.99985870877508" : 11695.039, + "99.9999678543774" : 11696.063, + "100.0" : 11697.023 + }, + "aggregatedEndToEndLatencyAvg" : 4800.844807784442, + "aggregatedEndToEndLatency50pct" : 4778.015, + "aggregatedEndToEndLatency75pct" : 6874.015, + "aggregatedEndToEndLatency95pct" : 9136.063, + "aggregatedEndToEndLatency99pct" : 9911.039, + "aggregatedEndToEndLatency999pct" : 10744.063, + "aggregatedEndToEndLatency9999pct" : 11534.015, + "aggregatedEndToEndLatencyMax" : 11697.023 +} \ No newline at end of file diff --git a/blog/results/pulsar/throughput/default-sync-tiered.json b/blog/results/pulsar/throughput/default-sync-tiered.json new file mode 100644 index 00000000..cf2836b9 --- /dev/null +++ b/blog/results/pulsar/throughput/default-sync-tiered.json @@ -0,0 +1,2959 @@ +{ + "workload" : "100-partitions-1000K-rate-4-producer", + "driver" : "Pulsar", + "publishRate" : [ 321079.6112426227, 313167.4445597487, 311856.7776106367, 313776.6792114132, 313309.81523360877, 313033.860868283, 312438.49356289906, 312743.6866783332, 312784.43170689465, 312374.90143195685, 313365.7551131046, 313862.613903321, 312440.24088025064, 312610.69299957063, 314044.06431412435, 312324.12750742614, 313108.9249574161, 313290.0283732231, 310885.2699005221, 315263.1430713492, 312339.32725101674, 311862.7304439922, 312811.4375447506, 314395.9326405667, 312026.4741421147, 313152.61689705966, 312988.6641457467, 311946.56478652684, 315042.432967758, 312711.13445931516, 312037.40151294746, 312974.967902859, 314000.2561163098, 312049.80554280564, 313128.3440924486, 312592.577894225, 312235.7171469549, 311803.9491963642, 313807.2263908096, 313214.9719699388, 313149.3977789238, 312489.7764836569, 314404.4457110079, 312499.80021914036, 314147.2635176285, 311419.3145684456, 313102.461422894, 313135.57126646617, 312799.6139749683, 313980.1838022949, 310542.45362577157, 314269.37968506216, 313180.1646039773, 312885.9806440707, 311733.26920407097, 314794.5719586977, 312255.05483354797, 312087.7543442925, 312801.59950644046, 313653.75946653355 ], + "consumeRate" : [ 320340.71477634803, 314501.1979134095, 312992.6775528188, 313399.93778992904, 312621.97081819765, 311838.0699988214, 313884.1515099496, 311848.745975683, 313798.1681596147, 312764.848859033, 312129.871435035, 313110.51659308246, 313937.9140760387, 312170.8178277389, 312316.704345339, 313064.39370023547, 312869.60820156604, 312766.2660137726, 312763.05081581674, 313268.1642050507, 312507.11099226936, 312062.1654106836, 314649.14185964427, 312497.09680078196, 313499.3817307889, 312406.09691349935, 312427.026113465, 312636.956160102, 314243.4047010352, 312721.9202599462, 312895.1171433321, 314188.62788729096, 311425.9036422808, 313117.502460305, 313008.5664827749, 313015.95224113466, 312687.9121779619, 313107.40464543604, 312226.5517706141, 314009.7772827787, 313068.6591309064, 313336.0294197542, 311558.94159840327, 313996.14926914533, 311449.7411226301, 313523.61871428124, 312302.2774157322, 313066.1020916195, 313535.02207736525, 313923.9694382831, 312612.25353844935, 312719.5026620296, 313327.74066896574, 311464.65062699385, 313624.69715242746, 312691.6517929842, 313997.262640128, 313066.04961180594, 312550.45704297273, 312281.4790531878 ], + "backlog" : [ 92238, 78759, 67279, 71082, 78032, 90122, 75528, 84563, 74326, 70385, 82879, 90481, 75336, 79780, 97255, 89779, 92198, 97492, 78502, 98670, 96972, 94952, 76381, 95560, 80674, 88207, 93891, 86909, 94983, 94871, 86204, 73937, 99956, 89161, 90373, 86089, 81519, 68340, 84324, 76281, 77099, 68543, 97287, 82168, 109429, 88147, 96249, 96951, 89517, 90085, 69147, 84824, 83333, 97695, 78579, 99881, 82261, 72358, 74901, 88767 ], + "publishLatencyAvg" : [ 135.45454638099625, 135.224233193497, 136.54714656211118, 134.94926895677193, 134.81850860567744, 135.304503844488, 136.5311646251791, 133.84053775351617, 135.42197164914245, 133.91963251699232, 136.59423684664182, 134.86876722370965, 134.45928897492203, 132.56507386494604, 134.68173081880366, 135.05144585468057, 135.40079522975552, 134.69523253706947, 132.9897394009446, 135.17744080555613, 133.192546999497, 133.80735933950373, 135.629799357692, 135.01130483737393, 133.72702990404983, 134.38754742731518, 134.1661854052444, 133.96877889530734, 135.28692139052472, 134.23364607787298, 134.17796708197017, 135.60015844961887, 133.46973518889806, 135.20710452785053, 134.78023511033675, 133.05009573960584, 133.14670278236193, 134.61879959382549, 133.25468571299817, 134.07188803201436, 133.07017940062994, 134.0611464783302, 134.83825263008524, 132.19240552902417, 133.3613364355195, 135.47240613431308, 136.5140196860403, 134.85081934666078, 133.71645923720797, 134.5851041846335, 134.3024425772484, 134.1244413131271, 135.9525306197174, 135.93728406546234, 131.81696492930348, 137.17355961712028, 131.5166584402145, 135.70326607631986, 134.06352702210233, 134.0290803081596 ], + "publishLatency50pct" : [ 131.563, 130.724, 131.43, 130.352, 130.497, 130.047, 130.964, 129.733, 129.778, 130.728, 128.76, 129.52, 127.203, 127.555, 128.83, 129.146, 131.008, 128.393, 127.537, 128.301, 127.401, 128.259, 129.185, 129.359, 128.016, 127.703, 127.752, 129.153, 129.523, 127.351, 128.022, 129.386, 128.94, 127.347, 129.182, 127.716, 128.453, 128.455, 127.387, 129.22, 129.725, 127.519, 129.814, 125.723, 127.377, 128.95, 131.676, 128.604, 128.437, 128.989, 129.8, 129.36, 130.148, 129.081, 128.467, 130.166, 127.406, 128.52, 126.715, 126.534 ], + "publishLatency75pct" : [ 155.721, 154.811, 162.473, 158.561, 157.448, 153.163, 160.235, 151.559, 158.715, 157.539, 168.51, 156.513, 154.689, 157.505, 160.417, 161.485, 158.016, 158.868, 149.884, 156.178, 151.448, 156.094, 157.775, 158.108, 157.995, 155.536, 155.089, 154.044, 155.543, 157.628, 156.058, 157.846, 156.115, 158.796, 159.177, 155.25, 151.874, 155.147, 159.793, 155.491, 160.351, 158.634, 157.991, 146.946, 158.549, 161.603, 159.734, 155.641, 156.295, 154.851, 160.136, 156.939, 159.731, 159.351, 153.325, 165.013, 149.887, 159.288, 155.322, 155.606 ], + "publishLatency95pct" : [ 204.35, 207.405, 199.836, 198.399, 200.438, 201.826, 202.613, 196.007, 197.894, 194.842, 197.683, 197.679, 195.445, 191.372, 209.641, 195.381, 199.184, 200.472, 192.022, 205.506, 193.234, 199.463, 201.071, 199.0, 197.638, 198.964, 195.466, 193.806, 201.906, 197.148, 198.733, 195.792, 189.671, 204.354, 200.383, 203.151, 191.446, 203.492, 199.929, 198.432, 191.141, 199.095, 201.03, 196.162, 193.647, 202.412, 203.659, 202.324, 193.231, 203.437, 196.58, 198.538, 197.383, 207.02, 191.027, 203.923, 190.816, 196.901, 199.862, 203.354 ], + "publishLatency99pct" : [ 226.286, 232.918, 218.459, 215.489, 224.139, 220.908, 224.679, 212.922, 218.659, 215.59, 214.402, 213.984, 218.533, 215.725, 233.163, 210.887, 217.116, 218.577, 215.153, 222.766, 209.175, 219.179, 228.667, 220.939, 216.496, 216.118, 214.212, 211.717, 216.842, 211.036, 215.071, 229.287, 216.871, 223.186, 216.01, 223.177, 210.204, 225.163, 217.613, 214.913, 201.614, 224.421, 220.811, 226.787, 210.197, 222.55, 227.839, 226.187, 215.396, 219.806, 216.906, 216.059, 216.562, 235.432, 216.397, 225.018, 212.191, 228.262, 274.797, 249.65 ], + "publishLatency999pct" : [ 280.803, 249.563, 249.2, 237.105, 238.085, 240.254, 250.978, 226.701, 237.681, 231.072, 237.225, 231.718, 229.37, 230.478, 251.314, 243.64, 243.26, 237.141, 243.331, 238.927, 232.891, 232.801, 244.608, 237.525, 240.074, 226.408, 239.532, 229.931, 247.366, 222.211, 242.955, 249.987, 230.338, 240.593, 238.234, 276.151, 225.93, 242.454, 244.681, 234.796, 213.293, 245.039, 242.852, 322.891, 240.665, 282.571, 241.647, 245.859, 263.175, 232.412, 226.232, 245.506, 240.477, 247.523, 279.267, 245.334, 284.733, 302.429, 304.571, 300.285 ], + "publishLatency9999pct" : [ 284.195, 250.795, 257.991, 247.23, 249.198, 243.96, 255.08, 238.932, 253.796, 247.922, 249.599, 240.654, 246.844, 256.963, 261.231, 249.486, 258.63, 250.654, 244.387, 266.255, 241.155, 242.256, 258.805, 239.966, 256.775, 237.587, 267.645, 245.271, 249.378, 248.724, 269.975, 286.909, 241.32, 263.397, 241.368, 279.415, 244.571, 252.647, 256.981, 256.779, 251.399, 246.837, 246.996, 328.179, 250.073, 288.387, 250.806, 249.29, 281.715, 259.964, 246.542, 247.771, 244.177, 249.151, 317.797, 272.207, 303.477, 308.147, 306.687, 322.433 ], + "publishLatencyMax" : [ 341.407, 336.351, 303.079, 333.455, 318.257, 318.731, 313.057, 334.783, 322.947, 310.169, 324.125, 334.229, 325.473, 315.953, 351.311, 329.119, 319.035, 301.521, 321.655, 328.805, 304.861, 318.259, 301.599, 313.369, 304.631, 305.733, 306.355, 287.771, 352.023, 318.015, 333.741, 335.147, 320.667, 346.733, 309.841, 332.673, 302.475, 354.667, 317.859, 333.157, 317.675, 328.151, 314.557, 366.425, 312.827, 311.725, 336.287, 319.273, 303.793, 309.327, 311.795, 329.817, 322.061, 320.391, 327.229, 330.845, 359.375, 309.549, 317.365, 335.073 ], + "aggregatedPublishLatencyAvg" : 134.5125434576984, + "aggregatedPublishLatency50pct" : 128.754, + "aggregatedPublishLatency75pct" : 156.799, + "aggregatedPublishLatency95pct" : 198.768, + "aggregatedPublishLatency99pct" : 220.265, + "aggregatedPublishLatency999pct" : 250.914, + "aggregatedPublishLatency9999pct" : 301.055, + "aggregatedPublishLatencyMax" : 366.425, + "aggregatedPublishLatencyQuantiles" : { + "1.0535045738296136E-6" : 5.318, + "0.5000127605741506" : 19.535, + "1.0000344759371786" : 29.599, + "1.5000124708603928" : 39.196, + "2.0000331327188468" : 46.963, + "2.5000311442289638" : 53.085, + "3.00001387992276" : 58.288, + "3.5000213729740417" : 62.78, + "4.000006742429273" : 66.966, + "4.500079552764132" : 70.639, + "5.000142354805539" : 73.813, + "5.5000529254360275" : 76.745, + "6.000169456210701" : 79.471, + "6.500062644015721" : 81.86, + "7.000174960772099" : 84.016, + "7.5001687582639205" : 85.953, + "8.00000400331738" : 87.833, + "8.500205341210247" : 89.616, + "9.00012697363876" : 91.354, + "9.500106548818836" : 93.01, + "10.00030314594112" : 94.53, + "10.500031987032623" : 95.913, + "11.000225950393473" : 97.254, + "11.500265048581968" : 98.511, + "12.000090812094264" : 99.725, + "12.500067753512905" : 100.842, + "13.000009402528322" : 101.872, + "13.500520470765894" : 102.824, + "14.000335699232451" : 103.742, + "14.500277875000155" : 104.58, + "15.000030946696857" : 105.388, + "15.50015906602184" : 106.161, + "16.000664339984258" : 106.913, + "16.500682368081275" : 107.594, + "17.000480740474654" : 108.263, + "17.50041870222406" : 108.909, + "18.000690098171088" : 109.515, + "18.50073288362559" : 110.102, + "19.000304225783307" : 110.678, + "19.500757878021606" : 111.212, + "20.000848071181935" : 111.734, + "20.500221881232054" : 112.237, + "21.000767188368275" : 112.712, + "21.500740969273195" : 113.168, + "22.000866981589034" : 113.616, + "22.50102512579437" : 114.045, + "23.000342573349794" : 114.456, + "23.500258938255442" : 114.852, + "24.001241976542087" : 115.239, + "24.501143065631414" : 115.617, + "25.00106891207822" : 115.98, + "25.500442195376056" : 116.329, + "26.000871617009157" : 116.672, + "26.501453796805464" : 117.006, + "27.001059904614117" : 117.338, + "27.500264100427852" : 117.647, + "28.00092634657177" : 117.956, + "28.501446369598217" : 118.257, + "29.00125896430334" : 118.543, + "29.50165098652407" : 118.828, + "30.00146621499063" : 119.114, + "30.500886905994285" : 119.39, + "31.000987107448065" : 119.666, + "31.50038409459881" : 119.943, + "32.00036946405404" : 120.21, + "32.501161818012825" : 120.469, + "33.0013225959796" : 120.731, + "33.50005376823969" : 120.988, + "34.00121748256075" : 121.24, + "34.500361628613774" : 121.492, + "35.001883007737646" : 121.739, + "35.501381131327484" : 121.977, + "36.00187955751017" : 122.218, + "36.50030784720528" : 122.461, + "37.001219247180906" : 122.696, + "37.50191415196661" : 122.934, + "38.00013490126068" : 123.166, + "38.50186224052874" : 123.399, + "39.001958754716505" : 123.629, + "39.50192990185999" : 123.856, + "40.0021538901012" : 124.08, + "40.501514004591854" : 124.3, + "41.00215149337829" : 124.52, + "41.50095799121541" : 124.747, + "42.001901523080534" : 124.971, + "42.500531558901535" : 125.192, + "43.00118221649514" : 125.418, + "43.50029475741095" : 125.639, + "44.00157066996912" : 125.866, + "44.50106826680667" : 126.094, + "45.00134071625827" : 126.324, + "45.501038478964844" : 126.553, + "46.00129828636156" : 126.785, + "46.50201900200932" : 127.022, + "47.000674321940096" : 127.256, + "47.50139977835844" : 127.491, + "48.00007458812383" : 127.731, + "48.50198523718773" : 127.978, + "49.000527305376814" : 128.226, + "49.501283313427805" : 128.485, + "50.00144514489915" : 128.754, + "50.25142176368202" : 128.888, + "50.50120348411872" : 129.023, + "50.750521135790656" : 129.16, + "51.000490380041505" : 129.3, + "51.25076566737105" : 129.44, + "51.50025346003166" : 129.584, + "51.751343633149055" : 129.727, + "52.0012528276392" : 129.87, + "52.250656866686185" : 130.015, + "52.50014518609908" : 130.166, + "52.75093036964236" : 130.321, + "53.00082428831618" : 130.475, + "53.250201462996536" : 130.63, + "53.50055102239853" : 130.789, + "53.75022001784584" : 130.952, + "54.00065017034774" : 131.115, + "54.25089859331065" : 131.279, + "54.50138984907783" : 131.448, + "54.750750167685005" : 131.618, + "55.00106548818836" : 131.794, + "55.25079927416695" : 131.969, + "55.50069740685907" : 132.146, + "55.75131508317511" : 132.329, + "56.000121258376446" : 132.514, + "56.250158453672306" : 132.699, + "56.50098261688482" : 132.886, + "56.75082807434824" : 133.081, + "57.00047125893349" : 133.276, + "57.251181643652025" : 133.47, + "57.500021004247444" : 133.664, + "57.75047380709768" : 133.867, + "58.000159658618166" : 134.077, + "58.25072413295322" : 134.291, + "58.501102663731004" : 134.503, + "58.75089439246116" : 134.718, + "59.00040062145181" : 134.94, + "59.25031929748312" : 135.161, + "59.500401266723365" : 135.385, + "59.75057963163212" : 135.609, + "60.00039243045375" : 135.847, + "60.250049310598456" : 136.088, + "60.501002001368974" : 136.333, + "60.75044238632376" : 136.574, + "61.0006818544978" : 136.817, + "61.25049359981486" : 137.075, + "61.50024108135291" : 137.342, + "61.75074287216583" : 137.596, + "62.00011530607561" : 137.859, + "62.250661344080626" : 138.128, + "62.500497846755174" : 138.405, + "62.750361213796346" : 138.687, + "63.0008777536733" : 138.959, + "63.25047195029587" : 139.24, + "63.500592899205344" : 139.531, + "63.75050209369548" : 139.828, + "64.00033332884716" : 140.119, + "64.25056963650748" : 140.417, + "64.50003056480145" : 140.712, + "64.75012939011488" : 141.009, + "65.00027878364784" : 141.313, + "65.25065994818706" : 141.626, + "65.50019672881035" : 141.939, + "65.75020179221671" : 142.263, + "66.00008991661538" : 142.582, + "66.250084444976" : 142.903, + "66.50001365605304" : 143.227, + "66.75072772803759" : 143.553, + "67.00057265874872" : 143.876, + "67.25037492252461" : 144.22, + "67.50039684200415" : 144.559, + "67.75045036662091" : 144.907, + "68.00041750386261" : 145.262, + "68.2501591911255" : 145.617, + "68.50042763067532" : 145.994, + "68.75061178985924" : 146.38, + "69.00033030002152" : 146.755, + "69.25023370023649" : 147.128, + "69.50050108628173" : 147.514, + "69.7501073982069" : 147.894, + "70.0000381895408" : 148.269, + "70.25006801030464" : 148.647, + "70.50024953572712" : 149.03, + "70.75059540786312" : 149.422, + "71.00028283964046" : 149.811, + "71.25030633937686" : 150.203, + "71.50014916307885" : 150.586, + "71.75032384072159" : 150.982, + "72.00050641964864" : 151.396, + "72.25029235410364" : 151.807, + "72.50008092232008" : 152.222, + "72.7504257409515" : 152.666, + "73.00007840707791" : 153.114, + "73.2502388624089" : 153.561, + "73.50044988595944" : 154.008, + "73.75023002613929" : 154.469, + "74.0003135756364" : 154.933, + "74.25056989988362" : 155.38, + "74.50002872116845" : 155.842, + "74.75028293840651" : 156.316, + "75.00030327762919" : 156.799, + "75.12538587567998" : 157.042, + "75.25035100797079" : 157.277, + "75.37537302950858" : 157.518, + "75.50045036003651" : 157.762, + "75.62542128660247" : 158.008, + "75.75047333302062" : 158.247, + "75.87535945246839" : 158.475, + "76.0005700513249" : 158.717, + "76.12513906589595" : 158.959, + "76.25020375436898" : 159.21, + "76.37517731469639" : 159.448, + "76.50016351707866" : 159.689, + "76.62555163145586" : 159.923, + "76.75002425035841" : 160.165, + "76.87550454638583" : 160.404, + "77.00034483838463" : 160.641, + "77.1252910075931" : 160.868, + "77.25036886487331" : 161.106, + "77.37535348699873" : 161.343, + "77.50006630494411" : 161.581, + "77.62518788266414" : 161.82, + "77.75021780548623" : 162.066, + "77.87548476683745" : 162.316, + "78.00048150426547" : 162.561, + "78.12517430562394" : 162.806, + "78.25039175226019" : 163.047, + "78.37522835699298" : 163.295, + "78.50003862411144" : 163.544, + "78.62542989900236" : 163.794, + "78.75001893016031" : 164.032, + "78.87540915154666" : 164.275, + "79.00040062145182" : 164.525, + "79.12539261810926" : 164.779, + "79.25037829373925" : 165.022, + "79.37529022404908" : 165.277, + "79.50006941278261" : 165.533, + "79.62537219328932" : 165.784, + "79.7500934392713" : 166.038, + "79.8754051745669" : 166.294, + "80.00037136036228" : 166.534, + "80.12517161918728" : 166.792, + "80.25007670171738" : 167.051, + "80.37507870666828" : 167.31, + "80.50017658053538" : 167.57, + "80.62542931957485" : 167.829, + "80.7501426642725" : 168.083, + "80.87543543648577" : 168.34, + "81.00047326059217" : 168.596, + "81.1251639549415" : 168.854, + "81.25048622528284" : 169.104, + "81.37546663338996" : 169.361, + "81.50019420039938" : 169.619, + "81.62538530942128" : 169.888, + "81.75033569264805" : 170.145, + "81.87503060101567" : 170.396, + "82.00009845000243" : 170.646, + "82.12522371498845" : 170.902, + "82.25003714262063" : 171.157, + "82.37525933002745" : 171.411, + "82.50026554899664" : 171.665, + "82.62550564598122" : 171.924, + "82.75021266965143" : 172.171, + "82.87503610557707" : 172.419, + "83.00007445643575" : 172.67, + "83.1251228155879" : 172.92, + "83.25000840828338" : 173.164, + "83.37546921447617" : 173.4, + "83.50037008298798" : 173.638, + "83.6250570900713" : 173.878, + "83.75049419241118" : 174.126, + "83.87522491993431" : 174.375, + "84.00007100620827" : 174.623, + "84.12513832844274" : 174.867, + "84.2500813371375" : 175.114, + "84.37526243786594" : 175.36, + "84.50035609771476" : 175.613, + "84.62545133782044" : 175.853, + "84.75037696368973" : 176.094, + "84.87543006361246" : 176.341, + "85.00007387700823" : 176.584, + "85.1250047704004" : 176.829, + "85.25016585454193" : 177.079, + "85.3752215882261" : 177.332, + "85.50016143640713" : 177.569, + "85.62529091541145" : 177.807, + "85.75044041100269" : 178.059, + "85.87523961632311" : 178.293, + "86.00004408916641" : 178.533, + "86.12524784024319" : 178.781, + "86.25021982031373" : 179.026, + "86.37507644163344" : 179.265, + "86.50011426573984" : 179.502, + "86.62548868455758" : 179.755, + "86.75006928767894" : 179.991, + "86.87528726106747" : 180.216, + "87.0004083120352" : 180.453, + "87.12507688278848" : 180.695, + "87.25035279892856" : 180.935, + "87.3752078399914" : 181.179, + "87.50007236259542" : 181.416, + "87.56288177853484" : 181.537, + "87.62518972629714" : 181.654, + "87.68766307427752" : 181.771, + "87.75031499128318" : 181.888, + "87.81271090667738" : 182.009, + "87.87547396841556" : 182.134, + "87.93777085437983" : 182.255, + "88.0000719543624" : 182.373, + "88.06273177265234" : 182.488, + "88.12543794514355" : 182.601, + "88.18770217246602" : 182.717, + "88.25035724998538" : 182.837, + "88.3129506974872" : 182.954, + "88.37510430682941" : 183.071, + "88.43768563902862" : 183.191, + "88.50039602553811" : 183.316, + "88.56255016163263" : 183.444, + "88.62544017067195" : 183.571, + "88.68784082683675" : 183.697, + "88.75004711140767" : 183.821, + "88.8126226493317" : 183.945, + "88.87523189940211" : 184.073, + "88.9377289512354" : 184.197, + "89.00042616893772" : 184.325, + "89.06270830583796" : 184.451, + "89.12526698768882" : 184.579, + "89.18783093706256" : 184.706, + "89.25001299102827" : 184.834, + "89.31282714773829" : 184.965, + "89.37537898180943" : 185.096, + "89.4379892853844" : 185.222, + "89.50047211490596" : 185.343, + "89.56265574912854" : 185.467, + "89.62521337747482" : 185.589, + "89.68756557242922" : 185.715, + "89.75039079093726" : 185.844, + "89.81277933179945" : 185.975, + "89.87543388256653" : 186.103, + "89.93790881080378" : 186.23, + "90.00002554748592" : 186.367, + "90.06268589252815" : 186.506, + "90.12508865570209" : 186.64, + "90.18751986349952" : 186.766, + "90.25027291694425" : 186.899, + "90.31262247813721" : 187.03, + "90.37532707037155" : 187.163, + "90.43759709196918" : 187.294, + "90.5003506721662" : 187.431, + "90.5628356086969" : 187.57, + "90.6251914909173" : 187.705, + "90.68785183595953" : 187.838, + "90.75038523370063" : 187.978, + "90.81278694337" : 188.117, + "90.87537881061493" : 188.258, + "90.93761353980935" : 188.392, + "91.00015799934846" : 188.528, + "91.06279674754694" : 188.67, + "91.12546288686433" : 188.813, + "91.18763229877516" : 188.957, + "91.250308446386" : 189.099, + "91.31253422079153" : 189.238, + "91.37506287776205" : 189.38, + "91.43773007058401" : 189.523, + "91.5001749739409" : 189.674, + "91.56285217505632" : 189.821, + "91.62503475577434" : 189.959, + "91.68765717465192" : 190.1, + "91.75035333884966" : 190.244, + "91.81287198752672" : 190.388, + "91.87536324508486" : 190.53, + "91.93784502110182" : 190.678, + "92.00028307667898" : 190.824, + "92.06253571545115" : 190.962, + "92.12509650431116" : 191.109, + "92.18764886513459" : 191.25, + "92.25041350712964" : 191.387, + "92.31275674729514" : 191.531, + "92.37534756103551" : 191.683, + "92.43753698953324" : 191.834, + "92.50036747556416" : 191.983, + "92.56270281444537" : 192.131, + "92.62506607119779" : 192.277, + "92.6875020197658" : 192.432, + "92.75003067673632" : 192.592, + "92.81261464269694" : 192.743, + "92.8753429387842" : 192.896, + "92.93770724904118" : 193.05, + "93.00028331371752" : 193.204, + "93.0626318214059" : 193.36, + "93.12536907228203" : 193.52, + "93.18773074877758" : 193.675, + "93.25034105235257" : 193.836, + "93.31284495196559" : 193.997, + "93.375204521452" : 194.158, + "93.43754407435151" : 194.32, + "93.50020810665976" : 194.489, + "93.56251710792662" : 194.659, + "93.62515585612509" : 194.828, + "93.68763973915121" : 194.987, + "93.75005777814147" : 195.147, + "93.7814116545155" : 195.227, + "93.81274551430263" : 195.307, + "93.843868673175" : 195.388, + "93.87526047571367" : 195.471, + "93.90646844170423" : 195.555, + "93.93764111529157" : 195.636, + "93.96885013478669" : 195.72, + "94.00031462914097" : 195.808, + "94.03134771337227" : 195.895, + "94.0625572596197" : 195.98, + "94.0938152670775" : 196.066, + "94.1251543943875" : 196.152, + "94.15628598129645" : 196.237, + "94.18777628651279" : 196.324, + "94.21895054035699" : 196.411, + "94.25012110693517" : 196.502, + "94.2814101927779" : 196.591, + "94.31271086717096" : 196.685, + "94.34403735242607" : 196.777, + "94.37505568759333" : 196.865, + "94.40626470708845" : 196.956, + "94.43779241171717" : 197.049, + "94.46898088787312" : 197.142, + "94.50032633621055" : 197.236, + "94.53151797288021" : 197.332, + "94.56279388991578" : 197.429, + "94.59397446478741" : 197.527, + "94.62528883473992" : 197.619, + "94.65659214289441" : 197.706, + "94.68765946602436" : 197.793, + "94.7189201072436" : 197.887, + "94.75019971154518" : 197.984, + "94.78149880568137" : 198.085, + "94.81265198943409" : 198.184, + "94.84399269700094" : 198.281, + "94.87505211884658" : 198.375, + "94.90630380527696" : 198.474, + "94.93753968913872" : 198.574, + "94.96895940954862" : 198.672, + "95.00024796863906" : 198.768, + "95.0312915879161" : 198.867, + "95.06268602421622" : 198.971, + "95.09399407314129" : 199.078, + "95.12526946342457" : 199.18, + "95.15643950325047" : 199.281, + "95.18765062975474" : 199.383, + "95.21875324528791" : 199.485, + "95.25016717142266" : 199.584, + "95.28136038834917" : 199.68, + "95.31267423154941" : 199.776, + "95.34401546586855" : 199.876, + "95.37519393373103" : 199.976, + "95.40643877238168" : 200.078, + "95.4377963360217" : 200.182, + "95.46903063962661" : 200.288, + "95.50007057163764" : 200.389, + "95.53148081050637" : 200.49, + "95.56282467858695" : 200.596, + "95.59397470182594" : 200.699, + "95.62514368814726" : 200.807, + "95.65633585156921" : 200.916, + "95.68771343179615" : 201.034, + "95.71895721694221" : 201.14, + "95.75018625302425" : 201.243, + "95.78144004646377" : 201.349, + "95.81257584739102" : 201.453, + "95.84388863708666" : 201.567, + "95.87528886766194" : 201.682, + "95.9065568834132" : 201.794, + "95.93755204147985" : 201.902, + "95.96879793363506" : 202.018, + "96.0001228386333" : 202.139, + "96.03126180007428" : 202.257, + "96.06272313391484" : 202.372, + "96.09400695223471" : 202.488, + "96.12515592196912" : 202.604, + "96.1564197237021" : 202.722, + "96.18776833255326" : 202.843, + "96.2188477709858" : 202.961, + "96.25019532633239" : 203.081, + "96.28142857643272" : 203.193, + "96.31271924253232" : 203.314, + "96.34395776015552" : 203.446, + "96.37520628607216" : 203.574, + "96.40633892648569" : 203.697, + "96.43760799574153" : 203.824, + "96.46881859549352" : 203.947, + "96.50014402724405" : 204.075, + "96.53142521180249" : 204.21, + "96.56268848678316" : 204.342, + "96.59384114378359" : 204.468, + "96.62515920100212" : 204.593, + "96.65630448347052" : 204.717, + "96.68768785797262" : 204.849, + "96.71877151042347" : 204.982, + "96.75006586378908" : 205.108, + "96.78142764144741" : 205.234, + "96.81251603466883" : 205.37, + "96.84398685005056" : 205.511, + "96.87506365472167" : 205.649, + "96.89077193466976" : 205.72, + "96.9063169214089" : 205.793, + "96.92206681478766" : 205.866, + "96.9376518347006" : 205.935, + "96.95315626151366" : 206.005, + "96.96888297779178" : 206.074, + "96.98443217854921" : 206.143, + "97.00014414576331" : 206.214, + "97.0157275854194" : 206.286, + "97.03142164305574" : 206.358, + "97.04697453107919" : 206.432, + "97.06253479363465" : 206.507, + "97.07812718807962" : 206.578, + "97.09380017562448" : 206.653, + "97.10948369821509" : 206.732, + "97.12510032326524" : 206.811, + "97.14069587822394" : 206.887, + "97.15631144976952" : 206.962, + "97.17188119386614" : 207.038, + "97.18759421458482" : 207.116, + "97.20315237013114" : 207.194, + "97.21889330872101" : 207.272, + "97.23440827057979" : 207.351, + "97.2502087321781" : 207.435, + "97.26579901961391" : 207.516, + "97.28125919923487" : 207.592, + "97.2969090096791" : 207.667, + "97.31250561814235" : 207.741, + "97.32826499306228" : 207.82, + "97.34375256380214" : 207.904, + "97.35950509094233" : 207.993, + "97.37507536179125" : 208.076, + "97.39064510588787" : 208.153, + "97.40634601130395" : 208.228, + "97.42192734395088" : 208.306, + "97.43755081678079" : 208.383, + "97.45317270935381" : 208.462, + "97.46887519502674" : 208.546, + "97.48439068363781" : 208.635, + "97.50008000050357" : 208.729, + "97.5157587823236" : 208.826, + "97.53125425434777" : 208.915, + "97.54699888020365" : 209.007, + "97.56254123318136" : 209.103, + "97.5781546977178" : 209.199, + "97.59385138911557" : 209.289, + "97.60951120785326" : 209.379, + "97.62502090218919" : 209.464, + "97.64078554463197" : 209.542, + "97.65632104982996" : 209.626, + "97.67190764999975" : 209.713, + "97.68754639864598" : 209.796, + "97.7031445873661" : 209.886, + "97.71881072713123" : 209.979, + "97.73450531151985" : 210.07, + "97.75012509708374" : 210.163, + "97.76568009211633" : 210.251, + "97.78127459357044" : 210.339, + "97.79698972129826" : 210.43, + "97.81250889717535" : 210.525, + "97.82814027128954" : 210.62, + "97.84379534925665" : 210.706, + "97.85946201577407" : 210.797, + "97.87516028742871" : 210.886, + "97.89067208877377" : 210.978, + "97.906253948173" : 211.079, + "97.92199699377203" : 211.176, + "97.93754935504319" : 211.271, + "97.95322497634947" : 211.365, + "97.9689237747564" : 211.456, + "97.98451932971508" : 211.549, + "98.00000584695039" : 211.639, + "98.01570253834817" : 211.736, + "98.03138395392962" : 211.839, + "98.04692683365961" : 211.937, + "98.06264090788285" : 212.037, + "98.078125318109" : 212.137, + "98.09391419115698" : 212.236, + "98.10938701283281" : 212.333, + "98.12508423098288" : 212.433, + "98.14073720194084" : 212.535, + "98.1562974644963" : 212.636, + "98.17196939853659" : 212.754, + "98.18759866564164" : 212.867, + "98.20320264863692" : 212.972, + "98.21885667309945" : 213.08, + "98.23443747899411" : 213.189, + "98.25000564283387" : 213.294, + "98.26568495140619" : 213.403, + "98.28125153498908" : 213.518, + "98.29688290910329" : 213.635, + "98.31250848894233" : 213.757, + "98.32813406878137" : 213.881, + "98.34385499078434" : 214.006, + "98.35947846361422" : 214.124, + "98.37509719567355" : 214.24, + "98.39069485764138" : 214.357, + "98.40636837193853" : 214.475, + "98.4219765689521" : 214.596, + "98.43752629646183" : 214.722, + "98.44532117680359" : 214.782, + "98.45320507828184" : 214.855, + "98.46105368735687" : 214.92, + "98.46885488872609" : 214.983, + "98.4766639913796" : 215.046, + "98.48438354614433" : 215.109, + "98.49224427052197" : 215.173, + "98.50003388334086" : 215.233, + "98.50783087069176" : 215.3, + "98.515703710372" : 215.374, + "98.52353599012613" : 215.45, + "98.53131348764244" : 215.52, + "98.53906306728751" : 215.584, + "98.54690904260111" : 215.647, + "98.55474817013499" : 215.711, + "98.56258993143028" : 215.776, + "98.57032318175447" : 215.847, + "98.57812859714198" : 215.922, + "98.58596035014384" : 215.999, + "98.59375206997188" : 216.073, + "98.60166863009192" : 216.141, + "98.60948036650687" : 216.211, + "98.61728314813294" : 216.281, + "98.62502324623686" : 216.353, + "98.63286658778902" : 216.423, + "98.64069834079088" : 216.488, + "98.64847741856403" : 216.558, + "98.65629547600642" : 216.632, + "98.6640740270273" : 216.706, + "98.67190999404744" : 216.78, + "98.67974964833358" : 216.868, + "98.68753715414334" : 216.959, + "98.69537786193406" : 217.051, + "98.70320171365161" : 217.129, + "98.71102029784629" : 217.211, + "98.71883361451809" : 217.29, + "98.7266506184559" : 217.358, + "98.73439387707356" : 217.429, + "98.74224353965316" : 217.511, + "98.75001893016031" : 217.588, + "98.75781802452038" : 217.666, + "98.76571035403522" : 217.745, + "98.77349311907439" : 217.824, + "98.78128325864556" : 217.901, + "98.78911290463827" : 217.98, + "98.79694465764011" : 218.062, + "98.80470319207409" : 218.144, + "98.81251966925961" : 218.224, + "98.82039198218756" : 218.302, + "98.82817474722673" : 218.374, + "98.83594170969728" : 218.445, + "98.84378189073573" : 218.522, + "98.8515641290226" : 218.6, + "98.85941010433619" : 218.681, + "98.86727504273212" : 218.764, + "98.8750167210929" : 218.843, + "98.8829148448829" : 218.92, + "98.89069971693122" : 218.99, + "98.89852567565792" : 219.069, + "98.9062594527344" : 219.147, + "98.9140648681219" : 219.229, + "98.92194034156357" : 219.325, + "98.92977051430856" : 219.425, + "98.93752062070593" : 219.519, + "98.94531708130455" : 219.613, + "98.95315094131556" : 219.701, + "98.96096847200566" : 219.79, + "98.96878126192517" : 219.885, + "98.97660932766102" : 219.985, + "98.9844036812505" : 220.073, + "98.99221752467459" : 220.172, + "99.00000503048435" : 220.265, + "99.007884191192" : 220.36, + "99.01566484922203" : 220.46, + "99.02343813272003" : 220.579, + "99.03126040418071" : 220.677, + "99.03909110367799" : 220.773, + "99.04692285667984" : 220.877, + "99.05470825548045" : 220.986, + "99.06258214866524" : 221.093, + "99.0703417366038" : 221.199, + "99.07815189276187" : 221.315, + "99.0859725839657" : 221.449, + "99.09380012294925" : 221.59, + "99.10158973576814" : 221.713, + "99.10940831996282" : 221.839, + "99.11723375193723" : 221.944, + "99.1250565501502" : 222.053, + "99.13286670630829" : 222.169, + "99.14064683758602" : 222.284, + "99.14845541348724" : 222.407, + "99.15627715819565" : 222.535, + "99.16411049145435" : 222.674, + "99.1718943099981" : 222.801, + "99.17969077059672" : 222.939, + "99.18751514906656" : 223.077, + "99.19531951094947" : 223.223, + "99.20315021044675" : 223.351, + "99.21096984814601" : 223.495, + "99.2187879055884" : 223.648, + "99.22266638267695" : 223.723, + "99.22656276934326" : 223.791, + "99.23048812738534" : 223.851, + "99.23442033320717" : 223.918, + "99.23832040713948" : 223.99, + "99.24218940268688" : 224.062, + "99.24613056329757" : 224.133, + "99.25000166585411" : 224.2, + "99.25393123791449" : 224.262, + "99.25782341056251" : 224.325, + "99.26175614313661" : 224.383, + "99.26564357501404" : 224.442, + "99.26953522090977" : 224.508, + "99.27346110570414" : 224.575, + "99.27738330323251" : 224.64, + "99.28125071852304" : 224.715, + "99.28519135238145" : 224.797, + "99.28908036451574" : 224.879, + "99.29300414230097" : 224.961, + "99.2968915741784" : 225.038, + "99.30078585383556" : 225.118, + "99.30472859470312" : 225.202, + "99.30863498966288" : 225.274, + "99.31254981265923" : 225.348, + "99.31645568086671" : 225.417, + "99.32032098914809" : 225.485, + "99.32427005104309" : 225.552, + "99.32816011668196" : 225.622, + "99.33206651164171" : 225.726, + "99.33593866770282" : 225.833, + "99.33985981172661" : 225.926, + "99.34377990224584" : 226.009, + "99.34768524370102" : 226.094, + "99.35161850302741" : 226.181, + "99.35548802532709" : 226.256, + "99.35938283173654" : 226.34, + "99.36328343242114" : 226.428, + "99.3672224860227" : 226.507, + "99.37112888098245" : 226.593, + "99.37502948166706" : 226.673, + "99.37890848550789" : 226.743, + "99.3828333167977" : 226.815, + "99.38673549773917" : 226.9, + "99.39062556337804" : 226.98, + "99.39454934116326" : 227.067, + "99.39847364570078" : 227.141, + "99.40235422979848" : 227.229, + "99.40625535723537" : 227.324, + "99.41018387579118" : 227.428, + "99.41411818862214" : 227.527, + "99.41798665741725" : 227.609, + "99.42191359571619" : 227.698, + "99.42581788366681" : 227.795, + "99.4297311264063" : 227.874, + "99.43361013024715" : 227.96, + "99.43753074751865" : 228.064, + "99.44143134820325" : 228.169, + "99.44532088708984" : 228.27, + "99.44923571008619" : 228.375, + "99.45312682922962" : 228.463, + "99.45703954521683" : 228.551, + "99.46096701026806" : 228.633, + "99.46487551223697" : 228.713, + "99.46880508429736" : 228.784, + "99.47267039257873" : 228.876, + "99.47658574232737" : 228.993, + "99.48049424429628" : 229.109, + "99.48438799720115" : 229.204, + "99.48832547054585" : 229.288, + "99.4921918323318" : 229.366, + "99.49609612028242" : 229.466, + "99.50002990636109" : 229.543, + "99.50392102550452" : 229.627, + "99.50784901730805" : 229.706, + "99.51173381542405" : 229.787, + "99.51564600465896" : 229.876, + "99.5195697824442" : 229.958, + "99.52346564235822" : 230.027, + "99.52734569970363" : 230.122, + "99.53127685202088" : 230.239, + "99.53516797116431" : 230.349, + "99.53907173236264" : 230.455, + "99.542986555359" : 230.558, + "99.54688873630046" : 230.657, + "99.5507956580125" : 230.763, + "99.55470415998141" : 230.871, + "99.5586174027209" : 230.982, + "99.5625180034055" : 231.111, + "99.56640806904437" : 231.235, + "99.57033026657274" : 231.339, + "99.57424245580765" : 231.464, + "99.5781651800883" : 231.573, + "99.58204365717687" : 231.678, + "99.58596848846666" : 231.808, + "99.5898553935918" : 231.96, + "99.593760735047" : 232.113, + "99.59767608479564" : 232.241, + "99.60157615872795" : 232.357, + "99.60547517915569" : 232.513, + "99.60939368941806" : 232.677, + "99.61133161108161" : 232.752, + "99.61329903087324" : 232.818, + "99.61526012963742" : 232.91, + "99.61720226531928" : 232.998, + "99.61915704305602" : 233.073, + "99.62110813352675" : 233.143, + "99.6230502692086" : 233.21, + "99.6250108412205" : 233.298, + "99.62696667246182" : 233.397, + "99.62892513746456" : 233.504, + "99.63086779989871" : 233.608, + "99.63282942541518" : 233.678, + "99.63477208784933" : 233.757, + "99.63673055285207" : 233.85, + "99.63868901785482" : 233.953, + "99.64063326054583" : 234.044, + "99.64258013699826" : 234.15, + "99.64455598482648" : 234.244, + "99.64648547845344" : 234.318, + "99.64844183644705" : 234.403, + "99.65040135495437" : 234.491, + "99.65236140021398" : 234.578, + "99.65430827666641" : 234.649, + "99.65627042893517" : 234.75, + "99.65821256461703" : 234.834, + "99.66016365508777" : 234.9, + "99.66213265513625" : 234.992, + "99.66406636278151" : 235.082, + "99.66602061376597" : 235.164, + "99.66797802526415" : 235.274, + "99.66992648197345" : 235.371, + "99.67187546543502" : 235.459, + "99.67383551069464" : 235.566, + "99.67579555595425" : 235.7, + "99.67773663813153" : 235.792, + "99.67970669168459" : 235.873, + "99.68165040762331" : 235.946, + "99.68361888091951" : 236.016, + "99.68555680258306" : 236.099, + "99.68751000006294" : 236.171, + "99.68947267908399" : 236.235, + "99.691424296307" : 236.316, + "99.69336853899802" : 236.391, + "99.69534122631251" : 236.472, + "99.69729442379239" : 236.549, + "99.6992265511808" : 236.611, + "99.70118554293583" : 236.693, + "99.70313768691113" : 236.815, + "99.70509457165703" : 236.945, + "99.7070519831552" : 237.056, + "99.70900623413965" : 237.133, + "99.71096206538097" : 237.224, + "99.71289788003538" : 237.306, + "99.71485529153355" : 237.396, + "99.716805855252" : 237.467, + "99.71875957948417" : 237.537, + "99.72071014320261" : 237.602, + "99.72267967000339" : 237.686, + "99.72462391269438" : 237.774, + "99.72658132419257" : 237.884, + "99.72852925414958" : 237.991, + "99.73048613889547" : 238.053, + "99.7324335421002" : 238.127, + "99.7343772580389" : 238.201, + "99.73633677654622" : 238.266, + "99.73828154598952" : 238.363, + "99.74026213458832" : 238.442, + "99.7421990027473" : 238.501, + "99.7441637887775" : 238.574, + "99.74610855822078" : 238.645, + "99.74805174740722" : 238.712, + "99.75000125762108" : 238.809, + "99.7519649901467" : 238.882, + "99.753917134122" : 238.982, + "99.75586506407902" : 239.065, + "99.7578145742929" : 239.2, + "99.7597709322865" : 239.299, + "99.76172571002323" : 239.426, + "99.76367363998024" : 239.519, + "99.765635792249" : 239.618, + "99.76757898143543" : 239.706, + "99.76954745473164" : 239.772, + "99.77149907195465" : 239.832, + "99.77346227772799" : 239.916, + "99.77540283315298" : 240.016, + "99.77734654909169" : 240.131, + "99.77930238033301" : 240.289, + "99.78125241729917" : 240.455, + "99.78320403452219" : 240.594, + "99.78516671354323" : 240.688, + "99.78712307153683" : 240.788, + "99.78907310850299" : 240.897, + "99.79102525247829" : 241.013, + "99.79297844995818" : 241.112, + "99.79492954042891" : 241.263, + "99.79688484491794" : 241.385, + "99.79883540863638" : 241.549, + "99.80078386534568" : 241.733, + "99.80273811633013" : 241.934, + "99.80469763483745" : 242.037, + "99.80567634058654" : 242.083, + "99.80665504633564" : 242.133, + "99.8076221635344" : 242.183, + "99.80859981577892" : 242.233, + "99.80958115528945" : 242.292, + "99.81055037949737" : 242.343, + "99.81153066550331" : 242.397, + "99.81250094321581" : 242.441, + "99.81348175597405" : 242.499, + "99.8144578279617" : 242.568, + "99.8154360069585" : 242.647, + "99.81640891843243" : 242.71, + "99.81738551717237" : 242.764, + "99.81836158916003" : 242.813, + "99.81933924140453" : 242.867, + "99.82031478663991" : 242.913, + "99.82130192042558" : 242.966, + "99.82228589369754" : 243.018, + "99.82326196568519" : 243.056, + "99.82422960963626" : 243.101, + "99.82522253769709" : 243.139, + "99.82617964660241" : 243.185, + "99.82715150457177" : 243.235, + "99.82814443263261" : 243.274, + "99.8291068090608" : 243.322, + "99.83008867532361" : 243.38, + "99.83106000654068" : 243.436, + "99.8320376587852" : 243.494, + "99.83300899000227" : 243.561, + "99.83398716899907" : 243.628, + "99.83496745500501" : 243.677, + "99.83593931297438" : 243.758, + "99.83692381299862" : 243.836, + "99.83789409071112" : 243.909, + "99.83888017099223" : 243.986, + "99.83984834169557" : 244.038, + "99.84082441368322" : 244.103, + "99.84179995891859" : 244.173, + "99.84278709270427" : 244.246, + "99.84376685195792" : 244.313, + "99.84473238889984" : 244.391, + "99.84570582712607" : 244.47, + "99.84668505962743" : 244.563, + "99.84766007811052" : 244.676, + "99.84864036411646" : 244.79, + "99.84961432909498" : 244.909, + "99.85059619535778" : 245.009, + "99.85156647307028" : 245.106, + "99.85253938454422" : 245.184, + "99.85353705337562" : 245.254, + "99.85450364382211" : 245.305, + "99.85547234127775" : 245.367, + "99.85644735976084" : 245.443, + "99.85742343174849" : 245.523, + "99.85840371775443" : 245.609, + "99.85938084324665" : 245.703, + "99.86035164771144" : 245.816, + "99.86133930824941" : 245.91, + "99.86230695220047" : 245.964, + "99.86328881846327" : 246.076, + "99.86425909617577" : 246.192, + "99.86523938218173" : 246.368, + "99.86621387391251" : 246.484, + "99.86718941914788" : 246.586, + "99.86816917840154" : 246.661, + "99.86914314338004" : 246.751, + "99.87012500964286" : 246.827, + "99.87110213513509" : 246.919, + "99.87207662686588" : 247.034, + "99.87305796637641" : 247.143, + "99.87402719058433" : 247.276, + "99.87500747659027" : 247.378, + "99.87597828105505" : 247.503, + "99.87695329953813" : 247.648, + "99.87793727281009" : 247.793, + "99.87891176454089" : 247.954, + "99.87988889003311" : 248.15, + "99.88086022125019" : 248.26, + "99.88184682828357" : 248.357, + "99.88281341873007" : 248.476, + "99.88380318627718" : 248.655, + "99.88476766971452" : 248.746, + "99.8857426881976" : 248.873, + "99.88672350095584" : 248.965, + "99.88770062644807" : 249.075, + "99.88867353792199" : 249.186, + "99.88964855640506" : 249.273, + "99.89063200292473" : 249.379, + "99.89160649465553" : 249.474, + "99.89258888767063" : 249.579, + "99.89355495136483" : 249.728, + "99.89453523737077" : 249.88, + "99.89554238774336" : 250.014, + "99.89648474758465" : 250.164, + "99.89746134632459" : 250.375, + "99.8984389985691" : 250.644, + "99.89941454380447" : 250.798, + "99.90039588331499" : 250.989, + "99.90136721453206" : 251.216, + "99.90234434002429" : 251.531, + "99.90283369289884" : 251.781, + "99.90332093876422" : 251.994, + "99.90380976488649" : 252.164, + "99.9043043852839" : 252.312, + "99.904787417131" : 252.368, + "99.90527571650097" : 252.471, + "99.90576190886179" : 252.607, + "99.9062523152409" : 252.747, + "99.90673903435402" : 252.916, + "99.907227333724" : 253.177, + "99.90771510634167" : 253.697, + "99.90820498596851" : 253.881, + "99.90869433884305" : 254.119, + "99.90918158470845" : 254.258, + "99.90966830382155" : 254.516, + "99.91015712994381" : 254.625, + "99.91064700957064" : 254.787, + "99.91113425543604" : 254.979, + "99.911622554806" : 255.337, + "99.91211348793742" : 255.517, + "99.9126007338028" : 255.658, + "99.91308639941134" : 256.293, + "99.91357680579046" : 256.503, + "99.91406352490357" : 256.668, + "99.91455709179641" : 256.857, + "99.91503907013893" : 256.924, + "99.91552894976577" : 257.033, + "99.91601619563116" : 257.21, + "99.91651450329458" : 257.554, + "99.91699437462796" : 257.769, + "99.91748162049336" : 258.422, + "99.91797044661561" : 258.62, + "99.91845874598559" : 258.778, + "99.9189454650987" : 259.065, + "99.91943376446866" : 259.249, + "99.91992311734322" : 259.4, + "99.9204103632086" : 259.878, + "99.92090340334916" : 259.99, + "99.92138959570998" : 260.083, + "99.9218757880708" : 260.275, + "99.92236566769763" : 260.37, + "99.92285186005846" : 260.574, + "99.92334279318986" : 261.06, + "99.92385321615588" : 261.134, + "99.92432255244353" : 261.204, + "99.92480505753834" : 261.275, + "99.92529599066974" : 261.434, + "99.92578270978285" : 261.663, + "99.92627048240054" : 261.963, + "99.92676194228423" : 262.213, + "99.92724760789277" : 262.531, + "99.92774644230848" : 262.897, + "99.928224733385" : 263.057, + "99.92871355950724" : 263.245, + "99.92920817990466" : 263.435, + "99.92969173850405" : 263.555, + "99.93017793086487" : 263.733, + "99.9306678104917" : 264.023, + "99.93115452960481" : 264.243, + "99.93164335572706" : 264.445, + "99.9321290213356" : 265.595, + "99.93262048121929" : 265.775, + "99.93311036084613" : 265.891, + "99.93359707995923" : 266.059, + "99.93408432582463" : 266.279, + "99.93457051818545" : 266.533, + "99.93506145131686" : 266.743, + "99.93554922393454" : 267.135, + "99.93606544117571" : 267.641, + "99.9365247691699" : 268.447, + "99.93701201503531" : 269.063, + "99.93750189466213" : 269.229, + "99.93798966727981" : 269.529, + "99.93847902015436" : 269.701, + "99.93896679277204" : 270.107, + "99.93945825265574" : 270.407, + "99.93994707877799" : 270.991, + "99.94043116412966" : 271.145, + "99.94092262401335" : 271.333, + "99.94140670936503" : 271.579, + "99.94189606223958" : 271.887, + "99.94238910238013" : 272.145, + "99.94287634824552" : 272.281, + "99.94336412086321" : 272.429, + "99.94384767946259" : 272.579, + "99.94433808584171" : 272.793, + "99.9448258584594" : 273.139, + "99.94531521133393" : 273.509, + "99.94580719796991" : 273.657, + "99.94629075656931" : 273.761, + "99.94678379670985" : 273.851, + "99.94726630180467" : 273.963, + "99.94775828844065" : 274.397, + "99.94824290054461" : 274.749, + "99.9487343604283" : 274.963, + "99.94921949928455" : 275.259, + "99.94971411968197" : 275.403, + "99.9501955712722" : 275.505, + "99.95068755790818" : 275.625, + "99.951173750269" : 275.859, + "99.95142448435757" : 276.107, + "99.9516652101527" : 276.199, + "99.95190540919553" : 276.287, + "99.95215140251352" : 276.479, + "99.95239686907922" : 276.565, + "99.95263812162663" : 276.635, + "99.95288464169691" : 276.681, + "99.95312747450117" : 276.731, + "99.95338031559889" : 276.773, + "99.95361524711886" : 276.885, + "99.95386229394141" : 276.965, + "99.95410986751627" : 277.007, + "99.95434901305453" : 277.033, + "99.95460501466597" : 277.053, + "99.95485100798396" : 277.085, + "99.95509015352222" : 277.109, + "99.95532982581277" : 277.139, + "99.95556791784645" : 277.187, + "99.95581075065071" : 277.281, + "99.95605569046413" : 277.565, + "99.95630431754356" : 277.623, + "99.95654873060468" : 277.665, + "99.9567894563998" : 277.717, + "99.95703913698381" : 277.779, + "99.95728987107238" : 277.833, + "99.95752058857404" : 277.867, + "99.95776868890118" : 277.905, + "99.9580094146963" : 277.941, + "99.95825593476657" : 277.991, + "99.95850034782771" : 278.041, + "99.9587416003751" : 278.089, + "99.95898706694081" : 278.121, + "99.95924412205683" : 278.165, + "99.95947431280621" : 278.229, + "99.95971714561048" : 278.313, + "99.95996419243303" : 278.405, + "99.9602075519896" : 278.489, + "99.96045512556445" : 278.541, + "99.96069585135956" : 278.597, + "99.96093815741155" : 278.687, + "99.96118362397725" : 278.861, + "99.96143172430439" : 279.079, + "99.96167403035636" : 279.157, + "99.96191633640835" : 279.225, + "99.96216232972634" : 279.317, + "99.96240358227374" : 279.415, + "99.96264746858259" : 279.555, + "99.96289346190058" : 279.693, + "99.96313892846628" : 279.813, + "99.96338070776596" : 279.919, + "99.96362406732253" : 280.003, + "99.96387006064052" : 280.089, + "99.96411394694935" : 280.147, + "99.96435625300134" : 280.227, + "99.9646112011082" : 280.303, + "99.9648445523713" : 280.383, + "99.96508791192787" : 280.541, + "99.96533337849357" : 280.721, + "99.9655777915547" : 280.817, + "99.9658269453864" : 280.873, + "99.96606977819067" : 280.947, + "99.96631735176553" : 281.009, + "99.96655439029463" : 281.067, + "99.96679880335576" : 281.185, + "99.96704426992146" : 281.291, + "99.96728657597345" : 281.427, + "99.96753046228228" : 281.579, + "99.967779616114" : 281.687, + "99.96802139541369" : 281.815, + "99.96826475497025" : 281.937, + "99.96850653426993" : 282.071, + "99.96875094733106" : 282.137, + "99.96899588714449" : 282.195, + "99.96924556772848" : 282.275, + "99.9694899807896" : 282.311, + "99.9697354473553" : 282.353, + "99.96997564639814" : 282.399, + "99.97021795245013" : 282.523, + "99.97046236551125" : 282.659, + "99.97070888558153" : 282.767, + "99.97095224513808" : 282.845, + "99.9711966581992" : 282.923, + "99.97143791074662" : 283.001, + "99.97168179705545" : 283.171, + "99.97192621011659" : 283.307, + "99.97217062317772" : 283.519, + "99.97241345598198" : 283.703, + "99.97265628878625" : 283.889, + "99.97290280885653" : 283.997, + "99.97314774866994" : 284.123, + "99.97339268848336" : 284.201, + "99.97363868180135" : 284.293, + "99.9738778273396" : 284.385, + "99.97412171364844" : 284.511, + "99.97436612670958" : 284.631, + "99.97460948626613" : 284.951, + "99.97485495283183" : 285.187, + "99.97510726717726" : 285.259, + "99.97534430570637" : 285.391, + "99.97558661175836" : 285.533, + "99.97571145205036" : 285.613, + "99.97583260507635" : 285.687, + "99.97595217784549" : 285.787, + "99.97607438437605" : 286.253, + "99.97619975142032" : 286.421, + "99.97632353820775" : 286.513, + "99.97644153072002" : 286.549, + "99.97656373725059" : 286.585, + "99.97668489027657" : 286.675, + "99.97680815031171" : 286.779, + "99.97693193709914" : 286.881, + "99.97705098311599" : 286.975, + "99.97717371639884" : 287.213, + "99.97729750318626" : 287.409, + "99.97741918296454" : 287.525, + "99.97753928248595" : 287.627, + "99.97766148901651" : 287.961, + "99.97778422229936" : 288.147, + "99.97790590207765" : 288.251, + "99.97802810860821" : 288.357, + "99.97814978838649" : 288.495, + "99.97827199491705" : 288.667, + "99.97839367469533" : 288.819, + "99.97851640797818" : 289.125, + "99.97863861450874" : 290.287, + "99.97875976753474" : 290.439, + "99.97888250081759" : 290.725, + "99.97900470734815" : 291.251, + "99.97912691387872" : 291.541, + "99.97924859365699" : 291.685, + "99.9793729071967" : 291.759, + "99.97949722073642" : 291.799, + "99.97962153427612" : 291.843, + "99.9797390000361" : 291.887, + "99.97985962630982" : 291.927, + "99.97998288634496" : 291.979, + "99.98010351261865" : 292.065, + "99.98022519239693" : 292.489, + "99.9803468721752" : 292.535, + "99.98046960545805" : 292.575, + "99.98059444575006" : 292.621, + "99.9807134917669" : 292.659, + "99.98083885881118" : 292.715, + "99.98095737807574" : 292.763, + "99.9810801113586" : 292.895, + "99.98120126438458" : 293.043, + "99.98132715818116" : 293.193, + "99.981446204198" : 293.233, + "99.98156841072857" : 293.307, + "99.98168956375456" : 293.489, + "99.9818128237897" : 293.663, + "99.98193503032026" : 293.811, + "99.98205618334624" : 293.969, + "99.98218155039054" : 294.099, + "99.98230323016881" : 294.155, + "99.98242227618566" : 294.227, + "99.98254500946851" : 294.311, + "99.98266774275136" : 294.401, + "99.98278836902506" : 294.493, + "99.98291110230791" : 294.611, + "99.98303278208618" : 294.727, + "99.98316394340563" : 295.203, + "99.98327719514731" : 295.321, + "99.98339940167789" : 295.413, + "99.98352160820845" : 295.499, + "99.98364276123444" : 295.609, + "99.98376602126957" : 295.713, + "99.98388822780014" : 295.817, + "99.98400990757841" : 295.929, + "99.9841310606044" : 296.455, + "99.98425432063954" : 296.591, + "99.98437600041783" : 296.709, + "99.98449715344381" : 296.825, + "99.98461988672666" : 296.969, + "99.98474209325722" : 297.107, + "99.9848637730355" : 297.441, + "99.98498545281377" : 297.491, + "99.9851092396012" : 297.545, + "99.98523249963634" : 297.597, + "99.98535628642377" : 297.649, + "99.98547375218375" : 297.705, + "99.98559701221889" : 297.775, + "99.98571816524488" : 297.843, + "99.98584037177544" : 297.911, + "99.98596205155373" : 298.037, + "99.98608478483658" : 298.343, + "99.98620857162399" : 298.421, + "99.98632814439313" : 298.487, + "99.98645035092369" : 298.549, + "99.98657308420654" : 298.639, + "99.98669476398481" : 298.729, + "99.98681855077224" : 298.849, + "99.98693865029367" : 298.947, + "99.98706085682423" : 299.031, + "99.98718517036394" : 299.109, + "99.98730579663764" : 299.173, + "99.98742852992049" : 299.245, + "99.98754968294648" : 299.315, + "99.98767136272475" : 299.399, + "99.98779304250304" : 299.541, + "99.98785572602517" : 299.601, + "99.9879157757859" : 299.657, + "99.98797793255574" : 299.719, + "99.9880395625733" : 299.791, + "99.98810119259088" : 299.835, + "99.98816176910388" : 299.877, + "99.98822234561688" : 299.917, + "99.98828502913902" : 299.963, + "99.98834402539515" : 299.993, + "99.98840354840357" : 300.023, + "99.98846570517343" : 300.053, + "99.98852575493413" : 300.085, + "99.98858843845628" : 300.123, + "99.98864901496927" : 300.155, + "99.98870906472997" : 300.183, + "99.98877016799527" : 300.213, + "99.98883601203113" : 300.241, + "99.98889658854412" : 300.265, + "99.98895558480025" : 300.289, + "99.98901668806553" : 300.313, + "99.98907726457854" : 300.337, + "99.98913994810067" : 300.361, + "99.98919894435681" : 300.385, + "99.98925794061294" : 300.411, + "99.98932325789653" : 300.427, + "99.9893806738958" : 300.443, + "99.98944177716108" : 300.477, + "99.98950288042636" : 300.569, + "99.98956398369164" : 300.607, + "99.98962719396607" : 300.639, + "99.98968671697449" : 300.681, + "99.9897472934875" : 300.723, + "99.9898073432482" : 300.769, + "99.98986844651348" : 300.817, + "99.98993007653105" : 300.889, + "99.98999065304405" : 301.033, + "99.99005228306162" : 301.683, + "99.99011233282232" : 301.753, + "99.9901734360876" : 301.831, + "99.99023453935288" : 301.901, + "99.99029932988418" : 301.955, + "99.99035990639717" : 301.989, + "99.99042100966246" : 302.021, + "99.99048105942316" : 302.059, + "99.99054321619302" : 302.083, + "99.99060115894459" : 302.113, + "99.99066331571443" : 302.153, + "99.99072336547515" : 302.203, + "99.99078499549272" : 302.247, + "99.990846098758" : 302.295, + "99.99090720202328" : 302.357, + "99.99096830528856" : 302.437, + "99.99102835504927" : 302.509, + "99.99108945831455" : 302.559, + "99.99115108833212" : 302.599, + "99.99121113809282" : 302.635, + "99.99127276811039" : 302.691, + "99.99133387137567" : 302.751, + "99.99139444788867" : 302.813, + "99.99145607790624" : 302.891, + "99.99151612766696" : 303.049, + "99.99157723093224" : 303.217, + "99.9916388609498" : 303.319, + "99.99170101771966" : 303.349, + "99.99176844201239" : 303.357, + "99.99182480450708" : 303.363, + "99.9918848542678" : 303.377, + "99.99194595753308" : 303.391, + "99.99200442703692" : 303.407, + "99.99206869081593" : 303.423, + "99.99214243613609" : 303.437, + "99.99219300435564" : 303.445, + "99.99225568787777" : 303.453, + "99.99231047011561" : 303.463, + "99.99237368039005" : 303.491, + "99.99243373015075" : 303.519, + "99.9924927264069" : 303.573, + "99.99255488317675" : 303.659, + "99.99261545968974" : 303.749, + "99.99267814321189" : 303.859, + "99.99273713946802" : 303.927, + "99.99280351025617" : 303.979, + "99.99286145300773" : 304.005, + "99.99292255627302" : 304.045, + "99.9929836595383" : 304.081, + "99.99304950357416" : 304.105, + "99.99312166863747" : 304.109, + "99.993168549591" : 304.115, + "99.99322596559027" : 304.127, + "99.99328706885555" : 304.497, + "99.99334817212085" : 304.541, + "99.99340822188155" : 304.573, + "99.99347353916512" : 305.049, + "99.99353042841211" : 305.091, + "99.99359258518197" : 305.141, + "99.99365263494268" : 305.193, + "99.99371373820796" : 305.265, + "99.99377536822553" : 305.339, + "99.99383647149081" : 305.411, + "99.9938970480038" : 305.493, + "99.99392865314103" : 305.529, + "99.9939576245168" : 305.557, + "99.99398922965402" : 305.597, + "99.9940218882958" : 306.017, + "99.99405507368988" : 306.027, + "99.99408088455193" : 306.039, + "99.99411038268" : 306.051, + "99.99414356807408" : 306.077, + "99.9941825477433" : 306.087, + "99.99420677834851" : 306.091, + "99.99423258921057" : 306.095, + "99.99426682810922" : 306.111, + "99.99429369247585" : 306.121, + "99.99433846642025" : 306.125, + "99.99436480403459" : 306.127, + "99.99439166840122" : 306.129, + "99.99442116652928" : 306.137, + "99.99446910098739" : 306.141, + "99.9944770022717" : 306.143, + "99.9945170354455" : 306.147, + "99.99454179280299" : 306.151, + "99.99457866546307" : 306.157, + "99.9946018425637" : 306.171, + "99.9946297604349" : 306.187, + "99.99466136557211" : 306.213, + "99.99469139045247" : 306.227, + "99.99472299558968" : 306.239, + "99.99475249371775" : 306.257, + "99.9947830453504" : 306.275, + "99.99481781100133" : 306.295, + "99.99484256835882" : 306.333, + "99.99487311999145" : 306.395, + "99.9949036716241" : 306.459, + "99.99494949907306" : 306.511, + "99.99496582839396" : 306.519, + "99.9949958532743" : 306.529, + "99.9950327259344" : 306.541, + "99.9950643310716" : 306.547, + "99.99509119543823" : 306.555, + "99.99511805980487" : 306.569, + "99.99514808468523" : 306.583, + "99.99517968982244" : 306.603, + "99.99521024145508" : 306.641, + "99.99523973958316" : 306.661, + "99.99527713899552" : 306.673, + "99.9953061103713" : 306.683, + "99.99533086772878" : 306.687, + "99.99536194611372" : 306.695, + "99.99539723851694" : 306.703, + "99.99544886024105" : 306.711, + "99.99546571631424" : 306.713, + "99.99549100042401" : 306.717, + "99.99551470427691" : 307.125, + "99.99554525590956" : 307.187, + "99.99557528078992" : 307.243, + "99.99560635917484" : 307.325, + "99.9956363840552" : 307.423, + "99.99566904269699" : 307.865, + "99.99569801407277" : 307.883, + "99.99572803895312" : 307.903, + "99.99575964409034" : 307.927, + "99.9957891422184" : 307.967, + "99.99581916709876" : 308.039, + "99.99584971873139" : 308.105, + "99.99588027036404" : 308.167, + "99.99591082199667" : 308.231, + "99.99594137362932" : 308.293, + "99.99597192526197" : 308.365, + "99.9960024768946" : 308.463, + "99.99603355527954" : 308.553, + "99.99606358015988" : 316.433, + "99.99609465854482" : 316.835, + "99.99612468342517" : 316.909, + "99.99615523505781" : 316.993, + "99.99618631344273" : 317.079, + "99.99621686507538" : 317.159, + "99.99624636320344" : 317.237, + "99.99627691483609" : 317.323, + "99.99630746646872" : 317.421, + "99.99633801810137" : 317.505, + "99.996368569734" : 317.589, + "99.99639912136665" : 317.671, + "99.9964296729993" : 317.785, + "99.99646022463193" : 317.915, + "99.99649130301687" : 318.035, + "99.99652132789721" : 318.165, + "99.99655187952986" : 318.283, + "99.9965824311625" : 318.403, + "99.99661298279514" : 320.209, + "99.99664458793235" : 320.247, + "99.99667408606042" : 320.287, + "99.99670463769306" : 320.325, + "99.99673466257342" : 320.391, + "99.99676521420605" : 320.477, + "99.9967957658387" : 320.559, + "99.99682631747133" : 320.645, + "99.99685686910398" : 320.731, + "99.99688742073663" : 320.813, + "99.99691797236926" : 320.897, + "99.99694852400191" : 320.977, + "99.99696379981822" : 321.029, + "99.99697960238683" : 321.065, + "99.99699435145087" : 321.103, + "99.99700962726719" : 321.147, + "99.99702648334036" : 321.179, + "99.9970412324044" : 321.199, + "99.9970575617253" : 321.215, + "99.99707125728476" : 321.231, + "99.99708758660564" : 321.251, + "99.9971012821651" : 321.269, + "99.997117611486" : 321.289, + "99.99713236055004" : 321.307, + "99.99714763636635" : 321.323, + "99.99716343893496" : 321.343, + "99.99717766124671" : 321.361, + "99.99719346381532" : 321.381, + "99.99720821287936" : 321.397, + "99.99722296194338" : 321.413, + "99.9972382377597" : 321.435, + "99.99725509383289" : 321.455, + "99.99726931614464" : 321.471, + "99.99728459196095" : 321.801, + "99.99729934102498" : 321.827, + "99.9973151435936" : 321.865, + "99.99733041940992" : 321.911, + "99.99734569522623" : 321.951, + "99.99736044429027" : 321.967, + "99.99737677361117" : 321.985, + "99.99739204942749" : 322.005, + "99.99740627173924" : 322.019, + "99.99742207430783" : 322.037, + "99.99743682337187" : 322.051, + "99.99745367944506" : 322.067, + "99.99746895526137" : 322.083, + "99.99748528458227" : 322.097, + "99.99749845338944" : 322.105, + "99.99751583621492" : 322.115, + "99.9975284782698" : 322.123, + "99.9975442808384" : 322.133, + "99.9975606101593" : 322.143, + "99.9975769394802" : 322.153, + "99.99759063503966" : 322.161, + "99.99760696436054" : 322.171, + "99.99762276692915" : 322.181, + "99.99763593573633" : 322.189, + "99.99765384531408" : 322.199, + "99.99766648736897" : 322.207, + "99.99768228993757" : 322.219, + "99.99769809250618" : 322.229, + "99.9977138950748" : 322.239, + "99.99772653712968" : 322.247, + "99.99774391995514" : 322.257, + "99.99776024927604" : 322.267, + "99.99777289133092" : 322.275, + "99.99778764039496" : 322.283, + "99.99780396971585" : 322.293, + "99.99781924553217" : 322.303, + "99.9978345213485" : 322.313, + "99.9978503239171" : 322.323, + "99.99786665323799" : 322.333, + "99.99788140230203" : 322.343, + "99.99789667811835" : 322.357, + "99.99791195393468" : 322.365, + "99.9979267029987" : 322.375, + "99.9979430323196" : 322.385, + "99.99795567437448" : 322.397, + "99.99797147694309" : 322.411, + "99.99798622600713" : 322.425, + "99.99800255532801" : 322.441, + "99.99801730439205" : 322.455, + "99.99803205345609" : 322.469, + "99.99804838277699" : 322.483, + "99.9980636585933" : 322.497, + "99.99807893440962" : 322.511, + "99.99809473697823" : 322.525, + "99.99810895928998" : 322.537, + "99.99812528861086" : 322.551, + "99.99814056442719" : 322.563, + "99.99815373323436" : 322.573, + "99.99816953580297" : 322.589, + "99.99818586512387" : 322.603, + "99.9982006141879" : 322.615, + "99.99821483649964" : 322.627, + "99.99823011231597" : 322.639, + "99.99824538813229" : 322.683, + "99.99826066394861" : 322.721, + "99.99827593976492" : 322.763, + "99.99829121558125" : 322.805, + "99.99830701814986" : 322.849, + "99.99832229396618" : 322.899, + "99.9983370430302" : 322.939, + "99.99835231884653" : 323.021, + "99.99836759466285" : 323.405, + "99.99838287047918" : 323.447, + "99.99839814629549" : 323.499, + "99.99841342211181" : 323.543, + "99.99842869792813" : 323.587, + "99.99844397374446" : 323.629, + "99.99845924956077" : 323.677, + "99.99847505212938" : 323.781, + "99.99848189990911" : 323.813, + "99.99849085469799" : 323.843, + "99.99849717572543" : 323.851, + "99.99850613051431" : 323.861, + "99.99851245154176" : 323.869, + "99.99852087957834" : 323.879, + "99.99852930761493" : 323.889, + "99.99853562864237" : 323.895, + "99.99854300317439" : 323.905, + "99.9985509044587" : 323.915, + "99.99855933249529" : 323.925, + "99.99856618027502" : 323.933, + "99.99857460831161" : 323.943, + "99.99858145609134" : 323.951, + "99.99858988412792" : 323.961, + "99.99859620515537" : 323.969, + "99.99860515994425" : 323.979, + "99.99861200772398" : 323.987, + "99.998619382256" : 323.995, + "99.99862781029259" : 324.005, + "99.99863623832918" : 324.031, + "99.99864308610891" : 324.035, + "99.99865046064093" : 324.041, + "99.99865836192522" : 324.051, + "99.99866573645724" : 324.057, + "99.99867363774155" : 324.065, + "99.99868153902585" : 324.075, + "99.99868944031016" : 324.085, + "99.9986957613376" : 324.093, + "99.9987036626219" : 324.103, + "99.99871103715392" : 324.113, + "99.9987194651905" : 324.123, + "99.99872683972252" : 324.141, + "99.99873368750225" : 324.159, + "99.99874158878656" : 324.181, + "99.99874896331858" : 324.203, + "99.99875686460288" : 324.223, + "99.99876476588719" : 324.245, + "99.9987721404192" : 324.267, + "99.99877951495122" : 324.287, + "99.99878741623552" : 324.309, + "99.99879479076753" : 324.327, + "99.99880269205184" : 324.349, + "99.99881059333615" : 324.371, + "99.99881796786816" : 324.393, + "99.99882534240018" : 324.413, + "99.9988327169322" : 324.433, + "99.9988406182165" : 324.453, + "99.99884799274852" : 324.473, + "99.99885589403281" : 324.493, + "99.99886326856483" : 324.515, + "99.99887116984914" : 324.537, + "99.99887854438116" : 324.565, + "99.99888644566546" : 324.599, + "99.99889382019748" : 324.653, + "99.99890172148179" : 324.689, + "99.9989090960138" : 325.187, + "99.99891752405038" : 325.619, + "99.99892437183011" : 325.639, + "99.99893227311442" : 325.667, + "99.99894017439873" : 325.699, + "99.99894754893074" : 325.721, + "99.99895492346276" : 325.737, + "99.99896282474707" : 325.757, + "99.99897019927909" : 325.783, + "99.99897810056339" : 325.799, + "99.9989854750954" : 325.813, + "99.99899495663657" : 325.851, + "99.99900127766401" : 325.861, + "99.99900917894831" : 325.875, + "99.99901602672804" : 325.903, + "99.99902392801235" : 325.943, + "99.99903130254437" : 326.017, + "99.99903920382867" : 326.051, + "99.99904657836069" : 326.081, + "99.99905447964498" : 326.095, + "99.99906343443386" : 326.105, + "99.9990697554613" : 326.113, + "99.9990781834979" : 326.121, + "99.99908503127763" : 326.129, + "99.99909345931422" : 326.139, + "99.99910030709395" : 326.147, + "99.99910873513053" : 326.157, + "99.99911505615799" : 326.165, + "99.99912348419457" : 326.175, + "99.9991303319743" : 326.183, + "99.9991387600109" : 326.193, + "99.9991466612952" : 326.203, + "99.99915350907493" : 326.211, + "99.99916193711152" : 326.221, + "99.99916983839582" : 326.231, + "99.99917615942327" : 326.239, + "99.99918458745985" : 326.249, + "99.99919248874416" : 326.259, + "99.99919933652389" : 326.267, + "99.99920829131277" : 326.275, + "99.9992151390925" : 326.283, + "99.9992230403768" : 326.293, + "99.99922988815653" : 326.301, + "99.99923831619311" : 326.311, + "99.99924200345913" : 326.315, + "99.99924516397284" : 326.319, + "99.99924990474344" : 326.325, + "99.99925306525715" : 326.329, + "99.99925622577088" : 326.333, + "99.99926043978917" : 326.339, + "99.99926465380747" : 326.347, + "99.99926781432119" : 326.351, + "99.99927255509176" : 326.357, + "99.99927624235778" : 326.361, + "99.9992794028715" : 326.365, + "99.99928467039437" : 326.371, + "99.99928783090809" : 326.375, + "99.99929099142182" : 326.379, + "99.9992952054401" : 326.395, + "99.99929836595383" : 326.403, + "99.99930205321984" : 326.413, + "99.99930574048585" : 326.423, + "99.99930995450414" : 326.435, + "99.99931416852243" : 326.447, + "99.99931732903616" : 326.455, + "99.99932101630216" : 326.465, + "99.99932523032047" : 326.477, + "99.99932891758647" : 326.487, + "99.99933313160477" : 326.495, + "99.99933681887077" : 326.501, + "99.99934050613679" : 326.511, + "99.99934472015508" : 326.521, + "99.9993478806688" : 326.529, + "99.99935156793481" : 326.539, + "99.9993557819531" : 326.551, + "99.99935946921912" : 326.561, + "99.99936315648512" : 326.571, + "99.99936684375113" : 326.581, + "99.99937158452171" : 326.593, + "99.99937474503544" : 326.601, + "99.99937843230144" : 326.611, + "99.99938211956744" : 326.623, + "99.99938633358575" : 326.635, + "99.99939002085175" : 326.647, + "99.99939370811776" : 326.655, + "99.99939739538377" : 326.667, + "99.99940160940207" : 326.679, + "99.99940529666807" : 326.689, + "99.99940951068636" : 326.699, + "99.99941267120009" : 326.709, + "99.99941635846609" : 326.723, + "99.9994205724844" : 326.751, + "99.9994242597504" : 326.779, + "99.99942794701641" : 326.803, + "99.99943163428242" : 326.829, + "99.99943584830072" : 326.847, + "99.99943953556672" : 326.871, + "99.99944322283272" : 326.885, + "99.99944743685103" : 327.351, + "99.99945112411703" : 327.359, + "99.99945481138305" : 327.367, + "99.99945849864905" : 327.377, + "99.99946218591506" : 327.387, + "99.99946639993335" : 327.403, + "99.99947008719937" : 327.417, + "99.99947377446537" : 327.427, + "99.99947798848366" : 327.439, + "99.99948220250197" : 327.449, + "99.99948536301568" : 327.461, + "99.9994890502817" : 327.475, + "99.9994927375477" : 327.489, + "99.999496951566" : 327.497, + "99.999500638832" : 327.505, + "99.99950432609802" : 327.519, + "99.99950801336402" : 327.533, + "99.9995127541346" : 327.547, + "99.99951644140062" : 327.557, + "99.99951960191433" : 327.565, + "99.99952328918035" : 327.581, + "99.99952802995092" : 327.591, + "99.99953119046465" : 327.599, + "99.99953540448294" : 327.609, + "99.99953856499667" : 327.613, + "99.99954225226267" : 327.621, + "99.99954646628096" : 327.629, + "99.99955120705155" : 327.645, + "99.99955436756527" : 327.651, + "99.999557528079" : 327.667, + "99.99956226884957" : 327.673, + "99.99956595611559" : 327.681, + "99.9995691166293" : 327.689, + "99.99957385739988" : 327.695, + "99.9995775446659" : 327.703, + "99.99958070517961" : 327.719, + "99.99958439244563" : 327.745, + "99.99958807971163" : 327.767, + "99.99959229372993" : 327.781, + "99.99959598099593" : 327.807, + "99.99959966826195" : 327.833, + "99.99960335552795" : 327.855, + "99.99960756954624" : 327.879, + "99.99961178356455" : 327.893, + "99.99961547083055" : 327.903, + "99.99961863134428" : 327.921, + "99.99962073835343" : 327.925, + "99.99962284536257" : 327.935, + "99.99962442561943" : 327.939, + "99.99962653262858" : 327.945, + "99.99962863963772" : 327.947, + "99.99963127339916" : 327.951, + "99.99963338040831" : 327.953, + "99.99963548741745" : 327.955, + "99.99963706767431" : 327.957, + "99.99963812117889" : 327.959, + "99.99964022818804" : 327.961, + "99.99964233519718" : 327.963, + "99.99964391545404" : 327.965, + "99.9996460224632" : 327.967, + "99.99964760272006" : 327.969, + "99.99964918297691" : 327.971, + "99.99965287024293" : 327.975, + "99.99965603075664" : 327.979, + "99.9996576110135" : 327.981, + "99.99966024477494" : 327.983, + "99.99966340528866" : 327.985, + "99.99966551229781" : 327.987, + "99.99966709255467" : 327.989, + "99.99966867281152" : 327.999, + "99.99967077982068" : 328.001, + "99.99967236007754" : 328.003, + "99.99967446708669" : 328.005, + "99.99967604734354" : 328.007, + "99.99967920785727" : 328.011, + "99.99968131486642" : 328.013, + "99.99968289512327" : 328.015, + "99.99968447538014" : 328.017, + "99.99968658238929" : 328.019, + "99.99968816264615" : 328.021, + "99.999689742903" : 328.023, + "99.99969132315987" : 328.025, + "99.99969501042588" : 328.029, + "99.99969764418731" : 328.033, + "99.99969922444417" : 328.035, + "99.99970080470104" : 328.037, + "99.99970396521475" : 328.041, + "99.99970554547161" : 328.043, + "99.99970765248077" : 328.045, + "99.99970870598534" : 328.047, + "99.99971081299448" : 328.049, + "99.99971239325134" : 328.051, + "99.99971397350821" : 328.053, + "99.99971766077421" : 328.057, + "99.99971924103107" : 328.059, + "99.99972082128794" : 328.061, + "99.99972187479251" : 328.063, + "99.99972398180165" : 328.065, + "99.99972556205852" : 328.067, + "99.99972872257224" : 328.071, + "99.9997303028291" : 328.073, + "99.99973240983824" : 328.075, + "99.99973399009511" : 328.077, + "99.99973557035197" : 328.079, + "99.99973715060882" : 328.081, + "99.99973873086569" : 328.083, + "99.9997424181317" : 328.087, + "99.99974399838855" : 328.089, + "99.99974768565457" : 328.091, + "99.99975031941601" : 328.093, + "99.99975347992972" : 328.097, + "99.99975506018659" : 328.099, + "99.99975664044345" : 328.101, + "99.9997582207003" : 328.103, + "99.99975980095716" : 328.105, + "99.99976348822318" : 328.109, + "99.99976506848003" : 328.111, + "99.9997666487369" : 328.113, + "99.99976822899376" : 328.115, + "99.99976980925062" : 328.117, + "99.99977138950747" : 328.119, + "99.99977349651662" : 328.121, + "99.99977507677349" : 328.123, + "99.9997782372872" : 328.127, + "99.99977981754407" : 328.129, + "99.99978139780093" : 328.131, + "99.9997829780578" : 328.133, + "99.99978455831466" : 328.135, + "99.9997866653238" : 328.137, + "99.99978982583752" : 328.141, + "99.9997908793421" : 328.143, + "99.99979245959895" : 328.145, + "99.9997945666081" : 328.147, + "99.99979614686497" : 328.149, + "99.99979878062639" : 328.151, + "99.99980036088326" : 328.153, + "99.99980194114012" : 328.155, + "99.99980510165385" : 328.159, + "99.9998066819107" : 328.161, + "99.99980826216756" : 328.163, + "99.99980984242443" : 328.165, + "99.99981142268129" : 328.167, + "99.99981352969043" : 328.169, + "99.99981510994729" : 328.171, + "99.99981669020416" : 328.173, + "99.99981827046102" : 328.175, + "99.99981985071787" : 328.177, + "99.99982143097473" : 328.179, + "99.9998230112316" : 328.181, + "99.99982459148846" : 328.183, + "99.9998266984976" : 328.185, + "99.99982775200218" : 328.187, + "99.99982985901133" : 328.189, + "99.9998309125159" : 328.191, + "99.99983301952504" : 328.193, + "99.9998345997819" : 328.195, + "99.99983618003877" : 328.197, + "99.99983776029563" : 328.199, + "99.9998393405525" : 328.201, + "99.99984092080935" : 328.203, + "99.99984250106621" : 328.205, + "99.99984408132308" : 328.207, + "99.99984566157994" : 328.209, + "99.9998467150845" : 328.211, + "99.99984882209365" : 328.213, + "99.99985040235052" : 328.215, + "99.99985198260738" : 328.217, + "99.99985356286423" : 328.219, + "99.9998551431211" : 328.221, + "99.99985672337796" : 328.223, + "99.99985830363482" : 328.225, + "99.99985988389169" : 328.227, + "99.99986093739625" : 328.231, + "99.99986199090083" : 328.233, + "99.99986357115769" : 328.237, + "99.99986409790998" : 328.239, + "99.99986515141455" : 328.241, + "99.99986567816684" : 328.243, + "99.99986673167142" : 328.247, + "99.99986831192827" : 328.251, + "99.99986883868056" : 328.253, + "99.99986989218513" : 328.255, + "99.99987041893742" : 328.257, + "99.999871472442" : 328.259, + "99.99987252594657" : 328.263, + "99.99987357945115" : 328.265, + "99.99987463295571" : 328.269, + "99.999875159708" : 328.271, + "99.99987621321257" : 328.273, + "99.99987779346944" : 328.277, + "99.99987832022173" : 328.279, + "99.99987990047859" : 328.283, + "99.99988253424002" : 328.287, + "99.9998830609923" : 328.289, + "99.99988411449688" : 328.293, + "99.99988464124917" : 328.299, + "99.99988569475374" : 328.303, + "99.99988674825832" : 328.305, + "99.99988780176288" : 328.309, + "99.99988938201975" : 328.313, + "99.99989096227661" : 328.317, + "99.9998914890289" : 328.319, + "99.99989306928576" : 328.323, + "99.99989359603805" : 328.325, + "99.99989464954261" : 328.327, + "99.9998951762949" : 328.329, + "99.99989675655176" : 328.333, + "99.99989728330405" : 328.335, + "99.99989833680863" : 328.337, + "99.99989991706549" : 328.341, + "99.99990097057005" : 328.345, + "99.99990202407463" : 328.347, + "99.9999036043315" : 328.351, + "99.99990413108378" : 328.353, + "99.99990518458836" : 328.355, + "99.99990571134065" : 328.357, + "99.99990623809293" : 328.359, + "99.99990676484522" : 328.361, + "99.99990781834978" : 328.363, + "99.99990887185436" : 328.365, + "99.99990939860665" : 328.367, + "99.99990992535893" : 328.369, + "99.99991097886351" : 328.371, + "99.9999115056158" : 328.373, + "99.99991203236809" : 328.375, + "99.99991255912038" : 328.377, + "99.99991361262495" : 328.379, + "99.99991466612951" : 328.381, + "99.9999151928818" : 328.383, + "99.99991571963409" : 328.385, + "99.99991624638638" : 328.387, + "99.99991729989095" : 328.389, + "99.99991835339553" : 328.391, + "99.99991888014782" : 328.393, + "99.9999199336524" : 328.395, + "99.99992046040468" : 328.397, + "99.99992098715697" : 328.399, + "99.99992204066153" : 328.401, + "99.99992256741382" : 328.403, + "99.9999236209184" : 328.405, + "99.99992414767068" : 328.407, + "99.99992467442297" : 328.409, + "99.99992520117526" : 328.411, + "99.99992625467983" : 328.413, + "99.99992730818441" : 328.415, + "99.99992836168897" : 328.417, + "99.99992888844126" : 328.419, + "99.99992941519355" : 328.421, + "99.99992994194584" : 328.423, + "99.99993099545041" : 328.425, + "99.99993204895499" : 328.427, + "99.99993310245956" : 328.429, + "99.99993362921185" : 328.431, + "99.99993468271643" : 328.433, + "99.9999352094687" : 328.435, + "99.99993573622099" : 328.437, + "99.99993678972557" : 328.439, + "99.99993731647785" : 328.441, + "99.99993836998243" : 328.443, + "99.99993889673472" : 328.445, + "99.999939423487" : 328.447, + "99.9999399502393" : 328.449, + "99.99994100374387" : 328.451, + "99.99994153049616" : 328.453, + "99.99994311075301" : 328.455, + "99.9999436375053" : 328.457, + "99.99994469100987" : 328.459, + "99.99994521776216" : 328.461, + "99.99994574451445" : 328.463, + "99.99994679801902" : 328.465, + "99.99994732477131" : 328.467, + "99.99994837827589" : 328.469, + "99.99994890502816" : 328.471, + "99.99994943178045" : 328.473, + "99.99995048528503" : 328.475, + "99.9999515387896" : 328.477, + "99.99995206554189" : 328.479, + "99.99995311904647" : 328.481, + "99.99995364579875" : 328.483, + "99.99995469930333" : 328.485, + "99.99995522605562" : 328.487, + "99.99995575280789" : 328.489, + "99.99995627956018" : 328.497, + "99.99995680631247" : 328.499, + "99.99995733306476" : 328.501, + "99.99995785981704" : 328.503, + "99.99995838656933" : 328.505, + "99.99995891332162" : 328.507, + "99.99995944007391" : 328.509, + "99.9999599668262" : 328.511, + "99.99996102033077" : 328.513, + "99.99996154708306" : 328.517, + "99.99996260058762" : 328.519, + "99.99996312733991" : 328.523, + "99.9999636540922" : 328.525, + "99.99996418084449" : 328.529, + "99.99996470759677" : 328.533, + "99.99996523434906" : 328.537, + "99.99996576110135" : 328.541, + "99.99996628785364" : 328.545, + "99.99996681460593" : 328.547, + "99.99996734135821" : 328.551, + "99.9999678681105" : 328.553, + "99.99996839486279" : 328.559, + "99.99996892161508" : 328.561, + "99.99996944836735" : 328.565, + "99.99996997511964" : 328.569, + "99.99997050187193" : 328.571, + "99.99997102862422" : 328.575, + "99.9999715553765" : 328.579, + "99.99997208212879" : 328.581, + "99.99997260888108" : 328.585, + "99.99997313563337" : 328.589, + "99.99997366238566" : 328.593, + "99.99997418913794" : 328.597, + "99.99997471589023" : 328.601, + "99.99997524264252" : 328.603, + "99.99997576939481" : 328.605, + "99.99997629614708" : 328.607, + "99.99997682289937" : 328.609, + "99.99997734965166" : 328.611, + "99.99997787640395" : 328.613, + "99.99997840315623" : 328.617, + "99.99997892990852" : 328.621, + "99.99997945666081" : 328.623, + "99.9999799834131" : 328.625, + "99.99998051016539" : 328.627, + "99.99998103691767" : 328.631, + "99.99998156366996" : 328.633, + "99.99998209042225" : 328.635, + "99.99998261717454" : 328.637, + "99.99998314392681" : 328.639, + "99.9999836706791" : 328.641, + "99.99998419743139" : 328.645, + "99.99998525093596" : 328.647, + "99.99998577768825" : 328.649, + "99.99998630444054" : 328.653, + "99.99998683119283" : 328.805, + "99.99998735794512" : 329.119, + "99.9999878846974" : 329.817, + "99.99998841144969" : 330.845, + "99.99998893820198" : 332.673, + "99.99998946495427" : 332.915, + "99.99998999170654" : 333.157, + "99.99999051845883" : 333.455, + "99.99999104521112" : 333.741, + "99.9999915719634" : 334.229, + "99.9999920987157" : 334.783, + "99.99999262546798" : 335.073, + "99.99999315222027" : 335.147, + "99.99999367897256" : 335.679, + "99.99999420572485" : 336.287, + "99.99999473247713" : 336.351, + "99.99999525922942" : 337.809, + "99.99999578598171" : 341.407, + "99.999996312734" : 342.159, + "99.99999683948627" : 346.733, + "99.99999736623856" : 351.311, + "99.99999789299085" : 352.023, + "99.99999841974314" : 352.987, + "99.99999894649542" : 354.667, + "99.99999947324771" : 359.375, + "100.0" : 366.425 + }, + "endToEndLatencyAvg" : [ 380.73018502290495, 379.00582981589145, 385.81853196346236, 392.27133173243294, 385.95514105890084, 386.24162846650165, 385.06289029284886, 382.31365127251576, 389.413096970244, 381.4145328065002, 387.9753685374881, 403.56846528907107, 404.8997146888463, 410.9797350437891, 421.8891259821688, 428.39240549129573, 419.35410916277317, 408.6723404957407, 417.20156009834193, 421.3629426129418, 424.7838404719567, 411.92928870408457, 407.6158052507864, 416.2175192104374, 412.7631016720905, 421.21896591203074, 412.6020272090837, 411.4903204718571, 419.3394217063764, 410.7765801950656, 424.1359381816468, 411.34523966663426, 407.64208581505676, 420.4295492234496, 416.95998060892555, 417.12129485120687, 407.36790304963125, 413.8616972700719, 422.7004850534725, 410.74257991909644, 413.2308238981425, 416.821128920724, 413.43090081895923, 425.48788587302226, 412.4008144569016, 427.14051222602626, 413.3049837746824, 425.642488076391, 416.3283502916243, 421.0380743330862, 430.7490362722478, 420.72271611352227, 417.43788951565455, 420.78920872529267, 419.8003477252836, 426.5459504108326, 431.5649750040538, 410.6976728026019, 406.68915568530934, 410.4328803166926 ], + "endToEndLatency50pct" : [ 352.001, 361.001, 356.001, 367.001, 361.001, 358.001, 365.001, 348.001, 360.001, 359.001, 355.001, 372.001, 375.001, 382.001, 387.001, 392.001, 387.001, 391.001, 393.001, 396.001, 389.001, 392.001, 390.001, 386.001, 392.001, 385.001, 387.001, 384.001, 388.001, 387.001, 396.001, 385.001, 387.001, 384.001, 393.001, 390.001, 383.001, 393.001, 394.001, 384.001, 384.001, 389.001, 385.001, 394.001, 382.001, 402.001, 386.001, 396.001, 388.001, 394.001, 397.001, 389.001, 393.001, 398.001, 393.001, 399.001, 393.001, 388.001, 379.001, 387.001 ], + "endToEndLatency75pct" : [ 467.001, 453.001, 465.001, 469.001, 461.001, 466.001, 464.001, 471.001, 472.001, 457.001, 466.001, 491.001, 498.001, 496.001, 513.001, 523.001, 514.001, 493.001, 516.001, 513.001, 521.001, 501.001, 494.001, 505.001, 499.001, 515.001, 501.001, 500.001, 513.001, 499.001, 521.001, 498.001, 496.001, 518.001, 506.001, 504.001, 498.001, 501.001, 518.001, 501.001, 506.001, 509.001, 506.001, 528.003, 504.001, 520.001, 502.001, 522.001, 511.001, 518.001, 531.003, 512.001, 509.001, 511.001, 522.001, 518.001, 529.003, 500.001, 495.001, 500.001 ], + "endToEndLatency95pct" : [ 643.003, 613.003, 665.003, 646.003, 646.003, 659.003, 621.003, 676.003, 662.003, 637.003, 682.003, 696.003, 680.003, 705.003, 727.003, 739.003, 717.003, 653.003, 691.003, 694.003, 743.003, 669.003, 658.003, 700.003, 678.003, 728.003, 685.003, 690.003, 715.003, 671.003, 708.003, 694.003, 667.003, 729.003, 674.003, 694.003, 685.003, 671.003, 715.003, 677.003, 694.003, 697.003, 692.003, 738.003, 698.003, 696.003, 691.003, 723.003, 709.003, 698.003, 741.003, 717.003, 698.003, 687.003, 692.003, 714.003, 769.003, 676.003, 682.003, 679.003 ], + "endToEndLatency99pct" : [ 748.003, 711.003, 801.003, 741.003, 752.003, 765.003, 718.003, 777.003, 773.003, 729.003, 774.003, 815.003, 781.003, 847.003, 855.003, 863.003, 836.003, 742.003, 806.003, 801.003, 877.003, 769.003, 767.003, 809.003, 771.003, 843.003, 771.003, 793.003, 831.003, 783.003, 809.003, 798.003, 756.003, 860.003, 770.003, 818.003, 801.003, 774.003, 827.003, 792.003, 801.003, 811.003, 802.003, 868.003, 795.003, 850.003, 809.003, 823.003, 819.003, 808.003, 853.003, 823.003, 817.003, 781.003, 791.003, 819.003, 923.003, 776.003, 798.003, 788.003 ], + "endToEndLatency999pct" : [ 833.003, 799.003, 919.003, 833.003, 837.003, 872.003, 789.003, 841.003, 854.003, 831.003, 832.003, 905.003, 862.003, 959.003, 955.003, 1004.003, 909.003, 843.003, 943.003, 920.003, 971.003, 867.003, 862.003, 905.003, 850.003, 906.003, 837.003, 944.003, 916.003, 882.003, 874.003, 878.003, 815.003, 992.003, 889.003, 930.003, 930.003, 849.003, 901.003, 866.003, 878.003, 915.003, 945.003, 954.003, 897.003, 964.003, 868.003, 912.003, 930.003, 889.003, 922.003, 991.003, 965.003, 857.003, 892.003, 918.003, 1052.007, 866.003, 928.003, 877.003 ], + "endToEndLatency9999pct" : [ 893.003, 828.003, 956.003, 874.003, 866.003, 913.003, 806.003, 878.003, 888.003, 926.003, 877.003, 959.003, 887.003, 1034.003, 1029.003, 1074.007, 943.003, 910.003, 1020.003, 963.003, 1031.003, 921.003, 893.003, 948.003, 894.003, 934.003, 875.003, 1001.003, 949.003, 935.003, 901.003, 908.003, 844.003, 1021.003, 927.003, 970.003, 969.003, 873.003, 937.003, 917.003, 927.003, 951.003, 987.003, 1019.003, 938.003, 997.003, 892.003, 933.003, 1005.003, 932.003, 942.003, 1032.003, 1038.003, 892.003, 969.003, 964.003, 1100.007, 914.003, 971.003, 960.003 ], + "endToEndLatencyMax" : [ 910.003, 832.003, 960.003, 883.003, 874.003, 918.003, 812.003, 884.003, 893.003, 935.003, 881.003, 966.003, 903.003, 1040.003, 1037.003, 1082.007, 951.003, 929.003, 1030.003, 979.003, 1045.003, 927.003, 905.003, 955.003, 906.003, 938.003, 888.003, 1009.003, 957.003, 941.003, 912.003, 914.003, 852.003, 1032.003, 928.003, 974.003, 982.003, 884.003, 946.003, 936.003, 940.003, 964.003, 992.003, 1030.003, 950.003, 999.003, 903.003, 943.003, 1013.003, 943.003, 960.003, 1048.003, 1040.003, 899.003, 986.003, 967.003, 1108.007, 914.003, 978.003, 967.003 ], + "aggregatedEndToEndLatencyQuantiles" : { + "8.429539136653766E-6" : 6.0, + "0.5013552696916195" : 97.0, + "1.0005130638995525" : 148.0, + "1.5237519440361211" : 168.0, + "2.0372257299290726" : 180.0, + "2.5029983343862883" : 188.0, + "3.072633397930999" : 196.0, + "3.5742083624863676" : 202.0, + "4.049480530704396" : 207.0, + "4.600500010758199" : 212.0, + "5.090215667440688" : 216.0, + "5.633756565741691" : 220.0, + "6.075532379661638" : 223.0, + "6.554092594989157" : 226.0, + "7.063707232496109" : 229.0, + "7.5904870459162685" : 232.0, + "8.13677755451441" : 235.0, + "8.518181009137642" : 237.0, + "9.093802099161769" : 240.0, + "9.701634565611835" : 243.0, + "10.114953835945025" : 245.0, + "10.536260621456393" : 247.0, + "11.189705851021088" : 250.0, + "11.636084193309648" : 252.0, + "12.083532560222366" : 254.0, + "12.539861973461745" : 256.0, + "13.013220636295754" : 258.0, + "13.708471638362488" : 261.0, + "14.185462378872002" : 263.001, + "14.664901373654516" : 265.001, + "15.146211726125369" : 267.001, + "15.634080260044538" : 269.001, + "16.13205949931193" : 271.001, + "16.626963010486833" : 273.001, + "17.120042053284845" : 275.001, + "17.618885847159937" : 277.001, + "18.128267091802044" : 279.001, + "18.638624582445413" : 281.001, + "19.15087608516355" : 283.001, + "19.67344955855452" : 285.001, + "20.200828396099578" : 287.001, + "20.738284747682503" : 289.001, + "21.00137329836845" : 290.001, + "21.53229096181231" : 292.001, + "22.082734072127646" : 294.001, + "22.633983257122924" : 296.001, + "23.184048618715696" : 298.001, + "23.739940899236682" : 300.001, + "24.02002498136071" : 301.001, + "24.584491156876062" : 303.001, + "25.160031639432194" : 305.001, + "25.74144013491983" : 307.001, + "26.04010344814724" : 308.001, + "26.632051501786673" : 310.001, + "27.224332522222003" : 312.001, + "27.527195326478054" : 313.001, + "28.13652877774064" : 315.001, + "28.73764395519118" : 317.001, + "29.048892570349615" : 318.001, + "29.667940538620996" : 320.001, + "30.28403711450216" : 322.001, + "30.600094254891857" : 323.001, + "31.228276682510195" : 325.001, + "31.54328013050781" : 326.001, + "32.18759985711088" : 328.001, + "32.81915989569204" : 330.001, + "33.147285501894444" : 331.001, + "33.79490223199234" : 333.001, + "34.119354666515946" : 334.001, + "34.76839651557413" : 336.001, + "35.09183161009319" : 337.001, + "35.74556818560429" : 339.001, + "36.07132561815549" : 340.001, + "36.73957838690611" : 342.001, + "37.078820974691176" : 343.001, + "37.74905468513891" : 345.001, + "38.0768088647731" : 346.001, + "38.74205492228292" : 348.001, + "39.06238689270729" : 349.001, + "39.72772356776282" : 351.001, + "40.06592826854168" : 352.001, + "40.74535649880272" : 354.001, + "41.080930129678556" : 355.001, + "41.73877610551878" : 357.001, + "42.07335715816127" : 358.001, + "42.73290326667612" : 360.001, + "43.05885194439649" : 361.001, + "43.70253260656376" : 363.001, + "44.02502253900711" : 364.001, + "44.68396856970467" : 366.001, + "45.00693477110924" : 367.001, + "45.64416051368263" : 369.001, + "46.28716628587277" : 371.001, + "46.604261840114866" : 372.001, + "47.23467914929681" : 374.001, + "47.55127261911408" : 375.001, + "48.17839134426261" : 377.001, + "48.80381941996805" : 379.001, + "49.11298277788255" : 380.001, + "49.730008710453525" : 382.001, + "50.03443308683464" : 383.001, + "50.33793864344986" : 384.001, + "50.64163966000381" : 385.001, + "50.945366492021364" : 386.001, + "51.2361887533131" : 387.001, + "51.532859007380885" : 388.001, + "51.82196006215015" : 389.001, + "52.112671158894514" : 390.001, + "52.40501231776943" : 391.001, + "52.691526030869944" : 392.001, + "52.980040705823015" : 393.001, + "53.26334908666681" : 394.001, + "53.548320194105315" : 395.001, + "53.83521323646697" : 396.001, + "54.115294684360016" : 397.001, + "54.393742909045336" : 398.001, + "54.674545082534564" : 399.001, + "54.95903201831891" : 400.001, + "55.23275706685672" : 401.001, + "55.501438089913634" : 402.001, + "55.770104888123264" : 403.001, + "56.02958032759676" : 404.001, + "56.28903258583763" : 405.001, + "56.540777611076614" : 406.001, + "56.800171916235925" : 407.001, + "57.0606209674797" : 408.001, + "57.32111427380395" : 409.001, + "57.57102692797311" : 410.001, + "57.82446997850194" : 411.001, + "58.07195545224593" : 412.001, + "58.32671193034149" : 413.001, + "58.57978144691733" : 414.001, + "58.82997965172474" : 415.001, + "59.076896131577016" : 416.001, + "59.320617816096494" : 417.001, + "59.567957880290386" : 418.001, + "59.80135706729084" : 419.001, + "60.043774807475124" : 420.001, + "60.27465777704328" : 421.001, + "60.51152782678326" : 422.001, + "60.96897415395824" : 424.001, + "61.19756481572743" : 425.001, + "61.431807483487745" : 426.001, + "61.65878178112748" : 427.001, + "61.88290584084663" : 428.001, + "62.10502314340507" : 429.001, + "62.3207803586849" : 430.001, + "62.546376953521985" : 431.001, + "62.76407559703423" : 432.001, + "63.198617285836335" : 434.001, + "63.41409527263227" : 435.001, + "63.62885780229397" : 436.001, + "63.83435416105971" : 437.001, + "64.04219182432065" : 438.001, + "64.2505336793912" : 439.001, + "64.65970614331536" : 441.001, + "64.86062895025326" : 442.001, + "65.0585534754895" : 443.001, + "65.26245296343504" : 444.001, + "65.66274174680156" : 446.001, + "65.8576980205693" : 447.001, + "66.04832994075994" : 448.001, + "66.44168648187895" : 450.001, + "66.63389894065772" : 451.001, + "66.82896532528042" : 452.001, + "67.01735288067593" : 453.001, + "67.39817522394493" : 455.001, + "67.58616184938525" : 456.001, + "67.77407893112769" : 457.001, + "68.1405541987861" : 459.001, + "68.32517164280274" : 460.001, + "68.50632138515705" : 461.001, + "68.86631749829655" : 463.001, + "69.04706894492664" : 464.001, + "69.40235926784311" : 466.001, + "69.5758981900494" : 467.001, + "69.92585735630813" : 469.001, + "70.10422008228537" : 470.001, + "70.27719738644667" : 471.001, + "70.62687521683672" : 473.001, + "70.79150358932938" : 474.001, + "71.12943169585532" : 476.001, + "71.29425078667093" : 477.001, + "71.62225943301782" : 479.001, + "71.79222844539973" : 480.001, + "72.1273574180861" : 482.001, + "72.29428125945492" : 483.001, + "72.62269557737275" : 485.001, + "72.78446159448231" : 486.001, + "73.11266517392173" : 488.001, + "73.27282114905618" : 489.001, + "73.58785041251741" : 491.001, + "73.90554393719201" : 493.001, + "74.05857431752501" : 494.001, + "74.36826610217415" : 496.001, + "74.52550598361353" : 497.001, + "74.83611764172095" : 499.001, + "75.14725087756244" : 501.001, + "75.29407606339848" : 502.001, + "75.44719495389242" : 503.001, + "75.59950408178305" : 504.001, + "75.75317668762904" : 505.001, + "75.90595523548033" : 506.001, + "76.04981954569462" : 507.001, + "76.19909930795802" : 508.001, + "76.34317330295833" : 509.001, + "76.49130559420675" : 510.001, + "76.64105003481505" : 511.001, + "76.78767291171181" : 512.001, + "76.93350130454493" : 513.001, + "77.07735191675813" : 514.001, + "77.22365921278346" : 515.001, + "77.36619797796851" : 516.001, + "77.50878890092697" : 517.001, + "77.65234816719375" : 518.001, + "77.79617296394335" : 519.001, + "77.93723497924088" : 520.001, + "78.08266138842644" : 521.001, + "78.22026465844698" : 522.001, + "78.36283556125" : 523.001, + "78.50420103995646" : 524.001, + "78.64215518954356" : 525.003, + "78.7809291118117" : 526.003, + "78.91720367572583" : 527.003, + "79.05556876534584" : 528.003, + "79.19364145532705" : 529.003, + "79.32790873523426" : 530.003, + "79.46534868293404" : 531.003, + "79.60285290586972" : 532.003, + "79.73809063647003" : 533.003, + "79.87634772261985" : 534.003, + "80.01241049436318" : 535.003, + "80.14996107976411" : 536.003, + "80.28497858865448" : 537.003, + "80.42042231611745" : 538.003, + "80.55194630788188" : 539.003, + "80.68558189920003" : 540.003, + "80.81738037783259" : 541.003, + "80.94540979877868" : 542.003, + "81.07524788271577" : 543.003, + "81.20597528303179" : 544.003, + "81.34036689864126" : 545.003, + "81.4665929250583" : 546.003, + "81.59954256262921" : 547.003, + "81.72511266553218" : 548.003, + "81.85958910337922" : 549.003, + "81.98802314220386" : 550.003, + "82.11387668836029" : 551.003, + "82.23725563793393" : 552.003, + "82.36162347781753" : 553.003, + "82.49424805128548" : 554.003, + "82.62107204813503" : 555.003, + "82.74538193493707" : 556.003, + "82.86807335022486" : 557.003, + "82.99110932292487" : 558.003, + "83.1138760772187" : 559.003, + "83.23462079581213" : 560.003, + "83.35905659885503" : 561.003, + "83.48202144731857" : 562.003, + "83.60487671177334" : 563.003, + "83.72599496431977" : 564.003, + "83.84658795120873" : 565.003, + "83.96727945833636" : 566.003, + "84.08744359242175" : 567.003, + "84.20517949238959" : 568.003, + "84.3256602610388" : 569.003, + "84.44631014731695" : 570.003, + "84.5671054431452" : 571.003, + "84.68567692117995" : 572.003, + "84.80372418724966" : 573.003, + "84.91749451589989" : 574.003, + "85.03201823461048" : 575.003, + "85.14650296670254" : 576.003, + "85.25889348516534" : 577.003, + "85.37520584671148" : 578.003, + "85.6009041228644" : 580.003, + "85.71295904030035" : 581.003, + "85.82493967242263" : 582.003, + "85.93640768319617" : 583.003, + "86.04996253175223" : 584.003, + "86.16213493588988" : 585.003, + "86.27693946362295" : 586.003, + "86.38629745538134" : 587.003, + "86.60616249045171" : 589.003, + "86.7150010118608" : 590.003, + "86.8265412005632" : 591.003, + "86.93364429060254" : 592.003, + "87.03935492614575" : 593.003, + "87.14547650172187" : 594.003, + "87.2507445864604" : 595.003, + "87.46381172506325" : 597.003, + "87.56843126213445" : 598.003, + "87.66932863083063" : 599.003, + "87.77266529741448" : 600.003, + "87.88116136879616" : 601.003, + "87.98527355298057" : 602.003, + "88.08925613300076" : 603.003, + "88.19234728925726" : 604.003, + "88.29302759732066" : 605.003, + "88.39732628505848" : 606.003, + "88.49867674148325" : 607.003, + "88.59844929355089" : 608.003, + "88.69903160822183" : 609.003, + "88.80015973555187" : 610.003, + "88.89709522085381" : 611.003, + "88.99580881206741" : 612.003, + "89.09172484998003" : 613.003, + "89.18929149702483" : 614.003, + "89.28635500595242" : 615.003, + "89.38160142234986" : 616.003, + "89.47855271303769" : 617.003, + "89.57506988245999" : 618.003, + "89.67262599258086" : 619.003, + "89.76714483438158" : 620.003, + "89.85622135497718" : 621.003, + "89.94760177398808" : 622.003, + "90.03870928666943" : 623.003, + "90.12493925726783" : 624.003, + "90.2139541368585" : 625.003, + "90.30076311142635" : 626.003, + "90.39079743840635" : 627.003, + "90.48145133651292" : 628.003, + "90.56827348223567" : 629.003, + "90.65461250999664" : 630.003, + "90.74073658450963" : 631.003, + "90.82913874197432" : 632.003, + "90.91406318769893" : 633.003, + "90.99682492978879" : 634.003, + "91.08342105849344" : 635.003, + "91.16978221379465" : 636.003, + "91.25941877189665" : 637.003, + "91.34102619397099" : 638.003, + "91.42285699883244" : 639.003, + "91.50885726448936" : 640.003, + "91.59304149130854" : 641.003, + "91.67756974869373" : 642.003, + "91.75925514400508" : 643.003, + "91.83778420375596" : 644.003, + "91.91787905040145" : 645.003, + "91.99677321456619" : 646.003, + "92.07492189136352" : 647.003, + "92.15128508640247" : 648.003, + "92.22545712811207" : 649.003, + "92.30223705849208" : 650.003, + "92.37870035430828" : 651.003, + "92.45711983005037" : 652.003, + "92.53164380501894" : 653.003, + "92.60526581929989" : 654.003, + "92.68115801383958" : 655.003, + "92.75601021398828" : 656.003, + "92.83212104969932" : 657.003, + "92.90425366978405" : 658.003, + "92.97597271560491" : 659.003, + "93.0503860528723" : 660.003, + "93.12368774466606" : 661.003, + "93.19552216980384" : 662.003, + "93.26431405815948" : 663.003, + "93.33273083202354" : 664.003, + "93.402718134398" : 665.003, + "93.47045633036156" : 666.003, + "93.53663558843104" : 667.003, + "93.60397232759321" : 668.003, + "93.66822543596997" : 669.003, + "93.73277515875509" : 670.003, + "93.7958771081935" : 671.003, + "93.86375755262999" : 672.003, + "93.930929915779" : 673.003, + "93.99578995097359" : 674.003, + "94.06032702945001" : 675.003, + "94.12499213155206" : 676.003, + "94.1895249952589" : 677.003, + "94.25311164319767" : 678.003, + "94.31637638811065" : 679.003, + "94.37563499454893" : 680.003, + "94.43638773679919" : 681.003, + "94.50001021027929" : 682.003, + "94.56220809164527" : 683.003, + "94.62352930094106" : 684.003, + "94.68308452178772" : 685.003, + "94.74081000579552" : 686.003, + "94.80198738607979" : 687.003, + "94.8578894554031" : 688.003, + "94.91624399376897" : 689.003, + "94.97462434759845" : 690.003, + "95.03085095417852" : 691.003, + "95.08713656753255" : 692.003, + "95.14275203252521" : 693.003, + "95.20040481175796" : 694.003, + "95.25640118655036" : 695.003, + "95.31051988150007" : 696.003, + "95.36381248161439" : 697.003, + "95.41708769580423" : 698.003, + "95.4720893849785" : 699.003, + "95.52803676307467" : 700.003, + "95.57927677040921" : 701.003, + "95.62936930672878" : 702.003, + "95.68029900165385" : 703.003, + "95.73235983536183" : 704.003, + "95.7862440837543" : 705.003, + "95.83447421877086" : 706.003, + "95.88534596061437" : 707.003, + "95.93639261539496" : 708.003, + "95.98579498319772" : 709.003, + "96.03385336635436" : 710.003, + "96.08024586183913" : 711.003, + "96.12873204410697" : 712.003, + "96.17663290025101" : 713.003, + "96.22506850528403" : 714.003, + "96.27366321786825" : 715.003, + "96.32040817345816" : 716.003, + "96.36839912030173" : 717.003, + "96.41325638597124" : 718.003, + "96.45936385766394" : 719.003, + "96.50610617902288" : 720.003, + "96.55126954233229" : 721.003, + "96.59581807613093" : 722.003, + "96.64172798050012" : 723.003, + "96.6845405560828" : 724.003, + "96.72800536725616" : 725.003, + "96.77210502809577" : 726.003, + "96.81109796875714" : 727.003, + "96.85509226035752" : 728.003, + "96.89682111331494" : 729.003, + "96.93677818251507" : 730.003, + "96.97698023519636" : 731.003, + "97.01594051139358" : 732.003, + "97.05692176959882" : 733.003, + "97.09629509321374" : 734.003, + "97.13438291211031" : 735.003, + "97.17186801895862" : 736.003, + "97.20931571972702" : 737.003, + "97.24721808876258" : 738.003, + "97.28417792995344" : 739.003, + "97.32012253852452" : 740.003, + "97.3554549518158" : 741.003, + "97.38992281049939" : 742.003, + "97.42472995813321" : 743.003, + "97.45999440826522" : 744.003, + "97.49621086947346" : 745.003, + "97.5314811149136" : 746.003, + "97.56371409203358" : 747.003, + "97.59793433300503" : 748.003, + "97.6288507214811" : 749.003, + "97.66057739940668" : 750.003, + "97.69472756983404" : 751.003, + "97.72774607463232" : 752.003, + "97.7580349892889" : 753.003, + "97.78938602587671" : 754.003, + "97.82115274411318" : 755.003, + "97.85164186032426" : 756.003, + "97.88347232695047" : 757.003, + "97.91370855698744" : 758.003, + "97.94386365271023" : 759.003, + "97.97343131492444" : 760.003, + "98.00275926211945" : 761.003, + "98.03059570773347" : 762.003, + "98.0576308202833" : 763.003, + "98.08701830109845" : 764.003, + "98.1141856520435" : 765.003, + "98.14046052553245" : 766.003, + "98.16723695660004" : 767.003, + "98.19421411606831" : 768.003, + "98.22028984169515" : 769.003, + "98.24713107484484" : 770.003, + "98.2719808293735" : 771.003, + "98.29648339225898" : 772.003, + "98.32051758887616" : 773.003, + "98.3449058261371" : 774.003, + "98.36962808388631" : 775.003, + "98.39386669682756" : 776.003, + "98.41902781745807" : 777.003, + "98.44315157792859" : 778.003, + "98.46618634731189" : 779.003, + "98.48903197891082" : 780.003, + "98.51102253913355" : 781.003, + "98.53336872053863" : 782.003, + "98.5568592118815" : 783.003, + "98.57724710597589" : 784.003, + "98.59775828208015" : 785.003, + "98.62100695101904" : 786.003, + "98.64469764391642" : 787.003, + "98.66728933564885" : 788.003, + "98.6871488030086" : 789.003, + "98.70792603644186" : 790.003, + "98.72680240879981" : 791.003, + "98.74795422987846" : 792.003, + "98.7689485239445" : 793.003, + "98.78875583353084" : 794.003, + "98.80928861032915" : 795.003, + "98.82739367985609" : 796.003, + "98.84610567620088" : 797.003, + "98.8647987060826" : 798.003, + "98.88375726644713" : 799.003, + "98.90274533019864" : 800.003, + "98.92079244664401" : 801.003, + "98.93824738796505" : 802.003, + "98.95555217812021" : 803.003, + "98.97218471252921" : 804.003, + "98.99003847642065" : 805.003, + "99.00776790460982" : 806.003, + "99.02582239690194" : 807.003, + "99.04143548392162" : 808.003, + "99.0562609358782" : 809.003, + "99.07275596343004" : 810.003, + "99.08886112479682" : 811.003, + "99.10515963871754" : 812.003, + "99.12004515114047" : 813.003, + "99.13428264274229" : 814.003, + "99.14968867920692" : 815.003, + "99.16363956647807" : 816.003, + "99.17785071577008" : 817.003, + "99.1932056481537" : 818.003, + "99.20563974522645" : 819.003, + "99.21982613274724" : 820.003, + "99.23348145930242" : 821.003, + "99.24726164840607" : 822.003, + "99.26025104136946" : 823.003, + "99.27335897472696" : 824.003, + "99.28546642715817" : 825.003, + "99.2975570205111" : 826.003, + "99.30986151341965" : 827.003, + "99.32295732931463" : 828.003, + "99.33432140176323" : 829.003, + "99.34714694555966" : 830.003, + "99.35885241434329" : 831.003, + "99.37024704387126" : 832.003, + "99.38205682820171" : 833.003, + "99.39267488643672" : 834.003, + "99.40253533984182" : 835.003, + "99.41470548697036" : 836.003, + "99.4256259549219" : 837.003, + "99.43621977823189" : 838.003, + "99.44595220801135" : 839.003, + "99.4557394297952" : 840.003, + "99.46664251182227" : 841.003, + "99.47691495895268" : 842.003, + "99.48598356252512" : 843.003, + "99.49483036384905" : 844.003, + "99.50329467483463" : 845.003, + "99.51282532252101" : 846.003, + "99.52242709444386" : 847.003, + "99.53131288238629" : 848.003, + "99.5396939516729" : 849.003, + "99.547159889117" : 850.003, + "99.55596348905284" : 851.003, + "99.5646185183614" : 852.003, + "99.57355962515442" : 853.003, + "99.58285635312974" : 854.003, + "99.59117630825763" : 855.003, + "99.59964904878235" : 856.003, + "99.60833042040072" : 857.003, + "99.6156525288333" : 858.003, + "99.62430808498804" : 859.003, + "99.63120186746325" : 860.003, + "99.63900129854943" : 861.003, + "99.64725276367182" : 862.003, + "99.65454958348698" : 863.003, + "99.66266775652178" : 864.003, + "99.67015476781371" : 865.003, + "99.67705750667425" : 866.003, + "99.68412409470174" : 867.003, + "99.69040462820475" : 868.003, + "99.69645914468964" : 869.003, + "99.70226498977001" : 870.003, + "99.70936371541548" : 871.003, + "99.71593770224968" : 872.003, + "99.72158496662503" : 873.003, + "99.72714477453185" : 874.003, + "99.73274936436533" : 875.003, + "99.73838556497059" : 876.003, + "99.7438784634105" : 877.003, + "99.74955523117283" : 878.003, + "99.75449599479931" : 879.003, + "99.75951947327856" : 880.003, + "99.76604551710892" : 881.003, + "99.77122336152361" : 882.003, + "99.77617782315117" : 883.003, + "99.78058805265823" : 884.003, + "99.78489291292608" : 885.003, + "99.78990532763522" : 886.003, + "99.79409270120135" : 887.003, + "99.79830272915392" : 888.003, + "99.80260758942177" : 889.003, + "99.80656999966219" : 890.003, + "99.81047340312865" : 891.003, + "99.81477194124216" : 892.003, + "99.81885289187669" : 893.003, + "99.82212302621551" : 894.003, + "99.82552065733378" : 895.003, + "99.82966008789607" : 896.003, + "99.83320576279543" : 897.003, + "99.83736626720555" : 898.003, + "99.84134500967807" : 899.003, + "99.8440145393534" : 900.003, + "99.84777200642357" : 901.003, + "99.85156951380462" : 902.003, + "99.85498505769355" : 903.003, + "99.85897539078238" : 904.003, + "99.86207798803086" : 905.003, + "99.86505624957708" : 906.003, + "99.86802976950753" : 907.003, + "99.87099222566786" : 908.003, + "99.87353900017953" : 909.003, + "99.87618008016028" : 910.003, + "99.8789186266873" : 911.003, + "99.88154548182077" : 912.003, + "99.88446473659302" : 913.003, + "99.88722804489126" : 914.003, + "99.88980221540511" : 915.003, + "99.89256763108813" : 916.003, + "99.89525507353413" : 917.003, + "99.89781976081646" : 918.003, + "99.9002885620911" : 919.003, + "99.90273576267172" : 920.003, + "99.90509181886041" : 921.003, + "99.90722818018536" : 922.003, + "99.90948887721257" : 923.003, + "99.91163156069187" : 924.003, + "99.91360407284985" : 925.003, + "99.91608077681744" : 926.003, + "99.9182276750663" : 927.003, + "99.92025761345965" : 928.003, + "99.92228965923778" : 929.003, + "99.92399664091295" : 930.003, + "99.92581215290451" : 931.003, + "99.92777939660053" : 932.003, + "99.92948269035232" : 933.003, + "99.93134298427054" : 934.003, + "99.93306735187018" : 935.003, + "99.93459046422294" : 936.003, + "99.93597448917994" : 937.003, + "99.93730688320973" : 938.003, + "99.93898014672835" : 939.003, + "99.94018662451728" : 940.003, + "99.94119132021314" : 941.003, + "99.94248103970104" : 942.003, + "99.94403312859458" : 943.003, + "99.94525067015363" : 944.003, + "99.94657937626005" : 945.003, + "99.94780165943486" : 946.003, + "99.94859825088328" : 947.003, + "99.94969092989386" : 948.003, + "99.9512835859445" : 949.003, + "99.95225930509956" : 950.003, + "99.95332300756937" : 951.003, + "99.9543429818049" : 952.003, + "99.95537928827251" : 953.003, + "99.95634183627268" : 954.003, + "99.95741818305119" : 955.003, + "99.95825850273388" : 956.003, + "99.95902453710292" : 957.003, + "99.95991701455901" : 958.003, + "99.96074679731778" : 959.003, + "99.96205337588395" : 960.003, + "99.96290528618296" : 961.003, + "99.96372084409442" : 962.003, + "99.96467654309404" : 963.003, + "99.96577238318181" : 964.003, + "99.96677760572386" : 965.003, + "99.96755786494019" : 966.003, + "99.9680499392873" : 967.003, + "99.9687011211856" : 968.003, + "99.96955671940798" : 969.003, + "99.97030536785255" : 970.003, + "99.9710292545259" : 971.003, + "99.9715371342589" : 972.003, + "99.97215354430826" : 973.003, + "99.97273887043207" : 974.003, + "99.9734258778717" : 975.003, + "99.97390056629433" : 976.003, + "99.97451961057467" : 977.003, + "99.97538837995195" : 978.003, + "99.97594314899638" : 979.003, + "99.97641889111141" : 980.003, + "99.97682614322095" : 981.003, + "99.97759639235956" : 982.003, + "99.97834609449653" : 983.003, + "99.97893300115891" : 984.003, + "99.97950884405118" : 985.003, + "99.97996983447273" : 986.003, + "99.98063366067973" : 987.003, + "99.98123057741985" : 988.003, + "99.98165258122287" : 989.003, + "99.9821283233379" : 990.003, + "99.98249816936752" : 991.003, + "99.98292965640208" : 992.003, + "99.98341488174863" : 993.003, + "99.98405131195345" : 994.003, + "99.98456077222502" : 995.003, + "99.98503229957048" : 996.003, + "99.98533049451744" : 997.003, + "99.9856281626182" : 998.003, + "99.98620505920286" : 999.003, + "99.98661757977436" : 1000.003, + "99.98691314049034" : 1001.003, + "99.98731881206129" : 1002.003, + "99.98756274185007" : 1003.003, + "99.98801741011725" : 1004.003, + "99.98832350775714" : 1005.003, + "99.98865384032206" : 1006.003, + "99.98888354526353" : 1007.003, + "99.98915697843928" : 1008.003, + "99.98939247868891" : 1009.003, + "99.98958477755046" : 1010.003, + "99.98979709656747" : 1011.003, + "99.99004313374103" : 1012.003, + "99.99061107394036" : 1013.003, + "99.9908702822688" : 1014.003, + "99.99145876946979" : 1015.003, + "99.99193187735384" : 1016.003, + "99.9921626359877" : 1017.003, + "99.99240077046831" : 1018.003, + "99.99267894525981" : 1019.003, + "99.99286386827463" : 1020.003, + "99.99322054314935" : 1021.003, + "99.9935334897898" : 1022.003, + "99.99364728856814" : 1023.003, + "99.99383168473675" : 1024.003, + "99.99405612121626" : 1025.003, + "99.99437380947248" : 1026.003, + "99.99455346402533" : 1027.003, + "99.99477526627386" : 1028.003, + "99.99501182021588" : 1029.003, + "99.99509664245345" : 1030.003, + "99.99521412915516" : 1031.003, + "99.99544225355805" : 1032.003, + "99.99558977049294" : 1033.003, + "99.99569566657834" : 1034.003, + "99.99584318351324" : 1035.003, + "99.99586952582304" : 1036.003, + "99.99596909975409" : 1037.003, + "99.99631734508968" : 1038.003, + "99.9965275567219" : 1039.003, + "99.99676463751011" : 1040.003, + "99.99684419128572" : 1041.003, + "99.99691478867598" : 1042.003, + "99.99699908406735" : 1043.003, + "99.99718980239032" : 1044.003, + "99.99721298362294" : 1045.003, + "99.99724880916428" : 1046.003, + "99.99731677232356" : 1047.003, + "99.99741634625461" : 1048.003, + "99.99760232296182" : 1049.007, + "99.99768345727601" : 1050.007, + "99.99771454120157" : 1051.007, + "99.99779514866957" : 1052.007, + "99.99789630313921" : 1053.007, + "99.99792949444956" : 1054.007, + "99.9980185314567" : 1055.007, + "99.99804592745889" : 1057.007, + "99.99827247132318" : 1058.007, + "99.9982830082471" : 1059.007, + "99.99836519625369" : 1060.007, + "99.99839575333306" : 1061.007, + "99.99842262248906" : 1062.007, + "99.99845317956843" : 1063.007, + "99.99873714966809" : 1064.007, + "99.99889994514267" : 1065.007, + "99.99891785791333" : 1066.007, + "99.99894578076172" : 1067.007, + "99.99896738145576" : 1068.007, + "99.99905641846289" : 1069.007, + "99.99906695538681" : 1070.007, + "99.99908434131127" : 1071.007, + "99.99911437154445" : 1072.007, + "99.9991201668526" : 1073.007, + "99.99920604278256" : 1074.007, + "99.99931878786852" : 1075.007, + "99.99932458317667" : 1076.007, + "99.99933722748538" : 1077.007, + "99.9993467107169" : 1078.007, + "99.9993609355642" : 1079.007, + "99.99945998264906" : 1080.007, + "99.99949949611376" : 1081.007, + "99.99952899950074" : 1082.007, + "99.99953321427031" : 1083.007, + "99.9995743082736" : 1085.007, + "99.99963226135516" : 1086.007, + "99.99963594927854" : 1087.007, + "99.99969969766826" : 1089.007, + "99.99971919097752" : 1090.007, + "99.9997218252085" : 1091.007, + "99.99972498628567" : 1093.007, + "99.99973499636339" : 1094.007, + "99.99981929175476" : 1095.007, + "99.99982034544715" : 1096.007, + "99.99982456021672" : 1097.007, + "99.99982561390911" : 1098.007, + "99.99983035552488" : 1099.007, + "99.99986934214338" : 1100.007, + "99.99991465091624" : 1101.007, + "99.9999199193782" : 1102.007, + "99.99994257376463" : 1103.007, + "99.99994415430322" : 1104.007, + "99.99994836907278" : 1105.007, + "99.99995679861192" : 1106.007, + "99.99996575499726" : 1107.007, + "100.0" : 1108.007 + }, + "aggregatedEndToEndLatencyAvg" : 410.9000775889238, + "aggregatedEndToEndLatency50pct" : 383.001, + "aggregatedEndToEndLatency75pct" : 501.001, + "aggregatedEndToEndLatency95pct" : 691.003, + "aggregatedEndToEndLatency99pct" : 806.003, + "aggregatedEndToEndLatency999pct" : 919.003, + "aggregatedEndToEndLatency9999pct" : 1012.003, + "aggregatedEndToEndLatencyMax" : 1108.007 +} \ No newline at end of file diff --git a/blog/results/rabbitmq/latency/classic-30k.json b/blog/results/rabbitmq/latency/classic-30k.json new file mode 100644 index 00000000..8027bee2 --- /dev/null +++ b/blog/results/rabbitmq/latency/classic-30k.json @@ -0,0 +1,2935 @@ +{ + "workload" : "100-partitions-50K-rate-4-producer", + "driver" : "RabbitMQ", + "publishRate" : [ 30724.418134969674, 30255.975019489477, 30244.13693092689, 30243.58213240618, 30244.873224618626, 30243.856386951942, 30237.780610953032, 30247.57099654735, 30245.39557131308, 30244.681971767714, 30242.208822868117, 30243.326883120433, 30244.962304645844, 30243.415529457987, 30244.216909001978, 30242.96012103943, 30243.81012537122, 30237.546521761087, 30249.401346609506, 30245.08911090424, 30244.30950120869, 30238.52602783233, 30247.360611980184, 30156.425179689726, 30331.870419766572, 30243.707655078182, 30243.76947959713, 30244.284756201756, 30241.786639793947, 30242.746970215416, 30243.86094689963, 30239.36450688416, 30246.150438487108, 30248.557232662493, 30243.737614417925, 30241.354542661178, 30246.983072216717, 30237.95506199003, 30246.090991182904, 30242.471003433908, 30244.902007428776, 30242.526301951344, 30244.515974456124, 30242.88798660805, 30244.49826567133, 30236.648036419603, 30250.220023957194, 30243.043360436408, 30247.266331484236, 30240.561200381457, 30244.332824566773, 30245.256239488815, 30242.314374517795, 30154.73547779779, 30335.16986429595, 30243.619862606196, 30241.854049896145, 30245.159649498913, 30243.48185553606, 30243.689354932747 ], + "consumeRate" : [ 30724.61713955956, 30256.17409094708, 30244.93324313997, 30242.387654547914, 30245.570042288284, 30243.259136709792, 30237.780610953032, 30247.86961018757, 30245.196484974975, 30244.5824260329, 30242.40791116314, 30243.52596435944, 30244.663668605037, 30243.91326022542, 30243.81872563265, 30242.661491007653, 30244.307856079595, 30237.34747922729, 30248.903651659824, 30244.790490319825, 30244.30950120869, 30239.023692873405, 30248.057436500952, 30155.829646222945, 30332.567219016153, 30243.80720088258, 30244.665396617023, 30242.990631791487, 30241.786639793947, 30243.543272039326, 30242.666520928382, 30239.5635515583, 30247.942059766487, 30246.96444885792, 30243.638062944538, 30240.55829846574, 30247.381171456265, 30238.651798238807, 30245.49390512248, 30242.471003433908, 30244.802468177346, 30243.521685072777, 30243.520597922492, 30242.788449726355, 30244.697338895985, 30236.548521385255, 30250.717701261037, 30243.34196377061, 30246.967699231685, 30239.864461418703, 30245.029586214077, 30244.75853740259, 30242.812059314798, 30154.73547779779, 30334.174442852447, 30244.51575750111, 30241.455905498, 30245.159649498913, 30243.48185553606, 30243.78889871105 ], + "backlog" : [ -2, -4, -12, 0, -7, -1, -1, -4, -2, -1, -3, -5, -2, -8, -3, 0, -5, -3, 2, 5, 5, 0, -7, -1, -8, -9, -18, -6, -5, -13, -1, -3, -21, -5, -4, 4, 0, -7, -1, -1, 0, -10, 0, 1, -1, 0, -5, -8, -5, 2, -5, 0, -5, -5, 5, -4, 0, 0, 0, -1 ], + "publishLatencyAvg" : [ 0.5555492040687885, 0.5637541648572896, 0.5538524380290404, 0.5477116376430473, 0.550348469339056, 0.5549921039812523, 0.5478400541084935, 0.55435313513976, 0.5544684317920027, 0.5475107253474999, 0.5467705364813225, 0.5508752612437672, 0.5313523679126362, 0.5426407886508015, 0.5510872393090372, 0.5468872029990554, 0.5394726978296502, 0.5422735402540978, 0.5445549043932071, 0.5524097115944747, 0.5487703174164329, 0.5546173275930169, 0.5589187954582854, 0.5491293404777734, 0.543896542783627, 0.5441538653957555, 0.5433402265104813, 0.5386734605876874, 0.5457838388492997, 0.5422726907696611, 0.5397857474320957, 0.542630188517792, 0.5538674650028629, 0.5433670838585256, 0.5435742763283498, 0.8145870237072583, 0.5446906949197158, 0.6954642365751378, 0.5394342424332159, 0.5436045740878482, 0.5515778240722456, 0.5445231899894022, 0.5373693034277345, 0.5714741803197757, 0.5451893329296268, 0.5428616514280825, 0.5360276689205864, 0.5261823561355297, 0.5448827467048428, 0.5322444860625172, 0.5561382284796546, 0.5526377162641146, 0.5490361427541695, 0.5457314354358308, 0.5443851086171819, 0.5564830348650063, 0.5477705247705938, 0.5525555204507459, 0.5346928398865125, 0.5414380451454489 ], + "publishLatency50pct" : [ 0.591, 0.594, 0.579, 0.573, 0.576, 0.587, 0.583, 0.569, 0.588, 0.572, 0.571, 0.577, 0.542, 0.571, 0.581, 0.584, 0.567, 0.566, 0.564, 0.587, 0.591, 0.592, 0.592, 0.579, 0.575, 0.572, 0.573, 0.571, 0.558, 0.568, 0.567, 0.557, 0.581, 0.585, 0.565, 0.578, 0.577, 0.59, 0.558, 0.576, 0.591, 0.58, 0.565, 0.594, 0.565, 0.566, 0.554, 0.528, 0.563, 0.533, 0.587, 0.589, 0.581, 0.567, 0.558, 0.58, 0.569, 0.597, 0.541, 0.552 ], + "publishLatency75pct" : [ 0.683, 0.692, 0.689, 0.684, 0.685, 0.695, 0.683, 0.681, 0.689, 0.683, 0.681, 0.688, 0.669, 0.675, 0.687, 0.683, 0.675, 0.677, 0.681, 0.684, 0.682, 0.692, 0.695, 0.686, 0.678, 0.673, 0.673, 0.672, 0.671, 0.673, 0.673, 0.672, 0.68, 0.673, 0.665, 0.676, 0.679, 0.685, 0.67, 0.675, 0.686, 0.677, 0.673, 0.692, 0.688, 0.684, 0.675, 0.662, 0.68, 0.671, 0.688, 0.687, 0.686, 0.683, 0.68, 0.7, 0.685, 0.686, 0.674, 0.671 ], + "publishLatency95pct" : [ 0.786, 0.807, 0.8, 0.8, 0.79, 0.806, 0.792, 0.809, 0.801, 0.792, 0.793, 0.808, 0.772, 0.783, 0.788, 0.78, 0.769, 0.778, 0.799, 0.79, 0.784, 0.794, 0.798, 0.795, 0.786, 0.779, 0.779, 0.779, 0.779, 0.777, 0.782, 0.791, 0.799, 0.775, 0.76, 0.781, 0.774, 0.789, 0.769, 0.773, 0.786, 0.774, 0.772, 0.804, 0.798, 0.788, 0.769, 0.755, 0.788, 0.788, 0.798, 0.79, 0.803, 0.801, 0.786, 0.816, 0.799, 0.776, 0.777, 0.786 ], + "publishLatency99pct" : [ 0.868, 0.896, 0.884, 0.886, 0.874, 0.886, 0.876, 0.92, 0.886, 0.879, 0.889, 0.908, 0.86, 0.874, 0.866, 0.854, 0.841, 0.854, 0.885, 0.877, 0.862, 0.864, 0.874, 0.879, 0.873, 0.868, 0.861, 0.858, 0.869, 0.863, 0.867, 0.881, 0.887, 0.849, 0.843, 0.906, 0.848, 0.895, 0.852, 0.845, 0.866, 0.855, 0.853, 0.9, 0.876, 0.864, 0.84, 0.827, 0.871, 0.872, 0.88, 0.869, 0.886, 0.888, 0.866, 0.906, 0.882, 0.844, 0.854, 0.879 ], + "publishLatency999pct" : [ 1.659, 1.334, 1.637, 0.997, 1.795, 1.064, 0.998, 3.159, 1.183, 1.018, 1.446, 1.118, 1.054, 1.136, 2.214, 0.971, 0.961, 1.119, 1.024, 1.93, 1.046, 0.954, 1.037, 1.202, 1.488, 2.293, 1.003, 0.982, 4.614, 1.649, 1.029, 1.76, 2.828, 0.956, 3.245, 76.629, 1.015, 61.116, 1.095, 1.004, 1.114, 1.213, 0.967, 8.089, 1.005, 0.975, 0.971, 1.054, 1.092, 1.038, 1.404, 1.008, 1.034, 1.18, 1.18, 1.753, 1.031, 0.979, 0.984, 1.364 ], + "publishLatency9999pct" : [ 9.559, 11.011, 6.096, 1.252, 6.412, 2.855, 1.621, 7.775, 4.976, 1.862, 6.842, 2.986, 2.901, 2.9, 6.137, 2.495, 3.687, 5.62, 2.895, 6.522, 5.153, 1.077, 3.964, 5.969, 9.08, 11.118, 1.945, 1.664, 12.057, 6.196, 2.637, 7.394, 7.114, 1.214, 11.854, 91.922, 3.867, 87.634, 10.698, 8.544, 5.76, 5.307, 1.542, 13.312, 1.986, 1.184, 3.762, 4.459, 7.866, 2.694, 10.205, 3.258, 2.276, 5.491, 12.055, 4.687, 6.588, 2.224, 2.784, 7.977 ], + "publishLatencyMax" : [ 12.29, 13.984, 10.837, 1.67, 9.554, 5.957, 9.932, 12.241, 7.132, 2.953, 11.794, 5.75, 10.282, 5.882, 11.255, 3.899, 9.315, 13.51, 10.705, 12.228, 7.908, 1.459, 9.114, 12.138, 13.566, 12.836, 5.874, 2.895, 12.937, 12.54, 11.432, 12.244, 11.327, 2.447, 13.597, 93.308, 10.733, 99.032, 12.508, 10.469, 10.99, 7.03, 11.191, 13.997, 6.721, 10.22, 10.703, 7.12, 11.866, 10.252, 13.774, 10.821, 10.114, 8.201, 13.881, 7.048, 9.969, 11.367, 4.627, 11.531 ], + "aggregatedPublishLatencyAvg" : 0.553705735693673, + "aggregatedPublishLatency50pct" : 0.576, + "aggregatedPublishLatency75pct" : 0.68, + "aggregatedPublishLatency95pct" : 0.788, + "aggregatedPublishLatency99pct" : 0.873, + "aggregatedPublishLatency999pct" : 1.258, + "aggregatedPublishLatency9999pct" : 29.542, + "aggregatedPublishLatencyMax" : 99.032, + "aggregatedPublishLatencyQuantiles" : { + "5.484519149445414E-6" : 0.232, + "0.5151883063031549" : 0.271, + "1.0080217125531703" : 0.277, + "1.5934008949309277" : 0.282, + "2.0258881369795954" : 0.285, + "2.5184637708295865" : 0.288, + "3.0669815000039216" : 0.291, + "3.66411400691894" : 0.294, + "4.089235539749903" : 0.296, + "4.529691788122714" : 0.298, + "5.222068454587002" : 0.301, + "5.700927306044231" : 0.303, + "6.1947534102602955" : 0.305, + "6.700025705941253" : 0.307, + "7.215076899265672" : 0.309, + "7.742056921740135" : 0.311, + "8.007074371560487" : 0.312, + "8.547869897772403" : 0.314, + "9.093360172376244" : 0.316, + "9.652095560725995" : 0.318, + "10.213606115765366" : 0.32, + "10.781577434362783" : 0.322, + "11.066904058593531" : 0.323, + "11.638890045208344" : 0.325, + "12.21577370742361" : 0.327, + "12.506151573790996" : 0.328, + "13.086079144134205" : 0.33, + "13.669220642698988" : 0.332, + "14.248166484114448" : 0.334, + "14.538209794813717" : 0.335, + "15.114457252807648" : 0.337, + "15.689114200248241" : 0.339, + "16.25942740852247" : 0.341, + "16.544803393425564" : 0.342, + "17.108787466601335" : 0.344, + "17.66848264580224" : 0.346, + "18.21614478998926" : 0.348, + "18.756984192354373" : 0.35, + "19.027425831613524" : 0.351, + "19.557970791535126" : 0.353, + "20.07804031988129" : 0.355, + "20.588385795775483" : 0.357, + "21.086977947132418" : 0.359, + "21.568304832206895" : 0.361, + "22.034889329807665" : 0.363, + "22.708476033665953" : 0.366, + "23.140738410429492" : 0.368, + "23.55996956969395" : 0.37, + "24.16472007370755" : 0.373, + "24.551038633556185" : 0.375, + "25.111551006110357" : 0.378, + "25.652730448662734" : 0.381, + "26.00147456781852" : 0.383, + "26.5099882143168" : 0.386, + "27.158784891619593" : 0.39, + "27.631111680769834" : 0.393, + "28.091860649995592" : 0.396, + "28.542688124080005" : 0.399, + "29.131840655632583" : 0.403, + "29.566883683604892" : 0.406, + "30.140838612594354" : 0.41, + "30.565663981391246" : 0.413, + "31.126478002498636" : 0.417, + "31.54812235018885" : 0.42, + "32.10289243119355" : 0.424, + "32.51452204691688" : 0.427, + "33.05615122003951" : 0.431, + "33.595071040702315" : 0.435, + "34.13140216832658" : 0.439, + "34.53439915090868" : 0.442, + "35.073170889554454" : 0.446, + "35.61210167925556" : 0.45, + "36.01644785354842" : 0.453, + "36.55475889258564" : 0.457, + "37.089691467826796" : 0.461, + "37.62349971664232" : 0.465, + "38.02367217186245" : 0.468, + "38.554820428890494" : 0.472, + "39.084816936897155" : 0.476, + "39.61214796859718" : 0.48, + "40.00547574391881" : 0.483, + "40.530777503533535" : 0.487, + "41.04956913891788" : 0.491, + "41.561505125365414" : 0.495, + "42.063470255999256" : 0.499, + "42.55621042542373" : 0.503, + "43.04094868140916" : 0.507, + "43.51606709080647" : 0.511, + "44.102268951056644" : 0.516, + "44.559738177831036" : 0.52, + "45.009282274434476" : 0.524, + "45.55235387609341" : 0.529, + "46.08263557909584" : 0.534, + "46.59290975624109" : 0.539, + "47.089862036372345" : 0.544, + "47.578093931055975" : 0.549, + "48.0520386533553" : 0.554, + "48.51227207778101" : 0.559, + "49.052897583899295" : 0.565, + "49.5122534852611" : 0.57, + "50.08930168305084" : 0.576, + "50.29520150095932" : 0.578, + "50.51058405247719" : 0.58, + "50.85094234185348" : 0.583, + "51.091904690684366" : 0.585, + "51.34638637921863" : 0.587, + "51.612857226613585" : 0.589, + "51.75230661050738" : 0.59, + "52.04206472621088" : 0.592, + "52.34737145370306" : 0.594, + "52.50640057096038" : 0.595, + "52.83516458685474" : 0.597, + "53.004521053670466" : 0.598, + "53.35634747258823" : 0.6, + "53.53746274846037" : 0.601, + "53.91297132106545" : 0.603, + "54.107238473857954" : 0.604, + "54.30699014579991" : 0.605, + "54.50848041031223" : 0.606, + "54.924640238853" : 0.608, + "55.139095906634616" : 0.609, + "55.359343226638046" : 0.61, + "55.58271672255666" : 0.611, + "55.809704516594756" : 0.612, + "56.03910001453946" : 0.613, + "56.27393615548041" : 0.614, + "56.510110519093836" : 0.615, + "56.751988782622675" : 0.616, + "57.237686829459264" : 0.618, + "57.48540610588226" : 0.619, + "57.73687679340348" : 0.62, + "57.99168755308672" : 0.621, + "58.246646394786985" : 0.622, + "58.50574056392594" : 0.623, + "58.76296451203493" : 0.624, + "59.02602947303808" : 0.625, + "59.29117855131801" : 0.626, + "59.55631666055965" : 0.627, + "59.82498680013354" : 0.628, + "60.095933015154436" : 0.629, + "60.36860685370742" : 0.63, + "60.64225145214985" : 0.631, + "60.91770594191159" : 0.632, + "61.19635242181832" : 0.633, + "61.47626034112941" : 0.634, + "61.7562560127469" : 0.635, + "62.04049670218606" : 0.636, + "62.32497322594864" : 0.637, + "62.61030533469854" : 0.638, + "62.89948757589135" : 0.639, + "63.184298655322046" : 0.64, + "63.474133554293644" : 0.641, + "63.763951999707785" : 0.642, + "64.05728053737758" : 0.643, + "64.35025258130266" : 0.644, + "64.64414053992569" : 0.645, + "64.93748004663377" : 0.646, + "65.2339292756996" : 0.647, + "65.53061433908884" : 0.648, + "65.82857729543991" : 0.649, + "66.12479617470146" : 0.65, + "66.42344469594622" : 0.651, + "66.7207330564419" : 0.652, + "67.01732488300561" : 0.653, + "67.31734453403772" : 0.654, + "67.61636051806549" : 0.655, + "67.91524487363367" : 0.656, + "68.21250032701445" : 0.657, + "68.51198797968907" : 0.658, + "68.81171146668711" : 0.659, + "69.11115524320853" : 0.66, + "69.40901947821492" : 0.661, + "69.70736635090644" : 0.662, + "70.00322873642328" : 0.663, + "70.3041807557108" : 0.664, + "70.60201756812143" : 0.665, + "70.89967339140013" : 0.666, + "71.19805317120655" : 0.667, + "71.49678396023856" : 0.668, + "71.79333191064907" : 0.669, + "72.08775735214874" : 0.67, + "72.38445338457629" : 0.671, + "72.68135782873152" : 0.672, + "72.97616718657166" : 0.673, + "73.27087233854796" : 0.674, + "73.56581880936683" : 0.675, + "73.8594325420324" : 0.676, + "74.15232780268938" : 0.677, + "74.4478556325381" : 0.678, + "74.74055893502485" : 0.679, + "75.03059127668583" : 0.68, + "75.31885760318067" : 0.681, + "75.60661935391377" : 0.682, + "75.89174853545514" : 0.683, + "76.1768996550731" : 0.684, + "76.46020797625685" : 0.685, + "76.7426058672618" : 0.686, + "77.02115362582384" : 0.687, + "77.29710172230904" : 0.688, + "77.57353794099853" : 0.689, + "77.84660118041111" : 0.69, + "78.11957118299817" : 0.691, + "78.39086840724464" : 0.692, + "78.65897912586527" : 0.693, + "78.92548288037513" : 0.694, + "79.18737415428029" : 0.695, + "79.44913928424502" : 0.696, + "79.70806891780948" : 0.697, + "79.964541486795" : 0.698, + "80.22035042896344" : 0.699, + "80.47722885236601" : 0.7, + "80.72758069798074" : 0.701, + "80.9796985587616" : 0.702, + "81.22985844620611" : 0.703, + "81.47811520550576" : 0.704, + "81.72312512946893" : 0.705, + "81.96578767923614" : 0.706, + "82.20740817036496" : 0.707, + "82.44574343452327" : 0.708, + "82.68333280407724" : 0.709, + "82.91585996245627" : 0.71, + "83.14968146735458" : 0.711, + "83.3829490358188" : 0.712, + "83.61045237465693" : 0.713, + "83.83660103726517" : 0.714, + "84.060276181737" : 0.715, + "84.2823169395023" : 0.716, + "84.50150026279074" : 0.717, + "84.7199212379174" : 0.718, + "84.93534766558847" : 0.719, + "85.14884354251893" : 0.72, + "85.35997010717682" : 0.721, + "85.57007106675378" : 0.722, + "85.7766180579219" : 0.723, + "85.98245754611973" : 0.724, + "86.1840520164959" : 0.725, + "86.3833758959442" : 0.726, + "86.58097763637956" : 0.727, + "86.77687369135946" : 0.728, + "86.97035655791359" : 0.729, + "87.16195274988031" : 0.73, + "87.35162936014473" : 0.731, + "87.54179409261346" : 0.732, + "87.7273792515924" : 0.733, + "87.91204301135421" : 0.734, + "88.09160616830705" : 0.735, + "88.27107608843436" : 0.736, + "88.4492626310807" : 0.737, + "88.62768500805045" : 0.738, + "88.80022249597286" : 0.739, + "88.97541997568274" : 0.74, + "89.14621887103476" : 0.741, + "89.31429196036952" : 0.742, + "89.48282026479369" : 0.743, + "89.6487708452176" : 0.744, + "89.81084387060287" : 0.745, + "89.97240135118808" : 0.746, + "90.13007030769633" : 0.747, + "90.28822738640889" : 0.748, + "90.44316505238072" : 0.749, + "90.59684676346733" : 0.75, + "90.74752295806005" : 0.751, + "90.89599986047384" : 0.752, + "91.04297948915982" : 0.753, + "91.18774337210944" : 0.754, + "91.32922202808852" : 0.755, + "91.46839170150571" : 0.756, + "91.60807691972293" : 0.757, + "91.74436722058665" : 0.758, + "91.8783540234076" : 0.759, + "92.01112326297738" : 0.76, + "92.14306434015558" : 0.761, + "92.27167631421008" : 0.762, + "92.4005899368178" : 0.763, + "92.52575763284644" : 0.764, + "92.64982294052604" : 0.765, + "92.77248421130338" : 0.766, + "92.89308878739969" : 0.767, + "93.01219060524905" : 0.768, + "93.12998162302169" : 0.769, + "93.24659895369635" : 0.77, + "93.36125831103465" : 0.771, + "93.47162328987893" : 0.772, + "93.58120946700402" : 0.773, + "93.68980843068218" : 0.774, + "93.79657008044528" : 0.775, + "93.90188930167209" : 0.776, + "94.00584287763067" : 0.777, + "94.10834854053381" : 0.778, + "94.21061836911352" : 0.779, + "94.30930132216949" : 0.78, + "94.40756196725094" : 0.781, + "94.50466537879188" : 0.782, + "94.60125324553276" : 0.783, + "94.69430359742225" : 0.784, + "94.78604863375418" : 0.785, + "94.87699293029029" : 0.786, + "94.96762460923486" : 0.787, + "95.05617217090266" : 0.788, + "95.14394093085124" : 0.789, + "95.22946103794854" : 0.79, + "95.31402683871384" : 0.791, + "95.39619590461083" : 0.792, + "95.4780962290695" : 0.793, + "95.56082471591974" : 0.794, + "95.64018022349306" : 0.795, + "95.71798909666624" : 0.796, + "95.7945529839925" : 0.797, + "95.87009126623781" : 0.798, + "95.94442295427024" : 0.799, + "96.01962119632829" : 0.8, + "96.09168229343285" : 0.801, + "96.1629755578565" : 0.802, + "96.23244247740337" : 0.803, + "96.30195327310344" : 0.804, + "96.37095400852262" : 0.805, + "96.43842456309909" : 0.806, + "96.50479272932652" : 0.807, + "96.56920292221761" : 0.808, + "96.63362956866615" : 0.809, + "96.6964602200422" : 0.81, + "96.75754679432872" : 0.811, + "96.81826042131308" : 0.812, + "96.87732320803346" : 0.813, + "96.93606789264317" : 0.814, + "96.99351274621446" : 0.815, + "97.05067240478998" : 0.816, + "97.10614283146747" : 0.817, + "97.16032439614484" : 0.818, + "97.21478567129884" : 0.819, + "97.26671309860579" : 0.82, + "97.31763137438924" : 0.821, + "97.36926263766212" : 0.822, + "97.41981345066256" : 0.823, + "97.46834047609684" : 0.824, + "97.51615451404172" : 0.825, + "97.56226835105025" : 0.826, + "97.60840961065453" : 0.827, + "97.65348687354383" : 0.828, + "97.6972313982798" : 0.829, + "97.7412885406073" : 0.83, + "97.78444622179428" : 0.831, + "97.82661668953438" : 0.832, + "97.86794254132543" : 0.833, + "97.90790823236745" : 0.834, + "97.94785198533286" : 0.835, + "97.98677013321732" : 0.836, + "98.02446523333147" : 0.837, + "98.06200676690942" : 0.838, + "98.09936731135544" : 0.839, + "98.13562546745243" : 0.84, + "98.17245949806009" : 0.841, + "98.20761526580804" : 0.842, + "98.24194835568358" : 0.843, + "98.27498161452068" : 0.844, + "98.30823425412378" : 0.845, + "98.3406697003736" : 0.846, + "98.37257314826591" : 0.847, + "98.40330290906026" : 0.848, + "98.43431238033122" : 0.849, + "98.46446078209573" : 0.85, + "98.49355615618353" : 0.851, + "98.52170819297763" : 0.852, + "98.54976699294619" : 0.853, + "98.57728831003811" : 0.854, + "98.60445861790447" : 0.855, + "98.63129437010271" : 0.856, + "98.65712097077744" : 0.857, + "98.68298596308622" : 0.858, + "98.70765533022043" : 0.859, + "98.73258246975466" : 0.86, + "98.75705987871864" : 0.861, + "98.78051168260166" : 0.862, + "98.80361796177827" : 0.863, + "98.82683393133787" : 0.864, + "98.8493204598506" : 0.865, + "98.87109400087391" : 0.866, + "98.89217649248437" : 0.867, + "98.91299572717567" : 0.868, + "98.93412209493933" : 0.869, + "98.95402541493267" : 0.87, + "98.97409875501964" : 0.871, + "98.99317939714055" : 0.872, + "99.01232036897213" : 0.873, + "99.03087998177385" : 0.874, + "99.04929151255854" : 0.875, + "99.0675330232496" : 0.876, + "99.08548385442572" : 0.877, + "99.10289171820607" : 0.878, + "99.11958110997783" : 0.879, + "99.13573301887294" : 0.88, + "99.15241692612555" : 0.881, + "99.16851398982918" : 0.882, + "99.18390903508167" : 0.883, + "99.19881595812987" : 0.884, + "99.21338284099079" : 0.885, + "99.22741224097507" : 0.886, + "99.24163359912959" : 0.887, + "99.25559170036492" : 0.888, + "99.26885875218743" : 0.889, + "99.28134700229072" : 0.89, + "99.29396139633444" : 0.891, + "99.30595603971427" : 0.892, + "99.3182249090516" : 0.893, + "99.33030730473781" : 0.894, + "99.34180285687506" : 0.895, + "99.35302966757398" : 0.896, + "99.36428390086863" : 0.897, + "99.37553264964414" : 0.898, + "99.38615067871747" : 0.899, + "99.39660965673546" : 0.9, + "99.40700282052366" : 0.901, + "99.41705045960545" : 0.902, + "99.4268732334021" : 0.903, + "99.436410812203" : 0.904, + "99.44542736168468" : 0.905, + "99.45442197308977" : 0.906, + "99.46337270834167" : 0.907, + "99.4724276494574" : 0.908, + "99.48095059221563" : 0.909, + "99.48920479353555" : 0.91, + "99.49739318062568" : 0.911, + "99.50552123800514" : 0.912, + "99.51339700750376" : 0.913, + "99.52142634353854" : 0.914, + "99.5292417833265" : 0.915, + "99.53662394610166" : 0.916, + "99.54386351137893" : 0.917, + "99.55069173771999" : 0.918, + "99.5575364176185" : 0.919, + "99.56437561299785" : 0.92, + "99.57086928367079" : 0.921, + "99.57730262463309" : 0.922, + "99.58394437732306" : 0.923, + "99.59036674924707" : 0.924, + "99.59673427597957" : 0.925, + "99.60262464954609" : 0.926, + "99.60821337455937" : 0.927, + "99.61406535649182" : 0.928, + "99.61994476102004" : 0.929, + "99.62547315632267" : 0.93, + "99.63076571730188" : 0.931, + "99.63584438203428" : 0.932, + "99.64096143840071" : 0.933, + "99.64604558765224" : 0.934, + "99.65087196450375" : 0.935, + "99.65586287692975" : 0.936, + "99.6607824906068" : 0.937, + "99.66557596034342" : 0.938, + "99.67010068864171" : 0.939, + "99.67485028222512" : 0.94, + "99.6795285770596" : 0.941, + "99.68363099738339" : 0.942, + "99.68782665453271" : 0.943, + "99.69190165226075" : 0.944, + "99.69576275374196" : 0.945, + "99.69972806108701" : 0.946, + "99.70353431737672" : 0.947, + "99.70715410001536" : 0.948, + "99.7107958207306" : 0.949, + "99.71405910962451" : 0.95, + "99.71727852236523" : 0.951, + "99.72098605731027" : 0.952, + "99.72438645918292" : 0.953, + "99.72754005769384" : 0.954, + "99.73069914072393" : 0.955, + "99.73388564634976" : 0.956, + "99.73685277120961" : 0.957, + "99.73974859732051" : 0.958, + "99.74249085689524" : 0.959, + "99.74558412569553" : 0.96, + "99.74857867315113" : 0.961, + "99.75130996368755" : 0.962, + "99.75409061489631" : 0.963, + "99.75669027697316" : 0.964, + "99.75935026876063" : 0.965, + "99.76184572497363" : 0.966, + "99.76419309916959" : 0.967, + "99.76675436961239" : 0.968, + "99.76900850698281" : 0.969, + "99.77132845858303" : 0.97, + "99.77363744114494" : 0.971, + "99.77572704294087" : 0.972, + "99.77766307820063" : 0.973, + "99.77973074191998" : 0.974, + "99.78189164246486" : 0.975, + "99.78377283253312" : 0.976, + "99.78583501173331" : 0.977, + "99.78769426372497" : 0.978, + "99.78960836090812" : 0.979, + "99.79147858193808" : 0.98, + "99.79311845316377" : 0.981, + "99.79649691695982" : 0.983, + "99.79801064424508" : 0.984, + "99.79964503095161" : 0.985, + "99.8011423046794" : 0.986, + "99.8027492687902" : 0.987, + "99.80591383633943" : 0.989, + "99.80750434689277" : 0.99, + "99.80886999216098" : 0.991, + "99.81014240060365" : 0.992, + "99.8116341898123" : 0.993, + "99.81294498988902" : 0.994, + "99.81432160419553" : 0.995, + "99.81558852811905" : 0.996, + "99.81701998761706" : 0.997, + "99.81827594250228" : 0.998, + "99.81952641286836" : 0.999, + "99.82072752256208" : 1.0, + "99.82190120966006" : 1.001, + "99.82293778377931" : 1.002, + "99.82414437799218" : 1.003, + "99.82531258057101" : 1.004, + "99.82640399988175" : 1.005, + "99.82751187274994" : 1.006, + "99.82859232302238" : 1.007, + "99.82965083521823" : 1.008, + "99.83068192481832" : 1.009, + "99.83161977759288" : 1.01, + "99.83256859940573" : 1.011, + "99.83353935929519" : 1.012, + "99.83451560370378" : 1.013, + "99.8354260338826" : 1.014, + "99.8363145259848" : 1.015, + "99.83722495616361" : 1.016, + "99.83808054115093" : 1.017, + "99.83969847430001" : 1.019, + "99.84053212121073" : 1.02, + "99.84140415975548" : 1.021, + "99.8421610233981" : 1.022, + "99.84296176319393" : 1.023, + "99.84447000596003" : 1.025, + "99.84527074575584" : 1.026, + "99.84601664036018" : 1.027, + "99.84677898852195" : 1.028, + "99.84813366475186" : 1.03, + "99.84893440454768" : 1.031, + "99.84963093847965" : 1.032, + "99.85101852182447" : 1.034, + "99.85162730345006" : 1.035, + "99.8527077537225" : 1.037, + "99.85395822408857" : 1.039, + "99.85453958311841" : 1.04, + "99.85559809531425" : 1.042, + "99.85673339077819" : 1.044, + "99.85784126364638" : 1.046, + "99.85875717834433" : 1.048, + "99.85962373236994" : 1.05, + "99.86045189476151" : 1.052, + "99.86137877849777" : 1.054, + "99.8625579501149" : 1.057, + "99.86328190664263" : 1.059, + "99.86441720210657" : 1.062, + "99.8653769929577" : 1.065, + "99.86645744323016" : 1.069, + "99.86743368763875" : 1.072, + "99.86851413791119" : 1.075, + "99.86934230030276" : 1.077, + "99.87040629701775" : 1.08, + "99.87131672719656" : 1.083, + "99.87217779670303" : 1.086, + "99.87306628880523" : 1.089, + "99.87417964619257" : 1.093, + "99.87524364290756" : 1.097, + "99.87619246472042" : 1.101, + "99.87701514259284" : 1.104, + "99.87803526315463" : 1.108, + "99.87907732179303" : 1.113, + "99.87991645322289" : 1.117, + "99.88101335705278" : 1.122, + "99.8818360349252" : 1.126, + "99.88297681490829" : 1.132, + "99.88397499739348" : 1.137, + "99.88494575728294" : 1.143, + "99.88574649707876" : 1.148, + "99.88672274148736" : 1.154, + "99.88770995493425" : 1.16, + "99.8886807148237" : 1.167, + "99.88968438182806" : 1.175, + "99.8907209559473" : 1.184, + "99.89173559198994" : 1.191, + "99.8926734447645" : 1.198, + "99.89360032850075" : 1.207, + "99.89456560387106" : 1.218, + "99.89557475539456" : 1.228, + "99.89650712364997" : 1.238, + "99.89752724421176" : 1.245, + "99.89845412794801" : 1.249, + "99.89944682591407" : 1.254, + "99.90053276070566" : 1.261, + "99.90144867540361" : 1.267, + "99.90241395077392" : 1.277, + "99.90283625874842" : 1.283, + "99.90333534999102" : 1.291, + "99.90386186382938" : 1.3, + "99.90435547055282" : 1.31, + "99.90480520112308" : 1.32, + "99.90527686976993" : 1.333, + "99.90576499197422" : 1.348, + "99.90625311417853" : 1.362, + "99.90675220542113" : 1.374, + "99.90725678118288" : 1.384, + "99.90771748079143" : 1.393, + "99.90822754107234" : 1.404, + "99.90871566327662" : 1.414, + "99.90919830096178" : 1.423, + "99.90968093864693" : 1.431, + "99.91019648344698" : 1.44, + "99.91067912113213" : 1.449, + "99.91117272785559" : 1.457, + "99.91163342746414" : 1.467, + "99.91211606514929" : 1.477, + "99.91259870283444" : 1.487, + "99.91308682503873" : 1.499, + "99.91358591628133" : 1.51, + "99.91408500752394" : 1.521, + "99.91455667617079" : 1.532, + "99.91506125193254" : 1.542, + "99.915554858656" : 1.553, + "99.91604298086028" : 1.563, + "99.91654755662204" : 1.575, + "99.91701922526889" : 1.587, + "99.91751283199234" : 1.598, + "99.91798998515834" : 1.61, + "99.91846713832435" : 1.623, + "99.9189826831244" : 1.635, + "99.9194488672521" : 1.648, + "99.91998635012874" : 1.663, + "99.92041962714154" : 1.674, + "99.9209022648267" : 1.686, + "99.9214232941459" : 1.698, + "99.9219114163502" : 1.709, + "99.92237211595875" : 1.724, + "99.9228657226822" : 1.738, + "99.9233648139248" : 1.753, + "99.92386938968654" : 1.767, + "99.92434654285255" : 1.785, + "99.9248291805377" : 1.801, + "99.925317302742" : 1.817, + "99.925794455908" : 1.833, + "99.9262935471506" : 1.85, + "99.92677618483576" : 1.865, + "99.9272807605975" : 1.881, + "99.92775242924435" : 1.9, + "99.92826248952525" : 1.915, + "99.92872867365296" : 1.931, + "99.92921131133811" : 1.948, + "99.92972137161901" : 1.964, + "99.93020400930416" : 1.981, + "99.93067019343187" : 1.997, + "99.9311638001553" : 2.017, + "99.9316409533213" : 2.037, + "99.93214004456391" : 2.058, + "99.93262816676821" : 2.08, + "99.93311080445336" : 2.101, + "99.93361538021512" : 2.123, + "99.93411447145772" : 2.146, + "99.93458614010457" : 2.172, + "99.93506329327056" : 2.2, + "99.93557335355146" : 2.227, + "99.93605050671746" : 2.252, + "99.93654411344092" : 2.279, + "99.93702126660692" : 2.305, + "99.93751487333037" : 2.327, + "99.93799202649637" : 2.359, + "99.93848563321983" : 2.403, + "99.93896827090497" : 2.445, + "99.93945639310927" : 2.481, + "99.93994451531357" : 2.519, + "99.94043263751787" : 2.555, + "99.94092075972218" : 2.586, + "99.94140888192648" : 2.618, + "99.94190797316908" : 2.653, + "99.94239061085422" : 2.683, + "99.94288421757767" : 2.714, + "99.94337782430112" : 2.742, + "99.94387691554373" : 2.774, + "99.94434858419058" : 2.817, + "99.94482573735658" : 2.858, + "99.94531385956088" : 2.896, + "99.94580746628434" : 2.935, + "99.94630655752692" : 2.968, + "99.94677822617378" : 3.004, + "99.94726634837808" : 3.043, + "99.94775995510153" : 3.084, + "99.94825356182498" : 3.119, + "99.94873071499099" : 3.151, + "99.94921883719529" : 3.196, + "99.94971244391874" : 3.241, + "99.95020605064218" : 3.281, + "99.95069417284648" : 3.318, + "99.95117681053163" : 3.36, + "99.95141812937422" : 3.376, + "99.95166493273594" : 3.396, + "99.9519062515785" : 3.43, + "99.95215305494024" : 3.48, + "99.95239985830196" : 3.511, + "99.95264666166369" : 3.547, + "99.95288249598711" : 3.577, + "99.953134783868" : 3.605, + "99.95337610271056" : 3.634, + "99.95361742155313" : 3.656, + "99.95385874039572" : 3.693, + "99.95410554375744" : 3.723, + "99.95434686260002" : 3.751, + "99.95459366596174" : 3.78, + "99.95483498480432" : 3.806, + "99.95509275720434" : 3.837, + "99.95532310700862" : 3.858, + "99.95556991037034" : 3.876, + "99.95581671373206" : 3.903, + "99.95606900161295" : 3.933, + "99.95629935141721" : 3.965, + "99.95654615477895" : 3.989, + "99.95679295814067" : 4.02, + "99.95703427698325" : 4.049, + "99.95727559582582" : 4.089, + "99.95752239918754" : 4.127, + "99.95776920254927" : 4.163, + "99.95801052139184" : 4.195, + "99.95825732475357" : 4.222, + "99.9585041281153" : 4.243, + "99.95876190051531" : 4.288, + "99.9589922503196" : 4.318, + "99.95923356916217" : 4.362, + "99.95947488800475" : 4.393, + "99.95972717588562" : 4.426, + "99.95996301020905" : 4.451, + "99.96021529808992" : 4.487, + "99.9604566169325" : 4.544, + "99.96069793577507" : 4.599, + "99.96093925461766" : 4.637, + "99.96118605797938" : 4.672, + "99.96142737682194" : 4.704, + "99.96167418018368" : 4.734, + "99.9619209835454" : 4.767, + "99.96216230238798" : 4.805, + "99.96240362123055" : 4.836, + "99.96265042459228" : 4.864, + "99.96290271247315" : 4.898, + "99.96313854679657" : 4.935, + "99.96337986563915" : 4.966, + "99.96362666900087" : 5.004, + "99.96386798784346" : 5.04, + "99.96412027572433" : 5.075, + "99.96436707908606" : 5.107, + "99.96460291340948" : 5.14, + "99.96484423225205" : 5.173, + "99.96509103561378" : 5.202, + "99.9653378389755" : 5.238, + "99.96559012685638" : 5.266, + "99.96582047666065" : 5.304, + "99.96606728002239" : 5.348, + "99.9663140833841" : 5.379, + "99.96656088674582" : 5.416, + "99.96681317462671" : 5.448, + "99.96704352443098" : 5.471, + "99.96729032779271" : 5.503, + "99.96753164663528" : 5.538, + "99.96777844999701" : 5.602, + "99.96802525335873" : 5.648, + "99.96826657220132" : 5.695, + "99.96850789104388" : 5.732, + "99.9687546944056" : 5.766, + "99.96900149776734" : 5.809, + "99.9692537856482" : 5.85, + "99.96948413545249" : 5.877, + "99.96974190785251" : 5.905, + "99.96997225765679" : 5.943, + "99.97022454553766" : 5.98, + "99.97046586438023" : 6.017, + "99.97070718322281" : 6.061, + "99.97095398658453" : 6.099, + "99.97120078994627" : 6.129, + "99.97144210878884" : 6.172, + "99.97168342763142" : 6.205, + "99.97193571551229" : 6.247, + "99.9721715498357" : 6.285, + "99.97241835319744" : 6.314, + "99.97266515655916" : 6.364, + "99.97290647540174" : 6.432, + "99.97315327876346" : 6.487, + "99.9733891130869" : 6.532, + "99.97364140096776" : 6.576, + "99.97388271981035" : 6.64, + "99.97412403865292" : 6.749, + "99.97436535749549" : 6.815, + "99.97461764537637" : 6.868, + "99.97486444873809" : 6.94, + "99.97510028306152" : 7.018, + "99.97535257094239" : 7.08, + "99.97558840526582" : 7.151, + "99.97570906468711" : 7.187, + "99.97583520862754" : 7.219, + "99.97595586804883" : 7.258, + "99.97607652747011" : 7.301, + "99.97619718689141" : 7.345, + "99.97632333083185" : 7.387, + "99.97644399025313" : 7.415, + "99.97657013419357" : 7.473, + "99.97668530909571" : 7.513, + "99.9768169375553" : 7.55, + "99.97693759697658" : 7.608, + "99.97705277187872" : 7.643, + "99.9771734313" : 7.706, + "99.97729957524045" : 7.799, + "99.97742023466174" : 7.834, + "99.97754637860217" : 7.869, + "99.9776615535043" : 7.934, + "99.97779318196389" : 8.0, + "99.97790835686604" : 8.059, + "99.97802901628732" : 8.096, + "99.97814967570861" : 8.144, + "99.97827581964904" : 8.19, + "99.97839647907034" : 8.225, + "99.97851713849163" : 8.252, + "99.97863779791291" : 8.289, + "99.97876394185334" : 8.328, + "99.97888460127463" : 8.398, + "99.97900526069593" : 8.463, + "99.97913140463636" : 8.537, + "99.97925206405765" : 8.592, + "99.97937272347893" : 8.632, + "99.97949886741937" : 8.686, + "99.97962501135981" : 8.729, + "99.97974018626195" : 8.788, + "99.97986084568323" : 8.844, + "99.97998150510452" : 8.887, + "99.98010764904497" : 8.94, + "99.98022830846625" : 9.0, + "99.98034896788754" : 9.047, + "99.98046962730882" : 9.117, + "99.98059577124926" : 9.173, + "99.98071643067055" : 9.228, + "99.98083709009184" : 9.293, + "99.98095774951312" : 9.342, + "99.98108389345356" : 9.414, + "99.98120455287486" : 9.483, + "99.98133069681529" : 9.528, + "99.98144587171743" : 9.594, + "99.98157201565786" : 9.627, + "99.98169267507915" : 9.686, + "99.98181333450044" : 9.75, + "99.98193399392173" : 9.797, + "99.98206013786216" : 9.917, + "99.98218079728345" : 9.992, + "99.98230145670475" : 10.082, + "99.98242211612603" : 10.166, + "99.98254826006647" : 10.249, + "99.98266891948775" : 10.297, + "99.98278957890903" : 10.381, + "99.98291023833033" : 10.423, + "99.98304186678992" : 10.507, + "99.98315704169205" : 10.572, + "99.98327770111334" : 10.619, + "99.98340384505377" : 10.697, + "99.98352450447507" : 10.766, + "99.98364516389636" : 10.893, + "99.98376582331764" : 11.004, + "99.98389196725807" : 11.098, + "99.98401262667937" : 11.167, + "99.98413328610066" : 11.241, + "99.98425943004109" : 11.299, + "99.98438008946238" : 11.351, + "99.98450074888366" : 11.42, + "99.98462140830496" : 11.493, + "99.98474206772624" : 11.566, + "99.98486821166668" : 11.65, + "99.98498887108796" : 11.726, + "99.98510953050926" : 11.784, + "99.98523018993055" : 11.832, + "99.98535633387098" : 11.908, + "99.98547699329227" : 12.038, + "99.98559765271355" : 12.131, + "99.98571831213485" : 12.208, + "99.98584445607528" : 12.287, + "99.98596511549657" : 12.336, + "99.98608577491785" : 12.388, + "99.98620643433914" : 12.448, + "99.98633257827959" : 12.553, + "99.98645323770087" : 12.634, + "99.98657389712216" : 12.724, + "99.98669455654344" : 12.818, + "99.98682070048389" : 12.921, + "99.98694135990517" : 13.037, + "99.98706201932646" : 13.224, + "99.98718267874774" : 13.385, + "99.98730882268818" : 13.576, + "99.98742948210948" : 13.792, + "99.98755014153076" : 14.589, + "99.9876762854712" : 15.123, + "99.98779694489248" : 15.827, + "99.98785727460313" : 15.915, + "99.98791760431376" : 16.334, + "99.98797793402441" : 16.677, + "99.98803826373506" : 17.081, + "99.9880985934457" : 17.511, + "99.9881644076755" : 17.893, + "99.98822473738615" : 18.249, + "99.98828506709678" : 18.687, + "99.98834539680743" : 19.016, + "99.98840572651807" : 19.299, + "99.98846605622872" : 19.81, + "99.98852638593937" : 20.089, + "99.98858671565" : 20.431, + "99.9886525298798" : 20.787, + "99.98871285959044" : 21.135, + "99.98877318930109" : 21.38, + "99.98883351901173" : 21.78, + "99.98889384872237" : 22.218, + "99.98895417843302" : 22.749, + "99.98901450814365" : 23.168, + "99.9890748378543" : 23.526, + "99.9891406520841" : 23.808, + "99.98920098179474" : 24.151, + "99.98926131150539" : 24.614, + "99.98932164121602" : 24.943, + "99.98938197092667" : 25.447, + "99.98944230063732" : 25.73, + "99.98950263034796" : 26.137, + "99.98956844457776" : 26.546, + "99.9896287742884" : 27.101, + "99.98968910399904" : 27.412, + "99.98974943370969" : 27.88, + "99.98980976342033" : 28.161, + "99.98987009313097" : 28.462, + "99.98993042284162" : 28.975, + "99.98999075255226" : 29.336, + "99.99005656678206" : 29.699, + "99.9901168964927" : 30.414, + "99.99017722620334" : 30.751, + "99.99023755591399" : 31.267, + "99.99029788562463" : 31.677, + "99.99035821533528" : 31.821, + "99.99041854504591" : 32.399, + "99.99047887475656" : 32.666, + "99.99054468898636" : 33.165, + "99.990605018697" : 33.389, + "99.99066534840765" : 34.003, + "99.99072567811828" : 34.251, + "99.99078600782893" : 34.677, + "99.99084633753958" : 35.049, + "99.99090666725021" : 35.455, + "99.99096699696086" : 35.936, + "99.99103281119066" : 36.141, + "99.9910931409013" : 36.68, + "99.99115347061195" : 37.043, + "99.99121380032258" : 37.622, + "99.99127413003323" : 37.874, + "99.99133445974388" : 38.37, + "99.99139478945452" : 38.532, + "99.99145511916517" : 38.733, + "99.99152093339495" : 39.204, + "99.9915812631056" : 39.513, + "99.99164159281625" : 40.207, + "99.99170192252689" : 40.395, + "99.99176225223754" : 41.062, + "99.99182258194817" : 41.358, + "99.99188291165882" : 41.744, + "99.99194872588862" : 41.958, + "99.99200905559925" : 42.483, + "99.9920693853099" : 43.087, + "99.99212971502054" : 43.389, + "99.99219004473119" : 43.76, + "99.99225037444184" : 44.153, + "99.99231070415247" : 44.351, + "99.99237103386312" : 44.763, + "99.99243684809292" : 44.872, + "99.99249717780356" : 45.138, + "99.9925575075142" : 45.641, + "99.99261783722484" : 45.882, + "99.99267816693549" : 46.39, + "99.99273849664614" : 46.671, + "99.99279882635678" : 47.132, + "99.99285915606742" : 47.325, + "99.99292497029721" : 47.675, + "99.99298530000786" : 48.336, + "99.99304562971851" : 48.909, + "99.99310595942914" : 49.308, + "99.9931662891398" : 49.562, + "99.99322661885043" : 50.002, + "99.99328694856108" : 50.469, + "99.99334727827173" : 51.003, + "99.99341309250151" : 51.53, + "99.99347342221216" : 52.006, + "99.9935337519228" : 52.197, + "99.99359408163345" : 52.676, + "99.9936544113441" : 52.95, + "99.99371474105473" : 53.296, + "99.99377507076538" : 53.699, + "99.99384088499518" : 54.178, + "99.99390121470582" : 54.403, + "99.99392863730156" : 54.772, + "99.99396154441646" : 54.907, + "99.99398896701221" : 55.137, + "99.9940218741271" : 55.301, + "99.99404929672285" : 55.317, + "99.99408220383775" : 55.467, + "99.99411511095265" : 55.938, + "99.9941425335484" : 55.966, + "99.99417544066328" : 56.208, + "99.99420286325903" : 56.38, + "99.99423577037393" : 56.601, + "99.99426319296968" : 56.76, + "99.99429610008458" : 56.986, + "99.99432900719947" : 57.273, + "99.99435642979522" : 57.44, + "99.99438933691012" : 57.595, + "99.99441675950587" : 57.708, + "99.99444966662077" : 58.079, + "99.9944770892165" : 58.428, + "99.9945099963314" : 58.513, + "99.99453741892715" : 58.658, + "99.99457032604205" : 58.992, + "99.99460323315695" : 59.173, + "99.99463065575269" : 59.237, + "99.99466356286759" : 59.455, + "99.99469098546334" : 59.721, + "99.99472389257824" : 60.023, + "99.99475131517399" : 60.079, + "99.99478422228887" : 60.21, + "99.99481712940377" : 60.476, + "99.99484455199952" : 60.793, + "99.99487745911442" : 60.905, + "99.99490488171017" : 61.125, + "99.99493778882506" : 61.535, + "99.9949652114208" : 61.614, + "99.9949981185357" : 61.848, + "99.9950310256506" : 62.223, + "99.99505844824635" : 62.435, + "99.99509135536124" : 62.529, + "99.99511877795699" : 62.576, + "99.99515168507189" : 62.687, + "99.99517910766764" : 63.099, + "99.99521201478254" : 63.275, + "99.99523943737829" : 63.361, + "99.99527234449317" : 63.443, + "99.99530525160807" : 63.95, + "99.99533267420382" : 64.028, + "99.99536558131872" : 64.076, + "99.99539300391447" : 64.169, + "99.99542591102936" : 64.229, + "99.99545333362511" : 64.529, + "99.99548624074001" : 64.851, + "99.9955191478549" : 64.9, + "99.99554657045066" : 64.937, + "99.99557947756554" : 65.032, + "99.99560690016129" : 65.171, + "99.99563980727619" : 65.583, + "99.99566722987194" : 65.715, + "99.99570013698684" : 65.851, + "99.99572755958258" : 65.993, + "99.99576046669748" : 66.23, + "99.99579337381238" : 66.618, + "99.99582079640813" : 66.671, + "99.99585370352303" : 66.744, + "99.99588112611876" : 66.804, + "99.99591403323366" : 67.269, + "99.99594145582941" : 67.374, + "99.99597436294431" : 67.485, + "99.99600727005921" : 67.686, + "99.99603469265494" : 67.869, + "99.99606759976984" : 68.171, + "99.9960950223656" : 68.32, + "99.9961279294805" : 68.51, + "99.99615535207624" : 68.883, + "99.99618825919113" : 68.984, + "99.99622116630603" : 69.139, + "99.99624858890178" : 69.253, + "99.99628149601668" : 69.518, + "99.99630891861243" : 69.764, + "99.99634182572731" : 69.876, + "99.99636924832306" : 69.955, + "99.99640215543796" : 70.128, + "99.99642957803371" : 70.302, + "99.99646248514861" : 70.463, + "99.9964953922635" : 70.581, + "99.99652281485925" : 70.793, + "99.99655572197415" : 71.064, + "99.9965831445699" : 71.172, + "99.9966160516848" : 71.218, + "99.99664347428055" : 71.303, + "99.99667638139543" : 71.539, + "99.99670928851033" : 71.904, + "99.99673671110608" : 71.943, + "99.99676961822098" : 71.988, + "99.99679704081673" : 72.089, + "99.99682994793162" : 72.445, + "99.99685737052737" : 72.639, + "99.99689027764227" : 72.885, + "99.99692318475716" : 73.054, + "99.99695060735291" : 73.243, + "99.99696706091035" : 73.462, + "99.9969835144678" : 73.493, + "99.9969944835061" : 73.572, + "99.99701093706355" : 73.651, + "99.997027390621" : 73.685, + "99.99704384417845" : 73.801, + "99.9970602977359" : 73.894, + "99.9970712667742" : 73.934, + "99.99708772033165" : 73.987, + "99.9971041738891" : 74.05, + "99.99712062744653" : 74.228, + "99.99713159648483" : 74.307, + "99.99714805004228" : 74.495, + "99.99716450359973" : 74.533, + "99.99718095715718" : 74.552, + "99.99719741071463" : 74.617, + "99.99720837975293" : 74.631, + "99.99722483331038" : 74.699, + "99.99724128686783" : 74.757, + "99.99725774042528" : 75.02, + "99.99726870946358" : 75.151, + "99.99728516302102" : 75.353, + "99.99730161657847" : 75.381, + "99.99731807013592" : 75.435, + "99.99733452369337" : 75.464, + "99.99734549273167" : 75.591, + "99.99736194628912" : 75.654, + "99.99737839984657" : 75.8, + "99.99739485340402" : 75.954, + "99.99741130696147" : 76.079, + "99.99742227599977" : 76.085, + "99.9974387295572" : 76.147, + "99.99745518311465" : 76.213, + "99.9974716366721" : 76.255, + "99.9974826057104" : 76.411, + "99.99749905926785" : 76.462, + "99.9975155128253" : 76.541, + "99.99753196638275" : 76.629, + "99.9975484199402" : 76.813, + "99.9975593889785" : 76.834, + "99.99757584253595" : 76.957, + "99.99759229609339" : 77.133, + "99.99760874965084" : 77.271, + "99.99761971868914" : 77.36, + "99.99763617224659" : 77.456, + "99.99765262580404" : 77.73, + "99.99766907936149" : 77.783, + "99.99768553291894" : 77.867, + "99.99769650195724" : 77.898, + "99.99771295551469" : 78.22, + "99.99772940907214" : 78.437, + "99.99774586262957" : 78.556, + "99.99776231618702" : 78.576, + "99.99777328522532" : 78.622, + "99.99778973878277" : 78.696, + "99.99780619234022" : 78.902, + "99.99782264589767" : 78.943, + "99.99783361493597" : 79.136, + "99.99785006849342" : 79.288, + "99.99786652205087" : 79.347, + "99.99788297560832" : 79.374, + "99.99789942916576" : 79.447, + "99.99791039820406" : 79.467, + "99.9979268517615" : 79.493, + "99.99794330531896" : 79.522, + "99.9979597588764" : 79.849, + "99.9979707279147" : 79.946, + "99.99798718147215" : 80.112, + "99.9980036350296" : 80.241, + "99.99802008858705" : 80.362, + "99.9980365421445" : 80.505, + "99.9980475111828" : 80.868, + "99.99806396474024" : 80.908, + "99.99808041829769" : 81.001, + "99.99809687185514" : 81.023, + "99.99811332541259" : 81.088, + "99.99812429445089" : 81.107, + "99.99814074800834" : 81.169, + "99.99815720156579" : 81.264, + "99.99817365512324" : 81.347, + "99.99818462416154" : 81.581, + "99.99820107771899" : 81.677, + "99.99821753127642" : 81.719, + "99.99823398483387" : 81.784, + "99.99825043839132" : 81.865, + "99.99826140742962" : 81.871, + "99.99827786098707" : 81.979, + "99.99829431454452" : 82.175, + "99.99831076810197" : 82.382, + "99.99832173714027" : 82.437, + "99.99833819069772" : 82.483, + "99.99835464425517" : 82.499, + "99.99837109781261" : 82.552, + "99.99838755137006" : 82.591, + "99.99839852040836" : 82.665, + "99.99841497396581" : 82.937, + "99.99843142752326" : 83.043, + "99.99844788108071" : 83.343, + "99.99846433463816" : 83.371, + "99.99847530367646" : 83.41, + "99.99848627271476" : 83.433, + "99.99849175723391" : 83.443, + "99.99849724175306" : 83.453, + "99.99850821079136" : 83.488, + "99.9985136953105" : 83.492, + "99.99852466434879" : 83.513, + "99.99853014886794" : 83.594, + "99.99853563338709" : 83.633, + "99.99854660242539" : 83.83, + "99.99855208694454" : 83.889, + "99.99856305598284" : 83.939, + "99.99856854050199" : 83.974, + "99.99857402502114" : 84.038, + "99.99858499405944" : 84.161, + "99.99859047857859" : 84.166, + "99.99860144761689" : 84.195, + "99.99860693213604" : 84.208, + "99.99861241665519" : 84.226, + "99.99862338569349" : 84.25, + "99.99862887021264" : 84.262, + "99.99863435473179" : 84.269, + "99.99864532377009" : 84.316, + "99.99865080828924" : 84.324, + "99.99866177732754" : 84.369, + "99.99866726184669" : 84.384, + "99.99867274636584" : 84.424, + "99.99868371540413" : 84.588, + "99.99868919992328" : 84.594, + "99.99870016896158" : 84.648, + "99.99870565348073" : 84.673, + "99.99871113799988" : 84.767, + "99.99872210703818" : 84.796, + "99.99872759155733" : 84.847, + "99.99873856059563" : 84.924, + "99.99874404511478" : 84.948, + "99.99874952963393" : 84.952, + "99.99876049867223" : 85.174, + "99.99876598319138" : 85.206, + "99.99877695222968" : 85.353, + "99.99878243674883" : 85.433, + "99.99878792126798" : 85.454, + "99.99879889030628" : 85.604, + "99.99880437482543" : 85.622, + "99.99880985934458" : 85.624, + "99.99882082838288" : 85.654, + "99.99882631290203" : 85.657, + "99.99883728194031" : 85.662, + "99.99884276645946" : 85.663, + "99.99884825097861" : 85.673, + "99.99885922001691" : 85.694, + "99.99886470453606" : 85.696, + "99.99887567357436" : 85.76, + "99.99888115809351" : 85.893, + "99.99888664261266" : 85.954, + "99.99889761165096" : 86.021, + "99.99890309617011" : 86.098, + "99.99891406520841" : 86.2, + "99.99891954972756" : 86.206, + "99.99892503424671" : 86.207, + "99.99893600328501" : 86.246, + "99.99894148780416" : 86.273, + "99.99895245684246" : 86.323, + "99.99895794136161" : 86.324, + "99.99896342588076" : 86.334, + "99.99897439491906" : 86.381, + "99.99897987943821" : 86.385, + "99.99898536395736" : 86.39, + "99.99899633299565" : 86.42, + "99.9990018175148" : 86.457, + "99.9990127865531" : 86.512, + "99.99901827107225" : 86.52, + "99.9990237555914" : 86.665, + "99.9990347246297" : 86.722, + "99.99904020914884" : 86.723, + "99.99905117818714" : 86.779, + "99.9990566627063" : 86.824, + "99.99906214722544" : 86.826, + "99.99907311626374" : 86.896, + "99.9990786007829" : 86.907, + "99.9990895698212" : 86.949, + "99.99909505434034" : 86.965, + "99.9991005388595" : 87.07, + "99.9991115078978" : 87.107, + "99.99911699241694" : 87.351, + "99.99912796145524" : 87.358, + "99.9991334459744" : 87.393, + "99.99913893049354" : 87.443, + "99.99914989953183" : 87.451, + "99.99915538405098" : 87.454, + "99.99916086857013" : 87.467, + "99.99917183760843" : 87.492, + "99.99917732212758" : 87.497, + "99.99918829116588" : 87.522, + "99.99919377568503" : 87.534, + "99.99919926020418" : 87.543, + "99.99921022924248" : 87.617, + "99.99921571376163" : 87.634, + "99.99922668279993" : 87.71, + "99.99923216731908" : 87.789, + "99.99923765183823" : 87.799, + "99.99924313635738" : 87.805, + "99.99924862087653" : 87.807, + "99.99925410539568" : 87.818, + "99.99925958991483" : 87.822, + "99.99926507443398" : 87.824, + "99.99927055895313" : 87.974, + "99.99927604347228" : 87.999, + "99.99928152799143" : 88.035, + "99.99928701251058" : 88.053, + "99.99929249702973" : 88.112, + "99.99929798154888" : 88.118, + "99.99930346606801" : 88.169, + "99.99930895058716" : 88.173, + "99.99931443510631" : 88.196, + "99.99931991962546" : 88.257, + "99.99932540414461" : 88.263, + "99.99933088866376" : 88.276, + "99.99933637318291" : 88.292, + "99.99934185770206" : 88.394, + "99.99934734222121" : 88.407, + "99.99935282674036" : 88.445, + "99.99935831125951" : 88.483, + "99.99936379577866" : 88.528, + "99.99936928029781" : 88.555, + "99.99937476481696" : 88.602, + "99.99938024933611" : 88.633, + "99.99938573385526" : 88.673, + "99.99939121837441" : 88.697, + "99.99939670289356" : 88.738, + "99.99940218741271" : 88.755, + "99.99940767193186" : 88.82, + "99.99941315645101" : 88.832, + "99.99941864097016" : 88.834, + "99.99942412548931" : 88.841, + "99.99942961000846" : 88.849, + "99.99943509452761" : 88.943, + "99.99944057904676" : 89.066, + "99.99944606356591" : 89.227, + "99.99945154808506" : 89.295, + "99.9994570326042" : 89.302, + "99.99946251712335" : 89.327, + "99.9994680016425" : 89.342, + "99.99947348616165" : 89.354, + "99.9994789706808" : 89.371, + "99.99948445519995" : 89.514, + "99.9994899397191" : 89.521, + "99.99949542423825" : 89.544, + "99.9995009087574" : 89.558, + "99.99950639327655" : 89.633, + "99.9995118777957" : 89.705, + "99.99951736231485" : 89.785, + "99.999522846834" : 89.888, + "99.99952833135315" : 90.149, + "99.9995338158723" : 90.152, + "99.99953930039145" : 90.18, + "99.9995447849106" : 90.202, + "99.99955026942975" : 90.223, + "99.9995557539489" : 90.226, + "99.99956123846805" : 90.301, + "99.9995667229872" : 90.343, + "99.99957220750635" : 90.536, + "99.9995776920255" : 90.541, + "99.99958317654465" : 90.626, + "99.9995886610638" : 90.769, + "99.99959414558295" : 90.791, + "99.9995996301021" : 90.857, + "99.99960511462125" : 90.893, + "99.99961059914038" : 90.945, + "99.99961608365953" : 90.954, + "99.99962156817868" : 91.059, + "99.99962705269783" : 91.062, + "99.99963253721698" : 91.086, + "99.99963802173613" : 91.091, + "99.99964350625528" : 91.098, + "99.99964899077443" : 91.127, + "99.99965447529358" : 91.136, + "99.99965995981273" : 91.141, + "99.99966544433188" : 91.224, + "99.99967092885103" : 91.288, + "99.99967641337018" : 91.36, + "99.99968189788933" : 91.42, + "99.99968738240848" : 91.623, + "99.99969286692763" : 91.633, + "99.99969835144678" : 91.635, + "99.99970383596593" : 91.69, + "99.99970932048508" : 91.704, + "99.99971480500423" : 91.711, + "99.99972028952338" : 91.717, + "99.99972577404253" : 91.75, + "99.99973125856168" : 91.771, + "99.99973674308083" : 91.785, + "99.99974222759998" : 91.805, + "99.99974771211913" : 91.922, + "99.99975319663828" : 91.936, + "99.99975868115743" : 92.215, + "99.99976416567658" : 92.237, + "99.99976965019572" : 92.262, + "99.99977513471487" : 92.265, + "99.99978061923402" : 92.266, + "99.99978610375317" : 92.283, + "99.99979158827232" : 92.312, + "99.99979707279147" : 92.36, + "99.99980255731062" : 92.37, + "99.99980804182977" : 92.392, + "99.99981352634892" : 92.406, + "99.99981901086807" : 92.421, + "99.99982449538722" : 92.458, + "99.99982997990637" : 92.493, + "99.99983546442552" : 92.547, + "99.99984094894467" : 92.565, + "99.99984643346382" : 92.651, + "99.99985191798297" : 92.668, + "99.99985740250212" : 92.7, + "99.99986288702127" : 92.702, + "99.99986837154042" : 92.758, + "99.99987385605957" : 92.898, + "99.99987934057872" : 92.964, + "99.99988482509787" : 92.981, + "99.99989030961702" : 92.983, + "99.99989579413617" : 92.996, + "99.99990127865532" : 93.002, + "99.99990676317447" : 93.041, + "99.99991224769362" : 93.109, + "99.99991773221277" : 93.113, + "99.9999232167319" : 93.127, + "99.99992870125105" : 93.188, + "99.9999341857702" : 93.189, + "99.99993967028935" : 93.218, + "99.9999451548085" : 93.255, + "99.99995063932765" : 93.308, + "99.9999561238468" : 94.0, + "99.99996160836595" : 94.005, + "99.9999670928851" : 95.046, + "99.99997257740425" : 95.068, + "99.9999780619234" : 95.86, + "99.99998354644255" : 96.903, + "99.9999890309617" : 96.924, + "99.99999451548085" : 97.993, + "100.0" : 99.032 + }, + "endToEndLatencyAvg" : [ 0.4536240836073305, 0.46884385732896455, 0.4487373754327765, 0.4434615974537639, 0.44559182766678734, 0.4513952539248922, 0.4457205209560735, 0.44881001069518717, 0.4509447161428336, 0.444306987950221, 0.443160534016214, 0.44593949058212135, 0.42921824435521033, 0.44004300257719237, 0.44653185305628057, 0.44425751027756843, 0.4381738244606969, 0.43999799552366536, 0.44026557924040305, 0.44687558089019364, 0.4444581593056666, 0.45160440866196416, 0.454812896155441, 0.4436620554140253, 0.4373898652174341, 0.4386945896308389, 0.4427693560968866, 0.43457077872063093, 0.43963154239369073, 0.4394301526127152, 0.4347670649025803, 0.43594783819275085, 0.45060042778637005, 0.4426980914736693, 0.442978660232588, 0.6110592161560842, 0.44520724556612157, 0.5869812876468845, 0.4381915184138401, 0.4440373145871798, 0.4511208441118198, 0.4461714807622684, 0.4383396556150155, 0.4648636595520595, 0.44546517253295154, 0.4448489139020537, 0.4384509547140136, 0.42927183660842694, 0.4457598717771503, 0.4315992706111594, 0.4547386977341166, 0.45221497332539073, 0.4463922456636935, 0.4465314751368305, 0.4414876942665127, 0.4554208052608886, 0.44777779386885913, 0.4551188291514178, 0.4380348949727805, 0.4431540304716891 ], + "endToEndLatency50pct" : [ 0.433, 0.44, 0.435, 0.428, 0.439, 0.445, 0.432, 0.432, 0.439, 0.433, 0.432, 0.437, 0.419, 0.431, 0.443, 0.434, 0.427, 0.432, 0.433, 0.438, 0.432, 0.443, 0.448, 0.435, 0.428, 0.425, 0.429, 0.422, 0.42, 0.421, 0.421, 0.419, 0.428, 0.427, 0.424, 0.431, 0.437, 0.439, 0.429, 0.431, 0.444, 0.436, 0.431, 0.446, 0.437, 0.44, 0.434, 0.418, 0.432, 0.423, 0.441, 0.444, 0.437, 0.438, 0.438, 0.457, 0.443, 0.445, 0.428, 0.427 ], + "endToEndLatency75pct" : [ 0.538, 0.544, 0.537, 0.529, 0.531, 0.539, 0.535, 0.533, 0.536, 0.531, 0.529, 0.533, 0.517, 0.525, 0.534, 0.53, 0.527, 0.528, 0.528, 0.532, 0.534, 0.541, 0.541, 0.531, 0.528, 0.523, 0.532, 0.521, 0.52, 0.526, 0.523, 0.521, 0.531, 0.531, 0.524, 0.534, 0.535, 0.539, 0.524, 0.532, 0.54, 0.534, 0.526, 0.544, 0.534, 0.532, 0.525, 0.517, 0.531, 0.519, 0.539, 0.539, 0.532, 0.534, 0.53, 0.545, 0.536, 0.541, 0.524, 0.526 ], + "endToEndLatency95pct" : [ 0.659, 0.676, 0.645, 0.651, 0.632, 0.651, 0.646, 0.65, 0.656, 0.643, 0.634, 0.642, 0.618, 0.628, 0.629, 0.636, 0.626, 0.624, 0.635, 0.638, 0.638, 0.651, 0.644, 0.634, 0.628, 0.626, 0.636, 0.637, 0.643, 0.641, 0.629, 0.632, 0.673, 0.644, 0.635, 0.642, 0.634, 0.646, 0.616, 0.633, 0.636, 0.632, 0.621, 0.655, 0.649, 0.64, 0.622, 0.613, 0.645, 0.628, 0.651, 0.644, 0.644, 0.64, 0.628, 0.65, 0.635, 0.642, 0.636, 0.644 ], + "endToEndLatency99pct" : [ 0.75, 0.779, 0.731, 0.751, 0.713, 0.74, 0.729, 0.741, 0.754, 0.725, 0.73, 0.728, 0.699, 0.712, 0.7, 0.716, 0.698, 0.698, 0.721, 0.72, 0.716, 0.73, 0.72, 0.715, 0.705, 0.712, 0.715, 0.723, 0.743, 0.732, 0.71, 0.714, 0.777, 0.726, 0.716, 0.749, 0.708, 0.752, 0.692, 0.704, 0.708, 0.706, 0.696, 0.748, 0.742, 0.724, 0.702, 0.687, 0.734, 0.732, 0.742, 0.723, 0.737, 0.735, 0.712, 0.738, 0.714, 0.717, 0.728, 0.754 ], + "endToEndLatency999pct" : [ 1.463, 4.61, 1.165, 0.878, 1.286, 1.006, 0.996, 1.634, 1.122, 0.914, 1.329, 1.116, 0.929, 1.104, 1.395, 0.964, 0.95, 1.145, 0.923, 1.384, 1.189, 0.861, 0.981, 1.222, 0.942, 1.664, 0.947, 0.891, 2.567, 1.554, 0.927, 1.348, 1.538, 0.862, 2.01, 64.941, 0.939, 56.312, 1.061, 1.112, 1.188, 1.166, 0.869, 4.306, 0.994, 0.878, 0.964, 1.133, 1.159, 1.059, 1.378, 0.918, 0.93, 1.408, 0.944, 1.22, 0.984, 1.035, 1.035, 1.328 ], + "endToEndLatency9999pct" : [ 9.172, 15.22, 5.113, 1.375, 5.469, 3.314, 3.558, 6.005, 4.148, 1.54, 5.904, 2.969, 2.288, 2.828, 5.136, 3.126, 3.524, 5.248, 2.455, 5.42, 4.126, 1.327, 3.776, 4.908, 3.694, 8.624, 2.147, 1.47, 9.606, 5.873, 2.457, 5.626, 5.565, 1.217, 10.304, 90.106, 2.98, 81.52, 8.944, 6.381, 4.408, 4.756, 1.429, 12.621, 2.923, 1.517, 3.083, 3.971, 7.829, 2.967, 9.534, 3.33, 2.006, 5.096, 1.636, 4.276, 6.264, 3.568, 3.398, 5.642 ], + "endToEndLatencyMax" : [ 11.615, 17.522, 6.756, 2.207, 8.785, 5.784, 9.687, 11.795, 5.921, 2.641, 10.785, 5.639, 10.111, 5.729, 7.014, 4.218, 8.95, 13.388, 10.602, 11.714, 7.351, 1.8, 9.068, 7.58, 10.06, 11.955, 5.401, 2.816, 12.687, 11.07, 10.836, 8.222, 11.148, 2.484, 13.409, 93.175, 10.613, 87.726, 12.201, 9.143, 6.711, 5.959, 11.06, 13.738, 10.991, 10.106, 5.804, 6.834, 11.497, 6.323, 12.807, 10.723, 5.659, 6.975, 11.046, 6.484, 9.8, 11.023, 4.516, 10.238 ], + "aggregatedEndToEndLatencyQuantiles" : { + "5.484644886520229E-6" : 0.193, + "0.5162751078130356" : 0.232, + "1.0714308632266134" : 0.239, + "1.507855026136801" : 0.243, + "2.024453727998141" : 0.247, + "2.6077950734835462" : 0.251, + "3.0831053686391625" : 0.254, + "3.585915673255791" : 0.257, + "4.111964418256606" : 0.26, + "4.656288000019306" : 0.263, + "5.026578314887833" : 0.265, + "5.5899171604720985" : 0.268, + "6.163682315985639" : 0.271, + "6.548901834235274" : 0.273, + "7.130367431169489" : 0.276, + "7.526144890825676" : 0.278, + "8.121327584621078" : 0.281, + "8.523916973226322" : 0.283, + "9.131911797476636" : 0.286, + "9.543726358781006" : 0.288, + "10.16882230578749" : 0.291, + "10.58880350332789" : 0.293, + "11.014346130783222" : 0.295, + "11.661808459636935" : 0.298, + "12.099038865345442" : 0.3, + "12.537119391011359" : 0.302, + "13.209838509567497" : 0.305, + "13.660275940162744" : 0.307, + "14.11585248301666" : 0.309, + "14.578904596850903" : 0.311, + "15.043821489946565" : 0.313, + "15.512051108553683" : 0.315, + "16.233183187523135" : 0.318, + "16.717768017181857" : 0.32, + "17.2128010953494" : 0.322, + "17.714657071755774" : 0.324, + "18.224772923361247" : 0.326, + "18.739973040776526" : 0.328, + "19.002341998212994" : 0.329, + "19.532953967759394" : 0.331, + "20.071414464138403" : 0.333, + "20.621518861611495" : 0.335, + "21.17754667556203" : 0.337, + "21.74560780039359" : 0.339, + "22.034944756737076" : 0.34, + "22.61443039686726" : 0.342, + "23.204797572452296" : 0.344, + "23.504078189975047" : 0.345, + "24.104953945162656" : 0.347, + "24.710436802054943" : 0.349, + "25.014521968498283" : 0.35, + "25.62946583781982" : 0.352, + "26.2471575142295" : 0.354, + "26.5596012794799" : 0.355, + "27.183474150676687" : 0.357, + "27.80439079827964" : 0.359, + "28.11580893493626" : 0.36, + "28.740559349314893" : 0.362, + "29.05221881034652" : 0.363, + "29.67504959901487" : 0.365, + "30.294041136262656" : 0.367, + "30.6036987019107" : 0.368, + "31.221894965649945" : 0.37, + "31.52785039599959" : 0.371, + "32.139399270136366" : 0.373, + "32.744075884230334" : 0.375, + "33.04482638658267" : 0.376, + "33.64522497766516" : 0.378, + "34.241581385466276" : 0.38, + "34.53878880722192" : 0.381, + "35.129249221770024" : 0.383, + "35.71901308641755" : 0.385, + "36.012935205886166" : 0.386, + "36.599134051357446" : 0.388, + "37.18681923559298" : 0.39, + "37.76923367609256" : 0.392, + "38.061537825319654" : 0.393, + "38.64968920437054" : 0.395, + "39.23834517075098" : 0.397, + "39.532398921696874" : 0.398, + "40.12087389479606" : 0.4, + "40.71081326807995" : 0.402, + "41.00725832419637" : 0.403, + "41.606143153290176" : 0.405, + "42.20545578468513" : 0.407, + "42.50572363828745" : 0.408, + "43.108595804213756" : 0.41, + "43.717161031532264" : 0.412, + "44.021032296825034" : 0.413, + "44.631089347552674" : 0.415, + "45.24212814971501" : 0.417, + "45.54807809541977" : 0.418, + "46.16345525168734" : 0.42, + "46.774488569204784" : 0.422, + "47.07875472892938" : 0.423, + "47.6842650090461" : 0.425, + "48.29118484289865" : 0.427, + "48.59304324351807" : 0.428, + "49.191873226163004" : 0.43, + "49.786441639731116" : 0.432, + "50.08358873039301" : 0.433, + "50.380461588810576" : 0.434, + "50.674795056645685" : 0.435, + "50.96653977209436" : 0.436, + "51.2599243963641" : 0.437, + "51.55065445250876" : 0.438, + "51.839859777374976" : 0.439, + "52.12546169055074" : 0.44, + "52.410975849408324" : 0.441, + "52.69646258504147" : 0.442, + "52.982382607620664" : 0.443, + "53.26697534613731" : 0.444, + "53.55084411152894" : 0.445, + "53.83116979632387" : 0.446, + "54.11074408476936" : 0.447, + "54.38806966881136" : 0.448, + "54.663612743265254" : 0.449, + "54.93566209892643" : 0.45, + "55.208956468976844" : 0.451, + "55.48190530639941" : 0.452, + "55.75202406706053" : 0.453, + "56.021627271102325" : 0.454, + "56.28877335423495" : 0.455, + "56.55363782509478" : 0.456, + "56.81615486794319" : 0.457, + "57.076494506771645" : 0.458, + "57.33636795078475" : 0.459, + "57.59812811263881" : 0.46, + "57.85418972845578" : 0.461, + "58.11113437209948" : 0.462, + "58.365671256637995" : 0.463, + "58.618886341758866" : 0.464, + "58.86941943553022" : 0.465, + "59.12021579225613" : 0.466, + "59.36903767682289" : 0.467, + "59.61617029076461" : 0.468, + "59.85995727132555" : 0.469, + "60.10351938144614" : 0.47, + "60.3477012564389" : 0.471, + "60.59192152394588" : 0.472, + "60.83429895077098" : 0.473, + "61.07273840256756" : 0.474, + "61.31214863650906" : 0.475, + "61.55129012285111" : 0.476, + "61.78907690190619" : 0.477, + "62.02585450630216" : 0.478, + "62.26143645811286" : 0.479, + "62.730872698595014" : 0.481, + "62.96505058131477" : 0.482, + "63.198180896861196" : 0.483, + "63.4309163179758" : 0.484, + "63.66392597133472" : 0.485, + "63.89497760646916" : 0.486, + "64.12561240859222" : 0.487, + "64.35782678844261" : 0.488, + "64.59025506944356" : 0.489, + "64.82210746273142" : 0.49, + "65.05426699613294" : 0.491, + "65.2892949988101" : 0.492, + "65.52092800630251" : 0.493, + "65.75605473258764" : 0.494, + "66.22834298841079" : 0.496, + "66.46492314559083" : 0.497, + "66.70337356667719" : 0.498, + "66.94136876223796" : 0.499, + "67.18089417372207" : 0.5, + "67.42255311206704" : 0.501, + "67.66285734312504" : 0.502, + "67.90661690046154" : 0.503, + "68.15211509022707" : 0.504, + "68.39573204679652" : 0.505, + "68.64011136900521" : 0.506, + "68.88662970271963" : 0.507, + "69.13460146732899" : 0.508, + "69.38466836628498" : 0.509, + "69.6343677940336" : 0.51, + "69.88661209700955" : 0.511, + "70.13983815142018" : 0.512, + "70.39414468087347" : 0.513, + "70.6505079521592" : 0.514, + "70.90440313324599" : 0.515, + "71.16159458590958" : 0.516, + "71.42066178712437" : 0.517, + "71.67658628681917" : 0.518, + "71.93276308017876" : 0.519, + "72.19299851075438" : 0.52, + "72.45334911887261" : 0.521, + "72.71210917997374" : 0.522, + "72.97202650114593" : 0.523, + "73.23189994515903" : 0.524, + "73.49008960319198" : 0.525, + "73.74937070555734" : 0.526, + "74.00760972539425" : 0.527, + "74.26540448899536" : 0.528, + "74.52336927658796" : 0.529, + "74.78258456321467" : 0.53, + "75.04144334792377" : 0.531, + "75.2997591527891" : 0.532, + "75.55947902674538" : 0.533, + "75.81659369438056" : 0.534, + "76.07432264224303" : 0.535, + "76.33188156611402" : 0.536, + "76.58955566752763" : 0.537, + "76.84617123247814" : 0.538, + "77.10222187900533" : 0.539, + "77.35758694492172" : 0.54, + "77.61385697724437" : 0.541, + "77.86949627540508" : 0.542, + "78.12471325590953" : 0.543, + "78.37619519324625" : 0.544, + "78.62768809987276" : 0.545, + "78.8783912176356" : 0.546, + "79.12648364443244" : 0.547, + "79.37511905107307" : 0.548, + "79.62283852201764" : 0.549, + "79.8711722731895" : 0.55, + "80.11785514625052" : 0.551, + "80.36238255387114" : 0.552, + "80.60379468319621" : 0.553, + "80.844592532294" : 0.554, + "81.08436475279801" : 0.555, + "81.32160306736444" : 0.556, + "81.56075552299626" : 0.557, + "81.79762088171042" : 0.558, + "82.03168358688755" : 0.559, + "82.26370051952202" : 0.56, + "82.49439565273883" : 0.561, + "82.7248659155153" : 0.562, + "82.95552265621791" : 0.563, + "83.18215366757381" : 0.564, + "83.40717767797796" : 0.565, + "83.63239365095315" : 0.566, + "83.85366067961003" : 0.567, + "84.0762330537499" : 0.568, + "84.29614537511982" : 0.569, + "84.51451651127663" : 0.57, + "84.73326608793059" : 0.571, + "84.94894426344811" : 0.572, + "85.16331160883776" : 0.573, + "85.37437719800572" : 0.574, + "85.58442264322478" : 0.575, + "85.79486846752056" : 0.576, + "85.9994731450122" : 0.577, + "86.20560255378228" : 0.578, + "86.40755814779374" : 0.579, + "86.6081261266489" : 0.58, + "86.80673608727956" : 0.581, + "87.00331672930223" : 0.582, + "87.19734152680776" : 0.583, + "87.38916698171381" : 0.584, + "87.57936349708856" : 0.585, + "87.76706449903995" : 0.586, + "87.95448029945722" : 0.587, + "88.13936219393693" : 0.588, + "88.32225316232284" : 0.589, + "88.5015845961774" : 0.59, + "88.68198553578482" : 0.591, + "88.86030779498024" : 0.592, + "89.0345494783801" : 0.593, + "89.20633952551569" : 0.594, + "89.37702715902908" : 0.595, + "89.5457951668322" : 0.596, + "89.71133820344204" : 0.597, + "89.87570752604617" : 0.598, + "90.0408063064202" : 0.599, + "90.20126507722024" : 0.6, + "90.35959032115942" : 0.601, + "90.51614950944513" : 0.602, + "90.67191342422231" : 0.603, + "90.82377775648517" : 0.604, + "90.97468227589289" : 0.605, + "91.12303095078349" : 0.606, + "91.27028269669678" : 0.607, + "91.41659656833448" : 0.608, + "91.56162154842384" : 0.609, + "91.70360803524608" : 0.61, + "91.84324709405689" : 0.611, + "91.98263385920292" : 0.612, + "92.11892728463295" : 0.613, + "92.2529720056595" : 0.614, + "92.3845979982911" : 0.615, + "92.51417821838002" : 0.616, + "92.64183881275866" : 0.617, + "92.76777174399805" : 0.618, + "92.89176859559251" : 0.619, + "93.01540346062444" : 0.62, + "93.13595595523016" : 0.621, + "93.25570220703756" : 0.622, + "93.37224542623123" : 0.623, + "93.488541836405" : 0.624, + "93.60300637518668" : 0.625, + "93.71567195044558" : 0.626, + "93.82577619654246" : 0.627, + "93.93513453093479" : 0.628, + "94.04237579240093" : 0.629, + "94.1481361997477" : 0.63, + "94.25210861286146" : 0.631, + "94.35453984076211" : 0.632, + "94.45694364543833" : 0.633, + "94.5564351036798" : 0.634, + "94.65363398035872" : 0.635, + "94.74975238199498" : 0.636, + "94.84383598037836" : 0.637, + "94.93631806245486" : 0.638, + "95.02833394971601" : 0.639, + "95.11833697230381" : 0.64, + "95.20694141044554" : 0.641, + "95.2940266019537" : 0.642, + "95.38009713415786" : 0.643, + "95.46379829977106" : 0.644, + "95.54815762277062" : 0.645, + "95.63038341890933" : 0.646, + "95.70996561621274" : 0.647, + "95.78799017436837" : 0.648, + "95.86506588895865" : 0.649, + "95.9421086956796" : 0.65, + "96.01748417035505" : 0.651, + "96.09112101260146" : 0.652, + "96.16357865619729" : 0.653, + "96.23520263377036" : 0.654, + "96.30480277738029" : 0.655, + "96.37341568491067" : 0.656, + "96.43964277191539" : 0.657, + "96.505392694815" : 0.658, + "96.56923396129409" : 0.659, + "96.6320112066652" : 0.66, + "96.69408093284595" : 0.661, + "96.75545410912612" : 0.662, + "96.81565905604545" : 0.663, + "96.87376338397324" : 0.664, + "96.930902414401" : 0.665, + "96.98739974137706" : 0.666, + "97.04293725549796" : 0.667, + "97.09758625714724" : 0.668, + "97.15256433748972" : 0.669, + "97.20609995622705" : 0.67, + "97.25775434176829" : 0.671, + "97.3085695766419" : 0.672, + "97.35798074242457" : 0.673, + "97.40686538229812" : 0.674, + "97.45515219587905" : 0.675, + "97.50231465725824" : 0.676, + "97.54829243534193" : 0.677, + "97.59377111074096" : 0.678, + "97.6383886968928" : 0.679, + "97.68165706040256" : 0.68, + "97.72454149877026" : 0.681, + "97.7668006876209" : 0.682, + "97.80776001563343" : 0.683, + "97.84808312483914" : 0.684, + "97.88857077339142" : 0.685, + "97.92782986148913" : 0.686, + "97.96530643999873" : 0.687, + "98.00408287934643" : 0.688, + "98.04182272081057" : 0.689, + "98.07819688569798" : 0.69, + "98.11432972621037" : 0.691, + "98.14923400626819" : 0.692, + "98.18230093028902" : 0.693, + "98.21629475929566" : 0.694, + "98.24872546450966" : 0.695, + "98.28133167836002" : 0.696, + "98.31206762830408" : 0.697, + "98.34366466749532" : 0.698, + "98.37443900995359" : 0.699, + "98.40440162496864" : 0.7, + "98.4335141200263" : 0.701, + "98.46251143754132" : 0.702, + "98.49091092876372" : 0.703, + "98.51874550156282" : 0.704, + "98.54497855805505" : 0.705, + "98.57183137941945" : 0.706, + "98.59765308754518" : 0.707, + "98.62306344730443" : 0.708, + "98.64793082721992" : 0.709, + "98.67250752095642" : 0.71, + "98.69669480490597" : 0.711, + "98.71985097561686" : 0.712, + "98.74291390736468" : 0.713, + "98.76484151762098" : 0.714, + "98.78710917586025" : 0.715, + "98.80882836961088" : 0.716, + "98.82971938198364" : 0.717, + "98.85108755846151" : 0.718, + "98.87090358043652" : 0.719, + "98.89065927131776" : 0.72, + "98.91037108503991" : 0.721, + "98.92964412717114" : 0.722, + "98.94892265394726" : 0.723, + "98.96712070568074" : 0.724, + "98.98594949157616" : 0.725, + "99.00426820549714" : 0.726, + "99.02142965934706" : 0.727, + "99.03867338287029" : 0.728, + "99.05511634824006" : 0.729, + "99.07133992781439" : 0.73, + "99.08705343541428" : 0.731, + "99.10252013399426" : 0.732, + "99.11772905426459" : 0.733, + "99.13252662616841" : 0.734, + "99.14691284970576" : 0.735, + "99.16137037362662" : 0.736, + "99.17541654918101" : 0.737, + "99.18861260477797" : 0.738, + "99.20232970163916" : 0.739, + "99.21590968237818" : 0.74, + "99.22891926004901" : 0.741, + "99.241533943288" : 0.742, + "99.25400054111506" : 0.743, + "99.2660283673512" : 0.744, + "99.27762290664131" : 0.745, + "99.28925035380072" : 0.746, + "99.30027997466752" : 0.747, + "99.31171545925592" : 0.748, + "99.32298640449771" : 0.749, + "99.33379115492416" : 0.75, + "99.34440394277958" : 0.751, + "99.35477540625999" : 0.752, + "99.36494942252448" : 0.753, + "99.37463530539408" : 0.754, + "99.38399210957049" : 0.755, + "99.39357926883211" : 0.756, + "99.40310061235512" : 0.757, + "99.41235320827867" : 0.758, + "99.42147417272496" : 0.759, + "99.43047995962863" : 0.76, + "99.43892631275386" : 0.761, + "99.44724651904671" : 0.762, + "99.45536927812365" : 0.763, + "99.46338782894775" : 0.764, + "99.47131314080877" : 0.765, + "99.47926587589423" : 0.766, + "99.48685662441717" : 0.767, + "99.49401957063897" : 0.768, + "99.50088634603689" : 0.769, + "99.5081205926422" : 0.77, + "99.515042214489" : 0.771, + "99.52187059737271" : 0.772, + "99.52810663860869" : 0.773, + "99.5342000790776" : 0.774, + "99.54040321244426" : 0.775, + "99.54664473832513" : 0.776, + "99.55314952716054" : 0.777, + "99.55909488221752" : 0.778, + "99.56502378333985" : 0.779, + "99.57077717582581" : 0.78, + "99.57653605295665" : 0.781, + "99.5819274588801" : 0.782, + "99.58763697420697" : 0.783, + "99.59305580335486" : 0.784, + "99.59809619200557" : 0.785, + "99.60324078890913" : 0.786, + "99.60799597602573" : 0.787, + "99.61281697888099" : 0.788, + "99.61743504987544" : 0.789, + "99.6220860287392" : 0.79, + "99.62669861508877" : 0.791, + "99.63105890777356" : 0.792, + "99.6354740469072" : 0.793, + "99.6397904624329" : 0.794, + "99.64371746817164" : 0.795, + "99.64804485298711" : 0.796, + "99.65202670517472" : 0.797, + "99.65605243452143" : 0.798, + "99.65994653239086" : 0.799, + "99.66381320703586" : 0.8, + "99.667575673428" : 0.801, + "99.67112972331448" : 0.802, + "99.67467280391116" : 0.803, + "99.67816652270388" : 0.804, + "99.68168766472103" : 0.805, + "99.68509362919555" : 0.806, + "99.68845571651099" : 0.807, + "99.69163681054518" : 0.808, + "99.69476854277538" : 0.809, + "99.69786736713625" : 0.81, + "99.70080713679543" : 0.811, + "99.70369206000575" : 0.812, + "99.70666473753424" : 0.813, + "99.70953869145478" : 0.814, + "99.71219325957985" : 0.815, + "99.71496848989243" : 0.816, + "99.7177108123357" : 0.817, + "99.72032150330168" : 0.818, + "99.72289928639834" : 0.819, + "99.72536737659728" : 0.82, + "99.7280054907877" : 0.821, + "99.73032549557469" : 0.822, + "99.73258516926794" : 0.823, + "99.73490517405493" : 0.824, + "99.73725808671125" : 0.825, + "99.73934773641301" : 0.826, + "99.74182131125683" : 0.827, + "99.74417970855804" : 0.828, + "99.74630775077401" : 0.829, + "99.74811219894167" : 0.83, + "99.7502128179332" : 0.831, + "99.7521708361577" : 0.832, + "99.75408497722309" : 0.833, + "99.75608687260667" : 0.834, + "99.75806134476582" : 0.835, + "99.759937093317" : 0.836, + "99.76343081210972" : 0.838, + "99.76520235240807" : 0.839, + "99.7668203226496" : 0.84, + "99.76855347043373" : 0.841, + "99.77021531783434" : 0.842, + "99.7716193869253" : 0.843, + "99.77480048095948" : 0.845, + "99.77625391185441" : 0.846, + "99.77780058171241" : 0.847, + "99.78058678131475" : 0.849, + "99.78205666614434" : 0.85, + "99.78351009703927" : 0.851, + "99.78635114309049" : 0.853, + "99.78766197321836" : 0.854, + "99.79003133980935" : 0.856, + "99.79123796168437" : 0.857, + "99.79352505860206" : 0.859, + "99.79575182442599" : 0.861, + "99.79799504418457" : 0.863, + "99.79907551922722" : 0.864, + "99.80113226105966" : 0.866, + "99.80309027928415" : 0.868, + "99.80492215067625" : 0.87, + "99.8058764788865" : 0.871, + "99.80686919961096" : 0.872, + "99.80765350382974" : 0.873, + "99.80940859019343" : 0.875, + "99.81017095583265" : 0.876, + "99.81105398365938" : 0.877, + "99.8118986189719" : 0.878, + "99.81282552395773" : 0.879, + "99.81359337424183" : 0.88, + "99.81447640206856" : 0.881, + "99.81596274083282" : 0.883, + "99.81675252969647" : 0.884, + "99.81747650282149" : 0.885, + "99.81879830223914" : 0.887, + "99.81949485213973" : 0.888, + "99.82089343658579" : 0.89, + "99.82157353255172" : 0.891, + "99.82292823983869" : 0.893, + "99.82364124367395" : 0.894, + "99.82428294712567" : 0.895, + "99.8254895690007" : 0.897, + "99.82659198262289" : 0.899, + "99.82775472733883" : 0.901, + "99.82834158434169" : 0.902, + "99.82940012080479" : 0.904, + "99.83046962655766" : 0.906, + "99.83159946340429" : 0.908, + "99.83210953537873" : 0.909, + "99.83312967932763" : 0.911, + "99.83422112366004" : 0.913, + "99.83519739044984" : 0.915, + "99.83623947297828" : 0.917, + "99.83716089331921" : 0.919, + "99.8379781054073" : 0.921, + "99.838959856842" : 0.923, + "99.8398538539585" : 0.925, + "99.84114823015172" : 0.928, + "99.84196544223981" : 0.93, + "99.84283750077677" : 0.932, + "99.84402766871713" : 0.935, + "99.84475164184215" : 0.937, + "99.8457937243706" : 0.94, + "99.84679741438482" : 0.943, + "99.84775722723997" : 0.946, + "99.84874446331955" : 0.949, + "99.84968782224003" : 0.952, + "99.85060375793607" : 0.955, + "99.85163487117474" : 0.958, + "99.85256177616057" : 0.961, + "99.85369709765207" : 0.965, + "99.85449237116062" : 0.968, + "99.85561672336236" : 0.972, + "99.85662589802148" : 0.976, + "99.85766249590503" : 0.98, + "99.85857294695619" : 0.984, + "99.85942855155848" : 0.987, + "99.86039384905851" : 0.991, + "99.86134269262388" : 0.994, + "99.86232992870346" : 0.998, + "99.86342137303588" : 1.003, + "99.86431537015238" : 1.007, + "99.86537939126036" : 1.012, + "99.86631178089107" : 1.016, + "99.86723320123201" : 1.02, + "99.86831367627465" : 1.025, + "99.86921315803603" : 1.029, + "99.87026620985425" : 1.034, + "99.87126989986848" : 1.039, + "99.87217486627476" : 1.044, + "99.87314564841968" : 1.049, + "99.87412739985436" : 1.054, + "99.87504333555042" : 1.059, + "99.87607444878907" : 1.064, + "99.87703426164421" : 1.069, + "99.87795568198516" : 1.074, + "99.87900873380336" : 1.081, + "99.8798862769852" : 1.086, + "99.88087351306478" : 1.091, + "99.8818826877239" : 1.097, + "99.8829796167012" : 1.103, + "99.88393394491146" : 1.109, + "99.88482794202797" : 1.115, + "99.8857493623689" : 1.12, + "99.88676950631779" : 1.127, + "99.88775125775248" : 1.133, + "99.88868364738319" : 1.138, + "99.88975315313606" : 1.145, + "99.89072941992586" : 1.152, + "99.89165084026679" : 1.158, + "99.89259968383216" : 1.165, + "99.89357046597708" : 1.171, + "99.89453576347711" : 1.177, + "99.89558881529531" : 1.184, + "99.89651572028113" : 1.19, + "99.89755231816468" : 1.197, + "99.89850116173005" : 1.203, + "99.89946645923008" : 1.209, + "99.900437241375" : 1.216, + "99.90141899280968" : 1.223, + "99.90242268282393" : 1.23, + "99.90293823944324" : 1.234, + "99.90340991890349" : 1.238, + "99.90390902158816" : 1.242, + "99.9043861856933" : 1.246, + "99.90484141121887" : 1.25, + "99.905318575324" : 1.254, + "99.90582864729845" : 1.257, + "99.90632774998312" : 1.26, + "99.9068213680229" : 1.264, + "99.90733143999735" : 1.268, + "99.9077208497843" : 1.271, + "99.90825834498318" : 1.275, + "99.90875744766785" : 1.279, + "99.909185249969" : 1.282, + "99.9096733833639" : 1.286, + "99.91023281714233" : 1.29, + "99.9106496501537" : 1.294, + "99.91122553786678" : 1.3, + "99.91169721732703" : 1.304, + "99.91220180465659" : 1.308, + "99.91265154553727" : 1.312, + "99.9131725868015" : 1.317, + "99.91368814342083" : 1.322, + "99.91409949178733" : 1.326, + "99.91462053305153" : 1.332, + "99.91510866644644" : 1.336, + "99.91559131519645" : 1.341, + "99.91603008678737" : 1.346, + "99.9165456434067" : 1.352, + "99.91700635357718" : 1.357, + "99.91750545626185" : 1.364, + "99.91800455894652" : 1.37, + "99.91852560021074" : 1.377, + "99.91902470289541" : 1.383, + "99.91945798984145" : 1.389, + "99.91994612323636" : 1.396, + "99.92042328734148" : 1.403, + "99.92091142073637" : 1.41, + "99.92140503877617" : 1.416, + "99.92191511075062" : 1.423, + "99.92237033627619" : 1.43, + "99.9228968621853" : 1.437, + "99.92339596486997" : 1.445, + "99.92386764433022" : 1.452, + "99.9243228698558" : 1.458, + "99.92482745718536" : 1.466, + "99.92530462129048" : 1.473, + "99.92579823933026" : 1.483, + "99.92628637272517" : 1.491, + "99.92679644469962" : 1.5, + "99.92725167022519" : 1.508, + "99.92776174219964" : 1.517, + "99.92827729881897" : 1.527, + "99.92873800898944" : 1.534, + "99.92923162702922" : 1.544, + "99.92970330648947" : 1.555, + "99.9302188631088" : 1.567, + "99.93069054256904" : 1.578, + "99.9311951298986" : 1.589, + "99.93167777864862" : 1.599, + "99.9321330041742" : 1.61, + "99.9326595300833" : 1.621, + "99.93312024025377" : 1.634, + "99.93363031222822" : 1.647, + "99.93410199168846" : 1.66, + "99.93460657901802" : 1.676, + "99.93509471241292" : 1.686, + "99.9355499379385" : 1.699, + "99.93607097920273" : 1.713, + "99.93653717401807" : 1.725, + "99.93703627670274" : 1.74, + "99.93751344080788" : 1.753, + "99.93801802813744" : 1.771, + "99.9384842229528" : 1.784, + "99.93899429492724" : 1.805, + "99.93948791296702" : 1.825, + "99.93995959242726" : 1.844, + "99.94046417975682" : 1.86, + "99.94093585921706" : 1.876, + "99.9414514158364" : 1.895, + "99.9419340645864" : 1.913, + "99.94238929011199" : 1.931, + "99.94287193886201" : 1.952, + "99.9433655569018" : 1.968, + "99.9438482056518" : 1.99, + "99.94434182369159" : 2.012, + "99.94482447244161" : 2.033, + "99.9453126058365" : 2.052, + "99.94582816245584" : 2.072, + "99.94630532656096" : 2.091, + "99.94679894460076" : 2.113, + "99.94728159335077" : 2.133, + "99.94776424210077" : 2.157, + "99.94827979872011" : 2.181, + "99.94876244747013" : 2.205, + "99.94923961157525" : 2.226, + "99.94971677568039" : 2.251, + "99.9501994244304" : 2.279, + "99.95069852711507" : 2.308, + "99.95119214515486" : 2.342, + "99.9514170155952" : 2.356, + "99.95166930925998" : 2.372, + "99.951910633635" : 2.39, + "99.95215744265488" : 2.411, + "99.952393282385" : 2.434, + "99.95264557604979" : 2.451, + "99.95291980829411" : 2.47, + "99.95313919408957" : 2.486, + "99.95338600310946" : 2.503, + "99.95362184283958" : 2.526, + "99.95387413650437" : 2.542, + "99.95412643016914" : 2.558, + "99.9543458159646" : 2.577, + "99.95460907891916" : 2.592, + "99.9548394340044" : 2.609, + "99.95508624302428" : 2.631, + "99.95533305204418" : 2.654, + "99.9555688917743" : 2.674, + "99.95581570079419" : 2.691, + "99.95606250981409" : 2.71, + "99.9563038341891" : 2.731, + "99.9565451585641" : 2.757, + "99.956791967584" : 2.772, + "99.95703877660388" : 2.795, + "99.95729107026867" : 2.814, + "99.9575214253539" : 2.831, + "99.95777371901868" : 2.847, + "99.95802052803857" : 2.863, + "99.95826185241359" : 2.879, + "99.95850866143347" : 2.903, + "99.95874998580848" : 2.927, + "99.95900776411814" : 2.946, + "99.95923811920338" : 2.959, + "99.9594739589335" : 2.97, + "99.9597207679534" : 2.988, + "99.9599620923284" : 3.001, + "99.9602089013483" : 3.018, + "99.96046667965797" : 3.037, + "99.96072445796763" : 3.058, + "99.96094932840798" : 3.077, + "99.9611851681381" : 3.105, + "99.9614264925131" : 3.133, + "99.96167878617788" : 3.152, + "99.9619201105529" : 3.169, + "99.96216143492789" : 3.199, + "99.9624027593029" : 3.22, + "99.96265505296769" : 3.251, + "99.96290186198758" : 3.279, + "99.9631377017177" : 3.305, + "99.96337902609271" : 3.329, + "99.9636258351126" : 3.352, + "99.96387812877738" : 3.377, + "99.9641139685075" : 3.402, + "99.96436077752739" : 3.43, + "99.96460758654729" : 3.456, + "99.96484891092229" : 3.487, + "99.96509571994218" : 3.518, + "99.96534252896208" : 3.547, + "99.96558385333708" : 3.575, + "99.96583066235698" : 3.611, + "99.9660665020871" : 3.643, + "99.96631331110699" : 3.667, + "99.966554635482" : 3.703, + "99.9668014445019" : 3.736, + "99.9670427688769" : 3.764, + "99.96728957789679" : 3.79, + "99.9675309022718" : 3.821, + "99.96778319593658" : 3.849, + "99.96802452031159" : 3.878, + "99.9682658446866" : 3.897, + "99.9685071690616" : 3.926, + "99.96875946272638" : 3.961, + "99.96900627174628" : 3.989, + "99.96924211147639" : 4.02, + "99.9694834358514" : 4.045, + "99.96973572951619" : 4.075, + "99.96998802318096" : 4.11, + "99.97022386291108" : 4.142, + "99.97045970264121" : 4.177, + "99.97071199630598" : 4.219, + "99.9709478360361" : 4.257, + "99.971194645056" : 4.299, + "99.971435969431" : 4.342, + "99.9716827784509" : 4.377, + "99.97192410282591" : 4.413, + "99.9721709118458" : 4.452, + "99.9724122362208" : 4.5, + "99.97265904524069" : 4.55, + "99.97290585426059" : 4.599, + "99.9731471786356" : 4.647, + "99.97340495694526" : 4.687, + "99.9736353120305" : 4.723, + "99.9738821210504" : 4.769, + "99.97412344542539" : 4.82, + "99.97437025444529" : 4.853, + "99.9746115788203" : 4.896, + "99.97485838784019" : 4.942, + "99.97510519686008" : 4.98, + "99.9753465212351" : 5.029, + "99.97559333025498" : 5.062, + "99.97571947708738" : 5.079, + "99.97583465462999" : 5.093, + "99.97596628610727" : 5.115, + "99.97608146364989" : 5.152, + "99.9761966411925" : 5.173, + "99.97632278802489" : 5.197, + "99.9764434502124" : 5.225, + "99.9765641123999" : 5.245, + "99.97669025923229" : 5.268, + "99.97682189070956" : 5.288, + "99.9769315836073" : 5.307, + "99.9770522457948" : 5.33, + "99.97718387727208" : 5.346, + "99.9772990548147" : 5.363, + "99.97741971700219" : 5.388, + "99.97755134847947" : 5.409, + "99.97766652602209" : 5.428, + "99.97779815749936" : 5.445, + "99.9779078503971" : 5.476, + "99.9780285125846" : 5.507, + "99.97815465941699" : 5.534, + "99.9782753216045" : 5.571, + "99.978395983792" : 5.603, + "99.9785166459795" : 5.623, + "99.97864827745677" : 5.643, + "99.9787634549994" : 5.661, + "99.97888960183178" : 5.681, + "99.9790047793744" : 5.716, + "99.97913092620679" : 5.734, + "99.97926804232895" : 5.761, + "99.9793722505818" : 5.802, + "99.9794929127693" : 5.838, + "99.97962454424658" : 5.865, + "99.97974520643407" : 5.89, + "99.9798603839767" : 5.913, + "99.9799810461642" : 5.942, + "99.98010719299658" : 5.964, + "99.98023333982898" : 6.004, + "99.9803485173716" : 6.026, + "99.98046917955911" : 6.055, + "99.9805953263915" : 6.091, + "99.98072147322388" : 6.127, + "99.98083665076649" : 6.18, + "99.980957312954" : 6.229, + "99.98108345978639" : 6.299, + "99.98120412197389" : 6.339, + "99.9813247841614" : 6.409, + "99.9814454463489" : 6.442, + "99.98157159318129" : 6.482, + "99.9816922553688" : 6.528, + "99.98181840220118" : 6.607, + "99.98193906438868" : 6.673, + "99.9820597265762" : 6.797, + "99.9821803887637" : 6.865, + "99.98230653559608" : 6.925, + "99.98243268242848" : 6.987, + "99.98254785997109" : 7.036, + "99.98266852215859" : 7.098, + "99.9827891843461" : 7.172, + "99.98292081582338" : 7.244, + "99.98303599336599" : 7.299, + "99.9831566555535" : 7.384, + "99.983277317741" : 7.476, + "99.98340346457339" : 7.554, + "99.9835241267609" : 7.606, + "99.9836447889484" : 7.741, + "99.9837654511359" : 7.831, + "99.9838915979683" : 7.924, + "99.9840122601558" : 7.977, + "99.98413840698818" : 8.024, + "99.9842535845308" : 8.069, + "99.98437973136319" : 8.124, + "99.98450039355069" : 8.181, + "99.9846210557382" : 8.281, + "99.9847417179257" : 8.392, + "99.98486786475809" : 8.475, + "99.9849885269456" : 8.574, + "99.9851091891331" : 8.669, + "99.9852298513206" : 8.741, + "99.985355998153" : 8.851, + "99.9854766603405" : 8.944, + "99.985597322528" : 9.05, + "99.9857179847155" : 9.147, + "99.98584413154789" : 9.23, + "99.98597027838028" : 9.346, + "99.9860854559229" : 9.443, + "99.9862061181104" : 9.505, + "99.98633226494279" : 9.614, + "99.9864529271303" : 9.697, + "99.9865735893178" : 9.821, + "99.98669973615019" : 10.016, + "99.9868203983377" : 10.116, + "99.9869410605252" : 10.23, + "99.9870617227127" : 10.31, + "99.98718786954508" : 10.395, + "99.9873085317326" : 10.481, + "99.9874291939201" : 10.567, + "99.9875498561076" : 10.707, + "99.98767600293999" : 10.836, + "99.98779666512749" : 10.954, + "99.98785699622124" : 11.023, + "99.987917327315" : 11.087, + "99.98797765840875" : 11.148, + "99.98804347414739" : 11.206, + "99.98809832059625" : 11.245, + "99.98816413633489" : 11.306, + "99.98822446742864" : 11.368, + "99.98828479852239" : 11.433, + "99.98834512961615" : 11.492, + "99.9884054607099" : 11.553, + "99.98846579180365" : 11.66, + "99.9885261228974" : 11.724, + "99.98858645399115" : 11.784, + "99.98865226972978" : 11.843, + "99.98871260082355" : 11.939, + "99.9887729319173" : 12.028, + "99.98883326301105" : 12.113, + "99.9888935941048" : 12.175, + "99.98895392519854" : 12.217, + "99.9890142562923" : 12.267, + "99.98908007203094" : 12.344, + "99.9891404031247" : 12.404, + "99.98920073421844" : 12.492, + "99.98926106531219" : 12.589, + "99.98932139640594" : 12.653, + "99.98938172749969" : 12.766, + "99.98944205859345" : 12.896, + "99.9895023896872" : 13.038, + "99.98956820542584" : 13.162, + "99.98962853651959" : 13.279, + "99.98969435225823" : 13.409, + "99.98974919870709" : 13.474, + "99.98980952980085" : 13.677, + "99.9898698608946" : 13.923, + "99.98993019198835" : 14.258, + "99.9899905230821" : 14.394, + "99.99005633882074" : 14.561, + "99.99011666991449" : 14.804, + "99.99017700100825" : 15.241, + "99.990237332102" : 15.389, + "99.99029766319575" : 15.524, + "99.9903579942895" : 15.663, + "99.99041832538325" : 16.059, + "99.990478656477" : 16.299, + "99.99054447221565" : 16.608, + "99.9906048033094" : 16.765, + "99.99066513440314" : 17.181, + "99.9907254654969" : 17.479, + "99.99078579659064" : 17.745, + "99.99084612768439" : 18.049, + "99.99090645877816" : 18.534, + "99.99097227451679" : 19.075, + "99.99103260561054" : 19.575, + "99.99109293670429" : 19.992, + "99.99115326779804" : 20.415, + "99.99121359889179" : 20.71, + "99.99127392998555" : 20.952, + "99.9913342610793" : 21.441, + "99.99139459217305" : 21.917, + "99.99146040791169" : 22.495, + "99.99152073900544" : 22.918, + "99.99158107009919" : 23.187, + "99.99164140119294" : 23.776, + "99.9917017322867" : 24.107, + "99.99176206338045" : 24.667, + "99.9918223944742" : 25.198, + "99.99188272556795" : 25.617, + "99.99194854130658" : 26.167, + "99.99200887240033" : 26.486, + "99.9920692034941" : 26.89, + "99.99212953458785" : 27.3, + "99.9921898656816" : 27.76, + "99.99225019677534" : 27.961, + "99.9923105278691" : 28.37, + "99.99237085896284" : 28.827, + "99.9924366747015" : 29.273, + "99.99249700579524" : 29.72, + "99.99255733688899" : 30.194, + "99.99261766798274" : 30.626, + "99.99267799907649" : 31.06, + "99.99273833017024" : 31.554, + "99.992798661264" : 31.71, + "99.99285899235775" : 32.119, + "99.99292480809639" : 32.533, + "99.99298513919014" : 32.795, + "99.99304547028389" : 33.269, + "99.99310580137764" : 33.64, + "99.9931661324714" : 34.221, + "99.99322646356515" : 34.603, + "99.9932867946589" : 35.227, + "99.99335261039754" : 35.586, + "99.99341294149129" : 35.876, + "99.99347327258504" : 36.195, + "99.9935336036788" : 36.562, + "99.99359393477255" : 36.885, + "99.9936542658663" : 37.491, + "99.99371459696005" : 37.77, + "99.9937749280538" : 38.402, + "99.99384074379243" : 38.779, + "99.9939010748862" : 39.196, + "99.99392849811062" : 39.359, + "99.99396140597995" : 39.569, + "99.99398882920437" : 40.035, + "99.9940217370737" : 40.21, + "99.99404916029813" : 40.307, + "99.99408206816744" : 40.61, + "99.99411497603677" : 41.031, + "99.9941423992612" : 41.199, + "99.99417530713052" : 41.462, + "99.99420273035494" : 41.601, + "99.99423563822427" : 41.74, + "99.9942630614487" : 41.914, + "99.99429596931802" : 42.114, + "99.99432887718734" : 42.439, + "99.99435630041177" : 42.628, + "99.99438920828109" : 43.192, + "99.99441663150552" : 43.284, + "99.99444953937484" : 43.564, + "99.99447696259928" : 43.98, + "99.99450987046859" : 44.207, + "99.99454277833792" : 44.283, + "99.99457020156234" : 44.49, + "99.99460310943167" : 44.667, + "99.9946305326561" : 44.882, + "99.99466344052541" : 45.022, + "99.99469086374985" : 45.239, + "99.99472377161916" : 45.638, + "99.9947511948436" : 45.713, + "99.99478410271291" : 45.846, + "99.99481701058224" : 46.175, + "99.99484443380668" : 46.357, + "99.99487734167599" : 46.486, + "99.99490476490043" : 46.541, + "99.99494315741462" : 46.708, + "99.99496509599417" : 47.006, + "99.9949980038635" : 47.134, + "99.99503091173281" : 47.291, + "99.99505833495725" : 47.518, + "99.99509124282656" : 47.815, + "99.995118666051" : 48.116, + "99.99515157392031" : 48.388, + "99.99518448178964" : 48.495, + "99.99521190501407" : 49.014, + "99.9952393282385" : 49.138, + "99.99527223610782" : 49.311, + "99.99530514397713" : 49.441, + "99.99533256720157" : 49.744, + "99.99536547507088" : 49.978, + "99.99539289829532" : 50.197, + "99.99542580616465" : 50.527, + "99.99545322938907" : 50.856, + "99.9954861372584" : 51.129, + "99.99551904512771" : 51.295, + "99.99554646835215" : 51.685, + "99.99557937622147" : 52.037, + "99.9956067994459" : 52.114, + "99.99563970731522" : 52.406, + "99.99566713053964" : 52.528, + "99.99570003840897" : 52.754, + "99.99573294627828" : 53.076, + "99.99576036950272" : 53.13, + "99.99579327737204" : 53.385, + "99.99582070059647" : 53.719, + "99.9958536084658" : 54.067, + "99.99588103169022" : 54.305, + "99.99591393955954" : 54.568, + "99.99594136278398" : 54.751, + "99.99597427065329" : 55.104, + "99.99600717852262" : 55.203, + "99.99603460174704" : 55.39, + "99.99606750961637" : 55.747, + "99.99609493284079" : 55.937, + "99.99612784071012" : 56.268, + "99.99615526393455" : 56.659, + "99.99618817180387" : 56.938, + "99.99622107967319" : 57.443, + "99.99624850289761" : 57.637, + "99.99628141076694" : 57.945, + "99.99630883399138" : 58.266, + "99.99634174186069" : 58.471, + "99.99636916508513" : 58.761, + "99.99640207295444" : 59.062, + "99.99642949617888" : 59.209, + "99.99646240404819" : 59.491, + "99.99649531191751" : 59.958, + "99.99652273514195" : 60.062, + "99.99655564301126" : 60.233, + "99.9965830662357" : 60.66, + "99.99661597410501" : 60.802, + "99.99664339732945" : 61.035, + "99.99667630519878" : 61.397, + "99.99670921306809" : 61.592, + "99.99673663629252" : 61.846, + "99.99676954416184" : 62.087, + "99.99679696738627" : 62.223, + "99.99682987525559" : 62.402, + "99.99685729848002" : 62.485, + "99.99689569099424" : 62.664, + "99.99692311421866" : 62.898, + "99.9969505374431" : 63.025, + "99.99696699137776" : 63.178, + "99.99698344531241" : 63.216, + "99.99699441460218" : 63.266, + "99.99701086853685" : 63.332, + "99.99702732247151" : 63.54, + "99.99704377640616" : 63.842, + "99.99706023034082" : 63.981, + "99.9970711996306" : 64.097, + "99.99708765356526" : 64.212, + "99.99710410749992" : 64.273, + "99.99712056143457" : 64.328, + "99.99713153072435" : 64.386, + "99.99714798465901" : 64.776, + "99.99716443859367" : 64.825, + "99.99718089252833" : 64.931, + "99.99719734646298" : 64.941, + "99.99720831575276" : 65.154, + "99.99722476968742" : 65.224, + "99.99724122362208" : 65.249, + "99.99725767755675" : 65.323, + "99.9972741314914" : 65.514, + "99.99728510078117" : 65.589, + "99.99730155471583" : 65.652, + "99.9973180086505" : 65.836, + "99.99733446258516" : 65.872, + "99.99734543187492" : 65.966, + "99.99736188580958" : 66.194, + "99.99737833974424" : 66.525, + "99.99739479367891" : 66.555, + "99.99741673225844" : 66.582, + "99.99742221690333" : 66.615, + "99.997438670838" : 66.673, + "99.99745512477266" : 67.079, + "99.99747157870732" : 67.128, + "99.99748254799708" : 67.236, + "99.99749900193174" : 67.338, + "99.9975154558664" : 67.35, + "99.99753190980107" : 67.403, + "99.99754836373573" : 67.462, + "99.99755933302549" : 67.801, + "99.99757578696016" : 67.975, + "99.99759224089482" : 68.052, + "99.99760869482948" : 68.208, + "99.99761966411926" : 68.254, + "99.9976361180539" : 68.388, + "99.99765257198857" : 68.511, + "99.99766902592323" : 68.676, + "99.99768547985789" : 68.931, + "99.99769644914767" : 68.975, + "99.99771290308232" : 69.048, + "99.99772935701698" : 69.099, + "99.99774581095164" : 69.153, + "99.9977622648863" : 69.431, + "99.99777323417608" : 69.516, + "99.99778968811073" : 69.618, + "99.99780614204539" : 69.754, + "99.99782259598005" : 69.892, + "99.99783356526983" : 69.912, + "99.99785001920448" : 70.084, + "99.99786647313914" : 70.236, + "99.9978829270738" : 70.357, + "99.99789938100847" : 70.435, + "99.99791035029824" : 70.476, + "99.99792680423289" : 70.54, + "99.99794325816755" : 70.568, + "99.99795971210222" : 70.712, + "99.99797068139199" : 71.014, + "99.99798713532665" : 71.085, + "99.9980035892613" : 71.108, + "99.99802004319596" : 71.166, + "99.99803649713063" : 71.313, + "99.9980474664204" : 71.458, + "99.99806392035507" : 71.74, + "99.99808037428971" : 71.824, + "99.99809682822438" : 71.854, + "99.99811328215904" : 71.879, + "99.99812425144881" : 71.894, + "99.99814070538346" : 72.029, + "99.99815715931813" : 72.261, + "99.99817361325279" : 72.346, + "99.99818458254256" : 72.372, + "99.99820103647723" : 72.563, + "99.99821749041188" : 72.618, + "99.99823394434654" : 72.857, + "99.9982503982812" : 73.039, + "99.99826136757098" : 73.104, + "99.99827782150564" : 73.417, + "99.99829427544029" : 73.538, + "99.99831072937495" : 73.604, + "99.99832169866472" : 73.715, + "99.99833815259939" : 73.738, + "99.99835460653405" : 73.801, + "99.99837654511359" : 74.054, + "99.99838751440336" : 74.208, + "99.99839848369314" : 74.333, + "99.9984149376278" : 74.509, + "99.99843139156245" : 74.591, + "99.998453330142" : 74.609, + "99.99846429943177" : 74.736, + "99.99847526872155" : 74.872, + "99.99848623801132" : 75.146, + "99.99849172265621" : 75.221, + "99.9984972073011" : 75.224, + "99.99850817659086" : 75.305, + "99.99851366123575" : 75.318, + "99.99852463052552" : 75.367, + "99.99853011517041" : 75.423, + "99.9985355998153" : 75.434, + "99.99854656910507" : 75.55, + "99.99855205374996" : 75.635, + "99.99856302303974" : 75.668, + "99.99856850768462" : 75.68, + "99.99857399232951" : 75.727, + "99.99858496161927" : 75.867, + "99.99859044626416" : 75.954, + "99.99860141555394" : 76.033, + "99.99860690019882" : 76.061, + "99.99861238484371" : 76.066, + "99.99862335413349" : 76.096, + "99.99862883877837" : 76.1, + "99.99863980806815" : 76.115, + "99.99864529271304" : 76.154, + "99.99865077735791" : 76.284, + "99.99866174664768" : 76.337, + "99.99866723129257" : 76.477, + "99.99867271593746" : 76.72, + "99.99868368522723" : 76.843, + "99.99868916987212" : 76.872, + "99.99870562380679" : 76.969, + "99.99871110845167" : 76.973, + "99.99872207774145" : 77.165, + "99.99872756238632" : 77.175, + "99.9987385316761" : 77.219, + "99.99874401632098" : 77.246, + "99.99874950096587" : 77.393, + "99.99876047025565" : 77.491, + "99.99876595490053" : 77.505, + "99.99877692419031" : 77.604, + "99.9987824088352" : 77.616, + "99.99878789348008" : 77.626, + "99.99879886276985" : 77.727, + "99.99880434741473" : 77.744, + "99.99880983205962" : 77.797, + "99.9988208013494" : 77.857, + "99.99882628599428" : 77.876, + "99.99883725528406" : 78.132, + "99.99884273992895" : 78.212, + "99.99884822457383" : 78.236, + "99.99885919386361" : 78.337, + "99.9988646785085" : 78.339, + "99.99887564779826" : 78.418, + "99.99888113244315" : 78.435, + "99.99888661708803" : 78.447, + "99.99889758637781" : 78.477, + "99.9989030710227" : 78.487, + "99.99891404031247" : 78.551, + "99.99891952495736" : 78.58, + "99.99892500960225" : 78.618, + "99.99893597889202" : 78.799, + "99.9989414635369" : 78.827, + "99.99895243282667" : 79.196, + "99.99895791747156" : 79.201, + "99.99896340211644" : 79.245, + "99.99897437140622" : 79.269, + "99.99897985605111" : 79.288, + "99.998985340696" : 79.29, + "99.99899630998577" : 79.31, + "99.99900179463066" : 79.366, + "99.99901276392043" : 79.394, + "99.9990182485653" : 79.643, + "99.9990237332102" : 79.706, + "99.99903470249997" : 79.926, + "99.99904018714486" : 80.053, + "99.99905664107952" : 80.104, + "99.99906212572441" : 80.114, + "99.99907309501418" : 80.129, + "99.99907857965907" : 80.151, + "99.99908954894883" : 80.248, + "99.99909503359372" : 80.25, + "99.9991005182386" : 80.331, + "99.99911148752838" : 80.544, + "99.99912245681816" : 80.587, + "99.99912794146304" : 80.743, + "99.99913342610793" : 80.756, + "99.99913891075282" : 80.901, + "99.9991498800426" : 80.935, + "99.99915536468748" : 81.023, + "99.99916084933236" : 81.068, + "99.99917181862213" : 81.181, + "99.99917730326702" : 81.212, + "99.9991882725568" : 81.226, + "99.99919375720168" : 81.361, + "99.99919924184657" : 81.386, + "99.99921021113634" : 81.48, + "99.99921569578123" : 81.503, + "99.999226665071" : 81.534, + "99.9992321497159" : 81.582, + "99.99923763436077" : 81.648, + "99.99924311900565" : 81.65, + "99.99924860365054" : 81.676, + "99.99925408829543" : 81.722, + "99.99925957294032" : 81.774, + "99.9992650575852" : 81.785, + "99.9992705422301" : 81.787, + "99.99927602687498" : 82.073, + "99.99928151151987" : 82.167, + "99.99928699616476" : 82.195, + "99.99929248080964" : 82.267, + "99.99929796545453" : 82.284, + "99.99930345009942" : 82.285, + "99.99930893474429" : 82.345, + "99.99931441938918" : 82.346, + "99.99931990403407" : 82.354, + "99.99932538867895" : 82.364, + "99.99933087332384" : 82.394, + "99.99933635796873" : 82.417, + "99.99934184261362" : 82.418, + "99.9993473272585" : 82.433, + "99.99935281190339" : 82.453, + "99.99935829654828" : 82.474, + "99.99936378119317" : 82.492, + "99.99936926583806" : 82.522, + "99.99937475048294" : 82.625, + "99.99938023512782" : 82.654, + "99.9993857197727" : 82.7, + "99.99939120441759" : 82.708, + "99.99939668906248" : 82.844, + "99.99940217370737" : 82.856, + "99.99940765835225" : 82.982, + "99.99941314299714" : 83.136, + "99.99941862764203" : 83.204, + "99.99942411228692" : 83.319, + "99.9994295969318" : 83.325, + "99.99943508157669" : 83.365, + "99.99944605086647" : 83.375, + "99.99945153551135" : 83.381, + "99.99945702015623" : 83.394, + "99.99946250480112" : 83.402, + "99.999467989446" : 83.424, + "99.99947347409089" : 83.528, + "99.99947895873578" : 83.556, + "99.99948444338067" : 83.65, + "99.99948992802555" : 84.033, + "99.99949541267044" : 84.085, + "99.99950089731533" : 84.09, + "99.99950638196022" : 84.119, + "99.9995118666051" : 84.166, + "99.99951735124999" : 84.191, + "99.99952283589488" : 84.193, + "99.99952832053975" : 84.248, + "99.99953380518464" : 84.484, + "99.99953928982953" : 84.662, + "99.99954477447442" : 84.673, + "99.9995502591193" : 84.755, + "99.99955574376419" : 84.845, + "99.99956122840908" : 85.1, + "99.99956671305397" : 85.345, + "99.99957219769885" : 85.372, + "99.99957768234374" : 85.477, + "99.99958316698863" : 85.53, + "99.99958865163352" : 85.536, + "99.9995941362784" : 85.542, + "99.99959962092328" : 85.581, + "99.99960510556816" : 85.638, + "99.99961059021305" : 85.653, + "99.99961607485794" : 85.838, + "99.99962155950283" : 86.014, + "99.99962704414772" : 86.112, + "99.9996325287926" : 86.185, + "99.99963801343749" : 86.216, + "99.99964349808238" : 86.28, + "99.99964898272727" : 86.437, + "99.99965446737215" : 86.649, + "99.99965995201704" : 86.674, + "99.99966543666193" : 86.747, + "99.99967092130682" : 86.793, + "99.99967640595169" : 86.847, + "99.99968189059658" : 87.241, + "99.99968737524146" : 87.278, + "99.99969285988635" : 87.405, + "99.99969834453124" : 87.481, + "99.99970382917613" : 87.528, + "99.99970931382101" : 87.691, + "99.9997147984659" : 87.696, + "99.99972028311079" : 87.726, + "99.99972576775568" : 87.747, + "99.99973125240057" : 87.877, + "99.99973673704545" : 87.992, + "99.99974222169034" : 88.059, + "99.99974770633521" : 88.087, + "99.9997531909801" : 88.235, + "99.99975867562499" : 88.362, + "99.99976416026988" : 88.392, + "99.99976964491476" : 88.408, + "99.99977512955965" : 88.445, + "99.99978061420454" : 88.525, + "99.99978609884943" : 88.652, + "99.99979158349431" : 88.702, + "99.9997970681392" : 89.215, + "99.99980255278409" : 89.243, + "99.99980803742898" : 89.26, + "99.99981352207386" : 89.591, + "99.99981900671874" : 89.981, + "99.99982449136363" : 90.048, + "99.99982997600851" : 90.08, + "99.9998354606534" : 90.106, + "99.99984094529829" : 90.227, + "99.99984642994318" : 90.45, + "99.99985191458806" : 90.805, + "99.99985739923295" : 90.808, + "99.99986288387784" : 90.973, + "99.99986836852273" : 91.008, + "99.99987385316761" : 91.01, + "99.9998793378125" : 91.226, + "99.99988482245739" : 91.231, + "99.99989030710228" : 91.513, + "99.99989579174715" : 91.533, + "99.99990127639204" : 91.571, + "99.99990676103693" : 91.692, + "99.99991224568181" : 91.808, + "99.9999177303267" : 91.873, + "99.99992321497159" : 92.092, + "99.99992869961648" : 92.196, + "99.99993418426136" : 92.231, + "99.99993966890625" : 92.318, + "99.99994515355114" : 92.349, + "99.99995063819603" : 92.383, + "99.99995612284091" : 92.463, + "99.9999616074858" : 92.471, + "99.99996709213067" : 92.933, + "99.99997257677556" : 92.987, + "99.99997806142045" : 93.041, + "99.99998354606534" : 93.06, + "99.99998903071022" : 93.085, + "99.99999451535511" : 93.091, + "100.0" : 93.175 + }, + "aggregatedEndToEndLatencyAvg" : 0.44986829020199454, + "aggregatedEndToEndLatency50pct" : 0.433, + "aggregatedEndToEndLatency75pct" : 0.531, + "aggregatedEndToEndLatency95pct" : 0.639, + "aggregatedEndToEndLatency99pct" : 0.726, + "aggregatedEndToEndLatency999pct" : 1.214, + "aggregatedEndToEndLatency9999pct" : 14.402, + "aggregatedEndToEndLatencyMax" : 93.175 +} \ No newline at end of file diff --git a/blog/results/rabbitmq/latency/mirrored-30k.json b/blog/results/rabbitmq/latency/mirrored-30k.json new file mode 100644 index 00000000..788b7e66 --- /dev/null +++ b/blog/results/rabbitmq/latency/mirrored-30k.json @@ -0,0 +1,3589 @@ +{ + "workload" : "100-partitions-10K-rate-4-producer", + "driver" : "RabbitMQ", + "publishRate" : [ 30990.857982909383, 30245.932872886453, 30245.326015685685, 30244.94088434048, 30241.979819945303, 30243.28246674103, 30244.082619932055, 30242.907059867666, 30243.82372503029, 30244.65195450975, 30243.71439512533, 30248.761166446868, 30238.749324850218, 30243.519647017856, 30243.46512226653, 30245.465091273752, 30241.785305874993, 30244.163556474698, 30242.069834447706, 30244.75710605764, 30244.238739225668, 30244.13127899011, 30242.233441467597, 30163.613057090013, 30317.595521099556, 30249.91848981935, 30245.79165733729, 30242.577140408048, 30243.4817805414, 30244.26220906743, 30242.787134781636, 30244.523070441657, 30243.016743305856, 30243.88975995305, 30245.593356095633, 30241.674073878603, 30243.053990482003, 30243.01520646127, 30243.43415897326, 30243.587802706068, 30244.62856020317, 30248.43725552259, 30238.11196465943, 30244.47322914175, 30243.577395182594, 30244.922629196884, 30243.388660781005, 30242.58855102584, 30244.05018779891, 30241.01533484408, 30245.70262903708, 30241.897202072538, 30244.19610883601, 30150.334161828192, 30338.8143358544, 30242.844826688874, 30245.19409496744, 30242.750725204503, 30244.370952094207, 30241.878015371836 ], + "consumeRate" : [ 30990.061839998547, 30245.63432257645, 30245.624578670155, 30244.045165529842, 30243.7712413413, 30243.381988871006, 30243.58500921677, 30243.006579452314, 30244.02276499268, 30243.45765452142, 30244.11249719089, 30248.06437845625, 30238.450757034556, 30244.116786445673, 30244.659418619576, 30243.972151588117, 30241.785305874993, 30244.36260260345, 30242.1693548797, 30244.75710605764, 30244.63684426301, 30243.335061263813, 30242.83059873191, 30163.216005489267, 30323.169011008824, 30245.240677633083, 30244.597304483974, 30243.572449857103, 30243.879899196854, 30242.86876698794, 30243.682901817487, 30243.52777228945, 30244.310621814988, 30243.690696629834, 30244.49849298772, 30242.072189700644, 30242.75541652241, 30244.508118561, 30243.23511174994, 30243.886383900874, 30243.03610380782, 30249.134061274992, 30238.01243661781, 30244.17464313594, 30244.77176278612, 30243.628711731315, 30243.98585264809, 30242.787610370273, 30243.453028070446, 30242.707228981468, 30243.81174392134, 30243.48959325818, 30242.50426502604, 30151.524756987354, 30338.615281861446, 30243.143411357178, 30244.099264326906, 30242.949784306154, 30243.972828284906, 30242.17658951231 ], + "backlog" : [ -10, -7, -10, -1, -19, -20, -15, -16, -18, -6, -10, -2, 0, -6, -18, -3, -3, -5, -6, -6, -10, -2, -8, -4, -60, -13, 0, -11, -15, -1, -10, 0, -13, -11, 0, -4, -1, -16, -14, -17, -1, -8, -7, -4, -16, -3, -9, -10, -5, -22, -3, -19, -2, -14, -12, -15, -3, -6, -2, -5 ], + "publishLatencyAvg" : [ 0.8674366875411997, 0.9112380217552957, 0.8531195569551526, 0.8552018974470353, 0.8688169535029122, 0.9037800033564667, 0.8497541856975505, 0.8564818962311649, 0.8479965250812789, 0.8307094222403569, 0.8395083143834061, 0.8534911773223289, 0.8929002468404423, 0.8681234052775154, 0.8437896640350675, 0.8157718866409551, 0.8657061222071935, 0.8442862746259424, 0.9187686910736322, 0.805299072431913, 0.8584287552362869, 0.8405400839160839, 0.871070251129606, 0.8378133212669683, 0.8586394559832974, 0.8523984706853949, 0.8397776399273379, 0.850095946448494, 0.8137274914191125, 0.8359453231443634, 0.8348235582555583, 0.8855811743875307, 0.8152436337907658, 0.8667868473188487, 0.8973941638748658, 0.8567864235195771, 0.8830617561017345, 0.8915571772232296, 0.8815564320008952, 0.8412479497946503, 0.8915584818607835, 0.8582877701866625, 0.8699078506942959, 0.8891715615291453, 0.848717852864909, 0.8540413452424833, 0.8389817874855606, 0.830941501299898, 0.853254324416829, 0.9408408313835441, 0.902822290881093, 0.8848088156409506, 0.8696410479170986, 0.8872825224252874, 0.9278082704546946, 0.8986853084717427, 0.8642326991868314, 0.8571499039056432, 0.846615878020365, 0.8450532899370118 ], + "publishLatency50pct" : [ 0.843, 0.821, 0.814, 0.831, 0.829, 0.838, 0.824, 0.797, 0.831, 0.8, 0.802, 0.827, 0.831, 0.814, 0.814, 0.798, 0.788, 0.803, 0.815, 0.759, 0.82, 0.816, 0.816, 0.801, 0.827, 0.802, 0.809, 0.809, 0.784, 0.801, 0.784, 0.828, 0.796, 0.816, 0.834, 0.806, 0.848, 0.812, 0.807, 0.82, 0.834, 0.811, 0.838, 0.853, 0.804, 0.818, 0.79, 0.777, 0.822, 0.865, 0.839, 0.823, 0.844, 0.813, 0.86, 0.852, 0.834, 0.832, 0.805, 0.806 ], + "publishLatency75pct" : [ 0.953, 0.939, 0.933, 0.947, 0.945, 0.951, 0.94, 0.92, 0.943, 0.92, 0.922, 0.941, 0.948, 0.935, 0.94, 0.912, 0.908, 0.918, 0.933, 0.867, 0.938, 0.929, 0.935, 0.919, 0.936, 0.92, 0.921, 0.924, 0.898, 0.919, 0.905, 0.937, 0.901, 0.932, 0.95, 0.923, 0.961, 0.927, 0.932, 0.937, 0.958, 0.934, 0.959, 0.963, 0.931, 0.937, 0.91, 0.902, 0.937, 0.98, 0.963, 0.949, 0.958, 0.936, 0.988, 0.972, 0.952, 0.951, 0.926, 0.927 ], + "publishLatency95pct" : [ 1.138, 1.164, 1.159, 1.142, 1.14, 1.166, 1.132, 1.145, 1.117, 1.127, 1.124, 1.143, 1.162, 1.156, 1.146, 1.101, 1.126, 1.129, 1.186, 1.088, 1.149, 1.118, 1.176, 1.135, 1.121, 1.135, 1.112, 1.127, 1.091, 1.129, 1.158, 1.119, 1.083, 1.123, 1.166, 1.156, 1.147, 1.124, 1.218, 1.131, 1.2, 1.195, 1.171, 1.148, 1.175, 1.136, 1.128, 1.153, 1.132, 1.198, 1.216, 1.173, 1.159, 1.178, 1.318, 1.169, 1.158, 1.16, 1.136, 1.148 ], + "publishLatency99pct" : [ 1.592, 4.029, 1.979, 1.588, 1.872, 2.824, 1.508, 1.928, 1.398, 1.573, 1.577, 1.758, 3.497, 2.322, 1.461, 1.305, 1.67, 1.672, 3.589, 1.619, 1.907, 1.446, 1.829, 1.638, 1.773, 1.855, 1.484, 1.603, 1.383, 1.849, 1.946, 1.924, 1.452, 1.807, 3.729, 2.244, 1.947, 2.007, 3.255, 1.424, 2.778, 2.149, 1.665, 1.71, 1.817, 1.773, 1.705, 1.816, 1.625, 4.323, 2.624, 2.727, 1.583, 2.066, 3.006, 1.803, 1.644, 1.651, 1.593, 1.878 ], + "publishLatency999pct" : [ 5.77, 9.721, 4.059, 5.519, 7.039, 10.067, 4.791, 8.429, 3.792, 4.584, 5.652, 3.677, 5.929, 7.827, 5.294, 1.837, 14.678, 6.288, 14.182, 7.483, 5.261, 5.023, 9.501, 5.418, 6.481, 7.912, 6.661, 7.306, 6.147, 3.99, 6.735, 8.75, 3.176, 8.745, 6.964, 6.122, 6.431, 13.88, 6.713, 4.263, 6.023, 5.286, 6.165, 8.719, 5.658, 5.276, 7.851, 7.52, 4.988, 9.203, 8.116, 7.309, 5.72, 9.819, 5.561, 9.344, 5.584, 3.34, 7.73, 4.365 ], + "publishLatency9999pct" : [ 8.979, 14.362, 7.305, 8.707, 11.976, 11.796, 9.903, 12.502, 6.606, 5.212, 9.306, 4.539, 9.381, 13.828, 8.876, 3.2, 24.639, 9.793, 15.517, 13.137, 9.331, 8.704, 13.389, 8.708, 12.312, 13.68, 8.82, 9.24, 8.994, 6.403, 9.369, 14.658, 10.13, 13.669, 10.057, 10.548, 10.029, 21.319, 9.065, 9.71, 8.555, 8.5, 10.277, 13.481, 9.665, 6.332, 10.263, 10.413, 7.645, 14.357, 11.266, 9.863, 8.903, 13.175, 10.719, 15.725, 8.811, 7.606, 12.18, 7.451 ], + "publishLatencyMax" : [ 10.26, 17.2, 12.409, 10.516, 15.661, 13.454, 12.507, 14.122, 8.7, 8.221, 10.681, 7.428, 14.951, 18.053, 12.289, 9.534, 27.572, 12.962, 16.522, 14.738, 11.521, 10.054, 14.687, 11.961, 15.993, 14.981, 12.796, 12.96, 12.245, 7.647, 13.541, 19.771, 14.673, 15.702, 12.141, 23.712, 14.106, 26.546, 12.666, 11.528, 11.287, 9.999, 12.839, 15.362, 12.283, 11.174, 10.994, 13.815, 14.95, 16.47, 14.736, 12.091, 14.468, 14.551, 16.714, 20.347, 10.108, 11.406, 16.302, 10.388 ], + "aggregatedPublishLatencyAvg" : 0.8627344246005088, + "aggregatedPublishLatency50pct" : 0.817, + "aggregatedPublishLatency75pct" : 0.936, + "aggregatedPublishLatency95pct" : 1.147, + "aggregatedPublishLatency99pct" : 1.878, + "aggregatedPublishLatency999pct" : 7.454, + "aggregatedPublishLatency9999pct" : 13.264, + "aggregatedPublishLatencyMax" : 27.572, + "aggregatedPublishLatencyQuantiles" : { + "5.48393836711348E-6" : 0.341, + "0.5120846807826896" : 0.475, + "1.0144518227788542" : 0.498, + "1.5202793298846673" : 0.514, + "2.041653802261247" : 0.527, + "2.515230267830066" : 0.537, + "3.0042275680872077" : 0.546, + "3.563260245230756" : 0.555, + "4.03563024435881" : 0.562, + "4.55533211553342" : 0.569, + "5.036706741460274" : 0.575, + "5.548127865700543" : 0.581, + "6.0007995582139255" : 0.586, + "6.57743019357754" : 0.592, + "7.085122239728173" : 0.597, + "7.507237427659998" : 0.601, + "8.056749987798238" : 0.606, + "8.52007697255892" : 0.61, + "9.002658064926539" : 0.614, + "9.501433227292246" : 0.618, + "10.016216005751554" : 0.622, + "10.542827639268728" : 0.626, + "11.083631705279991" : 0.63, + "11.505889475609361" : 0.633, + "12.078972002849454" : 0.637, + "12.519101928317248" : 0.64, + "13.125077117883288" : 0.644, + "13.585908910686934" : 0.647, + "14.058542138856609" : 0.65, + "14.536708660838702" : 0.653, + "15.026237903117455" : 0.656, + "15.523499498493836" : 0.659, + "16.03002894971064" : 0.662, + "16.54346267933164" : 0.665, + "17.063307132903795" : 0.668, + "17.59475560006076" : 0.671, + "18.138372926454355" : 0.674, + "18.505550019824437" : 0.676, + "19.066540462965044" : 0.679, + "19.63901427304639" : 0.682, + "20.019692822676305" : 0.684, + "20.599805758903038" : 0.687, + "21.182929377293313" : 0.69, + "21.574888388144384" : 0.692, + "22.169265048063977" : 0.695, + "22.568539632696776" : 0.697, + "23.178309707612858" : 0.7, + "23.589522826070862" : 0.702, + "24.001180143536605" : 0.704, + "24.62719912783444" : 0.707, + "25.044587160893816" : 0.709, + "25.679347542948836" : 0.712, + "26.103431464754454" : 0.714, + "26.528826047829813" : 0.716, + "27.17576625699819" : 0.719, + "27.611273222422508" : 0.721, + "28.047465680142714" : 0.723, + "28.706837977589338" : 0.726, + "29.147549200524047" : 0.728, + "29.594660179533175" : 0.73, + "30.039308870215468" : 0.732, + "30.71120099895421" : 0.735, + "31.16284171105458" : 0.737, + "31.620065072412665" : 0.739, + "32.07839070538254" : 0.741, + "32.54223318034973" : 0.743, + "33.006936633640564" : 0.745, + "33.703511968969686" : 0.748, + "34.172235149083605" : 0.75, + "34.6401631581343" : 0.752, + "35.10623211207854" : 0.754, + "35.573430757326406" : 0.756, + "36.04269136340031" : 0.758, + "36.5118697103987" : 0.76, + "37.22125004181503" : 0.763, + "37.695193931254444" : 0.765, + "38.16693876140865" : 0.767, + "38.64079490783419" : 0.769, + "39.11833626084243" : 0.771, + "39.59467663134828" : 0.773, + "40.06759502431304" : 0.775, + "40.542997641358106" : 0.777, + "41.01861413199949" : 0.779, + "41.729458674959844" : 0.782, + "42.20797616899743" : 0.784, + "42.685813654677496" : 0.786, + "43.16227467182742" : 0.788, + "43.64362187806244" : 0.79, + "44.120598385418866" : 0.792, + "44.6013259066184" : 0.794, + "45.07827499428299" : 0.796, + "45.55516924256391" : 0.798, + "46.03289704947664" : 0.8, + "46.50978581381919" : 0.802, + "47.2290756218649" : 0.805, + "47.70912861864528" : 0.807, + "48.190958411456606" : 0.809, + "48.67274981669936" : 0.811, + "49.1556270417388" : 0.813, + "49.63631617536977" : 0.815, + "50.11126910946873" : 0.817, + "50.3481313754211" : 0.818, + "50.58532267767549" : 0.819, + "50.82068234451527" : 0.82, + "51.05872914115493" : 0.821, + "51.29409977587144" : 0.822, + "51.53037526041852" : 0.823, + "51.76398555091919" : 0.824, + "52.230877095618496" : 0.826, + "52.4677996848929" : 0.827, + "52.70228740553231" : 0.828, + "52.9349434907571" : 0.829, + "53.16805474286635" : 0.83, + "53.40273440134861" : 0.831, + "53.63596630010195" : 0.832, + "53.86973562481526" : 0.833, + "54.103291075932255" : 0.834, + "54.33607329173949" : 0.835, + "54.570577464193995" : 0.836, + "54.80235611928005" : 0.837, + "55.034310260393845" : 0.838, + "55.265754395239505" : 0.839, + "55.72409099608611" : 0.841, + "55.952107669452325" : 0.842, + "56.18026692521608" : 0.843, + "56.4087826369737" : 0.844, + "56.63684318184685" : 0.845, + "56.86362048514209" : 0.846, + "57.090238754224686" : 0.847, + "57.31633056522404" : 0.848, + "57.542652701634815" : 0.849, + "57.76796579338604" : 0.85, + "58.22131201031858" : 0.852, + "58.44573670405433" : 0.853, + "58.67092914916148" : 0.854, + "58.89558965224702" : 0.855, + "59.119487887899524" : 0.856, + "59.34092931916357" : 0.857, + "59.564641100911594" : 0.858, + "59.78631834152542" : 0.859, + "60.00708524837031" : 0.86, + "60.44651322972712" : 0.862, + "60.66384170721582" : 0.863, + "60.881992775459594" : 0.864, + "61.100302877916015" : 0.865, + "61.31769167872676" : 0.866, + "61.53639114080725" : 0.867, + "61.754070590351446" : 0.868, + "62.190372726838994" : 0.87, + "62.40809056395177" : 0.871, + "62.62890134230359" : 0.872, + "62.844315925302176" : 0.873, + "63.061342786180695" : 0.874, + "63.279312884458356" : 0.875, + "63.71052592614122" : 0.877, + "63.92416919704723" : 0.878, + "64.13671019634144" : 0.879, + "64.34875764118262" : 0.88, + "64.56265865719189" : 0.881, + "64.77449222843674" : 0.882, + "65.1917157433451" : 0.884, + "65.40073605420763" : 0.885, + "65.60724472129803" : 0.886, + "65.81101690314323" : 0.887, + "66.01768460444627" : 0.888, + "66.42765286889494" : 0.89, + "66.6325657099205" : 0.891, + "66.83517529683188" : 0.892, + "67.03980297306235" : 0.893, + "67.44453956030878" : 0.895, + "67.64558074084717" : 0.896, + "67.84970937868623" : 0.897, + "68.05175960388416" : 0.898, + "68.2510239883916" : 0.899, + "68.64797338315674" : 0.901, + "68.8432673962864" : 0.902, + "69.03909335143764" : 0.903, + "69.42719715361663" : 0.905, + "69.620335978968" : 0.906, + "69.81233962907737" : 0.907, + "70.00451328127613" : 0.908, + "70.38465988888444" : 0.91, + "70.57421221854372" : 0.911, + "70.76414293995033" : 0.912, + "71.13864657497888" : 0.914, + "71.32887342905731" : 0.915, + "71.51566185377956" : 0.916, + "71.88474187376303" : 0.918, + "72.06777928464217" : 0.919, + "72.25282930090205" : 0.92, + "72.61689700121798" : 0.922, + "72.80041151473507" : 0.923, + "73.16015238767935" : 0.925, + "73.33852296700807" : 0.926, + "73.51565417626584" : 0.927, + "73.86721301316639" : 0.929, + "74.04222742221445" : 0.93, + "74.38994201831964" : 0.932, + "74.56559256421829" : 0.933, + "74.91247908563005" : 0.935, + "75.08627606036062" : 0.936, + "75.25913528163039" : 0.937, + "75.42941156792926" : 0.938, + "75.60065302738076" : 0.939, + "75.7712857696735" : 0.94, + "75.94118366422504" : 0.941, + "76.10928282699217" : 0.942, + "76.27698166225849" : 0.943, + "76.44181788169719" : 0.944, + "76.60769604942564" : 0.945, + "76.77274614246065" : 0.946, + "76.93712171107651" : 0.947, + "77.09633140975055" : 0.948, + "77.25778952315511" : 0.949, + "77.41723503117893" : 0.95, + "77.57602795053707" : 0.951, + "77.73376795372872" : 0.952, + "77.89018084383554" : 0.953, + "78.04714761171742" : 0.954, + "78.2035166303173" : 0.955, + "78.3591288654225" : 0.956, + "78.51450529117794" : 0.957, + "78.6696733272754" : 0.958, + "78.82151809672241" : 0.959, + "78.97460772017875" : 0.96, + "79.12493892263643" : 0.961, + "79.2774582165026" : 0.962, + "79.42937427714837" : 0.963, + "79.57832352713754" : 0.964, + "79.72744826315446" : 0.965, + "79.87551459906652" : 0.966, + "80.0234109328892" : 0.967, + "80.16921788619402" : 0.968, + "80.31495903223843" : 0.969, + "80.46041501348775" : 0.97, + "80.60429162048733" : 0.971, + "80.74839855289834" : 0.972, + "80.88913834715194" : 0.973, + "81.02940652270597" : 0.974, + "81.1691756598686" : 0.975, + "81.30805639901574" : 0.976, + "81.44439259076056" : 0.977, + "81.58194621682286" : 0.978, + "81.7176243359636" : 0.979, + "81.8523811534587" : 0.98, + "81.98781249537292" : 0.981, + "82.12380868293897" : 0.982, + "82.25815420505651" : 0.983, + "82.3911780980276" : 0.984, + "82.52428973401254" : 0.985, + "82.65592070663837" : 0.986, + "82.78623005011771" : 0.987, + "82.91757037401008" : 0.988, + "83.04664034741846" : 0.989, + "83.17444901500241" : 0.99, + "83.30181348357863" : 0.991, + "83.42810858417324" : 0.992, + "83.55374561216381" : 0.993, + "83.67896586083849" : 0.994, + "83.80307287002462" : 0.995, + "83.92724020253281" : 0.996, + "84.05045881370349" : 0.997, + "84.17364452124396" : 0.998, + "84.29720313659338" : 0.999, + "84.42013658296896" : 1.0, + "84.54185259502705" : 1.001, + "84.66444055328552" : 1.002, + "84.78499945434814" : 1.003, + "84.90317284222107" : 1.004, + "85.01992040611854" : 1.005, + "85.13691474724254" : 1.006, + "85.25329488726942" : 1.007, + "85.48141027152624" : 1.009, + "85.5929919654819" : 1.01, + "85.70564851135751" : 1.011, + "85.81667632753809" : 1.012, + "85.92665671149055" : 1.013, + "86.03690032448463" : 1.014, + "86.1445774543229" : 1.015, + "86.25262749197015" : 1.016, + "86.46671496188388" : 1.018, + "86.57434822021523" : 1.019, + "86.67929983268505" : 1.02, + "86.78494242138912" : 1.021, + "86.88999274474953" : 1.022, + "87.0953552687212" : 1.024, + "87.19946783862086" : 1.025, + "87.30147457618753" : 1.026, + "87.40215968460774" : 1.027, + "87.5027515660757" : 1.028, + "87.60283344127552" : 1.029, + "87.70201046664477" : 1.03, + "87.79992618618958" : 1.031, + "87.89729351189767" : 1.032, + "87.99289500945157" : 1.033, + "88.08736133176346" : 1.034, + "88.18122990479334" : 1.035, + "88.27428137100652" : 1.036, + "88.36714089937686" : 1.037, + "88.45983590959618" : 1.038, + "88.55108316008658" : 1.039, + "88.64203427790515" : 1.04, + "88.73161441113196" : 1.041, + "88.82099163863917" : 1.042, + "88.90942014480888" : 1.043, + "88.99689444570271" : 1.044, + "89.08539972700954" : 1.045, + "89.17356500413763" : 1.046, + "89.26007413187885" : 1.047, + "89.3458429279405" : 1.048, + "89.42987879947815" : 1.049, + "89.51298240149339" : 1.05, + "89.59752827929917" : 1.051, + "89.68028090925891" : 1.052, + "89.76298966771172" : 1.053, + "89.84445905609356" : 1.054, + "89.92544585789909" : 1.055, + "90.00423360041941" : 1.056, + "90.08312005383034" : 1.057, + "90.16189134453556" : 1.058, + "90.24016359684937" : 1.059, + "90.31452031716906" : 1.06, + "90.38862477632387" : 1.061, + "90.46267988003336" : 1.062, + "90.53550109761026" : 1.063, + "90.60516356668771" : 1.064, + "90.66340847608483" : 1.065, + "90.71769946591924" : 1.066, + "90.77501758973231" : 1.067, + "90.83434283498775" : 1.068, + "90.90550790317778" : 1.069, + "90.98345660312793" : 1.07, + "91.05689202180194" : 1.071, + "91.12064280531963" : 1.072, + "91.18727814041844" : 1.073, + "91.25977580563168" : 1.074, + "91.34107519192413" : 1.075, + "91.42362491616429" : 1.076, + "91.49991198278921" : 1.077, + "91.57039704262172" : 1.078, + "91.63766303063274" : 1.079, + "91.70559257518616" : 1.08, + "91.76907464572388" : 1.081, + "91.82628857470797" : 1.082, + "91.88039311063791" : 1.083, + "91.98542149824486" : 1.085, + "92.03825376047364" : 1.086, + "92.09392670277657" : 1.087, + "92.15224838731082" : 1.088, + "92.21088814027037" : 1.089, + "92.26919885692789" : 1.09, + "92.32927540173962" : 1.091, + "92.38952194864072" : 1.092, + "92.45118883557892" : 1.093, + "92.51277894737997" : 1.094, + "92.57427583222878" : 1.095, + "92.63690240838122" : 1.096, + "92.69943027364305" : 1.097, + "92.76155781140407" : 1.098, + "92.82343857193858" : 1.099, + "92.88547836668573" : 1.1, + "92.94621298410152" : 1.101, + "93.0057959744602" : 1.102, + "93.0639257211516" : 1.103, + "93.17739937384391" : 1.105, + "93.2328310228587" : 1.106, + "93.28693555878864" : 1.107, + "93.34164332793897" : 1.108, + "93.39536947212157" : 1.109, + "93.44757108143813" : 1.11, + "93.55189752493409" : 1.112, + "93.60343009376986" : 1.113, + "93.65507782531134" : 1.114, + "93.70522295774022" : 1.115, + "93.75464421030465" : 1.116, + "93.80362674779971" : 1.117, + "93.85198960025929" : 1.118, + "93.89973825162174" : 1.119, + "93.94613785414589" : 1.12, + "93.99275681420471" : 1.121, + "94.03804317724034" : 1.122, + "94.08252340133599" : 1.123, + "94.12623587406026" : 1.124, + "94.16995383072289" : 1.125, + "94.211856603786" : 1.126, + "94.25264065342222" : 1.127, + "94.29459826586901" : 1.128, + "94.33506424707994" : 1.129, + "94.37472957328927" : 1.13, + "94.41430715648472" : 1.131, + "94.45300730954145" : 1.132, + "94.49140584598798" : 1.133, + "94.52910243832352" : 1.134, + "94.56755581415372" : 1.135, + "94.60602564179902" : 1.136, + "94.64413352951209" : 1.137, + "94.68212625451945" : 1.138, + "94.71909896699053" : 1.139, + "94.75593458100244" : 1.14, + "94.79251793384944" : 1.141, + "94.82790030419406" : 1.142, + "94.86358429114887" : 1.143, + "94.89783148625149" : 1.144, + "94.93275868971163" : 1.145, + "94.96675910758775" : 1.146, + "95.00052371611406" : 1.147, + "95.03438703553098" : 1.148, + "95.06667646463654" : 1.149, + "95.09881782740621" : 1.15, + "95.13133758192319" : 1.151, + "95.16300732599326" : 1.152, + "95.19510481725598" : 1.153, + "95.22571067728283" : 1.154, + "95.25707332080437" : 1.155, + "95.28803563682509" : 1.156, + "95.31856472171481" : 1.157, + "95.34858928427475" : 1.158, + "95.37915127279467" : 1.159, + "95.40904970477217" : 1.16, + "95.43844361441991" : 1.161, + "95.49773595604513" : 1.163, + "95.52642792158187" : 1.164, + "95.55568473277043" : 1.165, + "95.58460702371858" : 1.166, + "95.61247091456188" : 1.167, + "95.63997286547296" : 1.168, + "95.66741997700036" : 1.169, + "95.6947464418837" : 1.17, + "95.72166709532785" : 1.171, + "95.77618292663533" : 1.173, + "95.80326261429214" : 1.174, + "95.82960745420775" : 1.175, + "95.85577132415725" : 1.176, + "95.88164454537328" : 1.177, + "95.90731486086975" : 1.178, + "95.95778354566228" : 1.18, + "95.98243933256083" : 1.181, + "96.00764899723445" : 1.182, + "96.0324034950236" : 1.183, + "96.07990536915953" : 1.185, + "96.10396340677606" : 1.186, + "96.12699594791793" : 1.187, + "96.17334071105842" : 1.189, + "96.19600034439134" : 1.19, + "96.2394770077658" : 1.192, + "96.26147856849467" : 1.193, + "96.28280560480437" : 1.194, + "96.32499902660093" : 1.196, + "96.34524572705233" : 1.197, + "96.38589267822937" : 1.199, + "96.40646293104442" : 1.2, + "96.4460514821166" : 1.202, + "96.48436227554926" : 1.204, + "96.50325992716233" : 1.205, + "96.54023812357178" : 1.207, + "96.57600985354046" : 1.209, + "96.61056963313001" : 1.211, + "96.62792629806192" : 1.212, + "96.6609121873401" : 1.214, + "96.693146777062" : 1.216, + "96.72561717613368" : 1.218, + "96.7574130507862" : 1.22, + "96.78822730047102" : 1.222, + "96.81787347128363" : 1.224, + "96.84641737048446" : 1.226, + "96.88733303464149" : 1.229, + "96.90047803490747" : 1.23, + "96.91339270976201" : 1.231, + "96.92601673588311" : 1.232, + "96.93816365936627" : 1.233, + "96.96286331777175" : 1.235, + "96.9746592691994" : 1.236, + "96.98641134912013" : 1.237, + "97.0085445243698" : 1.239, + "97.01997305192687" : 1.24, + "97.04157428515492" : 1.242, + "97.05194441260714" : 1.243, + "97.07247627785361" : 1.245, + "97.08263801564787" : 1.246, + "97.10276406945518" : 1.248, + "97.11255289944047" : 1.249, + "97.13096796447724" : 1.251, + "97.14897173413648" : 1.253, + "97.15802571638058" : 1.254, + "97.17574980518309" : 1.256, + "97.19327647220439" : 1.258, + "97.21043571535509" : 1.26, + "97.21891388407064" : 1.261, + "97.23529989191158" : 1.263, + "97.25170235156762" : 1.265, + "97.2680115842714" : 1.267, + "97.28363532467931" : 1.269, + "97.29950584231374" : 1.271, + "97.31449344587107" : 1.273, + "97.32926717583206" : 1.275, + "97.34429865089632" : 1.277, + "97.35962077469404" : 1.279, + "97.38178136963555" : 1.282, + "97.39698284678919" : 1.284, + "97.41248594055301" : 1.286, + "97.42840032969437" : 1.288, + "97.44446826911002" : 1.29, + "97.46033330280608" : 1.292, + "97.47572123386419" : 1.294, + "97.49176175358801" : 1.296, + "97.50723194372164" : 1.298, + "97.52251567995077" : 1.3, + "97.53765134984401" : 1.302, + "97.55223862590053" : 1.304, + "97.56654622110032" : 1.306, + "97.58062897482708" : 1.308, + "97.59513947574646" : 1.31, + "97.61598940941822" : 1.313, + "97.6300995828368" : 1.315, + "97.64316780796564" : 1.317, + "97.66212578290074" : 1.32, + "97.6749581986798" : 1.322, + "97.69308261498311" : 1.325, + "97.70508147213035" : 1.327, + "97.7224984603843" : 1.33, + "97.73889543610197" : 1.333, + "97.7551827330523" : 1.336, + "97.76568447502532" : 1.338, + "97.78624924390199" : 1.342, + "97.8006226463622" : 1.345, + "97.8148808861167" : 1.348, + "97.82898557559692" : 1.351, + "97.84664385713901" : 1.355, + "97.85964627500745" : 1.358, + "97.87631744764347" : 1.362, + "97.89325184932112" : 1.366, + "97.9093801120588" : 1.37, + "97.92514643486425" : 1.374, + "97.94110469551255" : 1.378, + "97.9567887592425" : 1.382, + "97.9721108830402" : 1.386, + "97.98743849077628" : 1.39, + "98.00278803426583" : 1.394, + "98.01834048347497" : 1.398, + "98.03379970573187" : 1.402, + "98.0493357031259" : 1.406, + "98.0644768569575" : 1.41, + "98.07991962739929" : 1.414, + "98.09529659058067" : 1.418, + "98.11081065222125" : 1.422, + "98.12560083399735" : 1.426, + "98.14408719023288" : 1.431, + "98.15889382382409" : 1.435, + "98.17430369063568" : 1.439, + "98.18876483610975" : 1.443, + "98.20343985518015" : 1.447, + "98.22178362901815" : 1.452, + "98.23646413202691" : 1.456, + "98.25103495626833" : 1.46, + "98.26851226784433" : 1.465, + "98.28245243917353" : 1.469, + "98.29918941906996" : 1.474, + "98.31271281108326" : 1.478, + "98.32942237128785" : 1.483, + "98.34551224645696" : 1.488, + "98.36122372987874" : 1.493, + "98.3766390806287" : 1.498, + "98.39177475052193" : 1.503, + "98.4064717053458" : 1.508, + "98.424146438703" : 1.514, + "98.4387721023281" : 1.519, + "98.44709672076938" : 1.522, + "98.45543230708739" : 1.525, + "98.4633511140895" : 1.528, + "98.46877472913458" : 1.53, + "98.47675934339709" : 1.533, + "98.48442040529595" : 1.536, + "98.49456569127511" : 1.54, + "98.50215546197519" : 1.543, + "98.50958619846263" : 1.546, + "98.51724177642312" : 1.549, + "98.52494122589054" : 1.552, + "98.53224034785718" : 1.555, + "98.53929269259729" : 1.558, + "98.54822602819732" : 1.562, + "98.55497675632724" : 1.565, + "98.56376750952971" : 1.569, + "98.57031533194005" : 1.572, + "98.57938576599925" : 1.576, + "98.58788587046828" : 1.58, + "98.59434046592636" : 1.583, + "98.60303799217661" : 1.587, + "98.61101712250077" : 1.591, + "98.61888657405757" : 1.595, + "98.6268876401352" : 1.599, + "98.63442805538998" : 1.603, + "98.64207266547373" : 1.607, + "98.64952533771464" : 1.611, + "98.65686833118819" : 1.615, + "98.6655713413768" : 1.62, + "98.67240432858223" : 1.624, + "98.68110185483248" : 1.629, + "98.68782516327056" : 1.633, + "98.69643494650693" : 1.638, + "98.7046608540576" : 1.643, + "98.71119770859119" : 1.647, + "98.71933038918962" : 1.652, + "98.72752339311009" : 1.657, + "98.73530510165303" : 1.662, + "98.74298809930535" : 1.667, + "98.75070948452624" : 1.672, + "98.75840345005531" : 1.677, + "98.76611935133784" : 1.682, + "98.77493752423216" : 1.688, + "98.78212148349307" : 1.693, + "98.78973318994663" : 1.698, + "98.79688972951571" : 1.703, + "98.80554886819738" : 1.709, + "98.81380219543989" : 1.715, + "98.82073937747428" : 1.72, + "98.82847721451029" : 1.726, + "98.83625343911484" : 1.732, + "98.84420514974717" : 1.738, + "98.85212395674928" : 1.744, + "98.86005373162813" : 1.75, + "98.86759963082127" : 1.756, + "98.87612715498213" : 1.763, + "98.88333853393489" : 1.769, + "98.89161928086922" : 1.776, + "98.89893485465096" : 1.782, + "98.90723753733876" : 1.789, + "98.91409794423602" : 1.795, + "98.92204417092996" : 1.802, + "98.93004523700759" : 1.809, + "98.93764049164604" : 1.816, + "98.94617898368364" : 1.824, + "98.95353842897231" : 1.831, + "98.96154497898829" : 1.839, + "98.96887700458512" : 1.846, + "98.97712484788926" : 1.854, + "98.98498333156934" : 1.862, + "98.99233729291963" : 1.87, + "99.00007512995563" : 1.878, + "99.00855329867119" : 1.887, + "99.01587984032965" : 1.895, + "99.02382606702359" : 1.904, + "99.03192036005346" : 1.913, + "99.03951013075354" : 1.922, + "99.04764281135198" : 1.932, + "99.05521064629859" : 1.941, + "99.06272364186154" : 1.95, + "99.07057664160324" : 1.96, + "99.07830351076251" : 1.97, + "99.08660070951194" : 1.981, + "99.09405886569122" : 1.991, + "99.10181863848068" : 2.002, + "99.1098197045583" : 2.013, + "99.11744786282696" : 2.024, + "99.12557505948702" : 2.037, + "99.1331319265569" : 2.049, + "99.14085879571617" : 2.061, + "99.1487063115195" : 2.074, + "99.1563125340347" : 2.087, + "99.1646152167225" : 2.101, + "99.17229273043647" : 2.115, + "99.17995927627369" : 2.13, + "99.18772453300151" : 2.145, + "99.19535269127017" : 2.161, + "99.20346343611513" : 2.175, + "99.21138224311724" : 2.191, + "99.21896652987897" : 2.208, + "99.22295335307186" : 2.218, + "99.22659468814761" : 2.227, + "99.23062538284745" : 2.236, + "99.23456285059504" : 2.245, + "99.23870870800057" : 2.255, + "99.24248714153552" : 2.264, + "99.24613944448801" : 2.273, + "99.25026885007844" : 2.285, + "99.25405276755176" : 2.296, + "99.25803410680628" : 2.309, + "99.26183447609469" : 2.323, + "99.26582678322595" : 2.338, + "99.26979167066537" : 2.352, + "99.27356462026195" : 2.364, + "99.27755144345484" : 2.377, + "99.2812914894212" : 2.389, + "99.2852454089839" : 2.403, + "99.28909513371761" : 2.417, + "99.29313679629418" : 2.432, + "99.29696458527442" : 2.447, + "99.30105560329629" : 2.463, + "99.30500952285898" : 2.478, + "99.30871118125678" : 2.491, + "99.31255542205213" : 2.505, + "99.31659708462868" : 2.519, + "99.32060584357505" : 2.533, + "99.32425266258917" : 2.545, + "99.32817916246003" : 2.558, + "99.33214404989945" : 2.571, + "99.33606506583193" : 2.584, + "99.34005188902483" : 2.598, + "99.34386322618997" : 2.611, + "99.34793779239673" : 2.625, + "99.35171074199332" : 2.639, + "99.35554401491193" : 2.652, + "99.35947051478279" : 2.667, + "99.3634847576675" : 2.682, + "99.36728512695592" : 2.696, + "99.37133227347084" : 2.711, + "99.37510522306742" : 2.724, + "99.37892204417093" : 2.738, + "99.38287596373362" : 2.751, + "99.3868134314812" : 2.766, + "99.39064670439981" : 2.78, + "99.39472675454495" : 2.795, + "99.398521639895" : 2.808, + "99.40251943096462" : 2.821, + "99.40649528628077" : 2.836, + "99.41031210738429" : 2.85, + "99.41427699482371" : 2.865, + "99.41797865322151" : 2.879, + "99.421899669154" : 2.893, + "99.42594133173056" : 2.909, + "99.4297855725259" : 2.924, + "99.43361336150615" : 2.937, + "99.43752889350027" : 2.952, + "99.44164733121397" : 2.968, + "99.44534898961177" : 2.983, + "99.44922613403733" : 2.998, + "99.45326779661389" : 3.014, + "99.45711203740923" : 3.028, + "99.46113176423233" : 3.043, + "99.4648553583836" : 3.058, + "99.46896831215894" : 3.075, + "99.47288384415305" : 3.091, + "99.47661840618106" : 3.106, + "99.48057780968212" : 3.122, + "99.48447140592276" : 3.137, + "99.48839242185525" : 3.154, + "99.49223117871223" : 3.17, + "99.49609735526104" : 3.186, + "99.50014450177598" : 3.206, + "99.50392293531091" : 3.222, + "99.50793717819565" : 3.238, + "99.51179238686773" : 3.255, + "99.51582308156755" : 3.275, + "99.51969474205474" : 3.295, + "99.5235005952815" : 3.313, + "99.5273887075838" : 3.332, + "99.53138101471505" : 3.354, + "99.5351759000651" : 3.38, + "99.53906401236738" : 3.409, + "99.54303986768353" : 3.434, + "99.54698281936949" : 3.461, + "99.55079415653464" : 3.49, + "99.55471517246713" : 3.521, + "99.55870199566002" : 3.549, + "99.5625736561472" : 3.575, + "99.56646725238784" : 3.6, + "99.5703279449983" : 3.624, + "99.57434218788302" : 3.649, + "99.57820836443183" : 3.673, + "99.58214583217942" : 3.696, + "99.58611620355721" : 3.721, + "99.58998786404439" : 3.746, + "99.59389791210015" : 3.77, + "99.59768182957346" : 3.795, + "99.60159736156757" : 3.821, + "99.60556773294536" : 3.847, + "99.6093955219256" : 3.87, + "99.61146296669001" : 3.884, + "99.6133823451185" : 3.896, + "99.61537849868412" : 3.907, + "99.61733078074282" : 3.92, + "99.619200803726" : 3.933, + "99.62114211790797" : 3.945, + "99.62319311085727" : 3.958, + "99.62510700534739" : 3.971, + "99.62709219103628" : 3.984, + "99.62900608552641" : 3.997, + "99.63089804426306" : 4.011, + "99.63296548902746" : 4.024, + "99.63491777108615" : 4.036, + "99.63684811739138" : 4.05, + "99.6387620118815" : 4.063, + "99.6406484866798" : 4.075, + "99.64269947962909" : 4.089, + "99.64456950261227" : 4.102, + "99.6465163007326" : 4.115, + "99.6484850346064" : 4.129, + "99.65045925241856" : 4.143, + "99.65237314690867" : 4.156, + "99.65431446109064" : 4.17, + "99.65632706647136" : 4.185, + "99.65822999308476" : 4.197, + "99.66026453421895" : 4.211, + "99.66212907326377" : 4.224, + "99.6641087750143" : 4.238, + "99.6661104125183" : 4.253, + "99.66804624276189" : 4.268, + "99.67002594451242" : 4.282, + "99.67195080687927" : 4.297, + "99.6738811531845" : 4.31, + "99.67582795130483" : 4.326, + "99.67776926548677" : 4.34, + "99.67969412785364" : 4.357, + "99.6817177011111" : 4.373, + "99.68364256347796" : 4.388, + "99.68558387765992" : 4.405, + "99.68760745091738" : 4.423, + "99.68951586146913" : 4.444, + "99.69144620777436" : 4.467, + "99.69344784527836" : 4.488, + "99.6953562558301" : 4.506, + "99.69730305395044" : 4.525, + "99.6992608199475" : 4.546, + "99.70124600563639" : 4.57, + "99.70314344831141" : 4.593, + "99.7051121821852" : 4.615, + "99.70706994818227" : 4.635, + "99.7090002944875" : 4.654, + "99.71099096411476" : 4.675, + "99.7129158264816" : 4.697, + "99.71499423912275" : 4.717, + "99.71684232635246" : 4.733, + "99.71875622084258" : 4.751, + "99.72076882622332" : 4.769, + "99.72278143160405" : 4.787, + "99.72461855095703" : 4.804, + "99.7265927687692" : 4.823, + "99.72857795445809" : 4.842, + "99.73055217227025" : 4.86, + "99.7325099382673" : 4.879, + "99.73441834881906" : 4.896, + "99.73644192207652" : 4.914, + "99.73839968807359" : 4.929, + "99.74037390588575" : 4.946, + "99.74220554130036" : 4.962, + "99.7441523394207" : 4.977, + "99.74619236449325" : 4.995, + "99.74807883929154" : 5.011, + "99.7500037016584" : 5.028, + "99.7519559837171" : 5.045, + "99.75401246060476" : 5.064, + "99.7558715157112" : 5.081, + "99.757840249585" : 5.099, + "99.75980349952043" : 5.116, + "99.76181062096279" : 5.135, + "99.76368612788434" : 5.151, + "99.76566582963487" : 5.168, + "99.76761811169357" : 5.185, + "99.7695649098139" : 5.202, + "99.77156654731789" : 5.221, + "99.7734639899929" : 5.237, + "99.77548207931201" : 5.257, + "99.77742339349396" : 5.276, + "99.77931535223063" : 5.295, + "99.78136086124155" : 5.316, + "99.78320894847127" : 5.335, + "99.78518316628343" : 5.354, + "99.78711351258866" : 5.374, + "99.78912063403102" : 5.396, + "99.79103452852114" : 5.419, + "99.79301423027167" : 5.44, + "99.7949281247618" : 5.461, + "99.79688040682048" : 5.485, + "99.79888204432449" : 5.513, + "99.8008123906297" : 5.543, + "99.80277564056513" : 5.573, + "99.80468953505526" : 5.606, + "99.80569309577643" : 5.623, + "99.80665278499067" : 5.639, + "99.80764537783513" : 5.656, + "99.80860506704937" : 5.674, + "99.80960862777056" : 5.692, + "99.81059025273827" : 5.709, + "99.81156639376762" : 5.723, + "99.81255898661206" : 5.739, + "99.81352415976467" : 5.756, + "99.81452223654749" : 5.771, + "99.81544353819316" : 5.786, + "99.8164361310376" : 5.8, + "99.81742872388206" : 5.813, + "99.81836099340447" : 5.828, + "99.81933713443381" : 5.844, + "99.82036263090846" : 5.86, + "99.8213387719378" : 5.876, + "99.82230394509043" : 5.891, + "99.8233075058116" : 5.908, + "99.82427816290259" : 5.923, + "99.82526527180866" : 5.937, + "99.82624141283802" : 5.955, + "99.82719013417552" : 5.973, + "99.8281278876363" : 5.99, + "99.82910402866564" : 6.005, + "99.8301295251403" : 6.021, + "99.8310782464778" : 6.037, + "99.83205987144552" : 6.052, + "99.83301956065976" : 6.068, + "99.83400666956584" : 6.083, + "99.83502119816376" : 6.1, + "99.83597540343963" : 6.118, + "99.83691864083877" : 6.133, + "99.8379331694367" : 6.151, + "99.8388983425893" : 6.168, + "99.83986899968029" : 6.186, + "99.84086159252473" : 6.202, + "99.84185966930755" : 6.216, + "99.8428029067067" : 6.23, + "99.8437680798593" : 6.247, + "99.84478809239559" : 6.263, + "99.84575874948656" : 6.278, + "99.84670747082407" : 6.293, + "99.84772199942199" : 6.31, + "99.84868168863623" : 6.325, + "99.84964686178886" : 6.341, + "99.85060106706473" : 6.358, + "99.85158269203244" : 6.373, + "99.85256431700016" : 6.389, + "99.85356239378297" : 6.406, + "99.85453305087395" : 6.421, + "99.85548177221146" : 6.436, + "99.85644694536407" : 6.454, + "99.85745050608526" : 6.475, + "99.8584266471146" : 6.493, + "99.8593753684521" : 6.511, + "99.86038989705003" : 6.532, + "99.86136603807937" : 6.558, + "99.86236411486219" : 6.584, + "99.8633128361997" : 6.608, + "99.8642615575372" : 6.634, + "99.86524318250493" : 6.659, + "99.8662467432261" : 6.686, + "99.86720643244034" : 6.715, + "99.86819354134643" : 6.742, + "99.86914226268394" : 6.769, + "99.87013485552839" : 6.794, + "99.87113841624956" : 6.816, + "99.87207616971034" : 6.836, + "99.87309069830826" : 6.862, + "99.87402845176904" : 6.886, + "99.87500459279838" : 6.912, + "99.8760520250265" : 6.936, + "99.87695687485707" : 6.954, + "99.8779549516399" : 6.978, + "99.87893109266923" : 7.0, + "99.87991271763696" : 7.023, + "99.88089982654303" : 7.046, + "99.88186499969564" : 7.069, + "99.88282468890989" : 7.091, + "99.8838063138776" : 7.116, + "99.88478245490694" : 7.138, + "99.8857914995665" : 7.159, + "99.88672925302727" : 7.181, + "99.88773829768682" : 7.201, + "99.88873089053126" : 7.223, + "99.88965219217694" : 7.241, + "99.8906283332063" : 7.26, + "99.8916428618042" : 7.28, + "99.89260255101846" : 7.3, + "99.89356772417106" : 7.32, + "99.8945767688306" : 7.342, + "99.89552549016813" : 7.362, + "99.89649066332073" : 7.381, + "99.89751615979539" : 7.401, + "99.89848681688636" : 7.421, + "99.8994300542855" : 7.442, + "99.90039522743812" : 7.463, + "99.90139330422093" : 7.483, + "99.90240783281885" : 7.503, + "99.90288493545678" : 7.515, + "99.903351070218" : 7.527, + "99.90385559254777" : 7.54, + "99.90432721124733" : 7.552, + "99.90479334600855" : 7.563, + "99.90533625590689" : 7.577, + "99.90579690672972" : 7.589, + "99.9062685254293" : 7.6, + "99.90674014412888" : 7.612, + "99.90724466645864" : 7.628, + "99.90771628515822" : 7.642, + "99.90820983961126" : 7.66, + "99.90869791012592" : 7.678, + "99.90920791639407" : 7.694, + "99.90967405115528" : 7.707, + "99.91018405742342" : 7.722, + "99.91068309581482" : 7.736, + "99.91117665026786" : 7.751, + "99.91164826896744" : 7.768, + "99.912119887667" : 7.783, + "99.91262440999678" : 7.799, + "99.91309602869636" : 7.814, + "99.9136224867796" : 7.827, + "99.91408313760243" : 7.841, + "99.91457669205548" : 7.857, + "99.91504831075504" : 7.872, + "99.91554186520808" : 7.886, + "99.9160244517844" : 7.9, + "99.91650703836069" : 7.915, + "99.91701156069047" : 7.93, + "99.91748317939005" : 7.944, + "99.91798221778146" : 7.957, + "99.91845932041939" : 7.97, + "99.91894739093406" : 7.985, + "99.91944642932548" : 8.001, + "99.91992901590177" : 8.015, + "99.92043353823155" : 8.028, + "99.9209270926846" : 8.041, + "99.92140967926089" : 8.055, + "99.92188678189883" : 8.068, + "99.92238582029024" : 8.085, + "99.92285195505144" : 8.099, + "99.92334002556612" : 8.113, + "99.92385551577263" : 8.127, + "99.92432165053384" : 8.139, + "99.92483714074034" : 8.154, + "99.92532521125501" : 8.167, + "99.92580231389296" : 8.181, + "99.92630135228436" : 8.197, + "99.92676748704557" : 8.208, + "99.92725007362188" : 8.22, + "99.92773814413654" : 8.233, + "99.92824266646632" : 8.245, + "99.9287142851659" : 8.257, + "99.92921880749567" : 8.27, + "99.92969042619524" : 8.285, + "99.93020043246338" : 8.299, + "99.93068850297806" : 8.312, + "99.93119302530782" : 8.326, + "99.9316646440074" : 8.338, + "99.93214174664534" : 8.353, + "99.93262433322164" : 8.366, + "99.93311788767468" : 8.385, + "99.93359499031263" : 8.402, + "99.93409402870402" : 8.418, + "99.93458758315707" : 8.432, + "99.93507565367175" : 8.449, + "99.93556920812479" : 8.463, + "99.93605179470109" : 8.481, + "99.93653986521576" : 8.498, + "99.93702793573044" : 8.517, + "99.93754342593695" : 8.536, + "99.93800407675978" : 8.55, + "99.93850311515119" : 8.565, + "99.93901312141934" : 8.581, + "99.93947925618053" : 8.595, + "99.93995635881848" : 8.609, + "99.94045539720989" : 8.625, + "99.94092153197109" : 8.639, + "99.94140960248576" : 8.658, + "99.9419031569388" : 8.678, + "99.9424186471453" : 8.696, + "99.94287929796815" : 8.721, + "99.94337833635956" : 8.744, + "99.94384995505912" : 8.766, + "99.9443380255738" : 8.786, + "99.94483158002684" : 8.806, + "99.9453196505415" : 8.831, + "99.94581868893292" : 8.862, + "99.94631224338596" : 8.887, + "99.94680031390064" : 8.912, + "99.94728290047694" : 8.93, + "99.94777645492998" : 8.949, + "99.94824258969118" : 8.965, + "99.94874711202095" : 8.986, + "99.9492242146589" : 9.003, + "99.94972873698867" : 9.021, + "99.95021132356497" : 9.04, + "99.95068842620292" : 9.065, + "99.95120391640943" : 9.082, + "99.95141779000573" : 9.091, + "99.95167553510899" : 9.098, + "99.95191134445878" : 9.106, + "99.95216908956203" : 9.119, + "99.95239393103509" : 9.131, + "99.95264070826161" : 9.141, + "99.95290393730323" : 9.152, + "99.95313974665302" : 9.161, + "99.9533755560028" : 9.171, + "99.95364426898279" : 9.183, + "99.95388007833257" : 9.192, + "99.95411588768236" : 9.203, + "99.95435718097052" : 9.214, + "99.9546258939505" : 9.225, + "99.9548617033003" : 9.234, + "99.9550920287117" : 9.245, + "99.95532235412313" : 9.257, + "99.95557461528801" : 9.266, + "99.955843328268" : 9.277, + "99.95605720186433" : 9.288, + "99.95631494696758" : 9.304, + "99.95656172419409" : 9.318, + "99.95679753354388" : 9.331, + "99.95703882683203" : 9.343, + "99.95728012012019" : 9.357, + "99.95753786522344" : 9.369, + "99.9577791585116" : 9.376, + "99.95803141967649" : 9.388, + "99.95826722902626" : 9.397, + "99.95850852231442" : 9.41, + "99.9587443316642" : 9.42, + "99.95898562495236" : 9.431, + "99.95923240217888" : 9.442, + "99.95949014728214" : 9.458, + "99.95972595663191" : 9.468, + "99.9599617659817" : 9.482, + "99.96021402714659" : 9.497, + "99.96044983649638" : 9.511, + "99.96070209766127" : 9.525, + "99.96093790701106" : 9.537, + "99.9611956521143" : 9.552, + "99.96144242934082" : 9.566, + "99.96167823869061" : 9.58, + "99.96192501591713" : 9.593, + "99.96216082526692" : 9.607, + "99.96241857037018" : 9.621, + "99.96265986365833" : 9.632, + "99.96290664088484" : 9.647, + "99.963147934173" : 9.664, + "99.96340567927625" : 9.68, + "99.96362503681094" : 9.696, + "99.9638827819142" : 9.715, + "99.96411859126398" : 9.73, + "99.96435988455212" : 9.74, + "99.96461214571701" : 9.754, + "99.9648479550668" : 9.775, + "99.96509473229332" : 9.794, + "99.96534150951985" : 9.807, + "99.96558828674637" : 9.825, + "99.96582958003452" : 9.846, + "99.9660653893843" : 9.866, + "99.96634507024102" : 9.893, + "99.96655345989898" : 9.915, + "99.96680572106386" : 9.939, + "99.96704153041365" : 9.96, + "99.96728830764017" : 9.976, + "99.96752960092832" : 9.995, + "99.96778734603157" : 10.019, + "99.96802863931973" : 10.042, + "99.96828090048461" : 10.061, + "99.9685167098344" : 10.076, + "99.96876348706093" : 10.1, + "99.96901026428745" : 10.118, + "99.96924607363722" : 10.14, + "99.96949285086374" : 10.157, + "99.9697341441519" : 10.178, + "99.96997543744006" : 10.196, + "99.97022221466658" : 10.219, + "99.9704689918931" : 10.243, + "99.97070480124287" : 10.261, + "99.9709680302845" : 10.292, + "99.97119835569592" : 10.307, + "99.97143964898407" : 10.326, + "99.97168094227223" : 10.348, + "99.97192771949875" : 10.374, + "99.97216901278689" : 10.391, + "99.97243224182851" : 10.418, + "99.9726680511783" : 10.437, + "99.97290386052809" : 10.461, + "99.97314515381625" : 10.493, + "99.97339193104277" : 10.519, + "99.97363322433092" : 10.547, + "99.97388000155743" : 10.57, + "99.97412129484559" : 10.602, + "99.97437355601048" : 10.625, + "99.97461484929863" : 10.649, + "99.97485614258679" : 10.673, + "99.97511388769004" : 10.702, + "99.97534421310145" : 10.728, + "99.97559647426634" : 10.763, + "99.97572260484878" : 10.775, + "99.97583228361613" : 10.788, + "99.9759529302602" : 10.806, + "99.97609002871938" : 10.825, + "99.97619970748673" : 10.843, + "99.9763203541308" : 10.87, + "99.97644648471325" : 10.888, + "99.97656713135733" : 10.905, + "99.9766877780014" : 10.929, + "99.97680842464548" : 10.944, + "99.9769400391663" : 10.963, + "99.97706068581036" : 10.976, + "99.9771868163928" : 10.994, + "99.97729649516015" : 11.011, + "99.97742810968096" : 11.025, + "99.97754327238667" : 11.041, + "99.97766940296911" : 11.059, + "99.97779004961319" : 11.072, + "99.97791069625727" : 11.087, + "99.97803134290135" : 11.104, + "99.97815198954542" : 11.123, + "99.9782726361895" : 11.137, + "99.97839876677195" : 11.15, + "99.97851941341602" : 11.163, + "99.97864006006009" : 11.174, + "99.97876070670416" : 11.187, + "99.97888683728661" : 11.199, + "99.97902393574579" : 11.208, + "99.97912813057476" : 11.218, + "99.97924877721884" : 11.234, + "99.97937490780129" : 11.248, + "99.97950103838373" : 11.265, + "99.97962168502781" : 11.277, + "99.97974233167189" : 11.293, + "99.97986846225433" : 11.308, + "99.97999459283677" : 11.323, + "99.98011523948085" : 11.337, + "99.98022491824818" : 11.351, + "99.98036750064573" : 11.367, + "99.98048266335144" : 11.383, + "99.98059782605715" : 11.395, + "99.98071847270123" : 11.408, + "99.9808391193453" : 11.429, + "99.98096524992775" : 11.448, + "99.98110234838693" : 11.459, + "99.9812065432159" : 11.471, + "99.98132718985998" : 11.485, + "99.98144783650406" : 11.499, + "99.98156848314814" : 11.512, + "99.98169461373058" : 11.527, + "99.98181526037465" : 11.544, + "99.98193590701872" : 11.561, + "99.98206203760117" : 11.575, + "99.98218268424525" : 11.593, + "99.98230881482769" : 11.607, + "99.9824239775334" : 11.627, + "99.98254462417748" : 11.642, + "99.98267075475992" : 11.66, + "99.982791401404" : 11.676, + "99.98291204804808" : 11.693, + "99.98303269469216" : 11.722, + "99.9831588252746" : 11.738, + "99.98327947191868" : 11.75, + "99.98340011856274" : 11.771, + "99.98352076520682" : 11.79, + "99.98365237972763" : 11.807, + "99.98376754243334" : 11.825, + "99.98388818907742" : 11.851, + "99.98401431965986" : 11.872, + "99.98413496630394" : 11.893, + "99.98427206476312" : 11.926, + "99.9843762595921" : 11.948, + "99.98450239017454" : 11.977, + "99.98462852075698" : 12.004, + "99.9847436834627" : 12.028, + "99.98486433010677" : 12.052, + "99.9849904606892" : 12.077, + "99.98511659127165" : 12.092, + "99.98523175397736" : 12.123, + "99.9853578845598" : 12.158, + "99.98547853120388" : 12.176, + "99.98559917784796" : 12.21, + "99.98573079236877" : 12.232, + "99.98584047113611" : 12.254, + "99.98596660171856" : 12.291, + "99.986092732301" : 12.333, + "99.98620789500671" : 12.363, + "99.98632854165079" : 12.399, + "99.98646564010997" : 12.416, + "99.98658080281567" : 12.436, + "99.98669596552138" : 12.463, + "99.98681661216546" : 12.488, + "99.98694822668627" : 12.511, + "99.98706887333034" : 12.529, + "99.98718403603606" : 12.553, + "99.9873101666185" : 12.588, + "99.98743081326258" : 12.63, + "99.98755145990665" : 12.662, + "99.98767210655073" : 12.685, + "99.98780372107154" : 12.721, + "99.98785856045521" : 12.744, + "99.98792436771562" : 12.762, + "99.98799565891439" : 12.781, + "99.98803953042133" : 12.795, + "99.98810533768173" : 12.809, + "99.98817114494214" : 12.817, + "99.98822050038744" : 12.828, + "99.98828630764784" : 12.846, + "99.98834663096989" : 12.867, + "99.98840695429192" : 12.881, + "99.98846727761396" : 12.898, + "99.988527600936" : 12.911, + "99.98858792425804" : 12.923, + "99.98864824758007" : 12.935, + "99.98870857090212" : 12.946, + "99.98877437816252" : 12.961, + "99.98883470148456" : 12.989, + "99.9888950248066" : 13.003, + "99.988960832067" : 13.019, + "99.98902115538904" : 13.036, + "99.9890759947727" : 13.045, + "99.98914180203312" : 13.063, + "99.98920760929352" : 13.082, + "99.9892624486772" : 13.101, + "99.98932277199923" : 13.118, + "99.98938309532127" : 13.136, + "99.98945438652004" : 13.148, + "99.98950374196535" : 13.154, + "99.98956954922575" : 13.163, + "99.98962438860943" : 13.176, + "99.98969019586983" : 13.19, + "99.98975600313024" : 13.205, + "99.98981632645227" : 13.214, + "99.98987116583594" : 13.228, + "99.98993148915798" : 13.247, + "99.98999181248001" : 13.262, + "99.99005761974043" : 13.28, + "99.99011245912409" : 13.293, + "99.99018375032287" : 13.313, + "99.9902440736449" : 13.321, + "99.99029891302858" : 13.338, + "99.99035923635061" : 13.36, + "99.99042504361103" : 13.374, + "99.99047988299469" : 13.384, + "99.99054569025509" : 13.402, + "99.9906114975155" : 13.415, + "99.99067182083753" : 13.429, + "99.99072666022121" : 13.449, + "99.99078698354325" : 13.457, + "99.99085279080366" : 13.465, + "99.99091311412569" : 13.477, + "99.99096795350937" : 13.492, + "99.9910282768314" : 13.508, + "99.99109408409181" : 13.529, + "99.99115989135221" : 13.547, + "99.99121473073589" : 13.57, + "99.99128053799629" : 13.588, + "99.99134086131832" : 13.608, + "99.99140118464037" : 13.622, + "99.9914615079624" : 13.635, + "99.99151634734608" : 13.647, + "99.99158215460648" : 13.658, + "99.99164247792852" : 13.676, + "99.99170280125055" : 13.692, + "99.99176860851097" : 13.712, + "99.99182344789463" : 13.73, + "99.99188925515504" : 13.757, + "99.99194957847708" : 13.776, + "99.99200441786076" : 13.801, + "99.99207022512115" : 13.822, + "99.99213054844319" : 13.844, + "99.99219087176523" : 13.865, + "99.99225119508726" : 13.881, + "99.99231151840931" : 13.892, + "99.99237184173134" : 13.908, + "99.99243216505339" : 13.925, + "99.99249797231379" : 13.948, + "99.99255829563583" : 13.968, + "99.99261861895786" : 13.98, + "99.99267894227991" : 13.996, + "99.99274474954031" : 14.017, + "99.99279958892399" : 14.042, + "99.99285991224602" : 14.083, + "99.99292023556805" : 14.117, + "99.99298604282846" : 14.138, + "99.99305185008886" : 14.158, + "99.9931121734109" : 14.182, + "99.99316701279457" : 14.207, + "99.99322733611662" : 14.23, + "99.99328765943865" : 14.241, + "99.9933479827607" : 14.252, + "99.99340830608273" : 14.276, + "99.99347411334314" : 14.294, + "99.99353443666517" : 14.312, + "99.99360572786395" : 14.328, + "99.99366056724762" : 14.34, + "99.99371540663128" : 14.352, + "99.99377572995333" : 14.365, + "99.99383605327536" : 14.384, + "99.99390734447414" : 14.4, + "99.99394024810434" : 14.406, + "99.9939621838578" : 14.416, + "99.99398960354965" : 14.427, + "99.99402250717985" : 14.437, + "99.99404992687168" : 14.442, + "99.99408831444025" : 14.463, + "99.99411025019371" : 14.469, + "99.99414315382393" : 14.479, + "99.99417605745413" : 14.487, + "99.99420347714596" : 14.494, + "99.99423638077616" : 14.507, + "99.994263800468" : 14.526, + "99.9942967040982" : 14.54, + "99.99432412379004" : 14.55, + "99.99435702742024" : 14.555, + "99.99438993105045" : 14.558, + "99.99442283468065" : 14.567, + "99.99445573831085" : 14.57, + "99.99447767406431" : 14.58, + "99.9945160616329" : 14.592, + "99.99454348132473" : 14.597, + "99.99457090101656" : 14.613, + "99.99460380464676" : 14.618, + "99.99463122433859" : 14.628, + "99.9946641279688" : 14.639, + "99.99469154766064" : 14.649, + "99.9947299352292" : 14.658, + "99.99475735492103" : 14.665, + "99.99478477461288" : 14.671, + "99.99481219430471" : 14.675, + "99.99485606581165" : 14.682, + "99.99487800156511" : 14.689, + "99.99491090519533" : 14.7, + "99.99493832488716" : 14.705, + "99.99496574457899" : 14.71, + "99.99499864820919" : 14.723, + "99.99502606790102" : 14.731, + "99.99505897153124" : 14.739, + "99.99509187516144" : 14.754, + "99.99511929485327" : 14.768, + "99.99515219848347" : 14.794, + "99.99517961817531" : 14.8, + "99.99521252180551" : 14.812, + "99.99523994149735" : 14.827, + "99.99527284512754" : 14.834, + "99.99530574875774" : 14.843, + "99.99533316844959" : 14.852, + "99.99536607207979" : 14.864, + "99.99539349177162" : 14.872, + "99.99542639540182" : 14.896, + "99.99545929903204" : 14.906, + "99.99549220266223" : 14.912, + "99.9955141384157" : 14.923, + "99.9955470420459" : 14.934, + "99.99557994567611" : 14.945, + "99.99561284930631" : 14.951, + "99.99564026899814" : 14.966, + "99.99566768868998" : 14.973, + "99.99570059232018" : 14.984, + "99.99572801201202" : 15.002, + "99.99576091564222" : 15.024, + "99.99579930321079" : 15.032, + "99.99582123896425" : 15.051, + "99.99585414259447" : 15.061, + "99.9958815622863" : 15.07, + "99.9959144659165" : 15.079, + "99.99594188560833" : 15.092, + "99.99597478923855" : 15.104, + "99.99600220893038" : 15.12, + "99.99603511256058" : 15.134, + "99.99606801619078" : 15.157, + "99.99609543588261" : 15.165, + "99.99612833951282" : 15.179, + "99.99615575920465" : 15.193, + "99.99618866283485" : 15.201, + "99.99621608252669" : 15.209, + "99.9962489861569" : 15.234, + "99.9962818897871" : 15.246, + "99.99630930947893" : 15.267, + "99.99634221310913" : 15.289, + "99.99636963280098" : 15.305, + "99.99640253643118" : 15.334, + "99.99642995612301" : 15.358, + "99.99646285975321" : 15.372, + "99.99649576338341" : 15.381, + "99.99653415095199" : 15.388, + "99.99655608670545" : 15.398, + "99.99658350639729" : 15.424, + "99.99661641002749" : 15.446, + "99.99664382971933" : 15.477, + "99.9966822172879" : 15.517, + "99.99670415304136" : 15.541, + "99.99673705667156" : 15.563, + "99.99676996030178" : 15.593, + "99.99679737999361" : 15.604, + "99.99683028362381" : 15.617, + "99.99685770331564" : 15.636, + "99.99689060694584" : 15.656, + "99.99691802663769" : 15.676, + "99.99695093026789" : 15.694, + "99.99697286602135" : 15.702, + "99.99698383389808" : 15.71, + "99.99699480177482" : 15.723, + "99.99701125358992" : 15.757, + "99.99702770540503" : 15.766, + "99.99704415722013" : 15.775, + "99.99706060903523" : 15.788, + "99.99707157691196" : 15.799, + "99.99708802872706" : 15.81, + "99.99710448054216" : 15.824, + "99.99712641629563" : 15.858, + "99.997131900234" : 15.861, + "99.9971483520491" : 15.87, + "99.99716480386421" : 15.888, + "99.99718125567931" : 15.895, + "99.99719770749441" : 15.913, + "99.99720867537114" : 15.929, + "99.99722512718624" : 15.993, + "99.9972470629397" : 16.011, + "99.99725803081644" : 16.042, + "99.99726899869317" : 16.072, + "99.99728545050827" : 16.091, + "99.99730190232339" : 16.12, + "99.99731835413849" : 16.134, + "99.99733480595359" : 16.198, + "99.99734577383032" : 16.208, + "99.99736222564542" : 16.237, + "99.99737867746052" : 16.298, + "99.99739512927562" : 16.305, + "99.99740609715235" : 16.317, + "99.99742254896746" : 16.339, + "99.99743900078256" : 16.405, + "99.99745545259766" : 16.436, + "99.99747190441276" : 16.47, + "99.9974828722895" : 16.478, + "99.9974993241046" : 16.501, + "99.9975157759197" : 16.522, + "99.9975322277348" : 16.556, + "99.9975486795499" : 16.575, + "99.99755964742664" : 16.583, + "99.99757609924174" : 16.6, + "99.99759255105684" : 16.607, + "99.99760900287194" : 16.621, + "99.99761997074867" : 16.627, + "99.99763642256377" : 16.641, + "99.99765287437887" : 16.664, + "99.99766932619397" : 16.694, + "99.99768577800907" : 16.713, + "99.99769674588582" : 16.716, + "99.99771319770092" : 16.723, + "99.99773513345438" : 16.739, + "99.99774610133112" : 16.75, + "99.99775706920785" : 16.787, + "99.99777352102295" : 16.833, + "99.99778997283805" : 16.882, + "99.99780642465315" : 16.897, + "99.99782287646826" : 16.911, + "99.997833844345" : 16.938, + "99.9978502961601" : 16.964, + "99.9978667479752" : 17.016, + "99.9978831997903" : 17.091, + "99.99790513554376" : 17.116, + "99.99791061948213" : 17.136, + "99.99792707129723" : 17.209, + "99.99794352311233" : 17.24, + "99.99795997492744" : 17.272, + "99.99797094280417" : 17.296, + "99.99798739461927" : 17.359, + "99.99800384643437" : 17.391, + "99.99802029824947" : 17.423, + "99.99803675006457" : 17.454, + "99.9980477179413" : 17.505, + "99.9980641697564" : 17.562, + "99.9980806215715" : 17.591, + "99.99810255732498" : 17.632, + "99.99810804126335" : 17.644, + "99.99812449307845" : 17.704, + "99.99814094489355" : 17.742, + "99.99815739670865" : 17.752, + "99.99817384852375" : 17.795, + "99.99818481640048" : 17.8, + "99.99820126821558" : 17.85, + "99.9982177200307" : 17.867, + "99.9982341718458" : 17.972, + "99.9982506236609" : 17.995, + "99.99826159153763" : 18.0, + "99.99827804335273" : 18.053, + "99.99829449516783" : 18.076, + "99.99831094698293" : 18.105, + "99.99832191485966" : 18.114, + "99.99833836667476" : 18.142, + "99.99835481848987" : 18.191, + "99.99837127030497" : 18.239, + "99.99838772212007" : 18.269, + "99.9983986899968" : 18.287, + "99.9984151418119" : 18.399, + "99.998431593627" : 18.568, + "99.9984480454421" : 18.585, + "99.99845901331884" : 18.621, + "99.99848094907232" : 18.634, + "99.99849191694905" : 18.655, + "99.99849740088742" : 18.674, + "99.99850836876415" : 18.688, + "99.99851385270252" : 18.69, + "99.99852482057925" : 18.705, + "99.99853030451762" : 18.713, + "99.99853578845598" : 18.718, + "99.99854675633271" : 18.735, + "99.99855224027108" : 18.744, + "99.99856320814781" : 18.753, + "99.99856869208618" : 18.762, + "99.99857417602455" : 18.764, + "99.99858514390128" : 18.788, + "99.99859062783965" : 18.802, + "99.99860159571638" : 18.85, + "99.99860707965475" : 18.874, + "99.99861256359313" : 18.879, + "99.99862353146986" : 18.906, + "99.99862901540823" : 18.907, + "99.9986344993466" : 18.931, + "99.99864546722333" : 18.944, + "99.9986509511617" : 18.96, + "99.99866191903843" : 19.031, + "99.99866740297679" : 19.037, + "99.99867288691516" : 19.059, + "99.99868385479189" : 19.082, + "99.99868933873026" : 19.085, + "99.99870030660699" : 19.126, + "99.99870579054536" : 19.138, + "99.99871127448372" : 19.158, + "99.99872224236046" : 19.176, + "99.99873321023719" : 19.18, + "99.99873869417556" : 19.201, + "99.99874417811392" : 19.203, + "99.9987496620523" : 19.217, + "99.99876062992904" : 19.23, + "99.9987661138674" : 19.252, + "99.99877708174414" : 19.261, + "99.9987825656825" : 19.283, + "99.99878804962087" : 19.288, + "99.9987990174976" : 19.298, + "99.99880450143597" : 19.31, + "99.99880998537434" : 19.314, + "99.99882095325107" : 19.323, + "99.99882643718944" : 19.338, + "99.99883740506617" : 19.363, + "99.99884288900454" : 19.374, + "99.9988483729429" : 19.385, + "99.99885934081964" : 19.393, + "99.998864824758" : 19.421, + "99.99887579263473" : 19.493, + "99.99888127657312" : 19.502, + "99.99888676051148" : 19.511, + "99.99889772838822" : 19.516, + "99.99890321232658" : 19.56, + "99.99891418020331" : 19.573, + "99.99891966414168" : 19.614, + "99.99892514808005" : 19.625, + "99.99893611595678" : 19.632, + "99.99894159989515" : 19.633, + "99.99895256777188" : 19.651, + "99.99895805171025" : 19.654, + "99.99896353564861" : 19.658, + "99.99897450352535" : 19.681, + "99.99897998746371" : 19.731, + "99.99898547140208" : 19.745, + "99.99899643927881" : 19.767, + "99.99900192321718" : 19.771, + "99.99901289109393" : 19.781, + "99.99901837503229" : 19.786, + "99.99902385897066" : 19.79, + "99.99903482684739" : 19.793, + "99.99904031078576" : 19.795, + "99.99905127866249" : 19.799, + "99.99905676260086" : 19.803, + "99.99906224653922" : 19.807, + "99.99907321441596" : 19.831, + "99.99907869835432" : 19.902, + "99.99908966623106" : 19.913, + "99.99909515016942" : 19.921, + "99.99910063410779" : 19.927, + "99.99911160198452" : 19.936, + "99.99911708592289" : 19.951, + "99.99912805379962" : 19.972, + "99.99913353773799" : 19.99, + "99.99913902167636" : 20.039, + "99.9991499895531" : 20.077, + "99.99915547349147" : 20.087, + "99.99916095742984" : 20.227, + "99.99917192530657" : 20.239, + "99.99917740924494" : 20.256, + "99.99918837712167" : 20.271, + "99.99919386106004" : 20.277, + "99.9991993449984" : 20.341, + "99.99921031287514" : 20.346, + "99.9992157968135" : 20.347, + "99.99922676469023" : 20.358, + "99.99923773256697" : 20.373, + "99.99924321650533" : 20.382, + "99.9992487004437" : 20.422, + "99.99925418438207" : 20.446, + "99.99925966832043" : 20.47, + "99.9992651522588" : 20.524, + "99.99927063619717" : 20.529, + "99.99927612013555" : 20.562, + "99.99928708801228" : 20.591, + "99.99929257195065" : 20.602, + "99.99929805588901" : 20.63, + "99.99930353982738" : 20.702, + "99.99930902376575" : 20.707, + "99.99931450770411" : 20.709, + "99.99931999164248" : 20.754, + "99.99932547558085" : 20.787, + "99.99933095951921" : 20.844, + "99.99933644345758" : 20.859, + "99.99934192739595" : 20.929, + "99.99934741133431" : 20.949, + "99.99935289527268" : 20.974, + "99.99935837921105" : 20.986, + "99.99936386314941" : 20.997, + "99.99936934708778" : 21.056, + "99.99937483102615" : 21.064, + "99.99938031496451" : 21.074, + "99.99938579890288" : 21.096, + "99.99939128284124" : 21.099, + "99.99939676677961" : 21.118, + "99.99940225071798" : 21.195, + "99.99940773465636" : 21.242, + "99.99941321859473" : 21.283, + "99.99941870253309" : 21.289, + "99.99942418647146" : 21.29, + "99.99942967040982" : 21.319, + "99.99943515434819" : 21.341, + "99.99944063828656" : 21.351, + "99.99944612222492" : 21.372, + "99.99945160616329" : 21.398, + "99.99945709010166" : 21.413, + "99.99946257404002" : 21.445, + "99.99946805797839" : 21.46, + "99.99947354191676" : 21.466, + "99.99947902585512" : 21.47, + "99.99948450979349" : 21.471, + "99.99948999373186" : 21.514, + "99.99949547767022" : 21.536, + "99.99950096160859" : 21.54, + "99.99950644554696" : 21.548, + "99.99951192948532" : 21.579, + "99.99951741342369" : 21.63, + "99.99952289736206" : 21.695, + "99.99952838130042" : 21.751, + "99.99953386523879" : 21.846, + "99.99953934917717" : 21.931, + "99.99954483311554" : 21.943, + "99.9995503170539" : 21.965, + "99.99955580099227" : 22.009, + "99.99956128493064" : 22.09, + "99.999566768869" : 22.122, + "99.99957225280737" : 22.195, + "99.99957773674574" : 22.201, + "99.9995832206841" : 22.227, + "99.99958870462247" : 22.272, + "99.99959418856083" : 22.351, + "99.9995996724992" : 22.4, + "99.99960515643757" : 22.468, + "99.99961064037593" : 22.501, + "99.9996161243143" : 22.519, + "99.99962160825267" : 22.543, + "99.99962709219103" : 22.577, + "99.9996325761294" : 22.582, + "99.99963806006777" : 22.586, + "99.99964354400613" : 22.69, + "99.9996490279445" : 22.806, + "99.99965451188287" : 22.811, + "99.99965999582123" : 22.9, + "99.9996654797596" : 22.916, + "99.99967096369798" : 22.974, + "99.99967644763635" : 23.056, + "99.99968193157471" : 23.174, + "99.99968741551308" : 23.207, + "99.99969289945145" : 23.228, + "99.99969838338981" : 23.242, + "99.99970386732818" : 23.259, + "99.99970935126655" : 23.304, + "99.99971483520491" : 23.346, + "99.99972031914328" : 23.435, + "99.99972580308165" : 23.492, + "99.99973128702001" : 23.562, + "99.99973677095838" : 23.58, + "99.99974225489674" : 23.712, + "99.99974773883511" : 23.877, + "99.99975322277348" : 23.96, + "99.99975870671184" : 24.044, + "99.99976419065021" : 24.074, + "99.99976967458858" : 24.16, + "99.99977515852694" : 24.254, + "99.99978064246531" : 24.394, + "99.99978612640368" : 24.417, + "99.99979161034204" : 24.479, + "99.99979709428041" : 24.524, + "99.99980257821879" : 24.621, + "99.99981354609552" : 24.639, + "99.99981903003389" : 24.706, + "99.99982451397226" : 25.058, + "99.99982999791062" : 25.075, + "99.99983548184899" : 25.135, + "99.99984096578736" : 25.138, + "99.99984644972572" : 25.226, + "99.99985193366409" : 25.278, + "99.99985741760246" : 25.315, + "99.99986290154082" : 25.317, + "99.99986838547919" : 25.378, + "99.99987386941756" : 25.477, + "99.99987935335592" : 25.578, + "99.99988483729429" : 25.621, + "99.99989032123266" : 25.775, + "99.99989580517102" : 25.968, + "99.99990128910939" : 25.989, + "99.99990677304775" : 26.091, + "99.99991225698612" : 26.113, + "99.99991774092449" : 26.186, + "99.99992322486285" : 26.187, + "99.99992870880122" : 26.376, + "99.9999341927396" : 26.544, + "99.99993967667797" : 26.546, + "99.99994516061633" : 26.653, + "99.9999506445547" : 26.712, + "99.99995612849307" : 26.752, + "99.99996161243143" : 26.772, + "99.9999670963698" : 26.879, + "99.99997258030817" : 27.021, + "99.99997806424653" : 27.059, + "99.9999835481849" : 27.103, + "99.99998903212327" : 27.348, + "99.99999451606163" : 27.375, + "100.0" : 27.572 + }, + "endToEndLatencyAvg" : [ 0.505372242619771, 0.5180584664284444, 0.49730107859460243, 0.5003151391302059, 0.512844579074497, 0.5223187147685129, 0.5037551736279068, 0.5077531820934028, 0.5113163649765218, 0.5020770200275106, 0.5032673546552762, 0.5138742315944662, 0.5243665727563553, 0.5108839704101511, 0.5034623775864793, 0.503088119339722, 0.5211759285465113, 0.5157969278559489, 0.5239393338072108, 0.4923128136115215, 0.5070624858084027, 0.5023010096289909, 0.5132946242574827, 0.5032289226010267, 0.508095936587127, 0.5013996788300992, 0.49994241692280356, 0.5024638781017574, 0.4949839599294421, 0.5014995820416115, 0.49864053958882515, 0.5190957975450028, 0.49005381283978566, 0.5079047228831604, 0.5142666157673726, 0.5093754220832648, 0.5183904710505012, 0.5232837891646949, 0.5043648817633161, 0.49590693304549854, 0.5062362380414858, 0.5018812842038062, 0.5090607370201897, 0.5147871234833202, 0.5023764035699712, 0.5025611198504585, 0.4893762238406629, 0.4886438634770504, 0.5007648886212333, 0.526901635945383, 0.5151936580325883, 0.49834015065008574, 0.5045067295858261, 0.5132074829708119, 0.5266910073287712, 0.5145675353695579, 0.5006172451921178, 0.4962989472229261, 0.4935391744197144, 0.4987351621916023 ], + "endToEndLatency50pct" : [ 0.491, 0.484, 0.478, 0.482, 0.489, 0.493, 0.484, 0.481, 0.493, 0.483, 0.481, 0.494, 0.495, 0.484, 0.48, 0.487, 0.484, 0.492, 0.483, 0.471, 0.485, 0.484, 0.484, 0.482, 0.487, 0.478, 0.478, 0.48, 0.476, 0.48, 0.473, 0.491, 0.471, 0.481, 0.488, 0.481, 0.495, 0.487, 0.478, 0.48, 0.48, 0.477, 0.486, 0.492, 0.48, 0.48, 0.469, 0.467, 0.481, 0.496, 0.484, 0.471, 0.484, 0.473, 0.49, 0.49, 0.482, 0.478, 0.47, 0.477 ], + "endToEndLatency75pct" : [ 0.593, 0.584, 0.574, 0.582, 0.591, 0.6, 0.584, 0.575, 0.594, 0.58, 0.578, 0.595, 0.598, 0.584, 0.582, 0.584, 0.582, 0.592, 0.59, 0.561, 0.585, 0.581, 0.584, 0.576, 0.589, 0.573, 0.575, 0.577, 0.568, 0.577, 0.568, 0.592, 0.567, 0.578, 0.592, 0.579, 0.598, 0.588, 0.572, 0.574, 0.58, 0.575, 0.591, 0.598, 0.572, 0.578, 0.558, 0.553, 0.579, 0.603, 0.589, 0.571, 0.589, 0.574, 0.596, 0.594, 0.584, 0.577, 0.568, 0.572 ], + "endToEndLatency95pct" : [ 0.757, 0.763, 0.743, 0.75, 0.766, 0.786, 0.754, 0.754, 0.771, 0.757, 0.763, 0.777, 0.787, 0.773, 0.779, 0.761, 0.773, 0.779, 0.794, 0.729, 0.765, 0.755, 0.779, 0.755, 0.762, 0.751, 0.746, 0.756, 0.744, 0.753, 0.755, 0.769, 0.738, 0.758, 0.767, 0.766, 0.782, 0.772, 0.746, 0.744, 0.76, 0.761, 0.775, 0.779, 0.754, 0.76, 0.726, 0.73, 0.755, 0.785, 0.774, 0.743, 0.77, 0.764, 0.792, 0.771, 0.755, 0.751, 0.736, 0.751 ], + "endToEndLatency99pct" : [ 0.951, 1.071, 0.988, 0.934, 1.02, 1.061, 0.951, 1.006, 0.973, 0.969, 0.991, 1.013, 1.076, 1.027, 0.986, 0.946, 1.031, 1.014, 1.102, 0.971, 0.987, 0.958, 1.077, 0.998, 0.991, 1.004, 0.966, 0.999, 0.947, 1.006, 1.04, 1.021, 0.948, 0.993, 1.022, 1.068, 1.013, 1.006, 1.08, 0.936, 1.053, 1.065, 1.002, 1.003, 1.032, 0.968, 0.956, 0.983, 0.977, 1.073, 1.157, 0.97, 0.994, 1.102, 1.273, 1.003, 0.99, 0.958, 0.965, 1.01 ], + "endToEndLatency999pct" : [ 2.03, 5.511, 2.294, 1.948, 3.741, 5.045, 2.321, 4.784, 1.91, 2.5, 3.141, 2.369, 4.452, 3.817, 2.42, 1.336, 7.838, 3.55, 7.551, 3.537, 2.779, 1.639, 4.673, 2.86, 3.026, 3.214, 3.423, 3.318, 1.901, 2.532, 3.212, 6.54, 1.869, 4.501, 4.399, 4.379, 3.664, 7.248, 4.25, 1.562, 3.879, 2.898, 3.068, 3.939, 3.079, 3.247, 3.652, 3.27, 2.63, 4.993, 4.696, 4.889, 2.048, 7.849, 4.286, 4.625, 2.582, 2.071, 4.208, 2.933 ], + "endToEndLatency9999pct" : [ 5.295, 9.368, 4.8, 4.961, 7.994, 10.27, 7.243, 7.787, 4.287, 4.71, 5.37, 3.962, 6.072, 8.106, 5.595, 2.135, 16.586, 5.665, 14.577, 7.624, 5.414, 4.834, 11.516, 5.83, 5.796, 8.337, 7.026, 6.164, 5.533, 4.927, 6.439, 10.036, 5.498, 9.347, 5.692, 8.041, 7.855, 14.595, 5.804, 5.912, 5.766, 5.082, 6.579, 8.612, 6.704, 5.438, 7.203, 6.118, 6.003, 8.317, 6.917, 8.438, 5.376, 15.035, 14.326, 10.519, 5.904, 4.507, 10.004, 4.979 ], + "endToEndLatencyMax" : [ 6.322, 11.251, 7.03, 9.913, 12.558, 11.412, 10.708, 10.956, 6.798, 10.121, 7.505, 6.32, 11.742, 12.736, 7.655, 7.403, 19.476, 8.038, 15.468, 11.601, 8.149, 7.664, 13.396, 7.998, 11.032, 11.453, 8.009, 8.683, 7.879, 6.499, 11.546, 13.307, 7.8, 10.998, 7.255, 19.464, 12.483, 19.107, 7.033, 9.282, 9.094, 6.203, 9.37, 11.624, 10.809, 7.752, 7.725, 8.234, 11.838, 11.18, 10.666, 10.244, 8.14, 17.033, 16.497, 12.12, 8.157, 10.138, 15.03, 7.03 ], + "aggregatedEndToEndLatencyQuantiles" : { + "5.484061070065351E-6" : 0.162, + "0.5216164686792659" : 0.229, + "1.0307237940577127" : 0.242, + "1.5313801813271888" : 0.252, + "2.001079043856146" : 0.26, + "2.5513661838097135" : 0.268, + "3.0336893549219615" : 0.274, + "3.5905025275489066" : 0.28, + "4.005201741606179" : 0.284, + "4.5733285322206685" : 0.289, + "5.070036395519698" : 0.293, + "5.6000325095140235" : 0.297, + "6.021307112794304" : 0.3, + "6.606467397092417" : 0.304, + "7.064852641633829" : 0.307, + "7.534348593903194" : 0.31, + "8.015366558480766" : 0.313, + "8.512233459550826" : 0.316, + "9.01854939784461" : 0.319, + "9.539387129851928" : 0.322, + "10.065275682104774" : 0.325, + "10.602351718940554" : 0.328, + "11.156181562345385" : 0.331, + "11.532728163538211" : 0.333, + "12.107901972627735" : 0.336, + "12.692645468284523" : 0.339, + "13.090289252413891" : 0.341, + "13.702941134856243" : 0.344, + "14.119466541249846" : 0.346, + "14.538827207216674" : 0.348, + "15.176848356169147" : 0.351, + "15.609814977650807" : 0.353, + "16.048139526797918" : 0.355, + "16.715747185223396" : 0.358, + "17.168001249488473" : 0.36, + "17.626370041846677" : 0.362, + "18.08986643130539" : 0.364, + "18.559532389467925" : 0.366, + "19.032494268333572" : 0.368, + "19.512174122010048" : 0.37, + "20.23235747391424" : 0.373, + "20.719375001302463" : 0.375, + "21.214443130341543" : 0.377, + "21.70676922884559" : 0.379, + "22.2049468205114" : 0.381, + "22.70619548637644" : 0.383, + "23.208392894806604" : 0.385, + "23.7162279180168" : 0.387, + "24.224106813715547" : 0.389, + "24.73528711417848" : 0.391, + "25.25395315800205" : 0.393, + "25.51591030313586" : 0.394, + "26.036950945402772" : 0.396, + "26.562724332373147" : 0.398, + "27.089616467801815" : 0.4, + "27.62195975993413" : 0.402, + "28.15564664702861" : 0.404, + "28.692870753513283" : 0.406, + "29.2290419202725" : 0.408, + "29.769885507063417" : 0.41, + "30.041872999894377" : 0.411, + "30.586522525067917" : 0.413, + "31.131714972287394" : 0.415, + "31.67698968042292" : 0.417, + "32.226881967979445" : 0.419, + "32.50233538740669" : 0.42, + "33.05653814696428" : 0.422, + "33.61027476133092" : 0.424, + "34.163786529193686" : 0.426, + "34.71881189791179" : 0.428, + "35.27504924412638" : 0.43, + "35.55558638816557" : 0.431, + "36.114999005739726" : 0.433, + "36.677043972627516" : 0.435, + "37.240196719851454" : 0.437, + "37.523711709051696" : 0.438, + "38.08897581978761" : 0.44, + "38.65414121742427" : 0.442, + "39.219931798022905" : 0.444, + "39.50363324529953" : 0.445, + "40.0700599769823" : 0.447, + "40.63566409950456" : 0.449, + "41.20316570715706" : 0.451, + "41.76791431615239" : 0.453, + "42.052619346604835" : 0.454, + "42.624190127571325" : 0.456, + "43.19537702426291" : 0.458, + "43.766843608069074" : 0.46, + "44.05141153699476" : 0.461, + "44.622439395915315" : 0.463, + "45.193242408332" : 0.465, + "45.76552063317653" : 0.467, + "46.05195314286604" : 0.468, + "46.622838416198775" : 0.47, + "47.19620796919625" : 0.472, + "47.76858490714004" : 0.474, + "48.05417835548583" : 0.475, + "48.62537073623849" : 0.477, + "49.197221204319554" : 0.479, + "49.76784872678199" : 0.481, + "50.05096886358519" : 0.482, + "50.33491160954889" : 0.483, + "50.61858563652016" : 0.484, + "50.901897715460805" : 0.485, + "51.18336714988191" : 0.486, + "51.46566467752459" : 0.487, + "51.74861480843462" : 0.488, + "52.0325246500319" : 0.489, + "52.316363198835276" : 0.49, + "52.599082999180354" : 0.491, + "52.88125987747949" : 0.492, + "53.16201089990042" : 0.493, + "53.441802211634084" : 0.494, + "53.72119318690964" : 0.495, + "53.99933379626121" : 0.496, + "54.278000875475506" : 0.497, + "54.5570189345983" : 0.498, + "54.83657991576702" : 0.499, + "55.115729592355486" : 0.5, + "55.393096949096176" : 0.501, + "55.67046978989794" : 0.502, + "55.94510608422574" : 0.503, + "56.2215466346456" : 0.504, + "56.49476804121733" : 0.505, + "56.768504949529635" : 0.506, + "57.04122182248292" : 0.507, + "57.31336286902384" : 0.508, + "57.58631007254206" : 0.509, + "57.85924082387707" : 0.51, + "58.12997795078406" : 0.511, + "58.396832362453445" : 0.512, + "58.66787659678035" : 0.513, + "58.93531231892316" : 0.514, + "59.203373224027956" : 0.515, + "59.4700137573156" : 0.516, + "59.73667622684753" : 0.517, + "60.00197316517301" : 0.518, + "60.26823529824682" : 0.519, + "60.53229832283154" : 0.52, + "60.79570874414892" : 0.521, + "61.05943724100836" : 0.522, + "61.32306154070747" : 0.523, + "61.58634034455917" : 0.524, + "61.847754567647044" : 0.525, + "62.10714517220006" : 0.526, + "62.367226768447914" : 0.527, + "62.6257070188633" : 0.528, + "62.8844066317215" : 0.529, + "63.14179006992288" : 0.53, + "63.39776410442924" : 0.531, + "63.65389169264558" : 0.532, + "63.90906505423572" : 0.533, + "64.16265900623767" : 0.534, + "64.41629134666714" : 0.535, + "64.66950141439419" : 0.536, + "64.92115400877735" : 0.537, + "65.17093653833561" : 0.538, + "65.42179394386362" : 0.539, + "65.66874669790973" : 0.54, + "65.91861148838404" : 0.541, + "66.16467034047574" : 0.542, + "66.41123372618587" : 0.543, + "66.6558941427047" : 0.544, + "66.90101522035341" : 0.545, + "67.1439591257573" : 0.546, + "67.38600912920678" : 0.547, + "67.62590389665571" : 0.548, + "67.86501444337163" : 0.549, + "68.10320915188886" : 0.55, + "68.34293391344463" : 0.551, + "68.58036633747311" : 0.552, + "68.81697615234107" : 0.553, + "69.05023520589523" : 0.554, + "69.28460752384662" : 0.555, + "69.5188153199659" : 0.556, + "69.75001236655771" : 0.557, + "70.21069543268749" : 0.559, + "70.44092728453097" : 0.56, + "70.66973328049623" : 0.561, + "70.89436590598719" : 0.562, + "71.12075343102055" : 0.563, + "71.34491442725947" : 0.564, + "71.56971705864359" : 0.565, + "71.79077956037793" : 0.566, + "72.01162818373052" : 0.567, + "72.44932206585457" : 0.569, + "72.66632636239707" : 0.57, + "72.88316065304637" : 0.571, + "73.1010917559097" : 0.572, + "73.31410914005426" : 0.573, + "73.52638069189328" : 0.574, + "73.94712334124976" : 0.576, + "74.15298402569788" : 0.577, + "74.36125221295575" : 0.578, + "74.56637803322047" : 0.579, + "74.7703467165994" : 0.58, + "75.17612884735675" : 0.582, + "75.37741582487243" : 0.583, + "75.57620755460123" : 0.584, + "75.77504864087966" : 0.585, + "75.97266678153946" : 0.586, + "76.16999426696256" : 0.587, + "76.3639600229497" : 0.588, + "76.55869354748666" : 0.589, + "76.75312544866475" : 0.59, + "76.94506210205596" : 0.591, + "77.13664777553869" : 0.592, + "77.32596304773843" : 0.593, + "77.51420344396841" : 0.594, + "77.70079313781632" : 0.595, + "77.887678970962" : 0.596, + "78.0728428089317" : 0.597, + "78.25559914409162" : 0.598, + "78.439408418977" : 0.599, + "78.62185216265594" : 0.6, + "78.80262875176957" : 0.601, + "78.9825827317227" : 0.602, + "79.16156054880534" : 0.603, + "79.33915638249835" : 0.604, + "79.51435568150372" : 0.605, + "79.68817848118051" : 0.606, + "79.86248936229254" : 0.607, + "80.03772156566434" : 0.608, + "80.20793036909596" : 0.609, + "80.37801852318404" : 0.61, + "80.54498076246217" : 0.611, + "80.71451502638217" : 0.612, + "80.88106596108005" : 0.613, + "81.04758399141153" : 0.614, + "81.21158483771183" : 0.615, + "81.37459306895845" : 0.616, + "81.53722838405231" : 0.617, + "81.69932077710023" : 0.618, + "81.85958697781182" : 0.619, + "82.01921702743928" : 0.62, + "82.17840835218114" : 0.621, + "82.33436956495272" : 0.622, + "82.48929429018207" : 0.623, + "82.64261218551789" : 0.624, + "82.79503617889928" : 0.625, + "82.94673627621944" : 0.626, + "83.09896832746338" : 0.627, + "83.2473944403247" : 0.628, + "83.39557925449893" : 0.629, + "83.5433363119097" : 0.63, + "83.69051754290811" : 0.631, + "83.83661292981466" : 0.632, + "83.98084373595738" : 0.633, + "84.12292479016062" : 0.634, + "84.26500584436388" : 0.635, + "84.40486585383375" : 0.636, + "84.54473683142578" : 0.637, + "84.68380165204049" : 0.638, + "84.82107866874637" : 0.639, + "84.95677627586407" : 0.64, + "85.09095479806535" : 0.641, + "85.22586818445004" : 0.642, + "85.35960798176572" : 0.643, + "85.49106640967625" : 0.644, + "85.62160351532702" : 0.645, + "85.75001828934367" : 0.646, + "85.87853726052064" : 0.647, + "86.00543843368196" : 0.648, + "86.13111666122465" : 0.649, + "86.25581872589687" : 0.65, + "86.3801698106606" : 0.651, + "86.50368183408061" : 0.652, + "86.62618479026374" : 0.653, + "86.86870642296523" : 0.655, + "86.98783119752919" : 0.656, + "87.10659402406253" : 0.657, + "87.22339355673277" : 0.658, + "87.33868497260876" : 0.659, + "87.45381186665264" : 0.66, + "87.5682093805742" : 0.661, + "87.6808958674419" : 0.662, + "87.79379623269135" : 0.663, + "87.9050239593144" : 0.664, + "88.01606522786109" : 0.665, + "88.1241341353078" : 0.666, + "88.2320933615331" : 0.667, + "88.34014033273553" : 0.668, + "88.44586754610532" : 0.669, + "88.5514137854598" : 0.67, + "88.65637323027978" : 0.671, + "88.75947906245808" : 0.672, + "88.86255199026996" : 0.673, + "88.96507102791377" : 0.674, + "89.0661916299847" : 0.675, + "89.16598508927667" : 0.676, + "89.26521369027844" : 0.677, + "89.36248448147819" : 0.678, + "89.45986495389934" : 0.679, + "89.55681218549596" : 0.68, + "89.65220742780974" : 0.681, + "89.74700490746689" : 0.682, + "89.84063976617719" : 0.683, + "89.9350588456205" : 0.684, + "90.02752559932287" : 0.685, + "90.11867617836843" : 0.686, + "90.20874639738318" : 0.687, + "90.29832853496269" : 0.688, + "90.38811358280181" : 0.689, + "90.47567210184647" : 0.69, + "90.56287964098266" : 0.691, + "90.64937425217973" : 0.692, + "90.73481592365134" : 0.693, + "90.81910045823717" : 0.694, + "90.90294626793741" : 0.695, + "90.98769146365312" : 0.696, + "91.07237633469707" : 0.697, + "91.15326623548054" : 0.698, + "91.23436453058466" : 0.699, + "91.31460731216185" : 0.7, + "91.39359972781509" : 0.701, + "91.47102370200227" : 0.702, + "91.54933609408279" : 0.703, + "91.62724814970521" : 0.704, + "91.7031694911592" : 0.705, + "91.77838338873515" : 0.706, + "91.85423343739522" : 0.707, + "91.92817503280291" : 0.708, + "92.0013104712333" : 0.709, + "92.07355749177034" : 0.71, + "92.14572225139133" : 0.711, + "92.21657632041658" : 0.712, + "92.28681617460198" : 0.713, + "92.35658988359641" : 0.714, + "92.42693393494214" : 0.715, + "92.49589051883714" : 0.716, + "92.56391481235023" : 0.717, + "92.63246009166498" : 0.718, + "92.69991952688785" : 0.719, + "92.76631505426315" : 0.72, + "92.83136698667626" : 0.721, + "92.89606793918088" : 0.722, + "92.96074147138016" : 0.723, + "93.02528887017483" : 0.724, + "93.0893975440839" : 0.725, + "93.15123581670996" : 0.726, + "93.2129315037482" : 0.727, + "93.27517011283236" : 0.728, + "93.33553865709165" : 0.729, + "93.39520524153396" : 0.73, + "93.45480053318235" : 0.731, + "93.51351289099847" : 0.732, + "93.57106811192881" : 0.733, + "93.62839848635527" : 0.734, + "93.741556602475" : 0.736, + "93.79787790966458" : 0.737, + "93.85302562778514" : 0.738, + "93.90797043564613" : 0.739, + "93.96187327190381" : 0.74, + "94.01629160990207" : 0.741, + "94.06934441669388" : 0.742, + "94.12302240644767" : 0.743, + "94.1759819842013" : 0.744, + "94.22653954320623" : 0.745, + "94.278336500013" : 0.746, + "94.3299250624991" : 0.747, + "94.37962162391604" : 0.748, + "94.42852848053887" : 0.749, + "94.47838956378791" : 0.75, + "94.52675898242589" : 0.751, + "94.57494742704856" : 0.752, + "94.62214874067861" : 0.753, + "94.66964619360644" : 0.754, + "94.7170284812518" : 0.755, + "94.76346751039311" : 0.756, + "94.80972556551912" : 0.757, + "94.8547606750265" : 0.758, + "94.90066775024401" : 0.759, + "94.94504477242299" : 0.76, + "94.98864854199107" : 0.761, + "95.03253199867373" : 0.762, + "95.0759218898601" : 0.763, + "95.11877982712265" : 0.764, + "95.16055192029334" : 0.765, + "95.20253240778469" : 0.766, + "95.24460064025317" : 0.767, + "95.28553367208013" : 0.768, + "95.32568248317408" : 0.769, + "95.36619872635973" : 0.77, + "95.40600752566732" : 0.771, + "95.44577245248637" : 0.772, + "95.48514801096944" : 0.773, + "95.52344869348278" : 0.774, + "95.56116806552268" : 0.775, + "95.5987942085244" : 0.776, + "95.63657390523608" : 0.777, + "95.67364615806973" : 0.778, + "95.71026323383455" : 0.779, + "95.74716548077502" : 0.78, + "95.78325608667713" : 0.781, + "95.81832665722018" : 0.782, + "95.85383595264886" : 0.783, + "95.88819907931389" : 0.784, + "95.92239220008575" : 0.785, + "95.95622337282698" : 0.786, + "95.99097038376692" : 0.787, + "96.02443412441646" : 0.788, + "96.05712461245511" : 0.789, + "96.09076932711997" : 0.79, + "96.12305947870051" : 0.791, + "96.15562383333456" : 0.792, + "96.18742590347986" : 0.793, + "96.21958443759473" : 0.794, + "96.25044324923599" : 0.795, + "96.31132729523586" : 0.797, + "96.34122091212878" : 0.798, + "96.37103226810565" : 0.799, + "96.40087652844895" : 0.8, + "96.43009560583026" : 0.801, + "96.45966017905899" : 0.802, + "96.48933991757018" : 0.803, + "96.51838898905831" : 0.804, + "96.54664287169129" : 0.805, + "96.57395897988128" : 0.806, + "96.6009241081628" : 0.807, + "96.62832796132992" : 0.808, + "96.68174271615234" : 0.81, + "96.70749586693738" : 0.811, + "96.73354515702019" : 0.812, + "96.75937508466019" : 0.813, + "96.78495274549098" : 0.814, + "96.83519771301492" : 0.816, + "96.86024890398298" : 0.817, + "96.88469136417226" : 0.818, + "96.90879929663626" : 0.819, + "96.93257818543607" : 0.82, + "96.95670257008328" : 0.821, + "96.98052533137165" : 0.822, + "97.00429873611039" : 0.823, + "97.02711791422293" : 0.824, + "97.05089131896166" : 0.825, + "97.07408889728804" : 0.826, + "97.0963541852325" : 0.827, + "97.11886625592511" : 0.828, + "97.14058313776258" : 0.829, + "97.16245357330999" : 0.83, + "97.18378108681148" : 0.831, + "97.20521828153437" : 0.832, + "97.22637578914268" : 0.833, + "97.24710005592645" : 0.834, + "97.26812046200801" : 0.835, + "97.28851568512759" : 0.836, + "97.30829120934624" : 0.837, + "97.32864255997725" : 0.838, + "97.34835227546307" : 0.839, + "97.36796327784963" : 0.84, + "97.3875687961751" : 0.841, + "97.40709753764561" : 0.842, + "97.42641240073438" : 0.843, + "97.44589178565525" : 0.844, + "97.46434016709496" : 0.845, + "97.48311210813779" : 0.846, + "97.50123692997435" : 0.847, + "97.51975660420797" : 0.848, + "97.53764561141851" : 0.849, + "97.55585269417114" : 0.85, + "97.57347846645033" : 0.851, + "97.59121940401198" : 0.852, + "97.60868613852014" : 0.853, + "97.62606512805118" : 0.854, + "97.64320281889513" : 0.855, + "97.65953983682286" : 0.856, + "97.67667752766681" : 0.857, + "97.69302551371668" : 0.858, + "97.70885799802596" : 0.859, + "97.72499758975516" : 0.86, + "97.74085201030871" : 0.861, + "97.75627867409881" : 0.862, + "97.7714859754461" : 0.863, + "97.78703877264081" : 0.864, + "97.80254221328589" : 0.865, + "97.81738208254149" : 0.866, + "97.83260035201091" : 0.867, + "97.84706730511374" : 0.868, + "97.86181394533115" : 0.869, + "97.87629186655612" : 0.87, + "97.89089043712464" : 0.871, + "97.91984079551351" : 0.873, + "97.93370998595971" : 0.874, + "97.94796854474188" : 0.875, + "97.9620351613866" : 0.876, + "97.97548756319146" : 0.877, + "97.98877544316423" : 0.878, + "98.00257334081651" : 0.879, + "98.01594896576641" : 0.88, + "98.04157049908575" : 0.882, + "98.05437578168436" : 0.883, + "98.06732913393185" : 0.884, + "98.07971762788912" : 0.885, + "98.10464816951364" : 0.887, + "98.11698182286023" : 0.888, + "98.12920031092433" : 0.889, + "98.15253499077745" : 0.891, + "98.16408442339102" : 0.892, + "98.17597935185198" : 0.893, + "98.18758362507624" : 0.894, + "98.21081410776904" : 0.896, + "98.22191384737485" : 0.897, + "98.24445333837282" : 0.899, + "98.25540500832975" : 0.9, + "98.26673507850049" : 0.901, + "98.28784322955917" : 0.903, + "98.29838359493584" : 0.904, + "98.31953013442201" : 0.906, + "98.3298292011116" : 0.907, + "98.35001054584944" : 0.909, + "98.36015057476799" : 0.91, + "98.3801728817348" : 0.912, + "98.39960291010604" : 0.914, + "98.40888742549765" : 0.915, + "98.42741258379235" : 0.917, + "98.44588838553739" : 0.919, + "98.45470675573806" : 0.92, + "98.4636019027937" : 0.921, + "98.47239833675009" : 0.922, + "98.48107412136292" : 0.923, + "98.4899637843575" : 0.924, + "98.49871086176427" : 0.925, + "98.50703018240755" : 0.926, + "98.5157059670204" : 0.927, + "98.52428303853398" : 0.928, + "98.53296430720789" : 0.929, + "98.54114652632443" : 0.93, + "98.54947681508986" : 0.931, + "98.55760967765676" : 0.932, + "98.56570963585725" : 0.933, + "98.57353539100423" : 0.934, + "98.58166825357114" : 0.935, + "98.58959272181738" : 0.936, + "98.59724298701012" : 0.937, + "98.60513455088994" : 0.938, + "98.61281223638804" : 0.939, + "98.62053927843576" : 0.94, + "98.6284089060713" : 0.941, + "98.63585626100445" : 0.942, + "98.64324329126583" : 0.943, + "98.65058096497758" : 0.944, + "98.65781992559006" : 0.945, + "98.66454338446196" : 0.946, + "98.67878000699986" : 0.948, + "98.68629865472691" : 0.949, + "98.69302759765989" : 0.95, + "98.70016236111204" : 0.951, + "98.70707776212139" : 0.952, + "98.71381767317651" : 0.953, + "98.72052467986519" : 0.954, + "98.72719878218746" : 0.955, + "98.74070602460303" : 0.957, + "98.74718818478784" : 0.958, + "98.75364840872838" : 0.959, + "98.76000443550859" : 0.96, + "98.76653046818197" : 0.961, + "98.77902315929958" : 0.963, + "98.78535176577444" : 0.964, + "98.79116487050871" : 0.965, + "98.79764703069353" : 0.966, + "98.80969002880339" : 0.968, + "98.81516860581237" : 0.969, + "98.82123946141694" : 0.97, + "98.83272856935874" : 0.972, + "98.83852522190979" : 0.973, + "98.84424509760586" : 0.974, + "98.8551199907078" : 0.976, + "98.86074115330463" : 0.977, + "98.87152281736837" : 0.979, + "98.87659008979712" : 0.98, + "98.88767886128079" : 0.982, + "98.89298194833553" : 0.983, + "98.90344553685722" : 0.985, + "98.90869378330127" : 0.986, + "98.91906962684584" : 0.988, + "98.92370365845004" : 0.989, + "98.93381078300217" : 0.991, + "98.93870804953774" : 0.992, + "98.94823386361645" : 0.994, + "98.95781451830585" : 0.996, + "98.96239370929935" : 0.997, + "98.97155209128637" : 0.999, + "98.98057885580769" : 1.001, + "98.98519643522869" : 1.002, + "98.99404770979577" : 1.004, + "99.00295930903462" : 1.006, + "99.01158025303677" : 1.008, + "99.01574813945003" : 1.009, + "99.0239413266887" : 1.011, + "99.03265001566797" : 1.013, + "99.04117773063192" : 1.015, + "99.04948608315307" : 1.017, + "99.05747087607108" : 1.019, + "99.06539534431732" : 1.021, + "99.07347336627353" : 1.023, + "99.0812826692373" : 1.025, + "99.08890551412469" : 1.027, + "99.09648448652352" : 1.029, + "99.10408539516663" : 1.031, + "99.11143403700052" : 1.033, + "99.11869493385728" : 1.035, + "99.12583518137052" : 1.037, + "99.13637554674717" : 1.04, + "99.14304964906945" : 1.042, + "99.15017344439946" : 1.044, + "99.15682561047745" : 1.046, + "99.1663623926783" : 1.049, + "99.17294326596237" : 1.051, + "99.18190422175086" : 1.054, + "99.18795314111114" : 1.056, + "99.19725959274705" : 1.059, + "99.20340174114551" : 1.061, + "99.2121433344912" : 1.064, + "99.22092331626438" : 1.067, + "99.22364341055513" : 1.068, + "99.22960458493829" : 1.07, + "99.23227532267941" : 1.071, + "99.23511058225263" : 1.072, + "99.24052335052879" : 1.074, + "99.24333118979666" : 1.075, + "99.24867814933998" : 1.077, + "99.25106919996652" : 1.078, + "99.25636680296022" : 1.08, + "99.25891140729672" : 1.081, + "99.26421997841254" : 1.083, + "99.26681942335975" : 1.084, + "99.27185379142207" : 1.086, + "99.27439291169752" : 1.087, + "99.27925178980558" : 1.089, + "99.28164284043214" : 1.09, + "99.2864139735631" : 1.092, + "99.29124543136582" : 1.094, + "99.29367487041986" : 1.095, + "99.29845697167296" : 1.097, + "99.30296486987255" : 1.099, + "99.30513107399523" : 1.1, + "99.30994059555368" : 1.102, + "99.31422364724939" : 1.104, + "99.31826540025804" : 1.106, + "99.32073871180063" : 1.107, + "99.32463239516038" : 1.109, + "99.3287893134515" : 1.111, + "99.3329462317426" : 1.113, + "99.33700443693445" : 1.115, + "99.34119974365305" : 1.117, + "99.3452195604174" : 1.119, + "99.34943680338029" : 1.121, + "99.35340177953394" : 1.123, + "99.35738320787081" : 1.125, + "99.36127689123056" : 1.127, + "99.36513767022389" : 1.129, + "99.36894909266758" : 1.131, + "99.37277148323342" : 1.133, + "99.37657193755497" : 1.135, + "99.38016399755587" : 1.137, + "99.38347088638112" : 1.139, + "99.3869532651606" : 1.141, + "99.392305708765" : 1.144, + "99.39569485850629" : 1.146, + "99.39916078510257" : 1.148, + "99.40240186519497" : 1.15, + "99.40746913762372" : 1.153, + "99.41090764391465" : 1.155, + "99.4141048515185" : 1.157, + "99.41900760211513" : 1.16, + "99.42217190535257" : 1.162, + "99.42692110223923" : 1.165, + "99.42999217643847" : 1.167, + "99.43435748905024" : 1.17, + "99.43888732349413" : 1.173, + "99.4416567743345" : 1.175, + "99.44590143760274" : 1.178, + "99.45005287183278" : 1.181, + "99.45401236392536" : 1.184, + "99.45798282414009" : 1.187, + "99.46161875662955" : 1.19, + "99.46544114719538" : 1.193, + "99.46926353776122" : 1.196, + "99.47289947025067" : 1.199, + "99.4776760874427" : 1.203, + "99.48098846032902" : 1.206, + "99.48541958167363" : 1.21, + "99.48851259211715" : 1.213, + "99.4928450003625" : 1.217, + "99.4970951476918" : 1.221, + "99.50008396097498" : 1.224, + "99.50429023581572" : 1.228, + "99.5085074787786" : 1.232, + "99.51245051868798" : 1.236, + "99.51611387148279" : 1.24, + "99.52008981575858" : 1.244, + "99.52367090763734" : 1.248, + "99.528184289898" : 1.253, + "99.53163924837214" : 1.257, + "99.53579616666325" : 1.262, + "99.53936080635879" : 1.266, + "99.54334771875673" : 1.271, + "99.54699461936832" : 1.276, + "99.5507895896288" : 1.281, + "99.55545104153836" : 1.287, + "99.5591253624553" : 1.292, + "99.56254193250196" : 1.297, + "99.566929181358" : 1.303, + "99.57031833109932" : 1.308, + "99.57427782319189" : 1.314, + "99.57871442859758" : 1.321, + "99.58224067986563" : 1.327, + "99.58623856038571" : 1.334, + "99.5901048234401" : 1.341, + "99.5940259271052" : 1.348, + "99.59799638731992" : 1.356, + "99.60184071413005" : 1.364, + "99.6057343974898" : 1.372, + "99.6097651823763" : 1.381, + "99.61158040659048" : 1.385, + "99.61337917862146" : 1.389, + "99.61543570152274" : 1.394, + "99.61744835193545" : 1.398, + "99.61930744863821" : 1.402, + "99.6214133280891" : 1.407, + "99.62319564793688" : 1.411, + "99.62526313896029" : 1.416, + "99.62695771383095" : 1.42, + "99.62930489196893" : 1.425, + "99.63093365810674" : 1.429, + "99.63307792598513" : 1.434, + "99.63487669801611" : 1.438, + "99.6367303106578" : 1.443, + "99.63867715233768" : 1.448, + "99.64102981453674" : 1.454, + "99.642850522812" : 1.459, + "99.64470961951474" : 1.464, + "99.64664549307248" : 1.469, + "99.64849362165309" : 1.474, + "99.65051724018795" : 1.479, + "99.65260666745564" : 1.484, + "99.65446028009733" : 1.489, + "99.65650583487646" : 1.494, + "99.6584417084342" : 1.499, + "99.6602733848316" : 1.504, + "99.66213248153434" : 1.509, + "99.66411771164171" : 1.514, + "99.66636617668044" : 1.52, + "99.66804978342894" : 1.525, + "99.67013921069663" : 1.531, + "99.67204766394902" : 1.536, + "99.6741206390335" : 1.542, + "99.67596328355305" : 1.547, + "99.67788818898865" : 1.552, + "99.67970889726391" : 1.557, + "99.68174896798197" : 1.563, + "99.68383839524967" : 1.569, + "99.68585104566237" : 1.575, + "99.68765530175443" : 1.581, + "99.68954181876254" : 1.587, + "99.69154898511418" : 1.593, + "99.69340808181693" : 1.599, + "99.69549202502355" : 1.606, + "99.69752112761948" : 1.613, + "99.69953377803219" : 1.619, + "99.70123932102499" : 1.625, + "99.70329035986518" : 1.632, + "99.70507816377402" : 1.638, + "99.70706887794246" : 1.645, + "99.70910894866053" : 1.652, + "99.71098998160755" : 1.659, + "99.71313424948595" : 1.667, + "99.71487818090623" : 1.674, + "99.71703341690677" : 1.683, + "99.7189528382813" : 1.691, + "99.72086677559474" : 1.699, + "99.72286845788531" : 1.707, + "99.72467271397737" : 1.714, + "99.72664149190152" : 1.722, + "99.72851704078748" : 1.731, + "99.73059001587197" : 1.741, + "99.73247104881901" : 1.749, + "99.73437950207139" : 1.758, + "99.73649634964443" : 1.768, + "99.73833899416397" : 1.777, + "99.74027486772171" : 1.786, + "99.7422930021955" : 1.797, + "99.74432210479141" : 1.81, + "99.74610442463919" : 1.82, + "99.74820482002902" : 1.832, + "99.7501516617089" : 1.843, + "99.75200527435058" : 1.854, + "99.75399050445793" : 1.866, + "99.75593734613781" : 1.879, + "99.75788967187876" : 1.892, + "99.75990780635254" : 1.905, + "99.76175045087209" : 1.917, + "99.76379052159014" : 1.931, + "99.76566058641504" : 1.943, + "99.76762936433919" : 1.958, + "99.76964749881297" : 1.972, + "99.77156143612643" : 1.986, + "99.7734918256231" : 2.001, + "99.77548253979153" : 2.016, + "99.77740744522711" : 2.03, + "99.77932138254057" : 2.046, + "99.78127370828152" : 2.061, + "99.78323151808353" : 2.076, + "99.78515642351913" : 2.091, + "99.78716907393184" : 2.108, + "99.7891159156117" : 2.124, + "99.79107920947479" : 2.143, + "99.79299863084931" : 2.159, + "99.79498934501774" : 2.177, + "99.79689231420906" : 2.195, + "99.79889399649963" : 2.212, + "99.80088471066807" : 2.231, + "99.80277671173724" : 2.25, + "99.80478936214995" : 2.269, + "99.80576552502042" : 2.28, + "99.80667587915805" : 2.289, + "99.8077123667003" : 2.299, + "99.808628204899" : 2.309, + "99.80958791558626" : 2.32, + "99.81064633937278" : 2.332, + "99.81152378914399" : 2.343, + "99.81256027668624" : 2.355, + "99.81348159894601" : 2.366, + "99.81447969806077" : 2.377, + "99.81543940874802" : 2.389, + "99.8164320238017" : 2.402, + "99.8174027026111" : 2.416, + "99.818411769848" : 2.428, + "99.81937696459633" : 2.442, + "99.82033667528358" : 2.455, + "99.821307354093" : 2.47, + "99.8222944850856" : 2.484, + "99.82328710013928" : 2.497, + "99.82427971519297" : 2.511, + "99.8252449099413" : 2.523, + "99.82624300905604" : 2.537, + "99.82718078349903" : 2.55, + "99.82821727104127" : 2.565, + "99.82913310923998" : 2.576, + "99.83013669241579" : 2.588, + "99.83106349873664" : 2.598, + "99.83205611379032" : 2.609, + "99.83305421290507" : 2.62, + "99.83400843953126" : 2.632, + "99.83504492707351" : 2.645, + "99.83594979715006" : 2.656, + "99.83694241220374" : 2.667, + "99.83790212289101" : 2.677, + "99.83892215825004" : 2.69, + "99.839936709548" : 2.702, + "99.84095126084597" : 2.715, + "99.8418616149836" : 2.726, + "99.84286519815942" : 2.739, + "99.84378652041919" : 2.75, + "99.84477913547288" : 2.762, + "99.84575529834335" : 2.774, + "99.8467150090306" : 2.786, + "99.8476692356568" : 2.798, + "99.84866185071047" : 2.812, + "99.8496270454588" : 2.825, + "99.85063062863463" : 2.84, + "99.85159033932189" : 2.852, + "99.85253908188702" : 2.866, + "99.85356460130711" : 2.881, + "99.8545023757501" : 2.897, + "99.85550047486485" : 2.911, + "99.85650954210173" : 2.927, + "99.8574308643615" : 2.942, + "99.8584399315984" : 2.957, + "99.85938319010245" : 2.973, + "99.86040322546148" : 2.988, + "99.86141229269838" : 3.003, + "99.86234458308029" : 3.017, + "99.86329880970648" : 3.033, + "99.86431336100445" : 3.05, + "99.86523468326422" : 3.065, + "99.86623278237897" : 3.08, + "99.86721991337157" : 3.095, + "99.86817413999776" : 3.112, + "99.86917772317359" : 3.128, + "99.87013743386085" : 3.143, + "99.87110811267026" : 3.158, + "99.87207879147965" : 3.174, + "99.87305495435012" : 3.188, + "99.87404756940381" : 3.206, + "99.87504566851857" : 3.222, + "99.87600537920582" : 3.236, + "99.87703089862592" : 3.254, + "99.87801254555747" : 3.269, + "99.87893386781724" : 3.285, + "99.87992648287091" : 3.302, + "99.88091361386353" : 3.321, + "99.88192268110042" : 3.338, + "99.88282755117699" : 3.355, + "99.88380371404746" : 3.373, + "99.88477439285685" : 3.392, + "99.8857560397884" : 3.411, + "99.88674865484208" : 3.432, + "99.88772481771255" : 3.454, + "99.88870098058302" : 3.477, + "99.8896771434535" : 3.498, + "99.89063685414075" : 3.521, + "99.89161301701122" : 3.544, + "99.89259466394277" : 3.568, + "99.89357631087431" : 3.59, + "99.894568925928" : 3.609, + "99.89552315255419" : 3.628, + "99.8965102835468" : 3.651, + "99.89749193047834" : 3.673, + "99.89844067304345" : 3.693, + "99.89948812870784" : 3.715, + "99.90039848284547" : 3.731, + "99.90138012977701" : 3.751, + "99.9023727448307" : 3.771, + "99.90286082626594" : 3.78, + "99.90333793957903" : 3.79, + "99.90381505289213" : 3.798, + "99.90429765026629" : 3.808, + "99.9048076679458" : 3.819, + "99.90527381313676" : 3.828, + "99.905761894572" : 3.839, + "99.90626094412937" : 3.85, + "99.90676547774783" : 3.862, + "99.90724807512198" : 3.872, + "99.90772518843508" : 3.883, + "99.90820778580925" : 3.894, + "99.90874522379411" : 3.907, + "99.90918943274079" : 3.917, + "99.90968299823709" : 3.928, + "99.91018753185554" : 3.938, + "99.91069754953506" : 3.949, + "99.91115821066494" : 3.96, + "99.91162435585589" : 3.97, + "99.91213985759649" : 3.98, + "99.91260051872636" : 3.992, + "99.91311053640588" : 4.004, + "99.91359861784112" : 4.015, + "99.9140976673985" : 4.027, + "99.91457478071159" : 4.039, + "99.91505737808576" : 4.049, + "99.91555642764314" : 4.059, + "99.91603354095624" : 4.071, + "99.91650517020825" : 4.084, + "99.91699873570457" : 4.097, + "99.91748133307873" : 4.109, + "99.91797489857504" : 4.12, + "99.9184739481324" : 4.133, + "99.91896751362871" : 4.147, + "99.91946656318609" : 4.159, + "99.91996012868239" : 4.17, + "99.92043724199549" : 4.18, + "99.92091983936966" : 4.194, + "99.92143534111024" : 4.206, + "99.9219014863012" : 4.216, + "99.92239505179751" : 4.227, + "99.92286119698846" : 4.238, + "99.92338218279012" : 4.249, + "99.92383187579786" : 4.26, + "99.9243583456606" : 4.273, + "99.92480803866833" : 4.286, + "99.92529612010357" : 4.3, + "99.92579516966094" : 4.311, + "99.92627776703512" : 4.324, + "99.92676584847035" : 4.336, + "99.92725392990559" : 4.349, + "99.9277639475851" : 4.361, + "99.92825202902033" : 4.373, + "99.92872365827236" : 4.386, + "99.9292281918908" : 4.399, + "99.92969982114283" : 4.41, + "99.93017693445593" : 4.428, + "99.93066501589117" : 4.44, + "99.93116406544854" : 4.456, + "99.93164117876164" : 4.474, + "99.93213474425794" : 4.488, + "99.93263379381531" : 4.502, + "99.93313832743377" : 4.521, + "99.93362092480793" : 4.537, + "99.93409255405996" : 4.552, + "99.93457515143412" : 4.569, + "99.93506871693043" : 4.59, + "99.93555131430459" : 4.607, + "99.93603939573983" : 4.625, + "99.93656586560256" : 4.643, + "99.93702104267138" : 4.657, + "99.93750912410661" : 4.673, + "99.93800817366399" : 4.69, + "99.938479802916" : 4.707, + "99.9389733684123" : 4.722, + "99.93947790203076" : 4.735, + "99.93996049940492" : 4.749, + "99.94043761271801" : 4.766, + "99.94092569415325" : 4.784, + "99.94141925964956" : 4.8, + "99.94189637296266" : 4.814, + "99.94241187470324" : 4.829, + "99.94287253583313" : 4.846, + "99.94337706945157" : 4.859, + "99.94387611900895" : 4.874, + "99.94433678013884" : 4.888, + "99.94484131375728" : 4.9, + "99.94532939519252" : 4.914, + "99.94581199256669" : 4.927, + "99.94630007400193" : 4.943, + "99.94679363949822" : 4.957, + "99.94727075281132" : 4.971, + "99.94777528642977" : 4.989, + "99.94824691568179" : 5.003, + "99.94873499711703" : 5.018, + "99.9492340466744" : 5.035, + "99.9497111599875" : 5.049, + "99.9502047254838" : 5.065, + "99.95070377504118" : 5.079, + "99.95118637241535" : 5.094, + "99.95142767110244" : 5.103, + "99.95167993791165" : 5.111, + "99.95190478441553" : 5.118, + "99.95215156716368" : 5.124, + "99.95242577021719" : 5.134, + "99.95265610078212" : 5.144, + "99.952880947286" : 5.152, + "99.95313321409522" : 5.161, + "99.95339096496552" : 5.17, + "99.95362677959153" : 5.18, + "99.95387356233968" : 5.189, + "99.95412582914891" : 5.198, + "99.95437261189706" : 5.204, + "99.954602942462" : 5.213, + "99.95485520927122" : 5.221, + "99.95510747608044" : 5.231, + "99.95532683852325" : 5.24, + "99.95559007345462" : 5.249, + "99.95581491995848" : 5.26, + "99.95605621864557" : 5.269, + "99.95630848545478" : 5.279, + "99.95654978414187" : 5.288, + "99.95679108282896" : 5.298, + "99.95704883369925" : 5.308, + "99.9572791642642" : 5.317, + "99.95752046295128" : 5.327, + "99.95778369788263" : 5.338, + "99.95801951250866" : 5.347, + "99.95827177931787" : 5.356, + "99.9585240461271" : 5.366, + "99.9587598607531" : 5.376, + "99.95899019131805" : 5.385, + "99.95924245812728" : 5.398, + "99.95947827275329" : 5.408, + "99.95973053956251" : 5.419, + "99.95996635418852" : 5.431, + "99.96020765287561" : 5.44, + "99.96045443562376" : 5.452, + "99.96069573431085" : 5.466, + "99.9609589692422" : 5.477, + "99.96119478386822" : 5.486, + "99.96143059849423" : 5.496, + "99.96167189718132" : 5.506, + "99.96193513211267" : 5.52, + "99.96216546267762" : 5.532, + "99.96241224542577" : 5.544, + "99.96265902817393" : 5.556, + "99.96289484279994" : 5.567, + "99.96314710960917" : 5.585, + "99.96338292423518" : 5.603, + "99.96364615916654" : 5.617, + "99.9638929419147" : 5.631, + "99.9641287565407" : 5.647, + "99.96436457116671" : 5.664, + "99.9646058698538" : 5.677, + "99.96485265260195" : 5.689, + "99.96508846722796" : 5.7, + "99.96534621809826" : 5.718, + "99.96559848490747" : 5.742, + "99.9658342995335" : 5.758, + "99.96606463009843" : 5.775, + "99.96631689690766" : 5.789, + "99.96655819559474" : 5.801, + "99.96681594646503" : 5.814, + "99.96706272921318" : 5.831, + "99.96729305977813" : 5.842, + "99.96753435846522" : 5.855, + "99.96778662527444" : 5.87, + "99.96802243990045" : 5.884, + "99.96826373858754" : 5.897, + "99.96853245757997" : 5.909, + "99.96876827220598" : 5.92, + "99.96899860277092" : 5.931, + "99.96925086958014" : 5.945, + "99.96948668420616" : 5.959, + "99.96976088725965" : 5.975, + "99.96999670188568" : 5.983, + "99.97023251651169" : 5.994, + "99.97047929925984" : 6.009, + "99.9707041457637" : 6.024, + "99.97095641257293" : 6.041, + "99.97119222719894" : 6.056, + "99.97145546213031" : 6.072, + "99.97169127675632" : 6.089, + "99.97193805950448" : 6.107, + "99.97216839006941" : 6.121, + "99.97242065687864" : 6.139, + "99.97265647150465" : 6.152, + "99.97290325425281" : 6.168, + "99.97315003700096" : 6.183, + "99.97339681974911" : 6.204, + "99.97366005468048" : 6.22, + "99.97389038524543" : 6.238, + "99.97412619987144" : 6.254, + "99.97437846668065" : 6.271, + "99.97461428130667" : 6.293, + "99.97485557999374" : 6.316, + "99.97510784680297" : 6.336, + "99.97534366142898" : 6.356, + "99.97559044417714" : 6.375, + "99.97572754570389" : 6.39, + "99.97583174286422" : 6.399, + "99.9759633603299" : 6.408, + "99.97607852561238" : 6.417, + "99.97621014307806" : 6.428, + "99.97633627648267" : 6.442, + "99.97644595770407" : 6.451, + "99.97657209110868" : 6.465, + "99.97669274045222" : 6.475, + "99.9768243579179" : 6.49, + "99.97693403913931" : 6.506, + "99.97706017254391" : 6.519, + "99.97718082188746" : 6.535, + "99.977301471231" : 6.548, + "99.97742760463561" : 6.565, + "99.97754276991809" : 6.577, + "99.97766341926162" : 6.596, + "99.97778406860516" : 6.617, + "99.97791568607084" : 6.629, + "99.97803633541439" : 6.643, + "99.97815150069685" : 6.658, + "99.9782721500404" : 6.686, + "99.97839828344502" : 6.708, + "99.9785299009107" : 6.722, + "99.97863958213209" : 6.744, + "99.97876023147563" : 6.76, + "99.97888636488025" : 6.778, + "99.9790070142238" : 6.794, + "99.97912766356733" : 6.815, + "99.97924831291087" : 6.831, + "99.97937444631549" : 6.848, + "99.9795005797201" : 6.861, + "99.97962122906364" : 6.875, + "99.97974187840718" : 6.886, + "99.97986252775073" : 6.897, + "99.97998866115533" : 6.913, + "99.9801038264378" : 6.933, + "99.98023544390348" : 6.947, + "99.9803615773081" : 6.96, + "99.98047125852949" : 6.972, + "99.98059739193411" : 6.982, + "99.98071804127765" : 6.997, + "99.98084417468226" : 7.011, + "99.98095933996473" : 7.021, + "99.98108547336935" : 7.036, + "99.98121709083503" : 7.05, + "99.98132677205643" : 7.063, + "99.98145290546104" : 7.083, + "99.98157355480458" : 7.095, + "99.98169420414813" : 7.105, + "99.98181485349167" : 7.118, + "99.98194098689628" : 7.135, + "99.98205615217874" : 7.151, + "99.98218228558336" : 7.168, + "99.98230293492689" : 7.182, + "99.98242358427044" : 7.202, + "99.98254423361398" : 7.213, + "99.98267585107966" : 7.228, + "99.98279101636213" : 7.243, + "99.98291714976675" : 7.261, + "99.98303779911029" : 7.28, + "99.98315844845384" : 7.303, + "99.98327909779736" : 7.319, + "99.98339974714091" : 7.335, + "99.98353684866767" : 7.358, + "99.98365201395013" : 7.371, + "99.98377266329368" : 7.396, + "99.98388782857614" : 7.413, + "99.98401944604183" : 7.43, + "99.98413461132431" : 7.445, + "99.98425526066784" : 7.467, + "99.98438139407246" : 7.485, + "99.98451301153814" : 7.503, + "99.98463366088167" : 7.523, + "99.98474334210307" : 7.534, + "99.98486399144662" : 7.549, + "99.98501206109552" : 7.568, + "99.98511077419477" : 7.585, + "99.98523142353831" : 7.606, + "99.98535755694293" : 7.628, + "99.98548917440861" : 7.646, + "99.98559885563" : 7.656, + "99.98573047309569" : 7.667, + "99.98584015431709" : 7.685, + "99.98596628772171" : 7.71, + "99.98608693706524" : 7.729, + "99.98621855453092" : 7.754, + "99.98632823575232" : 7.774, + "99.98645985321801" : 7.796, + "99.98659147068369" : 7.826, + "99.98669566784402" : 7.844, + "99.98682180124864" : 7.864, + "99.98694793465324" : 7.884, + "99.98706309993571" : 7.906, + "99.98718374927925" : 7.923, + "99.98730988268387" : 7.942, + "99.98743601608848" : 7.965, + "99.98755118137095" : 7.978, + "99.98767183071449" : 7.996, + "99.98779796411911" : 8.02, + "99.98785828879087" : 8.03, + "99.98791861346264" : 8.041, + "99.98797893813442" : 8.058, + "99.98803926280618" : 8.074, + "99.98809958747796" : 8.091, + "99.98815991214973" : 8.101, + "99.9882202368215" : 8.109, + "99.98828604555435" : 8.122, + "99.98834637022611" : 8.129, + "99.98840669489788" : 8.139, + "99.9884779876918" : 8.153, + "99.98852734424142" : 8.159, + "99.9885876689132" : 8.173, + "99.98864799358496" : 8.191, + "99.98872477043994" : 8.207, + "99.98877412698958" : 8.219, + "99.98883445166135" : 8.227, + "99.98890026039419" : 8.253, + "99.98895510100489" : 8.269, + "99.98901542567666" : 8.277, + "99.98908671847057" : 8.298, + "99.9891360750202" : 8.311, + "99.98920736781412" : 8.32, + "99.98926220842482" : 8.337, + "99.98932253309658" : 8.35, + "99.98938285776835" : 8.365, + "99.98944318244013" : 8.378, + "99.98950899117297" : 8.391, + "99.98956383178367" : 8.409, + "99.98962415645543" : 8.425, + "99.98968996518828" : 8.45, + "99.98975028986004" : 8.462, + "99.98981061453182" : 8.479, + "99.98987093920358" : 8.492, + "99.98993126387536" : 8.503, + "99.98999158854713" : 8.52, + "99.9900519132189" : 8.534, + "99.99012320601281" : 8.558, + "99.99017804662351" : 8.567, + "99.99023837129528" : 8.583, + "99.99029869596706" : 8.608, + "99.9903645046999" : 8.621, + "99.9904193453106" : 8.632, + "99.99047966998236" : 8.65, + "99.99053999465414" : 8.668, + "99.99060580338698" : 8.684, + "99.99066612805875" : 8.718, + "99.99073193679159" : 8.739, + "99.99078677740229" : 8.751, + "99.99084710207406" : 8.778, + "99.9909129108069" : 8.793, + "99.9909677514176" : 8.805, + "99.99102807608938" : 8.817, + "99.99109388482222" : 8.847, + "99.99115420949398" : 8.871, + "99.99121453416575" : 8.898, + "99.99127485883753" : 8.907, + "99.99134066757037" : 8.927, + "99.99140099224213" : 8.937, + "99.99145583285284" : 8.958, + "99.99152164158568" : 8.976, + "99.99158196625746" : 9.001, + "99.99164777499028" : 9.014, + "99.99170261560099" : 9.033, + "99.99176294027276" : 9.057, + "99.99182326494453" : 9.082, + "99.99188358961631" : 9.099, + "99.99194391428807" : 9.127, + "99.99200972302091" : 9.16, + "99.99207004769269" : 9.197, + "99.99213037236446" : 9.226, + "99.99219069703622" : 9.25, + "99.992251021708" : 9.274, + "99.99231134637976" : 9.32, + "99.99237167105154" : 9.347, + "99.99243199572331" : 9.37, + "99.99249780445615" : 9.393, + "99.99256361318899" : 9.418, + "99.99262393786076" : 9.45, + "99.99267877847146" : 9.478, + "99.99273910314324" : 9.5, + "99.99280491187608" : 9.53, + "99.99285975248678" : 9.553, + "99.99292007715854" : 9.573, + "99.99299136995246" : 9.601, + "99.99304621056315" : 9.62, + "99.99310653523493" : 9.646, + "99.99317234396777" : 9.667, + "99.99322718457847" : 9.682, + "99.99328750925024" : 9.707, + "99.99334783392202" : 9.721, + "99.99341364265486" : 9.75, + "99.99347396732662" : 9.785, + "99.99353429199839" : 9.801, + "99.99359461667017" : 9.824, + "99.99366042540301" : 9.857, + "99.99371526601371" : 9.879, + "99.99377559068547" : 9.926, + "99.99383591535725" : 9.946, + "99.9939017240901" : 9.977, + "99.99392914439544" : 9.991, + "99.99396204876186" : 10.012, + "99.9939894690672" : 10.029, + "99.9940278574947" : 10.041, + "99.99404979373898" : 10.048, + "99.9940826981054" : 10.069, + "99.99411011841075" : 10.083, + "99.99414302277717" : 10.095, + "99.99417592714359" : 10.108, + "99.99420334744894" : 10.115, + "99.99424173587643" : 10.126, + "99.99426367212071" : 10.136, + "99.99430206054821" : 10.167, + "99.99432399679249" : 10.184, + "99.99435690115891" : 10.208, + "99.99438980552533" : 10.226, + "99.99441722583067" : 10.241, + "99.9944501301971" : 10.268, + "99.99447755050244" : 10.278, + "99.99451045486886" : 10.306, + "99.99453787517422" : 10.323, + "99.99457077954064" : 10.343, + "99.99460368390706" : 10.355, + "99.9946311042124" : 10.366, + "99.99466400857882" : 10.387, + "99.99469142888418" : 10.397, + "99.9947243332506" : 10.415, + "99.99475175355595" : 10.431, + "99.99478465792237" : 10.457, + "99.99481756228879" : 10.475, + "99.99484498259415" : 10.503, + "99.99487788696055" : 10.517, + "99.99490530726591" : 10.543, + "99.99493821163233" : 10.572, + "99.99496563193767" : 10.574, + "99.9949985363041" : 10.592, + "99.99502595660945" : 10.617, + "99.99506434503694" : 10.638, + "99.9950917653423" : 10.657, + "99.99511918564764" : 10.672, + "99.99515209001406" : 10.686, + "99.99517951031942" : 10.701, + "99.99521241468584" : 10.716, + "99.99523983499118" : 10.723, + "99.99527822341868" : 10.73, + "99.99530564372402" : 10.737, + "99.99533306402938" : 10.749, + "99.99536596839579" : 10.778, + "99.99539338870115" : 10.792, + "99.99542629306757" : 10.802, + "99.99545371337291" : 10.807, + "99.99549210180041" : 10.827, + "99.99551403804469" : 10.841, + "99.99554694241111" : 10.856, + "99.9955853308386" : 10.869, + "99.99560726708287" : 10.882, + "99.9956401714493" : 10.922, + "99.99566759175465" : 10.955, + "99.99570598018214" : 10.967, + "99.99572791642642" : 10.976, + "99.99576082079284" : 11.006, + "99.99579372515926" : 11.023, + "99.9958211454646" : 11.032, + "99.99585404983102" : 11.059, + "99.99588147013638" : 11.07, + "99.9959143745028" : 11.076, + "99.99594179480815" : 11.093, + "99.99597469917457" : 11.108, + "99.99600760354099" : 11.128, + "99.99603502384635" : 11.145, + "99.99607341227383" : 11.155, + "99.99610083257919" : 11.163, + "99.99612825288453" : 11.174, + "99.99615567318989" : 11.187, + "99.99619954567845" : 11.211, + "99.99621599786165" : 11.214, + "99.99624890222807" : 11.241, + "99.99628729065556" : 11.252, + "99.99631471096092" : 11.259, + "99.99634213126626" : 11.278, + "99.99636955157162" : 11.297, + "99.99640245593804" : 11.335, + "99.99642987624338" : 11.361, + "99.9964627806098" : 11.39, + "99.99649568497622" : 11.426, + "99.99652310528158" : 11.445, + "99.996556009648" : 11.456, + "99.99658342995335" : 11.489, + "99.99661633431977" : 11.516, + "99.99664375462513" : 11.546, + "99.99667665899155" : 11.595, + "99.99670956335797" : 11.622, + "99.99673698366331" : 11.643, + "99.99676988802973" : 11.674, + "99.99679730833508" : 11.709, + "99.9968302127015" : 11.774, + "99.99685763300685" : 11.791, + "99.99689053737328" : 11.804, + "99.99691795767862" : 11.838, + "99.99695086204504" : 11.886, + "99.99696731422826" : 11.888, + "99.99698376641146" : 11.893, + "99.9969947345336" : 11.898, + "99.99701118671682" : 11.924, + "99.99702763890002" : 11.963, + "99.99704409108324" : 11.967, + "99.99705505920538" : 11.981, + "99.99707151138858" : 12.047, + "99.9970879635718" : 12.064, + "99.997104415755" : 12.083, + "99.99712086793822" : 12.12, + "99.99713183606036" : 12.15, + "99.99714828824357" : 12.163, + "99.99716474042678" : 12.187, + "99.99718119260999" : 12.195, + "99.9971976447932" : 12.199, + "99.99720861291533" : 12.212, + "99.99723054915961" : 12.225, + "99.99724151728175" : 12.236, + "99.99725796946497" : 12.245, + "99.99726893758711" : 12.253, + "99.99728538977031" : 12.272, + "99.99730184195353" : 12.293, + "99.99731829413673" : 12.325, + "99.99733474631995" : 12.332, + "99.99734571444209" : 12.344, + "99.9973621666253" : 12.372, + "99.99737861880851" : 12.407, + "99.99740055505279" : 12.412, + "99.99740603911386" : 12.417, + "99.99742249129707" : 12.437, + "99.99743894348028" : 12.464, + "99.9974553956635" : 12.483, + "99.9974718478467" : 12.496, + "99.99748281596884" : 12.505, + "99.99749926815205" : 12.53, + "99.99751572033526" : 12.558, + "99.99753217251848" : 12.563, + "99.99754862470168" : 12.589, + "99.99755959282382" : 12.61, + "99.99757604500704" : 12.621, + "99.99759798125132" : 12.677, + "99.99760894937346" : 12.682, + "99.9976199174956" : 12.693, + "99.9976363696788" : 12.715, + "99.99765282186202" : 12.743, + "99.99766927404522" : 12.793, + "99.99768572622843" : 12.841, + "99.99769669435057" : 12.864, + "99.99771314653378" : 12.89, + "99.99772959871699" : 12.908, + "99.9977460509002" : 12.921, + "99.99775701902234" : 12.934, + "99.99777895526663" : 12.943, + "99.99778992338877" : 12.969, + "99.99780637557197" : 12.975, + "99.99782282775519" : 12.99, + "99.99783379587733" : 12.998, + "99.99785024806053" : 13.011, + "99.99787218430481" : 13.017, + "99.99788315242695" : 13.034, + "99.99789960461017" : 13.066, + "99.99791057273231" : 13.086, + "99.99792702491551" : 13.105, + "99.99794347709873" : 13.115, + "99.99795992928193" : 13.155, + "99.99797089740407" : 13.158, + "99.99798734958729" : 13.194, + "99.9980038017705" : 13.234, + "99.99802025395371" : 13.25, + "99.99803670613692" : 13.265, + "99.99804767425906" : 13.272, + "99.99806412644227" : 13.293, + "99.99808057862548" : 13.318, + "99.9980970308087" : 13.33, + "99.99810799893083" : 13.34, + "99.99812445111404" : 13.396, + "99.99814090329724" : 13.441, + "99.99815735548046" : 13.466, + "99.99817380766366" : 13.476, + "99.9981847757858" : 13.483, + "99.99820122796902" : 13.499, + "99.99821768015222" : 13.587, + "99.99824510045758" : 13.636, + "99.99825058451864" : 13.638, + "99.99826155264078" : 13.649, + "99.998278004824" : 13.707, + "99.9982944570072" : 13.742, + "99.99831090919042" : 13.768, + "99.99832187731256" : 13.817, + "99.99833832949577" : 13.85, + "99.99835478167898" : 13.876, + "99.99837123386219" : 13.886, + "99.9983876860454" : 13.906, + "99.99839865416754" : 13.919, + "99.99842059041183" : 13.934, + "99.99843155853397" : 13.945, + "99.99844801071717" : 13.966, + "99.99845897883931" : 13.97, + "99.99848091508359" : 13.976, + "99.99848639914467" : 13.991, + "99.99849188320573" : 13.994, + "99.99849736726681" : 14.032, + "99.99850833538895" : 14.036, + "99.99851381945001" : 14.039, + "99.99852478757215" : 14.045, + "99.99853027163323" : 14.046, + "99.99853575569429" : 14.049, + "99.99854672381643" : 14.06, + "99.99855220787751" : 14.079, + "99.99856317599965" : 14.09, + "99.99856866006071" : 14.096, + "99.99857414412179" : 14.105, + "99.99858511224393" : 14.13, + "99.998590596305" : 14.131, + "99.99860156442713" : 14.145, + "99.9986070484882" : 14.159, + "99.99861253254927" : 14.16, + "99.99862350067141" : 14.168, + "99.99862898473248" : 14.173, + "99.99863446879355" : 14.184, + "99.9986454369157" : 14.207, + "99.99865092097676" : 14.211, + "99.9986618890989" : 14.228, + "99.99866737315998" : 14.233, + "99.99867285722104" : 14.241, + "99.99868930940426" : 14.258, + "99.9987002775264" : 14.284, + "99.99870576158746" : 14.296, + "99.99871124564854" : 14.306, + "99.99872221377068" : 14.32, + "99.99872769783174" : 14.321, + "99.99874415001496" : 14.326, + "99.99874963407602" : 14.328, + "99.99876060219816" : 14.333, + "99.99876608625924" : 14.336, + "99.99877705438138" : 14.346, + "99.99878253844244" : 14.35, + "99.99878802250352" : 14.353, + "99.99879899062566" : 14.365, + "99.99880447468672" : 14.38, + "99.9988099587478" : 14.389, + "99.99882092686994" : 14.405, + "99.998826410931" : 14.409, + "99.99883737905314" : 14.415, + "99.99884286311422" : 14.422, + "99.99884834717528" : 14.439, + "99.99885931529742" : 14.467, + "99.9988647993585" : 14.485, + "99.99887576748064" : 14.539, + "99.9988812515417" : 14.543, + "99.99888673560278" : 14.55, + "99.99889770372492" : 14.595, + "99.99890318778598" : 14.597, + "99.99891415590812" : 14.606, + "99.9989196399692" : 14.635, + "99.99892512403027" : 14.637, + "99.9989360921524" : 14.649, + "99.99894157621348" : 14.65, + "99.99895254433562" : 14.688, + "99.99895802839669" : 14.69, + "99.99896351245776" : 14.708, + "99.9989744805799" : 14.724, + "99.99897996464097" : 14.728, + "99.99898544870204" : 14.736, + "99.99899641682418" : 14.76, + "99.99900190088525" : 14.803, + "99.99901286900739" : 14.833, + "99.99901835306846" : 14.834, + "99.99902383712953" : 14.84, + "99.99903480525167" : 14.867, + "99.99904028931275" : 14.874, + "99.99905125743489" : 14.895, + "99.99905674149595" : 14.907, + "99.99906222555703" : 14.915, + "99.99907319367915" : 14.946, + "99.99907867774023" : 14.966, + "99.99908964586237" : 14.972, + "99.99909512992343" : 14.974, + "99.99910061398451" : 14.978, + "99.99911158210665" : 14.984, + "99.99912255022879" : 14.99, + "99.99912803428985" : 14.992, + "99.99913351835093" : 14.993, + "99.999139002412" : 15.025, + "99.99914997053413" : 15.029, + "99.99915545459521" : 15.03, + "99.99916093865627" : 15.034, + "99.99917190677841" : 15.038, + "99.99917739083949" : 15.039, + "99.99918835896163" : 15.045, + "99.9991938430227" : 15.046, + "99.99919932708377" : 15.069, + "99.99921029520591" : 15.073, + "99.99921577926698" : 15.083, + "99.99922674738912" : 15.094, + "99.9992322314502" : 15.114, + "99.99923771551126" : 15.115, + "99.99924319957233" : 15.119, + "99.9992486836334" : 15.12, + "99.99925416769447" : 15.122, + "99.99926513581661" : 15.123, + "99.99927061987768" : 15.124, + "99.99927610393875" : 15.127, + "99.99928158799982" : 15.129, + "99.9992870720609" : 15.131, + "99.99929255612196" : 15.143, + "99.99929804018304" : 15.159, + "99.9993035242441" : 15.16, + "99.99930900830518" : 15.161, + "99.99931997642732" : 15.166, + "99.99932546048838" : 15.177, + "99.99933094454946" : 15.179, + "99.9993419126716" : 15.187, + "99.99934739673266" : 15.208, + "99.99935288079374" : 15.229, + "99.9993583648548" : 15.252, + "99.99936384891588" : 15.269, + "99.99936933297694" : 15.29, + "99.99937481703802" : 15.312, + "99.99938030109908" : 15.319, + "99.99938578516016" : 15.331, + "99.99939126922122" : 15.332, + "99.9993967532823" : 15.335, + "99.99940223734336" : 15.345, + "99.99940772140444" : 15.352, + "99.9994132054655" : 15.372, + "99.99941868952658" : 15.383, + "99.99942417358764" : 15.395, + "99.99942965764872" : 15.401, + "99.99943514170978" : 15.408, + "99.99944062577086" : 15.414, + "99.99944610983192" : 15.415, + "99.999451593893" : 15.425, + "99.99945707795406" : 15.426, + "99.99946256201514" : 15.431, + "99.9994680460762" : 15.434, + "99.99947353013728" : 15.436, + "99.99948449825942" : 15.44, + "99.99948998232048" : 15.445, + "99.99949546638156" : 15.449, + "99.99950095044262" : 15.463, + "99.9995064345037" : 15.468, + "99.99951191856476" : 15.486, + "99.99951740262584" : 15.517, + "99.9995228866869" : 15.522, + "99.99952837074798" : 15.563, + "99.99953385480904" : 15.617, + "99.99953933887011" : 15.685, + "99.99954482293118" : 15.698, + "99.99955030699225" : 15.71, + "99.99955579105333" : 15.715, + "99.99956127511439" : 15.815, + "99.99956675917547" : 15.868, + "99.99957224323653" : 15.878, + "99.9995777272976" : 15.946, + "99.99958321135867" : 15.966, + "99.99958869541975" : 15.996, + "99.99959417948081" : 16.036, + "99.99959966354189" : 16.039, + "99.99960514760295" : 16.05, + "99.99961611572509" : 16.059, + "99.99962159978617" : 16.087, + "99.99962708384723" : 16.143, + "99.99963256790831" : 16.149, + "99.99963805196937" : 16.179, + "99.99964353603045" : 16.18, + "99.99964902009151" : 16.191, + "99.99965450415259" : 16.193, + "99.99965998821365" : 16.197, + "99.99966547227473" : 16.245, + "99.99967095633579" : 16.309, + "99.99967644039687" : 16.331, + "99.99968740851901" : 16.334, + "99.99969289258007" : 16.34, + "99.99969837664115" : 16.341, + "99.99970386070221" : 16.35, + "99.99970934476329" : 16.356, + "99.99971482882435" : 16.358, + "99.99972031288543" : 16.362, + "99.99972579694649" : 16.373, + "99.99973128100757" : 16.378, + "99.99973676506863" : 16.397, + "99.99974224912971" : 16.449, + "99.99974773319077" : 16.456, + "99.99975321725185" : 16.48, + "99.99975870131291" : 16.485, + "99.99976418537399" : 16.497, + "99.99976966943505" : 16.586, + "99.99977515349613" : 16.622, + "99.9997806375572" : 16.64, + "99.99978612161827" : 16.644, + "99.99979160567933" : 16.666, + "99.99979708974041" : 16.67, + "99.99980257380147" : 16.771, + "99.99980805786255" : 16.809, + "99.99981354192361" : 16.824, + "99.99981902598469" : 16.828, + "99.99982451004576" : 16.865, + "99.99982999410683" : 16.872, + "99.9998354781679" : 16.881, + "99.99984096222897" : 16.99, + "99.99984644629004" : 17.003, + "99.99985193035111" : 17.007, + "99.99985741441218" : 17.013, + "99.99986289847325" : 17.033, + "99.99986838253432" : 17.072, + "99.9998738665954" : 17.081, + "99.99987935065646" : 17.155, + "99.99988483471753" : 17.217, + "99.9998903187786" : 17.281, + "99.99989580283967" : 17.312, + "99.99990128690074" : 17.373, + "99.99990677096181" : 17.379, + "99.99991225502288" : 17.419, + "99.99991773908395" : 17.453, + "99.99992322314502" : 17.492, + "99.9999287072061" : 17.504, + "99.99993419126716" : 17.654, + "99.99993967532824" : 17.662, + "99.9999451593893" : 17.717, + "99.99995064345038" : 17.731, + "99.99995612751144" : 17.96, + "99.99996161157252" : 17.966, + "99.99996709563358" : 18.386, + "99.99997257969466" : 18.445, + "99.99997806375572" : 18.601, + "99.9999835478168" : 18.608, + "99.99998903187786" : 19.107, + "99.99999451593894" : 19.464, + "100.0" : 19.476 + }, + "aggregatedEndToEndLatencyAvg" : 0.5068835266044416, + "aggregatedEndToEndLatency50pct" : 0.482, + "aggregatedEndToEndLatency75pct" : 0.582, + "aggregatedEndToEndLatency95pct" : 0.762, + "aggregatedEndToEndLatency99pct" : 1.006, + "aggregatedEndToEndLatency999pct" : 3.725, + "aggregatedEndToEndLatency9999pct" : 8.523, + "aggregatedEndToEndLatencyMax" : 19.476 +} \ No newline at end of file diff --git a/blog/results/rabbitmq/throughput/classic.json b/blog/results/rabbitmq/throughput/classic.json new file mode 100644 index 00000000..6aa87475 --- /dev/null +++ b/blog/results/rabbitmq/throughput/classic.json @@ -0,0 +1,3149 @@ +{ + "workload" : "16-partitions-500K-rate-4-producer", + "driver" : "RabbitMQ", + "publishRate" : [ 114790.04183303902, 110405.66831122004, 111533.63374154877, 110708.317373061, 111616.84176661096, 107771.56721915911, 110502.12245757156, 110596.63978845082, 111436.0665998785, 111837.7016994014, 111153.40046655523, 110307.34622986628, 110838.67731021653, 110923.6536502014, 111097.57733067399, 111698.41803535381, 111578.97635324931, 110763.25856634266, 111009.70160329387, 111007.83488489165, 110440.06006144367, 111490.9487325307, 111381.15454992457, 110874.84792603209, 110564.76479133192, 111341.99121204916, 111833.98798656822, 111365.58049170507, 107314.25337300905, 105917.62100788252, 106578.95904764802, 106059.6902126352, 109150.68682285989, 112814.59816941681, 113104.5054632772, 110282.61166974722, 109089.19128380023, 111463.18232511538, 112033.93138197128, 111037.15916866109, 112556.48211524125, 110400.79475898716, 107158.26163352086, 106854.60555462354, 108116.42698859765, 106584.57120766785, 107111.63749864655, 106956.3453810658, 106025.97767629003, 106482.63033599779, 106445.0672780114, 106113.88083576484, 109025.03186618796, 108815.44202716045, 110413.08221531, 111907.7858893244, 111488.31955124397, 108296.62379944613, 106764.3813623178, 107091.62916665923 ], + "consumeRate" : [ 114808.18623118766, 110805.43857533991, 111427.99601350373, 111009.61102555314, 110944.47609003182, 108270.38691443064, 110418.54312915812, 110564.5978800418, 111461.69967934325, 111661.62917032282, 111150.83684055152, 110447.64346595886, 110839.86033921866, 110924.63986089831, 111103.29679704654, 111706.70194169896, 111514.7777334126, 110831.59759009113, 110874.45567331763, 110843.62750940038, 110765.17184932192, 111408.67792736943, 111187.14474966697, 111026.4123679263, 110802.66319977435, 111029.71240920573, 112092.71568661678, 110948.60877118615, 107495.69218506056, 105970.35994139357, 106666.251503091, 106092.04981751148, 109153.8441960395, 112723.17685027172, 112769.29114754446, 110730.78552444982, 108940.77182294913, 111354.68304715697, 112111.76999278725, 111487.32821202035, 112101.75149305927, 110487.20505645544, 106976.698607093, 106785.97215795227, 107793.75968000817, 106799.33387130656, 106949.97815388844, 106905.57794311781, 106188.33340170872, 106892.63477810798, 106479.59760720572, 106135.48302127606, 108877.77031946648, 109069.97601146826, 110314.6298170386, 111642.14973760118, 111773.79196001084, 108099.49769222192, 106541.73154635324, 107346.38638283398 ], + "backlog" : [ -38533, -42591, -41516, -44574, -37752, -42814, -41964, -41644, -41900, -40115, -40088, -41513, -41524, -41534, -41592, -41676, -41025, -41718, -40346, -38679, -41977, -41143, -39176, -40716, -43129, -39963, -42586, -38359, -40200, -40734, -41620, -41949, -41978, -41052, -37653, -42199, -40694, -39594, -40383, -44946, -40336, -41211, -39370, -38674, -35402, -37581, -35941, -35426, -37073, -41232, -41581, -41800, -40305, -42895, -41897, -39204, -42098, -40101, -37841, -40424 ], + "publishLatencyAvg" : [ 1428.5086809694437, 1440.56949942234, 1422.7495733217163, 1425.4422182492594, 1426.2625266784178, 1468.3871561229744, 1439.1682594733595, 1430.2602405054943, 1426.7579197361345, 1425.7844974472437, 1426.4876534192408, 1435.8521476181238, 1432.1942772921725, 1431.8341881524952, 1424.8037670061988, 1419.9345542516376, 1422.144500867112, 1429.3298918368691, 1431.9911872853743, 1430.0081915305082, 1431.9840038474424, 1424.4319034659839, 1423.1466472832178, 1423.1716684247035, 1437.4268407707575, 1428.2637350802504, 1426.278379511752, 1424.384670580595, 1464.635136396634, 1471.683049287948, 1483.8068490616154, 1498.0179555099112, 1455.516868109606, 1415.662597620163, 1405.2557059203568, 1429.6510261117776, 1454.5317413582054, 1422.9162381654385, 1414.7344411519446, 1429.2469241028512, 1419.5970813288307, 1430.2620618536346, 1455.433599163206, 1474.8914174120964, 1440.753414349185, 1382.805822396168, 1410.103372348747, 1401.541455162689, 1406.6498175430472, 1458.2488151911605, 1496.0952913173546, 1498.3385397080367, 1453.940690964299, 1453.1424593920074, 1445.0737412864764, 1424.6383011165588, 1417.6116167521495, 1468.1036810369408, 1453.522231553389, 1471.3282555954943 ], + "publishLatency50pct" : [ 1555.647, 1551.175, 1548.951, 1548.847, 1516.687, 1592.559, 1587.103, 1576.375, 1558.071, 1537.175, 1538.279, 1598.719, 1570.383, 1589.631, 1564.391, 1565.943, 1568.407, 1585.751, 1575.567, 1596.951, 1603.551, 1600.439, 1565.335, 1576.543, 1576.863, 1549.431, 1516.879, 1510.655, 1562.071, 1631.383, 1678.135, 1722.799, 1658.303, 1601.903, 1578.423, 1578.559, 1596.175, 1540.615, 1547.039, 1556.135, 1535.503, 1538.543, 1586.535, 1635.375, 1594.559, 1464.551, 1521.175, 1499.135, 1507.375, 1635.679, 1700.255, 1676.431, 1628.199, 1633.695, 1560.215, 1542.823, 1529.943, 1605.991, 1602.231, 1652.567 ], + "publishLatency75pct" : [ 1971.263, 1990.055, 1950.055, 1952.271, 1986.423, 2031.559, 1960.487, 1954.031, 1956.015, 1965.687, 1963.903, 1951.367, 1960.023, 1949.479, 1943.663, 1923.831, 1931.535, 1938.383, 1952.639, 1930.591, 1926.735, 1934.743, 1937.439, 1933.983, 1969.535, 1975.895, 1979.255, 1975.191, 2022.423, 1970.191, 1974.191, 1989.103, 1944.959, 1906.679, 1905.919, 1955.151, 1981.207, 1950.327, 1948.319, 1977.847, 1954.511, 1970.727, 1965.815, 1977.191, 1915.943, 1884.599, 1884.135, 1878.103, 1888.223, 1940.143, 1993.439, 2017.983, 1959.687, 1954.503, 1993.943, 1969.303, 1952.911, 2002.911, 1945.903, 1964.159 ], + "publishLatency95pct" : [ 2158.863, 2190.431, 2146.863, 2143.343, 2163.727, 2217.423, 2161.231, 2134.943, 2133.311, 2134.847, 2129.519, 2141.951, 2123.919, 2118.431, 2117.183, 2118.223, 2111.887, 2125.839, 2126.975, 2110.799, 2109.727, 2104.335, 2108.543, 2123.775, 2123.439, 2120.751, 2118.319, 2135.071, 2210.319, 2236.527, 2214.719, 2204.335, 2151.471, 2096.511, 2087.895, 2133.951, 2178.255, 2119.167, 2096.823, 2118.095, 2101.983, 2138.239, 2234.783, 2203.599, 2203.967, 2244.223, 2238.895, 2237.439, 2262.447, 2240.847, 2216.447, 2219.775, 2149.791, 2158.463, 2157.135, 2121.263, 2116.783, 2184.671, 2233.023, 2224.031 ], + "publishLatency99pct" : [ 2242.751, 2273.471, 2232.751, 2211.855, 2235.359, 2291.071, 2226.591, 2200.463, 2202.447, 2191.807, 2186.063, 2200.943, 2181.663, 2196.879, 2174.191, 2183.663, 2177.103, 2187.087, 2196.415, 2164.943, 2165.567, 2159.823, 2167.295, 2188.223, 2184.863, 2165.183, 2191.663, 2189.183, 2274.703, 2312.799, 2302.799, 2281.615, 2224.079, 2171.855, 2140.175, 2219.135, 2250.575, 2195.551, 2145.967, 2163.071, 2157.247, 2221.007, 2309.775, 2272.623, 2269.423, 2320.511, 2309.551, 2302.767, 2330.047, 2311.407, 2292.527, 2287.471, 2227.887, 2230.719, 2228.751, 2170.063, 2174.623, 2246.207, 2299.695, 2286.815 ], + "publishLatency999pct" : [ 2328.255, 2338.943, 2319.279, 2259.119, 2281.743, 2357.599, 2268.575, 2254.511, 2271.183, 2238.991, 2235.087, 2257.263, 2259.215, 2254.703, 2221.455, 2251.487, 2224.175, 2244.543, 2250.927, 2210.863, 2213.055, 2216.591, 2217.263, 2251.935, 2245.759, 2201.343, 2264.207, 2248.287, 2321.247, 2362.063, 2361.407, 2354.239, 2280.975, 2261.391, 2186.975, 2268.287, 2302.655, 2244.895, 2188.639, 2208.735, 2196.463, 2276.063, 2352.127, 2333.103, 2331.135, 2362.271, 2364.223, 2355.375, 2374.783, 2346.943, 2340.047, 2335.823, 2287.551, 2294.623, 2282.383, 2211.551, 2226.223, 2292.431, 2347.919, 2327.071 ], + "publishLatency9999pct" : [ 2367.487, 2391.247, 2386.415, 2292.575, 2302.559, 2397.615, 2286.287, 2294.207, 2291.919, 2284.543, 2261.071, 2317.247, 2292.607, 2285.599, 2261.919, 2280.815, 2279.407, 2298.367, 2285.471, 2229.727, 2241.263, 2244.895, 2244.367, 2271.967, 2288.223, 2253.967, 2317.615, 2285.871, 2358.399, 2380.383, 2388.495, 2384.591, 2311.839, 2308.511, 2207.135, 2289.311, 2323.487, 2267.039, 2215.279, 2253.935, 2216.623, 2297.567, 2384.239, 2373.887, 2380.575, 2386.639, 2383.775, 2385.567, 2399.407, 2370.207, 2395.887, 2362.335, 2371.007, 2342.975, 2319.903, 2243.471, 2270.863, 2333.263, 2370.543, 2345.311 ], + "publishLatencyMax" : [ 2382.591, 2413.599, 2410.111, 2301.375, 2311.071, 2413.839, 2291.903, 2309.775, 2302.015, 2294.959, 2289.455, 2335.887, 2313.327, 2301.663, 2274.415, 2307.023, 2295.487, 2308.047, 2298.591, 2259.071, 2251.647, 2273.215, 2264.495, 2278.383, 2311.215, 2274.831, 2334.607, 2298.927, 2367.999, 2435.711, 2400.415, 2421.183, 2378.095, 2319.087, 2223.279, 2300.975, 2333.807, 2287.631, 2230.191, 2263.183, 2230.095, 2310.287, 2397.775, 2383.167, 2390.511, 2398.175, 2409.871, 2400.783, 2414.111, 2386.895, 2404.543, 2374.255, 2375.167, 2371.471, 2354.303, 2254.335, 2279.679, 2342.079, 2389.423, 2354.639 ], + "aggregatedPublishLatencyAvg" : 1437.1671318883568, + "aggregatedPublishLatency50pct" : 1580.087, + "aggregatedPublishLatency75pct" : 1957.023, + "aggregatedPublishLatency95pct" : 2158.079, + "aggregatedPublishLatency99pct" : 2255.231, + "aggregatedPublishLatency999pct" : 2330.271, + "aggregatedPublishLatency9999pct" : 2371.455, + "aggregatedPublishLatencyMax" : 2435.711, + "aggregatedPublishLatencyQuantiles" : { + "1.4968835259211205E-6" : 131.072, + "0.5000069979304836" : 223.435, + "1.000022977162123" : 249.862, + "1.500000037422088" : 268.645, + "2.0000504449748235" : 284.821, + "2.5000005613313223" : 299.587, + "3.0000330062817464" : 313.189, + "3.500042997979282" : 326.325, + "4.000005089403988" : 339.647, + "4.500024062402679" : 352.791, + "5.000028066566111" : 365.765, + "5.5000275800789655" : 379.039, + "6.000019609174189" : 392.839, + "6.500005650735311" : 407.019, + "7.000008158015216" : 421.393, + "7.500019646596278" : 435.877, + "8.000025147643235" : 450.837, + "8.500021667389039" : 466.045, + "9.000040640387729" : 481.547, + "9.5000296757159" : 497.011, + "10.000062120666326" : 512.809, + "10.500045168460394" : 528.735, + "11.000050669507353" : 544.947, + "11.500138499148235" : 561.519, + "12.000034727697802" : 578.047, + "12.500052203812967" : 594.515, + "13.000002320169465" : 611.679, + "13.500055721489252" : 629.359, + "14.00002829109864" : 645.835, + "14.500113126972472" : 662.367, + "15.000108149834748" : 678.567, + "15.500095688279394" : 693.923, + "16.000045804635892" : 709.031, + "16.500145609344983" : 724.399, + "17.000083750633276" : 739.247, + "17.500015904387464" : 754.015, + "18.000123193514185" : 768.171, + "18.50012869456114" : 781.611, + "19.000006960508397" : 794.811, + "19.500019945972983" : 807.355, + "20.000130228866755" : 818.991, + "20.500134233030188" : 830.251, + "21.00002297716212" : 841.155, + "21.500004528072665" : 851.799, + "22.000186661375682" : 861.823, + "22.500213118792004" : 871.555, + "23.000107850458043" : 881.163, + "23.500129817223787" : 890.623, + "24.000093405532017" : 899.699, + "24.500161775687065" : 908.383, + "25.00020469882217" : 916.927, + "25.500115896206996" : 925.199, + "26.000076490748175" : 933.455, + "26.5000281039882" : 941.687, + "27.000036598802208" : 949.815, + "27.500244179125165" : 957.879, + "28.000183817296982" : 965.995, + "28.500041126874876" : 973.999, + "29.00010650326287" : 982.019, + "29.50001171311359" : 990.131, + "30.000011226626444" : 998.567, + "30.500117018869638" : 1007.479, + "31.0001285074507" : 1017.119, + "31.50005916432136" : 1027.755, + "32.00001526821197" : 1039.743, + "32.50018392956325" : 1054.599, + "33.00013254903622" : 1075.327, + "33.50001530563405" : 1115.407, + "34.000065713186785" : 1264.351, + "34.50013108957478" : 1311.239, + "35.00006024956192" : 1334.703, + "35.500044794239514" : 1351.551, + "36.00028979665062" : 1365.095, + "36.50028781327995" : 1376.751, + "37.0003741460373" : 1387.079, + "37.500367672016054" : 1396.679, + "38.0001935470399" : 1405.559, + "38.50021401692212" : 1413.807, + "39.00005186701417" : 1421.751, + "39.50002593350709" : 1429.479, + "40.00024548889825" : 1436.999, + "40.50040217518133" : 1444.183, + "41.00020709383581" : 1451.311, + "41.50025899827207" : 1458.407, + "42.0004995100326" : 1465.423, + "42.50039124793159" : 1472.271, + "43.00003899381585" : 1479.103, + "43.50055044149457" : 1486.023, + "44.0004736139476" : 1492.935, + "44.50041325211942" : 1499.935, + "45.00043072823458" : 1506.943, + "45.50010990867289" : 1513.999, + "46.00010343465164" : 1521.151, + "46.50033047446043" : 1528.407, + "47.00037639136259" : 1535.695, + "47.500239688474586" : 1542.903, + "48.00039787164119" : 1550.223, + "48.500282125122546" : 1557.695, + "49.000218769527315" : 1565.159, + "49.50016738900029" : 1572.599, + "50.00000823285939" : 1580.087, + "50.25037098387086" : 1583.807, + "50.50022928513408" : 1587.591, + "50.75018488382649" : 1591.319, + "51.00019437032584" : 1595.015, + "51.25008111237606" : 1598.735, + "51.5002058589069" : 1602.431, + "51.75030964906838" : 1606.183, + "52.00023381320675" : 1610.015, + "52.250451366516195" : 1613.831, + "52.50026476127365" : 1617.599, + "52.75000630562185" : 1621.407, + "53.00047832913071" : 1625.263, + "53.25049530004768" : 1629.183, + "53.50029222908635" : 1633.103, + "53.75013107086374" : 1637.031, + "54.00025731427811" : 1641.007, + "54.250455408101715" : 1644.991, + "54.50041400056118" : 1648.999, + "54.75030972391256" : 1653.023, + "55.00042399225872" : 1657.095, + "55.25040503797107" : 1661.191, + "55.50012861971697" : 1665.271, + "55.750470414359064" : 1669.351, + "56.00017154285207" : 1673.423, + "56.25003433476588" : 1677.503, + "56.50027583821174" : 1681.583, + "56.750315262381605" : 1685.679, + "57.00030079874453" : 1689.799, + "57.25022645976643" : 1693.919, + "57.50029731849033" : 1698.047, + "57.750240942114544" : 1702.175, + "58.000043858687306" : 1706.191, + "58.250303324735484" : 1710.343, + "58.50005085661779" : 1714.511, + "58.75006034311714" : 1718.703, + "59.000179102113876" : 1722.863, + "59.25038318347159" : 1727.071, + "59.500392669970935" : 1731.199, + "59.750137208086194" : 1735.375, + "60.00039966790142" : 1739.519, + "60.250371732312615" : 1743.687, + "60.50047402559057" : 1747.807, + "60.75012276316017" : 1751.863, + "61.00044809208349" : 1755.999, + "61.25040219389237" : 1760.127, + "61.50033384244837" : 1764.223, + "61.75045559521216" : 1768.343, + "62.000254021134346" : 1772.439, + "62.250208122943235" : 1776.567, + "62.50029844115298" : 1780.655, + "62.750144767348" : 1784.647, + "63.000230594907165" : 1788.671, + "63.25015625592906" : 1792.695, + "63.50034387156799" : 1796.743, + "63.7500105717399" : 1800.799, + "64.00049606720049" : 1804.895, + "64.25043969082469" : 1808.999, + "64.5002096759599" : 1813.007, + "64.75030448482022" : 1816.967, + "65.00049210045914" : 1820.839, + "65.25000911227846" : 1824.719, + "65.50024762195727" : 1828.663, + "65.75040979057627" : 1832.503, + "66.00019624143025" : 1836.335, + "66.250084480364" : 1840.167, + "66.50018827052547" : 1844.055, + "66.75044623969012" : 1847.895, + "67.00006953023978" : 1851.783, + "67.25049664724285" : 1855.551, + "67.50036542669076" : 1859.263, + "67.75006056764967" : 1862.975, + "68.00029009602733" : 1866.655, + "68.25016037235876" : 1870.359, + "68.50001567985494" : 1874.031, + "68.75036944956524" : 1877.615, + "69.00046874907615" : 1881.167, + "69.250334534757" : 1884.647, + "69.50022127680722" : 1888.087, + "69.7505855247022" : 1891.519, + "70.00043933531485" : 1894.847, + "70.25039942465784" : 1898.175, + "70.50043136441008" : 1901.519, + "70.75047078857995" : 1904.871, + "71.00055212548854" : 1908.215, + "71.25053466808441" : 1911.495, + "71.50018639942107" : 1914.743, + "71.75008811030655" : 1917.983, + "72.00056462446598" : 1921.159, + "72.2504289132633" : 1924.263, + "72.50062551020339" : 1927.311, + "72.75035058883282" : 1930.351, + "73.00061454553156" : 1933.439, + "73.25022137036244" : 1936.511, + "73.50056765565512" : 1939.559, + "73.75001880459929" : 1942.575, + "74.00041448704833" : 1945.559, + "74.25065000296009" : 1948.479, + "74.50001433265976" : 1951.343, + "74.75030822702904" : 1954.207, + "75.00049434578443" : 1957.023, + "75.1257580498841" : 1958.423, + "75.25021942441386" : 1959.791, + "75.37510292009793" : 1961.183, + "75.50068546038861" : 1962.575, + "75.62548063994466" : 1963.967, + "75.75058417750704" : 1965.343, + "75.8751667996024" : 1966.711, + "76.0007852650977" : 1968.095, + "76.12567774208293" : 1969.463, + "76.25046094657077" : 1970.815, + "76.37549712437448" : 1972.143, + "76.50046145176896" : 1973.487, + "76.62528656899552" : 1974.831, + "76.75074037730296" : 1976.167, + "76.87533647135007" : 1977.479, + "77.00067501962602" : 1978.807, + "77.12527710120722" : 1980.135, + "77.25005581504448" : 1981.463, + "77.37577307485249" : 1982.799, + "77.50076733991747" : 1984.087, + "77.6254921659478" : 1985.399, + "77.75054031881973" : 1986.703, + "77.87573816004424" : 1987.991, + "78.00050489881329" : 1989.271, + "78.12534199110806" : 1990.543, + "78.25026739953086" : 1991.799, + "78.37550266284353" : 1993.071, + "78.50065110691169" : 1994.335, + "78.62573668187176" : 1995.591, + "78.75062317132289" : 1996.847, + "78.87528512824512" : 1998.079, + "79.00037070320519" : 1999.343, + "79.12530958357972" : 2000.583, + "79.25043258062794" : 2001.847, + "79.37514543159007" : 2003.063, + "79.50034926034868" : 2004.303, + "79.62576414968446" : 2005.527, + "79.75008332027926" : 2006.759, + "79.8751030323642" : 2007.967, + "80.00054785937049" : 2009.191, + "80.1251559284858" : 2010.415, + "80.25016965303662" : 2011.639, + "80.37507410509005" : 2012.839, + "80.5005279133975" : 2014.055, + "80.62580508944889" : 2015.279, + "80.75036974894195" : 2016.487, + "80.87572326605316" : 2017.711, + "81.00026098164274" : 2018.895, + "81.12584202504989" : 2020.111, + "81.25034231855133" : 2021.287, + "81.37576319542121" : 2022.471, + "81.50034132686599" : 2023.655, + "81.6257637006194" : 2024.839, + "81.75074149996561" : 2025.991, + "81.87523131528236" : 2027.159, + "82.00059680746179" : 2028.335, + "82.12520337969356" : 2029.511, + "82.25053594043541" : 2030.695, + "82.37597178614055" : 2031.871, + "82.50071158100613" : 2033.031, + "82.62527025296508" : 2034.199, + "82.7506013168234" : 2035.351, + "82.87574976089157" : 2036.519, + "83.00020664477076" : 2037.655, + "83.12554668993023" : 2038.823, + "83.2504062354779" : 2039.975, + "83.37523135270445" : 2041.111, + "83.50074653323647" : 2042.247, + "83.62542345899396" : 2043.359, + "83.7503862895049" : 2044.495, + "83.87542396419215" : 2045.615, + "84.00035985079963" : 2046.727, + "84.12581365910708" : 2047.831, + "84.25076152078277" : 2048.935, + "84.37584859262637" : 2050.039, + "84.50019171335758" : 2051.159, + "84.62511562489685" : 2052.271, + "84.75025059701328" : 2053.367, + "84.87500985136471" : 2054.463, + "85.00071064545394" : 2055.591, + "85.12583513938567" : 2056.679, + "85.2503923144611" : 2057.767, + "85.375756309757" : 2058.887, + "85.5004107822616" : 2060.007, + "85.62539606602543" : 2061.135, + "85.75006700424883" : 2062.247, + "85.87511515712076" : 2063.367, + "86.00003457800945" : 2064.487, + "86.1255692180273" : 2065.607, + "86.25048564514894" : 2066.719, + "86.37563259233357" : 2067.823, + "86.50056548517401" : 2068.927, + "86.62517804493989" : 2070.039, + "86.75055850595457" : 2071.175, + "86.87580574433544" : 2072.303, + "87.00039136019785" : 2073.439, + "87.12553830738248" : 2074.567, + "87.25052658491337" : 2075.671, + "87.37589656774337" : 2076.807, + "87.50040733942949" : 2077.919, + "87.56262380630088" : 2078.487, + "87.62553931777887" : 2079.063, + "87.68838447573114" : 2079.631, + "87.75037042253953" : 2080.191, + "87.81250605770052" : 2080.743, + "87.87510123610396" : 2081.311, + "87.9379044813175" : 2081.879, + "88.00016884846173" : 2082.439, + "88.0630080188799" : 2083.015, + "88.12513317585619" : 2083.583, + "88.18750232484723" : 2084.159, + "88.25020827263158" : 2084.743, + "88.31320760958702" : 2085.327, + "88.37540461697257" : 2085.903, + "88.43822283102138" : 2086.479, + "88.50082699072598" : 2087.055, + "88.56308836410315" : 2087.623, + "88.62537069384967" : 2088.183, + "88.68840296224269" : 2088.743, + "88.75082749592417" : 2089.311, + "88.81292720588054" : 2089.871, + "88.87533527384323" : 2090.431, + "88.93809361255101" : 2091.007, + "89.00081452917063" : 2091.599, + "89.06315673425819" : 2092.175, + "89.1255303738998" : 2092.759, + "89.18773785947003" : 2093.343, + "89.2505710423541" : 2093.943, + "89.31263183333878" : 2094.519, + "89.37518360211998" : 2095.111, + "89.43789853120549" : 2095.695, + "89.5002317549919" : 2096.295, + "89.5626338354205" : 2096.887, + "89.62502543766442" : 2097.487, + "89.68791250835541" : 2098.095, + "89.75065887199497" : 2098.703, + "89.81383933185705" : 2099.327, + "89.8766021612154" : 2099.935, + "89.93791600732065" : 2100.527, + "90.00169971124369" : 2101.135, + "90.06265280841919" : 2101.727, + "90.12572249890036" : 2102.319, + "90.1882084048064" : 2102.927, + "90.25049672208704" : 2103.535, + "90.31379543574766" : 2104.159, + "90.37646845209446" : 2104.767, + "90.437857142376" : 2105.375, + "90.5000631310627" : 2105.999, + "90.56307294620282" : 2106.623, + "90.62560375861466" : 2107.247, + "90.68844292903283" : 2107.871, + "90.7501220147184" : 2108.479, + "90.81347311930244" : 2109.119, + "90.87569707059146" : 2109.743, + "90.93778630236314" : 2110.367, + "91.00096227157464" : 2110.991, + "91.06326705457406" : 2111.615, + "91.12601940574771" : 2112.255, + "91.18852626802314" : 2112.879, + "91.25156602083378" : 2113.503, + "91.31320020001358" : 2114.127, + "91.37505891172226" : 2114.767, + "91.43780677224535" : 2115.423, + "91.50106507005079" : 2116.079, + "91.56303155737334" : 2116.719, + "91.6264245746961" : 2117.375, + "91.68773842080135" : 2118.015, + "91.75097426535389" : 2118.671, + "91.81394965217292" : 2119.327, + "91.87521559800534" : 2119.983, + "91.93886308552752" : 2120.655, + "92.00051373042609" : 2121.295, + "92.06290383578649" : 2121.967, + "92.12595107301476" : 2122.655, + "92.18752537685353" : 2123.327, + "92.25029419374597" : 2124.015, + "92.31339232501414" : 2124.687, + "92.3761042603326" : 2125.375, + "92.43799590347885" : 2126.063, + "92.50096979341436" : 2126.767, + "92.56297819347564" : 2127.455, + "92.6256901287941" : 2128.175, + "92.6888421478692" : 2128.895, + "92.75128314726946" : 2129.599, + "92.81323765952381" : 2130.303, + "92.87519965619579" : 2131.007, + "92.93864057379137" : 2131.743, + "93.00050527303418" : 2132.463, + "93.06354053519424" : 2133.183, + "93.12534236532895" : 2133.887, + "93.18754386336506" : 2134.607, + "93.250456381076" : 2135.343, + "93.3136084001511" : 2136.063, + "93.3758952205482" : 2136.799, + "93.43803684324328" : 2137.551, + "93.50110054619034" : 2138.319, + "93.56343227309323" : 2139.071, + "93.62613073645996" : 2139.855, + "93.68829630929146" : 2140.607, + "93.75088849392786" : 2141.375, + "93.7815551467234" : 2141.759, + "93.81264392067325" : 2142.143, + "93.84422666618667" : 2142.543, + "93.87546662537264" : 2142.927, + "93.90687573239704" : 2143.327, + "93.93784774943188" : 2143.727, + "93.9695816801814" : 2144.127, + "94.00010313527494" : 2144.511, + "94.03174575612938" : 2144.911, + "94.06353806533642" : 2145.311, + "94.09413436460625" : 2145.695, + "94.12609881541877" : 2146.111, + "94.15693760981979" : 2146.495, + "94.18773149771505" : 2146.895, + "94.21969445164405" : 2147.311, + "94.25066497179535" : 2147.727, + "94.28160555427614" : 2148.127, + "94.31315387146844" : 2148.543, + "94.34454651277407" : 2148.959, + "94.3758538317187" : 2149.375, + "94.40639774006513" : 2149.791, + "94.43810023626061" : 2150.223, + "94.46950934328501" : 2150.623, + "94.50084959366723" : 2151.039, + "94.5318530452561" : 2151.455, + "94.56251969805164" : 2151.871, + "94.59460389954624" : 2152.319, + "94.62529749624525" : 2152.751, + "94.6569116763127" : 2153.183, + "94.6879510531062" : 2153.615, + "94.7197867719355" : 2154.063, + "94.75073783260098" : 2154.495, + "94.7812592876945" : 2154.927, + "94.81265492276717" : 2155.375, + "94.84477954011696" : 2155.839, + "94.875359373668" : 2156.271, + "94.9068313498005" : 2156.719, + "94.93809675600642" : 2157.167, + "94.969227442695" : 2157.615, + "95.00051230838675" : 2158.079, + "95.0313585872054" : 2158.543, + "95.06255663365265" : 2159.007, + "95.0938699401314" : 2159.471, + "95.12603946398697" : 2159.951, + "95.15679892356111" : 2160.399, + "95.1882125212361" : 2160.879, + "95.21941206456687" : 2161.343, + "95.25013410205288" : 2161.823, + "95.28154320907728" : 2162.303, + "95.31331007126438" : 2162.799, + "95.34444075795297" : 2163.279, + "95.37504005098984" : 2163.759, + "95.40691917944139" : 2164.271, + "95.43821751708487" : 2164.767, + "95.46926886894657" : 2165.263, + "95.50015406673691" : 2165.759, + "95.53153024232374" : 2166.271, + "95.56304862184554" : 2166.751, + "95.59458047331906" : 2167.247, + "95.6251603068701" : 2167.743, + "95.65656791701097" : 2168.255, + "95.68757436236692" : 2168.751, + "95.71897897874074" : 2169.247, + "95.75071141260673" : 2169.775, + "95.78131070564362" : 2170.319, + "95.81312995875412" : 2170.863, + "95.84399270329156" : 2171.391, + "95.87566376493301" : 2171.935, + "95.90646364036236" : 2172.463, + "95.93803590769109" : 2173.007, + "95.96876093894414" : 2173.551, + "96.00010717686045" : 2174.111, + "96.03205665883772" : 2174.687, + "96.06330110867427" : 2175.247, + "96.09432701351604" : 2175.807, + "96.12520622377227" : 2176.367, + "96.1566347902825" : 2176.943, + "96.18828489555457" : 2177.535, + "96.21896352341832" : 2178.095, + "96.25037861797684" : 2178.655, + "96.28144194490675" : 2179.231, + "96.31292439922393" : 2179.839, + "96.3440550859125" : 2180.447, + "96.37572165690337" : 2181.039, + "96.40663828924774" : 2181.631, + "96.43750851820282" : 2182.207, + "96.46914964217373" : 2182.799, + "96.50024440365769" : 2183.407, + "96.53196186868844" : 2184.015, + "96.56251924898659" : 2184.623, + "96.59416037295752" : 2185.247, + "96.62571018703335" : 2185.871, + "96.65678997968205" : 2186.495, + "96.68766619617122" : 2187.119, + "96.71934474223029" : 2187.759, + "96.75032873433334" : 2188.399, + "96.78177975409646" : 2189.023, + "96.8127173428102" : 2189.631, + "96.84416237503923" : 2190.271, + "96.87529006796076" : 2190.895, + "96.89064360228613" : 2191.215, + "96.90696861401983" : 2191.567, + "96.92198984020244" : 2191.887, + "96.93818611995292" : 2192.223, + "96.95328518407888" : 2192.543, + "96.96938566328369" : 2192.895, + "96.98484248257235" : 2193.231, + "97.00018104806246" : 2193.567, + "97.01618872048866" : 2193.919, + "97.03160063327154" : 2194.255, + "97.04752298333676" : 2194.607, + "97.06325073854362" : 2194.943, + "97.07851445985744" : 2195.279, + "97.09398924174842" : 2195.631, + "97.10974394085873" : 2195.967, + "97.12540433630691" : 2196.303, + "97.14101533459875" : 2196.655, + "97.15640928477931" : 2197.007, + "97.1721445244038" : 2197.359, + "97.18815369371353" : 2197.711, + "97.20324527342187" : 2198.047, + "97.21891015952063" : 2198.399, + "97.23447325753963" : 2198.751, + "97.25011718726904" : 2199.103, + "97.26629999506777" : 2199.487, + "97.28126583655992" : 2199.855, + "97.29706095152545" : 2200.239, + "97.31306113953401" : 2200.607, + "97.32859280299898" : 2200.975, + "97.34387748068215" : 2201.327, + "97.35953039171271" : 2201.695, + "97.37507552712941" : 2202.063, + "97.39095446757237" : 2202.447, + "97.40668521654628" : 2202.831, + "97.42199384436587" : 2203.215, + "97.43764226474586" : 2203.583, + "97.45364245275442" : 2203.983, + "97.46932380457197" : 2204.367, + "97.48502012522478" : 2204.751, + "97.50029133095623" : 2205.119, + "97.51565534346629" : 2205.487, + "97.5313980675084" : 2205.887, + "97.54754045945194" : 2206.287, + "97.56250480406057" : 2206.655, + "97.57835530371655" : 2207.055, + "97.59424023169362" : 2207.455, + "97.6094261150641" : 2207.839, + "97.62503861023944" : 2208.239, + "97.64063164592896" : 2208.639, + "97.65642526401096" : 2209.039, + "97.67201081528285" : 2209.455, + "97.68799603445616" : 2209.871, + "97.70348129453181" : 2210.287, + "97.71923599364214" : 2210.703, + "97.73450420560653" : 2211.119, + "97.75011520389836" : 2211.535, + "97.76589834379567" : 2211.967, + "97.78140605712422" : 2212.383, + "97.79744666098799" : 2212.831, + "97.81267894774776" : 2213.231, + "97.82850699415086" : 2213.663, + "97.84402967631465" : 2214.095, + "97.85964366837354" : 2214.543, + "97.87519928197491" : 2214.975, + "97.89105277539794" : 2215.423, + "97.90681046827531" : 2215.871, + "97.9219574326741" : 2216.303, + "97.93782290116535" : 2216.767, + "97.95357760027566" : 2217.215, + "97.96904040709843" : 2217.647, + "97.98476816230529" : 2218.095, + "98.0001187028636" : 2218.543, + "98.01597219628664" : 2219.007, + "98.0317119265617" : 2219.455, + "98.04719868352088" : 2219.903, + "98.06257317421561" : 2220.367, + "98.0783263764424" : 2220.847, + "98.0939239027825" : 2221.327, + "98.10958878888127" : 2221.807, + "98.12505159570404" : 2222.303, + "98.1410517837126" : 2222.783, + "98.15665829135386" : 2223.247, + "98.17203278204859" : 2223.727, + "98.18790423807394" : 2224.191, + "98.2035466709198" : 2224.703, + "98.21894511175097" : 2225.215, + "98.23469382332718" : 2225.727, + "98.25013567378058" : 2226.239, + "98.26563141204092" : 2226.751, + "98.28159417796134" : 2227.279, + "98.29711386635809" : 2227.823, + "98.3125392510927" : 2228.351, + "98.32817569640447" : 2228.927, + "98.34389447031018" : 2229.503, + "98.35959228784651" : 2230.047, + "98.37529160226637" : 2230.591, + "98.39100438863797" : 2231.151, + "98.40637738244918" : 2231.695, + "98.42227428549445" : 2232.271, + "98.4377191297149" : 2232.815, + "98.4453876640182" : 2233.087, + "98.4534887976605" : 2233.375, + "98.46127408887881" : 2233.647, + "98.46907285204885" : 2233.919, + "98.47659768553366" : 2234.175, + "98.48474372568172" : 2234.463, + "98.49256643898819" : 2234.751, + "98.50030981746778" : 2235.023, + "98.5081879154647" : 2235.311, + "98.51585495288447" : 2235.599, + "98.52366569112273" : 2235.903, + "98.53154229223613" : 2236.191, + "98.53921980784057" : 2236.463, + "98.54691827981438" : 2236.751, + "98.55478739651015" : 2237.055, + "98.56287356131718" : 2237.343, + "98.57048671093001" : 2237.615, + "98.57820314550614" : 2237.903, + "98.58594053645162" : 2238.207, + "98.59393389448005" : 2238.511, + "98.60192575562493" : 2238.799, + "98.60948950808141" : 2239.071, + "98.61756968535434" : 2239.375, + "98.62510799079087" : 2239.663, + "98.63286933187277" : 2239.967, + "98.64092555900928" : 2240.287, + "98.64856116187501" : 2240.575, + "98.65643626610488" : 2240.879, + "98.6644131584145" : 2241.183, + "98.67219545586578" : 2241.487, + "98.68006606944506" : 2241.775, + "98.68757443721108" : 2242.047, + "98.69558426095828" : 2242.367, + "98.70316447913356" : 2242.671, + "98.71107101791748" : 2242.975, + "98.71891917824388" : 2243.279, + "98.72680775442548" : 2243.599, + "98.73441042585364" : 2243.903, + "98.74249808754419" : 2244.223, + "98.75002292102899" : 2244.543, + "98.75811207960307" : 2244.863, + "98.765961736813" : 2245.199, + "98.7735494394059" : 2245.487, + "98.78140658103345" : 2245.807, + "98.78941640478065" : 2246.143, + "98.7970999079192" : 2246.447, + "98.8048717271858" : 2246.751, + "98.81263456515121" : 2247.055, + "98.82046476287532" : 2247.391, + "98.82852548066239" : 2247.743, + "98.83626287160789" : 2248.063, + "98.84397780930048" : 2248.383, + "98.85180501325752" : 2248.719, + "98.85958581382526" : 2249.055, + "98.86727979514849" : 2249.407, + "98.87501718609398" : 2249.727, + "98.88313927610562" : 2250.047, + "98.89097246759678" : 2250.367, + "98.89854370447088" : 2250.703, + "98.90628558606694" : 2251.039, + "98.91424002512369" : 2251.391, + "98.92195047216572" : 2251.727, + "98.92977019170513" : 2252.079, + "98.93770816504309" : 2252.431, + "98.94565062903162" : 2252.783, + "98.9531859407011" : 2253.119, + "98.9611718143119" : 2253.471, + "98.96879544210941" : 2253.807, + "98.9766825214075" : 2254.159, + "98.98448577522812" : 2254.511, + "98.99252104599526" : 2254.879, + "99.00010425793758" : 2255.231, + "99.00789403980647" : 2255.599, + "99.01582452872681" : 2255.967, + "99.02351252251593" : 2256.335, + "99.03138463297876" : 2256.703, + "99.03921483070285" : 2257.071, + "99.04713484143849" : 2257.439, + "99.05469709701146" : 2257.807, + "99.06280122442078" : 2258.191, + "99.07053113094864" : 2258.575, + "99.0783942601103" : 2258.943, + "99.08612865728874" : 2259.311, + "99.09384509186486" : 2259.695, + "99.10164834568549" : 2260.079, + "99.10943962443791" : 2260.463, + "99.11750333599205" : 2260.863, + "99.12520779549996" : 2261.231, + "99.1328553734339" : 2261.615, + "99.14088016601636" : 2261.999, + "99.14862204761242" : 2262.399, + "99.1564163201319" : 2262.799, + "99.16406689183287" : 2263.183, + "99.17206474051187" : 2263.583, + "99.17984554107962" : 2263.983, + "99.18753203798522" : 2264.367, + "99.1954999489937" : 2264.751, + "99.20340349401056" : 2265.151, + "99.2111558537913" : 2265.551, + "99.219050417507" : 2265.983, + "99.22273574474782" : 2266.191, + "99.22685367132763" : 2266.415, + "99.23058839572481" : 2266.623, + "99.23453418069914" : 2266.847, + "99.23842907163359" : 2267.055, + "99.24230599996572" : 2267.279, + "99.24619490336606" : 2267.487, + "99.25011673820397" : 2267.695, + "99.25400115095374" : 2267.903, + "99.25788706058704" : 2268.111, + "99.26187625518361" : 2268.319, + "99.26566486738773" : 2268.527, + "99.26974237811233" : 2268.751, + "99.27358338123985" : 2268.959, + "99.2775127004954" : 2269.167, + "99.28150788262607" : 2269.407, + "99.28524709767382" : 2269.615, + "99.28918539823052" : 2269.823, + "99.29325243077045" : 2270.063, + "99.29704253985808" : 2270.271, + "99.30084612089745" : 2270.495, + "99.30494458799141" : 2270.735, + "99.30871823136026" : 2270.943, + "99.31274185427795" : 2271.183, + "99.3166606953488" : 2271.407, + "99.32050618912689" : 2271.647, + "99.32438162057551" : 2271.887, + "99.32822262370301" : 2272.111, + "99.33219535258081" : 2272.351, + "99.33596151153203" : 2272.575, + "99.33998663133323" : 2272.815, + "99.34376626223619" : 2273.039, + "99.34792909532177" : 2273.295, + "99.35171171999177" : 2273.519, + "99.35559014520743" : 2273.727, + "99.35938923559623" : 2273.951, + "99.36331705796823" : 2274.191, + "99.36730325879776" : 2274.431, + "99.37115923076054" : 2274.671, + "99.37524422590278" : 2274.927, + "99.37899541601874" : 2275.167, + "99.38299808256704" : 2275.407, + "99.38675076956653" : 2275.631, + "99.3908372615923" : 2275.871, + "99.39465730835045" : 2276.111, + "99.39845340497219" : 2276.351, + "99.40252792192975" : 2276.607, + "99.40635844687257" : 2276.863, + "99.41023387832118" : 2277.103, + "99.41424402928712" : 2277.359, + "99.41815089528978" : 2277.615, + "99.42200087971845" : 2277.871, + "99.42585385791416" : 2278.127, + "99.4299328655223" : 2278.399, + "99.43371848395935" : 2278.655, + "99.43765828139958" : 2278.927, + "99.44154419103288" : 2279.199, + "99.44546303210373" : 2279.471, + "99.4494282765639" : 2279.759, + "99.45313006952351" : 2280.031, + "99.4571087859354" : 2280.319, + "99.46101116128747" : 2280.591, + "99.46496592756296" : 2280.879, + "99.4688892592844" : 2281.151, + "99.47281857853994" : 2281.423, + "99.47666107855099" : 2281.679, + "99.48065476379814" : 2281.951, + "99.48452570459618" : 2282.223, + "99.48837868279189" : 2282.495, + "99.49226908307577" : 2282.783, + "99.49625977455587" : 2283.087, + "99.5001307153539" : 2283.391, + "99.50403907824008" : 2283.695, + "99.50792947852395" : 2284.015, + "99.51172407826216" : 2284.319, + "99.51566237881886" : 2284.607, + "99.51971294564" : 2284.927, + "99.523524011097" : 2285.231, + "99.52744734281843" : 2285.503, + "99.53135271193756" : 2285.775, + "99.5352700561249" : 2286.079, + "99.53912004055357" : 2286.367, + "99.54317210425823" : 2286.687, + "99.54700562296811" : 2286.991, + "99.55097086742829" : 2287.295, + "99.55479540483701" : 2287.599, + "99.55873071162667" : 2287.919, + "99.56262560256111" : 2288.223, + "99.5665055246603" : 2288.543, + "99.57042286884763" : 2288.879, + "99.57443152293004" : 2289.215, + "99.5782051662989" : 2289.519, + "99.58218687647785" : 2289.839, + "99.58607877364524" : 2290.159, + "99.58998414276437" : 2290.495, + "99.59387304616472" : 2290.847, + "99.59776344644858" : 2291.215, + "99.60171521895701" : 2291.567, + "99.60556670026921" : 2291.887, + "99.60944063483429" : 2292.207, + "99.61144645875902" : 2292.367, + "99.61331456939938" : 2292.527, + "99.61540272191803" : 2292.703, + "99.61725586372313" : 2292.847, + "99.61930509727011" : 2293.007, + "99.62117919544457" : 2293.167, + "99.62307874063896" : 2293.327, + "99.62507258949549" : 2293.503, + "99.62707841342022" : 2293.679, + "99.62894502717704" : 2293.855, + "99.6309867763064" : 2294.047, + "99.632898296569" : 2294.223, + "99.63488765477496" : 2294.399, + "99.63679468438697" : 2294.575, + "99.6387481173883" : 2294.735, + "99.64064915946622" : 2294.911, + "99.64274180263546" : 2295.103, + "99.64461440392638" : 2295.295, + "99.64656783692772" : 2295.471, + "99.648518276162" : 2295.647, + "99.65057798789366" : 2295.839, + "99.65236676370714" : 2295.999, + "99.65436510321423" : 2296.175, + "99.65636943025544" : 2296.367, + "99.6582150876429" : 2296.543, + "99.6601670237607" : 2296.735, + "99.66216087261724" : 2296.927, + "99.66412777757029" : 2297.103, + "99.6660916887563" : 2297.295, + "99.66804961240821" : 2297.503, + "99.67002699554595" : 2297.711, + "99.67201785063543" : 2297.919, + "99.67383357035237" : 2298.095, + "99.67588879143345" : 2298.319, + "99.67780180857959" : 2298.511, + "99.67982260133958" : 2298.703, + "99.6817356184857" : 2298.895, + "99.68359774159195" : 2299.087, + "99.68558260914732" : 2299.279, + "99.68750311071108" : 2299.487, + "99.68955084737453" : 2299.695, + "99.69143692061719" : 2299.887, + "99.69338436608442" : 2300.079, + "99.69536623987274" : 2300.303, + "99.69733763547637" : 2300.527, + "99.69927310587539" : 2300.735, + "99.70119360743915" : 2300.943, + "99.70319045006273" : 2301.151, + "99.70517082696752" : 2301.375, + "99.70705690021019" : 2301.583, + "99.70904625841614" : 2301.775, + "99.71098172881516" : 2301.967, + "99.71289324907775" : 2302.159, + "99.7149230231389" : 2302.351, + "99.71681209014861" : 2302.559, + "99.7188268953745" : 2302.767, + "99.72076086889" : 2302.959, + "99.72271579877484" : 2303.167, + "99.72468270372791" : 2303.359, + "99.72659721775756" : 2303.551, + "99.72863747000339" : 2303.791, + "99.73058491547062" : 2303.999, + "99.7324500323439" : 2304.191, + "99.73453668797904" : 2304.415, + "99.73640030796882" : 2304.623, + "99.73829236874558" : 2304.847, + "99.74029819267031" : 2305.071, + "99.74228156334216" : 2305.295, + "99.74415117086603" : 2305.487, + "99.74617346050955" : 2305.727, + "99.74813138416145" : 2305.951, + "99.75007733274516" : 2306.175, + "99.75206369718406" : 2306.383, + "99.75401563330186" : 2306.623, + "99.75591667537978" : 2306.847, + "99.75785064889527" : 2307.087, + "99.7598220444989" : 2307.327, + "99.76182637154011" : 2307.599, + "99.76379028272612" : 2307.823, + "99.76570479675577" : 2308.063, + "99.76767918612646" : 2308.335, + "99.76960866899138" : 2308.607, + "99.77156958641034" : 2308.879, + "99.77344518146832" : 2309.103, + "99.77548842748119" : 2309.375, + "99.77739246332617" : 2309.631, + "99.77934439944397" : 2309.887, + "99.78136369532044" : 2310.127, + "99.78320336517379" : 2310.335, + "99.78525708937136" : 2310.607, + "99.78714166573049" : 2310.847, + "99.78908012989656" : 2311.119, + "99.7910575130343" : 2311.375, + "99.79302591487088" : 2311.615, + "99.79496587592048" : 2311.871, + "99.79693128399002" : 2312.143, + "99.7988877107584" : 2312.399, + "99.80079623725395" : 2312.671, + "99.80273470142001" : 2312.975, + "99.80470160637307" : 2313.263, + "99.80572098405422" : 2313.407, + "99.80668797081196" : 2313.551, + "99.80768489524023" : 2313.695, + "99.80867433525087" : 2313.839, + "99.80958743420167" : 2313.983, + "99.81059633369814" : 2314.127, + "99.81163367398162" : 2314.287, + "99.8125452760489" : 2314.415, + "99.81358860386646" : 2314.575, + "99.8144567963115" : 2314.703, + "99.81544623632213" : 2314.847, + "99.81650004232438" : 2314.991, + "99.81741613504225" : 2315.135, + "99.81846245662686" : 2315.295, + "99.81943243715166" : 2315.439, + "99.82038894572473" : 2315.583, + "99.82134994494837" : 2315.727, + "99.8223857883483" : 2315.871, + "99.8233437938049" : 2316.015, + "99.82432275563085" : 2316.159, + "99.82521190444524" : 2316.287, + "99.82619086627119" : 2316.431, + "99.82724916292402" : 2316.607, + "99.8281667525254" : 2316.751, + "99.82913224239962" : 2316.911, + "99.83016509203252" : 2317.071, + "99.83113058190673" : 2317.215, + "99.83211403438327" : 2317.343, + "99.83306455542223" : 2317.487, + "99.83404202036465" : 2317.647, + "99.83500751023887" : 2317.807, + "99.83603886298823" : 2317.983, + "99.83697591207546" : 2318.127, + "99.83790397986152" : 2318.303, + "99.83887994792043" : 2318.479, + "99.83990830690274" : 2318.655, + "99.84082140585355" : 2318.799, + "99.84185126171938" : 2318.959, + "99.84283172042886" : 2319.135, + "99.84380768848776" : 2319.295, + "99.84481958175128" : 2319.471, + "99.84580602799487" : 2319.631, + "99.84670415811041" : 2319.759, + "99.84769659188811" : 2319.919, + "99.84864711292707" : 2320.063, + "99.84967397502585" : 2320.223, + "99.85062898671538" : 2320.367, + "99.85163189867775" : 2320.527, + "99.85254948827914" : 2320.671, + "99.85356736907677" : 2320.847, + "99.85456579038856" : 2321.023, + "99.8555791805356" : 2321.183, + "99.85653119845809" : 2321.343, + "99.8574383098748" : 2321.519, + "99.85843972495364" : 2321.695, + "99.85940671171139" : 2321.871, + "99.86041561120786" : 2322.063, + "99.86136912601387" : 2322.255, + "99.86234958472335" : 2322.463, + "99.86330908706346" : 2322.639, + "99.86431199902583" : 2322.831, + "99.86529245773531" : 2323.039, + "99.86628189774594" : 2323.215, + "99.86727133775658" : 2323.391, + "99.86825329334958" : 2323.567, + "99.8691843549027" : 2323.743, + "99.87022019830263" : 2323.935, + "99.87114377543813" : 2324.111, + "99.87211076219587" : 2324.287, + "99.87312415234292" : 2324.479, + "99.87403425752669" : 2324.655, + "99.87504615079021" : 2324.863, + "99.87603559080084" : 2325.087, + "99.876998086908" : 2325.295, + "99.87793064534466" : 2325.503, + "99.8789664887446" : 2325.711, + "99.8799364692694" : 2325.919, + "99.88086004640489" : 2326.111, + "99.88185697083316" : 2326.335, + "99.88285389526142" : 2326.527, + "99.88382836643679" : 2326.703, + "99.88477439682516" : 2326.895, + "99.88581173710864" : 2327.087, + "99.88672932671003" : 2327.279, + "99.88777564829464" : 2327.519, + "99.88868275971134" : 2327.743, + "99.88972908129597" : 2327.967, + "99.89069606805371" : 2328.159, + "99.89164958285973" : 2328.383, + "99.89259411636458" : 2328.607, + "99.89361499092927" : 2328.831, + "99.89457299638585" : 2329.071, + "99.89556243639649" : 2329.295, + "99.89650098236723" : 2329.487, + "99.89752485069897" : 2329.679, + "99.89849483122376" : 2329.903, + "99.8994154145922" : 2330.127, + "99.90048568631323" : 2330.367, + "99.90142273540046" : 2330.575, + "99.90235828760416" : 2330.799, + "99.90284028409951" : 2330.911, + "99.90333126189601" : 2331.023, + "99.90383122099367" : 2331.135, + "99.90429974553729" : 2331.247, + "99.9048146734702" : 2331.359, + "99.90533858270427" : 2331.487, + "99.90577567269385" : 2331.599, + "99.90628910374323" : 2331.727, + "99.90674415633511" : 2331.855, + "99.90723214036457" : 2331.967, + "99.90775305583159" : 2332.095, + "99.90824103986104" : 2332.223, + "99.90876644597863" : 2332.351, + "99.90922898298814" : 2332.463, + "99.9097229545517" : 2332.575, + "99.91019297597883" : 2332.687, + "99.91066299740598" : 2332.799, + "99.91120037859179" : 2332.911, + "99.91162549351314" : 2333.007, + "99.91215539028131" : 2333.119, + "99.91266582756366" : 2333.247, + "99.91310441443676" : 2333.343, + "99.9136208392532" : 2333.455, + "99.91409834509797" : 2333.567, + "99.91460578861326" : 2333.711, + "99.9150593443216" : 2333.839, + "99.91556828472042" : 2333.983, + "99.9160293248464" : 2334.095, + "99.91656670603221" : 2334.239, + "99.9170457087605" : 2334.351, + "99.91752321460527" : 2334.479, + "99.91802167681941" : 2334.623, + "99.91851115773238" : 2334.751, + "99.91894675083843" : 2334.863, + "99.91948562890775" : 2335.007, + "99.91993918461611" : 2335.135, + "99.92042866552909" : 2335.279, + "99.92091066202443" : 2335.423, + "99.92141511177266" : 2335.567, + "99.92188812696686" : 2335.695, + "99.92238060164689" : 2335.823, + "99.9228611012587" : 2335.967, + "99.9233805198422" : 2336.095, + "99.92384006308465" : 2336.239, + "99.92434301594938" : 2336.399, + "99.92481902491062" : 2336.511, + "99.92532347465885" : 2336.655, + "99.92580098050361" : 2336.783, + "99.92632039908712" : 2336.927, + "99.92679491116483" : 2337.103, + "99.92728588896134" : 2337.247, + "99.92774094155321" : 2337.359, + "99.9282364100003" : 2337.519, + "99.92876031923436" : 2337.663, + "99.92920189987451" : 2337.791, + "99.92974526859442" : 2337.951, + "99.93021529002155" : 2338.079, + "99.93072423042037" : 2338.175, + "99.9311882643134" : 2338.271, + "99.93164331690528" : 2338.399, + "99.93215375418762" : 2338.559, + "99.93262676938181" : 2338.703, + "99.93315965991704" : 2338.847, + "99.93361471250893" : 2338.975, + "99.93412365290774" : 2339.135, + "99.93461762447129" : 2339.279, + "99.93507118017965" : 2339.407, + "99.93557413304435" : 2339.567, + "99.93605912330675" : 2339.743, + "99.9365291447339" : 2339.887, + "99.93707700410438" : 2340.047, + "99.93753355357978" : 2340.191, + "99.93800357500693" : 2340.351, + "99.93850203722106" : 2340.559, + "99.93899600878461" : 2340.735, + "99.939480999047" : 2340.879, + "99.93994353605652" : 2341.087, + "99.94047193594118" : 2341.263, + "99.94092848541658" : 2341.423, + "99.9414374258154" : 2341.615, + "99.94191193789311" : 2341.807, + "99.9424193814084" : 2341.999, + "99.94288491218495" : 2342.159, + "99.94339684635082" : 2342.319, + "99.94388033972969" : 2342.495, + "99.9443832925944" : 2342.639, + "99.94488175480853" : 2342.783, + "99.94533081986631" : 2342.911, + "99.94582778519691" : 2343.087, + "99.9463472037804" : 2343.231, + "99.94679028130408" : 2343.391, + "99.94729772481936" : 2343.567, + "99.94779169638292" : 2343.743, + "99.94827369287827" : 2343.871, + "99.94874371430541" : 2344.047, + "99.94924816405364" : 2344.239, + "99.94971070106315" : 2344.431, + "99.95023161653017" : 2344.623, + "99.95069115977263" : 2344.799, + "99.95117465315151" : 2344.991, + "99.95142313581681" : 2345.103, + "99.95166114029743" : 2345.199, + "99.95192010114741" : 2345.295, + "99.95217307446329" : 2345.407, + "99.95241706647802" : 2345.519, + "99.95263860523985" : 2345.631, + "99.95289457232279" : 2345.727, + "99.95315053940573" : 2345.839, + "99.95339602830397" : 2345.951, + "99.9536175670658" : 2346.063, + "99.95388999986753" : 2346.191, + "99.95411153862936" : 2346.271, + "99.95435253687704" : 2346.351, + "99.95459952265881" : 2346.431, + "99.95486297415937" : 2346.527, + "99.95508750668826" : 2346.607, + "99.95533748623708" : 2346.735, + "99.95557698760123" : 2346.863, + "99.95582996091711" : 2346.975, + "99.95607544981537" : 2347.087, + "99.95632692624773" : 2347.215, + "99.95655295566014" : 2347.295, + "99.95681191651012" : 2347.391, + "99.9570529147578" : 2347.487, + "99.95727744728669" : 2347.583, + "99.95752892371904" : 2347.679, + "99.95780285340429" : 2347.759, + "99.95801690774849" : 2347.823, + "99.95829832185136" : 2347.919, + "99.95851536996263" : 2347.983, + "99.95877732457966" : 2348.063, + "99.95898988204034" : 2348.143, + "99.95923537093859" : 2348.255, + "99.95948085983684" : 2348.383, + "99.95972934250214" : 2348.479, + "99.9599927940027" : 2348.591, + "99.9602233140657" : 2348.703, + "99.96048227491568" : 2348.831, + "99.960702316794" : 2348.943, + "99.96096726517808" : 2349.071, + "99.96120826342576" : 2349.167, + "99.96143279595464" : 2349.263, + "99.9616902599211" : 2349.391, + "99.96195670518871" : 2349.519, + "99.96216477199881" : 2349.647, + "99.96240726713002" : 2349.759, + "99.96265125914474" : 2349.903, + "99.96292668571351" : 2350.047, + "99.96315271512593" : 2350.175, + "99.96338173830539" : 2350.255, + "99.96363770538832" : 2350.367, + "99.9639131319571" : 2350.479, + "99.96413467071893" : 2350.575, + "99.96437417208308" : 2350.703, + "99.96462564851544" : 2350.815, + "99.9648486841608" : 2350.895, + "99.96512560761309" : 2351.039, + "99.96535014014198" : 2351.135, + "99.9656001196908" : 2351.247, + "99.9658486023561" : 2351.375, + "99.96606565046737" : 2351.471, + "99.96631113936562" : 2351.615, + "99.96657159709913" : 2351.759, + "99.96681109846328" : 2351.871, + "99.9670431154098" : 2351.967, + "99.967285610541" : 2352.095, + "99.96754157762393" : 2352.239, + "99.96780203535744" : 2352.367, + "99.96801908346869" : 2352.479, + "99.96829301315394" : 2352.639, + "99.96852353321692" : 2352.799, + "99.96876153769755" : 2352.927, + "99.96900253594522" : 2353.071, + "99.96924952172701" : 2353.199, + "99.9694860293241" : 2353.327, + "99.96973900263998" : 2353.487, + "99.96998000088765" : 2353.663, + "99.97023596797058" : 2353.807, + "99.97048894128646" : 2353.951, + "99.97073742395177" : 2354.063, + "99.97094848452892" : 2354.175, + "99.97121642668006" : 2354.287, + "99.97144544985953" : 2354.447, + "99.97169692629188" : 2354.639, + "99.97195139649129" : 2354.815, + "99.97217592902018" : 2354.959, + "99.97243189610312" : 2355.151, + "99.97268337253547" : 2355.311, + "99.97290940194787" : 2355.455, + "99.97315638772966" : 2355.615, + "99.97339289532675" : 2355.807, + "99.97364886240969" : 2355.999, + "99.97389435130793" : 2356.143, + "99.97412187760388" : 2356.303, + "99.97437036026918" : 2356.511, + "99.97461435228391" : 2356.687, + "99.97485834429862" : 2356.831, + "99.97511580826509" : 2356.975, + "99.97534632832807" : 2357.103, + "99.97559181722633" : 2357.247, + "99.97573551804481" : 2357.343, + "99.97583730612457" : 2357.407, + "99.97597951005955" : 2357.519, + "99.9760753106052" : 2357.567, + "99.97620553947196" : 2357.647, + "99.97633876210577" : 2357.743, + "99.97644504083611" : 2357.807, + "99.9765887416546" : 2357.871, + "99.9767099892202" : 2357.935, + "99.97680728664938" : 2357.983, + "99.97693901239965" : 2358.095, + "99.97705427243116" : 2358.207, + "99.97718450129791" : 2358.319, + "99.97730724574704" : 2358.415, + "99.97743148707968" : 2358.495, + "99.97755423152881" : 2358.607, + "99.97766799467678" : 2358.703, + "99.97779223600944" : 2358.767, + "99.97793144617735" : 2358.847, + "99.97804520932532" : 2358.927, + "99.97817992884265" : 2359.023, + "99.97828471068946" : 2359.087, + "99.97840895202211" : 2359.167, + "99.97852271517009" : 2359.247, + "99.97863797520158" : 2359.327, + "99.97876820406833" : 2359.423, + "99.97890741423625" : 2359.519, + "99.97901818361716" : 2359.615, + "99.97913044988161" : 2359.695, + "99.97925469121427" : 2359.823, + "99.9793953982657" : 2359.935, + "99.97950317387956" : 2360.031, + "99.97963489962984" : 2360.143, + "99.97974716589428" : 2360.223, + "99.97986392280932" : 2360.319, + "99.98000013921016" : 2360.415, + "99.9801064179405" : 2360.479, + "99.98024263434137" : 2360.591, + "99.9803653787905" : 2360.687, + "99.98050159519136" : 2360.767, + "99.98059589885348" : 2360.831, + "99.98072014018614" : 2360.975, + "99.98085036905289" : 2361.135, + "99.98096113843381" : 2361.231, + "99.98108388288294" : 2361.375, + "99.98122009928379" : 2361.487, + "99.98132787489766" : 2361.599, + "99.98144912246326" : 2361.695, + "99.98159132639822" : 2361.791, + "99.98169610824503" : 2361.903, + "99.98181885269416" : 2362.031, + "99.98194309402682" : 2362.143, + "99.98205685717478" : 2362.239, + "99.98220504864385" : 2362.335, + "99.98231581802477" : 2362.399, + "99.98242808428921" : 2362.527, + "99.98255981003949" : 2362.655, + "99.98267357318747" : 2362.783, + "99.98279482075306" : 2362.879, + "99.98292654650335" : 2363.023, + "99.98304629718541" : 2363.151, + "99.98316455098397" : 2363.231, + "99.98327681724841" : 2363.343, + "99.98340105858107" : 2363.455, + "99.9835357780984" : 2363.567, + "99.98364954124636" : 2363.695, + "99.98376779504491" : 2363.791, + "99.98390401144577" : 2363.919, + "99.98402076836079" : 2364.015, + "99.98413303462523" : 2364.127, + "99.98425727595789" : 2364.239, + "99.98437552975643" : 2364.383, + "99.98450426173966" : 2364.495, + "99.98462999995584" : 2364.607, + "99.98474376310381" : 2364.751, + "99.9848814763882" : 2364.863, + "99.98499973018674" : 2364.959, + "99.98510900268414" : 2365.071, + "99.98524372220147" : 2365.263, + "99.98535898223297" : 2365.391, + "99.9854817266821" : 2365.583, + "99.9856029742477" : 2365.711, + "99.98572272492976" : 2365.823, + "99.98584247561183" : 2365.951, + "99.98598018889622" : 2366.047, + "99.98609095827715" : 2366.175, + "99.98620921207569" : 2366.303, + "99.98632896275777" : 2366.479, + "99.98645769474099" : 2366.591, + "99.98657744542307" : 2366.719, + "99.9867121649404" : 2366.863, + "99.98683191562247" : 2366.991, + "99.9869486725375" : 2367.087, + "99.98706542945251" : 2367.215, + "99.98719266455223" : 2367.375, + "99.98730792458372" : 2367.519, + "99.98743366279989" : 2367.631, + "99.98756239478313" : 2367.823, + "99.98767915169815" : 2367.983, + "99.98780189614727" : 2368.095, + "99.98786626213888" : 2368.159, + "99.98792613747992" : 2368.223, + "99.98798002528686" : 2368.271, + "99.98803840374437" : 2368.351, + "99.98810276973597" : 2368.447, + "99.98816863261112" : 2368.511, + "99.98822701106863" : 2368.607, + "99.98829437082729" : 2368.735, + "99.98834376798365" : 2368.799, + "99.98840663709174" : 2368.895, + "99.98846950619983" : 2368.975, + "99.9885308784244" : 2369.071, + "99.98859225064895" : 2369.167, + "99.98864763533942" : 2369.295, + "99.98871798886513" : 2369.375, + "99.9887913361579" : 2369.423, + "99.98884971461541" : 2369.471, + "99.98889312423766" : 2369.519, + "99.9889529995787" : 2369.599, + "99.98901736557032" : 2369.743, + "99.98908023467841" : 2369.855, + "99.98914160690296" : 2369.999, + "99.98919848847696" : 2370.079, + "99.98926135758504" : 2370.255, + "99.98932422669313" : 2370.351, + "99.9893915864518" : 2370.431, + "99.9894439773752" : 2370.495, + "99.98950534959977" : 2370.591, + "99.9895652249408" : 2370.703, + "99.98962510028184" : 2370.799, + "99.98969994445814" : 2370.911, + "99.98975832291565" : 2371.007, + "99.98980772007201" : 2371.087, + "99.98989304243298" : 2371.231, + "99.98993944582229" : 2371.311, + "99.98999033986216" : 2371.439, + "99.99005320897025" : 2371.519, + "99.99011458119482" : 2371.583, + "99.990183437837" : 2371.711, + "99.99024481006157" : 2371.791, + "99.99029720098498" : 2371.871, + "99.99035857320955" : 2371.935, + "99.99041844855059" : 2371.999, + "99.99048580830924" : 2372.111, + "99.99054418676675" : 2372.175, + "99.99060256522426" : 2372.223, + "99.99067142186647" : 2372.303, + "99.99072830344045" : 2372.415, + "99.99079865696616" : 2372.527, + "99.99084955100605" : 2372.607, + "99.99091242011413" : 2372.703, + "99.9909678048046" : 2372.767, + "99.99103516456326" : 2372.863, + "99.9910950399043" : 2372.959, + "99.99116090277944" : 2373.087, + "99.99121329370284" : 2373.183, + "99.99127915657799" : 2373.295, + "99.99133903191903" : 2373.375, + "99.99139741037654" : 2373.487, + "99.99145728571757" : 2373.631, + "99.99151716105861" : 2373.743, + "99.99158901146785" : 2373.807, + "99.9916384086242" : 2373.887, + "99.99170427149934" : 2373.967, + "99.99176714060744" : 2374.063, + "99.9918345003661" : 2374.127, + "99.99188240063893" : 2374.175, + "99.99195275416464" : 2374.239, + "99.99200664197159" : 2374.351, + "99.99208148614788" : 2374.447, + "99.99213238018775" : 2374.511, + "99.99219375241232" : 2374.607, + "99.99226560282156" : 2374.687, + "99.9923135030944" : 2374.735, + "99.99237487531896" : 2374.831, + "99.99243774442705" : 2374.943, + "99.99249761976809" : 2375.039, + "99.99255749510912" : 2375.151, + "99.99262784863484" : 2375.263, + "99.99268473020882" : 2375.343, + "99.99274011489928" : 2375.471, + "99.99279849335679" : 2375.583, + "99.99286435623193" : 2375.711, + "99.99292722534003" : 2375.791, + "99.99298410691401" : 2375.839, + "99.99304398225505" : 2375.951, + "99.99310685136314" : 2376.063, + "99.99317720488885" : 2376.207, + "99.99323708022989" : 2376.271, + "99.99328947115329" : 2376.335, + "99.99335533402844" : 2376.447, + "99.99341520936947" : 2376.543, + "99.99347209094346" : 2376.671, + "99.99353496005155" : 2376.799, + "99.99359932604317" : 2376.927, + "99.9936592013842" : 2377.071, + "99.99371458607466" : 2377.247, + "99.99377745518275" : 2377.407, + "99.99384032429083" : 2377.503, + "99.99389720586483" : 2377.631, + "99.99392714353534" : 2377.695, + "99.99396157185643" : 2377.775, + "99.99399150952695" : 2377.839, + "99.99401995031394" : 2377.919, + "99.99405437863504" : 2377.983, + "99.9940813225385" : 2378.031, + "99.99411275709255" : 2378.111, + "99.99415466983127" : 2378.207, + "99.9941846075018" : 2378.239, + "99.99421155140526" : 2378.303, + "99.99423250777463" : 2378.351, + "99.99426693609573" : 2378.447, + "99.99429687376625" : 2378.511, + "99.99432531455324" : 2378.559, + "99.99435525222376" : 2378.607, + "99.9943866867778" : 2378.735, + "99.99441812133183" : 2378.815, + "99.99444656211884" : 2378.879, + "99.99448099043992" : 2378.975, + "99.99451242499397" : 2379.039, + "99.99454685331507" : 2379.103, + "99.99457529410206" : 2379.151, + "99.99460223800553" : 2379.215, + "99.99462918190899" : 2379.295, + "99.99466510711362" : 2379.391, + "99.99469654166766" : 2379.471, + "99.99472049180407" : 2379.535, + "99.99475342324165" : 2379.615, + "99.99478635467922" : 2379.695, + "99.99481329858268" : 2379.759, + "99.99484772690379" : 2379.823, + "99.9948776645743" : 2379.903, + "99.99490760224482" : 2379.967, + "99.99493604303181" : 2380.063, + "99.99496897446937" : 2380.143, + "99.99499741525638" : 2380.207, + "99.99503334046099" : 2380.303, + "99.99506178124798" : 2380.335, + "99.9950917189185" : 2380.383, + "99.99512465035608" : 2380.447, + "99.9951545880266" : 2380.511, + "99.99519350699826" : 2380.559, + "99.99521146960058" : 2380.607, + "99.99524290415462" : 2380.687, + "99.99527134494161" : 2380.719, + "99.99530427637919" : 2380.815, + "99.99533571093323" : 2380.895, + "99.99536415172022" : 2380.975, + "99.99540157380837" : 2381.007, + "99.99543300836241" : 2381.039, + "99.99545995226588" : 2381.087, + "99.99548689616935" : 2381.231, + "99.99551533695634" : 2381.343, + "99.99555275904449" : 2381.455, + "99.99557970294795" : 2381.503, + "99.99560814373494" : 2381.535, + "99.99563808140546" : 2381.583, + "99.99566652219247" : 2381.647, + "99.99569945363002" : 2381.791, + "99.99572939130054" : 2381.855, + "99.99576082585459" : 2381.903, + "99.99579375729216" : 2381.967, + "99.99582519184621" : 2382.111, + "99.99585063886614" : 2382.191, + "99.99588057653666" : 2382.287, + "99.99591350797424" : 2382.383, + "99.99594344564476" : 2382.495, + "99.99597637708233" : 2382.607, + "99.99600332098579" : 2382.719, + "99.99603325865631" : 2382.863, + "99.99606619009388" : 2382.959, + "99.9960961277644" : 2383.055, + "99.99612606543492" : 2383.199, + "99.99615600310544" : 2383.295, + "99.99619192831005" : 2383.423, + "99.99621737532999" : 2383.551, + "99.99624731300051" : 2383.631, + "99.99628323820514" : 2383.711, + "99.9963101821086" : 2383.791, + "99.99634311354617" : 2383.855, + "99.99637454810022" : 2383.983, + "99.99640448577074" : 2384.079, + "99.9964314296742" : 2384.175, + "99.99646885176236" : 2384.303, + "99.99649280189877" : 2384.431, + "99.99652124268576" : 2384.479, + "99.99655716789039" : 2384.591, + "99.99658560867738" : 2384.639, + "99.99661255258084" : 2384.703, + "99.99664548401842" : 2384.783, + "99.99667542168893" : 2384.879, + "99.9967083531265" : 2384.959, + "99.99674128456407" : 2385.039, + "99.99676822846753" : 2385.103, + "99.99679666925452" : 2385.215, + "99.99682660692504" : 2385.279, + "99.99686253212967" : 2385.391, + "99.99689546356724" : 2385.471, + "99.99691941370365" : 2385.519, + "99.99695234514122" : 2385.647, + "99.99696581709296" : 2385.679, + "99.99698078592822" : 2385.711, + "99.99700024541406" : 2385.759, + "99.99701072359873" : 2385.807, + "99.997025692434" : 2385.871, + "99.99704066126925" : 2385.903, + "99.99705563010451" : 2385.919, + "99.9970720958233" : 2385.983, + "99.99709604595971" : 2386.047, + "99.9971065241444" : 2386.079, + "99.99711700232908" : 2386.127, + "99.99713646181492" : 2386.175, + "99.99714993376665" : 2386.223, + "99.997170890136" : 2386.271, + "99.99718286520422" : 2386.303, + "99.99719783403948" : 2386.319, + "99.99721280287473" : 2386.335, + "99.99722328105942" : 2386.351, + "99.99723824989468" : 2386.383, + "99.99725471561347" : 2386.415, + "99.99726968444872" : 2386.479, + "99.99728914393455" : 2386.575, + "99.99729962211924" : 2386.591, + "99.99731758472154" : 2386.639, + "99.9973325535568" : 2386.735, + "99.99734602550855" : 2386.831, + "99.99736398811085" : 2386.959, + "99.99737596317907" : 2387.055, + "99.99739991331548" : 2387.103, + "99.99740889461663" : 2387.135, + "99.99742236656836" : 2387.199, + "99.99743733540362" : 2387.279, + "99.9974538011224" : 2387.327, + "99.99748074502587" : 2387.375, + "99.99748673255998" : 2387.391, + "99.99750020451171" : 2387.439, + "99.99751517334697" : 2387.567, + "99.9975286452987" : 2387.679, + "99.99754361413396" : 2387.775, + "99.99756007985275" : 2387.855, + "99.99758402998917" : 2387.951, + "99.99759001752327" : 2387.967, + "99.99760798012558" : 2388.111, + "99.99762145207731" : 2388.239, + "99.99763492402904" : 2388.367, + "99.99765138974783" : 2388.479, + "99.99766635858309" : 2388.527, + "99.99768282430188" : 2388.639, + "99.99769779313714" : 2388.687, + "99.99771425885592" : 2388.719, + "99.99772922769118" : 2388.767, + "99.99775018406054" : 2388.831, + "99.9977591653617" : 2388.847, + "99.99778461238164" : 2388.895, + "99.99778760614869" : 2388.911, + "99.997805568751" : 2388.959, + "99.99782203446979" : 2388.991, + "99.997834009538" : 2389.007, + "99.99785346902382" : 2389.055, + "99.99786394720851" : 2389.071, + "99.99788190981081" : 2389.135, + "99.99789987241313" : 2389.167, + "99.99791334436486" : 2389.215, + "99.99792981008365" : 2389.247, + "99.9979447789189" : 2389.295, + "99.99795675398711" : 2389.327, + "99.99797920724001" : 2389.375, + "99.99799118230821" : 2389.391, + "99.99800615114347" : 2389.455, + "99.99801812621168" : 2389.535, + "99.99803608881399" : 2389.695, + "99.99805105764925" : 2389.775, + "99.99807201401862" : 2389.823, + "99.99807800155271" : 2389.839, + "99.99809297038797" : 2389.871, + "99.99811392675734" : 2389.967, + "99.99812590182555" : 2390.031, + "99.9981408706608" : 2390.143, + "99.99815434261254" : 2390.223, + "99.9981693114478" : 2390.303, + "99.99818428028306" : 2390.479, + "99.9982037397689" : 2390.607, + "99.9982157148371" : 2390.751, + "99.99823068367236" : 2390.847, + "99.99824714939115" : 2390.927, + "99.99826062134288" : 2391.039, + "99.99827708706167" : 2391.183, + "99.99829205589693" : 2391.231, + "99.99831301226628" : 2391.295, + "99.99832349045097" : 2391.327, + "99.99834145305329" : 2391.359, + "99.99835941565559" : 2391.487, + "99.99837288760732" : 2391.535, + "99.99838336579201" : 2391.599, + "99.99839833462727" : 2391.759, + "99.9984177941131" : 2391.823, + "99.99843126606484" : 2391.887, + "99.99844473801657" : 2391.983, + "99.99845970685183" : 2392.047, + "99.99847617257062" : 2392.319, + "99.99848216010471" : 2392.415, + "99.99848964452235" : 2392.527, + "99.99850461335761" : 2392.639, + "99.99851209777523" : 2392.655, + "99.99851658842582" : 2392.671, + "99.99852107907638" : 2392.703, + "99.99853006037755" : 2392.735, + "99.99853604791164" : 2392.751, + "99.99854353232928" : 2392.783, + "99.99855401051396" : 2392.847, + "99.99856299181512" : 2392.895, + "99.99856598558216" : 2392.927, + "99.99857646376685" : 2392.991, + "99.99858095441742" : 2393.023, + "99.99858993571858" : 2393.119, + "99.9985974201362" : 2393.151, + "99.9986078983209" : 2393.263, + "99.998613885855" : 2393.295, + "99.9986198733891" : 2393.439, + "99.99862735780673" : 2393.487, + "99.99863633910789" : 2393.519, + "99.99864382352551" : 2393.599, + "99.99864981105962" : 2393.631, + "99.99865729547724" : 2393.759, + "99.99866777366194" : 2393.983, + "99.99867376119603" : 2394.063, + "99.99868723314776" : 2394.127, + "99.99869172379834" : 2394.159, + "99.99869621444893" : 2394.175, + "99.99870818951713" : 2394.303, + "99.99871268016771" : 2394.319, + "99.99871866770181" : 2394.335, + "99.99872764900297" : 2394.479, + "99.99873363653707" : 2394.511, + "99.99874261783823" : 2394.591, + "99.99875309602291" : 2394.703, + "99.99875758667349" : 2394.735, + "99.99876806485817" : 2394.799, + "99.99877255550875" : 2394.895, + "99.99878003992637" : 2394.927, + "99.99878752434401" : 2395.039, + "99.99879650564516" : 2395.119, + "99.99880249317927" : 2395.151, + "99.99880997759689" : 2395.183, + "99.99881746201453" : 2395.327, + "99.9988279401992" : 2395.439, + "99.99883841838388" : 2395.455, + "99.99884141215094" : 2395.487, + "99.99885338721914" : 2395.519, + "99.99885787786972" : 2395.535, + "99.99886536228735" : 2395.583, + "99.99887134982146" : 2395.599, + "99.9988803311226" : 2395.647, + "99.99888931242377" : 2395.663, + "99.99889979060845" : 2395.711, + "99.99890428125903" : 2395.727, + "99.99891026879313" : 2395.791, + "99.99891925009429" : 2395.855, + "99.99892523762838" : 2395.871, + "99.99893272204602" : 2395.903, + "99.99894020646364" : 2395.967, + "99.99895068464834" : 2396.063, + "99.9989551752989" : 2396.143, + "99.99896265971654" : 2396.319, + "99.99897014413416" : 2396.431, + "99.99898511296942" : 2396.463, + "99.99898810673648" : 2396.479, + "99.99899409427059" : 2396.527, + "99.99900457245526" : 2396.671, + "99.99901055998937" : 2396.703, + "99.99901654752347" : 2396.799, + "99.9990240319411" : 2396.895, + "99.99903301324225" : 2396.943, + "99.9990419945434" : 2397.007, + "99.99904648519399" : 2397.023, + "99.99905396961162" : 2397.071, + "99.9990644477963" : 2397.167, + "99.99907043533041" : 2397.391, + "99.99907941663156" : 2397.535, + "99.99908690104918" : 2397.567, + "99.99909737923387" : 2397.615, + "99.99910037300093" : 2397.647, + "99.99911234806913" : 2397.775, + "99.99911534183619" : 2397.871, + "99.99912582002086" : 2397.919, + "99.99913180755496" : 2397.967, + "99.99914078885612" : 2398.031, + "99.99914827327375" : 2398.095, + "99.99915575769138" : 2398.175, + "99.99916174522548" : 2398.207, + "99.99917072652664" : 2398.351, + "99.99917671406074" : 2398.479, + "99.9991856953619" : 2398.559, + "99.999191682896" : 2398.655, + "99.99919916731363" : 2398.751, + "99.99920665173126" : 2398.831, + "99.99921712991595" : 2398.911, + "99.99922311745004" : 2398.959, + "99.99923060186768" : 2399.023, + "99.9992380862853" : 2399.055, + "99.99924257693588" : 2399.087, + "99.99924557070294" : 2399.119, + "99.99925006135351" : 2399.199, + "99.99925305512056" : 2399.279, + "99.99925754577114" : 2399.295, + "99.9992605395382" : 2399.311, + "99.99926503018877" : 2399.343, + "99.99926952083935" : 2399.391, + "99.9992725146064" : 2399.439, + "99.99927550837346" : 2399.503, + "99.99928149590755" : 2399.567, + "99.99928299279108" : 2399.583, + "99.99928898032519" : 2399.759, + "99.99929047720872" : 2399.775, + "99.99929496785929" : 2399.855, + "99.99930245227692" : 2399.903, + "99.9993069429275" : 2399.919, + "99.99930993669454" : 2399.983, + "99.99931592422865" : 2399.999, + "99.99931891799571" : 2400.015, + "99.99932191176276" : 2400.031, + "99.99932789929686" : 2400.047, + "99.99932939618039" : 2400.063, + "99.99933388683097" : 2400.191, + "99.99933987436506" : 2400.223, + "99.99934137124859" : 2400.271, + "99.99935035254975" : 2400.415, + "99.99935184943328" : 2400.463, + "99.9993593338509" : 2400.527, + "99.99936382450149" : 2400.591, + "99.99936681826854" : 2400.607, + "99.99937130891911" : 2400.671, + "99.99937579956969" : 2400.719, + "99.99937879333675" : 2400.751, + "99.99938627775437" : 2400.847, + "99.99939076840495" : 2400.959, + "99.999393762172" : 2400.975, + "99.99939825282257" : 2401.039, + "99.99940124658963" : 2401.135, + "99.99940573724021" : 2401.215, + "99.99940873100726" : 2401.263, + "99.99941322165783" : 2401.391, + "99.99942070607547" : 2401.583, + "99.99942519672605" : 2401.711, + "99.99942819049309" : 2401.807, + "99.99943268114367" : 2401.839, + "99.99943717179426" : 2401.935, + "99.99944166244484" : 2401.983, + "99.99944315932835" : 2402.015, + "99.99944914686246" : 2402.079, + "99.99945214062951" : 2402.335, + "99.99945513439657" : 2402.383, + "99.99945962504714" : 2402.447, + "99.99946411569772" : 2402.463, + "99.99946710946477" : 2402.623, + "99.99947160011536" : 2402.671, + "99.9994745938824" : 2402.703, + "99.99947908453298" : 2402.719, + "99.99948207830003" : 2402.767, + "99.99948507206709" : 2402.815, + "99.99949105960118" : 2402.991, + "99.99949405336824" : 2403.007, + "99.99949704713529" : 2403.071, + "99.99950303466939" : 2403.199, + "99.99951051908702" : 2403.231, + "99.9995150097376" : 2403.247, + "99.99951650662113" : 2403.263, + "99.99952249415523" : 2403.279, + "99.99952997857287" : 2403.295, + "99.99953746299049" : 2403.311, + "99.99953895987402" : 2403.327, + "99.9995434505246" : 2403.343, + "99.9995494380587" : 2403.359, + "99.99955243182575" : 2403.375, + "99.9995554255928" : 2403.391, + "99.99956291001043" : 2403.407, + "99.99956889754453" : 2403.423, + "99.99957189131159" : 2403.439, + "99.99957338819512" : 2403.471, + "99.99957787884568" : 2403.583, + "99.99958236949627" : 2403.647, + "99.99958536326332" : 2403.791, + "99.9995898539139" : 2403.919, + "99.99959284768094" : 2404.031, + "99.99959733833153" : 2404.287, + "99.99960182898211" : 2404.367, + "99.9996078165162" : 2404.383, + "99.99961380405031" : 2404.463, + "99.9996182947009" : 2404.527, + "99.99962128846794" : 2404.543, + "99.99962278535146" : 2404.559, + "99.99962577911852" : 2404.751, + "99.99962727600204" : 2404.831, + "99.99962877288557" : 2404.863, + "99.9996302697691" : 2404.927, + "99.99963326353615" : 2404.943, + "99.99963775418672" : 2404.959, + "99.99964074795378" : 2405.375, + "99.9996422448373" : 2405.391, + "99.99964374172083" : 2405.471, + "99.99964523860436" : 2405.487, + "99.99964823237141" : 2405.535, + "99.99964972925494" : 2405.695, + "99.99965122613845" : 2405.855, + "99.99965421990551" : 2405.999, + "99.99965571678904" : 2406.015, + "99.99965721367256" : 2406.351, + "99.99965871055609" : 2406.431, + "99.99966170432315" : 2406.735, + "99.99966320120667" : 2406.767, + "99.9996646980902" : 2406.879, + "99.99966769185724" : 2407.039, + "99.99966918874077" : 2407.231, + "99.99967367939135" : 2407.247, + "99.99967517627488" : 2407.263, + "99.99967817004193" : 2407.279, + "99.99968116380897" : 2407.295, + "99.99969014511014" : 2407.311, + "99.99969313887719" : 2407.327, + "99.99969613264423" : 2407.343, + "99.99969762952776" : 2407.359, + "99.99969912641129" : 2407.391, + "99.99970062329481" : 2407.535, + "99.99970361706187" : 2407.711, + "99.9997051139454" : 2407.727, + "99.99970661082892" : 2407.823, + "99.99970960459598" : 2407.935, + "99.99971110147949" : 2408.095, + "99.99971259836302" : 2408.175, + "99.99971409524655" : 2408.207, + "99.9997170890136" : 2408.367, + "99.99971858589713" : 2408.431, + "99.99972008278066" : 2408.511, + "99.99972457343124" : 2408.607, + "99.99972607031475" : 2408.671, + "99.99972756719828" : 2408.687, + "99.99973205784886" : 2408.911, + "99.99973355473239" : 2409.007, + "99.99973505161591" : 2409.135, + "99.99973804538297" : 2409.311, + "99.9997395422665" : 2409.343, + "99.99974253603354" : 2409.471, + "99.99974552980059" : 2409.615, + "99.99974702668412" : 2409.631, + "99.99975002045117" : 2409.743, + "99.99975301421823" : 2409.759, + "99.99975451110176" : 2409.775, + "99.99975600798527" : 2409.823, + "99.99975900175232" : 2410.095, + "99.99976049863585" : 2410.111, + "99.99976498928643" : 2410.223, + "99.99976947993702" : 2410.239, + "99.99977397058758" : 2410.399, + "99.99977546747111" : 2410.415, + "99.99977696435464" : 2410.431, + "99.99978145500522" : 2410.575, + "99.99978295188875" : 2410.687, + "99.99978744253931" : 2411.807, + "99.99978893942284" : 2412.863, + "99.99979043630637" : 2413.087, + "99.99979343007342" : 2413.247, + "99.999797920724" : 2413.263, + "99.99980241137457" : 2413.279, + "99.9998039082581" : 2413.487, + "99.99980989579221" : 2413.503, + "99.99981139267574" : 2413.535, + "99.99981288955927" : 2413.567, + "99.9998158833263" : 2413.599, + "99.99981738020983" : 2413.743, + "99.99982037397689" : 2413.759, + "99.99982486462747" : 2413.775, + "99.99982785839453" : 2413.791, + "99.99982935527804" : 2413.807, + "99.99983234904509" : 2413.823, + "99.99983534281215" : 2413.839, + "99.9998383365792" : 2413.935, + "99.99983983346273" : 2414.079, + "99.99984133034626" : 2414.111, + "99.99984282722978" : 2414.271, + "99.99984582099682" : 2414.463, + "99.99984731788035" : 2415.103, + "99.99984881476388" : 2415.263, + "99.9998503116474" : 2416.111, + "99.99985480229799" : 2416.239, + "99.99985929294856" : 2416.543, + "99.99986078983208" : 2416.559, + "99.99986228671561" : 2417.279, + "99.99986378359914" : 2417.295, + "99.99986827424972" : 2417.439, + "99.99986977113325" : 2417.551, + "99.99987126801678" : 2417.663, + "99.9998727649003" : 2417.775, + "99.99987575866734" : 2418.223, + "99.99987725555087" : 2418.239, + "99.9998787524344" : 2418.255, + "99.99988024931793" : 2418.495, + "99.99988174620145" : 2418.703, + "99.99988324308498" : 2419.055, + "99.99988473996851" : 2419.071, + "99.99988623685203" : 2419.231, + "99.99988773373556" : 2419.471, + "99.99988923061908" : 2419.583, + "99.9998907275026" : 2419.743, + "99.99989222438613" : 2419.775, + "99.99989372126966" : 2419.999, + "99.99989671503671" : 2420.015, + "99.99989970880377" : 2420.463, + "99.99990569633786" : 2420.479, + "99.99990719322139" : 2421.055, + "99.99990869010492" : 2421.183, + "99.99991018698844" : 2421.407, + "99.99991168387197" : 2421.663, + "99.99991617452255" : 2423.951, + "99.99992066517312" : 2423.967, + "99.99992665270723" : 2424.335, + "99.99992814959076" : 2424.431, + "99.99992964647429" : 2424.815, + "99.99993114335781" : 2424.895, + "99.99993264024134" : 2425.439, + "99.99993413712485" : 2425.455, + "99.99993563400838" : 2425.519, + "99.99993713089191" : 2425.919, + "99.99994012465896" : 2426.095, + "99.99994162154249" : 2426.415, + "99.99994311842602" : 2426.527, + "99.99994461530954" : 2427.119, + "99.99995060284364" : 2427.519, + "99.99995209972717" : 2428.063, + "99.9999535966107" : 2428.591, + "99.99995509349422" : 2428.767, + "99.99995659037775" : 2429.311, + "99.99995808726128" : 2429.647, + "99.9999595841448" : 2429.679, + "99.99996108102833" : 2429.887, + "99.99996257791186" : 2430.207, + "99.99996407479537" : 2430.271, + "99.99996706856243" : 2430.527, + "99.99996856544595" : 2430.815, + "99.99997155921301" : 2430.831, + "99.99997455298006" : 2431.583, + "99.99997604986359" : 2431.775, + "99.99997754674712" : 2432.143, + "99.99997904363063" : 2432.287, + "99.99998054051416" : 2432.911, + "99.99998203739769" : 2433.407, + "99.99998353428121" : 2433.439, + "99.99998503116474" : 2433.535, + "99.99998652804827" : 2433.663, + "99.9999880249318" : 2433.759, + "99.99998952181532" : 2434.463, + "99.99999101869885" : 2434.687, + "99.99999251558238" : 2435.343, + "99.99999401246589" : 2435.439, + "99.99999700623295" : 2435.583, + "100.0" : 2435.711 + }, + "endToEndLatencyAvg" : [ 1547.1443479629543, 1555.6536496156768, 1556.46429279882, 1557.6593165819195, 1544.662990814589, 1586.855993225005, 1547.4322507843733, 1552.5721375162163, 1561.7095663818893, 1546.5088753885775, 1551.4171267652735, 1569.8000130911203, 1556.6344293511181, 1551.952925737284, 1551.9009691067129, 1544.5963678918306, 1542.9836685892492, 1557.3178978984963, 1561.4459174251172, 1554.6456428793906, 1556.5964763908678, 1554.4455490489684, 1554.6298047151818, 1550.9091928390858, 1568.137636736496, 1552.6758846300083, 1561.8188246642405, 1557.954501759818, 1587.0631853396205, 1589.6181394636865, 1609.3864618438208, 1606.2324216386369, 1574.8452563796873, 1545.1254518773112, 1542.6120460348684, 1558.2831246629864, 1587.7545992224732, 1553.9643210472088, 1548.9838504714755, 1563.7539613856604, 1546.9935594391936, 1556.309890894479, 1587.8338037465232, 1602.0025258148448, 1576.4318088833886, 1550.4531241878863, 1567.2449573017593, 1562.960380249266, 1566.834048565064, 1586.7043181572017, 1606.4561560165682, 1614.740439410866, 1581.014689753227, 1573.4710404282011, 1572.7662553727819, 1552.0654181080256, 1545.7358596833062, 1591.0987696260142, 1590.8545720488835, 1593.9935422848087 ], + "endToEndLatency50pct" : [ 1530.007, 1535.007, 1545.007, 1548.007, 1546.007, 1559.007, 1529.007, 1543.007, 1553.007, 1544.007, 1538.007, 1549.007, 1532.007, 1518.007, 1536.007, 1526.007, 1541.007, 1552.007, 1552.007, 1549.007, 1556.007, 1547.007, 1537.007, 1547.007, 1565.007, 1549.007, 1569.007, 1543.007, 1531.007, 1515.007, 1524.007, 1528.007, 1523.007, 1533.007, 1535.007, 1541.007, 1564.007, 1539.007, 1536.007, 1555.007, 1550.007, 1547.007, 1520.007, 1532.007, 1516.007, 1476.007, 1498.007, 1492.007, 1486.007, 1497.007, 1506.007, 1537.007, 1525.007, 1524.007, 1551.007, 1550.007, 1532.007, 1531.007, 1526.007, 1542.007 ], + "endToEndLatency75pct" : [ 1911.007, 1933.007, 1915.007, 1916.007, 1911.007, 1983.007, 1903.007, 1912.007, 1903.007, 1898.007, 1909.007, 1931.007, 1921.007, 1918.007, 1908.007, 1913.007, 1904.007, 1925.007, 1928.007, 1917.007, 1908.007, 1914.007, 1915.007, 1915.007, 1933.007, 1917.007, 1928.007, 1934.007, 1993.007, 2024.007, 2081.007, 2048.007, 1962.007, 1907.007, 1895.007, 1920.007, 1957.007, 1926.007, 1919.007, 1918.007, 1898.007, 1923.007, 1998.007, 2014.007, 1973.007, 1926.007, 1942.007, 1962.007, 1969.007, 2019.007, 2075.007, 2075.007, 1994.007, 1973.007, 1951.007, 1911.007, 1908.007, 1991.007, 1992.007, 2000.007 ], + "endToEndLatency95pct" : [ 2464.015, 2474.015, 2455.007, 2456.015, 2404.015, 2567.007, 2454.015, 2395.007, 2403.007, 2452.015, 2497.007, 2498.015, 2510.015, 2524.015, 2446.015, 2479.007, 2431.007, 2457.007, 2477.007, 2390.015, 2387.007, 2409.007, 2471.007, 2459.007, 2466.015, 2428.015, 2388.015, 2447.007, 2690.015, 2686.015, 2731.007, 2712.015, 2615.007, 2424.015, 2354.015, 2455.007, 2508.015, 2500.015, 2476.015, 2461.007, 2380.015, 2452.015, 2672.015, 2688.015, 2674.015, 2684.015, 2715.007, 2703.007, 2713.007, 2698.015, 2739.007, 2749.007, 2648.015, 2607.007, 2512.015, 2389.007, 2409.007, 2657.007, 2694.015, 2649.007 ], + "endToEndLatency99pct" : [ 2747.007, 2753.007, 2709.007, 2713.007, 2703.007, 2874.015, 2744.015, 2697.007, 2656.015, 2719.007, 2805.007, 2805.007, 2823.007, 2831.007, 2734.015, 2795.007, 2751.007, 2764.015, 2820.015, 2681.007, 2665.007, 2711.007, 2801.007, 2782.015, 2753.007, 2743.007, 2669.007, 2730.015, 3008.015, 2974.015, 2971.007, 2968.015, 2881.007, 2684.015, 2627.007, 2768.015, 2832.015, 2797.007, 2750.015, 2748.015, 2632.015, 2723.007, 3003.007, 2957.007, 2965.007, 3000.015, 3057.007, 3049.007, 3071.007, 2999.007, 3017.007, 3033.007, 2920.015, 2889.007, 2809.007, 2657.007, 2679.007, 2954.015, 3013.007, 2929.007 ], + "endToEndLatency999pct" : [ 2924.015, 2921.007, 2890.015, 2862.015, 2916.015, 3084.015, 2929.007, 2919.007, 2889.007, 2872.015, 3018.015, 3021.007, 3024.015, 3023.007, 2957.007, 3025.007, 2975.007, 3004.015, 3040.015, 2914.015, 2954.015, 2951.007, 3025.007, 3025.007, 2996.015, 2947.007, 2898.015, 2871.007, 3184.015, 3161.007, 3197.007, 3140.015, 3050.015, 2841.007, 2774.015, 3061.007, 3085.007, 3074.015, 2955.007, 2943.007, 2822.015, 2970.015, 3181.007, 3157.007, 3146.015, 3213.007, 3209.007, 3211.007, 3243.007, 3210.015, 3204.015, 3228.015, 3081.007, 3043.007, 3011.007, 2846.015, 2860.015, 3114.015, 3193.007, 3154.015 ], + "endToEndLatency9999pct" : [ 2995.007, 2975.007, 2981.007, 2914.015, 2990.015, 3185.007, 3010.015, 2984.015, 2986.015, 2920.015, 3076.015, 3079.007, 3079.007, 3102.015, 3031.007, 3135.007, 3055.007, 3118.015, 3162.015, 2984.015, 3006.015, 3098.015, 3195.007, 3113.007, 3142.015, 3052.015, 2988.015, 2956.015, 3238.015, 3235.007, 3246.015, 3232.015, 3145.007, 2961.007, 2815.007, 3140.015, 3205.007, 3181.007, 3056.015, 3018.015, 2948.015, 3042.015, 3251.007, 3246.015, 3248.015, 3290.015, 3287.007, 3274.015, 3311.007, 3265.007, 3294.015, 3306.015, 3175.007, 3121.007, 3075.007, 2936.015, 2988.015, 3156.015, 3249.007, 3212.015 ], + "endToEndLatencyMax" : [ 3008.015, 2989.007, 3011.007, 3016.015, 3013.007, 3219.007, 3052.015, 3057.007, 3003.007, 2994.015, 3108.015, 3118.015, 3102.015, 3118.015, 3051.007, 3159.007, 3065.007, 3133.007, 3184.015, 2994.015, 3040.015, 3137.007, 3208.015, 3137.007, 3168.015, 3070.015, 3001.007, 2973.007, 3250.015, 3249.007, 3352.015, 3258.015, 3171.007, 3006.015, 2875.007, 3179.007, 3230.015, 3200.015, 3105.007, 3068.015, 2968.015, 3069.007, 3288.015, 3305.007, 3271.007, 3330.015, 3316.015, 3295.007, 3324.015, 3286.015, 3322.015, 3326.015, 3201.007, 3220.015, 3098.015, 2956.015, 3019.007, 3194.015, 3276.015, 3242.015 ], + "aggregatedEndToEndLatencyQuantiles" : { + "1.1975938722355061E-5" : 155.0, + "0.5045118675489919" : 382.001, + "1.0079833254214794" : 443.001, + "1.5065102175939744" : 489.001, + "2.0088813860963453" : 528.003, + "2.513758519776369" : 563.003, + "3.013183607353041" : 594.003, + "3.5037659611755934" : 621.003, + "4.006644610081325" : 646.003, + "4.5199842414610325" : 670.003, + "5.016367440602226" : 692.003, + "5.514142842619893" : 713.003, + "6.0181726786353105" : 733.003, + "6.516891185827363" : 752.003, + "7.008186108003896" : 770.003, + "7.526597549432521" : 788.003, + "8.014783218518263" : 804.003, + "8.519283110128532" : 820.003, + "9.007872967146152" : 835.003, + "9.515880311809733" : 850.003, + "10.00842073161339" : 864.003, + "10.52288909521768" : 878.003, + "11.017755841118156" : 891.003, + "11.525393428673683" : 904.003, + "12.003716912221563" : 916.003, + "12.539146162574655" : 929.003, + "13.042210438530583" : 941.003, + "13.520095303322758" : 952.003, + "14.010463587240649" : 963.003, + "14.513426067717436" : 974.003, + "15.029014181592267" : 985.003, + "15.512256781970356" : 995.003, + "16.00253524634783" : 1005.003, + "16.503316608984807" : 1015.003, + "17.025864240249668" : 1025.003, + "17.503985629831607" : 1034.003, + "18.044786088701677" : 1044.003, + "18.53734896339044" : 1053.007, + "19.03167230107139" : 1062.007, + "19.53522010555323" : 1071.007, + "20.049908527031544" : 1080.007, + "20.51345070821136" : 1088.007, + "21.036082171047273" : 1097.007, + "21.503196175951032" : 1105.007, + "22.038586504503275" : 1114.007, + "22.520095587751303" : 1122.007, + "23.00723635618352" : 1130.007, + "23.559653475614272" : 1139.007, + "24.051702881930314" : 1147.007, + "24.54880463739485" : 1155.007, + "25.049127920375696" : 1163.007, + "25.551171247555544" : 1171.007, + "26.05850644265833" : 1179.007, + "26.503993399221855" : 1186.007, + "27.018563558305285" : 1194.007, + "27.538175587590825" : 1202.007, + "28.05835946795036" : 1210.007, + "28.516536428582558" : 1217.007, + "29.04372174211765" : 1225.007, + "29.507067817300886" : 1232.007, + "30.037660285402488" : 1240.007, + "30.505425481974275" : 1247.007, + "31.03676045827666" : 1255.007, + "31.503208301588987" : 1262.007, + "32.04155818399799" : 1270.007, + "32.51069462555349" : 1277.007, + "33.05108191453763" : 1285.007, + "33.525360524782045" : 1292.007, + "34.00251785129684" : 1299.007, + "34.54532278291056" : 1307.007, + "35.01802356322829" : 1314.007, + "35.563889844177915" : 1322.007, + "36.038574139346544" : 1329.007, + "36.51127042868726" : 1336.007, + "37.052865790490024" : 1344.007, + "37.52694380376083" : 1351.007, + "38.00072092157124" : 1358.007, + "38.54342555469816" : 1366.007, + "39.017452670229396" : 1373.007, + "39.55732050287146" : 1381.007, + "40.032185934113265" : 1388.007, + "40.508424107331116" : 1395.007, + "41.04894911961057" : 1403.007, + "41.52120080222622" : 1410.007, + "42.06416591202035" : 1418.007, + "42.535514908254804" : 1425.007, + "43.00789383521938" : 1432.007, + "43.54804160542908" : 1440.007, + "44.01864509947806" : 1447.007, + "44.560357226683365" : 1455.007, + "45.03517325717794" : 1462.007, + "45.51042940342056" : 1469.007, + "46.05434360635844" : 1477.007, + "46.52925694135513" : 1484.007, + "47.00130203902782" : 1491.007, + "47.53981359660958" : 1499.007, + "48.009593744871395" : 1506.007, + "48.55079539768867" : 1514.007, + "49.02351264492214" : 1521.007, + "49.5597652410624" : 1529.007, + "50.02765468799843" : 1536.007, + "50.29855341588278" : 1540.007, + "50.56609139596317" : 1544.007, + "50.76618088915926" : 1547.007, + "51.0334718655035" : 1551.007, + "51.29955476902913" : 1555.007, + "51.56564815150114" : 1559.007, + "51.76867474366888" : 1562.007, + "52.03531602533744" : 1566.007, + "52.30159653185198" : 1570.007, + "52.50242254527949" : 1573.007, + "52.7710682996917" : 1577.007, + "53.03567367177745" : 1581.007, + "53.29985240104622" : 1585.007, + "53.563885922057985" : 1589.007, + "53.760447004308" : 1592.007, + "54.02491465309845" : 1596.007, + "54.288439196714506" : 1600.007, + "54.55054459159197" : 1604.007, + "54.81049132351473" : 1608.007, + "55.00757485609151" : 1611.007, + "55.267310512094284" : 1615.007, + "55.52718688537705" : 1619.007, + "55.784721962639594" : 1623.007, + "56.043209127030565" : 1627.007, + "56.30095228622841" : 1631.007, + "56.55783467483059" : 1635.007, + "56.75145865810894" : 1638.007, + "57.00891439477745" : 1642.007, + "57.26444050831932" : 1646.007, + "57.523863292922975" : 1650.007, + "57.7818399829259" : 1654.007, + "58.03756968742605" : 1658.007, + "58.294378723403554" : 1662.007, + "58.55049614891984" : 1666.007, + "58.80773332470667" : 1670.007, + "59.00169712524627" : 1673.007, + "59.258446281530155" : 1677.007, + "59.513801737945236" : 1681.007, + "59.7707544851874" : 1685.007, + "60.02605754687057" : 1689.007, + "60.28252826257916" : 1693.007, + "60.53997801127831" : 1697.007, + "60.7952077203368" : 1701.007, + "61.05460056509365" : 1705.007, + "61.31070900865589" : 1709.007, + "61.50212043725529" : 1712.007, + "61.75780223800056" : 1716.007, + "62.01284632000885" : 1720.007, + "62.26707005021466" : 1724.007, + "62.52050785944182" : 1728.007, + "62.77548607378714" : 1732.007, + "63.02726521550125" : 1736.007, + "63.28187966070789" : 1740.007, + "63.53362886257519" : 1744.007, + "63.78491848779402" : 1748.007, + "64.03805689855312" : 1752.007, + "64.28952316886812" : 1756.007, + "64.54006280092446" : 1760.007, + "64.7913673960667" : 1764.007, + "65.04037710195126" : 1768.007, + "65.28995566492515" : 1772.007, + "65.53952374895265" : 1776.007, + "65.78801848947215" : 1780.007, + "66.03344289870172" : 1784.007, + "66.2767879855706" : 1788.007, + "66.5222842504325" : 1792.007, + "66.76748111682635" : 1796.007, + "67.01330073203374" : 1800.007, + "67.25809939846506" : 1804.007, + "67.50122742144461" : 1808.007, + "67.80596266719664" : 1813.007, + "68.04903230747492" : 1817.007, + "68.28932203297727" : 1821.007, + "68.52960427351792" : 1825.007, + "68.76753174510729" : 1829.007, + "69.00860140361894" : 1833.007, + "69.30755376796041" : 1838.007, + "69.54693182512752" : 1842.007, + "69.77952401601608" : 1846.007, + "70.01703232975017" : 1850.007, + "70.25299275340438" : 1854.007, + "70.54399010044953" : 1859.007, + "70.77597750643261" : 1863.007, + "71.00528679311891" : 1867.007, + "71.28926025210339" : 1872.007, + "71.51585848566141" : 1876.007, + "71.79942775671401" : 1881.007, + "72.02376253785351" : 1885.007, + "72.3026911326512" : 1890.007, + "72.52450497868963" : 1894.007, + "72.80402787944642" : 1899.007, + "73.02770548094854" : 1903.007, + "73.25245343197395" : 1907.007, + "73.5311799328057" : 1912.007, + "73.75327671039646" : 1916.007, + "74.02677122299887" : 1921.007, + "74.29718043438795" : 1926.007, + "74.51409312750427" : 1930.007, + "74.78602777408811" : 1935.007, + "75.00107222076373" : 1939.007, + "75.15982526446727" : 1942.007, + "75.266286868732" : 1944.007, + "75.42507284626701" : 1947.007, + "75.52965123416764" : 1949.007, + "75.63423710702996" : 1951.007, + "75.79066532162904" : 1954.007, + "75.89600118765384" : 1956.007, + "76.0012232822608" : 1958.007, + "76.1576455088905" : 1961.007, + "76.26268946140895" : 1963.007, + "76.41780481372558" : 1966.007, + "76.52070507321272" : 1968.007, + "76.67503749853537" : 1971.007, + "76.77683896564476" : 1973.007, + "76.87757457420786" : 1975.007, + "77.02798787358361" : 1978.007, + "77.12662619587795" : 1980.007, + "77.27815625153956" : 1983.007, + "77.37617332201268" : 1985.007, + "77.52410161410354" : 1988.007, + "77.67050147701498" : 1991.007, + "77.76828801066769" : 1993.007, + "77.91296034441842" : 1996.007, + "78.00886665569172" : 1998.007, + "78.15235786248596" : 2001.007, + "78.2939583679544" : 2004.007, + "78.38841409364996" : 2006.007, + "78.52726163020459" : 2009.007, + "78.66550887283078" : 2012.007, + "78.75794066488226" : 2014.007, + "78.89590796994081" : 2017.007, + "79.03486328994396" : 2020.007, + "79.12578311973174" : 2022.007, + "79.26067410553098" : 2025.007, + "79.39457557939329" : 2028.007, + "79.52717766390423" : 2031.007, + "79.66026327694108" : 2034.007, + "79.7910405277892" : 2037.007, + "79.87877625486918" : 2039.007, + "80.00994422071811" : 2042.007, + "80.14171098350316" : 2045.007, + "80.27216338701344" : 2048.007, + "80.4035259618666" : 2051.007, + "80.53375231953349" : 2054.007, + "80.66171073380484" : 2057.007, + "80.7906691389595" : 2060.007, + "80.87660548124643" : 2062.007, + "81.0014366785189" : 2065.007, + "81.12723792682789" : 2068.007, + "81.2518999639659" : 2071.007, + "81.37638535600776" : 2074.007, + "81.5404961352972" : 2078.007, + "81.66227945616484" : 2081.007, + "81.78337116657126" : 2084.007, + "81.90466646793594" : 2087.007, + "82.02448872883778" : 2090.007, + "82.14552055955059" : 2093.007, + "82.26668861656636" : 2096.007, + "82.38679081503584" : 2099.007, + "82.50615948725857" : 2102.015, + "82.66374637392902" : 2106.015, + "82.78226176051778" : 2109.007, + "82.89879662624034" : 2112.015, + "83.01507999724973" : 2115.007, + "83.13096217431192" : 2118.015, + "83.28496376432736" : 2122.015, + "83.3992097287616" : 2125.007, + "83.51246019328956" : 2128.015, + "83.62534688867882" : 2131.007, + "83.7752631865976" : 2135.007, + "83.88723521966693" : 2138.015, + "84.03506770424802" : 2142.015, + "84.14712057490374" : 2145.007, + "84.25889799896885" : 2148.015, + "84.40705083991075" : 2152.015, + "84.51575493870124" : 2155.007, + "84.62503388255038" : 2158.015, + "84.76971519825516" : 2162.015, + "84.87982347586083" : 2165.007, + "85.02431317654604" : 2169.007, + "85.1299334711155" : 2172.015, + "85.27088877288529" : 2176.015, + "85.3768189448692" : 2179.007, + "85.51693742792075" : 2183.007, + "85.65694513353912" : 2187.007, + "85.76018371329519" : 2190.015, + "85.89800880408141" : 2194.015, + "86.0006725387788" : 2197.007, + "86.13861439496756" : 2201.007, + "86.27387214389019" : 2205.007, + "86.37537720651619" : 2208.015, + "86.50772480232928" : 2212.015, + "86.64144364312607" : 2216.015, + "86.77598433271768" : 2220.015, + "86.87574989024426" : 2223.007, + "87.00872622284028" : 2227.007, + "87.14080885100913" : 2231.007, + "87.2729259100018" : 2235.007, + "87.40256694366364" : 2239.007, + "87.53179480743955" : 2243.007, + "87.56445468932776" : 2244.015, + "87.62987774557564" : 2246.015, + "87.6950358341793" : 2248.015, + "87.75930770331749" : 2250.015, + "87.82484902196026" : 2252.015, + "87.8888214926304" : 2254.015, + "87.95297659636606" : 2256.015, + "88.01559728295291" : 2258.015, + "88.07924340929287" : 2260.015, + "88.1428775596941" : 2262.015, + "88.20677218676255" : 2264.015, + "88.26937341244899" : 2266.015, + "88.33300456886553" : 2268.015, + "88.39586028324982" : 2270.015, + "88.45908575474215" : 2272.015, + "88.52189356537154" : 2274.015, + "88.58505167220856" : 2276.015, + "88.64720230320056" : 2278.015, + "88.70882000491942" : 2280.015, + "88.76931945336007" : 2282.015, + "88.82930693042034" : 2284.015, + "88.88862674889685" : 2286.015, + "88.94868458459713" : 2288.015, + "89.00820200606255" : 2290.015, + "89.06823289590069" : 2292.015, + "89.12680421820706" : 2294.015, + "89.2155608940631" : 2297.007, + "89.27369958558312" : 2299.007, + "89.33137570646998" : 2301.007, + "89.39007726710994" : 2303.007, + "89.44879080368864" : 2305.007, + "89.50738607787244" : 2307.007, + "89.56613554226729" : 2309.007, + "89.6537949227379" : 2312.015, + "89.70994261444532" : 2314.015, + "89.7677789135126" : 2316.015, + "89.82505084646758" : 2318.015, + "89.88145751784988" : 2320.015, + "89.96570225879228" : 2323.007, + "90.02134696107336" : 2325.007, + "90.07862338500537" : 2327.007, + "90.13458694665493" : 2329.007, + "90.1905729631896" : 2331.007, + "90.27272640583261" : 2334.015, + "90.32917798698512" : 2336.015, + "90.3850158012781" : 2338.015, + "90.44039852989962" : 2340.015, + "90.5233304085596" : 2343.007, + "90.57850056426881" : 2345.007, + "90.6341452665499" : 2347.007, + "90.68908338844635" : 2349.007, + "90.77076677549452" : 2352.015, + "90.82523933277315" : 2354.015, + "90.87940201263734" : 2356.015, + "90.96076803730936" : 2359.007, + "91.01416425709532" : 2361.007, + "91.06713533105663" : 2363.007, + "91.14529629512809" : 2366.015, + "91.19865209612087" : 2368.015, + "91.25134023852986" : 2370.015, + "91.32936497629835" : 2373.007, + "91.38174174430057" : 2375.007, + "91.46005240760604" : 2378.015, + "91.51174954108578" : 2380.015, + "91.58822638877439" : 2383.007, + "91.63946095162096" : 2385.007, + "91.690864674602" : 2387.007, + "91.76692386142767" : 2390.015, + "91.8175177115526" : 2392.015, + "91.89369815475784" : 2395.007, + "91.94439529735425" : 2397.007, + "92.01912365798941" : 2400.015, + "92.0679405782064" : 2402.015, + "92.14149829083145" : 2405.007, + "92.1911864605905" : 2407.007, + "92.26471573036108" : 2410.015, + "92.31260301833476" : 2412.015, + "92.38447960856165" : 2415.007, + "92.45513914401589" : 2418.015, + "92.50219859522538" : 2420.015, + "92.57339704792213" : 2423.007, + "92.64415688186315" : 2426.015, + "92.69196632623515" : 2428.015, + "92.76369321722801" : 2431.007, + "92.83407580909929" : 2434.015, + "92.8799137145591" : 2436.015, + "92.9484355449514" : 2439.007, + "93.01695887233603" : 2442.015, + "93.08404059609695" : 2445.007, + "93.12872881143943" : 2447.007, + "93.19615933441565" : 2450.015, + "93.26218867256135" : 2453.007, + "93.32824795055386" : 2456.015, + "93.3940482488715" : 2459.007, + "93.45863448640117" : 2462.015, + "93.50119098465105" : 2464.015, + "93.56491495459271" : 2467.007, + "93.62871976212074" : 2470.015, + "93.69319372522487" : 2473.007, + "93.75616321102702" : 2476.015, + "93.79891132429645" : 2478.015, + "93.8199665215627" : 2479.007, + "93.86197661760838" : 2481.007, + "93.88277882316912" : 2482.015, + "93.92494610341052" : 2484.015, + "93.94619141870398" : 2485.007, + "93.98853983501857" : 2487.007, + "94.00904563609592" : 2488.015, + "94.05068148405653" : 2490.015, + "94.07188488356446" : 2491.007, + "94.1140865946297" : 2493.007, + "94.13475107689513" : 2494.015, + "94.1760066888013" : 2496.015, + "94.1964511131927" : 2497.007, + "94.23720223868018" : 2499.007, + "94.257375707458" : 2500.015, + "94.29782593748509" : 2502.015, + "94.31808174084162" : 2503.007, + "94.35819814157682" : 2505.007, + "94.3779359855836" : 2506.015, + "94.41722155556995" : 2508.015, + "94.45695023528903" : 2510.015, + "94.47693508303195" : 2511.007, + "94.51637184924466" : 2513.007, + "94.53585819853828" : 2514.015, + "94.57413778967195" : 2516.015, + "94.61304012961918" : 2518.015, + "94.63258037063704" : 2519.007, + "94.67091984146433" : 2521.007, + "94.69009631334349" : 2522.015, + "94.72835943756141" : 2524.015, + "94.76680220086017" : 2526.015, + "94.78603106747126" : 2527.007, + "94.82476424728404" : 2529.007, + "94.84387185751555" : 2530.015, + "94.88187899604328" : 2532.015, + "94.91919003313278" : 2534.015, + "94.9376659125967" : 2535.007, + "94.97505329629554" : 2537.007, + "95.01278199424799" : 2539.007, + "95.0318372097476" : 2540.015, + "95.0699955445017" : 2542.015, + "95.10817184316389" : 2544.015, + "95.12707286845244" : 2545.007, + "95.16429408600152" : 2547.007, + "95.20180572006461" : 2549.007, + "95.22065135663658" : 2550.015, + "95.25807466815161" : 2552.015, + "95.29467762786415" : 2554.015, + "95.3133226674625" : 2555.007, + "95.35019209181162" : 2557.007, + "95.38663786732843" : 2559.007, + "95.4232977127499" : 2561.007, + "95.44145024186831" : 2562.015, + "95.47756069110089" : 2564.015, + "95.51257534194038" : 2566.015, + "95.54813938896875" : 2568.015, + "95.56604940532803" : 2569.007, + "95.6011898035241" : 2571.007, + "95.63660864229546" : 2573.007, + "95.6713688044371" : 2575.007, + "95.68879529227047" : 2576.015, + "95.7235479694504" : 2578.015, + "95.75841292105585" : 2580.015, + "95.79333775235492" : 2582.015, + "95.82776109122" : 2584.015, + "95.8450109339572" : 2585.007, + "95.87922768787931" : 2587.007, + "95.913424980901" : 2589.007, + "95.94759532806056" : 2591.007, + "95.98134651736484" : 2593.007, + "96.01472495557638" : 2595.007, + "96.047259090108" : 2597.007, + "96.06388618403165" : 2598.015, + "96.0961284050569" : 2600.015, + "96.12900535083445" : 2602.015, + "96.16166074174564" : 2604.015, + "96.19379967029941" : 2606.015, + "96.22585476728214" : 2608.015, + "96.25824668754143" : 2610.015, + "96.2908496837207" : 2612.015, + "96.32229550482093" : 2614.015, + "96.35406018528963" : 2616.015, + "96.38558085600687" : 2618.015, + "96.41683805607221" : 2620.015, + "96.44790513811034" : 2622.015, + "96.4792446727544" : 2624.015, + "96.51023840216786" : 2626.015, + "96.54045219857203" : 2628.015, + "96.57077527541702" : 2630.015, + "96.60094715603566" : 2632.015, + "96.63157711631042" : 2634.015, + "96.66161875859545" : 2636.015, + "96.69147028285326" : 2638.015, + "96.72149246423787" : 2640.015, + "96.75056555247872" : 2642.015, + "96.79399330027066" : 2645.007, + "96.82259932690134" : 2647.007, + "96.85150924297712" : 2649.007, + "96.87978593129293" : 2651.007, + "96.89420047053763" : 2652.015, + "96.90868836240699" : 2653.007, + "96.92293523850958" : 2654.015, + "96.95146791251558" : 2656.015, + "96.96561748411605" : 2657.007, + "96.97980298353268" : 2658.015, + "96.99400794384974" : 2659.007, + "97.00818895228934" : 2660.015, + "97.02201966452132" : 2661.007, + "97.0358653466767" : 2662.015, + "97.04979935138016" : 2663.007, + "97.06330970725132" : 2664.015, + "97.09038730470256" : 2666.015, + "97.10388269065032" : 2667.007, + "97.11737508261339" : 2668.015, + "97.1311803459756" : 2669.007, + "97.14482543115737" : 2670.015, + "97.15857380881063" : 2671.007, + "97.17224733684688" : 2672.015, + "97.1990300268071" : 2674.015, + "97.2122379902255" : 2675.007, + "97.22547888747542" : 2676.015, + "97.2389533155304" : 2677.007, + "97.25239331276157" : 2678.015, + "97.26563421001147" : 2679.007, + "97.2921833691666" : 2681.007, + "97.3053314528914" : 2682.015, + "97.31813223439325" : 2683.007, + "97.33096445273425" : 2684.015, + "97.35660643453116" : 2686.015, + "97.36912278748837" : 2687.007, + "97.3818262644881" : 2688.015, + "97.39458962118145" : 2689.007, + "97.4076987831054" : 2690.015, + "97.43347399722059" : 2692.015, + "97.44650531554285" : 2693.007, + "97.45955310078087" : 2694.015, + "97.47201705900615" : 2695.007, + "97.48447652625443" : 2696.015, + "97.50942839458246" : 2698.015, + "97.52185343100689" : 2699.007, + "97.53415571405944" : 2700.015, + "97.5583845350871" : 2702.015, + "97.5707781346724" : 2703.007, + "97.58306395080919" : 2704.015, + "97.59518809177324" : 2705.007, + "97.61871182940862" : 2707.007, + "97.63034795086973" : 2708.015, + "97.64233586553081" : 2709.007, + "97.66598085954575" : 2711.007, + "97.67777715918727" : 2712.015, + "97.68961387762198" : 2713.007, + "97.71268702056294" : 2715.007, + "97.72452523598999" : 2716.015, + "97.73641285216426" : 2717.007, + "97.75980036349668" : 2719.007, + "97.77140355112631" : 2720.015, + "97.78286901546062" : 2721.007, + "97.80534785244248" : 2723.007, + "97.81623248374876" : 2724.015, + "97.83795384260644" : 2726.015, + "97.84861691904635" : 2727.007, + "97.86983528847769" : 2729.007, + "97.88077979947758" : 2730.015, + "97.89152071951919" : 2731.007, + "97.91334686784069" : 2733.007, + "97.9240877878823" : 2734.015, + "97.94564447758253" : 2736.015, + "97.95656503670497" : 2737.007, + "97.97831483841712" : 2739.007, + "97.98902731560426" : 2740.015, + "98.00979359334883" : 2742.015, + "98.02001206306367" : 2743.007, + "98.04023642958106" : 2745.007, + "98.05056867071376" : 2746.015, + "98.07114782441579" : 2748.015, + "98.0814276708166" : 2749.007, + "98.10175832379014" : 2751.007, + "98.11224325814155" : 2752.015, + "98.13230744647852" : 2754.015, + "98.14219358389383" : 2755.007, + "98.16184011136785" : 2757.007, + "98.18067526899343" : 2759.007, + "98.19035781545045" : 2760.015, + "98.21013458125809" : 2762.015, + "98.22009856227508" : 2763.007, + "98.23943521233467" : 2765.007, + "98.25866108496106" : 2767.007, + "98.26818944120704" : 2768.015, + "98.28783896266575" : 2770.015, + "98.29759935272446" : 2771.007, + "98.31652432989047" : 2773.007, + "98.33582056115686" : 2775.007, + "98.3452845467322" : 2776.015, + "98.36451491033563" : 2778.015, + "98.3834353965246" : 2780.015, + "98.39273620993485" : 2781.007, + "98.41149352395874" : 2783.007, + "98.42949036587376" : 2785.007, + "98.43831363872745" : 2786.015, + "98.4475246325973" : 2787.007, + "98.45658443024075" : 2788.015, + "98.46534333242381" : 2789.007, + "98.47416510828516" : 2790.015, + "98.48315754127331" : 2791.007, + "98.49209608253722" : 2792.015, + "98.50076965615688" : 2793.007, + "98.5095270613476" : 2794.015, + "98.51798506807026" : 2795.007, + "98.5263637341989" : 2796.015, + "98.53487114166879" : 2797.007, + "98.54337854913868" : 2798.015, + "98.55176020925198" : 2799.007, + "98.56021372499762" : 2800.015, + "98.56864478585817" : 2801.007, + "98.57739470608719" : 2802.015, + "98.58604881880643" : 2803.007, + "98.5945068255291" : 2804.015, + "98.60301423299899" : 2805.007, + "98.61156954422377" : 2806.015, + "98.6199931201226" : 2807.007, + "98.62841969000613" : 2808.015, + "98.63679985312709" : 2809.007, + "98.64504678392977" : 2810.015, + "98.65321138015373" : 2811.007, + "98.66142687411727" : 2812.015, + "98.66957200944081" : 2813.007, + "98.67774558761882" : 2814.015, + "98.68584431617981" : 2815.007, + "98.6936496342421" : 2816.015, + "98.70139956358781" : 2817.007, + "98.70903871550033" : 2818.015, + "98.71665092155072" : 2819.007, + "98.72418827798411" : 2820.015, + "98.73156096526006" : 2821.007, + "98.73931688257512" : 2822.015, + "98.74716860739997" : 2823.007, + "98.75480626232016" : 2824.015, + "98.76240798942416" : 2825.007, + "98.77010402704562" : 2826.015, + "98.77763539550965" : 2827.007, + "98.7852610744911" : 2828.015, + "98.79282387979427" : 2829.007, + "98.8003447693119" : 2830.015, + "98.80785218589848" : 2831.007, + "98.81525631001358" : 2832.015, + "98.82252420782571" : 2833.007, + "98.82993881088719" : 2834.015, + "98.83718125982953" : 2835.007, + "98.84450155237357" : 2836.015, + "98.85172154643081" : 2837.007, + "98.86619446837678" : 2839.007, + "98.87375128571058" : 2840.015, + "98.88093385495931" : 2841.007, + "98.88829905727357" : 2842.015, + "98.89558491899378" : 2843.007, + "98.9025998251004" : 2844.015, + "98.90963119812275" : 2845.007, + "98.9168212523332" : 2846.015, + "98.92369993213684" : 2847.007, + "98.93060555780262" : 2848.015, + "98.94411591367378" : 2850.015, + "98.95080148146553" : 2851.007, + "98.957569383836" : 2852.015, + "98.96425195764309" : 2853.007, + "98.97094501039653" : 2854.015, + "98.97780123531508" : 2855.007, + "98.98454967678514" : 2856.015, + "98.99790284846055" : 2858.015, + "99.00404201404811" : 2859.007, + "99.01031890293096" : 2860.015, + "99.01673052112444" : 2861.007, + "99.02353734529576" : 2862.015, + "99.03653722677888" : 2864.015, + "99.04289645024045" : 2865.007, + "99.04933501429605" : 2866.015, + "99.05566130392613" : 2867.007, + "99.0680683764425" : 2869.007, + "99.07423448789217" : 2870.015, + "99.08040209633418" : 2871.007, + "99.0866370694315" : 2872.015, + "99.09913845246531" : 2874.015, + "99.10539288646305" : 2875.007, + "99.11168624226165" : 2876.015, + "99.11803199279215" : 2877.007, + "99.1305573277034" : 2879.007, + "99.1365123632331" : 2880.015, + "99.14256021228789" : 2881.007, + "99.14860357036565" : 2882.015, + "99.16051663540972" : 2884.015, + "99.16638035440666" : 2885.007, + "99.17231293505124" : 2886.015, + "99.18410025273872" : 2888.015, + "99.18992055895778" : 2889.007, + "99.19583816967896" : 2890.015, + "99.20700872652223" : 2892.015, + "99.21273771620855" : 2893.007, + "99.22474658876239" : 2895.007, + "99.23064922956017" : 2896.015, + "99.23622402903543" : 2897.007, + "99.24186769015833" : 2898.015, + "99.24748889639613" : 2899.007, + "99.25303824700161" : 2900.015, + "99.25861604046155" : 2901.007, + "99.26423425271467" : 2902.015, + "99.26967132889462" : 2903.007, + "99.27507696823542" : 2904.015, + "99.2802625497022" : 2905.007, + "99.28539423944473" : 2906.015, + "99.29065467052853" : 2907.007, + "99.29578636027105" : 2908.015, + "99.30056775380595" : 2909.007, + "99.30542848793489" : 2910.015, + "99.31032514988" : 2911.007, + "99.31503468778256" : 2912.015, + "99.31983404522555" : 2913.007, + "99.32456304402854" : 2914.015, + "99.32932647365536" : 2915.007, + "99.33417074086854" : 2916.015, + "99.33892967951834" : 2917.007, + "99.34381137154004" : 2918.015, + "99.34873947032429" : 2919.007, + "99.35357176159876" : 2920.015, + "99.35836363408005" : 2921.007, + "99.36307616596729" : 2922.015, + "99.36795336701196" : 2923.007, + "99.37284404098772" : 2924.015, + "99.37744878942645" : 2925.007, + "99.38216581229072" : 2926.015, + "99.38674511185968" : 2927.007, + "99.3912226159495" : 2928.015, + "99.3956028155372" : 2929.007, + "99.40026295269254" : 2930.015, + "99.40485572519256" : 2931.007, + "99.40954580219471" : 2932.015, + "99.41415803559515" : 2933.007, + "99.41865799457008" : 2934.015, + "99.42328968887095" : 2935.007, + "99.4277162952212" : 2936.015, + "99.43228661283612" : 2937.007, + "99.43666381843914" : 2938.015, + "99.44091677367791" : 2939.007, + "99.4453299070971" : 2940.015, + "99.44973854953928" : 2941.007, + "99.45406336041039" : 2942.015, + "99.45832080662618" : 2943.007, + "99.46260819268878" : 2944.015, + "99.46683719605011" : 2945.007, + "99.47093596107784" : 2946.015, + "99.47514849752343" : 2947.007, + "99.4793864828388" : 2948.015, + "99.48368434784778" : 2949.007, + "99.48774568806701" : 2950.015, + "99.4915944553739" : 2951.007, + "99.49555250312164" : 2952.015, + "99.49969168694255" : 2953.007, + "99.50366021363668" : 2954.015, + "99.50758083657591" : 2955.007, + "99.51146104072195" : 2956.015, + "99.51523196442714" : 2957.007, + "99.51882175205918" : 2958.015, + "99.52241453367589" : 2959.007, + "99.52610312280237" : 2960.015, + "99.52978871794417" : 2961.007, + "99.53354616871832" : 2962.015, + "99.53719883002863" : 2963.007, + "99.54093981388702" : 2964.015, + "99.54477510826285" : 2965.007, + "99.54843076355786" : 2966.015, + "99.55206695795243" : 2967.007, + "99.55566872152318" : 2968.015, + "99.55920312043862" : 2969.007, + "99.5626462028213" : 2970.015, + "99.57008475776021" : 2972.015, + "99.57381077169521" : 2973.007, + "99.57748139691361" : 2974.015, + "99.58112807025456" : 2975.007, + "99.58480618043467" : 2976.015, + "99.58852021843094" : 2977.007, + "99.59226569326636" : 2978.015, + "99.59593931246944" : 2979.007, + "99.59958149483337" : 2980.015, + "99.60330750876837" : 2981.007, + "99.60696466105571" : 2982.015, + "99.61053049681028" : 2983.007, + "99.6142385468372" : 2984.015, + "99.61778043071433" : 2985.007, + "99.6211561484417" : 2986.015, + "99.62440462182013" : 2987.007, + "99.62767105910666" : 2988.015, + "99.63101533999487" : 2989.007, + "99.63448686523202" : 2990.015, + "99.63770090778664" : 2991.007, + "99.64112752325357" : 2992.015, + "99.6442906680686" : 2993.007, + "99.64743884296026" : 2994.015, + "99.65045677951828" : 2995.007, + "99.65345974615292" : 2996.015, + "99.65652708345817" : 2997.007, + "99.65955250497791" : 2998.015, + "99.66255696860489" : 2999.007, + "99.66554945629314" : 3000.015, + "99.66851350112691" : 3001.007, + "99.67136527153518" : 3002.015, + "99.67431434644556" : 3003.007, + "99.67732479804188" : 3004.015, + "99.68020800528929" : 3005.007, + "99.68305229073586" : 3006.015, + "99.685806756642" : 3007.007, + "99.68858517442558" : 3008.015, + "99.69124083883726" : 3009.007, + "99.69400877767447" : 3010.015, + "99.69670036990232" : 3011.007, + "99.6994189079923" : 3012.015, + "99.70230361223204" : 3013.007, + "99.70505658114584" : 3014.015, + "99.707670329772" : 3015.007, + "99.71023916862794" : 3016.015, + "99.71303405332726" : 3017.007, + "99.71560438917555" : 3018.015, + "99.71819717990894" : 3019.007, + "99.72074356387978" : 3020.015, + "99.72323156514935" : 3021.007, + "99.72586627166827" : 3022.015, + "99.72848750525613" : 3023.007, + "99.73105784110442" : 3024.015, + "99.73366859574588" : 3025.007, + "99.7361880338546" : 3026.015, + "99.73856076671397" : 3027.007, + "99.74106074392226" : 3028.015, + "99.74340802791184" : 3029.007, + "99.74572387506228" : 3030.015, + "99.7480576861208" : 3031.007, + "99.75045736484229" : 3032.015, + "99.75284207364038" : 3033.007, + "99.755198339584" : 3034.015, + "99.75750969575742" : 3035.007, + "99.75999470304231" : 3036.015, + "99.76229857425402" : 3037.007, + "99.76454256577212" : 3038.015, + "99.76673266556597" : 3039.007, + "99.76901408189258" : 3040.015, + "99.77133591701238" : 3041.007, + "99.77357541755346" : 3042.015, + "99.77582390004858" : 3043.007, + "99.77804244269689" : 3044.015, + "99.78026098534521" : 3045.007, + "99.78256635354926" : 3046.015, + "99.78474896838141" : 3047.007, + "99.78700044486122" : 3048.015, + "99.78928186118782" : 3049.007, + "99.79157225946847" : 3050.015, + "99.79385367579508" : 3051.007, + "99.79612611016765" : 3052.015, + "99.79838956258617" : 3053.007, + "99.80063205711194" : 3054.015, + "99.80284610878323" : 3055.007, + "99.80500626873028" : 3056.015, + "99.80712301589945" : 3057.007, + "99.8093280856167" : 3058.015, + "99.81142836587014" : 3059.007, + "99.81347176041464" : 3060.015, + "99.81544928729616" : 3061.007, + "99.81739837132324" : 3062.015, + "99.81920973205499" : 3063.007, + "99.82116031307439" : 3064.015, + "99.82317077378741" : 3065.007, + "99.82513033676085" : 3066.015, + "99.82709439071132" : 3067.007, + "99.8289806010601" : 3068.015, + "99.8308757933629" : 3069.007, + "99.83276948867338" : 3070.015, + "99.83462875316002" : 3071.007, + "99.83644310787646" : 3072.015, + "99.83831285130948" : 3073.007, + "99.84016163684974" : 3074.015, + "99.84197748855853" : 3075.007, + "99.84370651471157" : 3076.015, + "99.8454130859795" : 3077.007, + "99.8471780399487" : 3078.015, + "99.84892503000984" : 3079.007, + "99.85073040277223" : 3080.015, + "99.85239206426995" : 3081.007, + "99.85412258741533" : 3082.015, + "99.8558710744688" : 3083.007, + "99.85746686830355" : 3084.015, + "99.8591554756634" : 3085.007, + "99.86082761610751" : 3086.015, + "99.86255514526822" : 3087.007, + "99.86421980075062" : 3088.015, + "99.86587697127132" : 3089.007, + "99.86758953050862" : 3090.015, + "99.86912993562679" : 3091.007, + "99.87068231668367" : 3092.015, + "99.87223918871757" : 3093.007, + "99.87385743743744" : 3094.015, + "99.87543077638708" : 3095.007, + "99.87699213939801" : 3096.015, + "99.87847715579959" : 3097.007, + "99.87998911806328" : 3098.015, + "99.88149060138059" : 3099.007, + "99.88294268395067" : 3100.015, + "99.88427949811056" : 3101.007, + "99.88568816790279" : 3102.015, + "99.88711629859542" : 3103.007, + "99.88854293229572" : 3104.015, + "99.88986627352455" : 3105.007, + "99.89120308768443" : 3106.015, + "99.89237373569453" : 3107.007, + "99.89362372429868" : 3108.015, + "99.89493808357346" : 3109.007, + "99.89632280148824" : 3110.015, + "99.89763416677833" : 3111.007, + "99.89894702906076" : 3112.015, + "99.90017605977215" : 3113.007, + "99.90143802431501" : 3114.015, + "99.90263861217193" : 3115.007, + "99.90388111581437" : 3116.015, + "99.90516703223469" : 3117.007, + "99.90638857798437" : 3118.015, + "99.90763257861916" : 3119.007, + "99.90883915444543" : 3120.015, + "99.9100861490649" : 3121.007, + "99.91137955044691" : 3122.015, + "99.9126609758902" : 3123.007, + "99.913834617885" : 3124.015, + "99.91500227191042" : 3125.007, + "99.91620285976734" : 3126.015, + "99.91726273034428" : 3127.007, + "99.91838098362247" : 3128.015, + "99.91949474592364" : 3129.007, + "99.92065341799504" : 3130.015, + "99.92183454495152" : 3131.007, + "99.92302016288504" : 3132.015, + "99.92417883495644" : 3133.007, + "99.92533151905846" : 3134.015, + "99.926451269329" : 3135.007, + "99.9275770075689" : 3136.015, + "99.92869975182411" : 3137.007, + "99.92972519157722" : 3138.015, + "99.9307760802001" : 3139.007, + "99.93190331543235" : 3140.015, + "99.9330305506646" : 3141.007, + "99.93409042124152" : 3142.015, + "99.93504550235463" : 3143.007, + "99.93591974588136" : 3144.015, + "99.93678650444639" : 3145.007, + "99.93769218481226" : 3146.015, + "99.93869217569558" : 3147.007, + "99.93963827485464" : 3148.015, + "99.9406023379218" : 3149.007, + "99.94155292805789" : 3150.015, + "99.9423852557991" : 3151.007, + "99.94327896022625" : 3152.015, + "99.9441951195385" : 3153.007, + "99.94510828486608" : 3154.015, + "99.94601396523197" : 3155.007, + "99.94693461552124" : 3156.015, + "99.9478208349867" : 3157.007, + "99.9486681326513" : 3158.015, + "99.94951543031591" : 3159.007, + "99.9503432670801" : 3160.015, + "99.95109625422727" : 3161.007, + "99.95181331355826" : 3162.015, + "99.95256630070543" : 3163.007, + "99.95335222168409" : 3164.015, + "99.95414562762444" : 3165.007, + "99.95495100950352" : 3166.015, + "99.95573094251282" : 3167.007, + "99.95644051688211" : 3168.015, + "99.95720248598333" : 3169.007, + "99.95790607238327" : 3170.015, + "99.95864109562234" : 3171.007, + "99.95937611886143" : 3172.015, + "99.96012311803923" : 3173.007, + "99.96085963827066" : 3174.015, + "99.96155274572422" : 3175.007, + "99.96223986520842" : 3176.015, + "99.96293896063133" : 3177.007, + "99.96368895379382" : 3178.015, + "99.9643640973393" : 3179.007, + "99.96497487021414" : 3180.015, + "99.96562905586684" : 3181.007, + "99.96623833174934" : 3182.015, + "99.9668386256778" : 3183.007, + "99.96739999780542" : 3184.015, + "99.96792843610153" : 3185.007, + "99.96845687439766" : 3186.015, + "99.96902273750229" : 3187.007, + "99.96956015775245" : 3188.015, + "99.9700077584622" : 3189.007, + "99.97049128698812" : 3190.015, + "99.97098529446042" : 3191.007, + "99.97152870267995" : 3192.015, + "99.97205564398372" : 3193.007, + "99.9725676153641" : 3194.015, + "99.97312299952236" : 3195.007, + "99.97369035961933" : 3196.015, + "99.97426969565502" : 3197.007, + "99.97478017004306" : 3198.015, + "99.97534902713237" : 3199.007, + "99.97583554964297" : 3200.015, + "99.97636698192377" : 3201.007, + "99.97682955255692" : 3202.015, + "99.97729960815178" : 3203.007, + "99.97776816675429" : 3204.015, + "99.97825618625723" : 3205.007, + "99.97874869673718" : 3206.015, + "99.97920527940097" : 3207.007, + "99.97966785003412" : 3208.015, + "99.98011395375153" : 3209.007, + "99.98053161461448" : 3210.015, + "99.98097173036251" : 3211.007, + "99.98145525888843" : 3212.015, + "99.98192531448329" : 3213.007, + "99.9823938730858" : 3214.015, + "99.98282201289513" : 3215.007, + "99.98322320684233" : 3216.015, + "99.98361841282016" : 3217.007, + "99.9840360736831" : 3218.015, + "99.98449115935455" : 3219.007, + "99.98492678412558" : 3220.015, + "99.98531600213406" : 3221.007, + "99.98571719608125" : 3222.015, + "99.98610192311271" : 3223.007, + "99.98648365615948" : 3224.015, + "99.98679652755861" : 3225.007, + "99.9871198779041" : 3226.015, + "99.98740280945643" : 3227.007, + "99.98776059062575" : 3228.015, + "99.98814382066487" : 3229.007, + "99.98853303867334" : 3230.015, + "99.98887135894225" : 3231.007, + "99.98924860101201" : 3232.015, + "99.98956296940347" : 3233.007, + "99.98987733779492" : 3234.015, + "99.99014829340852" : 3235.007, + "99.99048062570807" : 3236.015, + "99.99079948507655" : 3237.007, + "99.9911213384297" : 3238.015, + "99.99142073689778" : 3239.007, + "99.99174558423562" : 3240.015, + "99.99203749774198" : 3241.007, + "99.9923099503479" : 3242.015, + "99.99257940896916" : 3243.007, + "99.99283988563637" : 3244.015, + "99.9930973683189" : 3245.007, + "99.99334886303207" : 3246.015, + "99.99359287278354" : 3247.007, + "99.99381592464225" : 3248.015, + "99.99403298853159" : 3249.007, + "99.99425753738264" : 3250.015, + "99.99444466142516" : 3251.007, + "99.99466172531451" : 3252.015, + "99.99484585537236" : 3253.007, + "99.99502100347618" : 3254.015, + "99.99521710947276" : 3255.007, + "99.99538626960721" : 3256.015, + "99.99557039966507" : 3257.007, + "99.99572458987612" : 3258.015, + "99.99585782219441" : 3259.007, + "99.99598207255865" : 3260.015, + "99.9960988379612" : 3261.007, + "99.9962440462182" : 3262.015, + "99.99633386575861" : 3263.007, + "99.99641919432202" : 3264.015, + "99.99651350483946" : 3265.007, + "99.99663625821135" : 3266.015, + "99.99673805369049" : 3267.007, + "99.99685182510837" : 3268.015, + "99.9969760754726" : 3269.007, + "99.9970688889977" : 3270.015, + "99.99713924763769" : 3271.007, + "99.99720511530067" : 3272.015, + "99.99727397694832" : 3273.007, + "99.99736679047342" : 3274.015, + "99.99744613106746" : 3275.007, + "99.99752996263851" : 3276.015, + "99.99761229721723" : 3277.007, + "99.99768115886488" : 3278.015, + "99.99777397238998" : 3279.007, + "99.99783984005296" : 3280.015, + "99.99790570771593" : 3281.007, + "99.99797606635592" : 3282.015, + "99.99803295206485" : 3283.007, + "99.99810031672017" : 3284.015, + "99.99817516633718" : 3285.007, + "99.99825899790824" : 3286.015, + "99.9983323505329" : 3287.007, + "99.99839971518823" : 3288.015, + "99.99844163097376" : 3289.007, + "99.99848803773631" : 3290.015, + "99.99853893547588" : 3291.007, + "99.9986107911082" : 3292.015, + "99.9986661798248" : 3293.007, + "99.99870959260267" : 3294.015, + "99.9987589933499" : 3295.007, + "99.99881737605116" : 3296.015, + "99.99887875273711" : 3297.007, + "99.99893563844606" : 3298.015, + "99.99896857227753" : 3299.007, + "99.99901647603242" : 3300.015, + "99.99905839181795" : 3301.007, + "99.99908833166477" : 3302.015, + "99.99911078654986" : 3303.007, + "99.99915569632007" : 3304.015, + "99.99920060609028" : 3305.007, + "99.99925150382985" : 3306.015, + "99.99928743164602" : 3307.007, + "99.99931587450048" : 3308.015, + "99.99935928727835" : 3309.007, + "99.99940270005622" : 3310.015, + "99.99944162185707" : 3311.007, + "99.99946407674217" : 3312.015, + "99.99950150155068" : 3313.007, + "99.99955239929025" : 3314.015, + "99.99960778800684" : 3315.007, + "99.99965269777705" : 3316.015, + "99.9996916195779" : 3317.007, + "99.99971257747066" : 3318.015, + "99.99974251731747" : 3319.007, + "99.99976197821789" : 3320.015, + "99.99978892408002" : 3321.007, + "99.9998143729498" : 3322.015, + "99.99983682783491" : 3323.007, + "99.99984431279661" : 3324.015, + "99.99985479174299" : 3325.007, + "99.99986077971235" : 3326.015, + "99.99986676768171" : 3329.007, + "99.99987574963576" : 3330.015, + "99.99988024061278" : 3331.007, + "99.99988323459746" : 3332.015, + "99.9998847315898" : 3333.007, + "99.99989371354384" : 3334.015, + "99.99989820452086" : 3335.007, + "99.99990568948256" : 3337.007, + "99.99991317444426" : 3338.015, + "99.99991916241362" : 3339.007, + "99.99992515038298" : 3340.015, + "99.99993862331405" : 3341.007, + "99.99994910226043" : 3342.015, + "99.99995509022979" : 3343.007, + "99.99996407218383" : 3344.015, + "99.99997006015319" : 3345.007, + "99.99997604812256" : 3346.015, + "99.99998652706894" : 3347.007, + "99.99998952105362" : 3348.015, + "99.99999550902298" : 3351.007, + "100.0" : 3352.015 + }, + "aggregatedEndToEndLatencyAvg" : 1565.5565077427962, + "aggregatedEndToEndLatency50pct" : 1536.007, + "aggregatedEndToEndLatency75pct" : 1939.007, + "aggregatedEndToEndLatency95pct" : 2539.007, + "aggregatedEndToEndLatency99pct" : 2859.007, + "aggregatedEndToEndLatency999pct" : 3113.007, + "aggregatedEndToEndLatency9999pct" : 3235.007, + "aggregatedEndToEndLatencyMax" : 3352.015 +} \ No newline at end of file diff --git a/blog/results/rabbitmq/throughput/mirrored.json b/blog/results/rabbitmq/throughput/mirrored.json new file mode 100644 index 00000000..f02c54db --- /dev/null +++ b/blog/results/rabbitmq/throughput/mirrored.json @@ -0,0 +1,2795 @@ +{ + "workload" : "100-partitions-1000K-rate-4-producer", + "driver" : "RabbitMQ", + "publishRate" : [ 38806.905153275446, 37590.5349984129, 38092.49336280616, 38628.72495444629, 38068.51661870986, 38442.39844915135, 38372.20833488729, 38179.4606602778, 38248.32979034836, 38472.045270700015, 38634.770430334625, 38420.255888762935, 38324.63329075359, 37693.102907569766, 38241.233055844335, 38532.87307544118, 38454.64221078833, 38321.004209827326, 38141.80935083568, 38175.89409938954, 38480.00167848969, 38537.82011328924, 38723.74978030153, 38561.51499660959, 38510.56231751731, 38127.142480281036, 37734.95749484554, 37234.0700292295, 38206.80941620177, 38342.5522102417, 38137.09648672577, 37985.05022694814, 38530.82538052945, 38941.26302828275, 38535.936026155854, 38407.20526577688, 38585.535826327505, 38280.922907382774, 38111.00226346417, 38183.326021508066, 38401.94652664137, 38423.07474559204, 38173.3252775811, 38259.95177781455, 37982.1949786789, 38419.1552456563, 38294.076957321995, 37775.42294477361, 38223.69750934418, 38385.56649173995, 38146.678130946675, 38193.74617884816, 38631.369712479616, 38391.92561995427, 38376.60008232276, 38222.27755443783, 38114.2200857134, 38075.128901374126, 38243.20482782305, 38495.038553052545 ], + "consumeRate" : [ 38810.380952862324, 37545.33238255552, 38138.09269595271, 38662.03156119702, 38046.21334475562, 38417.71063394626, 38358.23187995356, 38171.828316689905, 38286.31017497095, 38431.69822796934, 38635.662505181645, 38459.111886916704, 38322.15502896835, 37644.240670295156, 38285.93889151452, 38531.98090426555, 38409.95907651753, 38367.662000302065, 38138.63889194717, 38160.83508315395, 38445.425959117085, 38528.9035184504, 38685.30928151614, 38615.58917844796, 38536.81659194849, 38076.20904774872, 37791.93319624813, 37204.24718395022, 38192.93987935794, 38397.44562131993, 38145.12363835408, 37935.10836065786, 38517.45026822373, 38965.34274560796, 38563.480590940206, 38407.30434151502, 38589.59855689385, 38261.00541603658, 38128.83456760051, 38186.59635519535, 38366.08074652216, 38432.290765810496, 38190.072049532915, 38238.45402785718, 38015.68609431913, 38396.46464209962, 38268.50885716261, 37795.13923585563, 38161.57657015714, 38501.272497552694, 38088.519551184516, 38201.573375268636, 38640.582682385124, 38369.88634339047, 38389.48299124223, 38189.774943637625, 38126.11229082755, 38086.125972287446, 38271.5400995961, 38467.30080685512 ], + "backlog" : [ -5783, -5327, -5787, -6123, -5898, -5649, -5508, -5431, -5814, -5407, -5416, -5808, -5783, -5290, -5741, -5732, -5281, -5752, -5720, -5568, -5219, -5129, -4741, -5288, -5553, -5039, -5614, -5313, -5173, -5727, -5808, -5304, -5169, -5412, -5690, -5691, -5732, -5531, -5711, -5744, -5382, -5475, -5644, -5427, -5765, -5536, -5278, -5477, -4850, -6018, -5431, -5510, -5603, -5380, -5510, -5182, -5302, -5413, -5699, -5419 ], + "publishLatencyAvg" : [ 839.6382725331976, 850.3016779881414, 838.3809050794799, 826.5228079372655, 836.9530821525099, 833.9747546729876, 828.9414669833619, 838.4966800697939, 833.5816466605668, 827.830504149014, 828.5838561994751, 836.2054245305898, 834.1886190478654, 847.261748426168, 836.4655209495324, 830.7036082063155, 861.7983462698872, 882.6274312569311, 886.4738232546176, 883.0717290459672, 880.0401545990122, 875.7825157639825, 869.6532366801076, 868.948186368215, 878.0161008078833, 884.8824596974351, 891.9735180015177, 907.8867718307087, 882.6202268731947, 877.8033510125811, 886.7572486318776, 888.814511013779, 876.8443849994729, 865.4647232729374, 875.3411319597807, 878.3023528203911, 875.7578859052129, 882.375277200993, 886.868073811566, 888.1203364587632, 885.5466518561892, 882.8107157168723, 888.1347585509579, 884.4118494724167, 891.8617267831564, 884.5044237489232, 885.34133538163, 894.5434220039602, 884.2632502158017, 881.9798060046606, 888.288530349197, 887.1788388709189, 875.4309315362858, 877.3366339390757, 881.7448710673715, 884.4499086461301, 899.7652185261056, 940.1320185208799, 938.367409456631, 936.304876269878 ], + "publishLatency50pct" : [ 852.939, 871.331, 852.499, 842.691, 846.127, 843.879, 842.407, 853.787, 847.919, 838.927, 841.487, 850.523, 848.751, 863.707, 854.543, 846.435, 862.363, 878.463, 901.199, 881.947, 878.635, 881.819, 877.987, 875.687, 887.183, 900.203, 905.439, 919.563, 878.191, 886.723, 878.215, 891.571, 879.823, 865.791, 870.667, 886.019, 887.003, 891.423, 881.107, 866.231, 872.599, 878.675, 872.859, 875.287, 894.215, 893.611, 886.815, 897.999, 896.911, 870.423, 889.811, 882.455, 877.039, 879.771, 885.143, 896.103, 913.851, 932.647, 932.723, 921.859 ], + "publishLatency75pct" : [ 959.319, 960.623, 962.051, 936.963, 955.435, 957.479, 946.447, 952.923, 949.875, 944.347, 949.219, 955.295, 951.623, 957.363, 952.431, 946.495, 968.019, 983.023, 981.915, 987.455, 981.531, 975.435, 966.331, 958.567, 970.163, 979.775, 986.691, 1000.839, 979.899, 970.779, 986.527, 983.847, 973.615, 956.663, 974.863, 969.847, 974.467, 980.035, 986.323, 993.463, 994.763, 985.823, 995.323, 989.707, 989.419, 989.119, 988.287, 988.331, 972.099, 982.103, 981.563, 981.683, 964.531, 964.875, 969.603, 975.951, 976.107, 1030.043, 1021.319, 1028.843 ], + "publishLatency95pct" : [ 1030.231, 1060.327, 1025.411, 1021.307, 1028.335, 1031.663, 1001.343, 1036.779, 991.943, 1008.507, 1013.987, 1023.147, 1010.511, 1046.175, 1009.171, 1012.099, 1201.607, 1269.151, 1180.167, 1253.591, 1263.087, 1187.767, 1219.055, 1235.343, 1247.919, 1209.543, 1259.295, 1297.439, 1275.279, 1253.527, 1280.743, 1267.335, 1244.855, 1234.959, 1264.295, 1246.567, 1238.023, 1254.407, 1268.039, 1275.967, 1288.855, 1270.319, 1274.207, 1284.935, 1274.943, 1233.351, 1269.159, 1287.743, 1276.671, 1290.039, 1281.111, 1282.887, 1250.143, 1253.783, 1268.247, 1254.687, 1285.967, 1376.047, 1354.407, 1375.135 ], + "publishLatency99pct" : [ 1065.359, 1113.351, 1058.903, 1060.455, 1076.311, 1060.407, 1026.727, 1073.791, 1018.559, 1045.035, 1047.615, 1052.527, 1036.459, 1104.583, 1043.479, 1043.587, 1400.743, 1352.439, 1347.735, 1333.455, 1358.175, 1324.239, 1285.311, 1319.863, 1355.703, 1316.535, 1350.799, 1409.383, 1395.039, 1372.231, 1358.703, 1365.391, 1335.455, 1329.735, 1362.415, 1377.975, 1301.031, 1328.103, 1366.975, 1421.311, 1377.599, 1352.967, 1344.207, 1369.127, 1372.863, 1326.879, 1353.711, 1370.423, 1388.927, 1419.663, 1354.871, 1395.623, 1347.895, 1395.479, 1416.063, 1356.919, 1421.135, 1479.247, 1465.791, 1467.799 ], + "publishLatency999pct" : [ 1183.911, 1144.191, 1085.263, 1157.095, 1174.559, 1181.095, 1103.791, 1120.127, 1151.639, 1155.199, 1126.599, 1133.247, 1081.615, 1262.455, 1144.143, 1115.119, 1484.223, 1462.863, 1438.855, 1423.879, 1443.175, 1401.983, 1406.927, 1375.727, 1400.479, 1390.087, 1439.815, 1475.215, 1478.927, 1422.247, 1456.207, 1461.991, 1418.639, 1398.495, 1423.255, 1422.063, 1396.719, 1427.495, 1445.743, 1494.855, 1476.351, 1441.255, 1432.783, 1437.167, 1448.799, 1398.303, 1441.847, 1463.311, 1457.215, 1495.871, 1455.831, 1454.799, 1450.063, 1439.031, 1451.255, 1416.335, 1484.919, 1519.295, 1503.895, 1529.711 ], + "publishLatency9999pct" : [ 1200.463, 1236.215, 1123.087, 1183.087, 1196.655, 1203.135, 1142.111, 1197.279, 1172.831, 1198.031, 1194.455, 1173.671, 1184.551, 1277.287, 1159.983, 1151.863, 1505.031, 1475.567, 1472.367, 1454.175, 1461.623, 1425.959, 1423.271, 1408.463, 1414.287, 1457.687, 1462.391, 1503.191, 1513.543, 1436.351, 1480.303, 1518.727, 1469.143, 1427.151, 1444.535, 1434.015, 1409.527, 1440.863, 1471.983, 1515.895, 1488.047, 1460.839, 1459.927, 1464.031, 1461.751, 1464.343, 1452.591, 1497.575, 1502.479, 1510.463, 1497.591, 1498.407, 1500.111, 1468.127, 1466.527, 1439.703, 1621.871, 1640.559, 1560.319, 1543.599 ], + "publishLatencyMax" : [ 1204.855, 1240.031, 1137.647, 1193.919, 1201.143, 1210.879, 1147.191, 1215.119, 1178.807, 1201.415, 1198.383, 1196.343, 1191.567, 1282.431, 1164.031, 1157.239, 1507.863, 1477.575, 1483.527, 1458.783, 1471.535, 1430.863, 1426.159, 1413.495, 1415.895, 1463.015, 1468.719, 1510.255, 1515.687, 1438.583, 1485.471, 1537.751, 1476.735, 1430.047, 1448.359, 1440.799, 1413.903, 1443.727, 1474.199, 1594.887, 1489.991, 1465.607, 1462.695, 1478.727, 1467.919, 1466.127, 1455.855, 1513.519, 1505.879, 1516.207, 1499.583, 1508.807, 1505.655, 1484.503, 1472.703, 1442.463, 1624.463, 1650.487, 1564.927, 1546.903 ], + "aggregatedPublishLatencyAvg" : 872.9138031403544, + "aggregatedPublishLatency50pct" : 873.815, + "aggregatedPublishLatency75pct" : 974.023, + "aggregatedPublishLatency95pct" : 1236.631, + "aggregatedPublishLatency99pct" : 1360.871, + "aggregatedPublishLatency999pct" : 1466.631, + "aggregatedPublishLatency9999pct" : 1512.543, + "aggregatedPublishLatencyMax" : 1650.487, + "aggregatedPublishLatencyQuantiles" : { + "4.3146336105902506E-6" : 388.275, + "0.5000315183985253" : 560.595, + "1.0001104977667672" : 572.579, + "1.5001420161652925" : 580.187, + "2.0003547491754627" : 585.931, + "2.5001877944279007" : 590.663, + "3.000253829895311" : 594.823, + "3.500155909285519" : 598.595, + "4.000040730141284" : 602.207, + "4.500477824099205" : 605.667, + "5.000371274222191" : 609.079, + "5.500243151177125" : 612.427, + "6.000214264705102" : 615.715, + "6.500284614806122" : 618.991, + "7.000147862493835" : 622.319, + "7.500421000374553" : 625.691, + "8.000504294376405" : 629.203, + "8.500095720146652" : 632.835, + "9.000463779966802" : 636.667, + "9.500188959378976" : 640.767, + "10.00035423141943" : 645.055, + "10.500079410831603" : 649.571, + "11.000404324315648" : 654.275, + "11.50018559396476" : 659.067, + "12.000126505057462" : 663.951, + "12.50031766489958" : 668.755, + "13.000306036962" : 673.511, + "13.500221060253038" : 677.979, + "14.000386332293493" : 682.307, + "14.500120140972887" : 686.499, + "15.000345817883888" : 690.567, + "15.500088255830505" : 694.403, + "16.000206066901242" : 698.079, + "16.50047489014835" : 701.551, + "17.000458947577158" : 704.823, + "17.50003742944657" : 707.911, + "18.000478838038102" : 710.843, + "18.500346400359426" : 713.663, + "19.00009315293965" : 716.359, + "19.500482785927858" : 718.971, + "20.000734350640524" : 721.551, + "20.500291259341882" : 724.067, + "21.000434958214285" : 726.559, + "21.500595915621126" : 729.027, + "22.000627434019652" : 731.463, + "22.500072162247136" : 733.863, + "23.000116624546493" : 736.239, + "23.50065295507746" : 738.587, + "24.000468741795455" : 740.923, + "24.50036650655205" : 743.263, + "25.000026966460066" : 745.591, + "25.50004554095776" : 747.923, + "26.00025827396793" : 750.275, + "26.50046669234449" : 752.675, + "27.000562930247174" : 755.119, + "27.50023201942241" : 757.575, + "28.000621652410615" : 760.055, + "28.500553934236095" : 762.615, + "29.00014536000634" : 765.207, + "29.500746410041465" : 767.847, + "30.00070889430222" : 770.575, + "30.500373668843846" : 773.379, + "31.000629548190123" : 776.303, + "31.500579088550044" : 779.303, + "32.00023091919084" : 782.383, + "32.50063349607988" : 785.551, + "33.00016020234596" : 788.855, + "33.50036862072252" : 792.247, + "34.00027070011273" : 795.687, + "34.500095116097945" : 799.111, + "35.000579671025584" : 802.467, + "35.50018835533027" : 805.775, + "36.00037520053878" : 808.975, + "36.50052321404479" : 812.003, + "37.00046412513749" : 814.887, + "37.50072863375099" : 817.635, + "38.00029848635318" : 820.283, + "38.5003688364542" : 822.867, + "39.00078004261046" : 825.355, + "39.50041892935042" : 827.755, + "40.00043750384811" : 830.075, + "40.50040861737609" : 832.355, + "41.00050054064516" : 834.559, + "41.500872915098924" : 836.739, + "42.00006307994339" : 838.887, + "42.500862603124595" : 840.995, + "43.00063524350649" : 843.079, + "43.50087817895193" : 845.147, + "44.00027976084331" : 847.207, + "44.50085060844316" : 849.291, + "45.000286707403426" : 851.367, + "45.500283708733065" : 853.451, + "46.00017284422244" : 855.539, + "46.50013101384958" : 857.651, + "47.000693232182215" : 859.823, + "47.50053490670187" : 862.039, + "48.000096130036844" : 864.279, + "48.50013627770259" : 866.587, + "49.00014622293306" : 868.975, + "49.50005261695688" : 871.383, + "50.000066876820966" : 873.815, + "50.25003517505051" : 875.055, + "50.500258036663084" : 876.311, + "50.75059739338314" : 877.575, + "51.00063472575045" : 878.847, + "51.2505641922775" : 880.139, + "51.50001041984017" : 881.431, + "51.750259169254406" : 882.727, + "52.00044751379809" : 884.043, + "52.25023459741599" : 885.351, + "52.500056198102776" : 886.655, + "52.75027474508174" : 887.971, + "53.0002085262424" : 889.287, + "53.250237229342495" : 890.607, + "53.50064993483393" : 891.943, + "53.75005301606049" : 893.279, + "54.000016999656424" : 894.623, + "54.25077919047032" : 895.951, + "54.500462722881565" : 897.275, + "54.75041376257667" : 898.595, + "55.00056327541786" : 899.887, + "55.25005696395024" : 901.183, + "55.500159015821716" : 902.463, + "55.7502653823268" : 903.755, + "56.00015601715136" : 905.023, + "56.250404766565595" : 906.287, + "56.500424840398466" : 907.543, + "56.75048806056745" : 908.791, + "57.0006634612103" : 910.023, + "57.25064038870707" : 911.247, + "57.50057848450134" : 912.435, + "57.750335365683966" : 913.627, + "58.000036156629655" : 914.819, + "58.250552413327746" : 916.007, + "58.50043010425147" : 917.175, + "58.750381143946576" : 918.323, + "59.000073305625044" : 919.459, + "59.25056798915508" : 920.595, + "59.50084262637098" : 921.699, + "59.75082818313497" : 922.775, + "60.0002183204607" : 923.843, + "60.250764779594064" : 924.899, + "60.5008107412286" : 925.935, + "60.75046838583818" : 926.971, + "61.00095012546739" : 927.983, + "61.250931367597765" : 928.987, + "61.500675304879564" : 930.007, + "61.75011290317501" : 931.019, + "62.00055581110172" : 932.007, + "62.250977145860375" : 932.979, + "62.50066067827162" : 933.927, + "62.75009396193345" : 934.859, + "63.000312508912415" : 935.779, + "63.250664809533305" : 936.683, + "63.501025739421415" : 937.567, + "63.750899115711526" : 938.443, + "64.00028493840364" : 939.319, + "64.25005907812071" : 940.191, + "64.50032077143578" : 941.051, + "64.75062129645335" : 941.903, + "65.00072766295843" : 942.747, + "65.25031627343024" : 943.583, + "65.50084978866278" : 944.411, + "65.7507706259226" : 945.239, + "66.00027294372221" : 946.043, + "66.25084097602362" : 946.855, + "66.50073161084818" : 947.663, + "66.75113568707239" : 948.471, + "67.00041364392425" : 949.275, + "67.25097304695845" : 950.083, + "67.50050556719331" : 950.891, + "67.75037462884983" : 951.687, + "68.00113250503011" : 952.479, + "68.2503888887139" : 953.275, + "68.50059017715843" : 954.075, + "68.75108917532208" : 954.867, + "69.00050951508308" : 955.655, + "69.2501024401885" : 956.439, + "69.50120980169125" : 957.207, + "69.75015121712147" : 957.979, + "70.00045174213903" : 958.755, + "70.25127433782347" : 959.523, + "70.50015966301676" : 960.287, + "70.75011933197908" : 961.059, + "71.00100664716769" : 961.835, + "71.25030186255398" : 962.603, + "71.50067142170931" : 963.367, + "71.75108844183436" : 964.143, + "72.00109988640001" : 964.911, + "72.25102072365983" : 965.679, + "72.50065248046776" : 966.435, + "72.75077179087369" : 967.199, + "73.00130530610622" : 967.955, + "73.2506005214925" : 968.707, + "73.50001223198629" : 969.467, + "73.75055437648604" : 970.239, + "74.00045364057782" : 970.995, + "74.25138841673613" : 971.767, + "74.50015293218833" : 972.519, + "74.75109633761387" : 973.279, + "75.00076692612429" : 974.023, + "75.12610271787833" : 974.407, + "75.25016137808362" : 974.775, + "75.37607533074147" : 975.159, + "75.50112635667722" : 975.535, + "75.62549135586886" : 975.915, + "75.75042588669712" : 976.299, + "75.87554163213701" : 976.679, + "76.00026906055196" : 977.055, + "76.12557464987071" : 977.431, + "76.25018558317818" : 977.811, + "76.37519777741142" : 978.187, + "76.50062849110489" : 978.563, + "76.62608077796641" : 978.939, + "76.75018689914143" : 979.315, + "76.87574705184322" : 979.695, + "77.00071178510674" : 980.075, + "77.12637980364879" : 980.447, + "77.25052044189269" : 980.823, + "77.3760503921592" : 981.203, + "77.50110573272855" : 981.587, + "77.62584610504433" : 981.967, + "77.75046566761901" : 982.343, + "77.87569790816639" : 982.731, + "78.00055046095603" : 983.119, + "78.12597254538228" : 983.507, + "78.25087255914165" : 983.895, + "78.37598830458155" : 984.283, + "78.50098755491396" : 984.671, + "78.62528783460145" : 985.059, + "78.75014470202471" : 985.451, + "78.87567896692484" : 985.851, + "79.00066527335642" : 986.247, + "79.12511656522028" : 986.647, + "79.25090539350343" : 987.047, + "79.37609448771471" : 987.447, + "79.50114551365044" : 987.847, + "79.62561837868236" : 988.251, + "79.75026814369231" : 988.655, + "79.87622955731989" : 989.055, + "80.00112525644565" : 989.467, + "80.12532629956009" : 989.875, + "80.25025651575473" : 990.287, + "80.37554916117266" : 990.703, + "80.50022049935068" : 991.115, + "80.62527583992002" : 991.539, + "80.75122862428037" : 991.959, + "80.87545124056287" : 992.375, + "81.0006619079422" : 992.803, + "81.12535050465465" : 993.227, + "81.25092360125727" : 993.655, + "81.37612995400299" : 994.087, + "81.50112488970179" : 994.523, + "81.6255546083976" : 994.959, + "81.75037695875197" : 995.399, + "81.87566528953629" : 995.839, + "82.00049626915789" : 996.283, + "82.12556023899445" : 996.735, + "82.25032649911189" : 997.191, + "82.37517042263433" : 997.635, + "82.50065722656473" : 998.099, + "82.62591966954739" : 998.563, + "82.75097501011673" : 999.027, + "82.875421987347" : 999.491, + "83.00054636205411" : 999.959, + "83.1257009391965" : 1000.427, + "83.25067430172724" : 1000.903, + "83.37541035940941" : 1001.383, + "83.50018524879407" : 1001.867, + "83.62534845520368" : 1002.351, + "83.7509992152113" : 1002.843, + "83.8752649778299" : 1003.331, + "84.00016067695566" : 1003.831, + "84.12513835412001" : 1004.331, + "84.25041805563711" : 1004.835, + "84.37536984499981" : 1005.343, + "84.50065817578412" : 1005.859, + "84.62510083838077" : 1006.379, + "84.75022089845427" : 1006.911, + "84.8756731853158" : 1007.439, + "85.00039629909713" : 1007.975, + "85.12528768358928" : 1008.507, + "85.25070976801553" : 1009.055, + "85.37529912815494" : 1009.607, + "85.50066943697784" : 1010.179, + "85.6257247775472" : 1010.755, + "85.75083189371988" : 1011.335, + "85.87523572461403" : 1011.911, + "86.00000629936507" : 1012.511, + "86.1251306740722" : 1013.119, + "86.2501299244046" : 1013.727, + "86.37524566984449" : 1014.351, + "86.50009822263415" : 1014.971, + "86.62551167779317" : 1015.595, + "86.75013986963508" : 1016.235, + "86.87537211018245" : 1016.887, + "87.00026780930821" : 1017.539, + "87.12531452061033" : 1018.211, + "87.25051655872244" : 1018.883, + "87.37544677491708" : 1019.571, + "87.5000447643237" : 1020.279, + "87.56296075163334" : 1020.639, + "87.62511304879389" : 1021.003, + "87.68776152881966" : 1021.379, + "87.75004757962213" : 1021.751, + "87.81304123033676" : 1022.123, + "87.87533591040646" : 1022.499, + "87.9378118050878" : 1022.883, + "88.0001064851575" : 1023.267, + "88.06254786276997" : 1023.667, + "88.1254638500796" : 1024.059, + "88.18777147405014" : 1024.451, + "88.25030777360203" : 1024.855, + "88.3127146341456" : 1025.267, + "88.375212101995" : 1025.687, + "88.4380374819988" : 1026.115, + "88.50058241081793" : 1026.543, + "88.56265272993987" : 1026.979, + "88.62549536847813" : 1027.411, + "88.68807481436612" : 1027.871, + "88.75036517980222" : 1028.307, + "88.81265985987191" : 1028.759, + "88.87521341795825" : 1029.219, + "88.93781875164792" : 1029.679, + "89.00032053413094" : 1030.155, + "89.06287409221727" : 1030.631, + "89.12543196493722" : 1031.115, + "89.18770075720525" : 1031.607, + "89.25003858361106" : 1032.099, + "89.31270863680489" : 1032.611, + "89.37505940711152" : 1033.131, + "89.43777260664146" : 1033.659, + "89.500002567207" : 1034.191, + "89.5625388667589" : 1034.739, + "89.6254073930988" : 1035.299, + "89.68752517319047" : 1035.855, + "89.75016502394902" : 1036.447, + "89.81292136981506" : 1037.043, + "89.87504346454034" : 1037.639, + "89.9378127543072" : 1038.263, + "90.00005565877358" : 1038.907, + "90.0627257119674" : 1039.571, + "90.12536124809233" : 1040.235, + "90.18765592816204" : 1040.907, + "90.250058474072" : 1041.607, + "90.312715583365" : 1042.311, + "90.37512244390858" : 1043.043, + "90.43766305809409" : 1043.791, + "90.50026839178375" : 1044.571, + "90.56252855478456" : 1045.371, + "90.62533667625392" : 1046.175, + "90.68763567095723" : 1046.983, + "90.75002095833277" : 1047.807, + "90.81268238225937" : 1048.663, + "90.87504609646683" : 1049.559, + "90.93777655453121" : 1050.479, + "91.00033442725116" : 1051.399, + "91.06286641216944" : 1052.375, + "91.12509637273499" : 1053.367, + "91.18762835765327" : 1054.383, + "91.25024232061016" : 1055.415, + "91.31257583238235" : 1056.487, + "91.37519410997285" : 1057.575, + "91.43765274611975" : 1058.679, + "91.50004234812889" : 1059.847, + "91.56256138914634" : 1061.087, + "91.62527890330988" : 1062.367, + "91.68772028092235" : 1063.663, + "91.75026520974146" : 1064.983, + "91.81271090198753" : 1066.343, + "91.87534212347886" : 1067.719, + "91.93779213035855" : 1069.143, + "92.00003503482492" : 1070.671, + "92.06255407584237" : 1072.255, + "92.1251852973337" : 1073.919, + "92.18752312373951" : 1075.703, + "92.25012845742917" : 1077.615, + "92.31264318381301" : 1079.663, + "92.37514928092963" : 1081.807, + "92.43759065854209" : 1084.007, + "92.50013558736121" : 1086.311, + "92.56255970643923" : 1088.711, + "92.62500971331892" : 1091.295, + "92.68770133968079" : 1093.999, + "92.75001327828494" : 1096.727, + "92.81270059001321" : 1099.439, + "92.87510745055678" : 1102.271, + "92.93757903060451" : 1105.327, + "93.00016279112613" : 1108.663, + "93.06255670776888" : 1112.159, + "93.12504554635105" : 1115.671, + "93.1875645873685" : 1119.431, + "93.25011814545485" : 1123.511, + "93.31258109623536" : 1127.735, + "93.3750958226192" : 1132.279, + "93.43760623436943" : 1137.071, + "93.50005624124911" : 1141.711, + "93.56257959690018" : 1146.631, + "93.62507706474958" : 1151.863, + "93.68756590333176" : 1157.255, + "93.75001159557783" : 1162.391, + "93.78131857705627" : 1164.975, + "93.81256083903055" : 1167.495, + "93.84378152783678" : 1170.119, + "93.87503673371191" : 1172.847, + "93.90625742251814" : 1175.551, + "93.93752125766046" : 1178.215, + "93.96880666597086" : 1180.791, + "94.00008344501403" : 1183.295, + "94.0313213923547" : 1185.775, + "94.06252482262649" : 1188.287, + "94.09385337727299" : 1190.647, + "94.12503091974311" : 1192.983, + "94.15634221585516" : 1195.359, + "94.18754564612695" : 1197.607, + "94.21880516663568" : 1199.863, + "94.25003448470913" : 1202.023, + "94.28129400521786" : 1204.111, + "94.31257941352825" : 1206.263, + "94.34377852916643" : 1208.295, + "94.37512865698098" : 1210.151, + "94.40633208725276" : 1211.871, + "94.43752257362372" : 1213.631, + "94.468842499003" : 1215.351, + "94.50008476097727" : 1216.927, + "94.53130976441712" : 1218.503, + "94.56259517272751" : 1220.007, + "94.59392804200762" : 1221.391, + "94.62514441618023" : 1222.759, + "94.65639099278813" : 1224.031, + "94.68761599622798" : 1225.287, + "94.71891003380559" : 1226.487, + "94.75019544211598" : 1227.719, + "94.78127806264666" : 1228.887, + "94.81263681972844" : 1230.047, + "94.84398694754299" : 1231.215, + "94.87517743391395" : 1232.311, + "94.90629025687991" : 1233.391, + "94.93765332859529" : 1234.471, + "94.96877046619487" : 1235.551, + "95.0000774476733" : 1236.631, + "95.03144914865591" : 1237.695, + "95.06273887159992" : 1238.711, + "95.09376540189366" : 1239.655, + "95.1251500467771" : 1240.623, + "95.15629307217834" : 1241.567, + "95.18762594145845" : 1242.519, + "95.21897175463938" : 1243.439, + "95.25025284831617" : 1244.343, + "95.2815598297946" : 1245.215, + "95.31251301131698" : 1246.071, + "95.34389334156681" : 1246.943, + "95.37504499623526" : 1247.759, + "95.40633040454566" : 1248.583, + "95.43772367869632" : 1249.391, + "95.46888396263199" : 1250.183, + "95.50024271971377" : 1250.983, + "95.5312994524428" : 1251.743, + "95.56257191685235" : 1252.527, + "95.59391773003328" : 1253.319, + "95.62508232860259" : 1254.087, + "95.65630301740882" : 1254.839, + "95.68774375252919" : 1255.583, + "95.71882205842627" : 1256.319, + "95.75026279354664" : 1257.047, + "95.78132815554288" : 1257.799, + "95.81280340773215" : 1258.527, + "95.84401115263755" : 1259.279, + "95.87534833655126" : 1260.007, + "95.90657765462471" : 1260.703, + "95.93759124101763" : 1261.423, + "95.96894568346579" : 1262.151, + "96.00002830399649" : 1262.871, + "96.03135685864298" : 1263.607, + "96.06263363768615" : 1264.351, + "96.09407437280652" : 1265.079, + "96.12504912749695" : 1265.799, + "96.15640788457871" : 1266.527, + "96.18769329288911" : 1267.247, + "96.21890103779451" : 1267.927, + "96.25032451438044" : 1268.623, + "96.28149774221696" : 1269.319, + "96.3126839139543" : 1270.015, + "96.34387440032525" : 1270.687, + "96.37511234766593" : 1271.383, + "96.40631577793772" : 1272.047, + "96.43777808622615" : 1272.735, + "96.46901603356682" : 1273.399, + "96.50018926140334" : 1274.071, + "96.5316688282262" : 1274.751, + "96.56256160487803" : 1275.439, + "96.59385564245564" : 1276.151, + "96.62505907272742" : 1276.847, + "96.65640488590836" : 1277.535, + "96.68772912592125" : 1278.239, + "96.71892392692581" : 1278.927, + "96.75029562790841" : 1279.639, + "96.78158966548602" : 1280.311, + "96.81271974698643" : 1280.975, + "96.84376353581463" : 1281.655, + "96.87525604653833" : 1282.343, + "96.89067223242897" : 1282.703, + "96.90662774752093" : 1283.055, + "96.92199647244185" : 1283.391, + "96.93779234609022" : 1283.735, + "96.95348035389833" : 1284.087, + "96.96898283246118" : 1284.439, + "96.98444216468792" : 1284.775, + "97.00035021881017" : 1285.119, + "97.01575346079998" : 1285.471, + "97.03129045643172" : 1285.815, + "97.04694826180454" : 1286.175, + "97.0627786525218" : 1286.527, + "97.07824661401577" : 1286.847, + "97.09383969988444" : 1287.183, + "97.10944141502034" : 1287.535, + "97.12511647892761" : 1287.887, + "97.14073545259795" : 1288.239, + "97.15654858478077" : 1288.615, + "97.17205106334362" : 1288.967, + "97.18769592481561" : 1289.327, + "97.20338393262372" : 1289.687, + "97.2187785453463" : 1290.031, + "97.23473406043827" : 1290.391, + "97.25026674143639" : 1290.735, + "97.2657131297623" : 1291.095, + "97.28151763267789" : 1291.463, + "97.29692518930132" : 1291.815, + "97.31281167025551" : 1292.183, + "97.32832709271919" : 1292.527, + "97.34389860541981" : 1292.903, + "97.35950894982292" : 1293.263, + "97.37530050883768" : 1293.607, + "97.39096262884412" : 1293.967, + "97.40627526352812" : 1294.327, + "97.42208408107732" : 1294.695, + "97.43758224500655" : 1295.071, + "97.45325730891383" : 1295.439, + "97.46896257525638" : 1295.823, + "97.48437876114701" : 1296.191, + "97.50011422992485" : 1296.575, + "97.51578929383211" : 1296.959, + "97.5313047162958" : 1297.335, + "97.54703587044001" : 1297.719, + "97.56272819288172" : 1298.087, + "97.57837736898733" : 1298.487, + "97.59402654509294" : 1298.871, + "97.60974044070272" : 1299.263, + "97.625337841205" : 1299.647, + "97.64093524170728" : 1300.039, + "97.65635142759793" : 1300.431, + "97.67204806467325" : 1300.839, + "97.68759368957221" : 1301.239, + "97.70326012421226" : 1301.655, + "97.7189999076237" : 1302.071, + "97.73453690325543" : 1302.495, + "97.75028531593408" : 1302.919, + "97.76570150182472" : 1303.343, + "97.78130321696062" : 1303.799, + "97.79692650526457" : 1304.287, + "97.81268354721044" : 1304.751, + "97.82828957697994" : 1305.231, + "97.84377479700835" : 1305.727, + "97.85952752432063" : 1306.207, + "97.87515512725818" : 1306.695, + "97.89082156189824" : 1307.191, + "97.90628089412498" : 1307.687, + "97.92209402630779" : 1308.207, + "97.93754472926732" : 1308.719, + "97.95339669315263" : 1309.247, + "97.96894231805157" : 1309.783, + "97.98453108928663" : 1310.279, + "98.00021909709474" : 1310.831, + "98.0158855317348" : 1311.367, + "98.03137506639682" : 1311.895, + "98.04708033273937" : 1312.447, + "98.06255692350055" : 1312.991, + "98.0781370654684" : 1313.519, + "98.09391999521594" : 1314.079, + "98.10956917132154" : 1314.631, + "98.12520540352632" : 1315.223, + "98.1406345333178" : 1315.791, + "98.15645629476784" : 1316.407, + "98.17204938063651" : 1316.991, + "98.18761657870351" : 1317.583, + "98.20323986700745" : 1318.231, + "98.21889335774668" : 1318.855, + "98.23439583630953" : 1319.495, + "98.25020465385873" : 1320.103, + "98.2657545933913" : 1320.711, + "98.28138651096248" : 1321.343, + "98.29692782122781" : 1321.991, + "98.31260288513509" : 1322.671, + "98.32831246611126" : 1323.327, + "98.34387966417826" : 1324.039, + "98.35945117687888" : 1324.735, + "98.37505289201478" : 1325.447, + "98.39077973152537" : 1326.143, + "98.4063943905621" : 1326.847, + "98.421918442293" : 1327.559, + "98.43759350620027" : 1328.263, + "98.44539867840184" : 1328.623, + "98.45331171644366" : 1328.999, + "98.46101333743856" : 1329.351, + "98.46890480231234" : 1329.703, + "98.4766711428114" : 1330.071, + "98.48448925891378" : 1330.423, + "98.49229874574895" : 1330.751, + "98.50008234478246" : 1331.095, + "98.50799969745789" : 1331.463, + "98.51580918429306" : 1331.799, + "98.52349786138713" : 1332.167, + "98.53127714578703" : 1332.503, + "98.539254903333" : 1332.871, + "98.54696083896152" : 1333.239, + "98.55475738189585" : 1333.639, + "98.5626402175024" : 1334.047, + "98.57037204093258" : 1334.423, + "98.57823761800469" : 1334.823, + "98.58609456580957" : 1335.231, + "98.59390405264475" : 1335.631, + "98.60159704437243" : 1336.023, + "98.6094065312076" : 1336.423, + "98.61719875950833" : 1336.839, + "98.62502119024433" : 1337.247, + "98.63282204781227" : 1337.663, + "98.64066605171632" : 1338.087, + "98.64858340439176" : 1338.535, + "98.65634111562359" : 1338.959, + "98.66419374879487" : 1339.391, + "98.6719514600267" : 1339.815, + "98.67974368832743" : 1340.271, + "98.68754886052899" : 1340.711, + "98.69545758393721" : 1341.151, + "98.70324549760433" : 1341.599, + "98.7109773210345" : 1342.039, + "98.71886015664104" : 1342.503, + "98.72673004834677" : 1342.951, + "98.73443166934167" : 1343.415, + "98.74227998787933" : 1343.879, + "98.75010241861533" : 1344.327, + "98.757950737153" : 1344.759, + "98.76573865082011" : 1345.215, + "98.77350067668556" : 1345.679, + "98.78134468058961" : 1346.143, + "98.78906356011896" : 1346.623, + "98.79693776645829" : 1347.095, + "98.80469547769013" : 1347.631, + "98.81252653769334" : 1348.095, + "98.82041800256712" : 1348.591, + "98.82818434306618" : 1349.063, + "98.83603697623745" : 1349.567, + "98.84385077770624" : 1350.063, + "98.8517034108775" : 1350.559, + "98.85943523430768" : 1351.023, + "98.86722746260841" : 1351.543, + "98.87509735431414" : 1352.063, + "98.88282054847708" : 1352.591, + "98.89066023774753" : 1353.111, + "98.89849129775075" : 1353.631, + "98.90634824555563" : 1354.159, + "98.91406281045137" : 1354.703, + "98.92195858995875" : 1355.255, + "98.92969041338893" : 1355.799, + "98.93755167582742" : 1356.327, + "98.9454086236323" : 1356.887, + "98.95312750316165" : 1357.455, + "98.96103191193626" : 1358.023, + "98.96881119633615" : 1358.591, + "98.97658185146882" : 1359.135, + "98.98444311390732" : 1359.695, + "98.99227848854416" : 1360.271, + "99.00004482904322" : 1360.871, + "99.00785863051199" : 1361.439, + "99.01565948807993" : 1362.007, + "99.0234689749151" : 1362.583, + "99.0312525739486" : 1363.151, + "99.03918718515848" : 1363.727, + "99.04688880615339" : 1364.287, + "99.05476301249271" : 1364.879, + "99.06250346519012" : 1365.423, + "99.07035178372779" : 1366.031, + "99.07816989983017" : 1366.623, + "99.08594486959646" : 1367.215, + "99.09375435643162" : 1367.807, + "99.10165013593901" : 1368.455, + "99.10945962277417" : 1369.023, + "99.11722164863963" : 1369.615, + "99.12510448424618" : 1370.215, + "99.1328147345083" : 1370.783, + "99.14065873841236" : 1371.407, + "99.14844233744586" : 1372.039, + "99.15626908281547" : 1372.639, + "99.16409151355147" : 1373.255, + "99.17189237111941" : 1373.871, + "99.17977952135958" : 1374.455, + "99.1875674350267" : 1375.055, + "99.19532514625853" : 1375.663, + "99.20315620626175" : 1376.343, + "99.21097432236414" : 1376.999, + "99.21883558480263" : 1377.679, + "99.22268855261689" : 1378.047, + "99.2265630935992" : 1378.399, + "99.23054550042178" : 1378.767, + "99.23445887310658" : 1379.103, + "99.23830321165362" : 1379.439, + "99.24225541604092" : 1379.807, + "99.24609543995435" : 1380.151, + "99.2500735321433" : 1380.551, + "99.25392218532396" : 1380.911, + "99.25788733361209" : 1381.303, + "99.2618007062969" : 1381.695, + "99.26566661801198" : 1382.063, + "99.26957136142957" : 1382.463, + "99.27350630728242" : 1382.863, + "99.27739810679918" : 1383.223, + "99.28129422094953" : 1383.615, + "99.2851903350999" : 1383.999, + "99.28911665168555" : 1384.375, + "99.29302570973674" : 1384.767, + "99.29691319461988" : 1385.151, + "99.30083951120551" : 1385.543, + "99.30471836682143" : 1385.903, + "99.30871371754485" : 1386.279, + "99.31251059512216" : 1386.679, + "99.3164369117078" : 1387.047, + "99.32038480146149" : 1387.391, + "99.32428523024547" : 1387.783, + "99.32821586146471" : 1388.167, + "99.33206882927897" : 1388.511, + "99.33596494342933" : 1388.911, + "99.33984379904525" : 1389.287, + "99.34382189123421" : 1389.679, + "99.34775683708708" : 1390.063, + "99.35165295123744" : 1390.455, + "99.35549297515087" : 1390.799, + "99.35946675270621" : 1391.223, + "99.36331109125325" : 1391.583, + "99.36722014930444" : 1391.975, + "99.37114215125646" : 1392.383, + "99.37502963613962" : 1392.775, + "99.37892143565637" : 1393.167, + "99.38283480834117" : 1393.535, + "99.38681721516375" : 1393.959, + "99.39066155371079" : 1394.351, + "99.39456198249475" : 1394.799, + "99.39850987224844" : 1395.199, + "99.40235421079548" : 1395.623, + "99.40625463957946" : 1396.007, + "99.4102284171348" : 1396.407, + "99.41412453128517" : 1396.863, + "99.41801633080192" : 1397.295, + "99.42188224251701" : 1397.703, + "99.42578267130098" : 1398.143, + "99.42976507812357" : 1398.583, + "99.43362236057143" : 1399.015, + "99.43757025032512" : 1399.439, + "99.44141027423855" : 1399.847, + "99.44533227619057" : 1400.255, + "99.4492585927762" : 1400.663, + "99.45315470692657" : 1401.111, + "99.4570810235122" : 1401.503, + "99.46105480106756" : 1401.887, + "99.46485599327849" : 1402.255, + "99.4687693659633" : 1402.687, + "99.47273019961781" : 1403.071, + "99.47657453816485" : 1403.471, + "99.48051811328493" : 1403.871, + "99.48440991280168" : 1404.247, + "99.48831897085289" : 1404.663, + "99.49222802890408" : 1405.055, + "99.49610256988639" : 1405.463, + "99.50002457183841" : 1405.879, + "99.50391205672156" : 1406.239, + "99.50786857574246" : 1406.655, + "99.51174743135839" : 1407.015, + "99.51563491624152" : 1407.399, + "99.51960437916327" : 1407.839, + "99.52353932501613" : 1408.271, + "99.52739229283038" : 1408.679, + "99.53131429478242" : 1409.111, + "99.53517157723029" : 1409.519, + "99.53908063528148" : 1409.959, + "99.54298537869906" : 1410.455, + "99.54695052698719" : 1410.927, + "99.55082938260311" : 1411.343, + "99.55476001382236" : 1411.759, + "99.55863886943828" : 1412.215, + "99.56250909578698" : 1412.567, + "99.5665130757776" : 1412.999, + "99.5703833021263" : 1413.447, + "99.57423195530696" : 1413.855, + "99.57814964262538" : 1414.303, + "99.58205438604296" : 1414.743, + "99.58595912946053" : 1415.223, + "99.5898940753134" : 1415.703, + "99.59379881873097" : 1416.295, + "99.59766473044607" : 1416.751, + "99.60162124946699" : 1417.231, + "99.60546990264763" : 1417.711, + "99.60939621923326" : 1418.223, + "99.61134643362526" : 1418.447, + "99.61334842362056" : 1418.719, + "99.61524686240922" : 1418.967, + "99.61721433533566" : 1419.215, + "99.61919906679653" : 1419.463, + "99.62116653972295" : 1419.719, + "99.62304771997717" : 1419.967, + "99.62502382217082" : 1420.271, + "99.6269697219292" : 1420.511, + "99.62896739729091" : 1420.815, + "99.63086583607956" : 1421.063, + "99.63286351144127" : 1421.295, + "99.63478783803158" : 1421.559, + "99.63674236705718" : 1421.799, + "99.63870983998362" : 1422.095, + "99.64064711047477" : 1422.319, + "99.64262752730203" : 1422.535, + "99.64456048315958" : 1422.775, + "99.64649343901712" : 1423.023, + "99.64844796804272" : 1423.327, + "99.6504370141372" : 1423.647, + "99.65235702609391" : 1423.903, + "99.65435901608923" : 1424.183, + "99.6562617695115" : 1424.455, + "99.6582162985371" : 1424.711, + "99.66023986170046" : 1425.007, + "99.66214261512273" : 1425.311, + "99.6640885148811" : 1425.535, + "99.66604735854031" : 1425.839, + "99.66800188756591" : 1426.095, + "99.66998661902679" : 1426.359, + "99.67192820415156" : 1426.647, + "99.67386547464271" : 1426.895, + "99.67582863293552" : 1427.143, + "99.6777745326939" : 1427.415, + "99.67973337635311" : 1427.655, + "99.6816835907451" : 1427.927, + "99.68361223196902" : 1428.175, + "99.68557107562823" : 1428.471, + "99.68758169489077" : 1428.719, + "99.68945856051138" : 1428.983, + "99.69144329197225" : 1429.287, + "99.69342802343311" : 1429.591, + "99.69531351832094" : 1429.919, + "99.69727667661377" : 1430.167, + "99.69926572270825" : 1430.463, + "99.70119436393219" : 1430.735, + "99.70316183685861" : 1431.023, + "99.70513362441865" : 1431.351, + "99.7070708949098" : 1431.655, + "99.70901248003457" : 1431.927, + "99.71098426759461" : 1432.295, + "99.71290859418494" : 1432.607, + "99.7148501793097" : 1432.895, + "99.71683922540419" : 1433.231, + "99.71876786662811" : 1433.527, + "99.72070945175288" : 1433.879, + "99.72270712711459" : 1434.239, + "99.72461419517046" : 1434.599, + "99.72660755589855" : 1434.903, + "99.72852325322167" : 1435.239, + "99.73048209688086" : 1435.527, + "99.73246682834174" : 1435.831, + "99.73438684029846" : 1436.199, + "99.73635431322488" : 1436.479, + "99.73830884225048" : 1436.791, + "99.74030220297857" : 1437.103, + "99.74220927103445" : 1437.391, + "99.74418105859449" : 1437.727, + "99.74614421688732" : 1438.031, + "99.74806854347763" : 1438.311, + "99.75000581396878" : 1438.671, + "99.75197760152884" : 1438.967, + "99.75392781592082" : 1439.271, + "99.75590823274808" : 1439.583, + "99.75789296420895" : 1439.879, + "99.75978708836399" : 1440.175, + "99.76173298812238" : 1440.479, + "99.76369183178159" : 1440.775, + "99.76563773153995" : 1441.071, + "99.76760088983278" : 1441.423, + "99.76954247495755" : 1441.759, + "99.77150131861676" : 1442.079, + "99.77343858910791" : 1442.431, + "99.77540174740072" : 1442.759, + "99.77736922032716" : 1443.127, + "99.77931943471914" : 1443.439, + "99.78126533447751" : 1443.751, + "99.78322417813672" : 1444.095, + "99.78516576326149" : 1444.431, + "99.78712029228709" : 1444.767, + "99.7890791359463" : 1445.095, + "99.79102503570468" : 1445.431, + "99.79298819399749" : 1445.775, + "99.79493840838948" : 1446.095, + "99.79687999351424" : 1446.431, + "99.7988604103415" : 1446.767, + "99.80078905156543" : 1447.095, + "99.80276515375908" : 1447.471, + "99.80473262668552" : 1447.815, + "99.8057077338815" : 1447.951, + "99.80666558254306" : 1448.151, + "99.80764500437266" : 1448.351, + "99.80860716766783" : 1448.511, + "99.80960816266548" : 1448.679, + "99.81057032596064" : 1448.831, + "99.81153248925581" : 1449.007, + "99.81255505742152" : 1449.199, + "99.81351290608306" : 1449.343, + "99.81448801327906" : 1449.487, + "99.81544586194062" : 1449.663, + "99.81645548620548" : 1449.839, + "99.81740039096621" : 1450.031, + "99.81837981279581" : 1450.223, + "99.81940669559513" : 1450.415, + "99.82031276865335" : 1450.575, + "99.82129650511658" : 1450.783, + "99.82226729767896" : 1450.959, + "99.82325534877577" : 1451.127, + "99.82422614133816" : 1451.287, + "99.82522282170221" : 1451.439, + "99.82618067036375" : 1451.591, + "99.82716440682698" : 1451.727, + "99.82813519938937" : 1451.887, + "99.82912325048618" : 1452.047, + "99.830111301583" : 1452.207, + "99.83107777951179" : 1452.351, + "99.83205720134139" : 1452.535, + "99.8330409378046" : 1452.687, + "99.83400310109977" : 1452.871, + "99.83497820829575" : 1453.047, + "99.83595331549175" : 1453.207, + "99.83697588365746" : 1453.383, + "99.83789921525012" : 1453.519, + "99.83889589561417" : 1453.687, + "99.83988826134461" : 1453.879, + "99.84084611000615" : 1454.031, + "99.84184710500381" : 1454.199, + "99.8427747512301" : 1454.383, + "99.84377574622775" : 1454.575, + "99.84476811195819" : 1454.767, + "99.84575616305501" : 1454.951, + "99.84678736048794" : 1455.135, + "99.84768048964533" : 1455.287, + "99.84867717000938" : 1455.479, + "99.8496220747701" : 1455.679, + "99.85058855269887" : 1455.863, + "99.85156365989486" : 1456.063, + "99.85255171099169" : 1456.271, + "99.85355270598934" : 1456.455, + "99.85450192538367" : 1456.615, + "99.85548566184688" : 1456.855, + "99.85647371294371" : 1457.015, + "99.85744019087248" : 1457.231, + "99.85844981513736" : 1457.439, + "99.85937746136364" : 1457.631, + "99.86036119782686" : 1457.807, + "99.86136219282452" : 1457.975, + "99.86231141221884" : 1458.199, + "99.86331672185011" : 1458.407, + "99.86427457051167" : 1458.591, + "99.86524104844044" : 1458.743, + "99.86621184100282" : 1458.951, + "99.86719989209965" : 1459.175, + "99.86818794319647" : 1459.327, + "99.86916305039246" : 1459.535, + "99.87012952832123" : 1459.759, + "99.87110032088361" : 1459.967, + "99.87209700124767" : 1460.231, + "99.87306347917644" : 1460.455, + "99.87405153027326" : 1460.663, + "99.87501369356842" : 1460.879, + "99.8759844861308" : 1461.103, + "99.87698979576207" : 1461.303, + "99.87795627369084" : 1461.519, + "99.87892275161961" : 1461.767, + "99.87992374661728" : 1461.991, + "99.88086433674438" : 1462.231, + "99.88184375857399" : 1462.423, + "99.8828274950372" : 1462.663, + "99.88379397296598" : 1462.863, + "99.88479065333001" : 1463.071, + "99.88574418735796" : 1463.287, + "99.88674949698922" : 1463.543, + "99.88770303101717" : 1463.727, + "99.88870402601482" : 1463.951, + "99.88970933564609" : 1464.159, + "99.89067149894126" : 1464.407, + "99.89161640370197" : 1464.663, + "99.89258719626436" : 1464.855, + "99.89360544979645" : 1465.103, + "99.89453741065634" : 1465.311, + "99.89551251785234" : 1465.535, + "99.89651351284999" : 1465.767, + "99.89748862004599" : 1465.967, + "99.89848530041003" : 1466.239, + "99.89942157590353" : 1466.463, + "99.90041825626757" : 1466.719, + "99.90138904882996" : 1466.951, + "99.90235552675873" : 1467.247, + "99.90284308035673" : 1467.367, + "99.90332631932111" : 1467.511, + "99.9038095582855" : 1467.655, + "99.90430142651711" : 1467.791, + "99.90480623864954" : 1467.911, + "99.90528516298032" : 1468.015, + "99.90576840194471" : 1468.151, + "99.90628184334437" : 1468.279, + "99.90677371157598" : 1468.431, + "99.90722674810509" : 1468.607, + "99.9077186163367" : 1468.743, + "99.9082104845683" : 1468.919, + "99.90870666743352" : 1469.095, + "99.90918990639791" : 1469.263, + "99.90968177462952" : 1469.367, + "99.9101650135939" : 1469.511, + "99.91067414035994" : 1469.671, + "99.91115306469072" : 1469.807, + "99.91164493292233" : 1469.967, + "99.91211091335228" : 1470.119, + "99.9126114108511" : 1470.271, + "99.91308602054826" : 1470.399, + "99.91359946194792" : 1470.535, + "99.91408701554593" : 1470.703, + "99.91455299597587" : 1470.879, + "99.91504917884109" : 1471.015, + "99.91553673243908" : 1471.175, + "99.91601997140347" : 1471.335, + "99.9165204689023" : 1471.487, + "99.91701233713391" : 1471.671, + "99.9174998907319" : 1471.807, + "99.9179874443299" : 1471.983, + "99.91846205402706" : 1472.111, + "99.91897549542672" : 1472.215, + "99.91943716122306" : 1472.359, + "99.91993334408828" : 1472.503, + "99.92041226841906" : 1472.687, + "99.92091708055149" : 1472.903, + "99.92139600488227" : 1473.055, + "99.92188355848026" : 1473.167, + "99.92237974134548" : 1473.351, + "99.92285866567626" : 1473.527, + "99.92335484854148" : 1473.679, + "99.92383808750586" : 1473.871, + "99.92432564110386" : 1473.991, + "99.92482613860268" : 1474.159, + "99.92530074829985" : 1474.327, + "99.92581850433312" : 1474.503, + "99.92627154086223" : 1474.631, + "99.92677203836107" : 1474.807, + "99.92726390659267" : 1474.991, + "99.92773851628984" : 1475.183, + "99.92822606988783" : 1475.303, + "99.92873519665388" : 1475.471, + "99.92921843561827" : 1475.655, + "99.92969304531543" : 1475.831, + "99.93019785744787" : 1476.007, + "99.93067678177864" : 1476.167, + "99.93116433537665" : 1476.335, + "99.93165620360826" : 1476.487, + "99.93215238647346" : 1476.615, + "99.93261836690341" : 1476.743, + "99.93311454976863" : 1476.943, + "99.93361073263385" : 1477.111, + "99.93410260086546" : 1477.271, + "99.93459446909706" : 1477.463, + "99.93506476416061" : 1477.607, + "99.935548003125" : 1477.831, + "99.93603987135661" : 1477.999, + "99.93654036885543" : 1478.215, + "99.93702360781982" : 1478.351, + "99.93750684678422" : 1478.535, + "99.93800302964942" : 1478.735, + "99.93850352714826" : 1478.919, + "99.9389651929446" : 1479.071, + "99.9394570611762" : 1479.255, + "99.93994461477419" : 1479.503, + "99.9404753147083" : 1479.703, + "99.9409240366038" : 1479.927, + "99.94142453410262" : 1480.095, + "99.94189482916619" : 1480.231, + "99.94239532666501" : 1480.399, + "99.942882880263" : 1480.655, + "99.94339200702906" : 1480.879, + "99.94385367282538" : 1481.055, + "99.9443498556906" : 1481.263, + "99.944833094655" : 1481.471, + "99.94532927752022" : 1481.631, + "99.94581683111821" : 1481.879, + "99.94629144081537" : 1482.071, + "99.9467962529478" : 1482.263, + "99.94727517727858" : 1482.503, + "99.94775410160936" : 1482.727, + "99.94825028447458" : 1482.895, + "99.94875941124063" : 1483.079, + "99.94922539167058" : 1483.255, + "99.94973883307023" : 1483.495, + "99.95019618423295" : 1483.679, + "99.95069236709817" : 1483.887, + "99.95117560606256" : 1484.151, + "99.95143016944559" : 1484.247, + "99.95169336209584" : 1484.359, + "99.95190477914275" : 1484.479, + "99.9521722864266" : 1484.615, + "99.95240096200797" : 1484.743, + "99.95264258149017" : 1484.871, + "99.95288851560596" : 1484.967, + "99.95315170825621" : 1485.039, + "99.9533890131048" : 1485.127, + "99.95365652038865" : 1485.247, + "99.95386362280196" : 1485.367, + "99.9541225008186" : 1485.495, + "99.95435980566718" : 1485.551, + "99.95459279588215" : 1485.711, + "99.95485167389879" : 1485.807, + "99.95508034948014" : 1485.895, + "99.9553435421304" : 1486.047, + "99.95557221771175" : 1486.159, + "99.95581815182756" : 1486.295, + "99.95605977130975" : 1486.415, + "99.95630570542555" : 1486.511, + "99.95654732490775" : 1486.591, + "99.95678894438994" : 1486.679, + "99.95705213704018" : 1486.823, + "99.95728081262155" : 1486.927, + "99.95753537600457" : 1487.047, + "99.95776405158593" : 1487.175, + "99.95803155886979" : 1487.279, + "99.95826023445115" : 1487.391, + "99.95850616856696" : 1487.503, + "99.95874778804915" : 1487.655, + "99.95901960996662" : 1487.775, + "99.95923102701353" : 1487.863, + "99.95948559039655" : 1487.999, + "99.95971858061154" : 1488.103, + "99.95996451472733" : 1488.247, + "99.96021907811036" : 1488.431, + "99.96046932685977" : 1488.559, + "99.96069368780752" : 1488.623, + "99.96095688045777" : 1488.767, + "99.96119849993997" : 1488.863, + "99.96143149015494" : 1489.007, + "99.96169468280517" : 1489.135, + "99.96191472911931" : 1489.231, + "99.96217792176957" : 1489.383, + "99.96241954125176" : 1489.495, + "99.96264821683312" : 1489.647, + "99.96290278021614" : 1489.767, + "99.96314008506472" : 1489.871, + "99.96339033381415" : 1489.943, + "99.96363195329633" : 1490.055, + "99.96386925814491" : 1490.151, + "99.96412382152795" : 1490.319, + "99.96436975564374" : 1490.439, + "99.964632948294" : 1490.567, + "99.96485730924174" : 1490.615, + "99.96509029945672" : 1490.743, + "99.96533623357251" : 1490.887, + "99.96557785305471" : 1491.079, + "99.96582810180412" : 1491.207, + "99.9660654066527" : 1491.351, + "99.96631134076851" : 1491.439, + "99.96656590415154" : 1491.583, + "99.9667988943665" : 1491.687, + "99.96707071628397" : 1491.823, + "99.96729939186534" : 1491.903, + "99.96753238208031" : 1492.031, + "99.96779557473056" : 1492.167, + "99.9680199356783" : 1492.327, + "99.96828744296216" : 1492.455, + "99.96851180390992" : 1492.519, + "99.96875773802572" : 1492.687, + "99.96899935750791" : 1492.791, + "99.96927117942538" : 1492.879, + "99.96950848427396" : 1493.071, + "99.9697285305881" : 1493.191, + "99.9699744647039" : 1493.279, + "99.97022471345332" : 1493.447, + "99.9704620183019" : 1493.543, + "99.9707036377841" : 1493.663, + "99.97096251580072" : 1493.847, + "99.97120413528292" : 1494.015, + "99.97143712549789" : 1494.167, + "99.97170463278175" : 1494.327, + "99.9719289937295" : 1494.543, + "99.97217061321169" : 1494.711, + "99.9724165473275" : 1494.919, + "99.9726624814433" : 1495.087, + "99.97291704482633" : 1495.399, + "99.97316297894213" : 1495.527, + "99.9733959691571" : 1495.727, + "99.97363758863929" : 1495.967, + "99.9738878373887" : 1496.143, + "99.97413808613813" : 1496.439, + "99.97436676171948" : 1496.599, + "99.9746170104689" : 1496.951, + "99.97485431531749" : 1497.127, + "99.97510024943328" : 1497.367, + "99.97534618354909" : 1497.543, + "99.97558780303127" : 1497.719, + "99.97570861277238" : 1497.783, + "99.97583373714708" : 1497.911, + "99.97595886152179" : 1498.031, + "99.97608830053011" : 1498.159, + "99.9762047956376" : 1498.263, + "99.9763299200123" : 1498.375, + "99.97644641511978" : 1498.447, + "99.97656722486089" : 1498.599, + "99.97669234923559" : 1498.703, + "99.97680884434308" : 1498.759, + "99.97692965408417" : 1498.839, + "99.9770677223597" : 1498.943, + "99.97717558819998" : 1499.055, + "99.97729639794107" : 1499.199, + "99.97741720768217" : 1499.343, + "99.97755959059133" : 1499.511, + "99.9776760856988" : 1499.583, + "99.97778826617268" : 1499.655, + "99.97791339054739" : 1499.799, + "99.97802988565488" : 1499.863, + "99.9781593246632" : 1499.999, + "99.97827150513707" : 1500.111, + "99.97841820267983" : 1500.199, + "99.97852175388648" : 1500.311, + "99.97863824899397" : 1500.423, + "99.97878494653673" : 1500.535, + "99.97888418310977" : 1500.647, + "99.97901362211809" : 1500.767, + "99.97915600502724" : 1500.807, + "99.97925092696667" : 1500.839, + "99.97937605134138" : 1500.959, + "99.97950117571608" : 1501.167, + "99.97964787325884" : 1501.255, + "99.97973848056466" : 1501.319, + "99.97985929030577" : 1501.455, + "99.97998441468047" : 1501.583, + "99.98010522442156" : 1501.767, + "99.9802389780635" : 1501.847, + "99.98038136097264" : 1501.887, + "99.98047628291208" : 1501.935, + "99.98059277801957" : 1502.071, + "99.98071358776066" : 1502.207, + "99.98083871213537" : 1502.343, + "99.98096383651007" : 1502.487, + "99.98108033161756" : 1502.599, + "99.98120545599227" : 1502.719, + "99.98132626573337" : 1502.823, + "99.98144707547446" : 1502.975, + "99.9815808291164" : 1503.047, + "99.9817059534911" : 1503.135, + "99.98181813396498" : 1503.239, + "99.98193462907246" : 1503.391, + "99.98206838271439" : 1503.495, + "99.98220645098992" : 1503.623, + "99.98230568756297" : 1503.719, + "99.98242218267046" : 1503.839, + "99.98254730704517" : 1503.895, + "99.98266811678626" : 1504.047, + "99.98279755579458" : 1504.199, + "99.98292268016928" : 1504.279, + "99.98304780454399" : 1504.375, + "99.98315567038425" : 1504.439, + "99.98327648012535" : 1504.615, + "99.98341023376729" : 1504.775, + "99.98353535814199" : 1504.879, + "99.98364753861587" : 1504.927, + "99.98376834835696" : 1504.999, + "99.98389778736528" : 1505.063, + "99.98401428247276" : 1505.191, + "99.98414803611469" : 1505.287, + "99.98426021658857" : 1505.391, + "99.98438534096327" : 1505.527, + "99.98449752143715" : 1505.663, + "99.98462264581185" : 1505.783, + "99.98474345555296" : 1505.895, + "99.98486426529405" : 1505.999, + "99.98499370430237" : 1506.127, + "99.98511019940986" : 1506.303, + "99.98523100915095" : 1506.503, + "99.98535181889204" : 1506.623, + "99.98547694326675" : 1506.775, + "99.98560206764147" : 1506.935, + "99.98571856274894" : 1507.127, + "99.98584800175726" : 1507.279, + "99.98596449686475" : 1507.423, + "99.98608530660584" : 1507.583, + "99.98621043098055" : 1507.719, + "99.98633986998887" : 1507.903, + "99.98645636509636" : 1508.039, + "99.98659011873829" : 1508.111, + "99.98671092847938" : 1508.231, + "99.98683173822047" : 1508.279, + "99.98695686259519" : 1508.367, + "99.98706472843546" : 1508.623, + "99.98718985281016" : 1508.727, + "99.98731497718487" : 1508.895, + "99.98743578692596" : 1509.063, + "99.98755659666706" : 1509.143, + "99.98767309177454" : 1509.263, + "99.98780684541647" : 1509.487, + "99.9878586210198" : 1509.559, + "99.98793628442479" : 1509.695, + "99.9879794307609" : 1509.719, + "99.98804415026505" : 1509.759, + "99.9881045551356" : 1509.943, + "99.98816496000615" : 1509.975, + "99.98822105024308" : 1510.079, + "99.98829871364808" : 1510.111, + "99.9883461746178" : 1510.215, + "99.98840657948834" : 1510.303, + "99.98847129899251" : 1510.399, + "99.98852738922945" : 1510.431, + "99.98860505263443" : 1510.471, + "99.98865251360415" : 1510.503, + "99.98870860384109" : 1510.607, + "99.98877332334524" : 1510.759, + "99.98883804284941" : 1510.879, + "99.98889413308635" : 1510.943, + "99.9889588525905" : 1511.023, + "99.98901925746105" : 1511.095, + "99.98907534769799" : 1511.167, + "99.98913575256853" : 1511.223, + "99.9892004720727" : 1511.327, + "99.98926087694323" : 1511.383, + "99.98932991108101" : 1511.495, + "99.98939031595155" : 1511.543, + "99.98945503545572" : 1511.663, + "99.98950249642543" : 1511.743, + "99.9895672159296" : 1511.839, + "99.98964487933458" : 1512.015, + "99.9896923403043" : 1512.135, + "99.98976137444207" : 1512.167, + "99.98980883541178" : 1512.199, + "99.98986924028233" : 1512.367, + "99.9899339597865" : 1512.423, + "99.98999867929065" : 1512.527, + "99.99005476952759" : 1512.671, + "99.99011517439814" : 1512.855, + "99.99017557926868" : 1512.967, + "99.99023598413923" : 1513.079, + "99.9903007036434" : 1513.183, + "99.99035679388034" : 1513.359, + "99.99042151338449" : 1513.511, + "99.99050349142308" : 1513.543, + "99.9905466377592" : 1513.567, + "99.99061135726336" : 1513.631, + "99.99066313286669" : 1513.679, + "99.99072353773722" : 1513.815, + "99.99078394260778" : 1513.879, + "99.99084866211194" : 1513.911, + "99.99090906698248" : 1514.047, + "99.99096947185303" : 1514.127, + "99.99102987672359" : 1514.223, + "99.99109028159413" : 1514.407, + "99.99115500109829" : 1514.527, + "99.99121109133523" : 1514.591, + "99.99128875474022" : 1514.759, + "99.99133621570994" : 1514.791, + "99.99139662058049" : 1514.943, + "99.99145702545103" : 1515.327, + "99.9915217449552" : 1515.471, + "99.99158214982573" : 1515.575, + "99.99164255469628" : 1515.639, + "99.99170295956684" : 1515.767, + "99.99176336443739" : 1515.887, + "99.99184102784237" : 1516.023, + "99.99188417417848" : 1516.183, + "99.99194457904903" : 1516.295, + "99.99200929855319" : 1516.471, + "99.99206970342374" : 1516.607, + "99.99214736682873" : 1516.703, + "99.99219051316483" : 1516.847, + "99.99225091803538" : 1517.039, + "99.99231132290593" : 1517.183, + "99.99237172777647" : 1517.391, + "99.99243644728064" : 1517.687, + "99.99249685215118" : 1517.783, + "99.99255725702173" : 1517.951, + "99.99263492042672" : 1518.151, + "99.99267806676283" : 1518.359, + "99.99274278626699" : 1518.543, + "99.99280319113754" : 1518.743, + "99.99286791064169" : 1519.023, + "99.99292400087863" : 1519.263, + "99.9929887203828" : 1519.655, + "99.99304912525334" : 1519.791, + "99.9931138447575" : 1519.839, + "99.99316562036083" : 1520.039, + "99.99322602523138" : 1520.151, + "99.99329074473553" : 1520.551, + "99.99335114960608" : 1520.695, + "99.99342018374385" : 1520.871, + "99.99347195934718" : 1521.071, + "99.99353667885134" : 1521.375, + "99.99359276908827" : 1521.615, + "99.99365317395882" : 1521.815, + "99.99371789346299" : 1521.991, + "99.99378692760075" : 1522.223, + "99.99384301783769" : 1522.423, + "99.99390342270824" : 1522.711, + "99.9939293105099" : 1522.759, + "99.99395951294517" : 1522.871, + "99.99398971538045" : 1523.015, + "99.99401991781572" : 1523.207, + "99.99405012025099" : 1523.423, + "99.99408032268627" : 1523.615, + "99.99411483975516" : 1523.703, + "99.99414072755683" : 1523.823, + "99.99417524462571" : 1524.023, + "99.99420544706098" : 1524.175, + "99.99423564949625" : 1524.327, + "99.99427016656513" : 1524.463, + "99.9942960543668" : 1524.551, + "99.9943348860693" : 1524.735, + "99.99435645923735" : 1524.879, + "99.99438666167262" : 1525.015, + "99.99441686410789" : 1525.143, + "99.99444706654317" : 1525.287, + "99.99447726897844" : 1525.575, + "99.99450747141371" : 1525.679, + "99.994537673849" : 1525.863, + "99.99456787628426" : 1525.943, + "99.99460239335315" : 1526.103, + "99.99463691042203" : 1526.239, + "99.9946627982237" : 1526.415, + "99.99469300065897" : 1526.527, + "99.99473614699508" : 1526.815, + "99.99475772016314" : 1526.943, + "99.99478360796479" : 1527.095, + "99.99481381040007" : 1527.191, + "99.99484401283534" : 1527.359, + "99.99487852990423" : 1527.703, + "99.9949044177059" : 1527.903, + "99.99493462014117" : 1528.191, + "99.99496482257643" : 1528.431, + "99.99499933964533" : 1528.807, + "99.99503817134782" : 1528.951, + "99.99505974451587" : 1529.047, + "99.99508994695115" : 1529.495, + "99.99512014938642" : 1529.711, + "99.9951546664553" : 1529.927, + "99.99518918352419" : 1529.967, + "99.99521075669225" : 1530.191, + "99.99524095912751" : 1530.343, + "99.9952711615628" : 1530.951, + "99.99530567863168" : 1531.063, + "99.99533156643334" : 1531.183, + "99.99536176886862" : 1531.279, + "99.99539197130389" : 1531.527, + "99.99542648837277" : 1531.967, + "99.99545669080806" : 1532.007, + "99.99548689324332" : 1532.175, + "99.9955170956786" : 1532.535, + "99.99554729811388" : 1532.719, + "99.99559044444997" : 1533.039, + "99.99560770298442" : 1533.127, + "99.9956379054197" : 1533.327, + "99.99566810785497" : 1533.591, + "99.99570693955746" : 1533.791, + "99.99572851272552" : 1533.983, + "99.99575871516079" : 1534.015, + "99.99578891759606" : 1534.207, + "99.99582343466494" : 1534.455, + "99.99585363710023" : 1534.767, + "99.99588815416911" : 1534.895, + "99.99591835660438" : 1534.975, + "99.99594855903966" : 1535.095, + "99.99597444684132" : 1535.119, + "99.9960046492766" : 1535.199, + "99.99603485171187" : 1535.415, + "99.99606505414714" : 1535.495, + "99.99609525658242" : 1535.647, + "99.99612545901769" : 1535.711, + "99.99615566145296" : 1535.975, + "99.99619017852184" : 1536.127, + "99.99621606632351" : 1536.159, + "99.99625489802601" : 1536.431, + "99.99628078582766" : 1536.655, + "99.99631530289656" : 1536.815, + "99.99634119069822" : 1537.007, + "99.99637139313349" : 1537.255, + "99.99640159556877" : 1537.311, + "99.99643179800404" : 1537.647, + "99.99646631507292" : 1537.807, + "99.99649220287459" : 1538.015, + "99.99652671994347" : 1538.039, + "99.99655260774514" : 1538.199, + "99.99658281018041" : 1538.319, + "99.99661301261568" : 1538.735, + "99.99664752968457" : 1539.103, + "99.99667773211985" : 1539.471, + "99.99670793455512" : 1539.735, + "99.99673813699039" : 1540.399, + "99.99676833942567" : 1540.647, + "99.99680717112817" : 1541.247, + "99.99683305892982" : 1541.607, + "99.9968632613651" : 1541.791, + "99.99688914916676" : 1542.247, + "99.99691935160205" : 1542.375, + "99.99694955403731" : 1542.399, + "99.99697112720537" : 1542.983, + "99.9969840711062" : 1543.103, + "99.99700132964064" : 1543.231, + "99.99700995890787" : 1543.247, + "99.99702721744231" : 1543.567, + "99.99704016134314" : 1543.583, + "99.99705741987758" : 1543.599, + "99.9970703637784" : 1543.831, + "99.99709625158007" : 1543.863, + "99.99711351011452" : 1544.223, + "99.99711782474813" : 1544.231, + "99.99713939791617" : 1544.335, + "99.9971480271834" : 1544.591, + "99.99716528571784" : 1544.623, + "99.99719117351951" : 1544.647, + "99.99719548815311" : 1544.655, + "99.99720843205395" : 1544.919, + "99.9972256905884" : 1545.383, + "99.99723863448922" : 1545.439, + "99.99725589302366" : 1545.759, + "99.9972731515581" : 1546.055, + "99.99728609545893" : 1546.903, + "99.99730335399339" : 1548.303, + "99.99731629789422" : 1548.839, + "99.99733355642866" : 1550.247, + "99.99734650032948" : 1550.687, + "99.99736375886393" : 1553.199, + "99.99738533203198" : 1553.695, + "99.99739396129921" : 1554.327, + "99.99740690520004" : 1554.351, + "99.99742416373448" : 1555.399, + "99.9974371076353" : 1555.583, + "99.99745436616975" : 1555.807, + "99.99746731007059" : 1556.543, + "99.99749319787225" : 1556.559, + "99.99750614177307" : 1556.575, + "99.9975147710403" : 1556.791, + "99.99753202957474" : 1556.975, + "99.99754497347557" : 1557.327, + "99.99756223201001" : 1557.407, + "99.99757517591085" : 1557.439, + "99.9975967490789" : 1557.823, + "99.99760537834612" : 1557.847, + "99.99762263688056" : 1558.143, + "99.99763558078139" : 1558.159, + "99.99765283931583" : 1559.103, + "99.99766578321668" : 1559.375, + "99.99768735638473" : 1559.719, + "99.99770461491917" : 1559.855, + "99.99771755882" : 1559.967, + "99.99773050272083" : 1560.183, + "99.99774344662166" : 1560.319, + "99.99776933442332" : 1560.591, + "99.99777364905694" : 1560.815, + "99.997795222225" : 1561.063, + "99.99780385149221" : 1561.175, + "99.99782111002665" : 1561.351, + "99.99783405392748" : 1561.567, + "99.99785562709553" : 1562.487, + "99.99786425636276" : 1563.471, + "99.99788582953082" : 1563.735, + "99.99789445879803" : 1564.895, + "99.99791171733247" : 1589.655, + "99.99792897586691" : 1591.807, + "99.99794623440135" : 1591.815, + "99.9979591783022" : 1592.831, + "99.99797643683664" : 1593.487, + "99.99798938073747" : 1594.303, + "99.99800232463829" : 1598.919, + "99.99801958317273" : 1601.295, + "99.99804115634079" : 1601.311, + "99.99804978560802" : 1601.375, + "99.99806272950885" : 1601.447, + "99.99807998804329" : 1601.503, + "99.99809293194411" : 1601.991, + "99.99811019047856" : 1602.631, + "99.998127449013" : 1602.975, + "99.99814039291384" : 1603.559, + "99.9981662807155" : 1603.863, + "99.99817059534911" : 1604.175, + "99.99818785388355" : 1604.367, + "99.99820079778438" : 1604.807, + "99.99821805631882" : 1605.327, + "99.99823100021966" : 1605.967, + "99.9982482587541" : 1606.559, + "99.99826120265493" : 1606.863, + "99.99827846118937" : 1608.663, + "99.9982914050902" : 1608.671, + "99.99830866362466" : 1609.559, + "99.9983259221591" : 1609.575, + "99.99833886605992" : 1609.591, + "99.99835612459437" : 1610.311, + "99.99838632702964" : 1610.687, + "99.99840358556408" : 1610.703, + "99.99842084409852" : 1611.095, + "99.99843378799936" : 1611.455, + "99.9984510465338" : 1611.599, + "99.99845967580102" : 1612.215, + "99.99847693433546" : 1612.223, + "99.99848556360269" : 1612.239, + "99.99850282213713" : 1612.455, + "99.99851576603795" : 1613.263, + "99.99852870993878" : 1613.271, + "99.99855028310684" : 1614.143, + "99.99855459774045" : 1614.431, + "99.99855891237407" : 1615.063, + "99.99857185627489" : 1615.071, + "99.9985761709085" : 1615.079, + "99.99858480017572" : 1616.343, + "99.99859774407656" : 1616.351, + "99.99861068797739" : 1616.783, + "99.998615002611" : 1616.791, + "99.99863226114545" : 1616.911, + "99.99864089041266" : 1617.071, + "99.9986538343135" : 1617.079, + "99.9986581489471" : 1617.295, + "99.99867109284794" : 1617.375, + "99.99867540748154" : 1617.383, + "99.99868835138238" : 1617.775, + "99.9986969806496" : 1617.847, + "99.99870560991683" : 1617.855, + "99.99871423918404" : 1618.239, + "99.99871855381765" : 1618.263, + "99.99872718308488" : 1618.271, + "99.9987358123521" : 1618.383, + "99.99874444161932" : 1618.391, + "99.99875307088654" : 1618.519, + "99.99876601478738" : 1618.735, + "99.99877464405459" : 1618.855, + "99.99878758795542" : 1618.871, + "99.99879621722265" : 1618.903, + "99.99880484648986" : 1619.167, + "99.9988177903907" : 1619.175, + "99.99882641965792" : 1619.303, + "99.99883504892514" : 1619.479, + "99.99884799282597" : 1619.487, + "99.9988566220932" : 1619.679, + "99.99886525136041" : 1619.687, + "99.99887388062764" : 1619.695, + "99.99888250989486" : 1619.911, + "99.99888682452847" : 1619.919, + "99.99889545379568" : 1619.991, + "99.99890408306291" : 1620.263, + "99.99891271233012" : 1620.423, + "99.99892134159735" : 1620.591, + "99.99893428549818" : 1620.599, + "99.99894291476541" : 1620.615, + "99.99894722939902" : 1620.623, + "99.99895585866624" : 1620.727, + "99.99896448793346" : 1620.879, + "99.99897311720068" : 1621.055, + "99.9989860611015" : 1621.095, + "99.99899900500235" : 1621.191, + "99.99900331963596" : 1621.215, + "99.99901194890317" : 1621.463, + "99.99901626353679" : 1621.479, + "99.999024892804" : 1621.591, + "99.99904215133844" : 1621.663, + "99.99905509523929" : 1621.671, + "99.99907235377373" : 1621.871, + "99.99908098304094" : 1622.095, + "99.99908529767455" : 1622.111, + "99.99909392694178" : 1622.327, + "99.999102556209" : 1622.415, + "99.99911118547622" : 1622.423, + "99.99911550010982" : 1622.655, + "99.99912412937705" : 1622.863, + "99.99913275864427" : 1622.959, + "99.9991457025451" : 1623.039, + "99.99915864644593" : 1623.047, + "99.99916296107955" : 1623.055, + "99.99917159034676" : 1623.119, + "99.99918021961399" : 1623.151, + "99.9991845342476" : 1623.215, + "99.99919747814843" : 1623.311, + "99.99920179278205" : 1623.391, + "99.99921473668287" : 1623.503, + "99.99922336595009" : 1623.791, + "99.99924062448454" : 1623.799, + "99.99924493911814" : 1623.807, + "99.99925788301898" : 1623.815, + "99.99927082691981" : 1623.967, + "99.99927514155343" : 1624.135, + "99.99928808545425" : 1624.327, + "99.99929240008787" : 1624.335, + "99.99930102935508" : 1624.391, + "99.9993053439887" : 1624.399, + "99.99930965862231" : 1624.415, + "99.99931397325592" : 1624.463, + "99.99931828788952" : 1624.783, + "99.99932260252314" : 1624.943, + "99.99932691715675" : 1625.079, + "99.99934417569119" : 1625.087, + "99.9993484903248" : 1625.095, + "99.9993528049584" : 1625.103, + "99.99935711959202" : 1625.111, + "99.99936574885925" : 1625.231, + "99.99937006349285" : 1625.679, + "99.99937437812646" : 1626.231, + "99.9993873220273" : 1626.295, + "99.9993916366609" : 1626.599, + "99.99940026592813" : 1626.607, + "99.99940889519534" : 1626.847, + "99.99941320982896" : 1627.135, + "99.99942615372979" : 1627.455, + "99.99943478299701" : 1627.791, + "99.99944772689784" : 1627.799, + "99.99945204153146" : 1627.807, + "99.99945635616507" : 1628.199, + "99.99946067079868" : 1628.207, + "99.99946498543228" : 1628.623, + "99.9994693000659" : 1628.639, + "99.99947792933312" : 1628.647, + "99.99948224396672" : 1628.655, + "99.99948655860034" : 1629.079, + "99.99949087323395" : 1629.087, + "99.99949950250117" : 1629.095, + "99.99950381713478" : 1629.103, + "99.9995081317684" : 1629.687, + "99.99951676103561" : 1631.839, + "99.99952107566922" : 1634.543, + "99.99952539030284" : 1635.047, + "99.99953401957005" : 1635.055, + "99.9995555927381" : 1635.871, + "99.99955990737172" : 1635.887, + "99.99956422200533" : 1636.407, + "99.99956853663895" : 1636.439, + "99.99957285127255" : 1636.887, + "99.99957716590616" : 1637.295, + "99.99958579517339" : 1637.303, + "99.99959010980699" : 1637.311, + "99.9995944244406" : 1637.319, + "99.99959873907422" : 1637.447, + "99.99960305370783" : 1637.455, + "99.99961168297504" : 1637.799, + "99.99961599760866" : 1637.807, + "99.99962462687589" : 1638.047, + "99.99962894150949" : 1638.063, + "99.99963757077671" : 1638.079, + "99.99964620004393" : 1638.087, + "99.99965914394477" : 1638.239, + "99.99966777321198" : 1638.519, + "99.9996720878456" : 1638.551, + "99.99968934638004" : 1638.695, + "99.99969366101365" : 1638.703, + "99.99970660491448" : 1638.791, + "99.9997152341817" : 1638.799, + "99.9997195488153" : 1638.807, + "99.99972386344892" : 1638.839, + "99.99973249271615" : 1639.175, + "99.99974112198336" : 1639.183, + "99.99975406588419" : 1639.191, + "99.9997583805178" : 1639.519, + "99.99976269515142" : 1639.527, + "99.99976700978503" : 1639.543, + "99.99977132441865" : 1639.639, + "99.99977563905225" : 1639.839, + "99.99977995368586" : 1639.855, + "99.99978426831947" : 1639.863, + "99.99978858295309" : 1639.871, + "99.99979289758669" : 1639.887, + "99.9997972122203" : 1639.911, + "99.99980584148753" : 1640.119, + "99.99981015612113" : 1640.191, + "99.99981447075474" : 1640.487, + "99.99982310002197" : 1640.495, + "99.99983172928918" : 1640.503, + "99.9998360439228" : 1640.559, + "99.99984035855641" : 1640.943, + "99.99985330245724" : 1640.951, + "99.99985761709085" : 1640.967, + "99.99986624635807" : 1643.911, + "99.99987056099168" : 1643.919, + "99.99988350489251" : 1644.279, + "99.99989213415974" : 1644.287, + "99.99989644879335" : 1644.303, + "99.99990076342695" : 1645.439, + "99.99990507806056" : 1645.447, + "99.99991370732779" : 1645.455, + "99.99992665122862" : 1645.463, + "99.99993528049585" : 1646.383, + "99.99993959512945" : 1646.391, + "99.99994390976306" : 1646.399, + "99.99994822439668" : 1646.407, + "99.9999611682975" : 1647.591, + "99.99996979756473" : 1648.391, + "99.99998274146556" : 1648.399, + "99.99999137073277" : 1649.495, + "100.0" : 1650.487 + }, + "endToEndLatencyAvg" : [ 1188.5883396881418, 1194.6058477675049, 1189.0546891004476, 1181.7552756878474, 1197.3203134901821, 1186.0978481625407, 1186.337564815102, 1190.2208971727302, 1183.2124476086105, 1178.9820411335045, 1187.1035993404084, 1183.0913415130183, 1190.4412722124387, 1200.3988212004572, 1187.8690732278124, 1183.7253111630337, 1211.8952429405924, 1237.2087842180285, 1238.6214016398337, 1234.0857767409366, 1229.132701841433, 1232.7870080973116, 1225.410629058533, 1226.9392412322688, 1234.0571072430237, 1240.2302173488947, 1249.703422332389, 1261.204180149996, 1234.8551215107966, 1235.1610475895593, 1239.5436973272647, 1239.4063689430477, 1231.2811921711204, 1225.0768950170288, 1228.0200588038826, 1230.216409609402, 1231.1504982578845, 1239.4018036149603, 1240.0321300488515, 1242.563322887103, 1236.340011358207, 1229.7011093760877, 1244.632279179385, 1232.0437835189564, 1243.7382452289653, 1235.943392761598, 1239.9693913731771, 1247.4807544310834, 1242.1669900865706, 1240.1962765143624, 1240.1473720965932, 1235.8838602829612, 1231.043073762379, 1235.815007508768, 1239.7968391550262, 1244.428972306527, 1262.3434966357104, 1293.3772870486246, 1299.3659686093777, 1291.5035148478405 ], + "endToEndLatency50pct" : [ 1188.007, 1196.007, 1194.007, 1183.007, 1199.007, 1188.007, 1185.007, 1189.007, 1179.007, 1179.007, 1186.007, 1179.007, 1189.007, 1204.007, 1192.007, 1185.007, 1215.007, 1239.007, 1238.007, 1234.007, 1228.007, 1233.007, 1223.007, 1224.007, 1238.007, 1245.007, 1253.007, 1263.007, 1232.007, 1237.007, 1239.007, 1238.007, 1228.007, 1220.007, 1229.007, 1233.007, 1235.007, 1243.007, 1242.007, 1244.007, 1237.007, 1228.007, 1241.007, 1230.007, 1240.007, 1237.007, 1242.007, 1249.007, 1246.007, 1240.007, 1241.007, 1237.007, 1230.007, 1233.007, 1234.007, 1242.007, 1265.007, 1299.007, 1300.007, 1294.007 ], + "endToEndLatency75pct" : [ 1439.007, 1447.007, 1437.007, 1428.007, 1453.007, 1440.007, 1440.007, 1441.007, 1433.007, 1430.007, 1438.007, 1435.007, 1438.007, 1449.007, 1431.007, 1437.007, 1465.007, 1491.007, 1489.007, 1486.007, 1481.007, 1481.007, 1474.007, 1476.007, 1479.007, 1487.007, 1499.007, 1515.007, 1489.007, 1486.007, 1491.007, 1489.007, 1482.007, 1473.007, 1478.007, 1475.007, 1478.007, 1496.007, 1496.007, 1493.007, 1489.007, 1482.007, 1495.007, 1479.007, 1490.007, 1484.007, 1485.007, 1493.007, 1494.007, 1494.007, 1491.007, 1487.007, 1482.007, 1482.007, 1487.007, 1493.007, 1508.007, 1542.007, 1545.007, 1546.007 ], + "endToEndLatency95pct" : [ 1657.007, 1664.007, 1652.007, 1643.007, 1675.007, 1653.007, 1657.007, 1662.007, 1657.007, 1646.007, 1658.007, 1650.007, 1658.007, 1673.007, 1655.007, 1641.007, 1700.007, 1717.007, 1721.007, 1733.007, 1724.007, 1727.007, 1705.007, 1702.007, 1719.007, 1728.007, 1733.007, 1747.007, 1747.007, 1730.007, 1736.007, 1732.007, 1721.007, 1717.007, 1720.007, 1716.007, 1709.007, 1723.007, 1733.007, 1738.007, 1745.007, 1721.007, 1745.007, 1736.007, 1734.007, 1727.007, 1726.007, 1733.007, 1732.007, 1747.007, 1734.007, 1732.007, 1725.007, 1732.007, 1743.007, 1728.007, 1776.007, 1873.007, 1905.007, 1896.007 ], + "endToEndLatency99pct" : [ 1746.007, 1759.007, 1739.007, 1741.007, 1755.007, 1739.007, 1730.007, 1748.007, 1721.007, 1728.007, 1733.007, 1720.007, 1740.007, 1754.007, 1731.007, 1725.007, 1964.007, 1950.007, 1901.007, 1964.007, 1910.007, 1933.007, 1889.007, 1925.007, 1963.007, 1955.007, 1976.007, 1965.007, 2002.007, 1946.007, 1982.007, 1998.007, 1979.007, 1974.007, 1945.007, 1978.007, 1919.007, 1961.007, 1963.007, 1941.007, 2005.007, 1915.007, 1985.007, 1990.007, 2003.007, 1977.007, 1956.007, 1983.007, 2006.007, 2023.007, 1985.007, 1996.007, 1962.007, 1988.007, 2017.007, 1931.007, 2029.007, 2080.007, 2080.007, 2076.007 ], + "endToEndLatency999pct" : [ 1803.007, 1822.007, 1800.007, 1835.007, 1847.007, 1773.007, 1794.007, 1799.007, 1763.007, 1852.007, 1797.007, 1785.007, 1881.007, 1841.007, 1805.007, 1782.007, 2124.015, 2089.007, 2040.007, 2122.015, 2045.007, 2042.007, 2046.007, 2072.007, 2109.007, 2066.007, 2140.015, 2102.015, 2188.015, 2111.007, 2105.007, 2143.007, 2066.007, 2109.007, 2065.007, 2115.007, 2052.007, 2067.007, 2126.015, 2144.015, 2141.007, 2075.007, 2167.007, 2119.007, 2156.015, 2086.007, 2116.015, 2122.015, 2174.015, 2177.007, 2063.007, 2086.007, 2074.007, 2103.007, 2198.015, 2095.007, 2223.007, 2239.007, 2200.015, 2274.015 ], + "endToEndLatency9999pct" : [ 1896.007, 1874.007, 1826.007, 1858.007, 1919.007, 1780.007, 1839.007, 1819.007, 1775.007, 1875.007, 1895.007, 1843.007, 1917.007, 1953.007, 1856.007, 1798.007, 2188.015, 2144.015, 2059.007, 2161.007, 2055.007, 2052.007, 2077.007, 2083.007, 2141.007, 2224.015, 2174.015, 2152.015, 2203.007, 2133.007, 2155.007, 2230.015, 2102.015, 2184.015, 2110.015, 2144.015, 2092.007, 2195.007, 2162.015, 2170.015, 2196.015, 2092.007, 2181.007, 2145.007, 2181.007, 2122.015, 2150.015, 2142.015, 2211.007, 2230.015, 2168.015, 2107.007, 2119.007, 2117.007, 2214.015, 2108.015, 2241.007, 2283.007, 2216.015, 2297.007 ], + "endToEndLatencyMax" : [ 1900.007, 1876.007, 1829.007, 1862.007, 1921.007, 1782.007, 1842.007, 1896.007, 1826.007, 1879.007, 1897.007, 1846.007, 1922.007, 1956.007, 1859.007, 1802.007, 2191.007, 2172.015, 2060.007, 2166.015, 2059.007, 2054.007, 2079.007, 2086.007, 2143.007, 2227.007, 2178.015, 2155.007, 2207.007, 2135.007, 2159.007, 2234.015, 2103.007, 2186.015, 2112.015, 2147.007, 2099.007, 2200.015, 2165.007, 2256.015, 2232.015, 2094.007, 2183.007, 2175.007, 2184.015, 2125.007, 2152.015, 2146.015, 2214.015, 2233.007, 2172.015, 2110.015, 2122.015, 2120.015, 2218.015, 2113.007, 2244.015, 2286.015, 2232.015, 2301.007 ], + "aggregatedEndToEndLatencyQuantiles" : { + "4.314694858307578E-6" : 426.001, + "0.5175821658128604" : 619.003, + "1.0033003100971194" : 640.003, + "1.5002452904026948" : 657.003, + "2.013068347786842" : 672.003, + "2.5321045657669523" : 686.003, + "3.009698139633018" : 698.003, + "3.5033078608131216" : 709.003, + "4.0527367893751505" : 720.003, + "4.552197236783119" : 729.003, + "5.038480606093816" : 737.003, + "5.504502168349901" : 744.003, + "6.065999298430616" : 752.003, + "6.517225772017564" : 758.003, + "7.0695369167449424" : 765.003, + "7.55010763006324" : 771.003, + "8.032607011983202" : 777.003, + "8.535005766589679" : 783.003, + "9.049494296189133" : 789.003, + "9.563827496773687" : 795.003, + "10.000401266621823" : 800.003, + "10.522578582458781" : 806.003, + "11.042059214009296" : 812.003, + "11.568905029682943" : 818.003, + "12.013292711919474" : 823.003, + "12.54954887707909" : 829.003, + "13.086879401258424" : 835.003, + "13.528440958362763" : 840.003, + "14.05918725818832" : 846.003, + "14.586373934755773" : 852.003, + "15.029846901682342" : 857.003, + "15.569442640662288" : 863.003, + "16.018969124475063" : 868.003, + "16.55060425144143" : 874.003, + "17.08478073367934" : 880.003, + "17.526212849937934" : 885.003, + "18.065623057038973" : 891.003, + "18.515973647569684" : 896.003, + "19.059185100840892" : 902.003, + "19.515136165297687" : 907.003, + "20.061398107833718" : 913.003, + "20.509371301497502" : 918.003, + "21.05283300707049" : 924.003, + "21.506264289730034" : 929.003, + "22.051663293294403" : 935.003, + "22.502760326035602" : 940.003, + "23.05463137188743" : 946.003, + "23.52253414110174" : 951.003, + "24.08240463122087" : 957.003, + "24.550065777523116" : 962.003, + "25.006482829024606" : 967.003, + "25.547869166370752" : 973.003, + "26.002159073307098" : 978.003, + "26.549888012094954" : 984.003, + "27.005636285893406" : 989.003, + "27.55314517524349" : 995.003, + "28.01305712958021" : 1000.003, + "28.567525621736742" : 1006.003, + "29.02417998145544" : 1011.003, + "29.571106386999652" : 1017.003, + "30.032925436463746" : 1022.003, + "30.501678200565138" : 1027.003, + "31.0568888202373" : 1033.003, + "31.5301633845502" : 1038.003, + "32.00744198569161" : 1043.003, + "32.578504794273194" : 1049.007, + "33.046567207197256" : 1054.007, + "33.52249962354287" : 1059.007, + "34.09452892377272" : 1065.007, + "34.57081514509672" : 1070.007, + "35.054086857396314" : 1075.007, + "35.553806186495784" : 1080.007, + "36.04598342898293" : 1085.007, + "36.53093355758241" : 1090.007, + "37.009994127700296" : 1095.007, + "37.57998689195702" : 1101.007, + "38.0598241071494" : 1106.007, + "38.55228180480234" : 1111.007, + "39.04177530708762" : 1116.007, + "39.53346498905578" : 1121.007, + "40.0263584708894" : 1126.007, + "40.516421512895974" : 1131.007, + "41.000068603648245" : 1136.007, + "41.585822948222365" : 1142.007, + "42.08238392068555" : 1147.007, + "42.57337893678152" : 1152.007, + "43.06601353692365" : 1157.007, + "43.56029203580679" : 1162.007, + "44.05255988688596" : 1167.007, + "44.55140333292919" : 1172.007, + "45.044676507910346" : 1177.007, + "45.545975015327954" : 1182.007, + "46.044684705830576" : 1187.007, + "46.54472332234956" : 1192.007, + "47.04033937663878" : 1197.007, + "47.54203915067821" : 1202.007, + "48.03513973786503" : 1207.007, + "48.53183878056368" : 1212.007, + "49.029547461859174" : 1217.007, + "49.527627206912484" : 1222.007, + "50.030414284056214" : 1227.007, + "50.33050562614636" : 1230.007, + "50.528817631223895" : 1232.007, + "50.82607421879214" : 1235.007, + "51.02578418500376" : 1237.007, + "51.3275841462578" : 1240.007, + "51.532359564233076" : 1242.007, + "51.829404731753264" : 1245.007, + "52.029114697964886" : 1247.007, + "52.32984892958893" : 1250.007, + "52.53175076078857" : 1252.007, + "52.830422568270336" : 1255.007, + "53.02900208442909" : 1257.007, + "53.32669877087287" : 1260.007, + "53.52599884107296" : 1262.007, + "53.8306551303232" : 1265.007, + "54.03020976751993" : 1267.007, + "54.3334033752132" : 1270.007, + "54.53929629915678" : 1272.007, + "54.84005641894997" : 1275.007, + "55.040284148544586" : 1277.007, + "55.337471700995096" : 1280.007, + "55.5368321769232" : 1282.007, + "55.840582380253196" : 1285.007, + "56.04457683845912" : 1287.007, + "56.3473044591077" : 1290.007, + "56.5464060533443" : 1292.007, + "56.84043956385339" : 1295.007, + "57.038574666441725" : 1297.007, + "57.32950159665283" : 1300.007, + "57.52412453762651" : 1302.007, + "57.8142877668477" : 1305.007, + "58.01025257792231" : 1307.007, + "58.30889418254007" : 1310.007, + "58.51087799294202" : 1312.007, + "58.812319834522825" : 1315.007, + "59.01612876084984" : 1317.007, + "59.322299507995346" : 1320.007, + "59.52597899347661" : 1322.007, + "59.82651043444231" : 1325.007, + "60.02872723836661" : 1327.007, + "60.33303835202819" : 1330.007, + "60.53794752554407" : 1332.007, + "60.84270305277605" : 1335.007, + "61.04280134152493" : 1337.007, + "61.345196730669414" : 1340.007, + "61.54415162528083" : 1342.007, + "61.84391073586689" : 1345.007, + "62.039746106095755" : 1347.007, + "62.34210266298652" : 1350.007, + "62.54267125347495" : 1352.007, + "62.839996876160924" : 1355.007, + "63.040858865899715" : 1357.007, + "63.35030446644268" : 1360.007, + "63.5536258322507" : 1362.007, + "63.756256846881406" : 1364.007, + "64.06190983064391" : 1367.007, + "64.26474795062781" : 1369.007, + "64.56171545364055" : 1372.007, + "64.76051501923706" : 1374.007, + "65.05494979636798" : 1377.007, + "65.35097669590161" : 1380.007, + "65.54777424308386" : 1382.007, + "65.84245064312684" : 1385.007, + "66.04361466150571" : 1387.007, + "66.34612223271652" : 1390.007, + "66.54745020950001" : 1392.007, + "66.75021066497645" : 1394.007, + "67.05703293104557" : 1397.007, + "67.26228296545526" : 1399.007, + "67.56306034402787" : 1402.007, + "67.76389213090266" : 1404.007, + "68.06833700010485" : 1407.007, + "68.27242638159765" : 1409.007, + "68.57590907384643" : 1412.007, + "68.77268073285956" : 1414.007, + "69.07201268865464" : 1417.007, + "69.26648030061342" : 1419.007, + "69.56245110911388" : 1422.007, + "69.75700070027497" : 1424.007, + "70.05260475971248" : 1427.007, + "70.3483210012163" : 1430.007, + "70.54519189821117" : 1432.007, + "70.84439872785536" : 1435.007, + "71.04795740188061" : 1437.007, + "71.25285363131191" : 1439.007, + "71.55319091100898" : 1442.007, + "71.75299580050749" : 1444.007, + "72.05364805292922" : 1447.007, + "72.25079077570015" : 1449.007, + "72.55755695073611" : 1452.007, + "72.76111562476135" : 1454.007, + "73.06405898015284" : 1457.007, + "73.26685826788301" : 1459.007, + "73.56729047086696" : 1462.007, + "73.7672161718215" : 1464.007, + "74.06772172461805" : 1467.007, + "74.26523982584166" : 1469.007, + "74.56379945125711" : 1472.007, + "74.76532590400409" : 1474.007, + "75.06612917074585" : 1477.007, + "75.16557857253498" : 1478.007, + "75.26521782089787" : 1479.007, + "75.46529453617246" : 1481.007, + "75.56391983124365" : 1482.007, + "75.66002534451759" : 1483.007, + "75.7579559737166" : 1484.007, + "75.95629818165814" : 1486.007, + "76.05460418930983" : 1487.007, + "76.15580104251657" : 1488.007, + "76.25451694617979" : 1489.007, + "76.4544038148806" : 1491.007, + "76.55377123746743" : 1492.007, + "76.65576630922297" : 1493.007, + "76.75405074340036" : 1494.007, + "76.95428278768983" : 1496.007, + "77.05660146155974" : 1497.007, + "77.15796658786596" : 1498.007, + "77.25927562313902" : 1499.007, + "77.45977517850972" : 1501.007, + "77.56044995363861" : 1502.007, + "77.66123259613896" : 1503.007, + "77.75964215646724" : 1504.007, + "77.96385666411093" : 1506.007, + "78.06497585281022" : 1507.007, + "78.16477043018803" : 1508.007, + "78.26403430009825" : 1509.007, + "78.46434400889518" : 1511.007, + "78.565812687878" : 1512.007, + "78.66743669587571" : 1513.007, + "78.7668386360214" : 1514.007, + "78.96805443073858" : 1516.007, + "79.06816829553588" : 1517.007, + "79.16833825136635" : 1518.007, + "79.26881023583691" : 1519.007, + "79.46512022250019" : 1521.007, + "79.56356861508219" : 1522.007, + "79.66082183718844" : 1523.007, + "79.75876109577716" : 1524.007, + "79.95539468455482" : 1526.007, + "80.0532864815001" : 1527.007, + "80.15447039062227" : 1528.007, + "80.2528756362557" : 1529.007, + "80.44973790386084" : 1531.007, + "80.55149566739915" : 1532.007, + "80.64942629659816" : 1533.007, + "80.75173634107836" : 1534.007, + "80.95172676245576" : 1536.007, + "81.0512797169215" : 1537.007, + "81.15121667922962" : 1538.007, + "81.25359144413268" : 1539.007, + "81.45734427942654" : 1541.007, + "81.55842463587211" : 1542.007, + "81.65993214710866" : 1543.007, + "81.76074067777816" : 1544.007, + "81.96554629861744" : 1546.007, + "82.06800735741767" : 1547.007, + "82.1714737401199" : 1548.007, + "82.27348175595999" : 1549.007, + "82.37505830231427" : 1550.007, + "82.5798596084587" : 1552.007, + "82.68053438358758" : 1553.007, + "82.78062236021576" : 1554.007, + "82.88155601703615" : 1555.007, + "83.07710661740435" : 1557.007, + "83.17417862232656" : 1558.007, + "83.27295061702294" : 1559.007, + "83.46998547242241" : 1561.007, + "83.56581484522542" : 1562.007, + "83.66027645975835" : 1563.007, + "83.75889312543983" : 1564.007, + "83.95016786320346" : 1566.007, + "84.04651931408434" : 1567.007, + "84.14064869711316" : 1568.007, + "84.33330845192631" : 1570.007, + "84.42811524204791" : 1571.007, + "84.52360375395712" : 1572.007, + "84.71436072833775" : 1574.007, + "84.81159237696971" : 1575.007, + "84.90850473818216" : 1576.007, + "85.00420467013942" : 1577.007, + "85.1918636936118" : 1579.007, + "85.28793900402172" : 1580.007, + "85.38147727385498" : 1581.007, + "85.57006827141674" : 1583.007, + "85.66278243453206" : 1584.007, + "85.75623009577328" : 1585.007, + "85.94378556656905" : 1587.007, + "86.03615023940084" : 1588.007, + "86.1296151594215" : 1589.007, + "86.30943869703118" : 1591.007, + "86.39889526552848" : 1592.007, + "86.58235177620885" : 1594.007, + "86.67407787420161" : 1595.007, + "86.7644362139243" : 1596.007, + "86.94342701542632" : 1598.007, + "87.03280591941618" : 1599.007, + "87.20996297560342" : 1601.007, + "87.29707235009779" : 1602.007, + "87.38272335773006" : 1603.007, + "87.55624744084662" : 1605.007, + "87.6442240690075" : 1606.007, + "87.72933573978248" : 1607.007, + "87.816440799582" : 1608.007, + "87.90311007520081" : 1609.007, + "87.99086233922908" : 1610.007, + "88.07617248596753" : 1611.007, + "88.16062400842918" : 1612.007, + "88.24607222540311" : 1613.007, + "88.33065750340538" : 1614.007, + "88.41386207905298" : 1615.007, + "88.49496539830459" : 1616.007, + "88.58031006260191" : 1617.007, + "88.66230652368918" : 1618.007, + "88.74337532538192" : 1619.007, + "88.82595427027508" : 1620.007, + "88.90759692638397" : 1621.007, + "88.98740583717809" : 1622.007, + "89.06429801424798" : 1623.007, + "89.14396454011178" : 1624.007, + "89.22010164558147" : 1625.007, + "89.29764102688011" : 1626.007, + "89.37285478765014" : 1627.007, + "89.45122690505643" : 1628.007, + "89.52727771662896" : 1629.007, + "89.60199528749028" : 1630.007, + "89.67795549047078" : 1631.007, + "89.75341518884773" : 1632.007, + "89.82836143853652" : 1633.007, + "89.90336377925848" : 1634.007, + "89.9788881980583" : 1635.007, + "90.05329511088982" : 1636.007, + "90.12640761526384" : 1637.007, + "90.20014575039231" : 1638.007, + "90.27146334170529" : 1639.007, + "90.34349285766987" : 1640.007, + "90.41610917213518" : 1641.007, + "90.48809985584604" : 1642.007, + "90.56103545773088" : 1643.007, + "90.6335482195196" : 1644.007, + "90.7056683440762" : 1645.007, + "90.78023921531233" : 1646.007, + "90.85400323860996" : 1647.007, + "90.92734010711662" : 1648.007, + "90.99964144885728" : 1649.007, + "91.07184786731105" : 1650.007, + "91.14358398402527" : 1651.007, + "91.21474193162848" : 1652.007, + "91.2853605423744" : 1653.007, + "91.35544413095789" : 1654.007, + "91.42718024767211" : 1655.007, + "91.49817855156556" : 1656.007, + "91.57014334710728" : 1657.007, + "91.64070586682004" : 1658.007, + "91.71236863372167" : 1659.007, + "91.78171009478953" : 1660.007, + "91.8512672906003" : 1661.007, + "91.92085037458024" : 1662.007, + "91.98837534911274" : 1663.007, + "92.05675894792206" : 1664.007, + "92.12528061696685" : 1665.007, + "92.19082083186454" : 1666.007, + "92.25630927042393" : 1667.007, + "92.32237587809433" : 1668.007, + "92.38762700843652" : 1669.007, + "92.4520195145019" : 1670.007, + "92.51619628582438" : 1671.007, + "92.58020909874223" : 1672.007, + "92.64312597916606" : 1673.007, + "92.70853675321801" : 1674.007, + "92.77539726474234" : 1675.007, + "92.84393619256656" : 1676.007, + "92.90923478455218" : 1677.007, + "92.97131461417351" : 1678.007, + "93.03404596271845" : 1679.007, + "93.09707502520861" : 1680.007, + "93.16138986676654" : 1681.007, + "93.22531638578722" : 1682.007, + "93.28828935724422" : 1683.007, + "93.35014913742778" : 1684.007, + "93.41255256916348" : 1685.007, + "93.47348900464736" : 1686.007, + "93.53334676641666" : 1687.007, + "93.59281189095385" : 1688.007, + "93.65216483342473" : 1689.007, + "93.71178528697682" : 1690.007, + "93.77109939719398" : 1691.007, + "93.82962823294693" : 1692.007, + "93.88818295686902" : 1693.007, + "93.9483729501424" : 1694.007, + "94.00811852984539" : 1695.007, + "94.06742832536769" : 1696.007, + "94.12719547854496" : 1697.007, + "94.18659588265929" : 1698.007, + "94.24466304606239" : 1699.007, + "94.30437842290137" : 1700.007, + "94.36286842640058" : 1701.007, + "94.42102188370085" : 1702.007, + "94.4765390624427" : 1703.007, + "94.53149964554781" : 1704.007, + "94.58828965927286" : 1705.007, + "94.64255126181094" : 1706.007, + "94.69623038054314" : 1707.007, + "94.74987498171647" : 1708.007, + "94.80254014715699" : 1709.007, + "94.85498094846486" : 1710.007, + "94.90733977057042" : 1711.007, + "94.96028970587156" : 1712.007, + "95.01143178402708" : 1713.007, + "95.06278959692553" : 1714.007, + "95.11271924582586" : 1715.007, + "95.16240295711927" : 1716.007, + "95.2121470741407" : 1717.007, + "95.26124830162824" : 1718.007, + "95.30889116225367" : 1719.007, + "95.35713376546441" : 1720.007, + "95.4043667300783" : 1721.007, + "95.45065477651822" : 1722.007, + "95.4959029814973" : 1723.007, + "95.54003368050806" : 1724.007, + "95.58322809073458" : 1725.007, + "95.62599966086498" : 1726.007, + "95.66757606051964" : 1727.007, + "95.7090575368874" : 1728.007, + "95.74934384277942" : 1729.007, + "95.78877152439463" : 1730.007, + "95.82805682107953" : 1731.007, + "95.86645329062361" : 1732.007, + "95.90337844922101" : 1733.007, + "95.94042873396928" : 1734.007, + "95.97661607974591" : 1735.007, + "96.01228997683441" : 1736.007, + "96.04764027180852" : 1737.007, + "96.08302939903636" : 1738.007, + "96.11784467184803" : 1739.007, + "96.1533546105319" : 1740.007, + "96.18756582606343" : 1741.007, + "96.22033161881743" : 1742.007, + "96.25345553124464" : 1743.007, + "96.28635507953925" : 1744.007, + "96.31775311402315" : 1745.007, + "96.34827958014567" : 1746.007, + "96.37811569509087" : 1747.007, + "96.40790866308748" : 1748.007, + "96.46620019062321" : 1750.007, + "96.4947332677212" : 1751.007, + "96.52290391045109" : 1752.007, + "96.5502029848196" : 1753.007, + "96.57809748707857" : 1754.007, + "96.60430925834278" : 1755.007, + "96.62921367706494" : 1756.007, + "96.67821135187587" : 1758.007, + "96.70270155989164" : 1759.007, + "96.72633314363058" : 1760.007, + "96.77031282832131" : 1762.007, + "96.79238680721642" : 1763.007, + "96.81353312671698" : 1764.007, + "96.85591637431014" : 1766.007, + "96.87635508385394" : 1767.007, + "96.89662552029827" : 1768.007, + "96.9165852987128" : 1769.007, + "96.93707146990005" : 1770.007, + "96.95747997657983" : 1771.007, + "96.97715929982857" : 1772.007, + "96.99650639157323" : 1773.007, + "97.01573267186184" : 1774.007, + "97.03431174792172" : 1775.007, + "97.05176037392872" : 1776.007, + "97.06853590753782" : 1777.007, + "97.08553149058469" : 1778.007, + "97.10254864710585" : 1779.007, + "97.11967367099848" : 1780.007, + "97.13643194582815" : 1781.007, + "97.15212017633294" : 1782.007, + "97.16716551730387" : 1783.007, + "97.18214613785192" : 1784.007, + "97.197338178448" : 1785.007, + "97.21187870012051" : 1786.007, + "97.22652708916446" : 1787.007, + "97.24147319215363" : 1788.007, + "97.25632868655079" : 1789.007, + "97.2701227660128" : 1790.007, + "97.28472800810817" : 1791.007, + "97.29828477935298" : 1792.007, + "97.32441025672003" : 1794.007, + "97.33759596420701" : 1795.007, + "97.35011720868583" : 1796.007, + "97.36298794344816" : 1797.007, + "97.37532797074292" : 1798.007, + "97.39993467551984" : 1800.007, + "97.41184754802363" : 1801.007, + "97.4238251409503" : 1802.007, + "97.44706408745714" : 1804.007, + "97.458213258971" : 1805.007, + "97.46922436024941" : 1806.007, + "97.49124224811135" : 1808.007, + "97.50231375511777" : 1809.007, + "97.52387428532474" : 1811.007, + "97.53449274937103" : 1812.007, + "97.55553983088986" : 1814.007, + "97.566710575878" : 1815.007, + "97.58874140782453" : 1817.007, + "97.59916139590734" : 1818.007, + "97.60968062197189" : 1819.007, + "97.63056805978096" : 1821.007, + "97.64150149655191" : 1822.007, + "97.66302319450514" : 1824.007, + "97.6737710993972" : 1825.007, + "97.69627223308326" : 1827.007, + "97.70712800534677" : 1828.007, + "97.7293745720362" : 1830.007, + "97.73991968626991" : 1831.007, + "97.75062444421337" : 1832.007, + "97.77220223319976" : 1834.007, + "97.78359734232056" : 1835.007, + "97.80539518074472" : 1837.007, + "97.81607405051903" : 1838.007, + "97.83837670824163" : 1840.007, + "97.84946547402748" : 1841.007, + "97.86062758962592" : 1842.007, + "97.88372415120244" : 1844.007, + "97.89505885459522" : 1845.007, + "97.91642522353355" : 1847.007, + "97.92783759143377" : 1848.007, + "97.93836544688804" : 1849.007, + "97.95995617995902" : 1851.007, + "97.97096728123742" : 1852.007, + "97.99221715341459" : 1854.007, + "98.00352165394335" : 1855.007, + "98.02612634030602" : 1857.007, + "98.03722805017645" : 1858.007, + "98.04853255070522" : 1859.007, + "98.07100348152728" : 1861.007, + "98.08235544369948" : 1862.007, + "98.10400226780362" : 1864.007, + "98.11488824293113" : 1865.007, + "98.12635670186451" : 1866.007, + "98.14853423343621" : 1868.007, + "98.15964888739121" : 1869.007, + "98.18322869479186" : 1871.007, + "98.19457634226922" : 1872.007, + "98.20545800270186" : 1873.007, + "98.2265352870847" : 1875.007, + "98.23656695263026" : 1876.007, + "98.25717824996839" : 1878.007, + "98.26763707030493" : 1879.007, + "98.28836054970938" : 1881.007, + "98.29867267042074" : 1882.007, + "98.31947381433264" : 1884.007, + "98.33011385185323" : 1885.007, + "98.35080712839367" : 1887.007, + "98.36148599816798" : 1888.007, + "98.38173054644317" : 1890.007, + "98.39154216255095" : 1891.007, + "98.4104966170635" : 1893.007, + "98.43026223420941" : 1895.007, + "98.44016014421436" : 1896.007, + "98.45001059257588" : 1897.007, + "98.4597057119225" : 1898.007, + "98.46921961408506" : 1899.007, + "98.47871194277334" : 1900.007, + "98.48784183709351" : 1901.007, + "98.49714863390288" : 1902.007, + "98.5063691368151" : 1903.007, + "98.51569750709875" : 1904.007, + "98.52519415048188" : 1905.007, + "98.5342377509049" : 1906.007, + "98.54321231621017" : 1907.007, + "98.55285134452363" : 1908.007, + "98.56217540011244" : 1909.007, + "98.5720733101174" : 1910.007, + "98.58167782087199" : 1911.007, + "98.59120035242428" : 1912.007, + "98.60047694636964" : 1913.007, + "98.60987003707618" : 1914.007, + "98.6194184567976" : 1915.007, + "98.62807804937823" : 1916.007, + "98.63752723111793" : 1917.007, + "98.64651042581292" : 1918.007, + "98.65581290792743" : 1919.007, + "98.66536995703858" : 1920.007, + "98.67445670441018" : 1921.007, + "98.6834787313589" : 1922.007, + "98.69260862567909" : 1923.007, + "98.70205349272392" : 1924.007, + "98.71151561854818" : 1925.007, + "98.72104246479533" : 1926.007, + "98.73075052822652" : 1927.007, + "98.73992788419014" : 1928.007, + "98.74925625447379" : 1929.007, + "98.75869680682378" : 1930.007, + "98.76784827461825" : 1931.007, + "98.77665888151891" : 1932.007, + "98.78546085902985" : 1933.007, + "98.7948021733981" : 1934.007, + "98.80371633297536" : 1935.007, + "98.81258734560404" : 1936.007, + "98.82163094602706" : 1937.007, + "98.83023013287966" : 1938.007, + "98.83885952259627" : 1939.007, + "98.84758815029463" : 1940.007, + "98.85626500165469" : 1941.007, + "98.86500225874276" : 1942.007, + "98.87370499827196" : 1943.007, + "98.88217474427883" : 1944.007, + "98.89105438629721" : 1945.007, + "98.8993342857303" : 1946.007, + "98.90774362600915" : 1947.007, + "98.91639458920007" : 1948.007, + "98.924678803328" : 1949.007, + "98.93307519952228" : 1950.007, + "98.94126449036334" : 1951.007, + "98.94976443923422" : 1952.007, + "98.95796667415985" : 1953.007, + "98.96592297147858" : 1954.007, + "98.97356861076749" : 1955.007, + "98.98127034108957" : 1956.007, + "98.98912308573169" : 1957.007, + "98.99739867046992" : 1958.007, + "99.00588136056136" : 1959.007, + "99.01415263060474" : 1960.007, + "99.02251882393499" : 1961.007, + "99.03070811477606" : 1962.007, + "99.03856517411305" : 1963.007, + "99.04665091227751" : 1964.007, + "99.05473233574712" : 1965.007, + "99.06283964738587" : 1966.007, + "99.07112817620869" : 1967.007, + "99.07914487925542" : 1968.007, + "99.08771386324402" : 1969.007, + "99.09678766653104" : 1970.007, + "99.10545157380652" : 1971.007, + "99.11425355131747" : 1972.007, + "99.12283116469578" : 1973.007, + "99.13186613572908" : 1974.007, + "99.14130668807906" : 1975.007, + "99.1501604419283" : 1976.007, + "99.15942840648395" : 1977.007, + "99.16857124488871" : 1978.007, + "99.17751129263512" : 1979.007, + "99.18680083066505" : 1980.007, + "99.19587894864694" : 1981.007, + "99.20462052042987" : 1982.007, + "99.21368569432717" : 1983.007, + "99.22219427258776" : 1984.007, + "99.23114726441874" : 1985.007, + "99.23975508066107" : 1986.007, + "99.24861314920517" : 1987.007, + "99.25711309807603" : 1988.007, + "99.26547497671143" : 1989.007, + "99.27359954712962" : 1990.007, + "99.28196142576503" : 1991.007, + "99.2906771093788" : 1992.007, + "99.29915979947025" : 1993.007, + "99.30756051035937" : 1994.007, + "99.31603025636622" : 1995.007, + "99.32398655368495" : 1996.007, + "99.33220604739002" : 1997.007, + "99.3403435618928" : 1998.007, + "99.347980571792" : 1999.007, + "99.35577722540096" : 2000.007, + "99.36393199868316" : 2001.007, + "99.37207814257565" : 2002.007, + "99.38001286642007" : 2003.007, + "99.38796484904393" : 2004.007, + "99.39612825171585" : 2005.007, + "99.40398962574768" : 2006.007, + "99.41192434959211" : 2007.007, + "99.41997125550286" : 2008.007, + "99.42788009117812" : 2009.007, + "99.435314310419" : 2010.007, + "99.442744214965" : 2011.007, + "99.45043300120251" : 2012.007, + "99.45791468208681" : 2013.007, + "99.4659356998284" : 2014.007, + "99.47342169540757" : 2015.007, + "99.48094652324046" : 2016.007, + "99.48857490374995" : 2017.007, + "99.49613856383655" : 2018.007, + "99.50396110561466" : 2019.007, + "99.51144278649898" : 2020.007, + "99.51931278992053" : 2021.007, + "99.52635005723442" : 2022.007, + "99.5328220995219" : 2023.007, + "99.53936317692708" : 2024.007, + "99.54623648583636" : 2025.007, + "99.5523590378403" : 2026.007, + "99.55850316331853" : 2027.007, + "99.56494068804713" : 2028.007, + "99.5712876041837" : 2029.007, + "99.57741878557735" : 2030.007, + "99.58374844293449" : 2031.007, + "99.59005652681734" : 2032.007, + "99.5963732400899" : 2033.007, + "99.6023447777738" : 2034.007, + "99.60804448968162" : 2035.007, + "99.61413252412669" : 2036.007, + "99.61985812420367" : 2037.007, + "99.62556215080635" : 2038.007, + "99.63088216956665" : 2039.007, + "99.63629711161381" : 2040.007, + "99.64148337483351" : 2041.007, + "99.64679044950923" : 2042.007, + "99.65192062169575" : 2043.007, + "99.65700764693369" : 2044.007, + "99.66231903630427" : 2045.007, + "99.66744489379595" : 2046.007, + "99.67222557569895" : 2047.007, + "99.67689839023049" : 2048.007, + "99.68189480687641" : 2049.007, + "99.68677472676116" : 2050.007, + "99.69218966880834" : 2051.007, + "99.69714293850568" : 2052.007, + "99.70179849425779" : 2053.007, + "99.70660074963509" : 2054.007, + "99.71096290613683" : 2055.007, + "99.71541998592546" : 2056.007, + "99.71983823346038" : 2057.007, + "99.72414429892896" : 2058.007, + "99.72861000810731" : 2059.007, + "99.73287724132217" : 2060.007, + "99.7370452365553" : 2061.007, + "99.74121754648328" : 2062.007, + "99.74510077185576" : 2063.007, + "99.74913932624314" : 2064.007, + "99.75316493654594" : 2065.007, + "99.75709993825672" : 2066.007, + "99.76111260447495" : 2067.007, + "99.76506486496515" : 2068.007, + "99.7690861605731" : 2069.007, + "99.77277090998209" : 2070.007, + "99.77650312103452" : 2071.007, + "99.78023964678182" : 2072.007, + "99.78397185783426" : 2073.007, + "99.78777310400443" : 2074.007, + "99.7915743501746" : 2075.007, + "99.79528498775274" : 2076.007, + "99.79882303753655" : 2077.007, + "99.80209357623914" : 2078.007, + "99.80512680672454" : 2079.007, + "99.80814709312536" : 2080.007, + "99.81133565262564" : 2081.007, + "99.81472700278427" : 2082.007, + "99.8182521084835" : 2083.007, + "99.82163051455757" : 2084.007, + "99.82498303246247" : 2085.007, + "99.82837869731596" : 2086.007, + "99.83161471845969" : 2087.007, + "99.83472129875767" : 2088.007, + "99.83803929910371" : 2089.007, + "99.84134004067032" : 2090.007, + "99.84433443890198" : 2091.007, + "99.84744533389483" : 2092.007, + "99.8503663823139" : 2093.007, + "99.85339961279928" : 2094.007, + "99.85635949347208" : 2095.007, + "99.85910795409683" : 2096.007, + "99.86228356951254" : 2097.007, + "99.86529954121849" : 2098.015, + "99.86800916958951" : 2099.007, + "99.87071879796054" : 2100.015, + "99.87344999980584" : 2101.007, + "99.8762804396329" : 2102.015, + "99.87904615903706" : 2103.007, + "99.88178599027209" : 2104.015, + "99.88414181366473" : 2105.007, + "99.88668748363112" : 2106.015, + "99.88923315359753" : 2107.007, + "99.89167095619247" : 2108.015, + "99.89391891221365" : 2109.007, + "99.8960244833045" : 2110.015, + "99.8985183769326" : 2111.007, + "99.90079653581779" : 2112.015, + "99.90278992484232" : 2113.007, + "99.90481351673088" : 2114.015, + "99.90680690575542" : 2115.007, + "99.90899445604857" : 2116.015, + "99.91094038342968" : 2117.007, + "99.91294240184392" : 2118.015, + "99.91473300021012" : 2119.007, + "99.91628197566426" : 2120.015, + "99.91764973393434" : 2121.007, + "99.91910378610159" : 2122.015, + "99.92063550277629" : 2123.007, + "99.92233117785561" : 2124.015, + "99.92385426514059" : 2125.007, + "99.92547659040731" : 2126.015, + "99.92685729276197" : 2127.007, + "99.92823799511663" : 2128.015, + "99.92972225014789" : 2129.007, + "99.9310770643334" : 2130.015, + "99.93241461973948" : 2131.007, + "99.93343288772603" : 2132.015, + "99.93439074998457" : 2133.007, + "99.93538744449684" : 2134.015, + "99.93634530675538" : 2135.007, + "99.93726002206535" : 2136.015, + "99.93806255530899" : 2137.007, + "99.93881331221434" : 2138.015, + "99.93951660747625" : 2139.007, + "99.94028030846617" : 2140.015, + "99.94101380659208" : 2141.007, + "99.94182065453057" : 2142.015, + "99.94272242575596" : 2143.007, + "99.94347749735617" : 2144.015, + "99.94431023346382" : 2145.007, + "99.94521631938407" : 2146.015, + "99.94604474079686" : 2147.007, + "99.9468170711765" : 2148.015, + "99.94764980728415" : 2149.007, + "99.94856452259411" : 2150.015, + "99.94930665010975" : 2151.007, + "99.9500660364048" : 2152.015, + "99.95087719903817" : 2153.007, + "99.95181348782242" : 2154.015, + "99.95282312641926" : 2155.007, + "99.95365586252692" : 2156.015, + "99.95459215131118" : 2157.007, + "99.95551549601085" : 2158.015, + "99.95644315540538" : 2159.007, + "99.95728883559761" : 2160.015, + "99.95809568353611" : 2161.007, + "99.95876877593402" : 2162.015, + "99.95954542100851" : 2163.007, + "99.960291863219" : 2164.015, + "99.96097789970146" : 2165.007, + "99.96159921576107" : 2166.015, + "99.96225073468467" : 2167.007, + "99.96294540055685" : 2168.015, + "99.96373498971593" : 2169.007, + "99.96442534089326" : 2170.015, + "99.96504665695285" : 2171.007, + "99.9657240640456" : 2172.015, + "99.96641441522293" : 2173.007, + "99.96719537499229" : 2174.015, + "99.96795476128734" : 2175.007, + "99.9686537418544" : 2176.015, + "99.96936135181116" : 2177.007, + "99.97009916463193" : 2178.015, + "99.97089738318071" : 2179.007, + "99.9716136225272" : 2180.015, + "99.97249382027829" : 2181.007, + "99.97336970333453" : 2182.015, + "99.97402985164784" : 2183.007, + "99.97476766446862" : 2184.015, + "99.97535446296935" : 2185.007, + "99.97602324067239" : 2186.015, + "99.97661003917311" : 2187.007, + "99.97726587279158" : 2188.015, + "99.97786561537688" : 2189.007, + "99.97843515509818" : 2190.015, + "99.97903058298863" : 2191.007, + "99.97956991984591" : 2192.015, + "99.98007042444948" : 2193.007, + "99.98058818783248" : 2194.015, + "99.98106280426688" : 2195.007, + "99.98157193826017" : 2196.015, + "99.98211990450717" : 2197.007, + "99.98269375892333" : 2198.015, + "99.98327192803434" : 2199.007, + "99.98374654446876" : 2200.015, + "99.98407446127798" : 2201.007, + "99.98441963686665" : 2202.015, + "99.98480364470905" : 2203.007, + "99.98518765255143" : 2204.015, + "99.985688157155" : 2205.007, + "99.98614551480998" : 2206.015, + "99.9866805369724" : 2207.007, + "99.9871163211531" : 2208.015, + "99.98743560857261" : 2209.007, + "99.98775489599213" : 2210.015, + "99.98816047730881" : 2211.007, + "99.98860489087922" : 2212.015, + "99.98891123421414" : 2213.007, + "99.98921757754908" : 2214.015, + "99.98952392088403" : 2215.007, + "99.98987772586241" : 2216.015, + "99.9902099573665" : 2217.007, + "99.9904904125323" : 2218.015, + "99.99078812647751" : 2219.007, + "99.99109878450732" : 2220.015, + "99.99140512784226" : 2221.007, + "99.9917114711772" : 2222.015, + "99.992052332071" : 2223.007, + "99.99236730479565" : 2224.015, + "99.99269090691003" : 2225.007, + "99.99295841799125" : 2226.015, + "99.99320435559817" : 2227.007, + "99.99337694339249" : 2228.015, + "99.9936142516097" : 2229.007, + "99.99386881860634" : 2230.015, + "99.99408455334925" : 2231.007, + "99.99425714114359" : 2232.015, + "99.99444698771735" : 2233.007, + "99.99453759630939" : 2234.015, + "99.9946282049014" : 2235.007, + "99.99474038696772" : 2236.015, + "99.9948568837289" : 2237.007, + "99.99496475110035" : 2238.015, + "99.99506830377696" : 2239.007, + "99.99516322706384" : 2240.015, + "99.99534012955303" : 2241.007, + "99.99547388509363" : 2242.015, + "99.99557312307537" : 2243.007, + "99.99570687861599" : 2244.015, + "99.995767284344" : 2245.007, + "99.99584494885146" : 2246.015, + "99.99590966927433" : 2247.007, + "99.99598301908692" : 2248.015, + "99.99609520115324" : 2249.007, + "99.99618580974526" : 2250.015, + "99.99628073303214" : 2251.007, + "99.99638428570874" : 2252.015, + "99.99650509716477" : 2253.007, + "99.99662159392595" : 2254.015, + "99.99669494373853" : 2255.007, + "99.99675534946655" : 2256.015, + "99.99679849641514" : 2257.007, + "99.99684595805857" : 2258.015, + "99.99692362256603" : 2259.007, + "99.9969883429889" : 2260.015, + "99.99704874871692" : 2261.007, + "99.99710915444493" : 2262.015, + "99.99716524547809" : 2263.007, + "99.9972170218164" : 2264.015, + "99.99726879815469" : 2265.007, + "99.99732488918785" : 2266.015, + "99.99739392430558" : 2267.007, + "99.9974543300336" : 2268.015, + "99.9975061063719" : 2269.007, + "99.99757082679477" : 2270.015, + "99.9976614353868" : 2271.007, + "99.99773478519938" : 2272.015, + "99.99781244970684" : 2273.007, + "99.99790305829886" : 2274.015, + "99.99797209341659" : 2275.007, + "99.9980756460932" : 2276.015, + "99.99817919876979" : 2277.007, + "99.99830432492068" : 2278.015, + "99.99839061881785" : 2279.007, + "99.99850280088417" : 2280.015, + "99.99861066825562" : 2281.007, + "99.99869696215279" : 2282.015, + "99.99879188543967" : 2283.007, + "99.99892132628543" : 2284.015, + "99.99904213774145" : 2285.007, + "99.99911117285919" : 2286.015, + "99.99915000511291" : 2287.007, + "99.99920609614607" : 2288.015, + "99.99925787248438" : 2289.007, + "99.99931396351752" : 2290.015, + "99.9993786839404" : 2291.007, + "99.99944340436328" : 2292.015, + "99.99951675417587" : 2293.007, + "99.99960736276789" : 2294.015, + "99.99965050971647" : 2295.007, + "99.99978426525709" : 2296.015, + "99.99987055915425" : 2297.007, + "99.99990507671312" : 2298.015, + "99.99995253835655" : 2299.007, + "99.99999137061029" : 2300.015, + "100.0" : 2301.007 + }, + "aggregatedEndToEndLatencyAvg" : 1226.890877794164, + "aggregatedEndToEndLatency50pct" : 1227.007, + "aggregatedEndToEndLatency75pct" : 1477.007, + "aggregatedEndToEndLatency95pct" : 1713.007, + "aggregatedEndToEndLatency99pct" : 1959.007, + "aggregatedEndToEndLatency999pct" : 2112.015, + "aggregatedEndToEndLatency9999pct" : 2217.007, + "aggregatedEndToEndLatencyMax" : 2301.007 +} \ No newline at end of file diff --git a/blog/workloads/1-topic-100-partitions-1kb-4-producers-1000k-rate.yaml b/blog/workloads/1-topic-100-partitions-1kb-4-producers-1000k-rate.yaml new file mode 100644 index 00000000..6a61a35d --- /dev/null +++ b/blog/workloads/1-topic-100-partitions-1kb-4-producers-1000k-rate.yaml @@ -0,0 +1,31 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: 100-partitions-1000K-rate-4-producer + +topics: 1 +partitionsPerTopic: 100 +messageSize: 1024 +payloadFile: "payload/payload-1Kb.data" +subscriptionsPerTopic: 1 +consumerPerSubscription: 4 +producersPerTopic: 4 +producerRate: 1000000 +consumerBacklogSizeGB: 0 +testDurationMinutes: 10 diff --git a/blog/workloads/1-topic-100-partitions-1kb-4-producers-100k-rate.yaml b/blog/workloads/1-topic-100-partitions-1kb-4-producers-100k-rate.yaml new file mode 100644 index 00000000..c7e66698 --- /dev/null +++ b/blog/workloads/1-topic-100-partitions-1kb-4-producers-100k-rate.yaml @@ -0,0 +1,31 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: 100-partitions-100K-rate-4-producer + +topics: 1 +partitionsPerTopic: 100 +messageSize: 1024 +payloadFile: "payload/payload-1Kb.data" +subscriptionsPerTopic: 1 +consumerPerSubscription: 4 +producersPerTopic: 4 +producerRate: 100000 +consumerBacklogSizeGB: 0 +testDurationMinutes: 10 diff --git a/blog/workloads/1-topic-100-partitions-1kb-4-producers-10k-rate.yaml b/blog/workloads/1-topic-100-partitions-1kb-4-producers-10k-rate.yaml new file mode 100644 index 00000000..2d0dd57e --- /dev/null +++ b/blog/workloads/1-topic-100-partitions-1kb-4-producers-10k-rate.yaml @@ -0,0 +1,31 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: 100-partitions-10K-rate-4-producer + +topics: 1 +partitionsPerTopic: 100 +messageSize: 1024 +payloadFile: "payload/payload-1Kb.data" +subscriptionsPerTopic: 1 +consumerPerSubscription: 4 +producersPerTopic: 4 +producerRate: 10000 +consumerBacklogSizeGB: 0 +testDurationMinutes: 10 diff --git a/blog/workloads/1-topic-100-partitions-1kb-4-producers-200k-rate.yaml b/blog/workloads/1-topic-100-partitions-1kb-4-producers-200k-rate.yaml new file mode 100644 index 00000000..99f54f16 --- /dev/null +++ b/blog/workloads/1-topic-100-partitions-1kb-4-producers-200k-rate.yaml @@ -0,0 +1,31 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: 100-partitions-200K-rate-4-producer + +topics: 1 +partitionsPerTopic: 100 +messageSize: 1024 +payloadFile: "payload/payload-1Kb.data" +subscriptionsPerTopic: 1 +consumerPerSubscription: 4 +producersPerTopic: 4 +producerRate: 200000 +consumerBacklogSizeGB: 0 +testDurationMinutes: 10 diff --git a/blog/workloads/1-topic-100-partitions-1kb-4-producers-40k-rate.yaml b/blog/workloads/1-topic-100-partitions-1kb-4-producers-40k-rate.yaml new file mode 100644 index 00000000..5ac29359 --- /dev/null +++ b/blog/workloads/1-topic-100-partitions-1kb-4-producers-40k-rate.yaml @@ -0,0 +1,31 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: 100-partitions-40K-rate-4-producer + +topics: 1 +partitionsPerTopic: 100 +messageSize: 1024 +payloadFile: "payload/payload-1Kb.data" +subscriptionsPerTopic: 1 +consumerPerSubscription: 4 +producersPerTopic: 4 +producerRate: 40000 +consumerBacklogSizeGB: 0 +testDurationMinutes: 10 diff --git a/blog/workloads/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml b/blog/workloads/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml new file mode 100644 index 00000000..8e40a479 --- /dev/null +++ b/blog/workloads/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml @@ -0,0 +1,31 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: 100-partitions-500K-rate-4-producer + +topics: 1 +partitionsPerTopic: 100 +messageSize: 1024 +payloadFile: "payload/payload-1Kb.data" +subscriptionsPerTopic: 1 +consumerPerSubscription: 4 +producersPerTopic: 4 +producerRate: 500000 +consumerBacklogSizeGB: 0 +testDurationMinutes: 10 diff --git a/blog/workloads/1-topic-100-partitions-1kb-4-producers-50k-rate.yaml b/blog/workloads/1-topic-100-partitions-1kb-4-producers-50k-rate.yaml new file mode 100644 index 00000000..ed6be664 --- /dev/null +++ b/blog/workloads/1-topic-100-partitions-1kb-4-producers-50k-rate.yaml @@ -0,0 +1,31 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: 100-partitions-50K-rate-4-producer + +topics: 1 +partitionsPerTopic: 100 +messageSize: 1024 +payloadFile: "payload/payload-1Kb.data" +subscriptionsPerTopic: 1 +consumerPerSubscription: 4 +producersPerTopic: 4 +producerRate: 50000 +consumerBacklogSizeGB: 0 +testDurationMinutes: 10 diff --git a/blog/workloads/1-topic-100-partitions-1kb-4-producers-75k-rate.yaml b/blog/workloads/1-topic-100-partitions-1kb-4-producers-75k-rate.yaml new file mode 100644 index 00000000..499fe750 --- /dev/null +++ b/blog/workloads/1-topic-100-partitions-1kb-4-producers-75k-rate.yaml @@ -0,0 +1,31 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: 100-partitions-75K-rate-4-producer + +topics: 1 +partitionsPerTopic: 100 +messageSize: 1024 +payloadFile: "payload/payload-1Kb.data" +subscriptionsPerTopic: 1 +consumerPerSubscription: 4 +producersPerTopic: 4 +producerRate: 75000 +consumerBacklogSizeGB: 0 +testDurationMinutes: 10 diff --git a/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-1000k-rate.yaml b/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-1000k-rate.yaml new file mode 100644 index 00000000..6a61a35d --- /dev/null +++ b/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-1000k-rate.yaml @@ -0,0 +1,31 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: 100-partitions-1000K-rate-4-producer + +topics: 1 +partitionsPerTopic: 100 +messageSize: 1024 +payloadFile: "payload/payload-1Kb.data" +subscriptionsPerTopic: 1 +consumerPerSubscription: 4 +producersPerTopic: 4 +producerRate: 1000000 +consumerBacklogSizeGB: 0 +testDurationMinutes: 10 diff --git a/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-100k-rate.yaml b/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-100k-rate.yaml new file mode 100644 index 00000000..07396ede --- /dev/null +++ b/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-100k-rate.yaml @@ -0,0 +1,31 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: 100-partitions-100K-rate-4-producer + +topics: 1 +partitionsPerTopic: 24 +messageSize: 1024 +payloadFile: "payload/payload-1Kb.data" +subscriptionsPerTopic: 1 +consumerPerSubscription: 24 +producersPerTopic: 24 +producerRate: 100000 +consumerBacklogSizeGB: 0 +testDurationMinutes: 10 diff --git a/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-10k-rate.yaml b/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-10k-rate.yaml new file mode 100644 index 00000000..3c01c7b1 --- /dev/null +++ b/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-10k-rate.yaml @@ -0,0 +1,31 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: 100-partitions-10K-rate-4-producer + +topics: 1 +partitionsPerTopic: 24 +messageSize: 1024 +payloadFile: "payload/payload-1Kb.data" +subscriptionsPerTopic: 1 +consumerPerSubscription: 24 +producersPerTopic: 24 +producerRate: 10000 +consumerBacklogSizeGB: 0 +testDurationMinutes: 10 diff --git a/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-200k-rate.yaml b/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-200k-rate.yaml new file mode 100644 index 00000000..4c18faa4 --- /dev/null +++ b/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-200k-rate.yaml @@ -0,0 +1,31 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: 100-partitions-200K-rate-4-producer + +topics: 1 +partitionsPerTopic: 24 +messageSize: 1024 +payloadFile: "payload/payload-1Kb.data" +subscriptionsPerTopic: 1 +consumerPerSubscription: 24 +producersPerTopic: 24 +producerRate: 200000 +consumerBacklogSizeGB: 0 +testDurationMinutes: 10 diff --git a/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml b/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml new file mode 100644 index 00000000..958e43b8 --- /dev/null +++ b/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml @@ -0,0 +1,31 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: 100-partitions-500K-rate-4-producer + +topics: 1 +partitionsPerTopic: 24 +messageSize: 1024 +payloadFile: "payload/payload-1Kb.data" +subscriptionsPerTopic: 1 +consumerPerSubscription: 24 +producersPerTopic: 24 +producerRate: 500000 +consumerBacklogSizeGB: 0 +testDurationMinutes: 10 diff --git a/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-50k-rate.yaml b/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-50k-rate.yaml new file mode 100644 index 00000000..f1349304 --- /dev/null +++ b/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-50k-rate.yaml @@ -0,0 +1,31 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: 100-partitions-50K-rate-4-producer + +topics: 1 +partitionsPerTopic: 24 +messageSize: 1024 +payloadFile: "payload/payload-1Kb.data" +subscriptionsPerTopic: 1 +consumerPerSubscription: 24 +producersPerTopic: 24 +producerRate: 50000 +consumerBacklogSizeGB: 0 +testDurationMinutes: 10 diff --git a/driver-api/src/main/java/io/openmessaging/benchmark/driver/BenchmarkDriver.java b/driver-api/src/main/java/io/openmessaging/benchmark/driver/BenchmarkDriver.java index 45f20ff1..09b1ed29 100644 --- a/driver-api/src/main/java/io/openmessaging/benchmark/driver/BenchmarkDriver.java +++ b/driver-api/src/main/java/io/openmessaging/benchmark/driver/BenchmarkDriver.java @@ -20,6 +20,7 @@ import java.io.File; import java.io.IOException; +import java.util.Optional; import java.util.concurrent.CompletableFuture; import org.apache.bookkeeper.stats.StatsLogger; @@ -28,13 +29,14 @@ */ public interface BenchmarkDriver extends AutoCloseable { /** - * Driver implementation can use this method to initialize the client libraries, with the provided configuration - * file. + * Driver implementation can use this method to initialize the client libraries, + * with the provided configuration file. *

- * The format of the configuration file is specific to the driver implementation. + * The format of the configuration file is specific to the driver + * implementation. * * @param configurationFile - * @param statsLogger stats logger to collect stats from benchmark driver + * @param statsLogger stats logger to collect stats from benchmark driver * @throws IOException */ void initialize(File configurationFile, StatsLogger statsLogger) throws IOException; @@ -49,24 +51,28 @@ public interface BenchmarkDriver extends AutoCloseable { */ CompletableFuture createTopic(String topic, int partitions); + /** + * Notification of new topic creation with the given number of partitions + */ + CompletableFuture notifyTopicCreation(String topic, int partitions); + /** * Create a producer for a given topic */ CompletableFuture createProducer(String topic); /** - * Create a benchmark consumer relative to one particular topic and subscription. + * Create a benchmark consumer relative to one particular topic and + * subscription. * - * It is responsibility of the driver implementation to invoke the consumerCallback each time a message - * is received. + * It is responsibility of the driver implementation to invoke the + * consumerCallback each time a message is received. * * @param topic * @param subscriptionName * @param consumerCallback * @return */ - CompletableFuture createConsumer( - String topic, - String subscriptionName, - ConsumerCallback consumerCallback); + CompletableFuture createConsumer(String topic, String subscriptionName, + Optional partition, ConsumerCallback consumerCallback); } diff --git a/driver-artemis/src/main/java/io/openmessaging/benchmark/driver/artemis/ArtemisBenchmarkDriver.java b/driver-artemis/src/main/java/io/openmessaging/benchmark/driver/artemis/ArtemisBenchmarkDriver.java index f547109b..33845bdd 100644 --- a/driver-artemis/src/main/java/io/openmessaging/benchmark/driver/artemis/ArtemisBenchmarkDriver.java +++ b/driver-artemis/src/main/java/io/openmessaging/benchmark/driver/artemis/ArtemisBenchmarkDriver.java @@ -20,6 +20,7 @@ import java.io.File; import java.io.IOException; +import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ForkJoinPool; @@ -57,7 +58,7 @@ public void initialize(File configurationFile, StatsLogger statsLogger) throws I try { ServerLocator serverLocator = ActiveMQClient.createServerLocator(config.brokerAddress); serverLocator.setConfirmationWindowSize(1000); - + sessionFactory = serverLocator.createSessionFactory(); session = sessionFactory.createSession(); } catch (Exception e) { @@ -90,6 +91,12 @@ public CompletableFuture createTopic(String topic, int partitions) { return future; } + @Override + public CompletableFuture notifyTopicCreation(String topic, int partitions) { + // No-op + return CompletableFuture.completedFuture(null); + } + @Override public CompletableFuture createProducer(String topic) { try { @@ -103,7 +110,7 @@ public CompletableFuture createProducer(String topic) { @Override public CompletableFuture createConsumer(String topic, String subscriptionName, - ConsumerCallback consumerCallback) { + Optional partition, ConsumerCallback consumerCallback) { CompletableFuture future = new CompletableFuture<>(); ForkJoinPool.commonPool().submit(() -> { try { diff --git a/driver-artemis/src/main/java/io/openmessaging/benchmark/driver/artemis/ArtemisBenchmarkProducer.java b/driver-artemis/src/main/java/io/openmessaging/benchmark/driver/artemis/ArtemisBenchmarkProducer.java index 1db656d5..458f5805 100644 --- a/driver-artemis/src/main/java/io/openmessaging/benchmark/driver/artemis/ArtemisBenchmarkProducer.java +++ b/driver-artemis/src/main/java/io/openmessaging/benchmark/driver/artemis/ArtemisBenchmarkProducer.java @@ -18,8 +18,10 @@ */ package io.openmessaging.benchmark.driver.artemis; +import java.time.Instant; import java.util.Optional; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.TimeUnit; import org.apache.activemq.artemis.api.core.ActiveMQException; import org.apache.activemq.artemis.api.core.client.ClientMessage; @@ -49,7 +51,9 @@ public void close() throws Exception { @Override public CompletableFuture sendAsync(Optional key, byte[] payload) { ClientMessage msg = session.createMessage(true /* durable */ ); - msg.setTimestamp(System.currentTimeMillis()); + Instant currentTime = Instant.now(); + long currentTimeNanos = TimeUnit.SECONDS.toNanos(currentTime.getEpochSecond()) + currentTime.getNano(); + msg.setTimestamp(currentTimeNanos); msg.getBodyBuffer().writeBytes(payload); CompletableFuture future = new CompletableFuture<>(); diff --git a/driver-bookkeeper/src/main/java/io/openmessaging/benchmark/driver/bookkeeper/DlogBenchmarkDriver.java b/driver-bookkeeper/src/main/java/io/openmessaging/benchmark/driver/bookkeeper/DlogBenchmarkDriver.java index 2734eca6..390d1f03 100644 --- a/driver-bookkeeper/src/main/java/io/openmessaging/benchmark/driver/bookkeeper/DlogBenchmarkDriver.java +++ b/driver-bookkeeper/src/main/java/io/openmessaging/benchmark/driver/bookkeeper/DlogBenchmarkDriver.java @@ -32,6 +32,7 @@ import java.io.IOException; import java.io.StringReader; import java.net.URI; +import java.util.Optional; import java.util.concurrent.CompletableFuture; import org.apache.bookkeeper.stats.StatsLogger; import org.apache.commons.configuration.ConfigurationException; @@ -50,7 +51,7 @@ public class DlogBenchmarkDriver implements BenchmarkDriver { private static final Logger log = LoggerFactory.getLogger(DlogBenchmarkProducer.class); private static final ObjectMapper mapper = new ObjectMapper(new YAMLFactory()) - .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); private Config config; private Namespace namespace; @@ -70,14 +71,10 @@ public void initialize(File configurationFile, StatsLogger statsLogger) throws I } URI dlogUri = URI.create(config.dlogUri); - dlshade.org.apache.bookkeeper.stats.StatsLogger dlStatsLogger = - new CachingStatsLogger(new StatsLoggerAdaptor(statsLogger.scope("dlog"))); + dlshade.org.apache.bookkeeper.stats.StatsLogger dlStatsLogger = new CachingStatsLogger( + new StatsLoggerAdaptor(statsLogger.scope("dlog"))); - namespace = NamespaceBuilder.newBuilder() - .conf(conf) - .uri(dlogUri) - .statsLogger(dlStatsLogger) - .build(); + namespace = NamespaceBuilder.newBuilder().conf(conf).uri(dlogUri).statsLogger(dlStatsLogger).build(); log.info("Initialized distributedlog namespace at {}", dlogUri); } @@ -103,13 +100,18 @@ public CompletableFuture createTopic(String topic, int partitions) { } log.info("Successfully create topic {} with {} partitions", topic, partitions); } catch (IOException ioe) { - log.error("Failed to create topic {} with {} partitions", - topic, partitions, ioe); + log.error("Failed to create topic {} with {} partitions", topic, partitions, ioe); throw new RuntimeException(ioe); } }); } + @Override + public CompletableFuture notifyTopicCreation(String topic, int partitions) { + // No-op + return CompletableFuture.completedFuture(null); + } + @Override public CompletableFuture createProducer(String topic) { return CompletableFuture.supplyAsync(() -> { @@ -120,16 +122,12 @@ public CompletableFuture createProducer(String topic) { } catch (IOException ioe) { throw new RuntimeException(ioe); } - }) - .thenCompose(dlm -> dlm.openAsyncLogWriter()) - .thenApply(writer -> new DlogBenchmarkProducer(writer)); + }).thenCompose(dlm -> dlm.openAsyncLogWriter()).thenApply(writer -> new DlogBenchmarkProducer(writer)); } @Override - public CompletableFuture createConsumer( - String topic, - String subscriptionName, - ConsumerCallback consumerCallback) { + public CompletableFuture createConsumer(String topic, String subscriptionName, + Optional partition, ConsumerCallback consumerCallback) { return CompletableFuture.supplyAsync(() -> { try { DistributedLogManager dlm = namespace.openLog(topic); @@ -138,8 +136,7 @@ public CompletableFuture createConsumer( } catch (IOException ioe) { throw new RuntimeException(ioe); } - }) - .thenApply(dlm -> new DlogBenchmarkConsumer(dlm, consumerCallback)); + }).thenApply(dlm -> new DlogBenchmarkConsumer(dlm, consumerCallback)); } @Override diff --git a/driver-kafka/deploy/deploy.yaml b/driver-kafka/deploy/deploy.yaml index 8c7e50ea..7b2181f9 100644 --- a/driver-kafka/deploy/deploy.yaml +++ b/driver-kafka/deploy/deploy.yaml @@ -17,6 +17,56 @@ # under the License. # +- name: Collect profiles + hosts: kafka, client + become: true + tags: + - profile + tasks: + - set_fact: + time: "{{ ansible_date_time.epoch }}" + - name: Generate Flame graph + tags: + - flame + shell: | + /tmp/profiler.sh -d 120 `pidof java` -f /tmp/flame.svg + - name: Fetch flame graph + tags: + - flame + fetch: + src: /tmp/flame.svg + dest: results/{{ group_names[0] }}/{{ time }}/{{ inventory_hostname }}/flame.svg + flat: yes + + # - name: Dump & compress heap + # tags: + # - heap + # shell: | + # jattach `pidof java` dumpheap /tmp/heap + # chmod 777 /tmp/heap + # tar -cvzf /tmp/heap.tar /tmp/heap + # - name: Fetch heap dump + # tags: + # - heap + # fetch: + # src: /tmp/heap.tar + # dest: results/{{ group_names[0] }}/{{ time }}/{{ inventory_hostname }}/heap.tar + # flat: yes + + - name: Heap allocation profile + tags: + - heap + shell: | + /tmp/profiler.sh -d 60 -e alloc -o svg -f /tmp/heap.svg 1 `pidof java` + chmod 777 /tmp/heap.svg + - name: Fetch heap dump + tags: + - heap + fetch: + src: /tmp/heap.svg + dest: results/{{ group_names[0] }}/{{ time }}/{{ inventory_hostname }}/heap.svg + flat: yes + - name: Format and mount disks for Kafka hosts hosts: kafka connection: ssh @@ -26,11 +76,11 @@ tuned-adm profile latency-performance - name: Format disks filesystem: - fstype: xfs - dev: '{{ item }}' + fstype: xfs + dev: "{{ item }}" with_items: - - '/dev/nvme0n1' - - '/dev/nvme1n1' + - "/dev/nvme1n1" + - "/dev/nvme2n1" - name: Mount disks mount: path: "{{ item.path }}" @@ -39,42 +89,97 @@ opts: defaults,noatime,nodiscard state: mounted with_items: - - { path: "/mnt/data-1", src: "/dev/nvme0n1" } - - { path: "/mnt/data-2", src: "/dev/nvme1n1" } + - { path: "/mnt/data-1", src: "/dev/nvme1n1" } + - { path: "/mnt/data-2", src: "/dev/nvme2n1" } + +- name: Store server lists + hosts: all + connection: ssh + tasks: + - set_fact: + zookeeperServers: "{{ groups['zookeeper'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^(.*)$', '\\1:2181') | join(',') }}" + boostrapServers: "{{ groups['kafka'] | map('extract', hostvars, ['private_ip']) | map('regex_replace', '^(.*)$', '\\1:9092') | join(',') }}" -- name: Kafka setup +- name: Setup common packages hosts: all connection: ssh become: true tasks: + - name: Remove sysstat + yum: pkg={{ item }} state=absent + with_items: + - sysstat - name: Install RPM packages yum: pkg={{ item }} state=latest with_items: - - wget - - java - - sysstat - - vim - - chrony + - wget + - java-11 + - sysstat + - vim + - chrony + - git + - gcc + +- name: Kafka installation + hosts: kafka, zookeeper + connection: ssh + become: true + tasks: - file: path=/opt/kafka state=absent - file: path=/opt/kafka state=directory - set_fact: zookeeperServers: "{{ groups['zookeeper'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^(.*)$', '\\1:2181') | join(',') }}" boostrapServers: "{{ groups['kafka'] | map('extract', hostvars, ['private_ip']) | map('regex_replace', '^(.*)$', '\\1:9092') | join(',') }}" - kafkaVersion: "2.3.0" + kafkaVersion: "2.6.0" - debug: msg: "zookeeper servers: {{ zookeeperServers }}\nboostrap servers: {{ boostrapServers }}" + + #################### Release #################### - name: Download Kafka package unarchive: - src: http://mirrors.ocf.berkeley.edu/apache/kafka/{{ kafkaVersion }}/kafka_2.11-{{ kafkaVersion }}.tgz + src: http://mirrors.ocf.berkeley.edu/apache/kafka/{{ kafkaVersion }}/kafka_2.13-{{ kafkaVersion }}.tgz remote_src: yes dest: /opt/kafka extra_opts: ["--strip-components=1"] + + #################### Staging #################### + # # https://access.redhat.com/articles/5117881 + # - name: Fix Sectigo Root CA expiration issue + # shell: | + # trust dump --filter "pkcs11:id=%ad%bd%98%7a%34%b4%26%f7%fa%c4%26%54%ef%03%bd%e0%24%cb%54%1a;type=cert" > /etc/pki/ca-trust/source/blacklist/addtrust-external-root.p11-kit + # update-ca-trust + # - name: Download Kafka package + # unarchive: + # src: https://home.apache.org/~rhauch/kafka-2.6.0-rc2/kafka_2.13-2.6.0.tgz + # remote_src: yes + # dest: /opt/kafka + # extra_opts: ["--strip-components=1"] + + #################### Custom build #################### + # - name: Copy Kafka + # unarchive: + # src: /Users/anikhil/offsets_patch/core/build/distributions/kafka_2.13-2.7.0-SNAPSHOT.tgz + # dest: /opt/kafka + # extra_opts: ["--strip-components=1"] + - set_fact: privateIp: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" - name: Change locale to en_US.utf-8 shell: | echo 'LANG=en_US.utf-8 LC_ALL=en_US.utf-8' > /etc/environment + - name: Setup JMX for Prometheus + copy: + src: "monitoring/jmx_exporter/jmx_prometheus_javaagent-0.13.0.jar" + dest: "/opt/kafka/jmx_prometheus_javaagent-0.13.0.jar" + - name: Configure JMX for Prometheus (Kafka) + template: + src: "monitoring/jmx_exporter/metrics.yml" + dest: "/opt/kafka/metrics.yml" + - name: Configure JMX for Prometheus (Zookeeper) + template: + src: "monitoring/jmx_exporter/zookeeper.yml" + dest: "/opt/kafka/zookeeper.yml" - name: Setup ZooKeeper hosts: zookeeper @@ -104,9 +209,13 @@ hosts: kafka connection: ssh become: true + tags: + - configure tasks: - set_fact: brokerId: "{{ groups['kafka'].index(inventory_hostname) }}" + privateIp: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" + zookeeperServers: "{{ groups['zookeeper'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^(.*)$', '\\1:2181') | join(',') }}" - name: Set up broker template: src: "templates/server.properties" @@ -118,6 +227,11 @@ state: restarted daemon_reload: yes name: "kafka" + - git: + repo: "https://github.com/sysstat/sysstat" + dest: "/opt/sysstat" + - name: Compile and install sysstat from source + command: cd /opt/sysstat && ./configure && make -j`nproc` && sudo make install - name: Chrony setup hosts: client @@ -152,20 +266,28 @@ - name: Configure URL lineinfile: - dest: '{{ item }}' - regexp: '^ bootstrap.servers=' - line: ' bootstrap.servers={{ boostrapServers }}' - with_items: '{{ drivers_list.stdout_lines }}' + dest: "{{ item }}" + regexp: "^ bootstrap.servers=" + line: " bootstrap.servers={{ boostrapServers }}" + with_items: "{{ drivers_list.stdout_lines }}" - name: Configure memory lineinfile: - dest: /opt/benchmark/bin/benchmark-worker - regexp: '^JVM_MEM=' - line: 'JVM_MEM="-Xms12G -Xmx12G -XX:+UseG1GC -XX:MaxGCPauseMillis=10 -XX:+ParallelRefProcEnabled -XX:+UnlockExperimentalVMOptions -XX:+AggressiveOpts -XX:+DoEscapeAnalysis -XX:ParallelGCThreads=32 -XX:ConcGCThreads=32 -XX:G1NewSizePercent=50 -XX:+DisableExplicitGC -XX:-ResizePLAB -XX:+PerfDisableSharedMem -XX:+AlwaysPreTouch -XX:-UseBiasedLocking"' + dest: /opt/benchmark/bin/benchmark-worker + regexp: "^JVM_MEM=" + line: 'JVM_MEM="-Xms16G -Xmx16G -XX:+UseG1GC -XX:MaxGCPauseMillis=10 -XX:+ParallelRefProcEnabled -XX:+UnlockExperimentalVMOptions -XX:+AggressiveOpts -XX:+DoEscapeAnalysis -XX:ParallelGCThreads=32 -XX:ConcGCThreads=32 -XX:G1NewSizePercent=50 -XX:+DisableExplicitGC -XX:-ResizePLAB -XX:+PerfDisableSharedMem -XX:+AlwaysPreTouch -XX:-UseBiasedLocking"' - name: Configure memory lineinfile: - dest: /opt/benchmark/bin/benchmark - regexp: '^JVM_MEM=' - line: 'JVM_MEM="-Xmx1G"' + dest: /opt/benchmark/bin/benchmark + regexp: "^JVM_MEM=" + line: 'JVM_MEM="-Xmx1G"' + - name: Setup JMX for Producer/Consumer clients + copy: + src: "monitoring/jmx_exporter/jmx_prometheus_javaagent-0.13.0.jar" + dest: "/opt/benchmark/jmx_prometheus_javaagent-0.13.0.jar" + - name: Configure JMX for Prometheus (Client) + template: + src: "monitoring/jmx_exporter/client.yml" + dest: "/opt/benchmark/metrics.yml" - template: src: "templates/workers.yaml" dest: "/opt/benchmark/workers.yaml" @@ -173,12 +295,15 @@ template: src: "templates/benchmark-worker.service" dest: "/etc/systemd/system/benchmark-worker.service" - - systemd: + - name: "Restart benchmark worker" + tags: + - configure + systemd: state: restarted daemon_reload: yes name: "benchmark-worker" -- name: Hosts addresses +- name: Hosts addresses hosts: localhost become: false tasks: @@ -191,3 +316,127 @@ - debug: msg: "Benchmark clients {{ item }}" with_items: "{{ groups['client'] }}" + +# Setup the Prometheus/Grafana monitoring stack +- name: Prometheus installation + hosts: prometheus + connection: ssh + become: true + tasks: + - name: Add Extras Repo + shell: yum-config-manager --enable rhui-REGION-rhel-server-extras + - name: Install RPM packages + yum: pkg={{ item }} state=latest + with_items: + - docker + - set_fact: + prometheusVersion: "2.19.3" + - file: path=/opt/prometheus state=absent + - file: path=/opt/prometheus state=directory + - name: Download Prometheus Binary Package + unarchive: + src: "https://github.com/prometheus/prometheus/releases/download/v{{ prometheusVersion }}/prometheus-{{ prometheusVersion }}.linux-amd64.tar.gz" + remote_src: yes + dest: /opt/prometheus + extra_opts: ["--strip-components=1"] + - set_fact: + private_ip: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" + +- name: Prometheus setup + hosts: prometheus + connection: ssh + become: true + tasks: + - file: + path: "/opt/prometheus/{{ item }}" + state: directory + with_items: + - data + - template: + src: "templates/prometheus.service" + dest: "/etc/systemd/system/prometheus.service" + - template: + src: "templates/kafka-dashboard.service" + dest: "/etc/systemd/system/kafka-dashboard.service" + - template: + src: "templates/prometheus.yml" + dest: "/opt/prometheus/prometheus.yml" + - systemd: + state: restarted + daemon_reload: yes + name: "kafka-dashboard" + +- name: Install Node exporter on Brokers to collect system metrics + hosts: kafka + become: true + tasks: + - name: Add user node_exporter + user: + name: node_exporter + shell: /bin/false + system: true + create_home: no + + - name: Download and extract + unarchive: + src: https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz + dest: /tmp + remote_src: yes + + - name: Copy bin node_exporter to /usr/local/bin + copy: + src: /tmp/node_exporter-1.0.1.linux-amd64/node_exporter + remote_src: yes + dest: /usr/local/bin/ + owner: node_exporter + group: node_exporter + mode: u+x,g+x,o+x + + - name: Create service node_exporter.service + blockinfile: + path: /etc/systemd/system/node_exporter.service + block: | + [Unit] + Description=Prometheus Node Exporter + Wants=network-online.target + After=network-online.target + [Service] + User=node_exporter + Group=node_exporter + Type=simple + ExecStart=/usr/local/bin/node_exporter + [Install] + WantedBy=multi-user.target + create: true + + - name: systemctl daemon_reload + systemd: + daemon_reload: yes + + - name: Start and Enable node_exporter + service: + name: node_exporter + state: started + enabled: yes + + - name: Check whether port 9100 is available + wait_for: + port: 9100 + state: started + timeout: 5 + +- name: Install jattach and async-profiler + hosts: all + become: true + tasks: + - name: Download and extract async-profiler + unarchive: + src: https://github.com/jvm-profiling-tools/async-profiler/releases/download/v1.7.1/async-profiler-1.7.1-linux-x64.tar.gz + dest: /tmp + remote_src: yes + + - name: Download and install jattach + get_url: + url: https://github.com/apangin/jattach/releases/download/v1.5/jattach + dest: /usr/bin/jattach + mode: "0755" diff --git a/driver-kafka/deploy/monitoring/Dockerfile b/driver-kafka/deploy/monitoring/Dockerfile new file mode 100644 index 00000000..0ae4874d --- /dev/null +++ b/driver-kafka/deploy/monitoring/Dockerfile @@ -0,0 +1,54 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +FROM grafana/grafana:7.0.5 + +USER root + +# Install the Grafana Image Rendering Plugin +ENV GF_PATHS_PLUGINS="/var/lib/grafana-plugins" +RUN mkdir -p "$GF_PATHS_PLUGINS" && \ + chown -R grafana:grafana "$GF_PATHS_PLUGINS" +RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories && \ + echo "http://dl-cdn.alpinelinux.org/alpine/edge/main" >> /etc/apk/repositories && \ + echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories && \ + apk --no-cache upgrade && \ + apk add --no-cache udev ttf-opensans chromium && \ + rm -rf /tmp/* && \ + rm -rf /usr/share/grafana/tools/phantomjs; +USER grafana +ENV GF_RENDERER_PLUGIN_CHROME_BIN="/usr/bin/chromium-browser" +RUN grafana-cli \ + --pluginsDir "$GF_PATHS_PLUGINS" \ + --pluginUrl https://github.com/grafana/grafana-image-renderer/releases/latest/download/plugin-linux-x64-glibc-no-chromium.zip \ + plugins install grafana-image-renderer; + +USER root +COPY dashboards.yaml /etc/grafana/provisioning/dashboards/dashboards.yaml +RUN apk add curl +USER grafana +COPY grafana.ini /etc/grafana/grafana.ini +COPY dashboards/* /var/lib/grafana/dashboards/ +COPY start.sh /start.sh + +EXPOSE 3000 + +ENV PROMETHEUS_URL http://prometheus:9090 + +ENTRYPOINT ["/start.sh"] diff --git a/driver-kafka/deploy/monitoring/README.md b/driver-kafka/deploy/monitoring/README.md new file mode 100644 index 00000000..1db30933 --- /dev/null +++ b/driver-kafka/deploy/monitoring/README.md @@ -0,0 +1,3 @@ +# Kafka dashboard for the Open Messaging Benchmark using the Prometheus/Grafana stack + +- Builds a docker image diff --git a/driver-kafka/deploy/monitoring/dashboards.yaml b/driver-kafka/deploy/monitoring/dashboards.yaml new file mode 100644 index 00000000..4a9c9c4a --- /dev/null +++ b/driver-kafka/deploy/monitoring/dashboards.yaml @@ -0,0 +1,45 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +apiVersion: 1 + +providers: + # an unique provider name. Required + - name: "Default Dashboards" + # Org id. Default to 1 + orgId: 1 + # name of the dashboard folder. + folder: "" + # folder UID. will be automatically generated if not specified + folderUid: "" + # provider type. Default to 'file' + type: file + # disable dashboard deletion + disableDeletion: true + # enable dashboard editing + editable: true + # how often Grafana will scan for changed dashboards + updateIntervalSeconds: 10 + # allow updating provisioned dashboards from the UI + allowUiUpdates: true + options: + # path to dashboard files on disk. Required when using the 'file' type + path: /var/lib/grafana/dashboards + # use folder names from filesystem to create folders in Grafana + foldersFromFilesStructure: true diff --git a/driver-kafka/deploy/monitoring/dashboards/jvm.json b/driver-kafka/deploy/monitoring/dashboards/jvm.json new file mode 100644 index 00000000..8d5ee19b --- /dev/null +++ b/driver-kafka/deploy/monitoring/dashboards/jvm.json @@ -0,0 +1,2557 @@ +{ + "annotations": { + "list": [] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "hideControls": false, + "id": 2, + "links": [], + "refresh": "1m", + "rows": [ + { + "collapse": false, + "height": 221, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 1, + "fill": 1, + "id": 4, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-232tg", + "value": "bookie-232tg" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(process_cpu_seconds_total{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]) * 100\n\n", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "process_cpu_seconds_total", + "refId": "A", + "step": 20 + } + ], + "thresholds": [ + { + "colorMode": "ok", + "fill": false, + "line": true, + "op": "gt", + "value": 100 + } + ], + "timeFrom": null, + "timeShift": null, + "title": "CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percent", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "id": 1, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": false, + "max": false, + "min": false, + "rightSide": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-232tg", + "value": "bookie-232tg" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(jvm_memory_bytes_committed{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Heap size", + "metric": "jvm_memory_bytes_committed", + "refId": "A", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_bytes_used", + "refId": "B", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_bytes_max", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Heap Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 2, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-232tg", + "value": "bookie-232tg" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "jvm_memory_direct_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_direct_bytes_used", + "refId": "A", + "step": 20 + }, + { + "expr": "jvm_memory_direct_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_direct_bytes_max", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Direct Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 3, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-232tg", + "value": "bookie-232tg" + } + }, + "seriesOverrides": [ + { + "alias": "old count", + "yaxis": 2 + }, + { + "alias": "young count", + "yaxis": 2 + } + ], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(increase(jvm_gc_collection_seconds_sum{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]))", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Pause", + "metric": "jvm_gc_collection_seconds_count", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "GC Pauses", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": false + } + ] + } + ], + "repeat": "instance", + "repeatIteration": null, + "repeatRowId": null, + "showTitle": true, + "title": "$component $instance", + "titleSize": "h4" + }, + { + "collapse": false, + "height": 221, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 1, + "fill": 1, + "id": 5, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-44jrt", + "value": "bookie-44jrt" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(process_cpu_seconds_total{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]) * 100\n\n", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "process_cpu_seconds_total", + "refId": "A", + "step": 20 + } + ], + "thresholds": [ + { + "colorMode": "ok", + "fill": false, + "line": true, + "op": "gt", + "value": 100 + } + ], + "timeFrom": null, + "timeShift": null, + "title": "CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percent", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "id": 6, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": false, + "max": false, + "min": false, + "rightSide": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-44jrt", + "value": "bookie-44jrt" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(jvm_memory_bytes_committed{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Heap size", + "metric": "jvm_memory_bytes_committed", + "refId": "A", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_bytes_used", + "refId": "B", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_bytes_max", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Heap Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 7, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-44jrt", + "value": "bookie-44jrt" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "jvm_memory_direct_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_direct_bytes_used", + "refId": "A", + "step": 20 + }, + { + "expr": "jvm_memory_direct_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_direct_bytes_max", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Direct Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 8, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-44jrt", + "value": "bookie-44jrt" + } + }, + "seriesOverrides": [ + { + "alias": "old count", + "yaxis": 2 + }, + { + "alias": "young count", + "yaxis": 2 + } + ], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(increase(jvm_gc_collection_seconds_sum{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]))", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Pause", + "metric": "jvm_gc_collection_seconds_count", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "GC Pauses", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": false + } + ] + } + ], + "repeat": null, + "repeatIteration": 1496162786419, + "repeatRowId": 1, + "showTitle": true, + "title": "$component $instance", + "titleSize": "h4" + }, + { + "collapse": false, + "height": 221, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 1, + "fill": 1, + "id": 9, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-73k0d", + "value": "bookie-73k0d" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(process_cpu_seconds_total{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]) * 100\n\n", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "process_cpu_seconds_total", + "refId": "A", + "step": 20 + } + ], + "thresholds": [ + { + "colorMode": "ok", + "fill": false, + "line": true, + "op": "gt", + "value": 100 + } + ], + "timeFrom": null, + "timeShift": null, + "title": "CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percent", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "id": 10, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": false, + "max": false, + "min": false, + "rightSide": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-73k0d", + "value": "bookie-73k0d" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(jvm_memory_bytes_committed{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Heap size", + "metric": "jvm_memory_bytes_committed", + "refId": "A", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_bytes_used", + "refId": "B", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_bytes_max", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Heap Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 11, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-73k0d", + "value": "bookie-73k0d" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "jvm_memory_direct_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_direct_bytes_used", + "refId": "A", + "step": 20 + }, + { + "expr": "jvm_memory_direct_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_direct_bytes_max", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Direct Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 12, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-73k0d", + "value": "bookie-73k0d" + } + }, + "seriesOverrides": [ + { + "alias": "old count", + "yaxis": 2 + }, + { + "alias": "young count", + "yaxis": 2 + } + ], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(increase(jvm_gc_collection_seconds_sum{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]))", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Pause", + "metric": "jvm_gc_collection_seconds_count", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "GC Pauses", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": false + } + ] + } + ], + "repeat": null, + "repeatIteration": 1496162786419, + "repeatRowId": 1, + "showTitle": true, + "title": "$component $instance", + "titleSize": "h4" + }, + { + "collapse": false, + "height": 221, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 1, + "fill": 1, + "id": 13, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-h2q4k", + "value": "bookie-h2q4k" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(process_cpu_seconds_total{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]) * 100\n\n", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "process_cpu_seconds_total", + "refId": "A", + "step": 20 + } + ], + "thresholds": [ + { + "colorMode": "ok", + "fill": false, + "line": true, + "op": "gt", + "value": 100 + } + ], + "timeFrom": null, + "timeShift": null, + "title": "CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percent", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "id": 14, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": false, + "max": false, + "min": false, + "rightSide": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-h2q4k", + "value": "bookie-h2q4k" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(jvm_memory_bytes_committed{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Heap size", + "metric": "jvm_memory_bytes_committed", + "refId": "A", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_bytes_used", + "refId": "B", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_bytes_max", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Heap Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 15, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-h2q4k", + "value": "bookie-h2q4k" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "jvm_memory_direct_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_direct_bytes_used", + "refId": "A", + "step": 20 + }, + { + "expr": "jvm_memory_direct_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_direct_bytes_max", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Direct Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 16, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-h2q4k", + "value": "bookie-h2q4k" + } + }, + "seriesOverrides": [ + { + "alias": "old count", + "yaxis": 2 + }, + { + "alias": "young count", + "yaxis": 2 + } + ], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(increase(jvm_gc_collection_seconds_sum{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]))", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Pause", + "metric": "jvm_gc_collection_seconds_count", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "GC Pauses", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": false + } + ] + } + ], + "repeat": null, + "repeatIteration": 1496162786419, + "repeatRowId": 1, + "showTitle": true, + "title": "$component $instance", + "titleSize": "h4" + }, + { + "collapse": false, + "height": 221, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 1, + "fill": 1, + "id": 17, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-m2bp9", + "value": "bookie-m2bp9" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(process_cpu_seconds_total{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]) * 100\n\n", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "process_cpu_seconds_total", + "refId": "A", + "step": 20 + } + ], + "thresholds": [ + { + "colorMode": "ok", + "fill": false, + "line": true, + "op": "gt", + "value": 100 + } + ], + "timeFrom": null, + "timeShift": null, + "title": "CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percent", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "id": 18, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": false, + "max": false, + "min": false, + "rightSide": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-m2bp9", + "value": "bookie-m2bp9" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(jvm_memory_bytes_committed{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Heap size", + "metric": "jvm_memory_bytes_committed", + "refId": "A", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_bytes_used", + "refId": "B", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_bytes_max", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Heap Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 19, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-m2bp9", + "value": "bookie-m2bp9" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "jvm_memory_direct_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_direct_bytes_used", + "refId": "A", + "step": 20 + }, + { + "expr": "jvm_memory_direct_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_direct_bytes_max", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Direct Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 20, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-m2bp9", + "value": "bookie-m2bp9" + } + }, + "seriesOverrides": [ + { + "alias": "old count", + "yaxis": 2 + }, + { + "alias": "young count", + "yaxis": 2 + } + ], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(increase(jvm_gc_collection_seconds_sum{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]))", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Pause", + "metric": "jvm_gc_collection_seconds_count", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "GC Pauses", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": false + } + ] + } + ], + "repeat": null, + "repeatIteration": 1496162786419, + "repeatRowId": 1, + "showTitle": true, + "title": "$component $instance", + "titleSize": "h4" + }, + { + "collapse": false, + "height": 221, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 1, + "fill": 1, + "id": 21, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-z6djd", + "value": "bookie-z6djd" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(process_cpu_seconds_total{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]) * 100\n\n", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "process_cpu_seconds_total", + "refId": "A", + "step": 20 + } + ], + "thresholds": [ + { + "colorMode": "ok", + "fill": false, + "line": true, + "op": "gt", + "value": 100 + } + ], + "timeFrom": null, + "timeShift": null, + "title": "CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percent", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "id": 22, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": false, + "max": false, + "min": false, + "rightSide": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-z6djd", + "value": "bookie-z6djd" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(jvm_memory_bytes_committed{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Heap size", + "metric": "jvm_memory_bytes_committed", + "refId": "A", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_bytes_used", + "refId": "B", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_bytes_max", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Heap Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 23, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-z6djd", + "value": "bookie-z6djd" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "jvm_memory_direct_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_direct_bytes_used", + "refId": "A", + "step": 20 + }, + { + "expr": "jvm_memory_direct_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_direct_bytes_max", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Direct Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 24, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-z6djd", + "value": "bookie-z6djd" + } + }, + "seriesOverrides": [ + { + "alias": "old count", + "yaxis": 2 + }, + { + "alias": "young count", + "yaxis": 2 + } + ], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(increase(jvm_gc_collection_seconds_sum{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]))", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Pause", + "metric": "jvm_gc_collection_seconds_count", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "GC Pauses", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": false + } + ] + } + ], + "repeat": null, + "repeatIteration": 1496162786419, + "repeatRowId": 1, + "showTitle": true, + "title": "$component $instance", + "titleSize": "h4" + } + ], + "schemaVersion": 14, + "style": "dark", + "tags": [ + "kafka" + ], + "templating": { + "list": [ + { + "allValue": null, + "current": { + "text": "us-central", + "value": "us-central" + }, + "datasource": "Prometheus", + "hide": 0, + "includeAll": false, + "label": "Cluster", + "multi": false, + "name": "cluster", + "options": [], + "query": "{cluster=~\".+\"}", + "refresh": 1, + "regex": "/.*[^_]cluster=\\\"([^\\\"]+)\\\".*/", + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": { + "tags": [], + "text": "bookkeeper", + "value": "bookkeeper" + }, + "datasource": "Prometheus", + "hide": 0, + "includeAll": false, + "label": "Component", + "multi": false, + "name": "component", + "options": [], + "query": "{job=~\".+\"}", + "refresh": 1, + "regex": "/.*[^_]job=\\\"([^\\\"]+)\\\".*/", + "sort": 1, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Prometheus", + "hide": 0, + "includeAll": true, + "label": "Pod", + "multi": true, + "name": "instance", + "options": [], + "query": "jvm_memory_bytes_used{cluster=~\"$cluster\", job=~\"$component\", kubernetes_pod_name=~\".+\"}", + "refresh": 2, + "regex": "/.*[^_]kubernetes_pod_name=\\\"([^\\\"]+)\\\".*/", + "sort": 1, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "browser", + "title": "Kafka - JVM", + "version": 27 +} \ No newline at end of file diff --git a/driver-kafka/deploy/monitoring/dashboards/perf.json b/driver-kafka/deploy/monitoring/dashboards/perf.json new file mode 100644 index 00000000..04e503da --- /dev/null +++ b/driver-kafka/deploy/monitoring/dashboards/perf.json @@ -0,0 +1,878 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "id": 6, + "links": [], + "panels": [ + { + "aliasColors": { + "Broker - Read": "#66cc69", + "Broker - Write": "#00afba", + "Consume rate": "blue", + "DD - Max throughput": "#d8365d", + "Produce rate": "#d8365d", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "fill": 5, + "fillGradient": 0, + "gridPos": { + "h": 11, + "w": 12, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "id": 12, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": false, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pluginVersion": "7.0.5", + "pointradius": 2, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Consume rate", + "dashes": true, + "fill": 0, + "linewidth": 2, + "yaxis": 1 + }, + { + "alias": "Produce rate", + "dashes": true, + "fill": 0, + "linewidth": 2, + "yaxis": 1 + }, + { + "alias": "DD - Max throughput", + "fill": 0, + "lines": true, + "linewidth": 3, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (instance) (rate(node_disk_written_bytes_total{device=~\"nvme1n1|nvme2n1\"}[1m]))", + "hide": false, + "interval": "", + "intervalFactor": 1, + "legendFormat": "Broker - {{instance}} - Write", + "refId": "A" + }, + { + "expr": "sum(rate(node_disk_read_bytes_total{device=~\"nvme1n1|nvme2n1\"}[1m]))", + "hide": true, + "interval": "", + "legendFormat": "Broker - Read", + "refId": "B" + }, + { + "expr": "sum(rate(benchmark_producer_bytes_sent[1m]))", + "hide": false, + "interval": "", + "legendFormat": "Produce rate", + "refId": "C" + }, + { + "expr": "sum(rate(benchmark_consumer_bytes_recv[1m]))", + "hide": false, + "interval": "", + "legendFormat": "Consume rate", + "refId": "D" + }, + { + "expr": "655000000", + "interval": "", + "legendFormat": "DD - Max throughput", + "refId": "E" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O throughput + Producer/Consume Throughput", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 0 + }, + "hiddenSeries": false, + "id": 6, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (instance) (delta(node_disk_written_bytes_total{device=~\"nvme1n1|nvme2n1\"}[1m])/60)", + "interval": "", + "intervalFactor": 1, + "legendFormat": "Broker - {{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O throughput", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 9 + }, + "hiddenSeries": false, + "id": 5, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(delta(benchmark_producer_bytes_sent[1m])/60)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Publish throughput (MB/sec)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 11 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "delta(node_disk_io_time_seconds_total{device=~\"nvme1n1|nvme2n1\"}[1m])/60", + "interval": "", + "intervalFactor": 1, + "legendFormat": "Broker - {{instance}} ➝ Disk - {{device}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O Utilization", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percentunit", + "label": null, + "logBase": 1, + "max": "1", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 20 + }, + "hiddenSeries": false, + "id": 4, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(delta(benchmark_producer_messages_sent[1m])/60)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Publish rate (messages/sec)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 28 + }, + "hiddenSeries": false, + "id": 10, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(kafka_log_logflushstats_logflushrateandtimems{quantile=\"0.99\"}[1m])", + "interval": "", + "legendFormat": "Broker - {{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Log Flush Time (p99)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Idle - Waiting for something to happen": "#052B51", + "Iowait - Waiting for I/O to complete": "blue", + "Nice - Niced processes executing in user mode": "yellow", + "Softirq - Servicing softirqs": "yellow", + "System - Processes executing in kernel mode": "dark-purple", + "User - Normal processes executing in user mode": "red", + "guest": "#9AC48A", + "idle": "#052B51", + "iowait": "#EAB839", + "irq": "#BF1B00", + "nice": "#C15C17", + "softirq": "#E24D42", + "steal": "#FCE2DE", + "system": "#508642", + "user": "#5195CE" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 2, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 13, + "w": 24, + "x": 0, + "y": 36 + }, + "hiddenSeries": false, + "id": 8, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 250, + "sort": null, + "sortDesc": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": true, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"user\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "User - Normal processes executing in user mode", + "refId": "B", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"system\"}[5m])) * 100", + "format": "time_series", + "interval": "10s", + "intervalFactor": 2, + "legendFormat": "System - Processes executing in kernel mode", + "refId": "A", + "step": 20 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"iowait\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Iowait - Waiting for I/O to complete", + "refId": "E", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"softirq\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Softirq - Servicing softirqs", + "refId": "G", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"idle\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Idle - Waiting for something to happen", + "refId": "D", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU Usage across all Brokers", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "percentage", + "logBase": 1, + "max": "100", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "refresh": false, + "schemaVersion": 25, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ] + }, + "timezone": "utc", + "title": "Performance Metrics - Kafka", + "uid": "vYWrwI7Mkafka", + "version": 5 +} \ No newline at end of file diff --git a/driver-kafka/deploy/monitoring/dashboards/prometheus.json b/driver-kafka/deploy/monitoring/dashboards/prometheus.json new file mode 100644 index 00000000..40ebcf83 --- /dev/null +++ b/driver-kafka/deploy/monitoring/dashboards/prometheus.json @@ -0,0 +1,719 @@ +{ + "annotations": { + "list": [] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "hideControls": true, + "id": 1, + "links": [ + { + "icon": "info", + "tags": [], + "targetBlank": true, + "title": "Grafana Docs", + "tooltip": "", + "type": "link", + "url": "http://docs.grafana.org/" + }, + { + "icon": "info", + "tags": [], + "targetBlank": true, + "title": "Prometheus Docs", + "type": "link", + "url": "http://prometheus.io/docs/introduction/overview/" + } + ], + "refresh": false, + "revision": "1.0", + "rows": [ + { + "collapse": false, + "height": 178, + "panels": [ + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "Prometheus", + "decimals": 1, + "editable": true, + "error": false, + "format": "s", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "id": 5, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "span": 3, + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "tableColumn": "", + "targets": [ + { + "expr": "(time() - process_start_time_seconds{job=\"prometheus\"})", + "intervalFactor": 2, + "refId": "A", + "step": 4 + } + ], + "thresholds": "", + "title": "Uptime", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(50, 172, 45, 0.97)", + "rgba(237, 129, 40, 0.89)", + "rgba(245, 54, 54, 0.9)" + ], + "datasource": "Prometheus", + "editable": true, + "error": false, + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "id": 6, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "span": 3, + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "tableColumn": "", + "targets": [ + { + "expr": "prometheus_local_storage_memory_series", + "intervalFactor": 2, + "refId": "A", + "step": 4 + } + ], + "thresholds": "1,5", + "title": "Local Storage Memory Series", + "type": "singlestat", + "valueFontSize": "70%", + "valueMaps": [], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": true, + "colors": [ + "rgba(50, 172, 45, 0.97)", + "rgba(237, 129, 40, 0.89)", + "rgba(245, 54, 54, 0.9)" + ], + "datasource": "Prometheus", + "editable": true, + "error": false, + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "id": 7, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "span": 3, + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "tableColumn": "", + "targets": [ + { + "expr": "prometheus_local_storage_indexing_queue_length", + "intervalFactor": 2, + "refId": "A", + "step": 4 + } + ], + "thresholds": "500,4000", + "title": "Internal Storage Queue Length", + "type": "singlestat", + "valueFontSize": "70%", + "valueMaps": [ + { + "op": "=", + "text": "Empty", + "value": "0" + } + ], + "valueName": "current" + }, + { + "content": "\"Prometheus\nPrometheus\n\n

You're using Prometheus, an open-source systems monitoring and alerting toolkit originally built at SoundCloud. For more information, check out the Grafana and Prometheus projects.

", + "editable": true, + "error": false, + "id": 9, + "links": [], + "mode": "html", + "span": 3, + "style": {}, + "title": "", + "transparent": true, + "type": "text" + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "New row", + "titleSize": "h6" + }, + { + "collapse": false, + "height": 227, + "panels": [ + { + "aliasColors": { + "prometheus": "#C15C17", + "{instance=\"localhost:9090\",job=\"prometheus\"}": "#C15C17" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "editable": true, + "error": false, + "fill": 1, + "grid": {}, + "id": 3, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 9, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(prometheus_local_storage_ingested_samples_total[5m])", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{job}}", + "metric": "", + "refId": "A", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Samples ingested (rate-5m)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "content": "#### Samples Ingested\nThis graph displays the count of samples ingested by the Prometheus server, as measured over the last 5 minutes, per time series in the range vector. When troubleshooting an issue on IRC or Github, this is often the first stat requested by the Prometheus team. ", + "editable": true, + "error": false, + "id": 8, + "links": [], + "mode": "markdown", + "span": 2.995914043583536, + "style": {}, + "title": "", + "transparent": true, + "type": "text" + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "New row", + "titleSize": "h6" + }, + { + "collapse": false, + "height": "250px", + "panels": [ + { + "aliasColors": { + "prometheus": "#F9BA8F", + "{instance=\"localhost:9090\",interval=\"5s\",job=\"prometheus\"}": "#F9BA8F" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "editable": true, + "error": false, + "fill": 1, + "grid": {}, + "id": 2, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 5, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(prometheus_target_interval_length_seconds_count[5m])", + "intervalFactor": 2, + "legendFormat": "{{job}}", + "refId": "A", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Target Scrapes (last 5m)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "editable": true, + "error": false, + "fill": 1, + "grid": {}, + "id": 14, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 4, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "prometheus_target_interval_length_seconds{quantile!=\"0.01\", quantile!=\"0.05\"}", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{quantile}} ({{interval}})", + "metric": "", + "refId": "A", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Scrape Duration", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "content": "#### Scrapes\nPrometheus scrapes metrics from instrumented jobs, either directly or via an intermediary push gateway for short-lived jobs. Target scrapes will show how frequently targets are scraped, as measured over the last 5 minutes, per time series in the range vector. Scrape Duration will show how long the scrapes are taking, with percentiles available as series. ", + "editable": true, + "error": false, + "id": 11, + "links": [], + "mode": "markdown", + "span": 3, + "style": {}, + "title": "", + "transparent": true, + "type": "text" + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "New row", + "titleSize": "h6" + }, + { + "collapse": false, + "height": "250px", + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": null, + "editable": true, + "error": false, + "fill": 1, + "grid": {}, + "id": 12, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 9, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "prometheus_evaluator_duration_seconds{quantile!=\"0.01\", quantile!=\"0.05\"}", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{quantile}}", + "refId": "A", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Rule Eval Duration", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percentunit", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "content": "#### Rule Evaluation Duration\nThis graph panel plots the duration for all evaluations to execute. The 50th percentile, 90th percentile and 99th percentile are shown as three separate series to help identify outliers that may be skewing the data.", + "editable": true, + "error": false, + "id": 15, + "links": [], + "mode": "markdown", + "span": 3, + "style": {}, + "title": "", + "transparent": true, + "type": "text" + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "New row", + "titleSize": "h6" + } + ], + "schemaVersion": 14, + "style": "dark", + "tags": [ + "prometheus" + ], + "templating": { + "list": [] + }, + "time": { + "from": "now-5m", + "to": "now" + }, + "timepicker": { + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "browser", + "title": "Prometheus Stats", + "version": 0 +} \ No newline at end of file diff --git a/driver-kafka/deploy/monitoring/dashboards/pulsar_perf.json b/driver-kafka/deploy/monitoring/dashboards/pulsar_perf.json new file mode 100644 index 00000000..069dcf21 --- /dev/null +++ b/driver-kafka/deploy/monitoring/dashboards/pulsar_perf.json @@ -0,0 +1,1036 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "id": 2, + "links": [], + "panels": [ + { + "aliasColors": { + "Bookie Add Entry Latency (p99)": "#d8365d", + "Broker - Read": "#66cc69", + "Broker - Write": "#00afba", + "Consume rate": "#173361", + "DD - Max throughput": "#d8365d", + "Produce rate": "#d8365d", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "fill": 5, + "fillGradient": 0, + "gridPos": { + "h": 11, + "w": 12, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "id": 12, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pluginVersion": "7.0.5", + "pointradius": 2, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Consume rate", + "dashes": true, + "fill": 0, + "linewidth": 2, + "yaxis": 1 + }, + { + "alias": "Produce rate", + "dashes": true, + "fill": 0, + "linewidth": 2, + "yaxis": 1 + }, + { + "alias": "DD - Max throughput", + "fill": 0, + "lines": true, + "linewidth": 3, + "points": false + }, + { + "alias": "Bookie Add Entry Rate", + "lines": true + }, + { + "alias": "Bookie Add Entry Latency (p99)", + "dashes": true, + "linewidth": 2, + "points": false, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (instance) (rate(node_disk_written_bytes_total{device=~\"nvme1n1|nvme2n1\"}[1m]))", + "hide": true, + "interval": "", + "intervalFactor": 1, + "legendFormat": "Broker - {{instance}} - Write", + "refId": "A" + }, + { + "expr": "sum(rate(node_disk_read_bytes_total{device=~\"nvme1n1|nvme2n1\"}[1m]))", + "hide": true, + "interval": "", + "legendFormat": "Broker - Read", + "refId": "B" + }, + { + "expr": "sum(pulsar_throughput_in)", + "hide": false, + "interval": "", + "legendFormat": "Produce rate", + "refId": "C" + }, + { + "expr": "sum(pulsar_throughput_out)", + "hide": false, + "interval": "", + "legendFormat": "Consume rate", + "refId": "D" + }, + { + "expr": "655000000", + "hide": true, + "interval": "", + "legendFormat": "DD - Max throughput", + "refId": "E" + }, + { + "expr": "sum(rate(bookie_WRITE_BYTES[30s]))", + "hide": false, + "interval": "", + "legendFormat": "Bookie Add Entry Rate", + "refId": "F" + }, + { + "expr": "avg(bookkeeper_server_ADD_ENTRY_REQUEST{success=\"true\", quantile=\"0.99\"})", + "hide": false, + "interval": "", + "legendFormat": "Bookie Add Entry Latency (p99)", + "refId": "G" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O throughput + Producer/Consume Throughput", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": "Throughput", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "ms", + "label": "Latency", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Bookie Add Entry Latency (p99)": "#d8365d", + "Broker - Read": "#66cc69", + "Broker - Write": "#00afba", + "Consume rate": "#173361", + "DD - Max throughput": "#d8365d", + "Produce rate": "#d8365d", + "Value": "#d8365d", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "fill": 5, + "fillGradient": 0, + "gridPos": { + "h": 11, + "w": 12, + "x": 12, + "y": 0 + }, + "hiddenSeries": false, + "id": 13, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pluginVersion": "7.0.5", + "pointradius": 2, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "bookie_journal_JOURNAL_CB_QUEUE_SIZE", + "interval": "", + "legendFormat": "Number of entries - {{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Journal Callback Queue Length", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "Entries", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "ms", + "label": "Latency", + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 11 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "delta(node_disk_io_time_seconds_total{device=~\"nvme1n1|nvme2n1\"}[1m])/60", + "interval": "", + "intervalFactor": 1, + "legendFormat": "Broker - {{instance}} ➝ Disk - {{device}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O Utilization", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percentunit", + "label": null, + "logBase": 1, + "max": "1", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 11 + }, + "hiddenSeries": false, + "id": 6, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (instance) (delta(node_disk_written_bytes_total{device=~\"nvme1n1|nvme2n1\"}[1m])/60)", + "interval": "", + "intervalFactor": 1, + "legendFormat": "Broker - {{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O throughput", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 20 + }, + "hiddenSeries": false, + "id": 4, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(delta(benchmark_producer_messages_sent[1m])/60)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Publish rate (messages/sec)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 20 + }, + "hiddenSeries": false, + "id": 5, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(delta(benchmark_producer_bytes_sent[1m])/60)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Publish throughput (MB/sec)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 28 + }, + "hiddenSeries": false, + "id": 10, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(kafka_log_logflushstats_logflushrateandtimems{quantile=\"0.99\"}[1m])", + "interval": "", + "legendFormat": "Broker - {{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Log Flush Time (p99)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Idle - Waiting for something to happen": "#052B51", + "Iowait - Waiting for I/O to complete": "blue", + "Nice - Niced processes executing in user mode": "yellow", + "Softirq - Servicing softirqs": "yellow", + "System - Processes executing in kernel mode": "dark-purple", + "User - Normal processes executing in user mode": "red", + "guest": "#9AC48A", + "idle": "#052B51", + "iowait": "#EAB839", + "irq": "#BF1B00", + "nice": "#C15C17", + "softirq": "#E24D42", + "steal": "#FCE2DE", + "system": "#508642", + "user": "#5195CE" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 2, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 13, + "w": 24, + "x": 0, + "y": 36 + }, + "hiddenSeries": false, + "id": 8, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 250, + "sort": null, + "sortDesc": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": true, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"user\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "User - Normal processes executing in user mode", + "refId": "B", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"system\"}[5m])) * 100", + "format": "time_series", + "interval": "10s", + "intervalFactor": 2, + "legendFormat": "System - Processes executing in kernel mode", + "refId": "A", + "step": 20 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"iowait\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Iowait - Waiting for I/O to complete", + "refId": "E", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"softirq\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Softirq - Servicing softirqs", + "refId": "G", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"idle\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Idle - Waiting for something to happen", + "refId": "D", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU Usage across all Brokers", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "percentage", + "logBase": 1, + "max": "100", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "refresh": false, + "schemaVersion": 25, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ] + }, + "timezone": "utc", + "title": "Performance Metrics - Pulsar", + "uid": "vYWrwI7Mk", + "version": 8 +} \ No newline at end of file diff --git a/driver-kafka/deploy/monitoring/dashboards/rabbit_perf.json b/driver-kafka/deploy/monitoring/dashboards/rabbit_perf.json new file mode 100644 index 00000000..c2e5a017 --- /dev/null +++ b/driver-kafka/deploy/monitoring/dashboards/rabbit_perf.json @@ -0,0 +1,892 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "id": 7, + "links": [], + "panels": [ + { + "aliasColors": { + "Broker - Read": "#66cc69", + "Broker - Write": "#00afba", + "CPU Usage": "#66cc69", + "Consume rate": "#ffc40c", + "DD - Max throughput": "#d8365d", + "Produce rate": "#173361", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "fill": 5, + "fillGradient": 0, + "gridPos": { + "h": 11, + "w": 12, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "id": 12, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": false, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pluginVersion": "7.0.5", + "pointradius": 2, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Consume rate", + "dashes": true, + "fill": 0, + "linewidth": 2, + "yaxis": 1 + }, + { + "alias": "Produce rate", + "dashes": true, + "fill": 0, + "linewidth": 2, + "yaxis": 1 + }, + { + "alias": "DD - Max throughput", + "fill": 0, + "lines": true, + "linewidth": 3, + "points": false + }, + { + "alias": "CPU Usage", + "lines": true, + "points": false, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (instance) (rate(node_disk_written_bytes_total{device=~\"nvme1n1|nvme2n1\"}[1m]))", + "hide": true, + "interval": "", + "intervalFactor": 1, + "legendFormat": "Broker - {{instance}} - Write", + "refId": "A" + }, + { + "expr": "sum(rate(node_disk_read_bytes_total{device=~\"nvme1n1|nvme2n1\"}[1m]))", + "hide": true, + "interval": "", + "legendFormat": "Broker - Read", + "refId": "B" + }, + { + "expr": "sum(rate(benchmark_producer_bytes_sent[1m]))", + "hide": false, + "interval": "", + "legendFormat": "Produce rate", + "refId": "C" + }, + { + "expr": "sum(rate(benchmark_consumer_bytes_recv[1m]))", + "hide": false, + "interval": "", + "legendFormat": "Consume rate", + "refId": "D" + }, + { + "expr": "655000000", + "hide": true, + "interval": "", + "legendFormat": "DD - Max throughput", + "refId": "E" + }, + { + "expr": "(((count(count(avg(node_cpu_seconds_total)) by (cpu))) - avg(sum by (mode)(avg(irate(node_cpu_seconds_total{mode='idle'}[5m]))))) * 100) / count(count(avg(node_cpu_seconds_total)) by (cpu))", + "interval": "", + "legendFormat": "CPU Usage", + "refId": "F" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Producer/Consume Throughput + CPU Usage", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": "I/O throughput", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "percent", + "label": "CPU Usage", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 0 + }, + "hiddenSeries": false, + "id": 6, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (instance) (delta(node_disk_written_bytes_total{device=~\"nvme1n1|nvme2n1\"}[1m])/60)", + "interval": "", + "intervalFactor": 1, + "legendFormat": "Broker - {{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O throughput", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 9 + }, + "hiddenSeries": false, + "id": 5, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(delta(benchmark_producer_bytes_sent[1m])/60)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Publish throughput (MB/sec)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 11 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "delta(node_disk_io_time_seconds_total{device=~\"nvme1n1|nvme2n1\"}[1m])/60", + "interval": "", + "intervalFactor": 1, + "legendFormat": "Broker - {{instance}} ➝ Disk - {{device}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O Utilization", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percentunit", + "label": null, + "logBase": 1, + "max": "1", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 20 + }, + "hiddenSeries": false, + "id": 4, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(delta(benchmark_producer_messages_sent[1m])/60)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Publish rate (messages/sec)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 28 + }, + "hiddenSeries": false, + "id": 10, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(kafka_log_logflushstats_logflushrateandtimems{quantile=\"0.99\"}[1m])", + "interval": "", + "legendFormat": "Broker - {{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Log Flush Time (p99)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Idle - Waiting for something to happen": "#052B51", + "Iowait - Waiting for I/O to complete": "blue", + "Nice - Niced processes executing in user mode": "yellow", + "Softirq - Servicing softirqs": "yellow", + "System - Processes executing in kernel mode": "dark-purple", + "User - Normal processes executing in user mode": "red", + "guest": "#9AC48A", + "idle": "#052B51", + "iowait": "#EAB839", + "irq": "#BF1B00", + "nice": "#C15C17", + "softirq": "#E24D42", + "steal": "#FCE2DE", + "system": "#508642", + "user": "#5195CE" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 2, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 13, + "w": 24, + "x": 0, + "y": 36 + }, + "hiddenSeries": false, + "id": 8, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 250, + "sort": null, + "sortDesc": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": true, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"user\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "User - Normal processes executing in user mode", + "refId": "B", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"system\"}[5m])) * 100", + "format": "time_series", + "interval": "10s", + "intervalFactor": 2, + "legendFormat": "System - Processes executing in kernel mode", + "refId": "A", + "step": 20 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"iowait\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Iowait - Waiting for I/O to complete", + "refId": "E", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"softirq\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Softirq - Servicing softirqs", + "refId": "G", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"idle\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Idle - Waiting for something to happen", + "refId": "D", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU Usage across all Brokers", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "percentage", + "logBase": 1, + "max": "100", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "refresh": false, + "schemaVersion": 25, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ] + }, + "timezone": "utc", + "title": "Performance Metrics - RabbitMQ", + "uid": "vYWrwI7Mkrabbit", + "version": 3 +} \ No newline at end of file diff --git a/driver-kafka/deploy/monitoring/dashboards/system.json b/driver-kafka/deploy/monitoring/dashboards/system.json new file mode 100644 index 00000000..aa51c95f --- /dev/null +++ b/driver-kafka/deploy/monitoring/dashboards/system.json @@ -0,0 +1,14051 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "gnetId": 1860, + "graphTooltip": 0, + "id": 2, + "iteration": 1597269377076, + "links": [], + "panels": [ + { + "aliasColors": { + "benchmark_producer_produce_latency{group=\"client\", instance=\"10.0.0.23:8081\", job=\"kafka\", quantile=\"0.99\", success=\"true\"}": "blue", + "benchmark_producer_produce_latency{group=\"client\", instance=\"10.0.0.61:8081\", job=\"kafka\", quantile=\"0.99\", success=\"true\"}": "yellow" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "id": 317, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": false, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 0.5, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "benchmark_producer_produce_latency{quantile=\"0.99\"}", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Publish latency - p99", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 8 + }, + "id": 261, + "panels": [ + { + "cacheTimeout": null, + "datasource": "${DS_PROMETHEUS}", + "description": "Busy state of all CPU cores together", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": {}, + "mappings": [ + { + "id": 0, + "op": "=", + "text": "N/A", + "type": 1, + "value": "null" + } + ], + "max": 100, + "min": 0, + "nullValueMode": "null", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 85 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 95 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 0, + "y": 9 + }, + "id": 20, + "links": [], + "options": { + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true + }, + "pluginVersion": "7.0.5", + "targets": [ + { + "expr": "(((count(count(node_cpu_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}) by (cpu))) - avg(sum by (mode)(irate(node_cpu_seconds_total{mode='idle',instance=~\"$node:$port\",job=~\"$job\"}[5m])))) * 100) / count(count(node_cpu_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}) by (cpu))", + "hide": false, + "intervalFactor": 1, + "legendFormat": "", + "refId": "A", + "step": 900 + } + ], + "title": "CPU Busy", + "type": "gauge" + }, + { + "cacheTimeout": null, + "datasource": "${DS_PROMETHEUS}", + "description": "Busy state of all CPU cores together (5 min average)", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": {}, + "mappings": [ + { + "id": 0, + "op": "=", + "text": "N/A", + "type": 1, + "value": "null" + } + ], + "max": 100, + "min": 0, + "nullValueMode": "null", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 85 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 95 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 3, + "y": 9 + }, + "id": 155, + "links": [], + "options": { + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true + }, + "pluginVersion": "7.0.5", + "targets": [ + { + "expr": "avg(node_load5{instance=~\"$node:$port\",job=~\"$job\"}) / count(count(node_cpu_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}) by (cpu)) * 100", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "refId": "A", + "step": 900 + } + ], + "title": "Sys Load (5m avg)", + "type": "gauge" + }, + { + "cacheTimeout": null, + "datasource": "${DS_PROMETHEUS}", + "description": "Busy state of all CPU cores together (15 min average)", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": {}, + "mappings": [ + { + "id": 0, + "op": "=", + "text": "N/A", + "type": 1, + "value": "null" + } + ], + "max": 100, + "min": 0, + "nullValueMode": "null", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 85 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 95 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 6, + "y": 9 + }, + "id": 19, + "links": [], + "options": { + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true + }, + "pluginVersion": "7.0.5", + "targets": [ + { + "expr": "avg(node_load15{instance=~\"$node:$port\",job=~\"$job\"}) / count(count(node_cpu_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}) by (cpu)) * 100", + "hide": false, + "intervalFactor": 1, + "refId": "A", + "step": 900 + } + ], + "title": "Sys Load (15m avg)", + "type": "gauge" + }, + { + "cacheTimeout": null, + "datasource": "${DS_PROMETHEUS}", + "description": "Non available RAM memory", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": {}, + "decimals": 0, + "mappings": [], + "max": 100, + "min": 0, + "nullValueMode": "null", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 80 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 90 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 9, + "y": 9 + }, + "hideTimeOverride": false, + "id": 16, + "links": [], + "options": { + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true + }, + "pluginVersion": "7.0.5", + "targets": [ + { + "expr": "((node_memory_MemTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_MemFree_bytes{instance=~\"$node:$port\",job=~\"$job\"}) / (node_memory_MemTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"} )) * 100", + "format": "time_series", + "hide": true, + "intervalFactor": 1, + "refId": "A", + "step": 900 + }, + { + "expr": "100 - ((node_memory_MemAvailable_bytes{instance=~\"$node:$port\",job=~\"$job\"} * 100) / node_memory_MemTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"})", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "refId": "B", + "step": 900 + } + ], + "title": "RAM Used", + "type": "gauge" + }, + { + "cacheTimeout": null, + "datasource": "${DS_PROMETHEUS}", + "description": "Used Swap", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": {}, + "mappings": [ + { + "id": 0, + "op": "=", + "text": "N/A", + "type": 1, + "value": "null" + } + ], + "max": 100, + "min": 0, + "nullValueMode": "null", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 25 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 12, + "y": 9 + }, + "id": 21, + "links": [], + "options": { + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true + }, + "pluginVersion": "7.0.5", + "targets": [ + { + "expr": "((node_memory_SwapTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_SwapFree_bytes{instance=~\"$node:$port\",job=~\"$job\"}) / (node_memory_SwapTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"} )) * 100", + "intervalFactor": 1, + "refId": "A", + "step": 900 + } + ], + "title": "SWAP Used", + "type": "gauge" + }, + { + "cacheTimeout": null, + "datasource": "${DS_PROMETHEUS}", + "description": "Used Root FS", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": {}, + "mappings": [ + { + "id": 0, + "op": "=", + "text": "N/A", + "type": 1, + "value": "null" + } + ], + "max": 100, + "min": 0, + "nullValueMode": "null", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 80 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 90 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 15, + "y": 9 + }, + "id": 154, + "links": [], + "options": { + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true + }, + "pluginVersion": "7.0.5", + "targets": [ + { + "expr": "100 - ((node_filesystem_avail_bytes{instance=~\"$node:$port\",job=~\"$job\",mountpoint=\"/\",fstype!=\"rootfs\"} * 100) / node_filesystem_size_bytes{instance=~\"$node:$port\",job=~\"$job\",mountpoint=\"/\",fstype!=\"rootfs\"})", + "format": "time_series", + "intervalFactor": 1, + "refId": "A", + "step": 900 + } + ], + "title": "Root FS Used", + "type": "gauge" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "${DS_PROMETHEUS}", + "description": "Total number of CPU cores", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "short", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 2, + "w": 2, + "x": 18, + "y": 9 + }, + "id": 14, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "maxPerRow": 6, + "nullPointMode": "null", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "tableColumn": "", + "targets": [ + { + "expr": "count(count(node_cpu_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}) by (cpu))", + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A", + "step": 900 + } + ], + "thresholds": "", + "title": "CPU Cores", + "type": "singlestat", + "valueFontSize": "50%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "${DS_PROMETHEUS}", + "decimals": 1, + "description": "System uptime", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "s", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 2, + "w": 4, + "x": 20, + "y": 9 + }, + "hideTimeOverride": true, + "id": 15, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "null", + "nullText": null, + "postfix": "s", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "tableColumn": "{group=\"broker-os\", instance=\"10.0.0.15:9100\", job=\"kafka\"}", + "targets": [ + { + "expr": "node_time_seconds{instance=~\"$node:$port\",job=~\"$job\"} - node_boot_time_seconds{instance=~\"$node:$port\",job=~\"$job\"}", + "intervalFactor": 2, + "refId": "A", + "step": 1800 + } + ], + "thresholds": "", + "title": "Uptime", + "type": "singlestat", + "valueFontSize": "50%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(50, 172, 45, 0.97)", + "rgba(237, 129, 40, 0.89)", + "rgba(245, 54, 54, 0.9)" + ], + "datasource": "${DS_PROMETHEUS}", + "decimals": 0, + "description": "Total RootFS", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "bytes", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 2, + "w": 2, + "x": 18, + "y": 11 + }, + "id": 23, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "maxPerRow": 6, + "nullPointMode": "null", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "tableColumn": "node_filesystem_size_bytes{device=\"/dev/nvme0n1p2\", fstype=\"xfs\", group=\"broker-os\", instance=\"10.0.0.15:9100\", job=\"kafka\", mountpoint=\"/\"}", + "targets": [ + { + "expr": "node_filesystem_size_bytes{instance=~\"$node:$port\",job=~\"$job\",mountpoint=\"/\",fstype!=\"rootfs\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "refId": "A", + "step": 900 + } + ], + "thresholds": "70,90", + "title": "RootFS Total", + "type": "singlestat", + "valueFontSize": "50%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "${DS_PROMETHEUS}", + "decimals": 0, + "description": "Total RAM", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "bytes", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 2, + "w": 2, + "x": 20, + "y": 11 + }, + "id": 75, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "maxPerRow": 6, + "nullPointMode": "null", + "nullText": null, + "postfix": "", + "postfixFontSize": "70%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "tableColumn": "node_memory_MemTotal_bytes{group=\"broker-os\", instance=\"10.0.0.15:9100\", job=\"kafka\"}", + "targets": [ + { + "expr": "node_memory_MemTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "intervalFactor": 1, + "refId": "A", + "step": 900 + } + ], + "thresholds": "", + "title": "RAM Total", + "type": "singlestat", + "valueFontSize": "50%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "${DS_PROMETHEUS}", + "decimals": 0, + "description": "Total SWAP", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "bytes", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 2, + "w": 2, + "x": 22, + "y": 11 + }, + "id": 18, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "maxPerRow": 6, + "nullPointMode": "null", + "nullText": null, + "postfix": "", + "postfixFontSize": "70%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "tableColumn": "node_memory_SwapTotal_bytes{group=\"broker-os\", instance=\"10.0.0.15:9100\", job=\"kafka\"}", + "targets": [ + { + "expr": "node_memory_SwapTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "intervalFactor": 1, + "refId": "A", + "step": 900 + } + ], + "thresholds": "", + "title": "SWAP Total", + "type": "singlestat", + "valueFontSize": "50%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + } + ], + "repeat": null, + "title": "Quick CPU / Mem / Disk", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 9 + }, + "id": 263, + "panels": [ + { + "aliasColors": { + "Busy": "#EAB839", + "Busy Iowait": "#890F02", + "Busy other": "#1F78C1", + "Idle": "#052B51", + "Idle - Waiting for something to happen": "#052B51", + "guest": "#9AC48A", + "idle": "#052B51", + "iowait": "#EAB839", + "irq": "#BF1B00", + "nice": "#C15C17", + "softirq": "#E24D42", + "steal": "#FCE2DE", + "system": "#508642", + "user": "#5195CE" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "description": "Basic CPU info", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 10 + }, + "hiddenSeries": false, + "id": 77, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "sideWidth": 250, + "sort": null, + "sortDesc": null, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": true, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Busy Iowait", + "color": "#890F02" + }, + { + "alias": "Idle", + "color": "#7EB26D" + }, + { + "alias": "Busy System", + "color": "#EAB839" + }, + { + "alias": "Busy User", + "color": "#0A437C" + }, + { + "alias": "Busy Other", + "color": "#6D1F62" + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (instance)(irate(node_cpu_seconds_total{mode=\"system\",instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Busy System", + "refId": "A", + "step": 240 + }, + { + "expr": "sum by (instance)(irate(node_cpu_seconds_total{mode='user',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Busy User", + "refId": "B", + "step": 240 + }, + { + "expr": "sum by (instance)(irate(node_cpu_seconds_total{mode='iowait',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Busy Iowait", + "refId": "C", + "step": 240 + }, + { + "expr": "sum by (instance)(irate(node_cpu_seconds_total{mode=~\".*irq\",instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Busy IRQs", + "refId": "D", + "step": 240 + }, + { + "expr": "sum (irate(node_cpu_seconds_total{mode!='idle',mode!='user',mode!='system',mode!='iowait',mode!='irq',mode!='softirq',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Busy Other", + "refId": "E", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='idle',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Idle", + "refId": "F", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU Basic", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "", + "logBase": 1, + "max": "100", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "SWAP Used": "#BF1B00", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap Used": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "description": "Basic memory usage", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 10 + }, + "hiddenSeries": false, + "id": 78, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "RAM Total", + "color": "#E0F9D7", + "fill": 0, + "stack": false + }, + { + "alias": "RAM Cache + Buffer", + "color": "#052B51" + }, + { + "alias": "RAM Free", + "color": "#7EB26D" + }, + { + "alias": "Avaliable", + "color": "#DEDAF7", + "fill": 0, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_MemTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "RAM Total", + "refId": "A", + "step": 240 + }, + { + "expr": "node_memory_MemTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_MemFree_bytes{instance=~\"$node:$port\",job=~\"$job\"} - (node_memory_Cached_bytes{instance=~\"$node:$port\",job=~\"$job\"} + node_memory_Buffers_bytes{instance=~\"$node:$port\",job=~\"$job\"})", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "RAM Used", + "refId": "B", + "step": 240 + }, + { + "expr": "node_memory_Cached_bytes{instance=~\"$node:$port\",job=~\"$job\"} + node_memory_Buffers_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "RAM Cache + Buffer", + "refId": "C", + "step": 240 + }, + { + "expr": "node_memory_MemFree_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "RAM Free", + "refId": "D", + "step": 240 + }, + { + "expr": "(node_memory_SwapTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_SwapFree_bytes{instance=~\"$node:$port\",job=~\"$job\"})", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "SWAP Used", + "refId": "E", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Basic", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Recv_bytes_eth2": "#7EB26D", + "Recv_bytes_lo": "#0A50A1", + "Recv_drop_eth2": "#6ED0E0", + "Recv_drop_lo": "#E0F9D7", + "Recv_errs_eth2": "#BF1B00", + "Recv_errs_lo": "#CCA300", + "Trans_bytes_eth2": "#7EB26D", + "Trans_bytes_lo": "#0A50A1", + "Trans_drop_eth2": "#6ED0E0", + "Trans_drop_lo": "#E0F9D7", + "Trans_errs_eth2": "#BF1B00", + "Trans_errs_lo": "#CCA300", + "recv_bytes_lo": "#0A50A1", + "recv_drop_eth0": "#99440A", + "recv_drop_lo": "#967302", + "recv_errs_eth0": "#BF1B00", + "recv_errs_lo": "#890F02", + "trans_bytes_eth0": "#7EB26D", + "trans_bytes_lo": "#0A50A1", + "trans_drop_eth0": "#99440A", + "trans_drop_lo": "#967302", + "trans_errs_eth0": "#BF1B00", + "trans_errs_lo": "#890F02" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "Basic network info per interface", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 17 + }, + "hiddenSeries": false, + "id": 74, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_receive_bytes_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])*8", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "recv {{device}}", + "refId": "A", + "step": 240 + }, + { + "expr": "irate(node_network_transmit_bytes_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])*8", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "trans {{device}} ", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Basic", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "pps", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 3, + "description": "Disk space used of all filesystems mounted", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 17 + }, + "height": "", + "hiddenSeries": false, + "id": 152, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "100 - ((node_filesystem_avail_bytes{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'} * 100) / node_filesystem_size_bytes{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'})", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{mountpoint}}", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk Space Used Basic", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percent", + "label": null, + "logBase": 1, + "max": "100", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Basic CPU / Mem / Net / Disk", + "type": "row" + }, + { + "collapsed": false, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 10 + }, + "id": 265, + "panels": [], + "repeat": null, + "title": "CPU / Memory / Net / Disk", + "type": "row" + }, + { + "aliasColors": { + "Idle - Waiting for something to happen": "#052B51", + "guest": "#9AC48A", + "idle": "#052B51", + "iowait": "#EAB839", + "irq": "#BF1B00", + "nice": "#C15C17", + "softirq": "#E24D42", + "steal": "#FCE2DE", + "system": "#508642", + "user": "#5195CE" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 12, + "w": 12, + "x": 0, + "y": 11 + }, + "hiddenSeries": false, + "id": 3, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 250, + "sort": null, + "sortDesc": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": true, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"system\",instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "interval": "10s", + "intervalFactor": 2, + "legendFormat": "System - Processes executing in kernel mode", + "refId": "A", + "step": 20 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='user',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "User - Normal processes executing in user mode", + "refId": "B", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='nice',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Nice - Niced processes executing in user mode", + "refId": "C", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='idle',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Idle - Waiting for something to happen", + "refId": "D", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='iowait',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Iowait - Waiting for I/O to complete", + "refId": "E", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='irq',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Irq - Servicing interrupts", + "refId": "F", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='softirq',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Softirq - Servicing softirqs", + "refId": "G", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='steal',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Steal - Time spent in other operating systems when running in a virtualized environment", + "refId": "H", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='guest',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Guest - Time spent running a virtual CPU for a guest operating system", + "refId": "I", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "percentage", + "logBase": 1, + "max": "100", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap - Swap memory usage": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839", + "Unused - Free memory unassigned": "#052B51" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 12, + "w": 12, + "x": 12, + "y": 11 + }, + "hiddenSeries": false, + "id": 24, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": null, + "sortDesc": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Hardware Corrupted - *./", + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_MemTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_MemFree_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_Buffers_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_Cached_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_Slab_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_PageTables_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_SwapCached_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Apps - Memory used by user-space applications", + "refId": "A", + "step": 240 + }, + { + "expr": "node_memory_PageTables_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "PageTables - Memory used to map between virtual and physical memory addresses", + "refId": "B", + "step": 240 + }, + { + "expr": "node_memory_SwapCached_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "SwapCache - Memory that keeps track of pages that have been fetched from swap but not yet been modified", + "refId": "C", + "step": 240 + }, + { + "expr": "node_memory_Slab_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Slab - Memory used by the kernel to cache data structures for its own use (caches like inode, dentry, etc)", + "refId": "D", + "step": 240 + }, + { + "expr": "node_memory_Cached_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Cache - Parked file data (file content) cache", + "refId": "E", + "step": 240 + }, + { + "expr": "node_memory_Buffers_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Buffers - Block device (e.g. harddisk) cache", + "refId": "F", + "step": 240 + }, + { + "expr": "node_memory_MemFree_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Unused - Free memory unassigned", + "refId": "G", + "step": 240 + }, + { + "expr": "(node_memory_SwapTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_SwapFree_bytes{instance=~\"$node:$port\",job=~\"$job\"})", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Swap - Swap space used", + "refId": "H", + "step": 240 + }, + { + "expr": "node_memory_HardwareCorrupted_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working", + "refId": "I", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Stack", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "receive_packets_eth0": "#7EB26D", + "receive_packets_lo": "#E24D42", + "transmit_packets_eth0": "#7EB26D", + "transmit_packets_lo": "#E24D42" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 12, + "w": 12, + "x": 0, + "y": 23 + }, + "hiddenSeries": false, + "id": 84, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_receive_bytes_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])*8", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive", + "refId": "A", + "step": 240 + }, + { + "expr": "irate(node_network_transmit_bytes_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])*8", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Transmit", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bps", + "label": "bits out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 3, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 12, + "w": 12, + "x": 12, + "y": 23 + }, + "height": "", + "hiddenSeries": false, + "id": 156, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": false, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_filesystem_size_bytes{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'} - node_filesystem_avail_bytes{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{mountpoint}}", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk Space Used", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 12, + "w": 12, + "x": 0, + "y": 35 + }, + "hiddenSeries": false, + "id": 229, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Read.*/", + "transform": "negative-Y" + }, + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_reads_completed_total{instance=~\"$node:$port\"}[5m])", + "interval": "", + "intervalFactor": 4, + "legendFormat": "{{device}} - Reads completed", + "refId": "A", + "step": 480 + }, + { + "expr": "irate(node_disk_writes_completed_total{instance=~\"$node:$port\"}[5m])", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{device}} - Writes completed", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk IOps", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "iops", + "label": "IO read (-) / write (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "io time": "#890F02" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 3, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 12, + "w": 12, + "x": 12, + "y": 35 + }, + "hiddenSeries": false, + "id": 42, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": null, + "sortDesc": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*read*./", + "transform": "negative-Y" + }, + { + "alias": "/.*sda.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde.*/", + "color": "#E24D42" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_read_bytes_total{instance=~\"$node:$port\"}[5m])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{device}} - Successfully read bytes", + "refId": "A", + "step": 240 + }, + { + "expr": "irate(node_disk_written_bytes_total{instance=~\"$node:$port\"}[5m])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{device}} - Successfully written bytes", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O Usage Read / Write", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": false, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes read (-) / write (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "ms", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "io time": "#890F02" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 3, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 12, + "w": 12, + "x": 0, + "y": 47 + }, + "hiddenSeries": false, + "id": 127, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": null, + "sortDesc": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_io_time_seconds_total{instance=~\"$node:$port\"} [5m])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{device}} - Time spent doing I/Os", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O Usage Times", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": false, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "time", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "s", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 59 + }, + "id": 266, + "panels": [ + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 12 + }, + "hiddenSeries": false, + "id": 136, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_Inactive_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Inactive - Memory which has been less recently used. It is more eligible to be reclaimed for other purposes", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_Active_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Active - Memory that has been used more recently and usually not reclaimed unless absolutely necessary", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Active / Inactive", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 12 + }, + "hiddenSeries": false, + "id": 135, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Committed_AS - *./" + }, + { + "alias": "/.*CommitLimit - *./", + "color": "#BF1B00", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_Committed_AS_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Committed_AS - Amount of memory presently allocated on the system", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_CommitLimit_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "CommitLimit - Amount of memory currently available to be allocated on the system", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Commited", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 22 + }, + "hiddenSeries": false, + "id": 191, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_Inactive_file_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Inactive_file - File-backed memory on inactive LRU list", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_Inactive_anon_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Inactive_anon - Anonymous and swap cache on inactive LRU list, including tmpfs (shmem)", + "refId": "B", + "step": 4 + }, + { + "expr": "node_memory_Active_file_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Active_file - File-backed memory on active LRU list", + "refId": "C", + "step": 4 + }, + { + "expr": "node_memory_Active_anon_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Active_anon - Anonymous and swap cache on active least-recently-used (LRU) list, including tmpfs", + "refId": "D", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Active / Inactive Detail", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "bytes", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "Total Swap": "#614D93", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 22 + }, + "hiddenSeries": false, + "id": 130, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_Writeback_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Writeback - Memory which is actively being written back to disk", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_WritebackTmp_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "WritebackTmp - Memory used by FUSE for temporary writeback buffers", + "refId": "B", + "step": 4 + }, + { + "expr": "node_memory_Dirty_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Dirty - Memory which is waiting to get written back to the disk", + "refId": "C", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Writeback and Dirty", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 32 + }, + "hiddenSeries": false, + "id": 138, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "ShmemHugePages - Memory used by shared memory (shmem) and tmpfs allocated with huge pages", + "fill": 0 + }, + { + "alias": "ShmemHugePages - Memory used by shared memory (shmem) and tmpfs allocated with huge pages", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_Mapped_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Mapped - Used memory in mapped pages files which have been mmaped, such as libraries", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_Shmem_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Shmem - Used shared memory (shared between several processes, thus including RAM disks)", + "refId": "B", + "step": 4 + }, + { + "expr": "node_memory_ShmemHugePages_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "ShmemHugePages - Memory used by shared memory (shmem) and tmpfs allocated with huge pages", + "refId": "C", + "step": 4 + }, + { + "expr": "node_memory_ShmemPmdMapped_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "ShmemPmdMapped - Ammount of shared (shmem/tmpfs) memory backed by huge pages", + "refId": "D", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Shared and Mapped", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "Total Swap": "#614D93", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 32 + }, + "hiddenSeries": false, + "id": 131, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_SUnreclaim_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "SUnreclaim - Part of Slab, that cannot be reclaimed on memory pressure", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_SReclaimable_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "SReclaimable - Part of Slab, that might be reclaimed, such as caches", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Slab", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 42 + }, + "hiddenSeries": false, + "id": 70, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_VmallocChunk_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "VmallocChunk - Largest contigious block of vmalloc area which is free", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_VmallocTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "VmallocTotal - Total size of vmalloc memory area", + "refId": "B", + "step": 4 + }, + { + "expr": "node_memory_VmallocUsed_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "VmallocUsed - Amount of vmalloc area which is used", + "refId": "C", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Vmalloc", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 42 + }, + "hiddenSeries": false, + "id": 159, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_Bounce_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Bounce - Memory used for block device bounce buffers", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Bounce", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 52 + }, + "hiddenSeries": false, + "id": 129, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Inactive *./", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_AnonHugePages_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "AnonHugePages - Memory in anonymous huge pages", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_AnonPages_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "AnonPages - Memory in user pages not backed by files", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Anonymous", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 52 + }, + "hiddenSeries": false, + "id": 160, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_KernelStack_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "KernelStack - Kernel memory stack. This is not reclaimable", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_Percpu_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "PerCPU - Per CPU memory allocated dynamically by loadable modules", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Kernel / CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#806EB7", + "Total RAM + Swap": "#806EB7", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 62 + }, + "hiddenSeries": false, + "id": 140, + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_HugePages_Free{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "HugePages_Free - Huge pages in the pool that are not yet allocated", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_HugePages_Rsvd{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "HugePages_Rsvd - Huge pages for which a commitment to allocate from the pool has been made, but no allocation has yet been made", + "refId": "B", + "step": 4 + }, + { + "expr": "node_memory_HugePages_Surp{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "HugePages_Surp - Huge pages in the pool above the value in /proc/sys/vm/nr_hugepages", + "refId": "C", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory HugePages Counter", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "pages", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#806EB7", + "Total RAM + Swap": "#806EB7", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 62 + }, + "hiddenSeries": false, + "id": 71, + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_HugePages_Total{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "HugePages - Total size of the pool of huge pages", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_Hugepagesize_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Hugepagesize - Huge Page size", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory HugePages Size", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 72 + }, + "hiddenSeries": false, + "id": 128, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_DirectMap1G_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "DirectMap1G - Amount of pages mapped as this size", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_DirectMap2M_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "DirectMap2M - Amount of pages mapped as this size", + "refId": "B", + "step": 4 + }, + { + "expr": "node_memory_DirectMap4k_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "DirectMap4K - Amount of pages mapped as this size", + "refId": "C", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory DirectMap", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 72 + }, + "hiddenSeries": false, + "id": 137, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_Unevictable_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Unevictable - Amount of unevictable memory that can't be swapped out for a variety of reasons", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_Mlocked_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "MLocked - Size of pages locked to memory using the mlock() system call", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Unevictable and MLocked", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "Total Swap": "#614D93", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 82 + }, + "hiddenSeries": false, + "id": 132, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_NFS_Unstable_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "NFS Unstable - Memory in NFS pages sent to the server, but not yet commited to the storage", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory NFS", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Memory Meminfo", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 60 + }, + "id": 267, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 23 + }, + "hiddenSeries": false, + "id": 176, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*out/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_vmstat_pgpgin{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Pagesin - Page in operations", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_vmstat_pgpgout{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Pagesout - Page out operations", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Pages In / Out", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "pages out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 23 + }, + "hiddenSeries": false, + "id": 22, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*out/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_vmstat_pswpin{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Pswpin - Pages swapped in", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_vmstat_pswpout{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Pswpout - Pages swapped out", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Pages Swap In / Out", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "pages out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 33 + }, + "hiddenSeries": false, + "id": 175, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Pgfault - Page major and minor fault operations", + "fill": 0, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_vmstat_pgfault{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Pgfault - Page major and minor fault operations", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_vmstat_pgmajfault{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Pgmajfault - Major page fault operations", + "refId": "B", + "step": 4 + }, + { + "expr": "irate(node_vmstat_pgfault{instance=~\"$node:$port\",job=~\"$job\"}[5m]) - irate(node_vmstat_pgmajfault{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Pgminfault - Minor page fault operations", + "refId": "C", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Page Faults", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "faults", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "Total Swap": "#614D93", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 33 + }, + "hiddenSeries": false, + "id": 307, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_vmstat_oom_kill{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "oom killer invocations ", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "OOM Killer", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Memory Vmstat", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 61 + }, + "id": 293, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 24 + }, + "hiddenSeries": false, + "id": 260, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Variation*./", + "color": "#890F02" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_timex_estimated_error_seconds{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Estimated error in seconds", + "refId": "A", + "step": 240 + }, + { + "expr": "node_timex_offset_seconds{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Time offset in between local system and reference clock", + "refId": "B", + "step": 240 + }, + { + "expr": "node_timex_maxerror_seconds{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Maximum error in seconds", + "refId": "C", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Time Syncronized Drift", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "seconds", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 24 + }, + "hiddenSeries": false, + "id": 291, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_timex_loop_time_constant{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Phase-locked loop time adjust", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Time PLL Adjust", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 34 + }, + "hiddenSeries": false, + "id": 168, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Variation*./", + "color": "#890F02" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_timex_sync_status{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Is clock synchronized to a reliable server (1 = yes, 0 = no)", + "refId": "A", + "step": 240 + }, + { + "expr": "node_timex_frequency_adjustment_ratio{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Local clock frequency adjustment", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Time Syncronized Status", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 34 + }, + "hiddenSeries": false, + "id": 294, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_timex_tick_seconds{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Seconds between clock ticks", + "refId": "A", + "step": 240 + }, + { + "expr": "node_timex_tai_offset_seconds{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "International Atomic Time (TAI) offset", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Time Misc", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "seconds", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "title": "System Timesync", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 62 + }, + "id": 312, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 7 + }, + "hiddenSeries": false, + "id": 62, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_procs_blocked{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Processes blocked waiting for I/O to complete", + "refId": "A", + "step": 240 + }, + { + "expr": "node_procs_running{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Processes in runnable state", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Processes Status", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 7 + }, + "hiddenSeries": false, + "id": 315, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_processes_state{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ state }}", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Processes State", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 17 + }, + "hiddenSeries": false, + "id": 148, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_forks_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Processes forks second", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Processes Forks", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "forks / sec", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 17 + }, + "hiddenSeries": false, + "id": 149, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Max.*/", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(process_virtual_memory_bytes{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Processes virtual memory size in bytes", + "refId": "A", + "step": 240 + }, + { + "expr": "process_resident_memory_max_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Maximum amount of virtual memory available in bytes", + "refId": "B", + "step": 240 + }, + { + "expr": "irate(process_virtual_memory_bytes{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Processes virtual memory size in bytes", + "refId": "C", + "step": 240 + }, + { + "expr": "irate(process_virtual_memory_max_bytes{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Maximum amount of virtual memory available in bytes", + "refId": "D", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Processes Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 27 + }, + "hiddenSeries": false, + "id": 313, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "PIDs limit", + "color": "#F2495C", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_processes_pids{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Number of PIDs", + "refId": "A", + "step": 240 + }, + { + "expr": "node_processes_max_processes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "PIDs limit", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "PIDs Number and Limit", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 27 + }, + "hiddenSeries": false, + "id": 305, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*waiting.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_schedstat_running_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "CPU {{ cpu }} - seconds spent running a process", + "refId": "A", + "step": 240 + }, + { + "expr": "irate(node_schedstat_waiting_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "CPU {{ cpu }} - seconds spent by processing waiting for this CPU", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Process schdeule stats Running / Waiting", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "seconds", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 37 + }, + "hiddenSeries": false, + "id": 314, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Threads limit", + "color": "#F2495C", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_processes_threads{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Allocated threads", + "refId": "A", + "step": 240 + }, + { + "expr": "node_processes_max_threads{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Threads limit", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Threads Number and Limit", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "title": "System Processes", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 63 + }, + "id": 269, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 64 + }, + "hiddenSeries": false, + "id": 8, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_context_switches_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Context switches", + "refId": "A", + "step": 240 + }, + { + "expr": "irate(node_intr_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Interrupts", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Context Switches / Interrupts", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 64 + }, + "hiddenSeries": false, + "id": 7, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_load1{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 4, + "legendFormat": "Load 1m", + "refId": "A", + "step": 480 + }, + { + "expr": "node_load5{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 4, + "legendFormat": "Load 5m", + "refId": "B", + "step": 480 + }, + { + "expr": "node_load15{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 4, + "legendFormat": "Load 15m", + "refId": "C", + "step": 480 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "System Load", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 74 + }, + "hiddenSeries": false, + "id": 259, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Critical*./", + "color": "#E24D42", + "fill": 0 + }, + { + "alias": "/.*Max*./", + "color": "#EF843C", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_interrupts_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ type }} - {{ info }}", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Interrupts Detail", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 74 + }, + "hiddenSeries": false, + "id": 306, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_schedstat_timeslices_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "CPU {{ cpu }}", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Schedule timeslices executed by each cpu", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 84 + }, + "hiddenSeries": false, + "id": 151, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_entropy_available_bits{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Entropy available to random number generators", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Entropy", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 84 + }, + "hiddenSeries": false, + "id": 308, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(process_cpu_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Time spent", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU time spent in user and system contexts", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "seconds", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 94 + }, + "hiddenSeries": false, + "id": 64, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Max*./", + "color": "#890F02", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "process_max_fds{instance=~\"$node:$port\",job=~\"$job\"}", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Maximum open file descriptors", + "refId": "A", + "step": 240 + }, + { + "expr": "process_open_fds{instance=~\"$node:$port\",job=~\"$job\"}", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Open file descriptors", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "File Descriptors", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "System Misc", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 64 + }, + "id": 304, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 17 + }, + "hiddenSeries": false, + "id": 158, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Critical*./", + "color": "#E24D42", + "fill": 0 + }, + { + "alias": "/.*Max*./", + "color": "#EF843C", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_hwmon_temp_celsius{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ chip }} {{ sensor }} temp", + "refId": "A", + "step": 240 + }, + { + "expr": "node_hwmon_temp_crit_alarm_celsius{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": true, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ chip }} {{ sensor }} Critical Alarm", + "refId": "B", + "step": 240 + }, + { + "expr": "node_hwmon_temp_crit_celsius{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ chip }} {{ sensor }} Critical", + "refId": "C", + "step": 240 + }, + { + "expr": "node_hwmon_temp_crit_hyst_celsius{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": true, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ chip }} {{ sensor }} Critical Historical", + "refId": "D", + "step": 240 + }, + { + "expr": "node_hwmon_temp_max_celsius{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": true, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ chip }} {{ sensor }} Max", + "refId": "E", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Hardware temperature monitor", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "celsius", + "label": "temperature", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 17 + }, + "hiddenSeries": false, + "id": 300, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Max*./", + "color": "#EF843C", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_cooling_device_cur_state{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Current {{ name }} in {{ type }}", + "refId": "A", + "step": 240 + }, + { + "expr": "node_cooling_device_max_state{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max {{ name }} in {{ type }}", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Throttle cooling device", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 27 + }, + "hiddenSeries": false, + "id": 302, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_power_supply_online{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ power_supply }} online", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Power supply", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "title": "Hardware Misc", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 65 + }, + "id": 296, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 10 + }, + "hiddenSeries": false, + "id": 297, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_systemd_socket_accepted_connections_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ name }} Connections", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Systemd Sockets", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 10 + }, + "hiddenSeries": false, + "id": 298, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Failed", + "color": "#F2495C" + }, + { + "alias": "Inactive", + "color": "#FF9830" + }, + { + "alias": "Active", + "color": "#73BF69" + }, + { + "alias": "Deactivating", + "color": "#FFCB7D" + }, + { + "alias": "Activating", + "color": "#C8F2C2" + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_systemd_units{instance=~\"$node:$port\",job=~\"$job\",state=\"activating\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Activating", + "refId": "A", + "step": 240 + }, + { + "expr": "node_systemd_units{instance=~\"$node:$port\",job=~\"$job\",state=\"active\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Active", + "refId": "B", + "step": 240 + }, + { + "expr": "node_systemd_units{instance=~\"$node:$port\",job=~\"$job\",state=\"deactivating\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Deactivating", + "refId": "C", + "step": 240 + }, + { + "expr": "node_systemd_units{instance=~\"$node:$port\",job=~\"$job\",state=\"failed\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Failed", + "refId": "D", + "step": 240 + }, + { + "expr": "node_systemd_units{instance=~\"$node:$port\",job=~\"$job\",state=\"inactive\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Inactive", + "refId": "E", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Systemd Units State", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "title": "Systemd", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 66 + }, + "id": 270, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 29 + }, + "hiddenSeries": false, + "id": 9, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [ + { + "alias": "/.*Read.*/", + "transform": "negative-Y" + }, + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_reads_completed_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "intervalFactor": 4, + "legendFormat": "{{device}} - Reads completed", + "refId": "A", + "step": 8 + }, + { + "expr": "irate(node_disk_writes_completed_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "intervalFactor": 2, + "legendFormat": "{{device}} - Writes completed", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk IOps Completed", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "iops", + "label": "IO read (-) / write (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 29 + }, + "hiddenSeries": false, + "id": 33, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Read.*/", + "transform": "negative-Y" + }, + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_read_bytes_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 4, + "legendFormat": "{{device}} - Read bytes", + "refId": "A", + "step": 8 + }, + { + "expr": "irate(node_disk_written_bytes_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Written bytes", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk R/W Data", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": "bytes read (-) / write (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 3, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 39 + }, + "hiddenSeries": false, + "id": 37, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Read.*/", + "transform": "negative-Y" + }, + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_read_time_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "hide": false, + "intervalFactor": 4, + "legendFormat": "{{device}} - Read time", + "refId": "A", + "step": 8 + }, + { + "expr": "irate(node_disk_write_time_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{device}} - Write time", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk R/W Time", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "time. read (-) / write (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 39 + }, + "hiddenSeries": false, + "id": 35, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_io_time_weighted_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "intervalFactor": 4, + "legendFormat": "{{device}} - IO time weighted", + "refId": "A", + "step": 8 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk IOs Weighted", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "time", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 49 + }, + "hiddenSeries": false, + "id": 133, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Read.*/", + "transform": "negative-Y" + }, + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_reads_merged_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "intervalFactor": 2, + "legendFormat": "{{device}} - Read merged", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_disk_writes_merged_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "intervalFactor": 2, + "legendFormat": "{{device}} - Write merged", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk R/W Merged", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "iops", + "label": "I/Os", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 3, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 49 + }, + "hiddenSeries": false, + "id": 36, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_io_time_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "intervalFactor": 4, + "legendFormat": "{{device}} - IO time", + "refId": "A", + "step": 8 + }, + { + "expr": "irate(node_disk_discard_time_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "interval": "", + "intervalFactor": 4, + "legendFormat": "{{device}} - discard time", + "refId": "B", + "step": 8 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Time Spent Doing I/Os", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "time", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 59 + }, + "hiddenSeries": false, + "id": 34, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_disk_io_now{instance=~\"$node:$port\",job=~\"$job\"}", + "interval": "", + "intervalFactor": 4, + "legendFormat": "{{device}} - IO now", + "refId": "A", + "step": 8 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk IOs Current in Progress", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "iops", + "label": "I/Os", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 59 + }, + "hiddenSeries": false, + "id": 301, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null as zero", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_discards_completed_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "interval": "", + "intervalFactor": 4, + "legendFormat": "{{device}} - Discards completed", + "refId": "A", + "step": 8 + }, + { + "expr": "irate(node_disk_discards_merged_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{device}} - Discards merged", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk IOps Discards completed / merged", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "iops", + "label": "IOs", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Storage Disk", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 67 + }, + "id": 271, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 3, + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 29 + }, + "hiddenSeries": false, + "id": 43, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_filesystem_avail_bytes{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{mountpoint}} - Available", + "metric": "", + "refId": "A", + "step": 4 + }, + { + "expr": "node_filesystem_free_bytes{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'}", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{mountpoint}} - Free", + "refId": "B", + "step": 2 + }, + { + "expr": "node_filesystem_size_bytes{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'}", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{mountpoint}} - Size", + "refId": "C", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Filesystem space available", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 29 + }, + "hiddenSeries": false, + "id": 41, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_filesystem_files_free{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{mountpoint}} - Free file nodes", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "File Nodes Free", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "file nodes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 39 + }, + "hiddenSeries": false, + "id": 28, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_filefd_maximum{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 4, + "legendFormat": "Max open files", + "refId": "A", + "step": 8 + }, + { + "expr": "node_filefd_allocated{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Open files", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "File Descriptor", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "files", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 39 + }, + "hiddenSeries": false, + "id": 219, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_filesystem_files{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{mountpoint}} - File nodes total", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "File Nodes Size", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "file Nodes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "/ ReadOnly": "#890F02" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": null, + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 49 + }, + "hiddenSeries": false, + "id": 44, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_filesystem_readonly{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{mountpoint}} - ReadOnly", + "refId": "A", + "step": 4 + }, + { + "expr": "node_filesystem_device_error{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{mountpoint}} - Device error", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Filesystem in ReadOnly / Error", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": "1", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Storage Filesystem", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 68 + }, + "id": 272, + "panels": [ + { + "aliasColors": { + "receive_packets_eth0": "#7EB26D", + "receive_packets_lo": "#E24D42", + "transmit_packets_eth0": "#7EB26D", + "transmit_packets_lo": "#E24D42" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 109 + }, + "hiddenSeries": false, + "id": 60, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_receive_packets_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_network_transmit_packets_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{device}} - Transmit", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic by Packets", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "pps", + "label": "packets out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 109 + }, + "hiddenSeries": false, + "id": 142, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_receive_errs_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive errors", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_network_transmit_errs_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Rransmit errors", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Errors", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "pps", + "label": "packets out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 119 + }, + "hiddenSeries": false, + "id": 143, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_receive_drop_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive drop", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_network_transmit_drop_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Transmit drop", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Drop", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "pps", + "label": "packets out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 119 + }, + "hiddenSeries": false, + "id": 141, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_receive_compressed_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive compressed", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_network_transmit_compressed_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Transmit compressed", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Compressed", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "pps", + "label": "packets out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 129 + }, + "hiddenSeries": false, + "id": 146, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_receive_multicast_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive multicast", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Multicast", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "pps", + "label": "packets out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 129 + }, + "hiddenSeries": false, + "id": 144, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_receive_fifo_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive fifo", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_network_transmit_fifo_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Transmit fifo", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Fifo", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "pps", + "label": "packets out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 139 + }, + "hiddenSeries": false, + "id": 145, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_receive_frame_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive frame", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Frame", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "pps", + "label": "packets out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 139 + }, + "hiddenSeries": false, + "id": 231, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_transmit_carrier_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Statistic transmit_carrier", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Carrier", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 149 + }, + "hiddenSeries": false, + "id": 232, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_transmit_colls_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Transmit colls", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Colls", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 149 + }, + "hiddenSeries": false, + "id": 61, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "NF conntrack limit", + "color": "#890F02", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_nf_conntrack_entries{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "NF conntrack entries", + "refId": "A", + "step": 4 + }, + { + "expr": "node_nf_conntrack_entries_limit{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "NF conntrack limit", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "NF Contrack", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "entries", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 159 + }, + "hiddenSeries": false, + "id": 230, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_arp_entries{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ device }} - ARP entries", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "ARP Entries", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "Entries", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 159 + }, + "hiddenSeries": false, + "id": 288, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_network_mtu_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ device }} - Bytes", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "MTU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 169 + }, + "hiddenSeries": false, + "id": 280, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_network_speed_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ device }} - Speed", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Speed", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 169 + }, + "hiddenSeries": false, + "id": 289, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_network_transmit_queue_length{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ device }} - Interface transmit queue length", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Queue Length", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "none", + "label": "packets", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 179 + }, + "hiddenSeries": false, + "id": 290, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Dropped.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_softnet_processed_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "CPU {{cpu}} - Processed", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_softnet_dropped_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "CPU {{cpu}} - Dropped", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Softnet Packets", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "packetes drop (-) / process (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 179 + }, + "hiddenSeries": false, + "id": 310, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_softnet_times_squeezed_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "CPU {{cpu}} - Squeezed", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Softnet Out of Quota", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 189 + }, + "hiddenSeries": false, + "id": 309, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_network_up{operstate=\"up\",instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{interface}} - Operational state UP", + "refId": "A", + "step": 4 + }, + { + "expr": "node_network_carrier{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "instant": false, + "legendFormat": "{{device}} - Physical link state", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Operational Status", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Network Traffic", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 69 + }, + "id": 273, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 13 + }, + "hiddenSeries": false, + "id": 63, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_sockstat_TCP_alloc{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "TCP_alloc - Allocated sockets", + "refId": "A", + "step": 240 + }, + { + "expr": "node_sockstat_TCP_inuse{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "TCP_inuse - Tcp sockets currently in use", + "refId": "B", + "step": 240 + }, + { + "expr": "node_sockstat_TCP_mem{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": true, + "interval": "", + "intervalFactor": 2, + "legendFormat": "TCP_mem - Used memory for tcp", + "refId": "C", + "step": 240 + }, + { + "expr": "node_sockstat_TCP_orphan{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "TCP_orphan - Orphan sockets", + "refId": "D", + "step": 240 + }, + { + "expr": "node_sockstat_TCP_tw{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "TCP_tw - Sockets wating close", + "refId": "E", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Sockstat TCP", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 13 + }, + "hiddenSeries": false, + "id": 124, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_sockstat_UDPLITE_inuse{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "UDPLITE_inuse - Udplite sockets currently in use", + "refId": "A", + "step": 240 + }, + { + "expr": "node_sockstat_UDP_inuse{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "UDP_inuse - Udp sockets currently in use", + "refId": "B", + "step": 240 + }, + { + "expr": "node_sockstat_UDP_mem{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "UDP_mem - Used memory for udp", + "refId": "C", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Sockstat UDP", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 23 + }, + "hiddenSeries": false, + "id": 126, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_sockstat_sockets_used{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Sockets_used - Sockets currently in use", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Sockstat Used", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "sockets", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 23 + }, + "hiddenSeries": false, + "id": 220, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_sockstat_TCP_mem_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "mem_bytes - TCP sockets in that state", + "refId": "A", + "step": 240 + }, + { + "expr": "node_sockstat_UDP_mem_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "mem_bytes - UDP sockets in that state", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Sockstat Memory Size", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 33 + }, + "hiddenSeries": false, + "id": 125, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_sockstat_FRAG_inuse{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "FRAG_inuse - Frag sockets currently in use", + "refId": "A", + "step": 240 + }, + { + "expr": "node_sockstat_FRAG_memory{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "FRAG_memory - Used memory for frag", + "refId": "B", + "step": 240 + }, + { + "expr": "node_sockstat_RAW_inuse{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "RAW_inuse - Raw sockets currently in use", + "refId": "C", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Sockstat FRAG / RAW", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Network Sockstat", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 70 + }, + "id": 274, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 32 + }, + "height": "", + "hiddenSeries": false, + "id": 221, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Out.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_IpExt_InOctets{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "InOctets - Received octets", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_netstat_IpExt_OutOctets{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "OutOctets - Sent octets", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Netstat IP In / Out Octets", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "octects out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 32 + }, + "height": "", + "hiddenSeries": false, + "id": 81, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_Ip_Forwarding{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Forwarding - IP forwarding", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Netstat IP Forwarding", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "datagrams", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": null, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 42 + }, + "height": "", + "hiddenSeries": false, + "id": 115, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Out.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_Icmp_InMsgs{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "InMsgs - Messages which the entity received. Note that this counter includes all those counted by icmpInErrors", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_netstat_Icmp_OutMsgs{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "OutMsgs - Messages which this entity attempted to send. Note that this counter includes all those counted by icmpOutErrors", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "ICMP In / Out", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "messages out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": null, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 42 + }, + "height": "", + "hiddenSeries": false, + "id": 50, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Out.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_Icmp_InErrors{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "InErrors - Messages which the entity received but determined as having ICMP-specific errors (bad ICMP checksums, bad length, etc.)", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "ICMP Errors", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "messages out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": null, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 52 + }, + "height": "", + "hiddenSeries": false, + "id": 55, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Out.*/", + "transform": "negative-Y" + }, + { + "alias": "/.*Snd.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_Udp_InDatagrams{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "InDatagrams - Datagrams received", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_netstat_Udp_OutDatagrams{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "OutDatagrams - Datagrams sent", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "UDP In / Out", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "datagrams out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 52 + }, + "height": "", + "hiddenSeries": false, + "id": 109, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_Udp_InErrors{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "InErrors - UDP Datagrams that could not be delivered to an application", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_netstat_Udp_NoPorts{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "NoPorts - UDP Datagrams received on a port with no listener", + "refId": "B", + "step": 4 + }, + { + "expr": "irate(node_netstat_UdpLite_InErrors{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "interval": "", + "legendFormat": "InErrors Lite - UDPLite Datagrams that could not be delivered to an application", + "refId": "C" + }, + { + "expr": "irate(node_netstat_Udp_RcvbufErrors{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "RcvbufErrors - UDP buffer errors received", + "refId": "D", + "step": 4 + }, + { + "expr": "irate(node_netstat_Udp_SndbufErrors{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "SndbufErrors - UDP buffer errors send", + "refId": "E", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "UDP Errors", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "datagrams", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": null, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 62 + }, + "height": "", + "hiddenSeries": false, + "id": 299, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Out.*/", + "transform": "negative-Y" + }, + { + "alias": "/.*Snd.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_Tcp_InSegs{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "instant": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "InSegs - Segments received, including those received in error. This count includes segments received on currently established connections", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_netstat_Tcp_OutSegs{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "OutSegs - Segments sent, including those on current connections but excluding those containing only retransmitted octets", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "TCP In / Out", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "datagrams out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 62 + }, + "height": "", + "hiddenSeries": false, + "id": 104, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_TcpExt_ListenOverflows{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "ListenOverflows - Times the listen queue of a socket overflowed", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_netstat_TcpExt_ListenDrops{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "ListenDrops - SYNs to LISTEN sockets ignored", + "refId": "B", + "step": 4 + }, + { + "expr": "irate(node_netstat_TcpExt_TCPSynRetrans{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "TCPSynRetrans - SYN-SYN/ACK retransmits to break down retransmissions in SYN, fast/timeout retransmits", + "refId": "C", + "step": 4 + }, + { + "expr": "irate(node_netstat_Tcp_RetransSegs{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "interval": "", + "legendFormat": "RetransSegs - Segments retransmitted - that is, the number of TCP segments transmitted containing one or more previously transmitted octets", + "refId": "D" + }, + { + "expr": "irate(node_netstat_Tcp_InErrs{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "interval": "", + "legendFormat": "InErrs - Segments received in error (e.g., bad TCP checksums)", + "refId": "E" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "TCP Errors", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 72 + }, + "height": "", + "hiddenSeries": false, + "id": 85, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*MaxConn *./", + "color": "#890F02", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_netstat_Tcp_CurrEstab{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "CurrEstab - TCP connections for which the current state is either ESTABLISHED or CLOSE- WAIT", + "refId": "A", + "step": 4 + }, + { + "expr": "node_netstat_Tcp_MaxConn{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "MaxConn - Limit on the total number of TCP connections the entity can support (Dinamic is \"-1\")", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "TCP Connections", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "connections", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 72 + }, + "height": "", + "hiddenSeries": false, + "id": 91, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Sent.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_TcpExt_SyncookiesFailed{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "SyncookiesFailed - Invalid SYN cookies received", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_netstat_TcpExt_SyncookiesRecv{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "SyncookiesRecv - SYN cookies received", + "refId": "B", + "step": 4 + }, + { + "expr": "irate(node_netstat_TcpExt_SyncookiesSent{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "SyncookiesSent - SYN cookies sent", + "refId": "C", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "TCP SynCookie", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 82 + }, + "height": "", + "hiddenSeries": false, + "id": 82, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_Tcp_ActiveOpens{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "ActiveOpens - TCP connections that have made a direct transition to the SYN-SENT state from the CLOSED state", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_netstat_Tcp_PassiveOpens{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "PassiveOpens - TCP connections that have made a direct transition to the SYN-RCVD state from the LISTEN state", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "TCP Direct Transition", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "connections", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Network Netstat", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 71 + }, + "id": 279, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 154 + }, + "hiddenSeries": false, + "id": 40, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_scrape_collector_duration_seconds{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{collector}} - Scrape duration", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Node Exporter Scrape Time", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "seconds", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 154 + }, + "hiddenSeries": false, + "id": 157, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*error.*/", + "color": "#F2495C", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_scrape_collector_success{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{collector}} - Scrape success", + "refId": "A", + "step": 4 + }, + { + "expr": "node_textfile_scrape_error{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{collector}} - Scrape textfile error (1 = true)", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Node Exporter Scrape", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Node Exporter", + "type": "row" + } + ], + "refresh": false, + "schemaVersion": 25, + "style": "dark", + "tags": [ + "linux" + ], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "Prometheus", + "value": "Prometheus" + }, + "hide": 0, + "includeAll": false, + "label": "datasource", + "multi": false, + "name": "DS_PROMETHEUS", + "options": [], + "query": "prometheus", + "queryValue": "", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "type": "datasource" + }, + { + "allValue": null, + "current": { + "selected": false, + "text": "kafka", + "value": "kafka" + }, + "datasource": "${DS_PROMETHEUS}", + "definition": "", + "hide": 0, + "includeAll": false, + "label": "Job", + "multi": false, + "name": "job", + "options": [], + "query": "label_values(node_uname_info, job)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": { + "selected": false, + "text": "ip-10-0-0-15.us-west-2.compute.internal", + "value": "ip-10-0-0-15.us-west-2.compute.internal" + }, + "datasource": "${DS_PROMETHEUS}", + "definition": "", + "hide": 0, + "includeAll": false, + "label": "Host:", + "multi": false, + "name": "name", + "options": [], + "query": "label_values(node_uname_info{job=~\"$job\"}, nodename)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": { + "selected": false, + "text": "10.0.0.15", + "value": "10.0.0.15" + }, + "datasource": "${DS_PROMETHEUS}", + "definition": "", + "hide": 2, + "includeAll": false, + "label": "Host:", + "multi": false, + "name": "node", + "options": [], + "query": "label_values(node_uname_info{nodename=\"$name\"}, instance)", + "refresh": 1, + "regex": "/([^:]+):.*/", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": { + "selected": false, + "text": "9100", + "value": "9100" + }, + "datasource": "${DS_PROMETHEUS}", + "definition": "", + "hide": 0, + "includeAll": false, + "label": "Port", + "multi": false, + "name": "port", + "options": [], + "query": "label_values(node_uname_info{instance=~\"$node:(.*)\"}, instance)", + "refresh": 1, + "regex": "/[^:]+:(.*)/", + "skipUrlSync": false, + "sort": 3, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-3h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "browser", + "title": "Node Exporter Full", + "uid": "rYdddlPWk", + "version": 4 +} \ No newline at end of file diff --git a/driver-kafka/deploy/monitoring/dashboards/zookeeper.json b/driver-kafka/deploy/monitoring/dashboards/zookeeper.json new file mode 100644 index 00000000..d8a4ab43 --- /dev/null +++ b/driver-kafka/deploy/monitoring/dashboards/zookeeper.json @@ -0,0 +1,953 @@ +{ + "annotations": { + "list": [] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "hideControls": false, + "id": 3, + "links": [], + "rows": [ + { + "collapse": false, + "height": 236, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 1, + "description": "All write operations (create / setData / ...)", + "fill": 0, + "id": 1, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(zookeeper_server_requests_latency_ms_count{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\", type=\"write\"}[30s])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Write Requests", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "writes / s", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "description": "All read operations (getData / getChildren / ...)", + "fill": 0, + "id": 2, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(zookeeper_server_requests_latency_ms_count{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\", type=\"read\"}[30s])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Read Requests", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "reads / s", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "Dashboard Row", + "titleSize": "h6" + }, + { + "collapse": false, + "height": 250, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "description": "All write operations (create / setData / ...)", + "fill": 0, + "id": 4, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null as zero", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "zookeeper_server_requests_latency_ms{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\", type=\"write\", quantile=\"0.99\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Write Latency - 99pct", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 1, + "description": "All write operations (create / setData / ...)", + "fill": 0, + "id": 5, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "zookeeper_server_requests_latency_ms{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\", type=\"read\", quantile=\"0.99\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Read Latency - 99pct", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "Dashboard Row", + "titleSize": "h6" + }, + { + "collapse": false, + "height": 250, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 1, + "description": "", + "fill": 1, + "id": 6, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 12, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum(irate(zookeeper_server_requests{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\"}[30s])) by (type)", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{type}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Request Types", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "Dashboard Row", + "titleSize": "h6" + }, + { + "collapse": false, + "height": 250, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "description": "", + "fill": 0, + "id": 7, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "zookeeper_server_znode_count{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{cluster}} - {{kubernetes_pod_name}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Z-Nodes count", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "description": "Size of the data stored in a ZK server", + "fill": 0, + "id": 8, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "zookeeper_server_data_size_bytes{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{cluster}} - {{kubernetes_pod_name}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Data set size", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "Dashboard Row", + "titleSize": "h6" + }, + { + "collapse": false, + "height": 250, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "description": "Number of opened connections", + "fill": 1, + "id": 9, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 4, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "zookeeper_server_connections{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{cluster}} - {{kubernetes_pod_name}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Connections", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "description": "", + "fill": 1, + "id": 10, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 4, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "zookeeper_server_watches_count{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{cluster}} - {{kubernetes_pod_name}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Number of watches", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "description": "", + "fill": 0, + "id": 11, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 4, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "zookeeper_server_ephemerals_count{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{cluster}} - {{kubernetes_pod_name}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Number of ephemerals", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "Dashboard Row", + "titleSize": "h6" + } + ], + "schemaVersion": 14, + "style": "dark", + "tags": [ + "zookeeper" + ], + "templating": { + "list": [ + { + "allValue": null, + "current": { + "text": "us-central", + "value": "us-central" + }, + "datasource": "Prometheus", + "hide": 0, + "includeAll": false, + "label": "Cluster", + "multi": false, + "name": "cluster", + "options": [], + "query": "{cluster=~\".+\"}", + "refresh": 1, + "regex": "/.*[^_]cluster=\\\"([^\\\"]+)\\\".*/", + "sort": 1, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Prometheus", + "hide": 0, + "includeAll": true, + "label": "ZK Server", + "multi": false, + "name": "server", + "options": [], + "query": "zookeeper_server_requests_latency_ms_count{cluster=~\"$cluster\", kubernetes_pod_name=~\".+\"}", + "refresh": 2, + "regex": "/.*[^_]kubernetes_pod_name=\\\"([^\\\"]+)\\\".*/", + "sort": 1, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "browser", + "title": "ZooKeeper", + "version": 11 +} \ No newline at end of file diff --git a/driver-kafka/deploy/monitoring/grafana.ini b/driver-kafka/deploy/monitoring/grafana.ini new file mode 100644 index 00000000..e28ca88b --- /dev/null +++ b/driver-kafka/deploy/monitoring/grafana.ini @@ -0,0 +1,39 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +[users] +# disable user signup / registration +allow_sign_up = false + +# Default UI theme ("dark" or "light") +default_theme = dark + +[auth.anonymous] +# enable anonymous access +enabled = true + +# specify organization name that should be used for unauthenticated users +org_name = Main Org. + +# specify role for unauthenticated users +org_role = Viewer + +[dashboards] +enabled = true +path = /var/lib/grafana/dashboards \ No newline at end of file diff --git a/driver-kafka/deploy/monitoring/jmx_exporter/client.yml b/driver-kafka/deploy/monitoring/jmx_exporter/client.yml new file mode 100644 index 00000000..792f8af8 --- /dev/null +++ b/driver-kafka/deploy/monitoring/jmx_exporter/client.yml @@ -0,0 +1,22 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +lowercaseOutputLabelNames: false +lowercaseOutputName: true +## Export everything diff --git a/driver-kafka/deploy/monitoring/jmx_exporter/jmx_prometheus_javaagent-0.13.0.jar b/driver-kafka/deploy/monitoring/jmx_exporter/jmx_prometheus_javaagent-0.13.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..c55a92e5434fc28d56bb3b9d3757de4acf812617 GIT binary patch literal 374371 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%0D}{!jx%7==Q?V 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
xa{Bc*B-TB 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

9khd); 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 VI%?a8sA-lxt3+6CqUBEwETmCdqR^K%F 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 + name: kafka_server_$1_$2 + type: GAUGE + labels: + clientId: "$3" + topic: "$4" + partition: "$5" + - pattern: kafka.server<>Value + name: kafka_server_$1_$2 + type: GAUGE + labels: + clientId: "$3" + broker: "$4:$5" + - pattern: kafka.coordinator.(\w+)<>Value + name: kafka_coordinator_$1_$2_$3 + type: GAUGE + + # Generic per-second counters with 0-2 key/value pairs + - pattern: kafka.(\w+)<>Count + name: kafka_$1_$2_$3_total + type: COUNTER + labels: + "$4": "$5" + "$6": "$7" + - pattern: kafka.(\w+)<>Count + name: kafka_$1_$2_$3_total + type: COUNTER + labels: + "$4": "$5" + - pattern: kafka.(\w+)<>Count + name: kafka_$1_$2_$3_total + type: COUNTER + + - pattern: kafka.server<>([a-z-]+) + name: kafka_server_quota_$3 + type: GAUGE + labels: + resource: "$1" + clientId: "$2" + + - pattern: kafka.server<>([a-z-]+) + name: kafka_server_quota_$4 + type: GAUGE + labels: + resource: "$1" + user: "$2" + clientId: "$3" + + # Generic gauges with 0-2 key/value pairs + - pattern: kafka.(\w+)<>Value + name: kafka_$1_$2_$3 + type: GAUGE + labels: + "$4": "$5" + "$6": "$7" + - pattern: kafka.(\w+)<>Value + name: kafka_$1_$2_$3 + type: GAUGE + labels: + "$4": "$5" + - pattern: kafka.(\w+)<>Value + name: kafka_$1_$2_$3 + type: GAUGE + + # Emulate Prometheus 'Summary' metrics for the exported 'Histogram's. + # + # Note that these are missing the '_sum' metric! + - pattern: kafka.(\w+)<>Count + name: kafka_$1_$2_$3_count + type: COUNTER + labels: + "$4": "$5" + "$6": "$7" + - pattern: kafka.(\w+)<>(\d+)thPercentile + name: kafka_$1_$2_$3 + type: GAUGE + labels: + "$4": "$5" + "$6": "$7" + quantile: "0.$8" + - pattern: kafka.(\w+)<>Count + name: kafka_$1_$2_$3_count + type: COUNTER + labels: + "$4": "$5" + - pattern: kafka.(\w+)<>(\d+)thPercentile + name: kafka_$1_$2_$3 + type: GAUGE + labels: + "$4": "$5" + quantile: "0.$6" + - pattern: kafka.(\w+)<>Count + name: kafka_$1_$2_$3_count + type: COUNTER + - pattern: kafka.(\w+)<>(\d+)thPercentile + name: kafka_$1_$2_$3 + type: GAUGE + labels: + quantile: "0.$4" diff --git a/driver-kafka/deploy/monitoring/jmx_exporter/zookeeper.yml b/driver-kafka/deploy/monitoring/jmx_exporter/zookeeper.yml new file mode 100644 index 00000000..22b82b72 --- /dev/null +++ b/driver-kafka/deploy/monitoring/jmx_exporter/zookeeper.yml @@ -0,0 +1,123 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +lowercaseOutputLabelNames: false +lowercaseOutputName: true +## Export everything +# rules: +# # Special cases and very specific rules +# - pattern: kafka.server<>Value +# name: kafka_server_$1_$2 +# type: GAUGE +# labels: +# clientId: "$3" +# topic: "$4" +# partition: "$5" +# - pattern: kafka.server<>Value +# name: kafka_server_$1_$2 +# type: GAUGE +# labels: +# clientId: "$3" +# broker: "$4:$5" +# - pattern: kafka.coordinator.(\w+)<>Value +# name: kafka_coordinator_$1_$2_$3 +# type: GAUGE + +# # Generic per-second counters with 0-2 key/value pairs +# - pattern: kafka.(\w+)<>Count +# name: kafka_$1_$2_$3_total +# type: COUNTER +# labels: +# "$4": "$5" +# "$6": "$7" +# - pattern: kafka.(\w+)<>Count +# name: kafka_$1_$2_$3_total +# type: COUNTER +# labels: +# "$4": "$5" +# - pattern: kafka.(\w+)<>Count +# name: kafka_$1_$2_$3_total +# type: COUNTER + +# - pattern: kafka.server<>([a-z-]+) +# name: kafka_server_quota_$3 +# type: GAUGE +# labels: +# resource: "$1" +# clientId: "$2" + +# - pattern: kafka.server<>([a-z-]+) +# name: kafka_server_quota_$4 +# type: GAUGE +# labels: +# resource: "$1" +# user: "$2" +# clientId: "$3" + +# # Generic gauges with 0-2 key/value pairs +# - pattern: kafka.(\w+)<>Value +# name: kafka_$1_$2_$3 +# type: GAUGE +# labels: +# "$4": "$5" +# "$6": "$7" +# - pattern: kafka.(\w+)<>Value +# name: kafka_$1_$2_$3 +# type: GAUGE +# labels: +# "$4": "$5" +# - pattern: kafka.(\w+)<>Value +# name: kafka_$1_$2_$3 +# type: GAUGE + +# # Emulate Prometheus 'Summary' metrics for the exported 'Histogram's. +# # +# # Note that these are missing the '_sum' metric! +# - pattern: kafka.(\w+)<>Count +# name: kafka_$1_$2_$3_count +# type: COUNTER +# labels: +# "$4": "$5" +# "$6": "$7" +# - pattern: kafka.(\w+)<>(\d+)thPercentile +# name: kafka_$1_$2_$3 +# type: GAUGE +# labels: +# "$4": "$5" +# "$6": "$7" +# quantile: "0.$8" +# - pattern: kafka.(\w+)<>Count +# name: kafka_$1_$2_$3_count +# type: COUNTER +# labels: +# "$4": "$5" +# - pattern: kafka.(\w+)<>(\d+)thPercentile +# name: kafka_$1_$2_$3 +# type: GAUGE +# labels: +# "$4": "$5" +# quantile: "0.$6" +# - pattern: kafka.(\w+)<>Count +# name: kafka_$1_$2_$3_count +# type: COUNTER +# - pattern: kafka.(\w+)<>(\d+)thPercentile +# name: kafka_$1_$2_$3 +# type: GAUGE +# labels: +# quantile: "0.$4" diff --git a/bin/benchmark b/driver-kafka/deploy/monitoring/start.sh similarity index 63% rename from bin/benchmark rename to driver-kafka/deploy/monitoring/start.sh index 2a5029f2..8cc5a499 100755 --- a/bin/benchmark +++ b/driver-kafka/deploy/monitoring/start.sh @@ -18,13 +18,22 @@ # under the License. # -if [ -d "./lib" ]; then - CLASSPATH=$CLASSPATH:lib/* -else - CLASSPATH=benchmark-framework/target/classes:`cat benchmark-framework/target/classpath.txt` -fi -JVM_MEM="-Xms4G -Xmx4G -XX:+UseG1GC" -JVM_GC_LOG=" -XX:+PrintGCDetails -XX:+PrintGCApplicationStoppedTime -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=64m -Xloggc:/dev/shm/benchmark-client-gc_%p.log" +echo 'Starting Grafana...' -java -server -cp $CLASSPATH $JVM_MEM io.openmessaging.benchmark.Benchmark $* +/run.sh "$@" & + +AddDataSource() { + curl 'http://admin:admin@localhost:3000/api/datasources' \ + -X POST \ + -H 'Content-Type: application/json;charset=UTF-8' \ + --data-binary \ + "{\"name\":\"Prometheus\",\"type\":\"prometheus\",\"url\":\"$PROMETHEUS_URL\",\"access\":\"proxy\",\"isDefault\":true}" +} + +until AddDataSource; do + echo 'Configuring Grafana...' + sleep 1 +done + echo 'Done!' +wait \ No newline at end of file diff --git a/driver-kafka/deploy/provision-kafka-aws.tf b/driver-kafka/deploy/provision-kafka-aws.tf index aebf657a..630d72a3 100644 --- a/driver-kafka/deploy/provision-kafka-aws.tf +++ b/driver-kafka/deploy/provision-kafka-aws.tf @@ -1,6 +1,7 @@ provider "aws" { region = "${var.region}" version = "~> 2.7" + profile = var.profile } provider "random" { @@ -30,6 +31,8 @@ variable "region" {} variable "ami" {} +variable "profile" {} + variable "instance_types" { type = "map" } @@ -42,7 +45,7 @@ variable "num_instances" { resource "aws_vpc" "benchmark_vpc" { cidr_block = "10.0.0.0/16" - tags { + tags = { Name = "Kafka-Benchmark-VPC-${random_id.hash.hex}" } } @@ -64,6 +67,12 @@ resource "aws_subnet" "benchmark_subnet" { vpc_id = "${aws_vpc.benchmark_vpc.id}" cidr_block = "10.0.0.0/24" map_public_ip_on_launch = true + availability_zone = "us-west-2b" +} + +# Get public IP of this machine +data "http" "myip" { + url = "http://ipv4.icanhazip.com" } resource "aws_security_group" "benchmark_security_group" { @@ -71,21 +80,43 @@ resource "aws_security_group" "benchmark_security_group" { vpc_id = "${aws_vpc.benchmark_vpc.id}" # SSH access from anywhere + # ingress { + # from_port = 22 + # to_port = 22 + # protocol = "tcp" + # cidr_blocks = ["0.0.0.0/0"] + # } + + # All ports open within the VPC ingress { - from_port = 22 - to_port = 22 + from_port = 0 + to_port = 65535 protocol = "tcp" - cidr_blocks = ["0.0.0.0/0"] + cidr_blocks = ["10.0.0.0/16"] } - # All ports open within the VPC + # All ports open to this machine ingress { from_port = 0 to_port = 65535 protocol = "tcp" - cidr_blocks = ["10.0.0.0/16"] + cidr_blocks = ["${chomp(data.http.myip.body)}/32"] } + # Prometheus/Dashboard access + # ingress { + # from_port = 9090 + # to_port = 9090 + # protocol = "tcp" + # cidr_blocks = ["0.0.0.0/0"] + # } + # ingress { + # from_port = 3000 + # to_port = 3000 + # protocol = "tcp" + # cidr_blocks = ["0.0.0.0/0"] + # } + # outbound internet access egress { from_port = 0 @@ -94,7 +125,7 @@ resource "aws_security_group" "benchmark_security_group" { cidr_blocks = ["0.0.0.0/0"] } - tags { + tags = { Name = "Benchmark-Security-Group-${random_id.hash.hex}" } } @@ -111,8 +142,9 @@ resource "aws_instance" "zookeeper" { subnet_id = "${aws_subnet.benchmark_subnet.id}" vpc_security_group_ids = ["${aws_security_group.benchmark_security_group.id}"] count = "${var.num_instances["zookeeper"]}" + monitoring = true - tags { + tags = { Name = "zk-${count.index}" } } @@ -124,8 +156,9 @@ resource "aws_instance" "kafka" { subnet_id = "${aws_subnet.benchmark_subnet.id}" vpc_security_group_ids = ["${aws_security_group.benchmark_security_group.id}"] count = "${var.num_instances["kafka"]}" + monitoring = true - tags { + tags = { Name = "kafka-${count.index}" } } @@ -137,12 +170,47 @@ resource "aws_instance" "client" { subnet_id = "${aws_subnet.benchmark_subnet.id}" vpc_security_group_ids = ["${aws_security_group.benchmark_security_group.id}"] count = "${var.num_instances["client"]}" + monitoring = true - tags { + tags = { Name = "kafka-client-${count.index}" } } -output "client_ssh_host" { - value = "${aws_instance.client.0.public_ip}" +resource "aws_instance" "prometheus" { + ami = "${var.ami}" + instance_type = "${var.instance_types["prometheus"]}" + key_name = "${aws_key_pair.auth.id}" + subnet_id = "${aws_subnet.benchmark_subnet.id}" + vpc_security_group_ids = ["${aws_security_group.benchmark_security_group.id}"] + count = "${var.num_instances["prometheus"]}" + + tags = { + Name = "prometheus-${count.index}" + } +} + +output "clients" { + value = { + for instance in aws_instance.client : + instance.public_ip => instance.private_ip + } +} + +output "brokers" { + value = { + for instance in aws_instance.kafka : + instance.public_ip => instance.private_ip + } +} + +output "zookeeper" { + value = { + for instance in aws_instance.zookeeper : + instance.public_ip => instance.private_ip + } +} + +output "prometheus_host" { + value = "${aws_instance.prometheus.0.public_ip}" } diff --git a/driver-kafka/deploy/templates/chrony.conf b/driver-kafka/deploy/templates/chrony.conf index 00fb403e..0e68c66a 100644 --- a/driver-kafka/deploy/templates/chrony.conf +++ b/driver-kafka/deploy/templates/chrony.conf @@ -1,3 +1,22 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + # Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). server 169.254.169.123 prefer iburst diff --git a/driver-kafka/deploy/templates/kafka-dashboard.service b/driver-kafka/deploy/templates/kafka-dashboard.service new file mode 100644 index 00000000..8b00e459 --- /dev/null +++ b/driver-kafka/deploy/templates/kafka-dashboard.service @@ -0,0 +1,16 @@ +[Unit] +Description=Kafka Dashboard +After=docker.service +Requires=docker.service +After=prometheus.service +Requires=prometheus.service + +[Service] +ExecStartPre=/usr/bin/docker pull aloknnikhil/omb-kafka-dashboard:latest +ExecStart=/usr/bin/docker run --restart=always --name=systemd_kafka_dashboard -p3000:3000 -e PROMETHEUS_URL=http://{{ hostvars[groups['prometheus'][0]].private_ip }}:9090/ aloknnikhil/omb-kafka-dashboard:latest +ExecStop=/usr/bin/docker stop systemd_kafka_dashboard +ExecStopPost=/usr/bin/docker rm -f systemd_kafka_dashboard +ExecReload=/usr/bin/docker restart systemd_kafka_dashboard + +[Install] +WantedBy=multi-user.target diff --git a/driver-kafka/deploy/templates/kafka.service b/driver-kafka/deploy/templates/kafka.service index c5afac56..3ed876d3 100644 --- a/driver-kafka/deploy/templates/kafka.service +++ b/driver-kafka/deploy/templates/kafka.service @@ -4,6 +4,9 @@ After=network.target [Service] ExecStart=/opt/kafka/bin/kafka-server-start.sh config/server.properties +Environment=JMX_PORT=9999 +Environment="KAFKA_OPTS=-javaagent:/opt/kafka/jmx_prometheus_javaagent-0.13.0.jar=8080:/opt/kafka/metrics.yml" +Environment="KAFKA_JMX_OPTS=-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=prod-kafka-001 -Djava.net.preferIPv4Stack=true" Environment='KAFKA_HEAP_OPTS=-Xms6g -Xmx6g -XX:MetaspaceSize=96m' Environment='KAFKA_JVM_PERFORMANCE_OPTS=-server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSize=16M -XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80 -Djava.awt.headless=true" WorkingDirectory=/opt/kafka diff --git a/driver-kafka/deploy/templates/prometheus.service b/driver-kafka/deploy/templates/prometheus.service new file mode 100644 index 00000000..8f1effac --- /dev/null +++ b/driver-kafka/deploy/templates/prometheus.service @@ -0,0 +1,13 @@ +[Unit] +Description=Prometheus server +After=network.target + +[Service] +WorkingDirectory=/opt/prometheus +ExecStart=/opt/prometheus/prometheus \ + --web.enable-admin-api \ + --storage.tsdb.path=/opt/prometheus/data \ + --config.file=/opt/prometheus/prometheus.yml + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/driver-kafka/deploy/templates/prometheus.yml b/driver-kafka/deploy/templates/prometheus.yml new file mode 100644 index 00000000..13462e8c --- /dev/null +++ b/driver-kafka/deploy/templates/prometheus.yml @@ -0,0 +1,83 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# my global config +global: + scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. + evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. + # scrape_timeout is set to the global default (10s). + +# Alertmanager configuration +alerting: + alertmanagers: + - static_configs: + - targets: + # - alertmanager:9093 + +# Load rules once and periodically evaluate them according to the global 'evaluation_interval'. +rule_files: + # - "first_rules.yml" + # - "second_rules.yml" + +# A scrape configuration containing exactly one endpoint to scrape: +# Here it's Prometheus itself. +scrape_configs: + # The job name is added as a label `job=` to any timeseries scraped from this config. + - job_name: 'kafka' + + # metrics_path defaults to '/metrics' + # scheme defaults to 'http'. + + static_configs: + - targets: +{% for worker in groups['kafka'] %} + - {{ hostvars[worker].private_ip }}:8080 +{% endfor %} + labels: + group: 'broker' + - targets: +{% for worker in groups['client'] %} + - {{ hostvars[worker].private_ip }}:8081 +{% endfor %} + labels: + group: 'client' + - targets: +{% for worker in groups['kafka'] %} + - {{ hostvars[worker].private_ip }}:9100 +{% endfor %} + labels: + group: 'broker-os' + - targets: +{% for worker in groups['zookeeper'] %} + - {{ hostvars[worker].private_ip }}:7070 +{% endfor %} + labels: + group: 'zookeeper-jmx' + - targets: +{% for worker in groups['zookeeper'] %} + - {{ hostvars[worker].private_ip }}:8000 +{% endfor %} + labels: + group: 'zookeeper' + - targets: +{% for worker in groups['client'] %} + - {{ hostvars[worker].private_ip }}:9090 +{% endfor %} + labels: + group: 'client - jmx' diff --git a/driver-kafka/deploy/templates/server.properties b/driver-kafka/deploy/templates/server.properties index 1f2e4686..7df1891a 100644 --- a/driver-kafka/deploy/templates/server.properties +++ b/driver-kafka/deploy/templates/server.properties @@ -25,3 +25,11 @@ advertised.listeners=PLAINTEXT://{{ privateIp }}:9092 log.dirs=/mnt/data-1,/mnt/data-2 zookeeper.connect={{ zookeeperServers }} + +num.replica.fetchers=8 + +message.max.bytes=10485760 + +replica.fetch.max.bytes=10485760 + +num.network.threads=8 diff --git a/driver-kafka/deploy/templates/zookeeper.service b/driver-kafka/deploy/templates/zookeeper.service index 3a2706ef..13dbf8e9 100644 --- a/driver-kafka/deploy/templates/zookeeper.service +++ b/driver-kafka/deploy/templates/zookeeper.service @@ -3,6 +3,7 @@ Description=ZooKeeper After=network.target [Service] +Environment="EXTRA_ARGS=-javaagent:/opt/kafka/jmx_prometheus_javaagent-0.13.0.jar=7070:/opt/kafka/zookeeper.yml" ExecStart=/opt/kafka/bin/zookeeper-server-start.sh config/zookeeper.properties WorkingDirectory=/opt/kafka RestartSec=1s diff --git a/driver-kafka/deploy/terraform.tfvars b/driver-kafka/deploy/terraform.tfvars index da2c6451..855111a6 100644 --- a/driver-kafka/deploy/terraform.tfvars +++ b/driver-kafka/deploy/terraform.tfvars @@ -1,15 +1,18 @@ public_key_path = "~/.ssh/kafka_aws.pub" region = "us-west-2" ami = "ami-9fa343e7" // RHEL-7.4 +profile = "default" instance_types = { - "kafka" = "i3.4xlarge" - "zookeeper" = "t2.small" - "client" = "c5.2xlarge" + "kafka" = "i3en.2xlarge" + "zookeeper" = "t2.small" + "client" = "c5n.2xlarge" + "prometheus" = "c5.2xlarge" } num_instances = { - "client" = 4 - "kafka" = 3 - "zookeeper" = 3 + "client" = 4 + "kafka" = 3 + "zookeeper" = 3 + "prometheus" = 1 } diff --git a/driver-kafka/kafka.yaml b/driver-kafka/kafka-0.yaml similarity index 98% rename from driver-kafka/kafka.yaml rename to driver-kafka/kafka-0.yaml index 3ac29203..7b9082f2 100644 --- a/driver-kafka/kafka.yaml +++ b/driver-kafka/kafka-0.yaml @@ -17,12 +17,12 @@ # under the License. # - name: Kafka driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver # Kafka client-specific configuration replicationFactor: 3 +reset: true topicConfig: | min.insync.replicas=2 @@ -31,7 +31,7 @@ commonConfig: | bootstrap.servers=localhost:9092 producerConfig: | - acks=all + acks=0 linger.ms=1 batch.size=131072 diff --git a/driver-kafka/kafka-1.yaml b/driver-kafka/kafka-1.yaml new file mode 100644 index 00000000..5abf8242 --- /dev/null +++ b/driver-kafka/kafka-1.yaml @@ -0,0 +1,40 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: Kafka +driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver + +# Kafka client-specific configuration +replicationFactor: 3 +reset: true + +topicConfig: | + min.insync.replicas=2 + +commonConfig: | + bootstrap.servers=localhost:9092 + +producerConfig: | + acks=1 + linger.ms=1 + batch.size=131072 + +consumerConfig: | + auto.offset.reset=earliest + enable.auto.commit=false diff --git a/driver-kafka/kafka-all.yaml b/driver-kafka/kafka-all.yaml new file mode 100644 index 00000000..c78f99c0 --- /dev/null +++ b/driver-kafka/kafka-all.yaml @@ -0,0 +1,41 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: Kafka +driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver + +# Kafka client-specific configuration +replicationFactor: 3 +reset: true + +topicConfig: | + min.insync.replicas=2 + +commonConfig: | + bootstrap.servers=localhost:9092 + +producerConfig: | + acks=all + linger.ms=100 + batch.size=1048576 + +consumerConfig: | + auto.offset.reset=earliest + enable.auto.commit=false + max.partition.fetch.bytes=10485760 diff --git a/driver-kafka/kafka-exactly-once.yaml b/driver-kafka/kafka-exactly-once.yaml index d1fd54ac..a7407661 100644 --- a/driver-kafka/kafka-exactly-once.yaml +++ b/driver-kafka/kafka-exactly-once.yaml @@ -17,12 +17,12 @@ # under the License. # - name: Kafka-exactly-once driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver # Kafka client-specific configuration replicationFactor: 3 +reset: true topicConfig: | min.insync.replicas=2 diff --git a/driver-kafka/kafka-group-all.yaml b/driver-kafka/kafka-group-all.yaml new file mode 100644 index 00000000..b8944d36 --- /dev/null +++ b/driver-kafka/kafka-group-all.yaml @@ -0,0 +1,42 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: Kafka +driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver + +# Kafka client-specific configuration +replicationFactor: 3 +reset: true + +topicConfig: | + min.insync.replicas=2 + +commonConfig: | + bootstrap.servers=localhost:9092 + request.timeout.ms=120000 +producerConfig: | + acks=all + linger.ms=10 + batch.size=1048576 + +consumerConfig: | + group.id=benchGroup + auto.offset.reset=earliest + enable.auto.commit=false + max.partition.fetch.bytes=1048576 diff --git a/driver-kafka/kafka-sync-0.yaml b/driver-kafka/kafka-sync-0.yaml new file mode 100644 index 00000000..a4e03180 --- /dev/null +++ b/driver-kafka/kafka-sync-0.yaml @@ -0,0 +1,44 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# Kafka driver profile that is configuring to sync all +# published messages to disk to achieve durability +name: Kafka +driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver + +# Kafka client-specific configuration +replicationFactor: 3 +reset: true + +topicConfig: | + min.insync.replicas=2 + flush.messages=1 + flush.ms=0 + +commonConfig: | + bootstrap.servers=localhost:9092 + +producerConfig: | + acks=0 + linger.ms=1 + batch.size=131072 + +consumerConfig: | + auto.offset.reset=earliest + enable.auto.commit=false diff --git a/driver-kafka/kafka-sync-1.yaml b/driver-kafka/kafka-sync-1.yaml new file mode 100644 index 00000000..3bf6d7d1 --- /dev/null +++ b/driver-kafka/kafka-sync-1.yaml @@ -0,0 +1,44 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# Kafka driver profile that is configuring to sync all +# published messages to disk to achieve durability +name: Kafka +driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver + +# Kafka client-specific configuration +replicationFactor: 3 +reset: true + +topicConfig: | + min.insync.replicas=2 + flush.messages=1 + flush.ms=0 + +commonConfig: | + bootstrap.servers=localhost:9092 + +producerConfig: | + acks=1 + linger.ms=1 + batch.size=131072 + +consumerConfig: | + auto.offset.reset=earliest + enable.auto.commit=false diff --git a/driver-kafka/kafka-sync.yaml b/driver-kafka/kafka-sync-all.yaml similarity index 99% rename from driver-kafka/kafka-sync.yaml rename to driver-kafka/kafka-sync-all.yaml index c53a4a51..a4fb4955 100644 --- a/driver-kafka/kafka-sync.yaml +++ b/driver-kafka/kafka-sync-all.yaml @@ -24,6 +24,7 @@ driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver # Kafka client-specific configuration replicationFactor: 3 +reset: true topicConfig: | min.insync.replicas=2 diff --git a/driver-kafka/kafka-sync-group-all-1ms.yaml b/driver-kafka/kafka-sync-group-all-1ms.yaml new file mode 100644 index 00000000..fcda5030 --- /dev/null +++ b/driver-kafka/kafka-sync-group-all-1ms.yaml @@ -0,0 +1,41 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: Kafka +driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver +# Kafka client-specific configuration +replicationFactor: 3 +reset: true + +topicConfig: | + min.insync.replicas=2 + flush.messages=1 + flush.ms=0 +commonConfig: | + bootstrap.servers=localhost:9092 + request.timeout.ms=120000 +producerConfig: | + acks=all + linger.ms=1 + batch.size=131072 +consumerConfig: | + group.id=benchGroup + auto.offset.reset=earliest + enable.auto.commit=false + max.partition.fetch.bytes=131072 diff --git a/driver-kafka/kafka-sync-group-all.yaml b/driver-kafka/kafka-sync-group-all.yaml new file mode 100644 index 00000000..dbd91136 --- /dev/null +++ b/driver-kafka/kafka-sync-group-all.yaml @@ -0,0 +1,42 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: Kafka +driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver +# Kafka client-specific configuration +replicationFactor: 3 +reset: true + +# Configuration (flush.messages; flush.ms) enabled only for tests that fsync every message +topicConfig: | + min.insync.replicas=2 + flush.messages=1 + flush.ms=0 +commonConfig: | + bootstrap.servers=localhost:9092 + request.timeout.ms=120000 +producerConfig: | + acks=all + linger.ms=10 + batch.size=1048576 +consumerConfig: | + group.id=benchGroup + auto.offset.reset=earliest + enable.auto.commit=false + max.partition.fetch.bytes=1048576 diff --git a/driver-kafka/pom.xml b/driver-kafka/pom.xml index 8127f9c6..9c044ae8 100644 --- a/driver-kafka/pom.xml +++ b/driver-kafka/pom.xml @@ -29,6 +29,21 @@ driver-kafka + + + + + + Kafka Public Repo + https://repository.apache.org/content/groups/public/ + + + ${project.groupId} @@ -39,8 +54,17 @@ org.apache.kafka kafka-clients - 1.0.0 + 2.6.0 + + + \ No newline at end of file diff --git a/driver-kafka/src/main/java/io/openmessaging/benchmark/driver/kafka/Config.java b/driver-kafka/src/main/java/io/openmessaging/benchmark/driver/kafka/Config.java index d67452f0..da59b963 100644 --- a/driver-kafka/src/main/java/io/openmessaging/benchmark/driver/kafka/Config.java +++ b/driver-kafka/src/main/java/io/openmessaging/benchmark/driver/kafka/Config.java @@ -21,6 +21,8 @@ public class Config { public short replicationFactor; + public boolean reset; + public String topicConfig; public String commonConfig; diff --git a/driver-kafka/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkConsumer.java b/driver-kafka/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkConsumer.java index 9ad7e1d6..c5a4f13f 100644 --- a/driver-kafka/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkConsumer.java +++ b/driver-kafka/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkConsumer.java @@ -18,11 +18,13 @@ */ package io.openmessaging.benchmark.driver.kafka; +import java.time.Duration; import java.util.HashMap; import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.apache.kafka.clients.consumer.ConsumerRecords; @@ -52,20 +54,19 @@ public KafkaBenchmarkConsumer(KafkaConsumer consumer, ConsumerCa this.consumerTask = this.executor.submit(() -> { while (!closing) { try { - ConsumerRecords records = consumer.poll(100); - + ConsumerRecords records = consumer.poll(Duration.ofMillis(100)); Map offsetMap = new HashMap<>(); for (ConsumerRecord record : records) { - callback.messageReceived(record.value(), record.timestamp()); - + callback.messageReceived(record.value(), TimeUnit.MILLISECONDS.toNanos(record.timestamp())); offsetMap.put(new TopicPartition(record.topic(), record.partition()), - new OffsetAndMetadata(record.offset())); + new OffsetAndMetadata(record.offset())); } - if (!offsetMap.isEmpty()) { - consumer.commitSync(offsetMap); + if (!records.isEmpty()) { + // Async commit all messages polled so far + consumer.commitAsync(offsetMap, null); } - }catch(Exception e){ + } catch (Exception e) { log.error("exception occur while consuming message", e); } } diff --git a/driver-kafka/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkDriver.java b/driver-kafka/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkDriver.java index 40854c66..8d708c31 100644 --- a/driver-kafka/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkDriver.java +++ b/driver-kafka/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkDriver.java @@ -21,18 +21,14 @@ import java.io.File; import java.io.IOException; import java.io.StringReader; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Properties; +import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import org.apache.bookkeeper.stats.StatsLogger; import org.apache.kafka.clients.admin.AdminClient; +import org.apache.kafka.clients.admin.DeleteTopicsResult; +import org.apache.kafka.clients.admin.ListTopicsResult; import org.apache.kafka.clients.admin.NewTopic; import org.apache.kafka.clients.consumer.ConsumerConfig; import org.apache.kafka.clients.consumer.KafkaConsumer; @@ -56,7 +52,7 @@ public class KafkaBenchmarkDriver implements BenchmarkDriver { private Config config; - private KafkaProducer producer; + private List producers = Collections.synchronizedList(new ArrayList<>()); private List consumers = Collections.synchronizedList(new ArrayList<>()); private Properties topicProperties; @@ -89,7 +85,19 @@ public void initialize(File configurationFile, StatsLogger statsLogger) throws I admin = AdminClient.create(commonProperties); - producer = new KafkaProducer<>(producerProperties); + if (config.reset) { + // List existing topics + ListTopicsResult result = admin.listTopics(); + try { + Set topics = result.names().get(); + // Delete all existing topics + DeleteTopicsResult deletes = admin.deleteTopics(topics); + deletes.all().get(); + } catch (InterruptedException | ExecutionException e) { + e.printStackTrace(); + throw new IOException(e); + } + } } @Override @@ -111,33 +119,58 @@ public CompletableFuture createTopic(String topic, int partitions) { }); } + @Override + public CompletableFuture notifyTopicCreation(String topic, int partitions) { + // No-op + return CompletableFuture.completedFuture(null); + } + @Override public CompletableFuture createProducer(String topic) { - return CompletableFuture.completedFuture(new KafkaBenchmarkProducer(producer, topic)); + KafkaProducer kafkaProducer = new KafkaProducer<>(producerProperties); + BenchmarkProducer benchmarkProducer = new KafkaBenchmarkProducer(kafkaProducer, topic); + try { + // Add to producer list to close later + producers.add(benchmarkProducer); + return CompletableFuture.completedFuture(benchmarkProducer); + } catch (Throwable t) { + kafkaProducer.close(); + CompletableFuture future = new CompletableFuture<>(); + future.completeExceptionally(t); + return future; + } } @Override public CompletableFuture createConsumer(String topic, String subscriptionName, - ConsumerCallback consumerCallback) { + Optional partition, ConsumerCallback consumerCallback) { Properties properties = new Properties(); consumerProperties.forEach((key, value) -> properties.put(key, value)); properties.put(ConsumerConfig.GROUP_ID_CONFIG, subscriptionName); - KafkaConsumer consumer = new KafkaConsumer<>(properties); + KafkaConsumer kafkaConsumer = new KafkaConsumer<>(properties); try { - consumer.subscribe(Arrays.asList(topic)); - return CompletableFuture.completedFuture(new KafkaBenchmarkConsumer(consumer, consumerCallback)); + // Subscribe + kafkaConsumer.subscribe(Arrays.asList(topic)); + + // Start polling + BenchmarkConsumer benchmarkConsumer = new KafkaBenchmarkConsumer(kafkaConsumer, consumerCallback); + + // Add to consumer list to close later + consumers.add(benchmarkConsumer); + return CompletableFuture.completedFuture(benchmarkConsumer); } catch (Throwable t) { - consumer.close(); + kafkaConsumer.close(); CompletableFuture future = new CompletableFuture<>(); future.completeExceptionally(t); return future; } - } @Override public void close() throws Exception { - producer.close(); + for (BenchmarkProducer producer : producers) { + producer.close(); + } for (BenchmarkConsumer consumer : consumers) { consumer.close(); diff --git a/driver-nats-streaming/src/main/java/io/openmessaging/benchmark/driver/natsStreaming/NatsStreamingBenchmarkDriver.java b/driver-nats-streaming/src/main/java/io/openmessaging/benchmark/driver/natsStreaming/NatsStreamingBenchmarkDriver.java index 0eeab65b..413aad30 100644 --- a/driver-nats-streaming/src/main/java/io/openmessaging/benchmark/driver/natsStreaming/NatsStreamingBenchmarkDriver.java +++ b/driver-nats-streaming/src/main/java/io/openmessaging/benchmark/driver/natsStreaming/NatsStreamingBenchmarkDriver.java @@ -36,12 +36,14 @@ import io.openmessaging.benchmark.driver.ConsumerCallback; import java.io.File; import java.io.IOException; +import java.util.Optional; import java.util.Random; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.TimeUnit; + import org.apache.bookkeeper.stats.StatsLogger; import org.slf4j.LoggerFactory; - public class NatsStreamingBenchmarkDriver implements BenchmarkDriver { private final String defaultClusterId = "test-cluster"; private String clusterId; @@ -49,7 +51,9 @@ public class NatsStreamingBenchmarkDriver implements BenchmarkDriver { private StreamingConnection natsStreamingPublisher; private SubscriptionOptions.Builder subBuilder = new SubscriptionOptions.Builder(); private Options.Builder optsBuilder = new Options.Builder(); - @Override public void initialize(File configurationFile, StatsLogger statsLogger) throws IOException { + + @Override + public void initialize(File configurationFile, StatsLogger statsLogger) throws IOException { config = mapper.readValue(configurationFile, NatsStreamingClientConfig.class); log.info("read config file," + config.toString()); if (config.clusterId != null) { @@ -66,11 +70,13 @@ public class NatsStreamingBenchmarkDriver implements BenchmarkDriver { subBuilder.maxInFlight(config.maxInFlight); } - @Override public String getTopicNamePrefix() { + @Override + public String getTopicNamePrefix() { return "Nats-streaming-benchmark"; } - @Override public CompletableFuture createTopic(String topic, int partitions) { + @Override + public CompletableFuture createTopic(String topic, int partitions) { log.info("nats streaming create a topic" + topic); log.info("ignore partitions"); CompletableFuture future = new CompletableFuture<>(); @@ -78,7 +84,14 @@ public class NatsStreamingBenchmarkDriver implements BenchmarkDriver { return future; } - @Override public CompletableFuture createProducer(String topic) { + @Override + public CompletableFuture notifyTopicCreation(String topic, int partitions) { + // No-op + return CompletableFuture.completedFuture(null); + } + + @Override + public CompletableFuture createProducer(String topic) { if (natsStreamingPublisher == null) { String clientId = "ProducerInstance" + getRandomString(); try { @@ -92,16 +105,19 @@ public class NatsStreamingBenchmarkDriver implements BenchmarkDriver { return CompletableFuture.completedFuture(new NatsStreamingBenchmarkProducer(natsStreamingPublisher, topic)); } - @Override public CompletableFuture createConsumer(String topic, String subscriptionName, - ConsumerCallback consumerCallback) { + @Override + public CompletableFuture createConsumer(String topic, String subscriptionName, + Optional partition, ConsumerCallback consumerCallback) { Subscription sub; StreamingConnection streamingConnection; String clientId = "ConsumerInstance" + getRandomString(); try { streamingConnection = NatsStreaming.connect(clusterId, clientId, optsBuilder.build()); sub = streamingConnection.subscribe(topic, subscriptionName, new MessageHandler() { - @Override public void onMessage(Message message) { - consumerCallback.messageReceived(message.getData(), message.getTimestamp()); + @Override + public void onMessage(Message message) { + consumerCallback.messageReceived(message.getData(), + TimeUnit.MILLISECONDS.toNanos(message.getTimestamp())); } }, subBuilder.build()); } catch (Exception e) { @@ -111,7 +127,8 @@ public class NatsStreamingBenchmarkDriver implements BenchmarkDriver { return CompletableFuture.completedFuture(new NatsStreamingBenchmarkConsumer(streamingConnection, sub, topic)); } - @Override public void close() throws Exception { + @Override + public void close() throws Exception { if (natsStreamingPublisher != null) { natsStreamingPublisher.close(); natsStreamingPublisher = null; @@ -119,7 +136,7 @@ public class NatsStreamingBenchmarkDriver implements BenchmarkDriver { } private static final ObjectMapper mapper = new ObjectMapper(new YAMLFactory()) - .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); private static final org.slf4j.Logger log = LoggerFactory.getLogger(NatsStreamingBenchmarkDriver.class); @@ -137,7 +154,8 @@ public static void main(String[] args) throws Exception { SubscriptionOptions.Builder builder = new SubscriptionOptions.Builder(); StreamingConnection streamingConnection = NatsStreaming.connect("mycluster", "benchmark-sub", opts); Subscription sub = streamingConnection.subscribe("topicTest", "subscription", new MessageHandler() { - @Override public void onMessage(Message message) { + @Override + public void onMessage(Message message) { System.out.println(message.toString()); } }, builder.build()); @@ -145,7 +163,8 @@ public static void main(String[] args) throws Exception { final String[] guid = new String[1]; AckHandler acb = new AckHandler() { - @Override public void onAck(String s, Exception e) { + @Override + public void onAck(String s, Exception e) { if ((e != null) || !guid[0].equals(s)) { System.out.println("pub error"); } else { diff --git a/driver-nats/src/main/java/io/openmessaging/benchmark/driver/nats/NatsBenchmarkDriver.java b/driver-nats/src/main/java/io/openmessaging/benchmark/driver/nats/NatsBenchmarkDriver.java index 8e18c187..a32ecfda 100644 --- a/driver-nats/src/main/java/io/openmessaging/benchmark/driver/nats/NatsBenchmarkDriver.java +++ b/driver-nats/src/main/java/io/openmessaging/benchmark/driver/nats/NatsBenchmarkDriver.java @@ -32,25 +32,29 @@ import io.openmessaging.benchmark.driver.ConsumerCallback; import java.io.File; import java.io.IOException; +import java.util.Optional; import java.util.concurrent.CompletableFuture; import org.apache.bookkeeper.stats.StatsLogger; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import io.nats.client.Connection; - public class NatsBenchmarkDriver implements BenchmarkDriver { private NatsConfig config; - @Override public void initialize(File configurationFile, StatsLogger statsLogger) throws IOException { + + @Override + public void initialize(File configurationFile, StatsLogger statsLogger) throws IOException { config = mapper.readValue(configurationFile, NatsConfig.class); log.info("read config file," + config.toString()); } - @Override public String getTopicNamePrefix() { + @Override + public String getTopicNamePrefix() { return "Nats-benchmark"; } - @Override public CompletableFuture createTopic(String topic, int partitions) { + @Override + public CompletableFuture createTopic(String topic, int partitions) { log.info("nats create a topic" + topic); log.info("ignore partitions"); CompletableFuture future = new CompletableFuture<>(); @@ -58,7 +62,14 @@ public class NatsBenchmarkDriver implements BenchmarkDriver { return future; } - @Override public CompletableFuture createProducer(String topic) { + @Override + public CompletableFuture notifyTopicCreation(String topic, int partitions) { + // No-op + return CompletableFuture.completedFuture(null); + } + + @Override + public CompletableFuture createProducer(String topic) { Connection natsProducer; try { Options options = new Options.Builder().server(config.natsHostUrl).maxReconnects(5).build(); @@ -70,8 +81,9 @@ public class NatsBenchmarkDriver implements BenchmarkDriver { return CompletableFuture.completedFuture(new NatsBenchmarkProducer(natsProducer, topic)); } - @Override public CompletableFuture createConsumer(String topic, String subscriptionName, - ConsumerCallback consumerCallback) { + @Override + public CompletableFuture createConsumer(String topic, String subscriptionName, + Optional partition, ConsumerCallback consumerCallback) { Dispatcher natsConsumer; Connection cn; log.info("createConsumer"); @@ -91,12 +103,13 @@ public class NatsBenchmarkDriver implements BenchmarkDriver { return CompletableFuture.completedFuture(new NatsBenchmarkConsumer(cn)); } - @Override public void close() throws Exception { + @Override + public void close() throws Exception { } private static final Logger log = LoggerFactory.getLogger(NatsBenchmarkDriver.class); private static final ObjectMapper mapper = new ObjectMapper(new YAMLFactory()) - .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); } diff --git a/driver-nats/src/main/java/io/openmessaging/benchmark/driver/nats/NatsBenchmarkProducer.java b/driver-nats/src/main/java/io/openmessaging/benchmark/driver/nats/NatsBenchmarkProducer.java index 530b1788..757f5644 100644 --- a/driver-nats/src/main/java/io/openmessaging/benchmark/driver/nats/NatsBenchmarkProducer.java +++ b/driver-nats/src/main/java/io/openmessaging/benchmark/driver/nats/NatsBenchmarkProducer.java @@ -21,12 +21,15 @@ import io.nats.client.ConnectionListener; import io.openmessaging.benchmark.driver.BenchmarkProducer; import java.time.Duration; +import java.time.Instant; import java.util.Optional; import java.util.concurrent.CompletableFuture; import io.nats.client.Connection; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Semaphore; +import java.util.concurrent.TimeUnit; + import javax.sql.ConnectionEventListener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -42,15 +45,19 @@ public NatsBenchmarkProducer(final Connection natsProducer, final String topic) this.topic = topic; } - @Override public CompletableFuture sendAsync(Optional key, byte[] payload) { + @Override + public CompletableFuture sendAsync(Optional key, byte[] payload) { CompletableFuture future = new CompletableFuture<>(); try { semaphore.acquire(); executor.submit(() -> { try { - natsProducer.publish(topic, Long.toString(System.currentTimeMillis()), payload); -// natsProducer.flush(Duration.ofSeconds(1)); + Instant currentTime = Instant.now(); + long currentTimeNanos = TimeUnit.SECONDS.toNanos(currentTime.getEpochSecond()) + + currentTime.getNano(); + natsProducer.publish(topic, Long.toString(currentTimeNanos), payload); + // natsProducer.flush(Duration.ofSeconds(1)); } catch (Exception e) { log.error("send exception" + e); future.exceptionally(null); @@ -68,9 +75,11 @@ public NatsBenchmarkProducer(final Connection natsProducer, final String topic) return future; } - @Override public void close() throws Exception { + @Override + public void close() throws Exception { log.info("close a producer"); natsProducer.close(); } + private static final Logger log = LoggerFactory.getLogger(NatsBenchmarkProducer.class); } diff --git a/driver-nsq/src/main/java/io/openmessaging/benchmark/driver/nsq/NsqBenchmarkDriver.java b/driver-nsq/src/main/java/io/openmessaging/benchmark/driver/nsq/NsqBenchmarkDriver.java index 79d417cb..ea43dbcc 100644 --- a/driver-nsq/src/main/java/io/openmessaging/benchmark/driver/nsq/NsqBenchmarkDriver.java +++ b/driver-nsq/src/main/java/io/openmessaging/benchmark/driver/nsq/NsqBenchmarkDriver.java @@ -32,7 +32,10 @@ import io.openmessaging.benchmark.driver.ConsumerCallback; import java.io.File; import java.io.IOException; +import java.util.Optional; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.TimeUnit; + import org.apache.bookkeeper.stats.StatsLogger; import org.apache.logging.log4j.LogManager; import org.slf4j.Logger; @@ -41,16 +44,19 @@ public class NsqBenchmarkDriver implements BenchmarkDriver { private NsqConfig config; - @Override public void initialize(File configurationFile, StatsLogger statsLogger) throws IOException { + @Override + public void initialize(File configurationFile, StatsLogger statsLogger) throws IOException { config = mapper.readValue(configurationFile, NsqConfig.class); log.info("read config file," + config.toString()); } - @Override public String getTopicNamePrefix() { + @Override + public String getTopicNamePrefix() { return "Nsq-Benchmark"; } - @Override public CompletableFuture createTopic(String topic, int partitions) { + @Override + public CompletableFuture createTopic(String topic, int partitions) { log.info("create a topic" + topic); log.info("ignore partitions"); CompletableFuture future = new CompletableFuture<>(); @@ -58,7 +64,14 @@ public class NsqBenchmarkDriver implements BenchmarkDriver { return future; } - @Override public CompletableFuture createProducer(final String topic) { + @Override + public CompletableFuture notifyTopicCreation(String topic, int partitions) { + // No-op + return CompletableFuture.completedFuture(null); + } + + @Override + public CompletableFuture createProducer(final String topic) { NSQProducer nsqProducer = new NSQProducer(); nsqProducer.addAddress(config.nsqdHost, 4150); nsqProducer.start(); @@ -67,18 +80,21 @@ public class NsqBenchmarkDriver implements BenchmarkDriver { return CompletableFuture.completedFuture(new NsqBenchmarkProducer(nsqProducer, topic)); } - @Override public CompletableFuture createConsumer(String topic, String subscriptionName, - ConsumerCallback consumerCallback) { - //Channel can be treat as subscriptionName + @Override + public CompletableFuture createConsumer(String topic, String subscriptionName, + Optional partition, ConsumerCallback consumerCallback) { + // Channel can be treat as subscriptionName NSQLookup lookup = new DefaultNSQLookup(); lookup.addLookupAddress(config.lookupHost, 4161); NSQConsumer nsqConsumer = new NSQConsumer(lookup, topic, subscriptionName, (message) -> { - //now mark the message as finished. - consumerCallback.messageReceived(message.getMessage(), message.getTimestamp().getTime()); + // now mark the message as finished. + consumerCallback.messageReceived(message.getMessage(), + TimeUnit.MILLISECONDS.toNanos(message.getTimestamp().getTime())); message.finished(); - //or you could requeue it, which indicates a failure and puts it back on the queue. - //message.requeue(); + // or you could requeue it, which indicates a failure and puts it back on the + // queue. + // message.requeue(); }); nsqConsumer.start(); @@ -87,11 +103,13 @@ public class NsqBenchmarkDriver implements BenchmarkDriver { return CompletableFuture.completedFuture(new NsqBenchmarkConsumer(nsqConsumer)); } - @Override public void close() throws Exception { + @Override + public void close() throws Exception { } + private static final Logger log = LoggerFactory.getLogger(NsqBenchmarkDriver.class); private static final ObjectMapper mapper = new ObjectMapper(new YAMLFactory()) - .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - + .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + } diff --git a/driver-pulsar/deploy/bounce.sh b/driver-pulsar/deploy/bounce.sh new file mode 100755 index 00000000..fa0dd911 --- /dev/null +++ b/driver-pulsar/deploy/bounce.sh @@ -0,0 +1,37 @@ +#!/bin/bash +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +SERVERS=( $(terraform output server0) $(terraform output server1) $(terraform output server2) ) +for i in "${SERVERS[@]}" +do + ssh -i ~/.ssh/pulsar_aws ec2-user@$i 'sudo service bookkeeper.service restart' + sleep 1 + ssh -i ~/.ssh/pulsar_aws ec2-user@$i 'sudo service pulsar restart' +done + + +WORKERS=( $(terraform output client_ssh_host) $(terraform output client2) $(terraform output client2) $(terraform output client3) ) +for i in "${WORKERS[@]}" +do + ssh -i ~/.ssh/pulsar_aws ec2-user@$i 'sudo service benchmark-worker restart' +done + + + diff --git a/driver-pulsar/deploy/cpworkerjars.sh b/driver-pulsar/deploy/cpworkerjars.sh new file mode 100755 index 00000000..4d39a6f6 --- /dev/null +++ b/driver-pulsar/deploy/cpworkerjars.sh @@ -0,0 +1,30 @@ +#!/bin/bash +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +WORKERS=( $(terraform output client_ssh_host) $(terraform output client2) $(terraform output client2) $(terraform output client3) ) +for i in "${WORKERS[@]}" +do + scp -i ~/.ssh/pulsar_aws ../../*/target/*.jar ec2-user@$i:~/ + ssh -i ~/.ssh/pulsar_aws ec2-user@$i 'sudo cp /home/ec2-user/*.jar /opt/benchmark/lib/' + ssh -i ~/.ssh/pulsar_aws ec2-user@$i 'sudo service benchmark-worker restart' +done + + + diff --git a/driver-pulsar/deploy/deploy.yaml b/driver-pulsar/deploy/deploy.yaml index 7aea9cac..c5a5e722 100644 --- a/driver-pulsar/deploy/deploy.yaml +++ b/driver-pulsar/deploy/deploy.yaml @@ -51,7 +51,7 @@ yum: pkg={{ item }} state=latest with_items: - wget - - java + - java-11 - sysstat - vim - screen @@ -60,12 +60,12 @@ zookeeperServers: "{{ groups['zookeeper'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^(.*)$', '\\1:2181') | join(',') }}" serviceUrl: "pulsar://{{ hostvars[groups['pulsar'][0]].private_ip }}:6650/" httpUrl: "http://{{ hostvars[groups['pulsar'][0]].private_ip }}:8080/" - pulsarVersion: "2.4.0" + pulsarVersion: "2.6.0" - file: path=/opt/pulsar state=absent - file: path=/opt/pulsar state=directory - name: Download Pulsar binary package unarchive: - src: "https://www.apache.org/dyn/mirrors/mirrors.cgi?action=download&filename=pulsar/pulsar-{{ pulsarVersion }}/apache-pulsar-{{ pulsarVersion }}-bin.tar.gz" + src: "https://archive.apache.org/dist/pulsar/pulsar-{{ pulsarVersion }}/apache-pulsar-{{ pulsarVersion }}-bin.tar.gz" remote_src: yes dest: /opt/pulsar extra_opts: ["--strip-components=1"] diff --git a/driver-pulsar/deploy/deploy_tiered.yaml b/driver-pulsar/deploy/deploy_tiered.yaml new file mode 100644 index 00000000..031b51d4 --- /dev/null +++ b/driver-pulsar/deploy/deploy_tiered.yaml @@ -0,0 +1,372 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +- name: Format and mount disks for BookKeeper hosts + hosts: bookkeeper + connection: ssh + become: true + tasks: + - name: Format disks + filesystem: + fstype: xfs + dev: "{{ item }}" + with_items: + - "/dev/nvme1n1" + - "/dev/nvme2n1" + - name: Mount disks + mount: + path: "{{ item.path }}" + src: "{{ item.src }}" + fstype: xfs + opts: defaults,noatime,nodiscard + state: mounted + with_items: + - { path: "/mnt/journal", src: "/dev/nvme1n1" } + - { path: "/mnt/storage", src: "/dev/nvme2n1" } + +- name: Pulsar installation + hosts: all + connection: ssh + become: true + tasks: + - name: Set performance profile + command: tuned-adm profile latency-performance + - name: Install RPM packages + yum: pkg={{ item }} state=latest + with_items: + - wget + - java-11 + - sysstat + - vim + - chrony + - set_fact: + zookeeperServers: "{{ groups['zookeeper'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^(.*)$', '\\1:2181') | join(',') }}" + serviceUrl: "pulsar://{{ hostvars[groups['pulsar'][0]].private_ip }}:6650/" + httpUrl: "http://{{ hostvars[groups['pulsar'][0]].private_ip }}:8080/" + pulsarVersion: "2.6.0" + - file: path=/opt/pulsar state=absent + - file: path=/opt/pulsar state=directory + - name: Download Pulsar binary package + unarchive: + src: "https://archive.apache.org/dist/pulsar/pulsar-{{ pulsarVersion }}/apache-pulsar-{{ pulsarVersion }}-bin.tar.gz" + remote_src: yes + dest: /opt/pulsar + extra_opts: ["--strip-components=1"] + - set_fact: + private_ip: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" + max_heap_memory: "12g" + max_direct_memory: "12g" + - template: + src: "templates/pulsar_env.sh" + dest: "/opt/pulsar/conf/pulsar_env.sh" + - template: + src: "templates/bkenv.sh" + dest: "/opt/pulsar/conf/bkenv.sh" + - name: Change locale to en_US.utf-8 + shell: | + echo 'LANG=en_US.utf-8 + LC_ALL=en_US.utf-8' > /etc/environment + +- name: ZooKeeper setup + hosts: zookeeper + connection: ssh + become: true + tasks: + - set_fact: + zid: "{{ groups['zookeeper'].index(inventory_hostname) }}" + max_heap_memory: "512m" + max_direct_memory: "512m" + - file: + path: "/opt/pulsar/{{ item }}" + state: directory + with_items: + - data/zookeeper + - template: + src: "templates/pulsar_env.sh" + dest: "/opt/pulsar/conf/pulsar_env.sh" + - template: + src: "templates/bkenv.sh" + dest: "/opt/pulsar/conf/bkenv.sh" + - template: + src: "templates/zoo.cfg" + dest: "/opt/pulsar/conf/zookeeper.conf" + - template: + src: templates/myid + dest: "/opt/pulsar/data/zookeeper/myid" + - template: + src: "templates/zookeeper.service" + dest: "/etc/systemd/system/zookeeper.service" + - systemd: + state: restarted + daemon_reload: yes + name: "zookeeper" + - command: > + bin/pulsar initialize-cluster-metadata --cluster local + --zookeeper localhost:2181 + --configuration-store localhost:2181 + --web-service-url {{ httpUrl }} + --broker-service-url {{ serviceUrl }} + args: + chdir: /opt/pulsar + when: groups['zookeeper'][0] == inventory_hostname + +- name: BookKeeper setup + hosts: bookkeeper + connection: ssh + become: true + tasks: + - template: + src: "templates/bookkeeper.conf" + dest: "/opt/pulsar/conf/bookkeeper.conf" + - name: Install bookkeeper systemd service + template: + src: "templates/bookkeeper.service" + dest: "/etc/systemd/system/bookkeeper.service" + - systemd: + state: restarted + daemon_reload: yes + name: "bookkeeper" + +- name: Pulsar configuration and systemd setup + hosts: pulsar + connection: ssh + become: true + tasks: + - name: Set up broker + template: + src: "templates/broker.conf" + dest: "/opt/pulsar/conf/broker.conf" + - template: + src: "templates/pulsar.service" + dest: "/etc/systemd/system/pulsar.service" + - systemd: + state: restarted + daemon_reload: yes + name: "pulsar" + +- name: Chrony setup + hosts: client + connection: ssh + become: true + tasks: + - name: Set up chronyd + template: + src: "templates/chrony.conf" + dest: "/etc/chrony.conf" + - systemd: + state: restarted + daemon_reload: yes + name: "chronyd" + +- name: Get Maven version + hosts: localhost + become: false + tasks: + - shell: > + cat ../../pom.xml | xmllint --format - \ + | sed "s/xmlns=\".*\"//g" | xmllint --stream --pattern /project/version --debug - \ + | grep -A 2 "matches pattern" | grep text | sed "s/.* [0-9] //g" + register: maven_version + - set_fact: + benchmark_version: "{{ maven_version }}" + +- name: Pulsar benchmarking client setup + hosts: client + connection: ssh + become: true + tasks: + - name: Set up client config + template: + src: "templates/client.conf" + dest: "/opt/pulsar/conf/client.conf" + - file: path=/opt/benchmark state=absent + - name: Copy benchmark code + unarchive: + src: ../../package/target/openmessaging-benchmark-0.0.1-SNAPSHOT-bin.tar.gz + dest: /opt + - shell: mv /opt/openmessaging-benchmark-0.0.1-SNAPSHOT /opt/benchmark + + - template: + src: "templates/workers.yaml" + dest: "/opt/benchmark/workers.yaml" + - name: Get list of driver config files + raw: ls -1 /opt/benchmark/driver-pulsar/*.yaml + register: drivers_list + + - name: Configure service URL + lineinfile: + dest: "{{ item }}" + regexp: '^ serviceUrl\: ' + line: " serviceUrl: {{ serviceUrl }}" + with_items: "{{ drivers_list.stdout_lines }}" + - name: Configure http URL + lineinfile: + dest: "{{ item }}" + regexp: "^ httpUrl: " + line: " httpUrl: {{ httpUrl }}" + with_items: "{{ drivers_list.stdout_lines }}" + - name: Configure memory + lineinfile: + dest: /opt/benchmark/bin/benchmark-worker + regexp: "^JVM_MEM=" + line: 'JVM_MEM="-Xms6G -Xmx6G -XX:+UseG1GC -XX:MaxGCPauseMillis=10 -XX:+ParallelRefProcEnabled -XX:+UnlockExperimentalVMOptions -XX:+AggressiveOpts -XX:+DoEscapeAnalysis -XX:ParallelGCThreads=32 -XX:ConcGCThreads=32 -XX:G1NewSizePercent=50 -XX:+DisableExplicitGC -XX:-ResizePLAB -XX:+PerfDisableSharedMem -XX:+AlwaysPreTouch -XX:-UseBiasedLocking"' + - name: Configure memory + lineinfile: + dest: /opt/benchmark/bin/benchmark + regexp: "^JVM_MEM=" + line: 'JVM_MEM="-Xmx4G"' + - name: Install benchmark systemd service + template: + src: "templates/benchmark-worker.service" + dest: "/etc/systemd/system/benchmark-worker.service" + - systemd: + state: restarted + daemon_reload: yes + name: "benchmark-worker" + +- name: Prometheus installation + hosts: prometheus + connection: ssh + become: true + tasks: + - name: Add Extras Repo + shell: yum-config-manager --enable rhui-REGION-rhel-server-extras + - name: Install RPM packages + yum: pkg={{ item }} state=latest + with_items: + - docker + - set_fact: + prometheusVersion: "2.2.1" + - file: path=/opt/prometheus state=absent + - file: path=/opt/prometheus state=directory + - name: Download Prometheus Binary Package + unarchive: + src: "https://github.com/prometheus/prometheus/releases/download/v{{ prometheusVersion }}/prometheus-{{ prometheusVersion }}.linux-amd64.tar.gz" + remote_src: yes + dest: /opt/prometheus + extra_opts: ["--strip-components=1"] + - set_fact: + private_ip: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" + +- name: Prometheus setup + hosts: prometheus + connection: ssh + become: true + tasks: + - file: + path: "/opt/prometheus/{{ item }}" + state: directory + with_items: + - data + - template: + src: "templates/prometheus.service" + dest: "/etc/systemd/system/prometheus.service" + - template: + src: "templates/pulsar-dashboard.service" + dest: "/etc/systemd/system/pulsar-dashboard.service" + - template: + src: "templates/prometheus_tiered.yml" + dest: "/opt/prometheus/prometheus.yml" + - systemd: + state: restarted + daemon_reload: yes + name: "prometheus" + - systemd: + state: restarted + daemon_reload: yes + name: "pulsar-dashboard" + +- name: List host addresses + hosts: localhost + become: false + tasks: + - debug: + msg: "Zookeeper servers {{ item }}" + with_items: "{{ groups['zookeeper'] }}" + - debug: + msg: "Pulsar servers {{ item }}" + with_items: "{{ groups['pulsar'] }}" + - debug: + msg: "Bookkeeper servers {{ item }}" + with_items: "{{ groups['bookkeeper'] }}" + - debug: + msg: "Benchmark clients {{ item }}" + with_items: "{{ groups['client'] }}" + - debug: + msg: "Prometheus servers {{ item }}" + with_items: "{{ groups['prometheus'] }}" + +- name: Install Node exporter on Brokers/Bookies to collect system metrics + hosts: pulsar,bookkeeper + become: true + tasks: + - name: Add user node_exporter + user: + name: node_exporter + shell: /bin/false + system: true + create_home: no + + - name: Download and extract + unarchive: + src: https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz + dest: /tmp + remote_src: yes + + - name: Copy bin node_exporter to /usr/local/bin + copy: + src: /tmp/node_exporter-1.0.1.linux-amd64/node_exporter + remote_src: yes + dest: /usr/local/bin/ + owner: node_exporter + group: node_exporter + mode: u+x,g+x,o+x + + - name: Create service node_exporter.service + blockinfile: + path: /etc/systemd/system/node_exporter.service + block: | + [Unit] + Description=Prometheus Node Exporter + Wants=network-online.target + After=network-online.target + [Service] + User=node_exporter + Group=node_exporter + Type=simple + ExecStart=/usr/local/bin/node_exporter + [Install] + WantedBy=multi-user.target + create: true + + - name: systemctl daemon_reload + systemd: + daemon_reload: yes + + - name: Start and Enable node_exporter + service: + name: node_exporter + state: started + enabled: yes + + - name: Check whether port 9100 is available + wait_for: + port: 9100 + state: started + timeout: 5 diff --git a/driver-pulsar/deploy/deploy_with_stats.yaml b/driver-pulsar/deploy/deploy_with_stats.yaml index 2b1ac1d1..42faca6d 100644 --- a/driver-pulsar/deploy/deploy_with_stats.yaml +++ b/driver-pulsar/deploy/deploy_with_stats.yaml @@ -27,8 +27,8 @@ fstype: xfs dev: '{{ item }}' with_items: - - '/dev/nvme0n1' - '/dev/nvme1n1' + - '/dev/nvme2n1' - name: Mount disks mount: path: "{{ item.path }}" @@ -37,8 +37,8 @@ opts: defaults,noatime,nodiscard state: mounted with_items: - - { path: "/mnt/journal", src: "/dev/nvme0n1" } - - { path: "/mnt/storage", src: "/dev/nvme1n1" } + - { path: "/mnt/journal", src: "/dev/nvme1n1" } + - { path: "/mnt/storage", src: "/dev/nvme2n1" } - name: Pulsar installation hosts: all @@ -51,7 +51,7 @@ yum: pkg={{ item }} state=latest with_items: - wget - - java + - java-11 - sysstat - vim - chrony @@ -59,22 +59,25 @@ zookeeperServers: "{{ groups['zookeeper'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^(.*)$', '\\1:2181') | join(',') }}" serviceUrl: "pulsar://{{ hostvars[groups['pulsar'][0]].private_ip }}:6650/" httpUrl: "http://{{ hostvars[groups['pulsar'][0]].private_ip }}:8080/" - pulsarVersion: "2.4.0" + pulsarVersion: "2.6.0" - file: path=/opt/pulsar state=absent - file: path=/opt/pulsar state=directory - name: Download Pulsar binary package unarchive: - src: "http://archive.apache.org/dist/pulsar/pulsar-{{ pulsarVersion }}/apache-pulsar-{{ pulsarVersion }}-bin.tar.gz" + src: "https://archive.apache.org/dist/pulsar/pulsar-{{ pulsarVersion }}/apache-pulsar-{{ pulsarVersion }}-bin.tar.gz" remote_src: yes dest: /opt/pulsar extra_opts: ["--strip-components=1"] - set_fact: private_ip: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" - max_heap_memory: "24g" - max_direct_memory: "24g" + max_heap_memory: "12g" + max_direct_memory: "12g" - template: src: "templates/pulsar_env.sh" dest: "/opt/pulsar/conf/pulsar_env.sh" + - template: + src: "templates/bkenv.sh" + dest: "/opt/pulsar/conf/bkenv.sh" - name: Change locale to en_US.utf-8 shell: | echo 'LANG=en_US.utf-8 @@ -97,6 +100,9 @@ - template: src: "templates/pulsar_env.sh" dest: "/opt/pulsar/conf/pulsar_env.sh" + - template: + src: "templates/bkenv.sh" + dest: "/opt/pulsar/conf/bkenv.sh" - template: src: "templates/zoo.cfg" dest: "/opt/pulsar/conf/zookeeper.conf" @@ -303,3 +309,62 @@ - debug: msg: "Prometheus servers {{ item }}" with_items: "{{ groups['prometheus'] }}" + +- name: Install Node exporter on Brokers to collect system metrics + hosts: pulsar + become: true + tasks: + - name: Add user node_exporter + user: + name: node_exporter + shell: /bin/false + system: true + create_home: no + + - name: Download and extract + unarchive: + src: https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz + dest: /tmp + remote_src: yes + + - name: Copy bin node_exporter to /usr/local/bin + copy: + src: /tmp/node_exporter-1.0.1.linux-amd64/node_exporter + remote_src: yes + dest: /usr/local/bin/ + owner: node_exporter + group: node_exporter + mode: u+x,g+x,o+x + + - name: Create service node_exporter.service + blockinfile: + path: /etc/systemd/system/node_exporter.service + block: | + [Unit] + Description=Prometheus Node Exporter + Wants=network-online.target + After=network-online.target + [Service] + User=node_exporter + Group=node_exporter + Type=simple + ExecStart=/usr/local/bin/node_exporter + [Install] + WantedBy=multi-user.target + create: true + + - name: systemctl daemon_reload + systemd: + daemon_reload: yes + + - name: Start and Enable node_exporter + service: + name: node_exporter + state: started + enabled: yes + + - name: Check whether port 9100 is available + wait_for: + port: 9100 + state: started + timeout: 5 diff --git a/driver-pulsar/deploy/grep-errors.yaml b/driver-pulsar/deploy/grep-errors.yaml new file mode 100644 index 00000000..f91cf24f --- /dev/null +++ b/driver-pulsar/deploy/grep-errors.yaml @@ -0,0 +1,29 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# shell: journalctl -u benchmark-worker.service | grep Exception && journalctl -u pulsar.service | grep Exception && journalctl -u bookkeeper.service | grep Exception +--- +- name: Check exceptions from pulsar processes + hosts: all + tasks: + - name: Check exceptions + shell: journalctl -u benchmark-worker.service -u bookkeeper.service -u pulsar.service | grep -A 10 Exception + register: err_msgs + - debug: var=err_msgs.stdout_lines + diff --git a/driver-pulsar/deploy/provision-pulsar-aws.tf b/driver-pulsar/deploy/provision-pulsar-aws.tf index 66bcd7f6..b406c279 100644 --- a/driver-pulsar/deploy/provision-pulsar-aws.tf +++ b/driver-pulsar/deploy/provision-pulsar-aws.tf @@ -1,10 +1,11 @@ provider "aws" { region = "${var.region}" - version = "1.8" + version = "~> 2.7" + profile = "default" } provider "random" { - version = "1.1" + version = "2.1" } variable "public_key_path" { @@ -42,7 +43,7 @@ variable "num_instances" { resource "aws_vpc" "benchmark_vpc" { cidr_block = "10.0.0.0/16" - tags { + tags = { Name = "Pulsar-Benchmark-VPC-${random_id.hash.hex}" } } @@ -64,6 +65,7 @@ resource "aws_subnet" "benchmark_subnet" { vpc_id = "${aws_vpc.benchmark_vpc.id}" cidr_block = "10.0.0.0/24" map_public_ip_on_launch = true + availability_zone = "us-west-2a" } resource "aws_security_group" "benchmark_security_group" { @@ -108,7 +110,7 @@ resource "aws_security_group" "benchmark_security_group" { cidr_blocks = ["0.0.0.0/0"] } - tags { + tags = { Name = "Benchmark-Security-Group-${random_id.hash.hex}" } } @@ -126,7 +128,7 @@ resource "aws_instance" "zookeeper" { vpc_security_group_ids = ["${aws_security_group.benchmark_security_group.id}"] count = "${var.num_instances["zookeeper"]}" - tags { + tags = { Name = "zk-${count.index}" } } @@ -139,7 +141,7 @@ resource "aws_instance" "pulsar" { vpc_security_group_ids = ["${aws_security_group.benchmark_security_group.id}"] count = "${var.num_instances["pulsar"]}" - tags { + tags = { Name = "pulsar-${count.index}" } } @@ -152,7 +154,7 @@ resource "aws_instance" "client" { vpc_security_group_ids = ["${aws_security_group.benchmark_security_group.id}"] count = "${var.num_instances["client"]}" - tags { + tags = { Name = "pulsar-client-${count.index}" } } @@ -165,7 +167,7 @@ resource "aws_instance" "prometheus" { vpc_security_group_ids = ["${aws_security_group.benchmark_security_group.id}"] count = "${var.num_instances["prometheus"]}" - tags { + tags = { Name = "prometheus-${count.index}" } } @@ -174,6 +176,44 @@ output "client_ssh_host" { value = "${aws_instance.client.0.public_ip}" } +output "client1" { + value = "${aws_instance.client.1.public_ip}" +} + +output "client2" { + value = "${aws_instance.client.2.public_ip}" +} + +output "client3" { + value = "${aws_instance.client.3.public_ip}" +} + output "prometheus_host" { value = "${aws_instance.prometheus.0.public_ip}" } + +output "server0" { + value = "${aws_instance.pulsar.0.public_ip}" +} + +output "server1" { + value = "${aws_instance.pulsar.1.public_ip}" +} + +output "server2" { + value = "${aws_instance.pulsar.2.public_ip}" +} + +output "zk0" { + value = "${aws_instance.zookeeper.0.public_ip}" +} + +output "zk1" { + value = "${aws_instance.zookeeper.1.public_ip}" +} + +output "zk2" { + value = "${aws_instance.zookeeper.2.public_ip}" +} + + diff --git a/driver-pulsar/deploy/ps.yaml b/driver-pulsar/deploy/ps.yaml new file mode 100644 index 00000000..234bfc25 --- /dev/null +++ b/driver-pulsar/deploy/ps.yaml @@ -0,0 +1,31 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +--- +- name: Check the running java processes + hosts: all + tasks: + - name: Check running processes + shell: ps -ef | grep -i java + register: ps_cmd + + - name: Show captured processes + debug: + var: ps_cmd.stdout + diff --git a/driver-pulsar/deploy/templates/bkenv.sh b/driver-pulsar/deploy/templates/bkenv.sh new file mode 100644 index 00000000..bf1c7a63 --- /dev/null +++ b/driver-pulsar/deploy/templates/bkenv.sh @@ -0,0 +1,54 @@ +#!/bin/sh +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# Set JAVA_HOME here to override the environment setting +# JAVA_HOME= + +# default settings for starting bookkeeper + +# Configuration file of settings used in bookie server +BOOKIE_CONF=${BOOKIE_CONF:-"$BK_HOME/conf/bookkeeper.conf"} + +# Log4j configuration file +# BOOKIE_LOG_CONF= + +# Logs location +# BOOKIE_LOG_DIR= + +# Memory size options +BOOKIE_MEM=${BOOKIE_MEM:-${PULSAR_MEM:-""}} + +# Garbage collection options +BOOKIE_GC=${BOOKIE_GC:-"-XX:+UseG1GC -XX:MaxGCPauseMillis=10 -XX:+ParallelRefProcEnabled -XX:+UnlockExperimentalVMOptions -XX:+DoEscapeAnalysis -XX:ParallelGCThreads=32 -XX:ConcGCThreads=32 -XX:G1NewSizePercent=50 -XX:-ResizePLAB"} + +# Extra options to be passed to the jvm +BOOKIE_EXTRA_OPTS="${BOOKIE_EXTRA_OPTS} ${BOOKIE_MEM} ${BOOKIE_GC} -Dio.netty.leakDetectionLevel=disabled -Dio.netty.recycler.maxCapacity.default=1000 -Dio.netty.recycler.linkCapacity=1024" + +# Add extra paths to the bookkeeper classpath +# BOOKIE_EXTRA_CLASSPATH= + +#Folder where the Bookie server PID file should be stored +#BOOKIE_PID_DIR= + +#Wait time before forcefully kill the Bookie server instance, if the stop is not successful +#BOOKIE_STOP_TIMEOUT= + +#Entry formatter class to format entries. +#ENTRY_FORMATTER_CLASS= diff --git a/driver-pulsar/deploy/templates/bookkeeper.conf b/driver-pulsar/deploy/templates/bookkeeper.conf index 8b1b76cd..4fb979ff 100644 --- a/driver-pulsar/deploy/templates/bookkeeper.conf +++ b/driver-pulsar/deploy/templates/bookkeeper.conf @@ -319,7 +319,7 @@ writeBufferSizeBytes=524288 useHostNameAsBookieID=false # Stats Provider Class -# statsProviderClass=org.apache.bookkeeper.stats.PrometheusMetricsProvider +statsProviderClass=org.apache.bookkeeper.stats.prometheus.PrometheusMetricsProvider # Default port for Prometheus metrics exporter prometheusStatsHttpPort=8000 diff --git a/driver-pulsar/deploy/templates/chrony.conf b/driver-pulsar/deploy/templates/chrony.conf index 00fb403e..0e68c66a 100644 --- a/driver-pulsar/deploy/templates/chrony.conf +++ b/driver-pulsar/deploy/templates/chrony.conf @@ -1,3 +1,22 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + # Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). server 169.254.169.123 prefer iburst diff --git a/driver-pulsar/deploy/templates/prometheus.service b/driver-pulsar/deploy/templates/prometheus.service index 5c5e5af3..598ce16a 100644 --- a/driver-pulsar/deploy/templates/prometheus.service +++ b/driver-pulsar/deploy/templates/prometheus.service @@ -5,6 +5,7 @@ After=network.target [Service] WorkingDirectory=/opt/prometheus ExecStart=/opt/prometheus/prometheus \ + --web.enable-admin-api \ --storage.tsdb.path=/opt/prometheus/data \ --config.file=/opt/prometheus/prometheus.yml diff --git a/driver-pulsar/deploy/templates/prometheus.yml b/driver-pulsar/deploy/templates/prometheus.yml index 711dd643..89397b20 100644 --- a/driver-pulsar/deploy/templates/prometheus.yml +++ b/driver-pulsar/deploy/templates/prometheus.yml @@ -1,66 +1,71 @@ # -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at +# Copyright (c) 2018 Sijie. All Rights Reserved. # -# http://www.apache.org/licenses/LICENSE-2.0 +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # -# my global config +--- global: - scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. - evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. + scrape_interval: 10s # By default, scrape targets every 15 seconds. + evaluation_interval: 10s # By default, scrape targets every 15 seconds. # scrape_timeout is set to the global default (10s). + external_labels: + # TODO: replace `` with the right cluster name. E.g. + # + # cluster: test-cluster + cluster: local -# Alertmanager configuration -alerting: - alertmanagers: - - static_configs: - - targets: - # - alertmanager:9093 - -# Load rules once and periodically evaluate them according to the global 'evaluation_interval'. -rule_files: - # - "first_rules.yml" - # - "second_rules.yml" +# Load and evaluate rules in these files every 'evaluation_interval' seconds. +# rule_files: -# A scrape configuration containing exactly one endpoint to scrape: -# Here it's Prometheus itself. scrape_configs: - # The job name is added as a label `job=` to any timeseries scraped from this config. - - job_name: 'pulsar' - - # metrics_path defaults to '/metrics' - # scheme defaults to 'http'. + - job_name: "proxy" + honor_labels: true # don't overwrite job & instance labels static_configs: - targets: -{% for worker in groups['pulsar'] %} +{% for worker in groups['client'] %} - {{ hostvars[worker].private_ip }}:8080 {% endfor %} - labels: - group: 'broker' + + - job_name: "broker" + honor_labels: true # don't overwrite job & instance labels + static_configs: - targets: -{% for worker in groups['pulsar'] %} - - {{ hostvars[worker].private_ip }}:8000 +{% for broker in groups['pulsar'] %} + - {{ hostvars[broker].private_ip }}:8080 {% endfor %} - labels: - group: 'bookie' + + - job_name: "bookie" + honor_labels: true # don't overwrite job & instance labels + static_configs: - targets: -{% for worker in groups['client'] %} - - {{ hostvars[worker].private_ip }}:8081 +{% for broker in groups['pulsar'] %} + - {{ hostvars[broker].private_ip }}:8000 {% endfor %} - labels: - group: 'client' + - job_name: "zookeeper" + honor_labels: true + static_configs: + - targets: +{% for zkserver in groups['zookeeper'] %} + - {{ hostvars[zkserver].private_ip }}:8000 +{% endfor %} + + - job_name: "node_metrics" + honor_labels: true # don't overwrite job & instance labels + static_configs: + - targets: +{% for broker in groups['pulsar'] %} + - {{ hostvars[broker].private_ip }}:9100 +{% endfor %} \ No newline at end of file diff --git a/driver-pulsar/deploy/templates/prometheus_tiered.yml b/driver-pulsar/deploy/templates/prometheus_tiered.yml new file mode 100644 index 00000000..51900175 --- /dev/null +++ b/driver-pulsar/deploy/templates/prometheus_tiered.yml @@ -0,0 +1,82 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +--- +global: + scrape_interval: 10s # By default, scrape targets every 15 seconds. + evaluation_interval: 10s # By default, scrape targets every 15 seconds. + # scrape_timeout is set to the global default (10s). + external_labels: + # TODO: replace `` with the right cluster name. E.g. + # + # cluster: test-cluster + cluster: local + +# Load and evaluate rules in these files every 'evaluation_interval' seconds. +# rule_files: + +scrape_configs: + + - job_name: "proxy" + honor_labels: true # don't overwrite job & instance labels + static_configs: + - targets: +{% for worker in groups['client'] %} + - {{ hostvars[worker].private_ip }}:8080 +{% endfor %} + + - job_name: "broker" + honor_labels: true # don't overwrite job & instance labels + static_configs: + - targets: +{% for broker in groups['pulsar'] %} + - {{ hostvars[broker].private_ip }}:8080 +{% endfor %} + + - job_name: "bookie" + honor_labels: true # don't overwrite job & instance labels + static_configs: + - targets: +{% for bookie in groups['bookkeeper'] %} + - {{ hostvars[bookie].private_ip }}:8000 +{% endfor %} + + - job_name: "zookeeper" + honor_labels: true + static_configs: + - targets: +{% for zkserver in groups['zookeeper'] %} + - {{ hostvars[zkserver].private_ip }}:8000 +{% endfor %} + + - job_name: "broker_node_metrics" + honor_labels: true # don't overwrite job & instance labels + static_configs: + - targets: +{% for broker in groups['pulsar'] %} + - {{ hostvars[broker].private_ip }}:9100 +{% endfor %} + + - job_name: "bookie_node_metrics" + honor_labels: true # don't overwrite job & instance labels + static_configs: + - targets: +{% for bookie in groups['bookkeeper'] %} + - {{ hostvars[bookie].private_ip }}:9100 +{% endfor %} \ No newline at end of file diff --git a/driver-pulsar/deploy/templates/pulsar-dashboard.service b/driver-pulsar/deploy/templates/pulsar-dashboard.service index 4fbbd8fd..63fa9120 100644 --- a/driver-pulsar/deploy/templates/pulsar-dashboard.service +++ b/driver-pulsar/deploy/templates/pulsar-dashboard.service @@ -7,8 +7,8 @@ Requires=prometheus.service [Service] WorkingDirectory=/opt/pulsar -ExecStartPre=/usr/bin/docker pull apachepulsar/pulsar-grafana:latest -ExecStart=/usr/bin/docker run --restart=always --name=systemd_pulsar_dashboard -p3000:3000 -e PROMETHEUS_URL=http://{{ hostvars[groups['prometheus'][0]].private_ip }}:9090/ apachepulsar/pulsar-grafana:latest +ExecStartPre=/usr/bin/docker pull streamnative/apache-pulsar-grafana-dashboard:0.0.8 +ExecStart=/usr/bin/docker run --restart=always --name=systemd_pulsar_dashboard -p3000:3000 -e PULSAR_PROMETHEUS_URL=http://{{ hostvars[groups['prometheus'][0]].private_ip }}:9090/ -e PULSAR_CLUSTER=local streamnative/apache-pulsar-grafana-dashboard:0.0.8 ExecStop=/usr/bin/docker stop systemd_pulsar_dashboard ExecStopPost=/usr/bin/docker rm -f systemd_pulsar_dashboard ExecReload=/usr/bin/docker restart systemd_pulsar_dashboard diff --git a/driver-pulsar/deploy/templates/pulsar_env.sh b/driver-pulsar/deploy/templates/pulsar_env.sh index 1a271b11..ce7886fa 100644 --- a/driver-pulsar/deploy/templates/pulsar_env.sh +++ b/driver-pulsar/deploy/templates/pulsar_env.sh @@ -47,7 +47,7 @@ PULSAR_MEM=" -Xms{{ max_heap_memory }} -Xmx{{ max_heap_memory }} -XX:MaxDirectMe # Garbage collection options PULSAR_GC=" -XX:+UseG1GC -XX:MaxGCPauseMillis=10 -XX:+ParallelRefProcEnabled -XX:+UnlockExperimentalVMOptions -XX:+AggressiveOpts -XX:+DoEscapeAnalysis -XX:ParallelGCThreads=32 -XX:ConcGCThreads=32 -XX:G1NewSizePercent=50 -XX:+DisableExplicitGC -XX:-ResizePLAB" PULSAR_GC="${PULSAR_GC} -XX:+PerfDisableSharedMem -XX:+AlwaysPreTouch -XX:-UseBiasedLocking" -PULSAR_GC="${PULSAR_GC} -XX:+PrintGCDetails -XX:+PrintGCApplicationStoppedTime -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=64m -Xloggc:/dev/shm/gc_%p.log" +# PULSAR_GC="${PULSAR_GC} -XX:+PrintGCDetails -XX:+PrintGCApplicationStoppedTime -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=64m -Xloggc:/dev/shm/gc_%p.log" # Extra options to be passed to the jvm PULSAR_EXTRA_OPTS="${PULSAR_EXTRA_OPTS} ${PULSAR_MEM} ${PULSAR_GC} -Dio.netty.leakDetectionLevel=disabled -Dio.netty.recycler.maxCapacity.default=1000 -Dio.netty.recycler.linkCapacity=1024" diff --git a/driver-pulsar/deploy/templates/zoo.cfg b/driver-pulsar/deploy/templates/zoo.cfg index b33cad81..d0d72e2e 100644 --- a/driver-pulsar/deploy/templates/zoo.cfg +++ b/driver-pulsar/deploy/templates/zoo.cfg @@ -44,6 +44,9 @@ autopurge.snapRetainCount=3 # Set to "0" to disable auto purge feature autopurge.purgeInterval=1 +metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider +metricsProvider.httpPort=8000 + {% for zk in groups['zookeeper'] %} server.{{ hostvars[zk].zid }}={{ hostvars[zk].private_ip }}:2888:3888 {% endfor %} diff --git a/driver-pulsar/deploy/terraform.tfvars b/driver-pulsar/deploy/terraform.tfvars index ede89ce7..ed8964e9 100644 --- a/driver-pulsar/deploy/terraform.tfvars +++ b/driver-pulsar/deploy/terraform.tfvars @@ -3,7 +3,7 @@ region = "us-west-2" ami = "ami-9fa343e7" // RHEL-7.4 instance_types = { - "pulsar" = "i3.4xlarge" + "pulsar" = "i3en.2xlarge" "zookeeper" = "t2.small" "client" = "c5.2xlarge" "prometheus" = "t2.small" diff --git a/driver-pulsar/pom.xml b/driver-pulsar/pom.xml index 26833dea..3d2df4da 100644 --- a/driver-pulsar/pom.xml +++ b/driver-pulsar/pom.xml @@ -30,7 +30,7 @@ driver-pulsar - 2.4.1 + 2.6.0 diff --git a/driver-pulsar/pulsar-batched-50ms-linger.yaml b/driver-pulsar/pulsar-batched-50ms-linger.yaml new file mode 100644 index 00000000..c0f7c57f --- /dev/null +++ b/driver-pulsar/pulsar-batched-50ms-linger.yaml @@ -0,0 +1,50 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: Pulsar +driverClass: io.openmessaging.benchmark.driver.pulsar.PulsarBenchmarkDriver + +# Pulsar client-specific configuration +client: + serviceUrl: pulsar://localhost:6650 + httpUrl: http://localhost:8080 + ioThreads: 16 + connectionsPerBroker: 16 + clusterName: local + namespacePrefix: benchmark/ns + topicType: persistent + persistence: + ensembleSize: 3 + writeQuorum: 3 + ackQuorum: 2 + deduplicationEnabled: false + tlsAllowInsecureConnection: false + tlsEnableHostnameVerification: false + tlsTrustCertsFilePath: + authentication: + plugin: + data: + +# Producer configuration +producer: + batchingEnabled: true + batchingMaxPublishDelayMs: 50 + batchingMaxBytes: 1048576 + blockIfQueueFull: true + pendingQueueSize: 10000 diff --git a/driver-pulsar/pulsar-batched.yaml b/driver-pulsar/pulsar-batched.yaml new file mode 100644 index 00000000..d1f96052 --- /dev/null +++ b/driver-pulsar/pulsar-batched.yaml @@ -0,0 +1,50 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: Pulsar +driverClass: io.openmessaging.benchmark.driver.pulsar.PulsarBenchmarkDriver + +# Pulsar client-specific configuration +client: + serviceUrl: pulsar://localhost:6650 + httpUrl: http://localhost:8080 + ioThreads: 16 + connectionsPerBroker: 16 + clusterName: local + namespacePrefix: benchmark/ns + topicType: persistent + persistence: + ensembleSize: 3 + writeQuorum: 3 + ackQuorum: 2 + deduplicationEnabled: false + tlsAllowInsecureConnection: false + tlsEnableHostnameVerification: false + tlsTrustCertsFilePath: + authentication: + plugin: + data: + +# Producer configuration +producer: + batchingEnabled: true + batchingMaxPublishDelayMs: 500 + batchingMaxBytes: 1048576 + blockIfQueueFull: true + pendingQueueSize: 10000 diff --git a/driver-pulsar/pulsar.yaml b/driver-pulsar/pulsar.yaml index 2b257baa..d3ffaac3 100644 --- a/driver-pulsar/pulsar.yaml +++ b/driver-pulsar/pulsar.yaml @@ -24,8 +24,8 @@ driverClass: io.openmessaging.benchmark.driver.pulsar.PulsarBenchmarkDriver client: serviceUrl: pulsar://localhost:6650 httpUrl: http://localhost:8080 - ioThreads: 8 - connectionsPerBroker: 8 + ioThreads: 16 + connectionsPerBroker: 16 clusterName: local namespacePrefix: benchmark/ns topicType: persistent diff --git a/driver-pulsar/src/main/java/io/openmessaging/benchmark/driver/pulsar/PulsarBenchmarkDriver.java b/driver-pulsar/src/main/java/io/openmessaging/benchmark/driver/pulsar/PulsarBenchmarkDriver.java index 2940b56d..8662a9ee 100644 --- a/driver-pulsar/src/main/java/io/openmessaging/benchmark/driver/pulsar/PulsarBenchmarkDriver.java +++ b/driver-pulsar/src/main/java/io/openmessaging/benchmark/driver/pulsar/PulsarBenchmarkDriver.java @@ -22,6 +22,7 @@ import java.io.File; import java.io.IOException; import java.util.Collections; +import java.util.Optional; import java.util.Random; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; @@ -63,8 +64,6 @@ public class PulsarBenchmarkDriver implements BenchmarkDriver { private PulsarConfig config; - - private String namespace; private ProducerBuilder producerBuilder; @@ -73,26 +72,22 @@ public void initialize(File configurationFile, StatsLogger statsLogger) throws I this.config = readConfig(configurationFile); log.info("Pulsar driver configuration: {}", writer.writeValueAsString(config)); - ClientBuilder clientBuilder = PulsarClient.builder() - .ioThreads(config.client.ioThreads) - .connectionsPerBroker(config.client.connectionsPerBroker) - .statsInterval(0, TimeUnit.SECONDS) - .serviceUrl(config.client.serviceUrl) - .maxConcurrentLookupRequests(50000) - .maxLookupRequests(100000) + ClientBuilder clientBuilder = PulsarClient.builder().ioThreads(config.client.ioThreads) + .connectionsPerBroker(config.client.connectionsPerBroker).statsInterval(0, TimeUnit.SECONDS) + .serviceUrl(config.client.serviceUrl).maxConcurrentLookupRequests(50000).maxLookupRequests(100000) .listenerThreads(Runtime.getRuntime().availableProcessors()); if (config.client.serviceUrl.startsWith("pulsar+ssl")) { clientBuilder.allowTlsInsecureConnection(config.client.tlsAllowInsecureConnection) - .enableTlsHostnameVerification(config.client.tlsEnableHostnameVerification) - .tlsTrustCertsFilePath(config.client.tlsTrustCertsFilePath); + .enableTlsHostnameVerification(config.client.tlsEnableHostnameVerification) + .tlsTrustCertsFilePath(config.client.tlsTrustCertsFilePath); } PulsarAdminBuilder pulsarAdminBuilder = PulsarAdmin.builder().serviceHttpUrl(config.client.httpUrl); if (config.client.httpUrl.startsWith("https")) { pulsarAdminBuilder.allowTlsInsecureConnection(config.client.tlsAllowInsecureConnection) - .enableTlsHostnameVerification(config.client.tlsEnableHostnameVerification) - .tlsTrustCertsFilePath(config.client.tlsTrustCertsFilePath); + .enableTlsHostnameVerification(config.client.tlsEnableHostnameVerification) + .tlsTrustCertsFilePath(config.client.tlsTrustCertsFilePath); } if (config.client.authentication.plugin != null && !config.client.authentication.plugin.isEmpty()) { @@ -109,9 +104,10 @@ public void initialize(File configurationFile, StatsLogger statsLogger) throws I log.info("Created Pulsar admin client for HTTP URL {}", config.client.httpUrl); producerBuilder = client.newProducer().enableBatching(config.producer.batchingEnabled) - .batchingMaxPublishDelay(config.producer.batchingMaxPublishDelayMs, TimeUnit.MILLISECONDS) - .blockIfQueueFull(config.producer.blockIfQueueFull) - .maxPendingMessages(config.producer.pendingQueueSize); + .batchingMaxPublishDelay(config.producer.batchingMaxPublishDelayMs, TimeUnit.MILLISECONDS) + .blockIfQueueFull(config.producer.blockIfQueueFull).batchingMaxBytes(config.producer.batchingMaxBytes) + .maxPendingMessages(config.producer.pendingQueueSize).batchingMaxMessages(Integer.MAX_VALUE) + .maxPendingMessagesAcrossPartitions(Integer.MAX_VALUE); try { // Create namespace and set the configuration @@ -120,9 +116,10 @@ public void initialize(File configurationFile, StatsLogger statsLogger) throws I if (!adminClient.tenants().getTenants().contains(tenant)) { try { adminClient.tenants().createTenant(tenant, - new TenantInfo(Collections.emptySet(), Sets.newHashSet(cluster))); + new TenantInfo(Collections.emptySet(), Sets.newHashSet(cluster))); } catch (ConflictException e) { - // Ignore. This can happen when multiple workers are initializing at the same time + // Ignore. This can happen when multiple workers are initializing at the same + // time } } log.info("Created Pulsar tenant {} with allowed cluster {}", tenant, cluster); @@ -133,13 +130,13 @@ public void initialize(File configurationFile, StatsLogger statsLogger) throws I PersistenceConfiguration p = config.client.persistence; adminClient.namespaces().setPersistence(namespace, - new PersistencePolicies(p.ensembleSize, p.writeQuorum, p.ackQuorum, 1.0)); + new PersistencePolicies(p.ensembleSize, p.writeQuorum, p.ackQuorum, 1.0)); adminClient.namespaces().setBacklogQuota(namespace, - new BacklogQuota(Long.MAX_VALUE, RetentionPolicy.producer_exception)); + new BacklogQuota(Long.MAX_VALUE, RetentionPolicy.producer_exception)); adminClient.namespaces().setDeduplicationStatus(namespace, p.deduplicationEnabled); log.info("Applied persistence configuration for namespace {}/{}/{}: {}", tenant, cluster, namespace, - writer.writeValueAsString(p)); + writer.writeValueAsString(p)); } catch (PulsarAdminException e) { throw new IOException(e); @@ -161,21 +158,28 @@ public CompletableFuture createTopic(String topic, int partitions) { return adminClient.topics().createPartitionedTopicAsync(topic, partitions); } + @Override + public CompletableFuture notifyTopicCreation(String topic, int partitions) { + // No-op + return CompletableFuture.completedFuture(null); + } + @Override public CompletableFuture createProducer(String topic) { return producerBuilder.topic(topic).createAsync() - .thenApply(pulsarProducer -> new PulsarBenchmarkProducer(pulsarProducer)); + .thenApply(pulsarProducer -> new PulsarBenchmarkProducer(pulsarProducer)); } @Override public CompletableFuture createConsumer(String topic, String subscriptionName, - ConsumerCallback consumerCallback) { - return client.newConsumer().subscriptionType(SubscriptionType.Failover).messageListener((consumer, msg) -> { - consumerCallback.messageReceived(msg.getData(), msg.getPublishTime()); - consumer.acknowledgeAsync(msg); - }).topic(topic).subscriptionName(subscriptionName).subscribeAsync() - .thenApply(consumer -> new PulsarBenchmarkConsumer(consumer)); - + Optional partition, ConsumerCallback consumerCallback) { + return client.newConsumer().priorityLevel(0).subscriptionType(SubscriptionType.Failover) + .messageListener((consumer, msg) -> { + consumerCallback.messageReceived(msg.getData(), + TimeUnit.MILLISECONDS.toNanos(msg.getPublishTime())); + consumer.acknowledgeAsync(msg); + }).topic(topic).subscriptionName(subscriptionName).subscribeAsync() + .thenApply(consumer -> new PulsarBenchmarkConsumer(consumer)); } @@ -195,7 +199,7 @@ public void close() throws Exception { } private static final ObjectMapper mapper = new ObjectMapper(new YAMLFactory()) - .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); private static PulsarConfig readConfig(File configurationFile) throws IOException { return mapper.readValue(configurationFile, PulsarConfig.class); diff --git a/driver-pulsar/src/main/java/io/openmessaging/benchmark/driver/pulsar/config/PulsarProducerConfig.java b/driver-pulsar/src/main/java/io/openmessaging/benchmark/driver/pulsar/config/PulsarProducerConfig.java index aaff0b6f..c10aac82 100644 --- a/driver-pulsar/src/main/java/io/openmessaging/benchmark/driver/pulsar/config/PulsarProducerConfig.java +++ b/driver-pulsar/src/main/java/io/openmessaging/benchmark/driver/pulsar/config/PulsarProducerConfig.java @@ -22,6 +22,6 @@ public class PulsarProducerConfig { public boolean batchingEnabled = true; public boolean blockIfQueueFull = true; public int batchingMaxPublishDelayMs = 1; - + public int batchingMaxBytes = 128 * 1024; public int pendingQueueSize = 1000; } diff --git a/driver-rabbitmq/deploy/deploy.yaml b/driver-rabbitmq/deploy/deploy.yaml index c0c86d37..33019dee 100644 --- a/driver-rabbitmq/deploy/deploy.yaml +++ b/driver-rabbitmq/deploy/deploy.yaml @@ -17,152 +17,228 @@ # under the License. # -- name: Add entries to /etc/hosts - hosts: all +--- +# Mount SSDs +- name: Format and mount disks for Brokers + hosts: rabbitmq connection: ssh + become: true tasks: - - lineinfile: - dest: /etc/hosts - line: "{{ item.line }}" - state: present + - name: Format disks + filesystem: + fstype: xfs + dev: "{{ item }}" + with_items: + - "/dev/nvme1n1" + - "/dev/nvme2n1" + - name: Mount disks + mount: + path: "{{ item.path }}" + src: "{{ item.src }}" + fstype: xfs + opts: defaults,noatime,nodiscard + state: mounted with_items: - - { line: "{{ hostvars[groups['rabbitmq'][0]].private_ip }} rabbitmaster" } - - { line: "{{ hostvars[groups['rabbitmq'][1]].private_ip }} rabbitslave1" } - - { line: "{{ hostvars[groups['rabbitmq'][2]].private_ip }} rabbitslave2" } + - { path: "/mnt/data-1", src: "/dev/nvme1n1" } + - { path: "/mnt/data-2", src: "/dev/nvme2n1" } + - name: Fix permissions + file: + path: "/mnt/data-1" + state: touch + mode: "0777" +- name: Chrony setup + hosts: client + connection: ssh + become: true + tasks: + - name: Set up chronyd + template: + src: "templates/chrony.conf" + dest: "/etc/chrony.conf" + - systemd: + state: restarted + daemon_reload: yes + name: "chronyd" +# Install RabbitMQ Server - name: Install RabbitMQ Cluster hosts: rabbitmq connection: ssh + handlers: + - name: restart rabbitmq-server + service: name=rabbitmq-server state=restarted + + - name: start rabbitmq-server + service: name=rabbitmq-server state=started + + - name: stop rabbitmq-server + service: name=rabbitmq-server state=stopped + tasks: + - set_fact: + erlangVersion: 23.0.2 + rabbitMqVersion: 3.8.5 + - name: Install RPM packages + yum: pkg={{ item }} state=latest + with_items: + - wget + - java-11 + - sysstat + - vim + - socat + - name: Install Erlang + yum: + name: https://github.com/rabbitmq/erlang-rpm/releases/download/v{{ erlangVersion }}/erlang-{{ erlangVersion }}-1.el7.x86_64.rpm + state: present + - name: Install Rabbitmq Server + yum: + name: https://dl.bintray.com/rabbitmq/all/rabbitmq-server/{{ rabbitMqVersion }}/rabbitmq-server-{{ rabbitMqVersion }}-1.el7.noarch.rpm + state: present + - name: Install RabbitMQ service + template: + src: "templates/rabbitmq-server.service" + dest: "/etc/systemd/system/rabbitmq-server.service" + - systemd: + state: started + daemon_reload: yes + name: "rabbitmq-server" + - systemd: + state: restarted + daemon_reload: yes + name: "rabbitmq-server" + + - name: backup old erlang cookie + shell: cp -a /var/lib/rabbitmq/.erlang.cookie /var/lib/rabbitmq/.erlang.cookie.old + changed_when: false + - name: updating rabbitmq erlang cookie + template: + src: etc/erlang.cookie.j2 + dest: /var/lib/rabbitmq/.erlang.cookie + owner: rabbitmq + group: rabbitmq + mode: 0400 + notify: stop rabbitmq-server + - name: remove old erlang cookie + file: + path: /var/lib/rabbitmq/.erlang.cookie.old + state: absent + changed_when: false + - name: rabbitmq default file + template: + src: "{{ item.src }}" + dest: "{{ item.dest }}" + owner: root + group: root + mode: 0644 + with_items: + - { + src: etc/default/rabbitmq-server.j2, + dest: /etc/default/rabbitmq-server, + } + - { + src: etc/rabbitmq/rabbitmq.config.j2, + dest: /etc/rabbitmq/rabbitmq.config, + } + - { + src: etc/rabbitmq/rabbitmq-env.conf.j2, + dest: /etc/rabbitmq/rabbitmq-env.conf, + } + notify: restart rabbitmq-server + - systemd: + state: started + daemon_reload: yes + name: "rabbitmq-server" + +# Configure RabbitMQ for cluster +- name: Configure RabbitMQ for cluster + hosts: rabbitmq + connection: ssh + handlers: + - name: restart rabbitmq-server + service: name=rabbitmq-server state=restarted + + - name: start rabbitmq-server + service: name=rabbitmq-server state=started + + - name: stop rabbitmq-server + service: name=rabbitmq-server state=stopped tasks: - - set_fact: - erlangVersion: 19.3.6.5 - rabbitMqVersion: 3.7.2 - - name: Install RPM packages - yum: pkg={{ item }} state=latest - with_items: - - wget - - java - - sysstat - - vim - - socat - - name: Install Erlang - yum: - name: https://github.com/rabbitmq/erlang-rpm/releases/download/v{{ erlangVersion }}/erlang-{{ erlangVersion }}-1.el7.centos.x86_64.rpm - state: present - - name: Install Rabbitmq Server - yum: - name: https://dl.bintray.com/rabbitmq/all/rabbitmq-server/{{ rabbitMqVersion }}/rabbitmq-server-{{ rabbitMqVersion }}-1.el7.noarch.rpm - state: present - - - name: Change master hostname to rabbitmaster - hostname: - name: "rabbitmaster" - when: rabbitmq_master is defined - - - name: Change slave1 hostname to rabbitslave1 - hostname: - name: "rabbitslave1" - when: rabbitslave1 is defined - - - name: Change slave2 hostname to rabbitslave2 - hostname: - name: "rabbitslave2" - when: rabbitslave2 is defined - - # - name: stop rabbitmq - # shell: rabbitmqctl stop_app - # - name: kill rabbitmq - # shell: rabbitmqctl stop ; ps aux | grep rabbitmq | grep -v grep | awk '{print $2}'| xargs kill -9 - # - name: reset rabbitmq - # shell: rabbitmqctl reset - - - systemd: - state: started - daemon_reload: yes - name: "rabbitmq-server" - - name: Install web management - shell: rabbitmq-plugins enable rabbitmq_management - - systemd: - state: restarted - daemon_reload: yes - name: "rabbitmq-server" - - name: create admin/admin profile - shell: rabbitmqctl add_user admin admin - - name: set admin tag - shell: rabbitmqctl set_user_tags admin administrator - - name: set admin permission - shell: rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*" - - name: Clear servers' Erlang cookie - file: - path: /var/lib/rabbitmq/.erlang.cookie - state: absent - - name: Copy Erlang cookie - copy: src=erlang.cookie dest=/var/lib/rabbitmq/.erlang.cookie owner=rabbitmq group=rabbitmq mode=0400 - - systemd: - state: restarted - daemon_reload: yes - name: "rabbitmq-server" - - name: RabbitMQ status - shell: rabbitmqctl cluster_status - register: result - - debug: - msg: '{{ result.stdout }}' - - name: Rabbit cluster stop slaves - shell: rabbitmqctl stop_app - when: rabbitmq_slave is defined - - name: Rabbit cluster slaves join master - shell: rabbitmqctl join_cluster rabbit@rabbitmaster - when: rabbitmq_slave is defined - - name: Start RabbitMQ cluster slaves - shell: rabbitmqctl start_app - when: rabbitmq_slave is defined - - name: Show RabbitMQ cluster status - shell: rabbitmqctl cluster_status - - name: Create high availability pllicy - shell: rabbitmqctl set_policy ha-all "^" '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}' - when: rabbitmq_master is defined - # - name: add queue taxCodeInvoiceQueue - # rabbitmq_queue: name=cmcc_zzs_taxCodeInvoiceQueue - # when: rabbitmq_master is defined - # - name: add queue cmcc_zzs_generatorInvoiceQueue - # rabbitmq_queue: name=cmcc_zzs_generatorInvoiceQueue - # when: rabbitmq_master is defined - # - name: add queue cmcc_zzs_pushInvoiceQueue - # rabbitmq_queue: name=cmcc_zzs_pushInvoiceQueue - # when: rabbitmq_master is defined - # - name: add queue cmcc_zzs_sentToPlatformServerQueue - # rabbitmq_queue: cmcc_zzs_sentToPlatformServerQueue - # when: rabbitmq_master is defined - - name: Show queue list - shell: rabbitmqctl list_queues - register: result_queue - - debug: msg='{{result_queue.stdout}}' - - + - name: Enable the plugins installed + rabbitmq_plugin: + names: "{{ item }}" + prefix: /usr/lib/rabbitmq + state: enabled + new_only: yes + with_items: "{{ rabbitmq_plugins }}" + notify: start rabbitmq-server + + - name: Restart RabbitMQ server + systemd: + state: started + name: "rabbitmq-server" + + - name: make sure rabbitmq app is up + command: rabbitmqctl start_app + + - name: Join first node's cluster + shell: rabbitmqctl stop_app && rabbitmqctl join_cluster rabbit@{{ hostvars[groups['rabbitmq'][0]].private_ip }} && rabbitmqctl start_app + when: inventory_hostname != hostvars[groups['rabbitmq'][0]].inventory_hostname + + - name: create admin/admin profile + shell: rabbitmqctl add_user admin admin + when: inventory_hostname == hostvars[groups['rabbitmq'][0]].inventory_hostname + - name: set admin tag + shell: rabbitmqctl set_user_tags admin administrator + when: inventory_hostname == hostvars[groups['rabbitmq'][0]].inventory_hostname + - name: set admin permission + shell: rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*" + when: inventory_hostname == hostvars[groups['rabbitmq'][0]].inventory_hostname + + - name: set ha-mode to exactly two nodes for all queues for backup + shell: rabbitmqctl set_policy ha-exactly-two ".*" '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}' + register: res + failed_when: res.rc != 0 + when: inventory_hostname == hostvars[groups['rabbitmq'][0]].inventory_hostname + - name: Rabbitmq benchmarking client setup hosts: client connection: ssh become: true tasks: + - name: Install RPM packages + yum: pkg={{ item }} state=latest + with_items: + - wget + - java-11 + - sysstat + - vim + - socat - name: Copy benchmark code unarchive: src: ../../package/target/openmessaging-benchmark-0.0.1-SNAPSHOT-bin.tar.gz dest: /opt - shell: > - tuned-adm profile latency-performance && + tuned-adm profile latency-performance && rm -rf /opt/benchmark && mv /opt/openmessaging-benchmark-0.0.1-SNAPSHOT /opt/benchmark - - name: Configure service URL - lineinfile: - dest: /opt/benchmark/driver-rabbitmq/rabbitmq.yaml - regexp: '^brokerAddress\: ' - line: 'brokerAddress: rabbitmaster' - name: Configure benchmark JVM settings lineinfile: - dest: /opt/benchmark/bin/benchmark - regexp: '^JVM_MEM=' - line: 'JVM_MEM="-Xms24G -Xmx24G -XX:+UseG1GC -XX:MaxGCPauseMillis=10 -XX:+ParallelRefProcEnabled -XX:+UnlockExperimentalVMOptions -XX:+AggressiveOpts -XX:+DoEscapeAnalysis -XX:ParallelGCThreads=32 -XX:ConcGCThreads=32 -XX:G1NewSizePercent=50 -XX:+DisableExplicitGC -XX:-ResizePLAB -XX:+PerfDisableSharedMem -XX:+AlwaysPreTouch -XX:-UseBiasedLocking"' - + dest: /opt/benchmark/bin/benchmark + regexp: "^JVM_MEM=" + line: 'JVM_MEM="-Xms24G -Xmx24G -XX:+UseG1GC -XX:MaxGCPauseMillis=10 -XX:+ParallelRefProcEnabled -XX:+UnlockExperimentalVMOptions -XX:+AggressiveOpts -XX:+DoEscapeAnalysis -XX:ParallelGCThreads=32 -XX:ConcGCThreads=32 -XX:G1NewSizePercent=50 -XX:+DisableExplicitGC -XX:-ResizePLAB -XX:+PerfDisableSharedMem -XX:+AlwaysPreTouch -XX:-UseBiasedLocking"' + - template: + src: "templates/workers.yaml" + dest: "/opt/benchmark/workers.yaml" + - template: + src: "templates/rabbitmq.yaml" + dest: "/opt/benchmark/driver-rabbitmq/rabbitmq.yaml" + - name: Install benchmark systemd service + template: + src: "templates/benchmark-worker.service" + dest: "/etc/systemd/system/benchmark-worker.service" + - systemd: + state: restarted + daemon_reload: yes + name: "benchmark-worker" - name: List host addresses hosts: localhost @@ -174,4 +250,111 @@ - debug: msg: "Benchmark client {{ item }}" with_items: "{{ groups['client'] }}" - + +# Setup the Prometheus/Grafana monitoring stack +- name: Prometheus installation + hosts: prometheus + connection: ssh + become: true + tasks: + - name: Add Extras Repo + shell: yum-config-manager --enable rhui-REGION-rhel-server-extras + - name: Install RPM packages + yum: pkg={{ item }} state=latest + with_items: + - docker + - set_fact: + prometheusVersion: "2.2.1" + - file: path=/opt/prometheus state=absent + - file: path=/opt/prometheus state=directory + - name: Download Prometheus Binary Package + unarchive: + src: "https://github.com/prometheus/prometheus/releases/download/v{{ prometheusVersion }}/prometheus-{{ prometheusVersion }}.linux-amd64.tar.gz" + remote_src: yes + dest: /opt/prometheus + extra_opts: ["--strip-components=1"] + - set_fact: + private_ip: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" + +- name: Prometheus setup + hosts: prometheus + connection: ssh + become: true + tasks: + - file: + path: "/opt/prometheus/{{ item }}" + state: directory + with_items: + - data + - template: + src: "templates/prometheus.service" + dest: "/etc/systemd/system/prometheus.service" + - template: + src: "templates/rabbitmq-dashboard.service" + dest: "/etc/systemd/system/rabbitmq-dashboard.service" + - template: + src: "templates/prometheus.yml" + dest: "/opt/prometheus/prometheus.yml" + - systemd: + state: restarted + daemon_reload: yes + name: "rabbitmq-dashboard" + +- name: Install Node exporter on Brokers to collect system metrics + hosts: rabbitmq + become: true + tasks: + - name: Add user node_exporter + user: + name: node_exporter + shell: /bin/false + system: true + create_home: no + + - name: Download and extract + unarchive: + src: https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz + dest: /tmp + remote_src: yes + + - name: Copy bin node_exporter to /usr/local/bin + copy: + src: /tmp/node_exporter-1.0.1.linux-amd64/node_exporter + remote_src: yes + dest: /usr/local/bin/ + owner: node_exporter + group: node_exporter + mode: u+x,g+x,o+x + + - name: Create service node_exporter.service + blockinfile: + path: /etc/systemd/system/node_exporter.service + block: | + [Unit] + Description=Prometheus Node Exporter + Wants=network-online.target + After=network-online.target + [Service] + User=node_exporter + Group=node_exporter + Type=simple + ExecStart=/usr/local/bin/node_exporter + [Install] + WantedBy=multi-user.target + create: true + + - name: systemctl daemon_reload + systemd: + daemon_reload: yes + + - name: Start and Enable node_exporter + service: + name: node_exporter + state: started + enabled: yes + + - name: Check whether port 9100 is available + wait_for: + port: 9100 + state: started + timeout: 5 diff --git a/driver-rabbitmq/deploy/deploy.yaml.bak b/driver-rabbitmq/deploy/deploy.yaml.bak new file mode 100644 index 00000000..5463e643 --- /dev/null +++ b/driver-rabbitmq/deploy/deploy.yaml.bak @@ -0,0 +1,285 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +- name: Add entries to /etc/hosts + hosts: all + connection: ssh + tasks: + - lineinfile: + dest: /etc/hosts + line: "{{ item.line }}" + state: present + with_items: + - { + line: "{{ hostvars[groups['rabbitmq'][0]].private_ip }} rabbitmaster", + } + - { + line: "{{ hostvars[groups['rabbitmq'][1]].private_ip }} rabbitslave1", + } + - { + line: "{{ hostvars[groups['rabbitmq'][2]].private_ip }} rabbitslave2", + } + +- name: Install RabbitMQ Cluster + hosts: rabbitmq + connection: ssh + tasks: + - set_fact: + erlangVersion: 23.0.2 + rabbitMqVersion: 3.8.5 + - name: Install RPM packages + yum: pkg={{ item }} state=latest + with_items: + - wget + - java-11 + - sysstat + - vim + - socat + - name: Install Erlang + yum: + name: https://github.com/rabbitmq/erlang-rpm/releases/download/v{{ erlangVersion }}/erlang-{{ erlangVersion }}-1.el7.x86_64.rpm + state: present + - name: Install Rabbitmq Server + yum: + name: https://dl.bintray.com/rabbitmq/all/rabbitmq-server/{{ rabbitMqVersion }}/rabbitmq-server-{{ rabbitMqVersion }}-1.el7.noarch.rpm + state: present + + - name: Change master hostname to rabbitmaster + hostname: + name: "rabbitmaster" + when: rabbitmq_master is defined + + - name: Change slave1 hostname to rabbitslave1 + hostname: + name: "rabbitslave1" + when: rabbitslave1 is defined + + - name: Change slave2 hostname to rabbitslave2 + hostname: + name: "rabbitslave2" + when: rabbitslave2 is defined + + - systemd: + state: started + daemon_reload: yes + name: "rabbitmq-server" + - name: Install web management + shell: rabbitmq-plugins enable rabbitmq_management + - systemd: + state: restarted + daemon_reload: yes + name: "rabbitmq-server" + - name: create admin/admin profile + shell: rabbitmqctl add_user admin admin + - name: set admin tag + shell: rabbitmqctl set_user_tags admin administrator + - name: set admin permission + shell: rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*" + - name: Clear servers' Erlang cookie + file: + path: /var/lib/rabbitmq/.erlang.cookie + state: absent + - name: Copy Erlang cookie + copy: src=erlang.cookie dest=/var/lib/rabbitmq/.erlang.cookie owner=rabbitmq group=rabbitmq mode=0400 + - systemd: + state: restarted + daemon_reload: yes + name: "rabbitmq-server" + - name: RabbitMQ status + shell: rabbitmqctl cluster_status + register: result + - debug: + msg: "{{ result.stdout }}" + - name: Rabbit cluster stop slaves + shell: rabbitmqctl stop_app + when: rabbitmq_slave is defined + - name: Rabbit cluster slaves join master + shell: rabbitmqctl join_cluster rabbit@rabbitmaster + when: rabbitmq_slave is defined + - name: Start RabbitMQ cluster slaves + shell: rabbitmqctl start_app + when: rabbitmq_slave is defined + - name: Show RabbitMQ cluster status + shell: rabbitmqctl cluster_status + - name: Create high availability pllicy + shell: rabbitmqctl set_policy ha-all "^" '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}' + when: rabbitmq_master is defined + - name: Show queue list + shell: rabbitmqctl list_queues + register: result_queue + - debug: msg='{{result_queue.stdout}}' + - name: Enable the prometheus scraper + become: true + shell: rabbitmq-plugins enable rabbitmq_prometheus + +- name: Rabbitmq benchmarking client setup + hosts: client + connection: ssh + become: true + tasks: + - name: Install RPM packages + yum: pkg={{ item }} state=latest + with_items: + - wget + - java-11 + - sysstat + - vim + - socat + - name: Copy benchmark code + unarchive: + src: ../../package/target/openmessaging-benchmark-0.0.1-SNAPSHOT-bin.tar.gz + dest: /opt + - shell: > + tuned-adm profile latency-performance && rm -rf /opt/benchmark && + mv /opt/openmessaging-benchmark-0.0.1-SNAPSHOT /opt/benchmark + - name: Configure benchmark JVM settings + lineinfile: + dest: /opt/benchmark/bin/benchmark + regexp: "^JVM_MEM=" + line: 'JVM_MEM="-Xms24G -Xmx24G -XX:+UseG1GC -XX:MaxGCPauseMillis=10 -XX:+ParallelRefProcEnabled -XX:+UnlockExperimentalVMOptions -XX:+AggressiveOpts -XX:+DoEscapeAnalysis -XX:ParallelGCThreads=32 -XX:ConcGCThreads=32 -XX:G1NewSizePercent=50 -XX:+DisableExplicitGC -XX:-ResizePLAB -XX:+PerfDisableSharedMem -XX:+AlwaysPreTouch -XX:-UseBiasedLocking"' + - template: + src: "templates/workers.yaml" + dest: "/opt/benchmark/workers.yaml" + - name: Install benchmark systemd service + template: + src: "templates/benchmark-worker.service" + dest: "/etc/systemd/system/benchmark-worker.service" + - systemd: + state: restarted + daemon_reload: yes + name: "benchmark-worker" + +- name: List host addresses + hosts: localhost + become: false + tasks: + - debug: + msg: "RabbitMQ brokers {{ item }}" + with_items: "{{ groups['rabbitmq'] }}" + - debug: + msg: "Benchmark client {{ item }}" + with_items: "{{ groups['client'] }}" + +# Setup the Prometheus/Grafana monitoring stack +- name: Prometheus installation + hosts: prometheus + connection: ssh + become: true + tasks: + - name: Add Extras Repo + shell: yum-config-manager --enable rhui-REGION-rhel-server-extras + - name: Install RPM packages + yum: pkg={{ item }} state=latest + with_items: + - docker + - set_fact: + prometheusVersion: "2.2.1" + - file: path=/opt/prometheus state=absent + - file: path=/opt/prometheus state=directory + - name: Download Prometheus Binary Package + unarchive: + src: "https://github.com/prometheus/prometheus/releases/download/v{{ prometheusVersion }}/prometheus-{{ prometheusVersion }}.linux-amd64.tar.gz" + remote_src: yes + dest: /opt/prometheus + extra_opts: ["--strip-components=1"] + - set_fact: + private_ip: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" + +- name: Prometheus setup + hosts: prometheus + connection: ssh + become: true + tasks: + - file: + path: "/opt/prometheus/{{ item }}" + state: directory + with_items: + - data + - template: + src: "templates/prometheus.service" + dest: "/etc/systemd/system/prometheus.service" + - template: + src: "templates/rabbitmq-dashboard.service" + dest: "/etc/systemd/system/rabbitmq-dashboard.service" + - template: + src: "templates/prometheus.yml" + dest: "/opt/prometheus/prometheus.yml" + - systemd: + state: restarted + daemon_reload: yes + name: "rabbitmq-dashboard" + +- name: Install Node exporter on Brokers to collect system metrics + hosts: rabbitmq + become: true + tasks: + - name: Add user node_exporter + user: + name: node_exporter + shell: /bin/false + system: true + create_home: no + + - name: Download and extract + unarchive: + src: https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz + dest: /tmp + remote_src: yes + + - name: Copy bin node_exporter to /usr/local/bin + copy: + src: /tmp/node_exporter-1.0.1.linux-amd64/node_exporter + remote_src: yes + dest: /usr/local/bin/ + owner: node_exporter + group: node_exporter + mode: u+x,g+x,o+x + + - name: Create service node_exporter.service + blockinfile: + path: /etc/systemd/system/node_exporter.service + block: | + [Unit] + Description=Prometheus Node Exporter + Wants=network-online.target + After=network-online.target + [Service] + User=node_exporter + Group=node_exporter + Type=simple + ExecStart=/usr/local/bin/node_exporter + [Install] + WantedBy=multi-user.target + create: true + + - name: systemctl daemon_reload + systemd: + daemon_reload: yes + + - name: Start and Enable node_exporter + service: + name: node_exporter + state: started + enabled: yes + + - name: Check whether port 9100 is available + wait_for: + port: 9100 + state: started + timeout: 5 diff --git a/driver-rabbitmq/deploy/group_vars/all.yaml b/driver-rabbitmq/deploy/group_vars/all.yaml new file mode 100644 index 00000000..225b1a8a --- /dev/null +++ b/driver-rabbitmq/deploy/group_vars/all.yaml @@ -0,0 +1,53 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +rabbitmq_erlang_cookie: EVLTHXJHWKZWBPPFHVPI +rabbitmq_use_longname: "true" + +rabbitmq_amqp_port: 5672 +rabbitmq_epmd_port: 4369 +rabbitmq_node_port: 15672 +rabbitmq_ulimit_open_files: 4096 + +rabbitmq_plugins: + - rabbitmq_management + - rabbitmq_management_agent + - rabbitmq_shovel + - rabbitmq_shovel_management + - rabbitmq_prometheus + +# TLS/SSL support +enable_tls: false +# if true, only tls is supported which means amqp default port 5672 is not open anymore +tls_only: false + +tls_verify: "verify_none" +tls_fail_if_no_peer_cert: false + +cacertfile: "" +cacertfile_dest: "/etc/rabbitmq/cacert.pem" + +certfile: "" +certfile_dest: "/etc/rabbitmq/cert.pem" + +keyfile: "" +keyfile_dest: "/etc/rabbitmq/key.pem" + +# Cluster configuration +rabbitmq_cluster_master: "{{ groups['rabbitmq'][0] }}" diff --git a/driver-rabbitmq/deploy/handlers/main.yml b/driver-rabbitmq/deploy/handlers/main.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/driver-rabbitmq/deploy/handlers/main.yml @@ -0,0 +1 @@ +--- diff --git a/driver-rabbitmq/deploy/provision-rabbitmq-aws.tf b/driver-rabbitmq/deploy/provision-rabbitmq-aws.tf index 61ef789d..022d241b 100644 --- a/driver-rabbitmq/deploy/provision-rabbitmq-aws.tf +++ b/driver-rabbitmq/deploy/provision-rabbitmq-aws.tf @@ -32,7 +32,7 @@ provider "aws" { resource "aws_vpc" "benchmark_vpc" { cidr_block = "10.0.0.0/16" - tags { + tags = { Name = "Benchmark-VPC" } } @@ -54,6 +54,7 @@ resource "aws_subnet" "benchmark_subnet" { vpc_id = "${aws_vpc.benchmark_vpc.id}" cidr_block = "10.0.0.0/24" map_public_ip_on_launch = true + availability_zone = "us-west-2b" } resource "aws_security_group" "benchmark_security_group" { @@ -76,6 +77,20 @@ resource "aws_security_group" "benchmark_security_group" { cidr_blocks = ["10.0.0.0/16"] } + # Prometheus/Dashboard access + ingress { + from_port = 9090 + to_port = 9090 + protocol = "tcp" + cidr_blocks = ["0.0.0.0/0"] + } + ingress { + from_port = 3000 + to_port = 3000 + protocol = "tcp" + cidr_blocks = ["0.0.0.0/0"] + } + # outbound internet access egress { from_port = 0 @@ -84,7 +99,15 @@ resource "aws_security_group" "benchmark_security_group" { cidr_blocks = ["0.0.0.0/0"] } - tags { + # RabbitMQ dashboard + ingress { + from_port = 15672 + to_port = 15672 + protocol = "tcp" + cidr_blocks = ["0.0.0.0/0"] + } + + tags = { Name = "Benchmark-Security-Group-RabbitMQ" } } @@ -102,7 +125,7 @@ resource "aws_instance" "rabbitmq" { vpc_security_group_ids = ["${aws_security_group.benchmark_security_group.id}"] count = "${var.num_instances["rabbitmq"]}" - tags { + tags = { Name = "rabbitmq-${count.index}" } } @@ -115,11 +138,38 @@ resource "aws_instance" "client" { vpc_security_group_ids = ["${aws_security_group.benchmark_security_group.id}"] count = "${var.num_instances["client"]}" - tags { + tags = { Name = "rabbitmq-client-${count.index}" } } -output "client_ssh_host" { - value = "${aws_instance.client.0.public_ip}" +resource "aws_instance" "prometheus" { + ami = "${var.ami}" + instance_type = "${var.instance_types["prometheus"]}" + key_name = "${aws_key_pair.auth.id}" + subnet_id = "${aws_subnet.benchmark_subnet.id}" + vpc_security_group_ids = ["${aws_security_group.benchmark_security_group.id}"] + count = "${var.num_instances["prometheus"]}" + + tags = { + Name = "prometheus-${count.index}" + } +} + +output "brokers" { + value = { + for instance in aws_instance.rabbitmq : + instance.public_ip => instance.private_ip + } +} + +output "clients" { + value = { + for instance in aws_instance.client : + instance.public_ip => instance.private_ip + } +} + +output "prometheus_host" { + value = "${aws_instance.prometheus.0.public_ip}" } diff --git a/driver-rabbitmq/deploy/templates/chrony.conf b/driver-rabbitmq/deploy/templates/chrony.conf new file mode 100644 index 00000000..0e68c66a --- /dev/null +++ b/driver-rabbitmq/deploy/templates/chrony.conf @@ -0,0 +1,54 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# Use public servers from the pool.ntp.org project. +# Please consider joining the pool (http://www.pool.ntp.org/join.html). +server 169.254.169.123 prefer iburst + +# Record the rate at which the system clock gains/losses time. +driftfile /var/lib/chrony/drift + +# Allow the system clock to be stepped in the first three updates +# if its offset is larger than 1 second. +makestep 1.0 3 + +# Enable kernel synchronization of the real-time clock (RTC). +rtcsync + +# Enable hardware timestamping on all interfaces that support it. +#hwtimestamp * + +# Increase the minimum number of selectable sources required to adjust +# the system clock. +#minsources 2 + +# Allow NTP client access from local network. +#allow 192.168.0.0/16 + +# Serve time even if not synchronized to a time source. +#local stratum 10 + +# Specify file containing keys for NTP authentication. +#keyfile /etc/chrony.keys + +# Specify directory for log files. +logdir /var/log/chrony + +# Select which information is logged. +#log measurements statistics tracking diff --git a/driver-rabbitmq/deploy/templates/etc/default/rabbitmq-server.j2 b/driver-rabbitmq/deploy/templates/etc/default/rabbitmq-server.j2 new file mode 100644 index 00000000..22542936 --- /dev/null +++ b/driver-rabbitmq/deploy/templates/etc/default/rabbitmq-server.j2 @@ -0,0 +1,4 @@ +ulimit -n {{ rabbitmq_ulimit_open_files }} + +ERL_EPMD_PORT={{ rabbitmq_epmd_port }} +RABBITMQ_NODE_PORT= {{ rabbitmq_node_port }} \ No newline at end of file diff --git a/driver-rabbitmq/deploy/templates/etc/erlang.cookie.j2 b/driver-rabbitmq/deploy/templates/etc/erlang.cookie.j2 new file mode 100644 index 00000000..27fce632 --- /dev/null +++ b/driver-rabbitmq/deploy/templates/etc/erlang.cookie.j2 @@ -0,0 +1 @@ +{{ rabbitmq_erlang_cookie }} \ No newline at end of file diff --git a/driver-rabbitmq/deploy/templates/etc/rabbitmq/rabbitmq-env.conf.j2 b/driver-rabbitmq/deploy/templates/etc/rabbitmq/rabbitmq-env.conf.j2 new file mode 100644 index 00000000..8caa67c1 --- /dev/null +++ b/driver-rabbitmq/deploy/templates/etc/rabbitmq/rabbitmq-env.conf.j2 @@ -0,0 +1,2 @@ +RABBITMQ_USE_LONGNAME={{ rabbitmq_use_longname }} +NODENAME=rabbit@{{ ansible_eth0.ipv4.address }} \ No newline at end of file diff --git a/driver-rabbitmq/deploy/templates/etc/rabbitmq/rabbitmq.config.j2 b/driver-rabbitmq/deploy/templates/etc/rabbitmq/rabbitmq.config.j2 new file mode 100644 index 00000000..73dbdb78 --- /dev/null +++ b/driver-rabbitmq/deploy/templates/etc/rabbitmq/rabbitmq.config.j2 @@ -0,0 +1,16 @@ +[ + {rabbit, [ +{% if tls_only %} + {tcp_listeners, []}, +{% endif %} +{% if enable_tls %} + {ssl_listeners, [{{ rabbitmq_tls_port }}]}, + {ssl_options, [{cacertfile,"{{ cacertfile_dest }}"}, + {certfile,"{{ certfile_dest }}"}, + {keyfile,"{{ keyfile_dest }}"}, + {verify,{{ tls_verify }}}, + {fail_if_no_peer_cert,{{tls_fail_if_no_peer_cert|lower}}}]}, +{% endif %} + {loopback_users, []} + ]} +]. \ No newline at end of file diff --git a/driver-rabbitmq/deploy/templates/prometheus.service b/driver-rabbitmq/deploy/templates/prometheus.service new file mode 100644 index 00000000..8f1effac --- /dev/null +++ b/driver-rabbitmq/deploy/templates/prometheus.service @@ -0,0 +1,13 @@ +[Unit] +Description=Prometheus server +After=network.target + +[Service] +WorkingDirectory=/opt/prometheus +ExecStart=/opt/prometheus/prometheus \ + --web.enable-admin-api \ + --storage.tsdb.path=/opt/prometheus/data \ + --config.file=/opt/prometheus/prometheus.yml + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/driver-rabbitmq/deploy/templates/prometheus.yml b/driver-rabbitmq/deploy/templates/prometheus.yml new file mode 100644 index 00000000..1426ef03 --- /dev/null +++ b/driver-rabbitmq/deploy/templates/prometheus.yml @@ -0,0 +1,66 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# my global config +global: + scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. + evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. + # scrape_timeout is set to the global default (10s). + +# Alertmanager configuration +alerting: + alertmanagers: + - static_configs: + - targets: + # - alertmanager:9093 + +# Load rules once and periodically evaluate them according to the global 'evaluation_interval'. +rule_files: + # - "first_rules.yml" + # - "second_rules.yml" + +# A scrape configuration containing exactly one endpoint to scrape: +# Here it's Prometheus itself. +scrape_configs: + # The job name is added as a label `job=` to any timeseries scraped from this config. + - job_name: 'rabbitmq' + + # metrics_path defaults to '/metrics' + # scheme defaults to 'http'. + + static_configs: + - targets: +{% for worker in groups['rabbitmq'] %} + - {{ hostvars[worker].private_ip }}:15692 +{% endfor %} + labels: + group: 'broker' + - targets: +{% for worker in groups['client'] %} + - {{ hostvars[worker].private_ip }}:8081 +{% endfor %} + labels: + group: 'client' + - targets: +{% for worker in groups['rabbitmq'] %} + - {{ hostvars[worker].private_ip }}:9100 +{% endfor %} + labels: + group: 'broker-os' + diff --git a/driver-rabbitmq/deploy/templates/rabbitmq-dashboard.service b/driver-rabbitmq/deploy/templates/rabbitmq-dashboard.service new file mode 100644 index 00000000..1e4b2691 --- /dev/null +++ b/driver-rabbitmq/deploy/templates/rabbitmq-dashboard.service @@ -0,0 +1,16 @@ +[Unit] +Description=RabbitMQ Dashboard +After=docker.service +Requires=docker.service +After=prometheus.service +Requires=prometheus.service + +[Service] +ExecStartPre=/usr/bin/docker pull aloknnikhil/omb-kafka-dashboard:latest +ExecStart=/usr/bin/docker run --restart=always --name=systemd_rabbitmq_dashboard -p3000:3000 -e PROMETHEUS_URL=http://{{ hostvars[groups['prometheus'][0]].private_ip }}:9090/ aloknnikhil/omb-kafka-dashboard:latest +ExecStop=/usr/bin/docker stop systemd_rabbitmq_dashboard +ExecStopPost=/usr/bin/docker rm -f systemd_rabbitmq_dashboard +ExecReload=/usr/bin/docker restart systemd_rabbitmq_dashboard + +[Install] +WantedBy=multi-user.target diff --git a/driver-rabbitmq/deploy/templates/rabbitmq-server.service b/driver-rabbitmq/deploy/templates/rabbitmq-server.service index b249eafb..174c9a0e 100644 --- a/driver-rabbitmq/deploy/templates/rabbitmq-server.service +++ b/driver-rabbitmq/deploy/templates/rabbitmq-server.service @@ -1,14 +1,42 @@ [Unit] Description=RabbitMQ broker -After=network.target +After=syslog.target network.target [Service] -ExecStart=/usr/lib/rabbitmq/bin/rabbitmq-server -WorkingDirectory=/var/lib/rabbitmq -RestartSec=1s +Type=notify +User=rabbitmq +Group=rabbitmq +UMask=0027 +NotifyAccess=all +TimeoutStartSec=600 + +# To override LimitNOFILE, create the following file: +# +# /etc/systemd/system/rabbitmq-server.service.d/limits.conf +# +# with the following content: +# +# [Service] +# LimitNOFILE=65536 + +LimitNOFILE=65536 + +# Note: systemd on CentOS 7 complains about in-line comments, +# so only append them here +# +# Restart: +# The following setting will automatically restart RabbitMQ +# in the event of a failure. systemd service restarts are not a +# replacement for service monitoring. Please see +# https://www.rabbitmq.com/monitoring.html +Environment="RABBITMQ_MNESIA_BASE=/mnt/data-1" Restart=on-failure -Type=simple -LimitNOFILE=300000 +RestartSec=10 +WorkingDirectory=/var/lib/rabbitmq +ExecStart=/usr/sbin/rabbitmq-server +ExecStop=/usr/sbin/rabbitmqctl shutdown +# See rabbitmq/rabbitmq-server-release#51 +SuccessExitStatus=69 [Install] WantedBy=multi-user.target \ No newline at end of file diff --git a/driver-rabbitmq/deploy/templates/rabbitmq.yaml b/driver-rabbitmq/deploy/templates/rabbitmq.yaml new file mode 100644 index 00000000..e5806545 --- /dev/null +++ b/driver-rabbitmq/deploy/templates/rabbitmq.yaml @@ -0,0 +1,33 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: RabbitMQ +driverClass: io.openmessaging.benchmark.driver.rabbitmq.RabbitMqBenchmarkDriver + +# RabbitMq client specific configurations +brokers: +{% for worker in groups['rabbitmq'] %} + - {{ hostvars[worker].private_ip }} +{% endfor %} +messagePersistence: true +queueType: CLASSIC # CLASSIC | QUORUM +exchangeType: DIRECT # DIRECT | TOPIC | FANOUT | HEADERS +topicPrefix: summit +exclusive: false # Turn off for HA/durability to take effect +singleNode: false # Turn on to use a single node for all queues/exchanges for all producers/consumers \ No newline at end of file diff --git a/driver-rabbitmq/deploy/terraform.tfvars b/driver-rabbitmq/deploy/terraform.tfvars index b680dbda..431c5021 100644 --- a/driver-rabbitmq/deploy/terraform.tfvars +++ b/driver-rabbitmq/deploy/terraform.tfvars @@ -3,11 +3,13 @@ region = "us-west-2" ami = "ami-9fa343e7" // RHEL-7.4 instance_types = { - "rabbitmq" = "i3.4xlarge" - "client" = "c4.8xlarge" + "rabbitmq" = "i3en.2xlarge" + "client" = "c5n.9xlarge" + "prometheus" = "t2.small" } num_instances = { "rabbitmq" = 3 - "client" = 1 + "client" = 4 + "prometheus" = 1 } \ No newline at end of file diff --git a/driver-rabbitmq/pom.xml b/driver-rabbitmq/pom.xml index 5685e0d4..49200760 100644 --- a/driver-rabbitmq/pom.xml +++ b/driver-rabbitmq/pom.xml @@ -21,7 +21,7 @@ 4.0.0 - + io.openmessaging.benchmark messaging-benchmark 0.0.1-SNAPSHOT @@ -38,7 +38,11 @@ com.rabbitmq amqp-client - 4.8.0 + 5.9.0 - - \ No newline at end of file + + com.google.guava + guava + + + diff --git a/driver-rabbitmq/src/main/java/io/openmessaging/benchmark/driver/rabbitmq/RabbitMqBenchmarkConsumer.java b/driver-rabbitmq/src/main/java/io/openmessaging/benchmark/driver/rabbitmq/RabbitMqBenchmarkConsumer.java index 95f8d32e..5117e9cb 100644 --- a/driver-rabbitmq/src/main/java/io/openmessaging/benchmark/driver/rabbitmq/RabbitMqBenchmarkConsumer.java +++ b/driver-rabbitmq/src/main/java/io/openmessaging/benchmark/driver/rabbitmq/RabbitMqBenchmarkConsumer.java @@ -38,13 +38,17 @@ public RabbitMqBenchmarkConsumer(Channel channel, String queueName, ConsumerCall this.channel = channel; this.callback = callback; + // channel.basicQos(300); channel.basicConsume(queueName, true, this); } @Override public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties, byte[] body) throws IOException { - callback.messageReceived(body, properties.getTimestamp().getTime()); + // Extract timestamp from the header + long nanoTime = (Long) properties.getHeaders().getOrDefault(RabbitMqBenchmarkDriver.TIMESTAMP_HEADER, + Long.MAX_VALUE); + callback.messageReceived(body, nanoTime); } @Override diff --git a/driver-rabbitmq/src/main/java/io/openmessaging/benchmark/driver/rabbitmq/RabbitMqBenchmarkDriver.java b/driver-rabbitmq/src/main/java/io/openmessaging/benchmark/driver/rabbitmq/RabbitMqBenchmarkDriver.java index ff39fc95..9d68bfc2 100644 --- a/driver-rabbitmq/src/main/java/io/openmessaging/benchmark/driver/rabbitmq/RabbitMqBenchmarkDriver.java +++ b/driver-rabbitmq/src/main/java/io/openmessaging/benchmark/driver/rabbitmq/RabbitMqBenchmarkDriver.java @@ -20,14 +20,16 @@ import java.io.File; import java.io.IOException; -import java.util.Collections; +import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ForkJoinPool; import java.util.concurrent.TimeoutException; +import java.util.concurrent.atomic.AtomicInteger; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; +import com.google.common.io.BaseEncoding; import com.rabbitmq.client.BuiltinExchangeType; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; @@ -37,87 +39,195 @@ import io.openmessaging.benchmark.driver.BenchmarkDriver; import io.openmessaging.benchmark.driver.BenchmarkProducer; import io.openmessaging.benchmark.driver.ConsumerCallback; +import io.openmessaging.benchmark.driver.rabbitmq.RabbitMqConfig.QueueType; + import org.apache.bookkeeper.stats.StatsLogger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +// Based on the KeyDistributor from the framework +// Generates routing keys to "channel" messages to specific queues +// Common to all producers for a workload +class RoutingKeyGenerator { + private AtomicInteger idx = new AtomicInteger(0); + private final int KEY_COUNT; + private final String[] keys; + + RoutingKeyGenerator(int partitions, int keyLength) { + KEY_COUNT = partitions; + keys = new String[KEY_COUNT]; + + // byte[] buffer = new byte[keyLength]; + // Random random = new Random(); + // for (int i = 0; i < keys.length; i++) { + // random.nextBytes(buffer); + // keys[i] = BaseEncoding.base64Url().omitPadding().encode(buffer); + // } + + // Repeatable routing keys - Partition Number as string + // When run on workers hosted on different physical machines/processes + // consumers need to listen to the same routing keys as producers + // TODO: Pass list of routing keys along w/ topics to consumer + for (int i = 0; i < partitions; i++) { + keys[i] = String.valueOf(i); + } + } -public class RabbitMqBenchmarkDriver implements BenchmarkDriver { + public String next() { + return keys[idx.getAndIncrement() % KEY_COUNT]; + } +} - private RabbitMqConfig config; +class ConnectionManager { + private List connectionFactory = new ArrayList<>(); + private List connections = new ArrayList<>(); + private AtomicInteger idx = new AtomicInteger(0); + + ConnectionManager(String[] brokers) { + for (String broker : brokers) { + ConnectionFactory factory = new ConnectionFactory(); + factory.setAutomaticRecoveryEnabled(true); + factory.setHost(broker); + factory.setUsername("admin"); + factory.setPassword("admin"); + connectionFactory.add(factory); + } + } - private Connection connection; - @Override - public void initialize(File configurationFile, StatsLogger statsLogger) throws IOException { - config = mapper.readValue(configurationFile, RabbitMqConfig.class); + // Round robins across all brokers + public Connection connectAny() throws IOException, TimeoutException { + Connection connection = connectionFactory.get(idx.getAndIncrement() % connectionFactory.size()).newConnection(); + connections.add(connection); - ConnectionFactory connectionFactory = new ConnectionFactory(); - connectionFactory.setAutomaticRecoveryEnabled(true); - connectionFactory.setHost(config.brokerAddress); - connectionFactory.setUsername("admin"); - connectionFactory.setPassword("admin"); + return connection; + } - try { - connection = connectionFactory.newConnection(); - } catch (TimeoutException e) { - e.printStackTrace(); + public Connection connect(int brokerIdx) throws IOException, TimeoutException, IllegalArgumentException { + if (brokerIdx > connectionFactory.size()) { + throw new IllegalArgumentException("Broker index > total no of brokers"); } + Connection connection = connectionFactory.get(brokerIdx).newConnection(); + connections.add(connection); + + return connection; } + public void close() { + connections.forEach(connection -> { + try { + connection.close(); + } catch (IOException e) { + e.printStackTrace(); + } + }); + } +} + +public class RabbitMqBenchmarkDriver implements BenchmarkDriver { + + private RabbitMqConfig config; + + private ConnectionManager connectionManager; + + private Map topicRoutingKeyGenerator = new HashMap<>(); + + private int routingKeyLength; + private static final Logger log = LoggerFactory.getLogger(RabbitMqBenchmarkDriver.class); + + public static final String TIMESTAMP_HEADER = "timestamp"; + + @Override + public void initialize(File configurationFile, StatsLogger statsLogger) throws IOException { + config = mapper.readValue(configurationFile, RabbitMqConfig.class); + connectionManager = new ConnectionManager(config.brokers); + routingKeyLength = config.routingKeyLength; + } @Override public void close() throws Exception { - connection.close(); + connectionManager.close(); } @Override public String getTopicNamePrefix() { - return "test-topic"; + return config.topicPrefix; } @Override public CompletableFuture createTopic(String topic, int partitions) { - if (partitions != 1) { - throw new IllegalArgumentException("Cannot create topic with partitions in RabbitMQ"); + CompletableFuture future = new CompletableFuture<>(); + + try { + Connection connection = config.singleNode ? connectionManager.connect(0) : connectionManager.connectAny(); + Channel channel = connection.createChannel(); + channel.exchangeDeclare(topic, config.exchangeType, config.messagePersistence); + } catch (IOException | TimeoutException | IllegalArgumentException e) { + e.printStackTrace(); + future.completeExceptionally(e); } - CompletableFuture future = new CompletableFuture<>(); - future.complete(null); + if (!topicRoutingKeyGenerator.containsKey(topic)) { + topicRoutingKeyGenerator.put(topic, new RoutingKeyGenerator(partitions, routingKeyLength)); + } + return CompletableFuture.completedFuture(null); + } - return future; + @Override + public CompletableFuture notifyTopicCreation(String topic, int partitions) { + if (!topicRoutingKeyGenerator.containsKey(topic)) { + topicRoutingKeyGenerator.put(topic, new RoutingKeyGenerator(partitions, routingKeyLength)); + } + return CompletableFuture.completedFuture(null); } @Override public CompletableFuture createProducer(String topic) { - Channel channel = null; + CompletableFuture future = new CompletableFuture<>(); + try { - channel = connection.createChannel(); - channel.exchangeDeclare(topic, BuiltinExchangeType.FANOUT); + Connection connection = config.singleNode ? connectionManager.connect(0) : connectionManager.connectAny(); + Channel channel = connection.createChannel(); channel.confirmSelect(); - } catch (IOException e) { + future = CompletableFuture.completedFuture(new RabbitMqBenchmarkProducer(channel, topic, + config.messagePersistence, topicRoutingKeyGenerator.get(topic))); + } catch (IOException | TimeoutException | IllegalArgumentException e) { e.printStackTrace(); + future.completeExceptionally(e); } - return CompletableFuture.completedFuture(new RabbitMqBenchmarkProducer(channel, topic, config.messagePersistence)); + return future; } @Override public CompletableFuture createConsumer(String topic, String subscriptionName, - ConsumerCallback consumerCallback) { + Optional partition, ConsumerCallback consumerCallback) { CompletableFuture future = new CompletableFuture<>(); ForkJoinPool.commonPool().execute(() -> { try { String queueName = topic + "-" + subscriptionName; - Channel channel = null; - try { - channel = connection.createChannel(); - channel.exchangeDeclare(topic, BuiltinExchangeType.FANOUT); - } catch (IOException e) { - e.printStackTrace(); + Connection connection = config.singleNode ? connectionManager.connect(0) + : connectionManager.connectAny(); + Channel channel = connection.createChannel(); + channel.exchangeDeclare(topic, config.exchangeType, config.messagePersistence); + + Map args = new HashMap<>(); + args.put("x-queue-type", config.queueType.toString().toLowerCase()); + String routingKey = ""; + if (config.exchangeType == BuiltinExchangeType.TOPIC) { + // Bind to all, if topic-based exchange + routingKey = "#"; + } else if (config.exchangeType == BuiltinExchangeType.DIRECT) { + if (partition.isPresent()) { + routingKey = partition.get().toString(); + } + queueName += ("-part-" + routingKey); } - // Create the queue - channel.queueDeclare(queueName, true, false, false, Collections.emptyMap()); - channel.queueBind(queueName, topic, ""); + channel.queueDeclare(queueName, config.messagePersistence, config.exclusive, false, args); + channel.queueBind(queueName, topic, routingKey); + log.info("Bound queue -> {} to exchange -> {}", queueName, topic); future.complete(new RabbitMqBenchmarkConsumer(channel, queueName, consumerCallback)); - } catch (IOException e) { + } catch (IOException | TimeoutException | IllegalArgumentException e) { future.completeExceptionally(e); } }); diff --git a/driver-rabbitmq/src/main/java/io/openmessaging/benchmark/driver/rabbitmq/RabbitMqBenchmarkProducer.java b/driver-rabbitmq/src/main/java/io/openmessaging/benchmark/driver/rabbitmq/RabbitMqBenchmarkProducer.java index 8781aa98..1a63d253 100644 --- a/driver-rabbitmq/src/main/java/io/openmessaging/benchmark/driver/rabbitmq/RabbitMqBenchmarkProducer.java +++ b/driver-rabbitmq/src/main/java/io/openmessaging/benchmark/driver/rabbitmq/RabbitMqBenchmarkProducer.java @@ -20,42 +20,45 @@ import com.rabbitmq.client.ConfirmListener; import java.io.IOException; -import java.util.Collections; -import java.util.Date; -import java.util.Iterator; -import java.util.Optional; -import java.util.SortedSet; -import java.util.TreeSet; +import java.time.Instant; +import java.util.*; import java.util.concurrent.CompletableFuture; import com.rabbitmq.client.AMQP.BasicProperties; +import com.rabbitmq.client.BuiltinExchangeType; import com.rabbitmq.client.Channel; import io.openmessaging.benchmark.driver.BenchmarkProducer; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; +import com.google.common.io.BaseEncoding; public class RabbitMqBenchmarkProducer implements BenchmarkProducer { private final Channel channel; private final String exchange; private final ConfirmListener listener; - /**To record msg and it's future structure.**/ + /** To record msg and it's future structure. **/ volatile SortedSet ackSet = Collections.synchronizedSortedSet(new TreeSet()); private final ConcurrentHashMap> futureConcurrentHashMap = new ConcurrentHashMap<>(); private boolean messagePersistence = false; + private RoutingKeyGenerator routingKeyGenerator; - public RabbitMqBenchmarkProducer(Channel channel, String exchange, boolean messagePersistence) { + public RabbitMqBenchmarkProducer(Channel channel, String exchange, boolean messagePersistence, + RoutingKeyGenerator routingKeyGenerator) throws IOException { this.channel = channel; this.exchange = exchange; this.messagePersistence = messagePersistence; + this.routingKeyGenerator = routingKeyGenerator; this.listener = new ConfirmListener() { @Override public void handleNack(long deliveryTag, boolean multiple) throws IOException { if (multiple) { SortedSet treeHeadSet = ackSet.headSet(deliveryTag + 1); - synchronized(ackSet) { - for(Iterator iterator = treeHeadSet.iterator(); iterator.hasNext();) { - long value = (long)iterator.next(); + synchronized (ackSet) { + for (Iterator iterator = treeHeadSet.iterator(); iterator.hasNext();) { + long value = (long) iterator.next(); iterator.remove(); CompletableFuture future = futureConcurrentHashMap.get(value); if (future != null) { @@ -75,12 +78,13 @@ public void handleNack(long deliveryTag, boolean multiple) throws IOException { ackSet.remove(deliveryTag); } } + @Override public void handleAck(long deliveryTag, boolean multiple) throws IOException { if (multiple) { SortedSet treeHeadSet = ackSet.headSet(deliveryTag + 1); - synchronized(ackSet) { - for(long value : treeHeadSet) { + synchronized (ackSet) { + for (long value : treeHeadSet) { CompletableFuture future = futureConcurrentHashMap.get(value); if (future != null) { future.complete(null); @@ -115,7 +119,10 @@ public void close() throws Exception { @Override public CompletableFuture sendAsync(Optional key, byte[] payload) { - BasicProperties.Builder builder = defaultProperties.builder().timestamp(new Date()); + Instant currentTime = Instant.now(); + long currentTimeNanos = TimeUnit.SECONDS.toNanos(currentTime.getEpochSecond()) + currentTime.getNano(); + BasicProperties.Builder builder = defaultProperties.builder() + .headers(Collections.singletonMap(RabbitMqBenchmarkDriver.TIMESTAMP_HEADER, currentTimeNanos)); if (messagePersistence) { builder.deliveryMode(2); } @@ -125,7 +132,7 @@ public CompletableFuture sendAsync(Optional key, byte[] payload) { ackSet.add(msgId); futureConcurrentHashMap.putIfAbsent(msgId, future); try { - channel.basicPublish(exchange, key.orElse(""), props, payload); + channel.basicPublish(exchange, routingKeyGenerator.next(), props, payload); } catch (Exception e) { future.completeExceptionally(e); } diff --git a/driver-rabbitmq/src/main/java/io/openmessaging/benchmark/driver/rabbitmq/RabbitMqConfig.java b/driver-rabbitmq/src/main/java/io/openmessaging/benchmark/driver/rabbitmq/RabbitMqConfig.java index d632ba15..533f2095 100644 --- a/driver-rabbitmq/src/main/java/io/openmessaging/benchmark/driver/rabbitmq/RabbitMqConfig.java +++ b/driver-rabbitmq/src/main/java/io/openmessaging/benchmark/driver/rabbitmq/RabbitMqConfig.java @@ -18,7 +18,19 @@ */ package io.openmessaging.benchmark.driver.rabbitmq; +import com.rabbitmq.client.BuiltinExchangeType; + public class RabbitMqConfig { - public String brokerAddress; + public enum QueueType { + CLASSIC, QUORUM + } + + public String[] brokers; public boolean messagePersistence = false; + public QueueType queueType = QueueType.CLASSIC; + public int routingKeyLength = 7; + public String topicPrefix = "test-topic"; + public BuiltinExchangeType exchangeType = BuiltinExchangeType.DIRECT; + public boolean exclusive = false; + public boolean singleNode = false; } diff --git a/driver-rocketmq/src/main/java/io/openmessaging/benchmark/driver/rocketmq/RocketMQBenchmarkDriver.java b/driver-rocketmq/src/main/java/io/openmessaging/benchmark/driver/rocketmq/RocketMQBenchmarkDriver.java index ccb1202e..e3b730b9 100644 --- a/driver-rocketmq/src/main/java/io/openmessaging/benchmark/driver/rocketmq/RocketMQBenchmarkDriver.java +++ b/driver-rocketmq/src/main/java/io/openmessaging/benchmark/driver/rocketmq/RocketMQBenchmarkDriver.java @@ -30,9 +30,12 @@ import io.openmessaging.benchmark.driver.rocketmq.client.RocketMQClientConfig; import java.io.File; import java.io.IOException; +import java.util.Optional; import java.util.Random; import java.util.Set; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.TimeUnit; + import org.apache.bookkeeper.stats.StatsLogger; import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer; import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus; @@ -50,6 +53,7 @@ public class RocketMQBenchmarkDriver implements BenchmarkDriver { private DefaultMQAdminExt rmqAdmin; private RocketMQClientConfig rmqClientConfig; DefaultMQProducer rmqProducer; + @Override public void initialize(final File configurationFile, final StatsLogger statsLogger) throws IOException { this.rmqClientConfig = readConfig(configurationFile); @@ -81,7 +85,8 @@ public CompletableFuture createTopic(final String topic, final int partiti topicConfig.setTopicName(topic); try { - Set brokerList = CommandUtil.fetchMasterAddrByClusterName(this.rmqAdmin, this.rmqClientConfig.clusterName); + Set brokerList = CommandUtil.fetchMasterAddrByClusterName(this.rmqAdmin, + this.rmqClientConfig.clusterName); topicConfig.setReadQueueNums(Math.max(1, partitions / brokerList.size())); topicConfig.setWriteQueueNums(Math.max(1, partitions / brokerList.size())); @@ -89,24 +94,31 @@ public CompletableFuture createTopic(final String topic, final int partiti this.rmqAdmin.createAndUpdateTopicConfig(brokerAddr, topicConfig); } } catch (Exception e) { - throw new RuntimeException(String.format("Failed to create topic [%s] to cluster [%s]", topic, this.rmqClientConfig.clusterName), e); + throw new RuntimeException(String.format("Failed to create topic [%s] to cluster [%s]", topic, + this.rmqClientConfig.clusterName), e); } }); } + @Override + public CompletableFuture notifyTopicCreation(String topic, int partitions) { + // No-op + return CompletableFuture.completedFuture(null); + } + @Override public CompletableFuture createProducer(final String topic) { if (rmqProducer == null) { rmqProducer = new DefaultMQProducer("ProducerGroup_" + getRandomString()); rmqProducer.setNamesrvAddr(this.rmqClientConfig.namesrvAddr); rmqProducer.setInstanceName("ProducerInstance" + getRandomString()); - if(null != this.rmqClientConfig.vipChannelEnabled){ + if (null != this.rmqClientConfig.vipChannelEnabled) { rmqProducer.setVipChannelEnabled(this.rmqClientConfig.vipChannelEnabled); } - if(null != this.rmqClientConfig.maxMessageSize){ + if (null != this.rmqClientConfig.maxMessageSize) { rmqProducer.setMaxMessageSize(this.rmqClientConfig.maxMessageSize); } - if(null != this.rmqClientConfig.compressMsgBodyOverHowmuch){ + if (null != this.rmqClientConfig.compressMsgBodyOverHowmuch) { rmqProducer.setCompressMsgBodyOverHowmuch(this.rmqClientConfig.compressMsgBodyOverHowmuch); } try { @@ -121,18 +133,19 @@ public CompletableFuture createProducer(final String topic) { @Override public CompletableFuture createConsumer(final String topic, final String subscriptionName, - final ConsumerCallback consumerCallback) { + Optional partition, final ConsumerCallback consumerCallback) { DefaultMQPushConsumer rmqConsumer = new DefaultMQPushConsumer(subscriptionName); rmqConsumer.setNamesrvAddr(this.rmqClientConfig.namesrvAddr); rmqConsumer.setInstanceName("ConsumerInstance" + getRandomString()); - if(null != this.rmqClientConfig.vipChannelEnabled){ + if (null != this.rmqClientConfig.vipChannelEnabled) { rmqConsumer.setVipChannelEnabled(this.rmqClientConfig.vipChannelEnabled); } try { rmqConsumer.subscribe(topic, "*"); rmqConsumer.registerMessageListener((MessageListenerConcurrently) (msgs, context) -> { for (MessageExt message : msgs) { - consumerCallback.messageReceived(message.getBody(), message.getBornTimestamp()); + consumerCallback.messageReceived(message.getBody(), + TimeUnit.MILLISECONDS.toNanos(message.getBornTimestamp())); } return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; }); @@ -153,7 +166,7 @@ public void close() throws Exception { } private static final ObjectMapper mapper = new ObjectMapper(new YAMLFactory()) - .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); private static RocketMQClientConfig readConfig(File configurationFile) throws IOException { return mapper.readValue(configurationFile, RocketMQClientConfig.class); diff --git a/package/src/assemble/bin.xml b/package/src/assemble/bin.xml index 1f9a8f89..d7843ad9 100644 --- a/package/src/assemble/bin.xml +++ b/package/src/assemble/bin.xml @@ -58,6 +58,7 @@ **/terraform.tfstate **/terraform.tfstate.backup **/*.retry + **/results/** diff --git a/package/src/assemble/src.xml b/package/src/assemble/src.xml index 74bd0baf..f516a874 100644 --- a/package/src/assemble/src.xml +++ b/package/src/assemble/src.xml @@ -55,6 +55,7 @@ **/terraform.tfstate.backup **/*.retry **/.settings/** + **/results/** diff --git a/pom.xml b/pom.xml index 6c07367d..abdae281 100644 --- a/pom.xml +++ b/pom.xml @@ -87,6 +87,8 @@ payload/** **/*.pyc **/.pydevproject + **/*.yml + **/*.j2 SCRIPT_STYLE From 85542df805f1685e9e8e7cea3b32eb17254c6329 Mon Sep 17 00:00:00 2001 From: Alok Nikhil Date: Thu, 20 Aug 2020 10:09:01 -0700 Subject: [PATCH 02/47] Pulsar: Remove tiered deployment from main branch --- driver-pulsar/deploy/deploy_tiered.yaml | 372 ------------------------ 1 file changed, 372 deletions(-) delete mode 100644 driver-pulsar/deploy/deploy_tiered.yaml diff --git a/driver-pulsar/deploy/deploy_tiered.yaml b/driver-pulsar/deploy/deploy_tiered.yaml deleted file mode 100644 index 031b51d4..00000000 --- a/driver-pulsar/deploy/deploy_tiered.yaml +++ /dev/null @@ -1,372 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -- name: Format and mount disks for BookKeeper hosts - hosts: bookkeeper - connection: ssh - become: true - tasks: - - name: Format disks - filesystem: - fstype: xfs - dev: "{{ item }}" - with_items: - - "/dev/nvme1n1" - - "/dev/nvme2n1" - - name: Mount disks - mount: - path: "{{ item.path }}" - src: "{{ item.src }}" - fstype: xfs - opts: defaults,noatime,nodiscard - state: mounted - with_items: - - { path: "/mnt/journal", src: "/dev/nvme1n1" } - - { path: "/mnt/storage", src: "/dev/nvme2n1" } - -- name: Pulsar installation - hosts: all - connection: ssh - become: true - tasks: - - name: Set performance profile - command: tuned-adm profile latency-performance - - name: Install RPM packages - yum: pkg={{ item }} state=latest - with_items: - - wget - - java-11 - - sysstat - - vim - - chrony - - set_fact: - zookeeperServers: "{{ groups['zookeeper'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^(.*)$', '\\1:2181') | join(',') }}" - serviceUrl: "pulsar://{{ hostvars[groups['pulsar'][0]].private_ip }}:6650/" - httpUrl: "http://{{ hostvars[groups['pulsar'][0]].private_ip }}:8080/" - pulsarVersion: "2.6.0" - - file: path=/opt/pulsar state=absent - - file: path=/opt/pulsar state=directory - - name: Download Pulsar binary package - unarchive: - src: "https://archive.apache.org/dist/pulsar/pulsar-{{ pulsarVersion }}/apache-pulsar-{{ pulsarVersion }}-bin.tar.gz" - remote_src: yes - dest: /opt/pulsar - extra_opts: ["--strip-components=1"] - - set_fact: - private_ip: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" - max_heap_memory: "12g" - max_direct_memory: "12g" - - template: - src: "templates/pulsar_env.sh" - dest: "/opt/pulsar/conf/pulsar_env.sh" - - template: - src: "templates/bkenv.sh" - dest: "/opt/pulsar/conf/bkenv.sh" - - name: Change locale to en_US.utf-8 - shell: | - echo 'LANG=en_US.utf-8 - LC_ALL=en_US.utf-8' > /etc/environment - -- name: ZooKeeper setup - hosts: zookeeper - connection: ssh - become: true - tasks: - - set_fact: - zid: "{{ groups['zookeeper'].index(inventory_hostname) }}" - max_heap_memory: "512m" - max_direct_memory: "512m" - - file: - path: "/opt/pulsar/{{ item }}" - state: directory - with_items: - - data/zookeeper - - template: - src: "templates/pulsar_env.sh" - dest: "/opt/pulsar/conf/pulsar_env.sh" - - template: - src: "templates/bkenv.sh" - dest: "/opt/pulsar/conf/bkenv.sh" - - template: - src: "templates/zoo.cfg" - dest: "/opt/pulsar/conf/zookeeper.conf" - - template: - src: templates/myid - dest: "/opt/pulsar/data/zookeeper/myid" - - template: - src: "templates/zookeeper.service" - dest: "/etc/systemd/system/zookeeper.service" - - systemd: - state: restarted - daemon_reload: yes - name: "zookeeper" - - command: > - bin/pulsar initialize-cluster-metadata --cluster local - --zookeeper localhost:2181 - --configuration-store localhost:2181 - --web-service-url {{ httpUrl }} - --broker-service-url {{ serviceUrl }} - args: - chdir: /opt/pulsar - when: groups['zookeeper'][0] == inventory_hostname - -- name: BookKeeper setup - hosts: bookkeeper - connection: ssh - become: true - tasks: - - template: - src: "templates/bookkeeper.conf" - dest: "/opt/pulsar/conf/bookkeeper.conf" - - name: Install bookkeeper systemd service - template: - src: "templates/bookkeeper.service" - dest: "/etc/systemd/system/bookkeeper.service" - - systemd: - state: restarted - daemon_reload: yes - name: "bookkeeper" - -- name: Pulsar configuration and systemd setup - hosts: pulsar - connection: ssh - become: true - tasks: - - name: Set up broker - template: - src: "templates/broker.conf" - dest: "/opt/pulsar/conf/broker.conf" - - template: - src: "templates/pulsar.service" - dest: "/etc/systemd/system/pulsar.service" - - systemd: - state: restarted - daemon_reload: yes - name: "pulsar" - -- name: Chrony setup - hosts: client - connection: ssh - become: true - tasks: - - name: Set up chronyd - template: - src: "templates/chrony.conf" - dest: "/etc/chrony.conf" - - systemd: - state: restarted - daemon_reload: yes - name: "chronyd" - -- name: Get Maven version - hosts: localhost - become: false - tasks: - - shell: > - cat ../../pom.xml | xmllint --format - \ - | sed "s/xmlns=\".*\"//g" | xmllint --stream --pattern /project/version --debug - \ - | grep -A 2 "matches pattern" | grep text | sed "s/.* [0-9] //g" - register: maven_version - - set_fact: - benchmark_version: "{{ maven_version }}" - -- name: Pulsar benchmarking client setup - hosts: client - connection: ssh - become: true - tasks: - - name: Set up client config - template: - src: "templates/client.conf" - dest: "/opt/pulsar/conf/client.conf" - - file: path=/opt/benchmark state=absent - - name: Copy benchmark code - unarchive: - src: ../../package/target/openmessaging-benchmark-0.0.1-SNAPSHOT-bin.tar.gz - dest: /opt - - shell: mv /opt/openmessaging-benchmark-0.0.1-SNAPSHOT /opt/benchmark - - - template: - src: "templates/workers.yaml" - dest: "/opt/benchmark/workers.yaml" - - name: Get list of driver config files - raw: ls -1 /opt/benchmark/driver-pulsar/*.yaml - register: drivers_list - - - name: Configure service URL - lineinfile: - dest: "{{ item }}" - regexp: '^ serviceUrl\: ' - line: " serviceUrl: {{ serviceUrl }}" - with_items: "{{ drivers_list.stdout_lines }}" - - name: Configure http URL - lineinfile: - dest: "{{ item }}" - regexp: "^ httpUrl: " - line: " httpUrl: {{ httpUrl }}" - with_items: "{{ drivers_list.stdout_lines }}" - - name: Configure memory - lineinfile: - dest: /opt/benchmark/bin/benchmark-worker - regexp: "^JVM_MEM=" - line: 'JVM_MEM="-Xms6G -Xmx6G -XX:+UseG1GC -XX:MaxGCPauseMillis=10 -XX:+ParallelRefProcEnabled -XX:+UnlockExperimentalVMOptions -XX:+AggressiveOpts -XX:+DoEscapeAnalysis -XX:ParallelGCThreads=32 -XX:ConcGCThreads=32 -XX:G1NewSizePercent=50 -XX:+DisableExplicitGC -XX:-ResizePLAB -XX:+PerfDisableSharedMem -XX:+AlwaysPreTouch -XX:-UseBiasedLocking"' - - name: Configure memory - lineinfile: - dest: /opt/benchmark/bin/benchmark - regexp: "^JVM_MEM=" - line: 'JVM_MEM="-Xmx4G"' - - name: Install benchmark systemd service - template: - src: "templates/benchmark-worker.service" - dest: "/etc/systemd/system/benchmark-worker.service" - - systemd: - state: restarted - daemon_reload: yes - name: "benchmark-worker" - -- name: Prometheus installation - hosts: prometheus - connection: ssh - become: true - tasks: - - name: Add Extras Repo - shell: yum-config-manager --enable rhui-REGION-rhel-server-extras - - name: Install RPM packages - yum: pkg={{ item }} state=latest - with_items: - - docker - - set_fact: - prometheusVersion: "2.2.1" - - file: path=/opt/prometheus state=absent - - file: path=/opt/prometheus state=directory - - name: Download Prometheus Binary Package - unarchive: - src: "https://github.com/prometheus/prometheus/releases/download/v{{ prometheusVersion }}/prometheus-{{ prometheusVersion }}.linux-amd64.tar.gz" - remote_src: yes - dest: /opt/prometheus - extra_opts: ["--strip-components=1"] - - set_fact: - private_ip: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" - -- name: Prometheus setup - hosts: prometheus - connection: ssh - become: true - tasks: - - file: - path: "/opt/prometheus/{{ item }}" - state: directory - with_items: - - data - - template: - src: "templates/prometheus.service" - dest: "/etc/systemd/system/prometheus.service" - - template: - src: "templates/pulsar-dashboard.service" - dest: "/etc/systemd/system/pulsar-dashboard.service" - - template: - src: "templates/prometheus_tiered.yml" - dest: "/opt/prometheus/prometheus.yml" - - systemd: - state: restarted - daemon_reload: yes - name: "prometheus" - - systemd: - state: restarted - daemon_reload: yes - name: "pulsar-dashboard" - -- name: List host addresses - hosts: localhost - become: false - tasks: - - debug: - msg: "Zookeeper servers {{ item }}" - with_items: "{{ groups['zookeeper'] }}" - - debug: - msg: "Pulsar servers {{ item }}" - with_items: "{{ groups['pulsar'] }}" - - debug: - msg: "Bookkeeper servers {{ item }}" - with_items: "{{ groups['bookkeeper'] }}" - - debug: - msg: "Benchmark clients {{ item }}" - with_items: "{{ groups['client'] }}" - - debug: - msg: "Prometheus servers {{ item }}" - with_items: "{{ groups['prometheus'] }}" - -- name: Install Node exporter on Brokers/Bookies to collect system metrics - hosts: pulsar,bookkeeper - become: true - tasks: - - name: Add user node_exporter - user: - name: node_exporter - shell: /bin/false - system: true - create_home: no - - - name: Download and extract - unarchive: - src: https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz - dest: /tmp - remote_src: yes - - - name: Copy bin node_exporter to /usr/local/bin - copy: - src: /tmp/node_exporter-1.0.1.linux-amd64/node_exporter - remote_src: yes - dest: /usr/local/bin/ - owner: node_exporter - group: node_exporter - mode: u+x,g+x,o+x - - - name: Create service node_exporter.service - blockinfile: - path: /etc/systemd/system/node_exporter.service - block: | - [Unit] - Description=Prometheus Node Exporter - Wants=network-online.target - After=network-online.target - [Service] - User=node_exporter - Group=node_exporter - Type=simple - ExecStart=/usr/local/bin/node_exporter - [Install] - WantedBy=multi-user.target - create: true - - - name: systemctl daemon_reload - systemd: - daemon_reload: yes - - - name: Start and Enable node_exporter - service: - name: node_exporter - state: started - enabled: yes - - - name: Check whether port 9100 is available - wait_for: - port: 9100 - state: started - timeout: 5 From a359449d53836fbd8c10a6a771cf55f427daf52e Mon Sep 17 00:00:00 2001 From: Vinoth Chandar Date: Fri, 21 Aug 2020 15:13:32 -0700 Subject: [PATCH 03/47] Removing the deploy.yaml file to avoid confusion, as we only used the deploy_with_stats.yaml file for pulsar runs --- driver-pulsar/deploy/deploy.yaml | 251 ------------------------------- 1 file changed, 251 deletions(-) delete mode 100644 driver-pulsar/deploy/deploy.yaml diff --git a/driver-pulsar/deploy/deploy.yaml b/driver-pulsar/deploy/deploy.yaml deleted file mode 100644 index c5a5e722..00000000 --- a/driver-pulsar/deploy/deploy.yaml +++ /dev/null @@ -1,251 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -- name: Format and mount disks for Pulsar/BookKeeper hosts - hosts: pulsar - connection: ssh - become: true - tasks: - - name: Format disks - filesystem: - fstype: xfs - dev: '{{ item }}' - with_items: - - '/dev/nvme0n1' - - '/dev/nvme1n1' - - name: Mount disks - mount: - path: "{{ item.path }}" - src: "{{ item.src }}" - fstype: xfs - opts: defaults,noatime,nodiscard - state: mounted - with_items: - - { path: "/mnt/journal", src: "/dev/nvme0n1" } - - { path: "/mnt/storage", src: "/dev/nvme1n1" } - -- name: Pulsar installation - hosts: all - connection: ssh - become: true - tasks: - - name: Set performance profile - command: tuned-adm profile latency-performance - - name: Install RPM packages - yum: pkg={{ item }} state=latest - with_items: - - wget - - java-11 - - sysstat - - vim - - screen - - chrony - - set_fact: - zookeeperServers: "{{ groups['zookeeper'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^(.*)$', '\\1:2181') | join(',') }}" - serviceUrl: "pulsar://{{ hostvars[groups['pulsar'][0]].private_ip }}:6650/" - httpUrl: "http://{{ hostvars[groups['pulsar'][0]].private_ip }}:8080/" - pulsarVersion: "2.6.0" - - file: path=/opt/pulsar state=absent - - file: path=/opt/pulsar state=directory - - name: Download Pulsar binary package - unarchive: - src: "https://archive.apache.org/dist/pulsar/pulsar-{{ pulsarVersion }}/apache-pulsar-{{ pulsarVersion }}-bin.tar.gz" - remote_src: yes - dest: /opt/pulsar - extra_opts: ["--strip-components=1"] - - set_fact: - private_ip: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" - max_heap_memory: "6g" - max_direct_memory: "6g" - - template: - src: "templates/pulsar_env.sh" - dest: "/opt/pulsar/conf/pulsar_env.sh" - - name: Change locale to en_US.utf-8 - shell: | - echo 'LANG=en_US.utf-8 - LC_ALL=en_US.utf-8' > /etc/environment - -- name: ZooKeeper setup - hosts: zookeeper - connection: ssh - become: true - tasks: - - set_fact: - zid: "{{ groups['zookeeper'].index(inventory_hostname) }}" - max_heap_memory: "512m" - max_direct_memory: "512m" - - file: - path: "/opt/pulsar/{{ item }}" - state: directory - with_items: - - data/zookeeper - - template: - src: "templates/pulsar_env.sh" - dest: "/opt/pulsar/conf/pulsar_env.sh" - - template: - src: "templates/zoo.cfg" - dest: "/opt/pulsar/conf/zookeeper.conf" - - template: - src: templates/myid - dest: "/opt/pulsar/data/zookeeper/myid" - - template: - src: "templates/zookeeper.service" - dest: "/etc/systemd/system/zookeeper.service" - - systemd: - state: restarted - daemon_reload: yes - name: "zookeeper" - - command: > - bin/pulsar initialize-cluster-metadata --cluster local - --zookeeper localhost:2181 - --configuration-store localhost:2181 - --web-service-url {{ httpUrl }} - --broker-service-url {{ serviceUrl }} - args: - chdir: /opt/pulsar - when: groups['zookeeper'][0] == inventory_hostname - -- name: BookKeeper setup - hosts: pulsar - connection: ssh - become: true - tasks: - - template: - src: "templates/bookkeeper.conf" - dest: "/opt/pulsar/conf/bookkeeper.conf" - - name: Install bookkeeper systemd service - template: - src: "templates/bookkeeper.service" - dest: "/etc/systemd/system/bookkeeper.service" - - systemd: - state: restarted - daemon_reload: yes - name: "bookkeeper" - -- name: Pulsar configuration and systemd setup - hosts: pulsar - connection: ssh - become: true - tasks: - - name: Set up broker - template: - src: "templates/broker.conf" - dest: "/opt/pulsar/conf/broker.conf" - - template: - src: "templates/pulsar.service" - dest: "/etc/systemd/system/pulsar.service" - - systemd: - state: restarted - daemon_reload: yes - name: "pulsar" - -- name: Chrony setup - hosts: client - connection: ssh - become: true - tasks: - - name: Set up chronyd - template: - src: "templates/chrony.conf" - dest: "/etc/chrony.conf" - - systemd: - state: restarted - daemon_reload: yes - name: "chronyd" - -- name: Get Maven version - hosts: localhost - become: false - tasks: - - shell: > - cat ../../pom.xml | xmllint --format - \ - | sed "s/xmlns=\".*\"//g" | xmllint --stream --pattern /project/version --debug - \ - | grep -A 2 "matches pattern" | grep text | sed "s/.* [0-9] //g" - register: maven_version - - set_fact: - benchmark_version: "{{ maven_version.stdout }}" - -- name: Pulsar benchmarking client setup - hosts: client - connection: ssh - become: true - tasks: - - name: Set up client config - template: - src: "templates/client.conf" - dest: "/opt/pulsar/conf/client.conf" - - file: path=/opt/benchmark state=absent - - name: Copy benchmark code - unarchive: - src: ../../package/target/openmessaging-benchmark-0.0.1-SNAPSHOT-bin.tar.gz - dest: /opt - - shell: mv /opt/openmessaging-benchmark-0.0.1-SNAPSHOT /opt/benchmark - - - template: - src: "templates/workers.yaml" - dest: "/opt/benchmark/workers.yaml" - - name: Get list of driver config files - raw: ls -1 /opt/benchmark/driver-pulsar/*.yaml - register: drivers_list - - - name: Configure service URL - lineinfile: - dest: '{{ item }}' - regexp: '^ serviceUrl\: ' - line: ' serviceUrl: {{ serviceUrl }}' - with_items: '{{ drivers_list.stdout_lines }}' - - name: Configure http URL - lineinfile: - dest: '{{ item }}' - regexp: '^ httpUrl: ' - line: ' httpUrl: {{ httpUrl }}' - with_items: '{{ drivers_list.stdout_lines }}' - - name: Configure memory - lineinfile: - dest: /opt/benchmark/bin/benchmark-worker - regexp: '^JVM_MEM=' - line: 'JVM_MEM="-Xms6G -Xmx6G -XX:+UseG1GC -XX:MaxGCPauseMillis=10 -XX:+ParallelRefProcEnabled -XX:+UnlockExperimentalVMOptions -XX:+AggressiveOpts -XX:+DoEscapeAnalysis -XX:ParallelGCThreads=32 -XX:ConcGCThreads=32 -XX:G1NewSizePercent=50 -XX:+DisableExplicitGC -XX:-ResizePLAB -XX:+PerfDisableSharedMem -XX:+AlwaysPreTouch -XX:-UseBiasedLocking"' - - name: Configure memory - lineinfile: - dest: /opt/benchmark/bin/benchmark - regexp: '^JVM_MEM=' - line: 'JVM_MEM="-Xmx4G"' - - name: Install benchmark systemd service - template: - src: "templates/benchmark-worker.service" - dest: "/etc/systemd/system/benchmark-worker.service" - - systemd: - state: restarted - daemon_reload: yes - name: "benchmark-worker" - - -- name: List host addresses - hosts: localhost - become: false - tasks: - - debug: - msg: "Zookeeper servers {{ item }}" - with_items: "{{ groups['zookeeper'] }}" - - debug: - msg: "Pulsar/BookKeeper servers {{ item }}" - with_items: "{{ groups['pulsar'] }}" - - debug: - msg: "Benchmark clients {{ item }}" - with_items: "{{ groups['client'] }}" From 6d9e0f0b7320b062399bc70331377f0b037081bd Mon Sep 17 00:00:00 2001 From: Alok Nikhil Date: Tue, 25 Aug 2020 08:28:17 -0700 Subject: [PATCH 04/47] Restore missing benchmark script --- bin/benchmark | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100755 bin/benchmark diff --git a/bin/benchmark b/bin/benchmark new file mode 100755 index 00000000..2a5029f2 --- /dev/null +++ b/bin/benchmark @@ -0,0 +1,30 @@ +#!/bin/bash +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +if [ -d "./lib" ]; then + CLASSPATH=$CLASSPATH:lib/* +else + CLASSPATH=benchmark-framework/target/classes:`cat benchmark-framework/target/classpath.txt` +fi + +JVM_MEM="-Xms4G -Xmx4G -XX:+UseG1GC" +JVM_GC_LOG=" -XX:+PrintGCDetails -XX:+PrintGCApplicationStoppedTime -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=64m -Xloggc:/dev/shm/benchmark-client-gc_%p.log" + +java -server -cp $CLASSPATH $JVM_MEM io.openmessaging.benchmark.Benchmark $* From 6d854555a9f8ef474e1263a67263af5165a0734b Mon Sep 17 00:00:00 2001 From: Roko Kruze Date: Thu, 8 Oct 2020 17:51:58 -0700 Subject: [PATCH 05/47] Initial version of redpanda --- driver-redpanda/README.md | 3 + driver-redpanda/deploy/ansible.cfg | 8 + driver-redpanda/deploy/deploy.yaml | 593 + driver-redpanda/deploy/monitoring/Dockerfile | 54 + driver-redpanda/deploy/monitoring/README.md | 3 + .../deploy/monitoring/dashboards.yaml | 45 + .../deploy/monitoring/dashboards/jvm.json | 2557 +++ .../deploy/monitoring/dashboards/perf.json | 878 + .../monitoring/dashboards/prometheus.json | 719 + .../monitoring/dashboards/pulsar_perf.json | 1036 ++ .../monitoring/dashboards/rabbit_perf.json | 892 + .../deploy/monitoring/dashboards/system.json | 14051 ++++++++++++++++ .../monitoring/dashboards/zookeeper.json | 953 ++ driver-redpanda/deploy/monitoring/grafana.ini | 39 + .../deploy/monitoring/jmx_exporter/client.yml | 22 + .../jmx_prometheus_javaagent-0.13.0.jar | Bin 0 -> 374371 bytes .../monitoring/jmx_exporter/metrics.yml | 122 + .../monitoring/jmx_exporter/zookeeper.yml | 123 + driver-redpanda/deploy/monitoring/start.sh | 39 + .../deploy/provision-redpanda-aws.tf | 195 + driver-redpanda/deploy/requirements.yaml | 6 + .../deploy/templates/benchmark-worker.service | 14 + driver-redpanda/deploy/templates/chrony.conf | 54 + .../deploy/templates/kafka-dashboard.service | 16 + .../deploy/templates/kafka.service | 19 + driver-redpanda/deploy/templates/myid | 1 + .../deploy/templates/prometheus.service | 13 + .../deploy/templates/prometheus.yml | 83 + .../deploy/templates/server.properties | 35 + driver-redpanda/deploy/templates/workers.yaml | 24 + driver-redpanda/deploy/terraform.tfvars | 16 + driver-redpanda/kafka-0.yaml | 40 + driver-redpanda/kafka-1.yaml | 40 + driver-redpanda/kafka-all.yaml | 41 + driver-redpanda/kafka-exactly-once.yaml | 43 + driver-redpanda/kafka-group-all.yaml | 42 + driver-redpanda/kafka-sync-0.yaml | 44 + driver-redpanda/kafka-sync-1.yaml | 44 + driver-redpanda/kafka-sync-all.yaml | 44 + driver-redpanda/kafka-sync-group-all-1ms.yaml | 41 + driver-redpanda/kafka-sync-group-all.yaml | 42 + driver-redpanda/pom.xml | 70 + .../benchmark/driver/kafka/Config.java | 33 + .../driver/kafka/KafkaBenchmarkConsumer.java | 84 + .../driver/kafka/KafkaBenchmarkDriver.java | 183 + .../driver/kafka/KafkaBenchmarkProducer.java | 61 + 46 files changed, 23465 insertions(+) create mode 100644 driver-redpanda/README.md create mode 100644 driver-redpanda/deploy/ansible.cfg create mode 100644 driver-redpanda/deploy/deploy.yaml create mode 100644 driver-redpanda/deploy/monitoring/Dockerfile create mode 100644 driver-redpanda/deploy/monitoring/README.md create mode 100644 driver-redpanda/deploy/monitoring/dashboards.yaml create mode 100644 driver-redpanda/deploy/monitoring/dashboards/jvm.json create mode 100644 driver-redpanda/deploy/monitoring/dashboards/perf.json create mode 100644 driver-redpanda/deploy/monitoring/dashboards/prometheus.json create mode 100644 driver-redpanda/deploy/monitoring/dashboards/pulsar_perf.json create mode 100644 driver-redpanda/deploy/monitoring/dashboards/rabbit_perf.json create mode 100644 driver-redpanda/deploy/monitoring/dashboards/system.json create mode 100644 driver-redpanda/deploy/monitoring/dashboards/zookeeper.json create mode 100644 driver-redpanda/deploy/monitoring/grafana.ini create mode 100644 driver-redpanda/deploy/monitoring/jmx_exporter/client.yml create mode 100644 driver-redpanda/deploy/monitoring/jmx_exporter/jmx_prometheus_javaagent-0.13.0.jar create mode 100644 driver-redpanda/deploy/monitoring/jmx_exporter/metrics.yml create mode 100644 driver-redpanda/deploy/monitoring/jmx_exporter/zookeeper.yml create mode 100755 driver-redpanda/deploy/monitoring/start.sh create mode 100644 driver-redpanda/deploy/provision-redpanda-aws.tf create mode 100644 driver-redpanda/deploy/requirements.yaml create mode 100644 driver-redpanda/deploy/templates/benchmark-worker.service create mode 100644 driver-redpanda/deploy/templates/chrony.conf create mode 100644 driver-redpanda/deploy/templates/kafka-dashboard.service create mode 100644 driver-redpanda/deploy/templates/kafka.service create mode 100644 driver-redpanda/deploy/templates/myid create mode 100644 driver-redpanda/deploy/templates/prometheus.service create mode 100644 driver-redpanda/deploy/templates/prometheus.yml create mode 100644 driver-redpanda/deploy/templates/server.properties create mode 100644 driver-redpanda/deploy/templates/workers.yaml create mode 100644 driver-redpanda/deploy/terraform.tfvars create mode 100644 driver-redpanda/kafka-0.yaml create mode 100644 driver-redpanda/kafka-1.yaml create mode 100644 driver-redpanda/kafka-all.yaml create mode 100644 driver-redpanda/kafka-exactly-once.yaml create mode 100644 driver-redpanda/kafka-group-all.yaml create mode 100644 driver-redpanda/kafka-sync-0.yaml create mode 100644 driver-redpanda/kafka-sync-1.yaml create mode 100644 driver-redpanda/kafka-sync-all.yaml create mode 100644 driver-redpanda/kafka-sync-group-all-1ms.yaml create mode 100644 driver-redpanda/kafka-sync-group-all.yaml create mode 100644 driver-redpanda/pom.xml create mode 100644 driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/Config.java create mode 100644 driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkConsumer.java create mode 100644 driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkDriver.java create mode 100644 driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkProducer.java diff --git a/driver-redpanda/README.md b/driver-redpanda/README.md new file mode 100644 index 00000000..6ec3eba6 --- /dev/null +++ b/driver-redpanda/README.md @@ -0,0 +1,3 @@ +# Apache Kafka benchmarks + +For instructions on running the OpenMessaging bencmarks for Kafka, see the [official documentation](http://openmessaging.cloud/docs/benchmarks/kafka). diff --git a/driver-redpanda/deploy/ansible.cfg b/driver-redpanda/deploy/ansible.cfg new file mode 100644 index 00000000..845d0dc5 --- /dev/null +++ b/driver-redpanda/deploy/ansible.cfg @@ -0,0 +1,8 @@ +[defaults] +host_key_checking=false +private_key_file=~/.ssh/redpanda_aws + +[privilege_escalation] +become=true +become_method='sudo' +become_user='root' diff --git a/driver-redpanda/deploy/deploy.yaml b/driver-redpanda/deploy/deploy.yaml new file mode 100644 index 00000000..ebc77f07 --- /dev/null +++ b/driver-redpanda/deploy/deploy.yaml @@ -0,0 +1,593 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +#- name: Collect profiles +# hosts: kafka, client +# become: true +# tags: +# - profile +# tasks: +# - set_fact: +# time: "{{ ansible_date_time.epoch }}" +# - name: Generate Flame graph +# tags: +# - flame +# shell: | +# /tmp/profiler.sh -d 120 `pidof java` -f /tmp/flame.svg +# - name: Fetch flame graph +# tags: +# - flame +# fetch: +# src: /tmp/flame.svg +# dest: results/{{ group_names[0] }}/{{ time }}/{{ inventory_hostname }}/flame.svg +# flat: yes +# +# # - name: Dump & compress heap +# # tags: +# # - heap +# # shell: | +# # jattach `pidof java` dumpheap /tmp/heap +# # chmod 777 /tmp/heap +# # tar -cvzf /tmp/heap.tar /tmp/heap +# # - name: Fetch heap dump +# # tags: +# # - heap +# # fetch: +# # src: /tmp/heap.tar +# # dest: results/{{ group_names[0] }}/{{ time }}/{{ inventory_hostname }}/heap.tar +# # flat: yes +# +# - name: Heap allocation profile +# tags: +# - heap +# shell: | +# /tmp/profiler.sh -d 60 -e alloc -o svg -f /tmp/heap.svg 1 `pidof java` +# chmod 777 /tmp/heap.svg +# - name: Fetch heap dump +# tags: +# - heap +# fetch: +# src: /tmp/heap.svg +# dest: results/{{ group_names[0] }}/{{ time }}/{{ inventory_hostname }}/heap.svg +# flat: yes + +- name: Setup common packages + hosts: all + connection: ssh + become: true + tasks: + - name: Remove sysstat + yum: pkg={{ item }} state=absent + with_items: + - sysstat + - name: Install RPM packages + yum: pkg={{ item }} state=latest + with_items: + - mdadm + - xfsprogs + - iotop + - wget + - java-11 + - sysstat + - vim + - chrony + - git + - gcc + +- name: set facts about drives + hosts: redpanda + tasks: + - set_fact: + device_info: "{{ hostvars[inventory_hostname].ansible_devices }}" + nvme_device_ids: "{{ hostvars[inventory_hostname].ansible_devices.keys() | map('regex_search', 'nvme.*') | select('string') | list }}" + + - set_fact: + nvme_devices_for_raid: '{{ (nvme_devices_for_raid | default([])) + ["/dev/" + item] }}' + loop: '{{ nvme_device_ids }}' + when: device_info[item]["partitions"] | length == 0 + +- name: Format raid drives if more then 2 drives + hosts: redpanda + tasks: + - block: + - name: define mdadm_arrays variable + set_fact: + mdadm_arrays: + - name: md0 + devices: '{{ nvme_devices_for_raid }}' + filesystem: xfs + level: 0 + mountpoint: /mnt/vectorized + state: present + + - name: run mdadm + include_role: + name: mrlesmithjr.mdadm + when: nvme_devices_for_raid|length > 1 + + +- name: created a non raid disk + hosts: redpanda + tasks: + - block: + - name: create xfs file system + filesystem: + fstype: xfs + dev: /dev/nvme0n1 + - name: mount nvme device + mount: + path: /mnt/vectorized + src: /dev/nvme0n1 + fstype: xfs + state: mounted + when: nvme_devices_for_raid|length == 1 + +- name: configure the data path + hosts: redpanda + tasks: + - name: data path + file: + path: /mnt/vectorized/redpanda + state: directory + owner: root + group: root + mode: ugo=rwx + - name: set premissions + file: + dest: /var/lib/redpanda + src: /mnt/vectorized/redpanda + state: link + owner: root + group: root + mode: ugo=rwx + +#- name: Format and mount disks for Redpanda hosts +# hosts: redpanda +# connection: ssh +# become: true +# tasks: +# - command: > +# tuned-adm profile latency-performance +# - name: Format disks +# filesystem: +# fstype: xfs +# dev: "{{ item }}" +# with_items: +# - "/dev/nvme1n1" +# - "/dev/nvme2n1" +# - name: Mount disks +# mount: +# path: "{{ item.path }}" +# src: "{{ item.src }}" +# fstype: xfs +# opts: defaults,noatime,nodiscard +# state: mounted +# with_items: +# - { path: "/mnt/data-1", src: "/dev/nvme1n1" } +# - { path: "/mnt/data-2", src: "/dev/nvme2n1" } + +- name: Store server lists + hosts: all + connection: ssh + tasks: + - set_fact: + boostrapServers: "{{ groups['redpanda'] | map('extract', hostvars, ['private_ip']) | map('regex_replace', '^(.*)$', '\\1:9092') | join(',') }}" + +- name: install redpanda + hosts: redpanda + tasks: + - name: add the redpanda repo + shell: | + curl -s https://ceba06f0585fdd548c3106334751dcd75abf0d043320fab5:@packagecloud.io/install/repositories/vectorizedio/v/script.rpm.sh | sudo bash + + + - name: install redpanda + package: + name: + - redpanda + state: present + update_cache: yes + + + + +#- name: Kafka installation +# hosts: redpanda +# connection: ssh +# become: true +# tasks: +# - file: path=/opt/kafka state=absent +# - file: path=/opt/kafka state=directory +# - set_fact: +# boostrapServers: "{{ groups['kafka'] | map('extract', hostvars, ['private_ip']) | map('regex_replace', '^(.*)$', '\\1:9092') | join(',') }}" +# kafkaVersion: "2.6.0" +# - debug: +# msg: "boostrap servers: {{ boostrapServers }}" +# +# #################### Release #################### +# - name: Download Kafka package +# unarchive: +# src: http://mirrors.ocf.berkeley.edu/apache/kafka/{{ kafkaVersion }}/kafka_2.13-{{ kafkaVersion }}.tgz +# remote_src: yes +# dest: /opt/kafka +# extra_opts: ["--strip-components=1"] +# +# #################### Staging #################### +# # # https://access.redhat.com/articles/5117881 +# # - name: Fix Sectigo Root CA expiration issue +# # shell: | +# # trust dump --filter "pkcs11:id=%ad%bd%98%7a%34%b4%26%f7%fa%c4%26%54%ef%03%bd%e0%24%cb%54%1a;type=cert" > /etc/pki/ca-trust/source/blacklist/addtrust-external-root.p11-kit +# # update-ca-trust +# # - name: Download Kafka package +# # unarchive: +# # src: https://home.apache.org/~rhauch/kafka-2.6.0-rc2/kafka_2.13-2.6.0.tgz +# # remote_src: yes +# # dest: /opt/kafka +# # extra_opts: ["--strip-components=1"] +# +# #################### Custom build #################### +# # - name: Copy Kafka +# # unarchive: +# # src: /Users/anikhil/offsets_patch/core/build/distributions/kafka_2.13-2.7.0-SNAPSHOT.tgz +# # dest: /opt/kafka +# # extra_opts: ["--strip-components=1"] +# +# - set_fact: +# privateIp: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" +# - name: Change locale to en_US.utf-8 +# shell: | +# echo 'LANG=en_US.utf-8 +# LC_ALL=en_US.utf-8' > /etc/environment +# - name: Setup JMX for Prometheus +# copy: +# src: "monitoring/jmx_exporter/jmx_prometheus_javaagent-0.13.0.jar" +# dest: "/opt/kafka/jmx_prometheus_javaagent-0.13.0.jar" +# - name: Configure JMX for Prometheus (Kafka) +# template: +# src: "monitoring/jmx_exporter/metrics.yml" +# dest: "/opt/kafka/metrics.yml" +# - name: Configure JMX for Prometheus (Zookeeper) +# template: +# src: "monitoring/jmx_exporter/zookeeper.yml" +# dest: "/opt/kafka/zookeeper.yml" + +- hosts: redpanda + tasks: + - name: ensure /etc/redpanda exists + file: + path: /etc/redpanda + state: directory + + - name: configure redpanda + notify: + - restart redpanda-tuner + - restart redpanda + vars: + seed_private_ip: '{{ hostvars[groups["redpanda"][0]].private_ip }}' + shell: | + rpk config set cluster_id 'test' + rpk config set organization 'vectorized.io' + rpk config set redpanda.advertised_kafka_api '{ + address: {{ hostvars[inventory_hostname].private_ip }}, + port: 9092 + }' --format yaml + rpk config set redpanda.advertised_rpc_api '{ + address: {{ hostvars[inventory_hostname].private_ip }}, + port: 33145 + }' --format yaml + rpk mode production + + {% if hostvars[groups['redpanda'][0]].id == hostvars[inventory_hostname].id %} + sudo rpk config bootstrap \ + --id {{ groups['redpanda'].index(inventory_hostname) }} \ + --self {{ hostvars[inventory_hostname].private_ip }} + + {% else %} + + sudo rpk config bootstrap \ + --id {{ groups['redpanda'].index(inventory_hostname) }} \ + --self {{ hostvars[inventory_hostname].private_ip }} \ + --ips {{ seed_private_ip }} + {% endif %} + + handlers: + - name: restart redpanda-tuner + systemd: + name: redpanda-tuner + state: restarted + - name: restart redpanda + systemd: + name: redpanda + state: restarted + +- name: Chrony setup + hosts: client + connection: ssh + become: true + tasks: + - name: Set up chronyd + template: + src: "templates/chrony.conf" + dest: "/etc/chrony.conf" + - systemd: + state: restarted + daemon_reload: yes + name: "chronyd" + +- name: Setup Benchmark client + hosts: client + connection: ssh + become: true + tasks: + - file: path=/opt/benchmark state=absent + - name: Copy benchmark code + unarchive: + src: ../../package/target/openmessaging-benchmark-0.0.1-SNAPSHOT-bin.tar.gz + dest: /opt + - shell: mv /opt/openmessaging-benchmark-0.0.1-SNAPSHOT /opt/benchmark + #- shell: tuned-adm profile latency-performance + + - name: Get list of driver config files + raw: ls -1 /opt/benchmark/driver-kafka/*.yaml + register: drivers_list + + - name: Configure URL + lineinfile: + dest: "{{ item }}" + regexp: "^ bootstrap.servers=" + line: " bootstrap.servers={{ boostrapServers }}" + with_items: "{{ drivers_list.stdout_lines }}" + - name: Configure memory + lineinfile: + dest: /opt/benchmark/bin/benchmark-worker + regexp: "^JVM_MEM=" + line: 'JVM_MEM="-Xms16G -Xmx16G -XX:+UseG1GC -XX:MaxGCPauseMillis=10 -XX:+ParallelRefProcEnabled -XX:+UnlockExperimentalVMOptions -XX:+AggressiveOpts -XX:+DoEscapeAnalysis -XX:ParallelGCThreads=32 -XX:ConcGCThreads=32 -XX:G1NewSizePercent=50 -XX:+DisableExplicitGC -XX:-ResizePLAB -XX:+PerfDisableSharedMem -XX:+AlwaysPreTouch -XX:-UseBiasedLocking"' + - name: Configure memory + lineinfile: + dest: /opt/benchmark/bin/benchmark + regexp: "^JVM_MEM=" + line: 'JVM_MEM="-Xmx1G"' + - name: Setup JMX for Producer/Consumer clients + copy: + src: "monitoring/jmx_exporter/jmx_prometheus_javaagent-0.13.0.jar" + dest: "/opt/benchmark/jmx_prometheus_javaagent-0.13.0.jar" + - name: Configure JMX for Prometheus (Client) + template: + src: "monitoring/jmx_exporter/client.yml" + dest: "/opt/benchmark/metrics.yml" + - template: + src: "templates/workers.yaml" + dest: "/opt/benchmark/workers.yaml" + - name: Install benchmark systemd service + template: + src: "templates/benchmark-worker.service" + dest: "/etc/systemd/system/benchmark-worker.service" + - name: "Restart benchmark worker" + tags: + - configure + systemd: + state: restarted + daemon_reload: yes + name: "benchmark-worker" + +- name: Hosts addresses + hosts: localhost + become: false + tasks: + - debug: + msg: Redpanda nodes {{ item }}" + with_items: "{{ groups['redpanda'] }}" + - debug: + msg: "Benchmark clients {{ item }}" + with_items: "{{ groups['client'] }}" + + +# Install the monitoring stack +- name: Install Node Exporter + hosts: redpanda + roles: + - cloudalchemy.node-exporter + +- name: create a local tmp directory + hosts: localhost + become: false + tasks: + - name: create a local temp directory + tempfile: + state: directory + suffix: grafana + register: grafana_temp_dir + - name: register temp path with redpanda host + set_fact: + grafana_dir: "{{ grafana_temp_dir.path }}" + delegate_to: "{{ groups['redpanda'][0] }}" + delegate_facts: True + - name: register temp path with prometheus host + set_fact: + grafana_dir: "{{ grafana_temp_dir.path }}" + delegate_to: "{{ item }}" + delegate_facts: True + with_items: "{{ groups['prometheus'] }}" + +- hosts: redpanda[0] + tasks: + - name: generate the redpanda grafana dashboard + shell: | + rpk generate grafana-dashboard --datasource prometheus --prometheus-url 'http://{{hostvars[inventory_hostname].private_ip}}:9644/metrics' > '/tmp/redpanda-grafana.json' + + - name: fetch grafana dashboard + fetch: + src: /tmp/redpanda-grafana.json + dest: "{{ grafana_dir }}/" + flat: yes + +- hosts: prometheus + roles: + - cloudalchemy.prometheus + vars: + prometheus_scrape_configs: + - job_name: "redpanda" + static_configs: + - targets: "{{ groups['redpanda'] | map('extract', hostvars, ['ansible_default_ipv4','address']) | map('regex_replace', '^(.*)$','\\1:9644') | list }}" + - job_name: "node" + static_configs: + - targets: "{{ groups['redpanda'] | map('extract', hostvars, ['ansible_default_ipv4','address']) | map('regex_replace', '^(.*)$','\\1:9100') | list }}" + - job_name: "client - jmx" + static_configs: + - targets: "{{ groups['client'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^(.*)$', '\\1:9090') | list }}" + +- hosts: prometheus + roles: + - cloudalchemy.grafana + vars: + grafana_version: 6.7.3 + grafana_security: + admin_user: admin + admin_password: enter_your_secure_password + grafana_datasources: + - name: prometheus + type: prometheus + access: proxy + url: 'http://localhost:9090' + basicAuth: false + grafana_dashboards_dir: '{{ grafana_dir }}' + +## Setup the Prometheus/Grafana monitoring stack +#- name: Prometheus installation +# hosts: prometheus +# connection: ssh +# become: true +# tasks: +# - name: Add Extras Repo +# shell: yum-config-manager --enable rhui-REGION-rhel-server-extras +# - name: Install RPM packages +# yum: pkg={{ item }} state=latest +# with_items: +# - docker +# - set_fact: +# prometheusVersion: "2.19.3" +# - file: path=/opt/prometheus state=absent +# - file: path=/opt/prometheus state=directory +# - name: Download Prometheus Binary Package +# unarchive: +# src: "https://github.com/prometheus/prometheus/releases/download/v{{ prometheusVersion }}/prometheus-{{ prometheusVersion }}.linux-amd64.tar.gz" +# remote_src: yes +# dest: /opt/prometheus +# extra_opts: ["--strip-components=1"] +# - set_fact: +# private_ip: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" + +#- name: Prometheus setup +# hosts: prometheus +# connection: ssh +# become: true +# tasks: +# - file: +# path: "/opt/prometheus/{{ item }}" +# state: directory +# with_items: +# - data +# - template: +# src: "templates/prometheus.service" +# dest: "/etc/systemd/system/prometheus.service" +# - template: +# src: "templates/kafka-dashboard.service" +# dest: "/etc/systemd/system/kafka-dashboard.service" +# - template: +# src: "templates/prometheus.yml" +# dest: "/opt/prometheus/prometheus.yml" +# - systemd: +# state: restarted +# daemon_reload: yes +# name: "kafka-dashboard" +# +#- name: Install Node exporter on Brokers to collect system metrics +# hosts: kafka +# become: true +# tasks: +# - name: Add user node_exporter +# user: +# name: node_exporter +# shell: /bin/false +# system: true +# create_home: no +# +# - name: Download and extract +# unarchive: +# src: https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz +# dest: /tmp +# remote_src: yes +# +# - name: Copy bin node_exporter to /usr/local/bin +# copy: +# src: /tmp/node_exporter-1.0.1.linux-amd64/node_exporter +# remote_src: yes +# dest: /usr/local/bin/ +# owner: node_exporter +# group: node_exporter +# mode: u+x,g+x,o+x +# +# - name: Create service node_exporter.service +# blockinfile: +# path: /etc/systemd/system/node_exporter.service +# block: | +# [Unit] +# Description=Prometheus Node Exporter +# Wants=network-online.target +# After=network-online.target +# [Service] +# User=node_exporter +# Group=node_exporter +# Type=simple +# ExecStart=/usr/local/bin/node_exporter +# [Install] +# WantedBy=multi-user.target +# create: true +# +# - name: systemctl daemon_reload +# systemd: +# daemon_reload: yes +# +# - name: Start and Enable node_exporter +# service: +# name: node_exporter +# state: started +# enabled: yes +# +# - name: Check whether port 9100 is available +# wait_for: +# port: 9100 +# state: started +# timeout: 5 +# +#- name: Install jattach and async-profiler +# hosts: all +# become: true +# tasks: +# - name: Download and extract async-profiler +# unarchive: +# src: https://github.com/jvm-profiling-tools/async-profiler/releases/download/v1.7.1/async-profiler-1.7.1-linux-x64.tar.gz +# dest: /tmp +# remote_src: yes +# +# - name: Download and install jattach +# get_url: +# url: https://github.com/apangin/jattach/releases/download/v1.5/jattach +# dest: /usr/bin/jattach +# mode: "0755" diff --git a/driver-redpanda/deploy/monitoring/Dockerfile b/driver-redpanda/deploy/monitoring/Dockerfile new file mode 100644 index 00000000..0ae4874d --- /dev/null +++ b/driver-redpanda/deploy/monitoring/Dockerfile @@ -0,0 +1,54 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +FROM grafana/grafana:7.0.5 + +USER root + +# Install the Grafana Image Rendering Plugin +ENV GF_PATHS_PLUGINS="/var/lib/grafana-plugins" +RUN mkdir -p "$GF_PATHS_PLUGINS" && \ + chown -R grafana:grafana "$GF_PATHS_PLUGINS" +RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories && \ + echo "http://dl-cdn.alpinelinux.org/alpine/edge/main" >> /etc/apk/repositories && \ + echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories && \ + apk --no-cache upgrade && \ + apk add --no-cache udev ttf-opensans chromium && \ + rm -rf /tmp/* && \ + rm -rf /usr/share/grafana/tools/phantomjs; +USER grafana +ENV GF_RENDERER_PLUGIN_CHROME_BIN="/usr/bin/chromium-browser" +RUN grafana-cli \ + --pluginsDir "$GF_PATHS_PLUGINS" \ + --pluginUrl https://github.com/grafana/grafana-image-renderer/releases/latest/download/plugin-linux-x64-glibc-no-chromium.zip \ + plugins install grafana-image-renderer; + +USER root +COPY dashboards.yaml /etc/grafana/provisioning/dashboards/dashboards.yaml +RUN apk add curl +USER grafana +COPY grafana.ini /etc/grafana/grafana.ini +COPY dashboards/* /var/lib/grafana/dashboards/ +COPY start.sh /start.sh + +EXPOSE 3000 + +ENV PROMETHEUS_URL http://prometheus:9090 + +ENTRYPOINT ["/start.sh"] diff --git a/driver-redpanda/deploy/monitoring/README.md b/driver-redpanda/deploy/monitoring/README.md new file mode 100644 index 00000000..1db30933 --- /dev/null +++ b/driver-redpanda/deploy/monitoring/README.md @@ -0,0 +1,3 @@ +# Kafka dashboard for the Open Messaging Benchmark using the Prometheus/Grafana stack + +- Builds a docker image diff --git a/driver-redpanda/deploy/monitoring/dashboards.yaml b/driver-redpanda/deploy/monitoring/dashboards.yaml new file mode 100644 index 00000000..4a9c9c4a --- /dev/null +++ b/driver-redpanda/deploy/monitoring/dashboards.yaml @@ -0,0 +1,45 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +apiVersion: 1 + +providers: + # an unique provider name. Required + - name: "Default Dashboards" + # Org id. Default to 1 + orgId: 1 + # name of the dashboard folder. + folder: "" + # folder UID. will be automatically generated if not specified + folderUid: "" + # provider type. Default to 'file' + type: file + # disable dashboard deletion + disableDeletion: true + # enable dashboard editing + editable: true + # how often Grafana will scan for changed dashboards + updateIntervalSeconds: 10 + # allow updating provisioned dashboards from the UI + allowUiUpdates: true + options: + # path to dashboard files on disk. Required when using the 'file' type + path: /var/lib/grafana/dashboards + # use folder names from filesystem to create folders in Grafana + foldersFromFilesStructure: true diff --git a/driver-redpanda/deploy/monitoring/dashboards/jvm.json b/driver-redpanda/deploy/monitoring/dashboards/jvm.json new file mode 100644 index 00000000..8d5ee19b --- /dev/null +++ b/driver-redpanda/deploy/monitoring/dashboards/jvm.json @@ -0,0 +1,2557 @@ +{ + "annotations": { + "list": [] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "hideControls": false, + "id": 2, + "links": [], + "refresh": "1m", + "rows": [ + { + "collapse": false, + "height": 221, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 1, + "fill": 1, + "id": 4, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-232tg", + "value": "bookie-232tg" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(process_cpu_seconds_total{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]) * 100\n\n", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "process_cpu_seconds_total", + "refId": "A", + "step": 20 + } + ], + "thresholds": [ + { + "colorMode": "ok", + "fill": false, + "line": true, + "op": "gt", + "value": 100 + } + ], + "timeFrom": null, + "timeShift": null, + "title": "CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percent", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "id": 1, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": false, + "max": false, + "min": false, + "rightSide": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-232tg", + "value": "bookie-232tg" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(jvm_memory_bytes_committed{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Heap size", + "metric": "jvm_memory_bytes_committed", + "refId": "A", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_bytes_used", + "refId": "B", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_bytes_max", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Heap Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 2, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-232tg", + "value": "bookie-232tg" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "jvm_memory_direct_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_direct_bytes_used", + "refId": "A", + "step": 20 + }, + { + "expr": "jvm_memory_direct_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_direct_bytes_max", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Direct Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 3, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-232tg", + "value": "bookie-232tg" + } + }, + "seriesOverrides": [ + { + "alias": "old count", + "yaxis": 2 + }, + { + "alias": "young count", + "yaxis": 2 + } + ], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(increase(jvm_gc_collection_seconds_sum{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]))", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Pause", + "metric": "jvm_gc_collection_seconds_count", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "GC Pauses", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": false + } + ] + } + ], + "repeat": "instance", + "repeatIteration": null, + "repeatRowId": null, + "showTitle": true, + "title": "$component $instance", + "titleSize": "h4" + }, + { + "collapse": false, + "height": 221, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 1, + "fill": 1, + "id": 5, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-44jrt", + "value": "bookie-44jrt" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(process_cpu_seconds_total{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]) * 100\n\n", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "process_cpu_seconds_total", + "refId": "A", + "step": 20 + } + ], + "thresholds": [ + { + "colorMode": "ok", + "fill": false, + "line": true, + "op": "gt", + "value": 100 + } + ], + "timeFrom": null, + "timeShift": null, + "title": "CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percent", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "id": 6, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": false, + "max": false, + "min": false, + "rightSide": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-44jrt", + "value": "bookie-44jrt" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(jvm_memory_bytes_committed{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Heap size", + "metric": "jvm_memory_bytes_committed", + "refId": "A", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_bytes_used", + "refId": "B", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_bytes_max", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Heap Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 7, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-44jrt", + "value": "bookie-44jrt" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "jvm_memory_direct_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_direct_bytes_used", + "refId": "A", + "step": 20 + }, + { + "expr": "jvm_memory_direct_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_direct_bytes_max", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Direct Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 8, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-44jrt", + "value": "bookie-44jrt" + } + }, + "seriesOverrides": [ + { + "alias": "old count", + "yaxis": 2 + }, + { + "alias": "young count", + "yaxis": 2 + } + ], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(increase(jvm_gc_collection_seconds_sum{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]))", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Pause", + "metric": "jvm_gc_collection_seconds_count", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "GC Pauses", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": false + } + ] + } + ], + "repeat": null, + "repeatIteration": 1496162786419, + "repeatRowId": 1, + "showTitle": true, + "title": "$component $instance", + "titleSize": "h4" + }, + { + "collapse": false, + "height": 221, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 1, + "fill": 1, + "id": 9, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-73k0d", + "value": "bookie-73k0d" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(process_cpu_seconds_total{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]) * 100\n\n", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "process_cpu_seconds_total", + "refId": "A", + "step": 20 + } + ], + "thresholds": [ + { + "colorMode": "ok", + "fill": false, + "line": true, + "op": "gt", + "value": 100 + } + ], + "timeFrom": null, + "timeShift": null, + "title": "CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percent", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "id": 10, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": false, + "max": false, + "min": false, + "rightSide": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-73k0d", + "value": "bookie-73k0d" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(jvm_memory_bytes_committed{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Heap size", + "metric": "jvm_memory_bytes_committed", + "refId": "A", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_bytes_used", + "refId": "B", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_bytes_max", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Heap Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 11, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-73k0d", + "value": "bookie-73k0d" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "jvm_memory_direct_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_direct_bytes_used", + "refId": "A", + "step": 20 + }, + { + "expr": "jvm_memory_direct_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_direct_bytes_max", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Direct Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 12, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-73k0d", + "value": "bookie-73k0d" + } + }, + "seriesOverrides": [ + { + "alias": "old count", + "yaxis": 2 + }, + { + "alias": "young count", + "yaxis": 2 + } + ], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(increase(jvm_gc_collection_seconds_sum{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]))", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Pause", + "metric": "jvm_gc_collection_seconds_count", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "GC Pauses", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": false + } + ] + } + ], + "repeat": null, + "repeatIteration": 1496162786419, + "repeatRowId": 1, + "showTitle": true, + "title": "$component $instance", + "titleSize": "h4" + }, + { + "collapse": false, + "height": 221, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 1, + "fill": 1, + "id": 13, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-h2q4k", + "value": "bookie-h2q4k" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(process_cpu_seconds_total{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]) * 100\n\n", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "process_cpu_seconds_total", + "refId": "A", + "step": 20 + } + ], + "thresholds": [ + { + "colorMode": "ok", + "fill": false, + "line": true, + "op": "gt", + "value": 100 + } + ], + "timeFrom": null, + "timeShift": null, + "title": "CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percent", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "id": 14, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": false, + "max": false, + "min": false, + "rightSide": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-h2q4k", + "value": "bookie-h2q4k" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(jvm_memory_bytes_committed{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Heap size", + "metric": "jvm_memory_bytes_committed", + "refId": "A", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_bytes_used", + "refId": "B", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_bytes_max", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Heap Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 15, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-h2q4k", + "value": "bookie-h2q4k" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "jvm_memory_direct_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_direct_bytes_used", + "refId": "A", + "step": 20 + }, + { + "expr": "jvm_memory_direct_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_direct_bytes_max", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Direct Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 16, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-h2q4k", + "value": "bookie-h2q4k" + } + }, + "seriesOverrides": [ + { + "alias": "old count", + "yaxis": 2 + }, + { + "alias": "young count", + "yaxis": 2 + } + ], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(increase(jvm_gc_collection_seconds_sum{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]))", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Pause", + "metric": "jvm_gc_collection_seconds_count", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "GC Pauses", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": false + } + ] + } + ], + "repeat": null, + "repeatIteration": 1496162786419, + "repeatRowId": 1, + "showTitle": true, + "title": "$component $instance", + "titleSize": "h4" + }, + { + "collapse": false, + "height": 221, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 1, + "fill": 1, + "id": 17, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-m2bp9", + "value": "bookie-m2bp9" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(process_cpu_seconds_total{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]) * 100\n\n", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "process_cpu_seconds_total", + "refId": "A", + "step": 20 + } + ], + "thresholds": [ + { + "colorMode": "ok", + "fill": false, + "line": true, + "op": "gt", + "value": 100 + } + ], + "timeFrom": null, + "timeShift": null, + "title": "CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percent", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "id": 18, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": false, + "max": false, + "min": false, + "rightSide": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-m2bp9", + "value": "bookie-m2bp9" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(jvm_memory_bytes_committed{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Heap size", + "metric": "jvm_memory_bytes_committed", + "refId": "A", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_bytes_used", + "refId": "B", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_bytes_max", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Heap Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 19, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-m2bp9", + "value": "bookie-m2bp9" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "jvm_memory_direct_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_direct_bytes_used", + "refId": "A", + "step": 20 + }, + { + "expr": "jvm_memory_direct_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_direct_bytes_max", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Direct Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 20, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-m2bp9", + "value": "bookie-m2bp9" + } + }, + "seriesOverrides": [ + { + "alias": "old count", + "yaxis": 2 + }, + { + "alias": "young count", + "yaxis": 2 + } + ], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(increase(jvm_gc_collection_seconds_sum{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]))", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Pause", + "metric": "jvm_gc_collection_seconds_count", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "GC Pauses", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": false + } + ] + } + ], + "repeat": null, + "repeatIteration": 1496162786419, + "repeatRowId": 1, + "showTitle": true, + "title": "$component $instance", + "titleSize": "h4" + }, + { + "collapse": false, + "height": 221, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 1, + "fill": 1, + "id": 21, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-z6djd", + "value": "bookie-z6djd" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(process_cpu_seconds_total{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]) * 100\n\n", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "process_cpu_seconds_total", + "refId": "A", + "step": 20 + } + ], + "thresholds": [ + { + "colorMode": "ok", + "fill": false, + "line": true, + "op": "gt", + "value": 100 + } + ], + "timeFrom": null, + "timeShift": null, + "title": "CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percent", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "id": 22, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": false, + "max": false, + "min": false, + "rightSide": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-z6djd", + "value": "bookie-z6djd" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(jvm_memory_bytes_committed{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Heap size", + "metric": "jvm_memory_bytes_committed", + "refId": "A", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_bytes_used", + "refId": "B", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_bytes_max", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Heap Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 23, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-z6djd", + "value": "bookie-z6djd" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "jvm_memory_direct_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_direct_bytes_used", + "refId": "A", + "step": 20 + }, + { + "expr": "jvm_memory_direct_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_direct_bytes_max", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Direct Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 24, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-z6djd", + "value": "bookie-z6djd" + } + }, + "seriesOverrides": [ + { + "alias": "old count", + "yaxis": 2 + }, + { + "alias": "young count", + "yaxis": 2 + } + ], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(increase(jvm_gc_collection_seconds_sum{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]))", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Pause", + "metric": "jvm_gc_collection_seconds_count", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "GC Pauses", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": false + } + ] + } + ], + "repeat": null, + "repeatIteration": 1496162786419, + "repeatRowId": 1, + "showTitle": true, + "title": "$component $instance", + "titleSize": "h4" + } + ], + "schemaVersion": 14, + "style": "dark", + "tags": [ + "kafka" + ], + "templating": { + "list": [ + { + "allValue": null, + "current": { + "text": "us-central", + "value": "us-central" + }, + "datasource": "Prometheus", + "hide": 0, + "includeAll": false, + "label": "Cluster", + "multi": false, + "name": "cluster", + "options": [], + "query": "{cluster=~\".+\"}", + "refresh": 1, + "regex": "/.*[^_]cluster=\\\"([^\\\"]+)\\\".*/", + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": { + "tags": [], + "text": "bookkeeper", + "value": "bookkeeper" + }, + "datasource": "Prometheus", + "hide": 0, + "includeAll": false, + "label": "Component", + "multi": false, + "name": "component", + "options": [], + "query": "{job=~\".+\"}", + "refresh": 1, + "regex": "/.*[^_]job=\\\"([^\\\"]+)\\\".*/", + "sort": 1, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Prometheus", + "hide": 0, + "includeAll": true, + "label": "Pod", + "multi": true, + "name": "instance", + "options": [], + "query": "jvm_memory_bytes_used{cluster=~\"$cluster\", job=~\"$component\", kubernetes_pod_name=~\".+\"}", + "refresh": 2, + "regex": "/.*[^_]kubernetes_pod_name=\\\"([^\\\"]+)\\\".*/", + "sort": 1, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "browser", + "title": "Kafka - JVM", + "version": 27 +} \ No newline at end of file diff --git a/driver-redpanda/deploy/monitoring/dashboards/perf.json b/driver-redpanda/deploy/monitoring/dashboards/perf.json new file mode 100644 index 00000000..04e503da --- /dev/null +++ b/driver-redpanda/deploy/monitoring/dashboards/perf.json @@ -0,0 +1,878 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "id": 6, + "links": [], + "panels": [ + { + "aliasColors": { + "Broker - Read": "#66cc69", + "Broker - Write": "#00afba", + "Consume rate": "blue", + "DD - Max throughput": "#d8365d", + "Produce rate": "#d8365d", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "fill": 5, + "fillGradient": 0, + "gridPos": { + "h": 11, + "w": 12, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "id": 12, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": false, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pluginVersion": "7.0.5", + "pointradius": 2, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Consume rate", + "dashes": true, + "fill": 0, + "linewidth": 2, + "yaxis": 1 + }, + { + "alias": "Produce rate", + "dashes": true, + "fill": 0, + "linewidth": 2, + "yaxis": 1 + }, + { + "alias": "DD - Max throughput", + "fill": 0, + "lines": true, + "linewidth": 3, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (instance) (rate(node_disk_written_bytes_total{device=~\"nvme1n1|nvme2n1\"}[1m]))", + "hide": false, + "interval": "", + "intervalFactor": 1, + "legendFormat": "Broker - {{instance}} - Write", + "refId": "A" + }, + { + "expr": "sum(rate(node_disk_read_bytes_total{device=~\"nvme1n1|nvme2n1\"}[1m]))", + "hide": true, + "interval": "", + "legendFormat": "Broker - Read", + "refId": "B" + }, + { + "expr": "sum(rate(benchmark_producer_bytes_sent[1m]))", + "hide": false, + "interval": "", + "legendFormat": "Produce rate", + "refId": "C" + }, + { + "expr": "sum(rate(benchmark_consumer_bytes_recv[1m]))", + "hide": false, + "interval": "", + "legendFormat": "Consume rate", + "refId": "D" + }, + { + "expr": "655000000", + "interval": "", + "legendFormat": "DD - Max throughput", + "refId": "E" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O throughput + Producer/Consume Throughput", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 0 + }, + "hiddenSeries": false, + "id": 6, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (instance) (delta(node_disk_written_bytes_total{device=~\"nvme1n1|nvme2n1\"}[1m])/60)", + "interval": "", + "intervalFactor": 1, + "legendFormat": "Broker - {{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O throughput", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 9 + }, + "hiddenSeries": false, + "id": 5, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(delta(benchmark_producer_bytes_sent[1m])/60)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Publish throughput (MB/sec)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 11 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "delta(node_disk_io_time_seconds_total{device=~\"nvme1n1|nvme2n1\"}[1m])/60", + "interval": "", + "intervalFactor": 1, + "legendFormat": "Broker - {{instance}} ➝ Disk - {{device}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O Utilization", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percentunit", + "label": null, + "logBase": 1, + "max": "1", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 20 + }, + "hiddenSeries": false, + "id": 4, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(delta(benchmark_producer_messages_sent[1m])/60)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Publish rate (messages/sec)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 28 + }, + "hiddenSeries": false, + "id": 10, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(kafka_log_logflushstats_logflushrateandtimems{quantile=\"0.99\"}[1m])", + "interval": "", + "legendFormat": "Broker - {{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Log Flush Time (p99)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Idle - Waiting for something to happen": "#052B51", + "Iowait - Waiting for I/O to complete": "blue", + "Nice - Niced processes executing in user mode": "yellow", + "Softirq - Servicing softirqs": "yellow", + "System - Processes executing in kernel mode": "dark-purple", + "User - Normal processes executing in user mode": "red", + "guest": "#9AC48A", + "idle": "#052B51", + "iowait": "#EAB839", + "irq": "#BF1B00", + "nice": "#C15C17", + "softirq": "#E24D42", + "steal": "#FCE2DE", + "system": "#508642", + "user": "#5195CE" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 2, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 13, + "w": 24, + "x": 0, + "y": 36 + }, + "hiddenSeries": false, + "id": 8, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 250, + "sort": null, + "sortDesc": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": true, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"user\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "User - Normal processes executing in user mode", + "refId": "B", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"system\"}[5m])) * 100", + "format": "time_series", + "interval": "10s", + "intervalFactor": 2, + "legendFormat": "System - Processes executing in kernel mode", + "refId": "A", + "step": 20 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"iowait\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Iowait - Waiting for I/O to complete", + "refId": "E", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"softirq\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Softirq - Servicing softirqs", + "refId": "G", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"idle\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Idle - Waiting for something to happen", + "refId": "D", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU Usage across all Brokers", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "percentage", + "logBase": 1, + "max": "100", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "refresh": false, + "schemaVersion": 25, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ] + }, + "timezone": "utc", + "title": "Performance Metrics - Kafka", + "uid": "vYWrwI7Mkafka", + "version": 5 +} \ No newline at end of file diff --git a/driver-redpanda/deploy/monitoring/dashboards/prometheus.json b/driver-redpanda/deploy/monitoring/dashboards/prometheus.json new file mode 100644 index 00000000..40ebcf83 --- /dev/null +++ b/driver-redpanda/deploy/monitoring/dashboards/prometheus.json @@ -0,0 +1,719 @@ +{ + "annotations": { + "list": [] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "hideControls": true, + "id": 1, + "links": [ + { + "icon": "info", + "tags": [], + "targetBlank": true, + "title": "Grafana Docs", + "tooltip": "", + "type": "link", + "url": "http://docs.grafana.org/" + }, + { + "icon": "info", + "tags": [], + "targetBlank": true, + "title": "Prometheus Docs", + "type": "link", + "url": "http://prometheus.io/docs/introduction/overview/" + } + ], + "refresh": false, + "revision": "1.0", + "rows": [ + { + "collapse": false, + "height": 178, + "panels": [ + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "Prometheus", + "decimals": 1, + "editable": true, + "error": false, + "format": "s", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "id": 5, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "span": 3, + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "tableColumn": "", + "targets": [ + { + "expr": "(time() - process_start_time_seconds{job=\"prometheus\"})", + "intervalFactor": 2, + "refId": "A", + "step": 4 + } + ], + "thresholds": "", + "title": "Uptime", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(50, 172, 45, 0.97)", + "rgba(237, 129, 40, 0.89)", + "rgba(245, 54, 54, 0.9)" + ], + "datasource": "Prometheus", + "editable": true, + "error": false, + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "id": 6, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "span": 3, + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "tableColumn": "", + "targets": [ + { + "expr": "prometheus_local_storage_memory_series", + "intervalFactor": 2, + "refId": "A", + "step": 4 + } + ], + "thresholds": "1,5", + "title": "Local Storage Memory Series", + "type": "singlestat", + "valueFontSize": "70%", + "valueMaps": [], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": true, + "colors": [ + "rgba(50, 172, 45, 0.97)", + "rgba(237, 129, 40, 0.89)", + "rgba(245, 54, 54, 0.9)" + ], + "datasource": "Prometheus", + "editable": true, + "error": false, + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "id": 7, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "span": 3, + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "tableColumn": "", + "targets": [ + { + "expr": "prometheus_local_storage_indexing_queue_length", + "intervalFactor": 2, + "refId": "A", + "step": 4 + } + ], + "thresholds": "500,4000", + "title": "Internal Storage Queue Length", + "type": "singlestat", + "valueFontSize": "70%", + "valueMaps": [ + { + "op": "=", + "text": "Empty", + "value": "0" + } + ], + "valueName": "current" + }, + { + "content": "\"Prometheus\nPrometheus\n\n

You're using Prometheus, an open-source systems monitoring and alerting toolkit originally built at SoundCloud. For more information, check out the Grafana and Prometheus projects.

", + "editable": true, + "error": false, + "id": 9, + "links": [], + "mode": "html", + "span": 3, + "style": {}, + "title": "", + "transparent": true, + "type": "text" + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "New row", + "titleSize": "h6" + }, + { + "collapse": false, + "height": 227, + "panels": [ + { + "aliasColors": { + "prometheus": "#C15C17", + "{instance=\"localhost:9090\",job=\"prometheus\"}": "#C15C17" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "editable": true, + "error": false, + "fill": 1, + "grid": {}, + "id": 3, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 9, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(prometheus_local_storage_ingested_samples_total[5m])", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{job}}", + "metric": "", + "refId": "A", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Samples ingested (rate-5m)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "content": "#### Samples Ingested\nThis graph displays the count of samples ingested by the Prometheus server, as measured over the last 5 minutes, per time series in the range vector. When troubleshooting an issue on IRC or Github, this is often the first stat requested by the Prometheus team. ", + "editable": true, + "error": false, + "id": 8, + "links": [], + "mode": "markdown", + "span": 2.995914043583536, + "style": {}, + "title": "", + "transparent": true, + "type": "text" + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "New row", + "titleSize": "h6" + }, + { + "collapse": false, + "height": "250px", + "panels": [ + { + "aliasColors": { + "prometheus": "#F9BA8F", + "{instance=\"localhost:9090\",interval=\"5s\",job=\"prometheus\"}": "#F9BA8F" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "editable": true, + "error": false, + "fill": 1, + "grid": {}, + "id": 2, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 5, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(prometheus_target_interval_length_seconds_count[5m])", + "intervalFactor": 2, + "legendFormat": "{{job}}", + "refId": "A", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Target Scrapes (last 5m)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "editable": true, + "error": false, + "fill": 1, + "grid": {}, + "id": 14, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 4, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "prometheus_target_interval_length_seconds{quantile!=\"0.01\", quantile!=\"0.05\"}", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{quantile}} ({{interval}})", + "metric": "", + "refId": "A", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Scrape Duration", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "content": "#### Scrapes\nPrometheus scrapes metrics from instrumented jobs, either directly or via an intermediary push gateway for short-lived jobs. Target scrapes will show how frequently targets are scraped, as measured over the last 5 minutes, per time series in the range vector. Scrape Duration will show how long the scrapes are taking, with percentiles available as series. ", + "editable": true, + "error": false, + "id": 11, + "links": [], + "mode": "markdown", + "span": 3, + "style": {}, + "title": "", + "transparent": true, + "type": "text" + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "New row", + "titleSize": "h6" + }, + { + "collapse": false, + "height": "250px", + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": null, + "editable": true, + "error": false, + "fill": 1, + "grid": {}, + "id": 12, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 9, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "prometheus_evaluator_duration_seconds{quantile!=\"0.01\", quantile!=\"0.05\"}", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{quantile}}", + "refId": "A", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Rule Eval Duration", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percentunit", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "content": "#### Rule Evaluation Duration\nThis graph panel plots the duration for all evaluations to execute. The 50th percentile, 90th percentile and 99th percentile are shown as three separate series to help identify outliers that may be skewing the data.", + "editable": true, + "error": false, + "id": 15, + "links": [], + "mode": "markdown", + "span": 3, + "style": {}, + "title": "", + "transparent": true, + "type": "text" + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "New row", + "titleSize": "h6" + } + ], + "schemaVersion": 14, + "style": "dark", + "tags": [ + "prometheus" + ], + "templating": { + "list": [] + }, + "time": { + "from": "now-5m", + "to": "now" + }, + "timepicker": { + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "browser", + "title": "Prometheus Stats", + "version": 0 +} \ No newline at end of file diff --git a/driver-redpanda/deploy/monitoring/dashboards/pulsar_perf.json b/driver-redpanda/deploy/monitoring/dashboards/pulsar_perf.json new file mode 100644 index 00000000..069dcf21 --- /dev/null +++ b/driver-redpanda/deploy/monitoring/dashboards/pulsar_perf.json @@ -0,0 +1,1036 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "id": 2, + "links": [], + "panels": [ + { + "aliasColors": { + "Bookie Add Entry Latency (p99)": "#d8365d", + "Broker - Read": "#66cc69", + "Broker - Write": "#00afba", + "Consume rate": "#173361", + "DD - Max throughput": "#d8365d", + "Produce rate": "#d8365d", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "fill": 5, + "fillGradient": 0, + "gridPos": { + "h": 11, + "w": 12, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "id": 12, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pluginVersion": "7.0.5", + "pointradius": 2, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Consume rate", + "dashes": true, + "fill": 0, + "linewidth": 2, + "yaxis": 1 + }, + { + "alias": "Produce rate", + "dashes": true, + "fill": 0, + "linewidth": 2, + "yaxis": 1 + }, + { + "alias": "DD - Max throughput", + "fill": 0, + "lines": true, + "linewidth": 3, + "points": false + }, + { + "alias": "Bookie Add Entry Rate", + "lines": true + }, + { + "alias": "Bookie Add Entry Latency (p99)", + "dashes": true, + "linewidth": 2, + "points": false, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (instance) (rate(node_disk_written_bytes_total{device=~\"nvme1n1|nvme2n1\"}[1m]))", + "hide": true, + "interval": "", + "intervalFactor": 1, + "legendFormat": "Broker - {{instance}} - Write", + "refId": "A" + }, + { + "expr": "sum(rate(node_disk_read_bytes_total{device=~\"nvme1n1|nvme2n1\"}[1m]))", + "hide": true, + "interval": "", + "legendFormat": "Broker - Read", + "refId": "B" + }, + { + "expr": "sum(pulsar_throughput_in)", + "hide": false, + "interval": "", + "legendFormat": "Produce rate", + "refId": "C" + }, + { + "expr": "sum(pulsar_throughput_out)", + "hide": false, + "interval": "", + "legendFormat": "Consume rate", + "refId": "D" + }, + { + "expr": "655000000", + "hide": true, + "interval": "", + "legendFormat": "DD - Max throughput", + "refId": "E" + }, + { + "expr": "sum(rate(bookie_WRITE_BYTES[30s]))", + "hide": false, + "interval": "", + "legendFormat": "Bookie Add Entry Rate", + "refId": "F" + }, + { + "expr": "avg(bookkeeper_server_ADD_ENTRY_REQUEST{success=\"true\", quantile=\"0.99\"})", + "hide": false, + "interval": "", + "legendFormat": "Bookie Add Entry Latency (p99)", + "refId": "G" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O throughput + Producer/Consume Throughput", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": "Throughput", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "ms", + "label": "Latency", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Bookie Add Entry Latency (p99)": "#d8365d", + "Broker - Read": "#66cc69", + "Broker - Write": "#00afba", + "Consume rate": "#173361", + "DD - Max throughput": "#d8365d", + "Produce rate": "#d8365d", + "Value": "#d8365d", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "fill": 5, + "fillGradient": 0, + "gridPos": { + "h": 11, + "w": 12, + "x": 12, + "y": 0 + }, + "hiddenSeries": false, + "id": 13, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pluginVersion": "7.0.5", + "pointradius": 2, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "bookie_journal_JOURNAL_CB_QUEUE_SIZE", + "interval": "", + "legendFormat": "Number of entries - {{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Journal Callback Queue Length", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "Entries", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "ms", + "label": "Latency", + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 11 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "delta(node_disk_io_time_seconds_total{device=~\"nvme1n1|nvme2n1\"}[1m])/60", + "interval": "", + "intervalFactor": 1, + "legendFormat": "Broker - {{instance}} ➝ Disk - {{device}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O Utilization", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percentunit", + "label": null, + "logBase": 1, + "max": "1", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 11 + }, + "hiddenSeries": false, + "id": 6, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (instance) (delta(node_disk_written_bytes_total{device=~\"nvme1n1|nvme2n1\"}[1m])/60)", + "interval": "", + "intervalFactor": 1, + "legendFormat": "Broker - {{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O throughput", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 20 + }, + "hiddenSeries": false, + "id": 4, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(delta(benchmark_producer_messages_sent[1m])/60)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Publish rate (messages/sec)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 20 + }, + "hiddenSeries": false, + "id": 5, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(delta(benchmark_producer_bytes_sent[1m])/60)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Publish throughput (MB/sec)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 28 + }, + "hiddenSeries": false, + "id": 10, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(kafka_log_logflushstats_logflushrateandtimems{quantile=\"0.99\"}[1m])", + "interval": "", + "legendFormat": "Broker - {{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Log Flush Time (p99)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Idle - Waiting for something to happen": "#052B51", + "Iowait - Waiting for I/O to complete": "blue", + "Nice - Niced processes executing in user mode": "yellow", + "Softirq - Servicing softirqs": "yellow", + "System - Processes executing in kernel mode": "dark-purple", + "User - Normal processes executing in user mode": "red", + "guest": "#9AC48A", + "idle": "#052B51", + "iowait": "#EAB839", + "irq": "#BF1B00", + "nice": "#C15C17", + "softirq": "#E24D42", + "steal": "#FCE2DE", + "system": "#508642", + "user": "#5195CE" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 2, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 13, + "w": 24, + "x": 0, + "y": 36 + }, + "hiddenSeries": false, + "id": 8, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 250, + "sort": null, + "sortDesc": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": true, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"user\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "User - Normal processes executing in user mode", + "refId": "B", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"system\"}[5m])) * 100", + "format": "time_series", + "interval": "10s", + "intervalFactor": 2, + "legendFormat": "System - Processes executing in kernel mode", + "refId": "A", + "step": 20 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"iowait\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Iowait - Waiting for I/O to complete", + "refId": "E", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"softirq\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Softirq - Servicing softirqs", + "refId": "G", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"idle\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Idle - Waiting for something to happen", + "refId": "D", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU Usage across all Brokers", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "percentage", + "logBase": 1, + "max": "100", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "refresh": false, + "schemaVersion": 25, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ] + }, + "timezone": "utc", + "title": "Performance Metrics - Pulsar", + "uid": "vYWrwI7Mk", + "version": 8 +} \ No newline at end of file diff --git a/driver-redpanda/deploy/monitoring/dashboards/rabbit_perf.json b/driver-redpanda/deploy/monitoring/dashboards/rabbit_perf.json new file mode 100644 index 00000000..c2e5a017 --- /dev/null +++ b/driver-redpanda/deploy/monitoring/dashboards/rabbit_perf.json @@ -0,0 +1,892 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "id": 7, + "links": [], + "panels": [ + { + "aliasColors": { + "Broker - Read": "#66cc69", + "Broker - Write": "#00afba", + "CPU Usage": "#66cc69", + "Consume rate": "#ffc40c", + "DD - Max throughput": "#d8365d", + "Produce rate": "#173361", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "fill": 5, + "fillGradient": 0, + "gridPos": { + "h": 11, + "w": 12, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "id": 12, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": false, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pluginVersion": "7.0.5", + "pointradius": 2, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Consume rate", + "dashes": true, + "fill": 0, + "linewidth": 2, + "yaxis": 1 + }, + { + "alias": "Produce rate", + "dashes": true, + "fill": 0, + "linewidth": 2, + "yaxis": 1 + }, + { + "alias": "DD - Max throughput", + "fill": 0, + "lines": true, + "linewidth": 3, + "points": false + }, + { + "alias": "CPU Usage", + "lines": true, + "points": false, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (instance) (rate(node_disk_written_bytes_total{device=~\"nvme1n1|nvme2n1\"}[1m]))", + "hide": true, + "interval": "", + "intervalFactor": 1, + "legendFormat": "Broker - {{instance}} - Write", + "refId": "A" + }, + { + "expr": "sum(rate(node_disk_read_bytes_total{device=~\"nvme1n1|nvme2n1\"}[1m]))", + "hide": true, + "interval": "", + "legendFormat": "Broker - Read", + "refId": "B" + }, + { + "expr": "sum(rate(benchmark_producer_bytes_sent[1m]))", + "hide": false, + "interval": "", + "legendFormat": "Produce rate", + "refId": "C" + }, + { + "expr": "sum(rate(benchmark_consumer_bytes_recv[1m]))", + "hide": false, + "interval": "", + "legendFormat": "Consume rate", + "refId": "D" + }, + { + "expr": "655000000", + "hide": true, + "interval": "", + "legendFormat": "DD - Max throughput", + "refId": "E" + }, + { + "expr": "(((count(count(avg(node_cpu_seconds_total)) by (cpu))) - avg(sum by (mode)(avg(irate(node_cpu_seconds_total{mode='idle'}[5m]))))) * 100) / count(count(avg(node_cpu_seconds_total)) by (cpu))", + "interval": "", + "legendFormat": "CPU Usage", + "refId": "F" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Producer/Consume Throughput + CPU Usage", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": "I/O throughput", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "percent", + "label": "CPU Usage", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 0 + }, + "hiddenSeries": false, + "id": 6, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (instance) (delta(node_disk_written_bytes_total{device=~\"nvme1n1|nvme2n1\"}[1m])/60)", + "interval": "", + "intervalFactor": 1, + "legendFormat": "Broker - {{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O throughput", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 9 + }, + "hiddenSeries": false, + "id": 5, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(delta(benchmark_producer_bytes_sent[1m])/60)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Publish throughput (MB/sec)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 11 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "delta(node_disk_io_time_seconds_total{device=~\"nvme1n1|nvme2n1\"}[1m])/60", + "interval": "", + "intervalFactor": 1, + "legendFormat": "Broker - {{instance}} ➝ Disk - {{device}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O Utilization", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percentunit", + "label": null, + "logBase": 1, + "max": "1", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 20 + }, + "hiddenSeries": false, + "id": 4, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(delta(benchmark_producer_messages_sent[1m])/60)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Publish rate (messages/sec)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 28 + }, + "hiddenSeries": false, + "id": 10, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(kafka_log_logflushstats_logflushrateandtimems{quantile=\"0.99\"}[1m])", + "interval": "", + "legendFormat": "Broker - {{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Log Flush Time (p99)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Idle - Waiting for something to happen": "#052B51", + "Iowait - Waiting for I/O to complete": "blue", + "Nice - Niced processes executing in user mode": "yellow", + "Softirq - Servicing softirqs": "yellow", + "System - Processes executing in kernel mode": "dark-purple", + "User - Normal processes executing in user mode": "red", + "guest": "#9AC48A", + "idle": "#052B51", + "iowait": "#EAB839", + "irq": "#BF1B00", + "nice": "#C15C17", + "softirq": "#E24D42", + "steal": "#FCE2DE", + "system": "#508642", + "user": "#5195CE" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 2, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 13, + "w": 24, + "x": 0, + "y": 36 + }, + "hiddenSeries": false, + "id": 8, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 250, + "sort": null, + "sortDesc": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": true, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"user\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "User - Normal processes executing in user mode", + "refId": "B", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"system\"}[5m])) * 100", + "format": "time_series", + "interval": "10s", + "intervalFactor": 2, + "legendFormat": "System - Processes executing in kernel mode", + "refId": "A", + "step": 20 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"iowait\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Iowait - Waiting for I/O to complete", + "refId": "E", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"softirq\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Softirq - Servicing softirqs", + "refId": "G", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"idle\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Idle - Waiting for something to happen", + "refId": "D", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU Usage across all Brokers", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "percentage", + "logBase": 1, + "max": "100", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "refresh": false, + "schemaVersion": 25, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ] + }, + "timezone": "utc", + "title": "Performance Metrics - RabbitMQ", + "uid": "vYWrwI7Mkrabbit", + "version": 3 +} \ No newline at end of file diff --git a/driver-redpanda/deploy/monitoring/dashboards/system.json b/driver-redpanda/deploy/monitoring/dashboards/system.json new file mode 100644 index 00000000..aa51c95f --- /dev/null +++ b/driver-redpanda/deploy/monitoring/dashboards/system.json @@ -0,0 +1,14051 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "gnetId": 1860, + "graphTooltip": 0, + "id": 2, + "iteration": 1597269377076, + "links": [], + "panels": [ + { + "aliasColors": { + "benchmark_producer_produce_latency{group=\"client\", instance=\"10.0.0.23:8081\", job=\"kafka\", quantile=\"0.99\", success=\"true\"}": "blue", + "benchmark_producer_produce_latency{group=\"client\", instance=\"10.0.0.61:8081\", job=\"kafka\", quantile=\"0.99\", success=\"true\"}": "yellow" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "id": 317, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": false, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 0.5, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "benchmark_producer_produce_latency{quantile=\"0.99\"}", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Publish latency - p99", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 8 + }, + "id": 261, + "panels": [ + { + "cacheTimeout": null, + "datasource": "${DS_PROMETHEUS}", + "description": "Busy state of all CPU cores together", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": {}, + "mappings": [ + { + "id": 0, + "op": "=", + "text": "N/A", + "type": 1, + "value": "null" + } + ], + "max": 100, + "min": 0, + "nullValueMode": "null", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 85 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 95 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 0, + "y": 9 + }, + "id": 20, + "links": [], + "options": { + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true + }, + "pluginVersion": "7.0.5", + "targets": [ + { + "expr": "(((count(count(node_cpu_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}) by (cpu))) - avg(sum by (mode)(irate(node_cpu_seconds_total{mode='idle',instance=~\"$node:$port\",job=~\"$job\"}[5m])))) * 100) / count(count(node_cpu_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}) by (cpu))", + "hide": false, + "intervalFactor": 1, + "legendFormat": "", + "refId": "A", + "step": 900 + } + ], + "title": "CPU Busy", + "type": "gauge" + }, + { + "cacheTimeout": null, + "datasource": "${DS_PROMETHEUS}", + "description": "Busy state of all CPU cores together (5 min average)", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": {}, + "mappings": [ + { + "id": 0, + "op": "=", + "text": "N/A", + "type": 1, + "value": "null" + } + ], + "max": 100, + "min": 0, + "nullValueMode": "null", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 85 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 95 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 3, + "y": 9 + }, + "id": 155, + "links": [], + "options": { + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true + }, + "pluginVersion": "7.0.5", + "targets": [ + { + "expr": "avg(node_load5{instance=~\"$node:$port\",job=~\"$job\"}) / count(count(node_cpu_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}) by (cpu)) * 100", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "refId": "A", + "step": 900 + } + ], + "title": "Sys Load (5m avg)", + "type": "gauge" + }, + { + "cacheTimeout": null, + "datasource": "${DS_PROMETHEUS}", + "description": "Busy state of all CPU cores together (15 min average)", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": {}, + "mappings": [ + { + "id": 0, + "op": "=", + "text": "N/A", + "type": 1, + "value": "null" + } + ], + "max": 100, + "min": 0, + "nullValueMode": "null", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 85 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 95 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 6, + "y": 9 + }, + "id": 19, + "links": [], + "options": { + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true + }, + "pluginVersion": "7.0.5", + "targets": [ + { + "expr": "avg(node_load15{instance=~\"$node:$port\",job=~\"$job\"}) / count(count(node_cpu_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}) by (cpu)) * 100", + "hide": false, + "intervalFactor": 1, + "refId": "A", + "step": 900 + } + ], + "title": "Sys Load (15m avg)", + "type": "gauge" + }, + { + "cacheTimeout": null, + "datasource": "${DS_PROMETHEUS}", + "description": "Non available RAM memory", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": {}, + "decimals": 0, + "mappings": [], + "max": 100, + "min": 0, + "nullValueMode": "null", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 80 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 90 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 9, + "y": 9 + }, + "hideTimeOverride": false, + "id": 16, + "links": [], + "options": { + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true + }, + "pluginVersion": "7.0.5", + "targets": [ + { + "expr": "((node_memory_MemTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_MemFree_bytes{instance=~\"$node:$port\",job=~\"$job\"}) / (node_memory_MemTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"} )) * 100", + "format": "time_series", + "hide": true, + "intervalFactor": 1, + "refId": "A", + "step": 900 + }, + { + "expr": "100 - ((node_memory_MemAvailable_bytes{instance=~\"$node:$port\",job=~\"$job\"} * 100) / node_memory_MemTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"})", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "refId": "B", + "step": 900 + } + ], + "title": "RAM Used", + "type": "gauge" + }, + { + "cacheTimeout": null, + "datasource": "${DS_PROMETHEUS}", + "description": "Used Swap", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": {}, + "mappings": [ + { + "id": 0, + "op": "=", + "text": "N/A", + "type": 1, + "value": "null" + } + ], + "max": 100, + "min": 0, + "nullValueMode": "null", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 25 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 12, + "y": 9 + }, + "id": 21, + "links": [], + "options": { + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true + }, + "pluginVersion": "7.0.5", + "targets": [ + { + "expr": "((node_memory_SwapTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_SwapFree_bytes{instance=~\"$node:$port\",job=~\"$job\"}) / (node_memory_SwapTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"} )) * 100", + "intervalFactor": 1, + "refId": "A", + "step": 900 + } + ], + "title": "SWAP Used", + "type": "gauge" + }, + { + "cacheTimeout": null, + "datasource": "${DS_PROMETHEUS}", + "description": "Used Root FS", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": {}, + "mappings": [ + { + "id": 0, + "op": "=", + "text": "N/A", + "type": 1, + "value": "null" + } + ], + "max": 100, + "min": 0, + "nullValueMode": "null", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 80 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 90 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 15, + "y": 9 + }, + "id": 154, + "links": [], + "options": { + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true + }, + "pluginVersion": "7.0.5", + "targets": [ + { + "expr": "100 - ((node_filesystem_avail_bytes{instance=~\"$node:$port\",job=~\"$job\",mountpoint=\"/\",fstype!=\"rootfs\"} * 100) / node_filesystem_size_bytes{instance=~\"$node:$port\",job=~\"$job\",mountpoint=\"/\",fstype!=\"rootfs\"})", + "format": "time_series", + "intervalFactor": 1, + "refId": "A", + "step": 900 + } + ], + "title": "Root FS Used", + "type": "gauge" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "${DS_PROMETHEUS}", + "description": "Total number of CPU cores", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "short", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 2, + "w": 2, + "x": 18, + "y": 9 + }, + "id": 14, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "maxPerRow": 6, + "nullPointMode": "null", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "tableColumn": "", + "targets": [ + { + "expr": "count(count(node_cpu_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}) by (cpu))", + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A", + "step": 900 + } + ], + "thresholds": "", + "title": "CPU Cores", + "type": "singlestat", + "valueFontSize": "50%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "${DS_PROMETHEUS}", + "decimals": 1, + "description": "System uptime", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "s", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 2, + "w": 4, + "x": 20, + "y": 9 + }, + "hideTimeOverride": true, + "id": 15, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "null", + "nullText": null, + "postfix": "s", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "tableColumn": "{group=\"broker-os\", instance=\"10.0.0.15:9100\", job=\"kafka\"}", + "targets": [ + { + "expr": "node_time_seconds{instance=~\"$node:$port\",job=~\"$job\"} - node_boot_time_seconds{instance=~\"$node:$port\",job=~\"$job\"}", + "intervalFactor": 2, + "refId": "A", + "step": 1800 + } + ], + "thresholds": "", + "title": "Uptime", + "type": "singlestat", + "valueFontSize": "50%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(50, 172, 45, 0.97)", + "rgba(237, 129, 40, 0.89)", + "rgba(245, 54, 54, 0.9)" + ], + "datasource": "${DS_PROMETHEUS}", + "decimals": 0, + "description": "Total RootFS", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "bytes", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 2, + "w": 2, + "x": 18, + "y": 11 + }, + "id": 23, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "maxPerRow": 6, + "nullPointMode": "null", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "tableColumn": "node_filesystem_size_bytes{device=\"/dev/nvme0n1p2\", fstype=\"xfs\", group=\"broker-os\", instance=\"10.0.0.15:9100\", job=\"kafka\", mountpoint=\"/\"}", + "targets": [ + { + "expr": "node_filesystem_size_bytes{instance=~\"$node:$port\",job=~\"$job\",mountpoint=\"/\",fstype!=\"rootfs\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "refId": "A", + "step": 900 + } + ], + "thresholds": "70,90", + "title": "RootFS Total", + "type": "singlestat", + "valueFontSize": "50%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "${DS_PROMETHEUS}", + "decimals": 0, + "description": "Total RAM", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "bytes", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 2, + "w": 2, + "x": 20, + "y": 11 + }, + "id": 75, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "maxPerRow": 6, + "nullPointMode": "null", + "nullText": null, + "postfix": "", + "postfixFontSize": "70%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "tableColumn": "node_memory_MemTotal_bytes{group=\"broker-os\", instance=\"10.0.0.15:9100\", job=\"kafka\"}", + "targets": [ + { + "expr": "node_memory_MemTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "intervalFactor": 1, + "refId": "A", + "step": 900 + } + ], + "thresholds": "", + "title": "RAM Total", + "type": "singlestat", + "valueFontSize": "50%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "${DS_PROMETHEUS}", + "decimals": 0, + "description": "Total SWAP", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "bytes", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 2, + "w": 2, + "x": 22, + "y": 11 + }, + "id": 18, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "maxPerRow": 6, + "nullPointMode": "null", + "nullText": null, + "postfix": "", + "postfixFontSize": "70%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "tableColumn": "node_memory_SwapTotal_bytes{group=\"broker-os\", instance=\"10.0.0.15:9100\", job=\"kafka\"}", + "targets": [ + { + "expr": "node_memory_SwapTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "intervalFactor": 1, + "refId": "A", + "step": 900 + } + ], + "thresholds": "", + "title": "SWAP Total", + "type": "singlestat", + "valueFontSize": "50%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + } + ], + "repeat": null, + "title": "Quick CPU / Mem / Disk", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 9 + }, + "id": 263, + "panels": [ + { + "aliasColors": { + "Busy": "#EAB839", + "Busy Iowait": "#890F02", + "Busy other": "#1F78C1", + "Idle": "#052B51", + "Idle - Waiting for something to happen": "#052B51", + "guest": "#9AC48A", + "idle": "#052B51", + "iowait": "#EAB839", + "irq": "#BF1B00", + "nice": "#C15C17", + "softirq": "#E24D42", + "steal": "#FCE2DE", + "system": "#508642", + "user": "#5195CE" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "description": "Basic CPU info", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 10 + }, + "hiddenSeries": false, + "id": 77, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "sideWidth": 250, + "sort": null, + "sortDesc": null, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": true, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Busy Iowait", + "color": "#890F02" + }, + { + "alias": "Idle", + "color": "#7EB26D" + }, + { + "alias": "Busy System", + "color": "#EAB839" + }, + { + "alias": "Busy User", + "color": "#0A437C" + }, + { + "alias": "Busy Other", + "color": "#6D1F62" + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (instance)(irate(node_cpu_seconds_total{mode=\"system\",instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Busy System", + "refId": "A", + "step": 240 + }, + { + "expr": "sum by (instance)(irate(node_cpu_seconds_total{mode='user',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Busy User", + "refId": "B", + "step": 240 + }, + { + "expr": "sum by (instance)(irate(node_cpu_seconds_total{mode='iowait',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Busy Iowait", + "refId": "C", + "step": 240 + }, + { + "expr": "sum by (instance)(irate(node_cpu_seconds_total{mode=~\".*irq\",instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Busy IRQs", + "refId": "D", + "step": 240 + }, + { + "expr": "sum (irate(node_cpu_seconds_total{mode!='idle',mode!='user',mode!='system',mode!='iowait',mode!='irq',mode!='softirq',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Busy Other", + "refId": "E", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='idle',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Idle", + "refId": "F", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU Basic", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "", + "logBase": 1, + "max": "100", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "SWAP Used": "#BF1B00", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap Used": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "description": "Basic memory usage", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 10 + }, + "hiddenSeries": false, + "id": 78, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "RAM Total", + "color": "#E0F9D7", + "fill": 0, + "stack": false + }, + { + "alias": "RAM Cache + Buffer", + "color": "#052B51" + }, + { + "alias": "RAM Free", + "color": "#7EB26D" + }, + { + "alias": "Avaliable", + "color": "#DEDAF7", + "fill": 0, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_MemTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "RAM Total", + "refId": "A", + "step": 240 + }, + { + "expr": "node_memory_MemTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_MemFree_bytes{instance=~\"$node:$port\",job=~\"$job\"} - (node_memory_Cached_bytes{instance=~\"$node:$port\",job=~\"$job\"} + node_memory_Buffers_bytes{instance=~\"$node:$port\",job=~\"$job\"})", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "RAM Used", + "refId": "B", + "step": 240 + }, + { + "expr": "node_memory_Cached_bytes{instance=~\"$node:$port\",job=~\"$job\"} + node_memory_Buffers_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "RAM Cache + Buffer", + "refId": "C", + "step": 240 + }, + { + "expr": "node_memory_MemFree_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "RAM Free", + "refId": "D", + "step": 240 + }, + { + "expr": "(node_memory_SwapTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_SwapFree_bytes{instance=~\"$node:$port\",job=~\"$job\"})", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "SWAP Used", + "refId": "E", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Basic", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Recv_bytes_eth2": "#7EB26D", + "Recv_bytes_lo": "#0A50A1", + "Recv_drop_eth2": "#6ED0E0", + "Recv_drop_lo": "#E0F9D7", + "Recv_errs_eth2": "#BF1B00", + "Recv_errs_lo": "#CCA300", + "Trans_bytes_eth2": "#7EB26D", + "Trans_bytes_lo": "#0A50A1", + "Trans_drop_eth2": "#6ED0E0", + "Trans_drop_lo": "#E0F9D7", + "Trans_errs_eth2": "#BF1B00", + "Trans_errs_lo": "#CCA300", + "recv_bytes_lo": "#0A50A1", + "recv_drop_eth0": "#99440A", + "recv_drop_lo": "#967302", + "recv_errs_eth0": "#BF1B00", + "recv_errs_lo": "#890F02", + "trans_bytes_eth0": "#7EB26D", + "trans_bytes_lo": "#0A50A1", + "trans_drop_eth0": "#99440A", + "trans_drop_lo": "#967302", + "trans_errs_eth0": "#BF1B00", + "trans_errs_lo": "#890F02" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "Basic network info per interface", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 17 + }, + "hiddenSeries": false, + "id": 74, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_receive_bytes_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])*8", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "recv {{device}}", + "refId": "A", + "step": 240 + }, + { + "expr": "irate(node_network_transmit_bytes_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])*8", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "trans {{device}} ", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Basic", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "pps", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 3, + "description": "Disk space used of all filesystems mounted", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 17 + }, + "height": "", + "hiddenSeries": false, + "id": 152, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "100 - ((node_filesystem_avail_bytes{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'} * 100) / node_filesystem_size_bytes{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'})", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{mountpoint}}", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk Space Used Basic", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percent", + "label": null, + "logBase": 1, + "max": "100", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Basic CPU / Mem / Net / Disk", + "type": "row" + }, + { + "collapsed": false, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 10 + }, + "id": 265, + "panels": [], + "repeat": null, + "title": "CPU / Memory / Net / Disk", + "type": "row" + }, + { + "aliasColors": { + "Idle - Waiting for something to happen": "#052B51", + "guest": "#9AC48A", + "idle": "#052B51", + "iowait": "#EAB839", + "irq": "#BF1B00", + "nice": "#C15C17", + "softirq": "#E24D42", + "steal": "#FCE2DE", + "system": "#508642", + "user": "#5195CE" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 12, + "w": 12, + "x": 0, + "y": 11 + }, + "hiddenSeries": false, + "id": 3, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 250, + "sort": null, + "sortDesc": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": true, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"system\",instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "interval": "10s", + "intervalFactor": 2, + "legendFormat": "System - Processes executing in kernel mode", + "refId": "A", + "step": 20 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='user',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "User - Normal processes executing in user mode", + "refId": "B", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='nice',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Nice - Niced processes executing in user mode", + "refId": "C", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='idle',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Idle - Waiting for something to happen", + "refId": "D", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='iowait',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Iowait - Waiting for I/O to complete", + "refId": "E", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='irq',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Irq - Servicing interrupts", + "refId": "F", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='softirq',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Softirq - Servicing softirqs", + "refId": "G", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='steal',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Steal - Time spent in other operating systems when running in a virtualized environment", + "refId": "H", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='guest',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Guest - Time spent running a virtual CPU for a guest operating system", + "refId": "I", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "percentage", + "logBase": 1, + "max": "100", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap - Swap memory usage": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839", + "Unused - Free memory unassigned": "#052B51" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 12, + "w": 12, + "x": 12, + "y": 11 + }, + "hiddenSeries": false, + "id": 24, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": null, + "sortDesc": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Hardware Corrupted - *./", + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_MemTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_MemFree_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_Buffers_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_Cached_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_Slab_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_PageTables_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_SwapCached_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Apps - Memory used by user-space applications", + "refId": "A", + "step": 240 + }, + { + "expr": "node_memory_PageTables_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "PageTables - Memory used to map between virtual and physical memory addresses", + "refId": "B", + "step": 240 + }, + { + "expr": "node_memory_SwapCached_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "SwapCache - Memory that keeps track of pages that have been fetched from swap but not yet been modified", + "refId": "C", + "step": 240 + }, + { + "expr": "node_memory_Slab_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Slab - Memory used by the kernel to cache data structures for its own use (caches like inode, dentry, etc)", + "refId": "D", + "step": 240 + }, + { + "expr": "node_memory_Cached_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Cache - Parked file data (file content) cache", + "refId": "E", + "step": 240 + }, + { + "expr": "node_memory_Buffers_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Buffers - Block device (e.g. harddisk) cache", + "refId": "F", + "step": 240 + }, + { + "expr": "node_memory_MemFree_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Unused - Free memory unassigned", + "refId": "G", + "step": 240 + }, + { + "expr": "(node_memory_SwapTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_SwapFree_bytes{instance=~\"$node:$port\",job=~\"$job\"})", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Swap - Swap space used", + "refId": "H", + "step": 240 + }, + { + "expr": "node_memory_HardwareCorrupted_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working", + "refId": "I", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Stack", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "receive_packets_eth0": "#7EB26D", + "receive_packets_lo": "#E24D42", + "transmit_packets_eth0": "#7EB26D", + "transmit_packets_lo": "#E24D42" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 12, + "w": 12, + "x": 0, + "y": 23 + }, + "hiddenSeries": false, + "id": 84, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_receive_bytes_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])*8", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive", + "refId": "A", + "step": 240 + }, + { + "expr": "irate(node_network_transmit_bytes_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])*8", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Transmit", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bps", + "label": "bits out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 3, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 12, + "w": 12, + "x": 12, + "y": 23 + }, + "height": "", + "hiddenSeries": false, + "id": 156, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": false, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_filesystem_size_bytes{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'} - node_filesystem_avail_bytes{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{mountpoint}}", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk Space Used", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 12, + "w": 12, + "x": 0, + "y": 35 + }, + "hiddenSeries": false, + "id": 229, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Read.*/", + "transform": "negative-Y" + }, + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_reads_completed_total{instance=~\"$node:$port\"}[5m])", + "interval": "", + "intervalFactor": 4, + "legendFormat": "{{device}} - Reads completed", + "refId": "A", + "step": 480 + }, + { + "expr": "irate(node_disk_writes_completed_total{instance=~\"$node:$port\"}[5m])", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{device}} - Writes completed", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk IOps", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "iops", + "label": "IO read (-) / write (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "io time": "#890F02" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 3, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 12, + "w": 12, + "x": 12, + "y": 35 + }, + "hiddenSeries": false, + "id": 42, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": null, + "sortDesc": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*read*./", + "transform": "negative-Y" + }, + { + "alias": "/.*sda.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde.*/", + "color": "#E24D42" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_read_bytes_total{instance=~\"$node:$port\"}[5m])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{device}} - Successfully read bytes", + "refId": "A", + "step": 240 + }, + { + "expr": "irate(node_disk_written_bytes_total{instance=~\"$node:$port\"}[5m])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{device}} - Successfully written bytes", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O Usage Read / Write", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": false, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes read (-) / write (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "ms", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "io time": "#890F02" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 3, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 12, + "w": 12, + "x": 0, + "y": 47 + }, + "hiddenSeries": false, + "id": 127, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": null, + "sortDesc": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_io_time_seconds_total{instance=~\"$node:$port\"} [5m])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{device}} - Time spent doing I/Os", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O Usage Times", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": false, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "time", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "s", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 59 + }, + "id": 266, + "panels": [ + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 12 + }, + "hiddenSeries": false, + "id": 136, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_Inactive_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Inactive - Memory which has been less recently used. It is more eligible to be reclaimed for other purposes", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_Active_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Active - Memory that has been used more recently and usually not reclaimed unless absolutely necessary", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Active / Inactive", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 12 + }, + "hiddenSeries": false, + "id": 135, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Committed_AS - *./" + }, + { + "alias": "/.*CommitLimit - *./", + "color": "#BF1B00", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_Committed_AS_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Committed_AS - Amount of memory presently allocated on the system", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_CommitLimit_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "CommitLimit - Amount of memory currently available to be allocated on the system", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Commited", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 22 + }, + "hiddenSeries": false, + "id": 191, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_Inactive_file_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Inactive_file - File-backed memory on inactive LRU list", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_Inactive_anon_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Inactive_anon - Anonymous and swap cache on inactive LRU list, including tmpfs (shmem)", + "refId": "B", + "step": 4 + }, + { + "expr": "node_memory_Active_file_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Active_file - File-backed memory on active LRU list", + "refId": "C", + "step": 4 + }, + { + "expr": "node_memory_Active_anon_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Active_anon - Anonymous and swap cache on active least-recently-used (LRU) list, including tmpfs", + "refId": "D", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Active / Inactive Detail", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "bytes", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "Total Swap": "#614D93", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 22 + }, + "hiddenSeries": false, + "id": 130, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_Writeback_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Writeback - Memory which is actively being written back to disk", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_WritebackTmp_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "WritebackTmp - Memory used by FUSE for temporary writeback buffers", + "refId": "B", + "step": 4 + }, + { + "expr": "node_memory_Dirty_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Dirty - Memory which is waiting to get written back to the disk", + "refId": "C", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Writeback and Dirty", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 32 + }, + "hiddenSeries": false, + "id": 138, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "ShmemHugePages - Memory used by shared memory (shmem) and tmpfs allocated with huge pages", + "fill": 0 + }, + { + "alias": "ShmemHugePages - Memory used by shared memory (shmem) and tmpfs allocated with huge pages", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_Mapped_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Mapped - Used memory in mapped pages files which have been mmaped, such as libraries", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_Shmem_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Shmem - Used shared memory (shared between several processes, thus including RAM disks)", + "refId": "B", + "step": 4 + }, + { + "expr": "node_memory_ShmemHugePages_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "ShmemHugePages - Memory used by shared memory (shmem) and tmpfs allocated with huge pages", + "refId": "C", + "step": 4 + }, + { + "expr": "node_memory_ShmemPmdMapped_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "ShmemPmdMapped - Ammount of shared (shmem/tmpfs) memory backed by huge pages", + "refId": "D", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Shared and Mapped", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "Total Swap": "#614D93", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 32 + }, + "hiddenSeries": false, + "id": 131, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_SUnreclaim_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "SUnreclaim - Part of Slab, that cannot be reclaimed on memory pressure", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_SReclaimable_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "SReclaimable - Part of Slab, that might be reclaimed, such as caches", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Slab", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 42 + }, + "hiddenSeries": false, + "id": 70, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_VmallocChunk_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "VmallocChunk - Largest contigious block of vmalloc area which is free", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_VmallocTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "VmallocTotal - Total size of vmalloc memory area", + "refId": "B", + "step": 4 + }, + { + "expr": "node_memory_VmallocUsed_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "VmallocUsed - Amount of vmalloc area which is used", + "refId": "C", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Vmalloc", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 42 + }, + "hiddenSeries": false, + "id": 159, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_Bounce_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Bounce - Memory used for block device bounce buffers", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Bounce", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 52 + }, + "hiddenSeries": false, + "id": 129, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Inactive *./", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_AnonHugePages_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "AnonHugePages - Memory in anonymous huge pages", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_AnonPages_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "AnonPages - Memory in user pages not backed by files", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Anonymous", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 52 + }, + "hiddenSeries": false, + "id": 160, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_KernelStack_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "KernelStack - Kernel memory stack. This is not reclaimable", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_Percpu_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "PerCPU - Per CPU memory allocated dynamically by loadable modules", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Kernel / CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#806EB7", + "Total RAM + Swap": "#806EB7", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 62 + }, + "hiddenSeries": false, + "id": 140, + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_HugePages_Free{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "HugePages_Free - Huge pages in the pool that are not yet allocated", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_HugePages_Rsvd{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "HugePages_Rsvd - Huge pages for which a commitment to allocate from the pool has been made, but no allocation has yet been made", + "refId": "B", + "step": 4 + }, + { + "expr": "node_memory_HugePages_Surp{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "HugePages_Surp - Huge pages in the pool above the value in /proc/sys/vm/nr_hugepages", + "refId": "C", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory HugePages Counter", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "pages", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#806EB7", + "Total RAM + Swap": "#806EB7", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 62 + }, + "hiddenSeries": false, + "id": 71, + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_HugePages_Total{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "HugePages - Total size of the pool of huge pages", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_Hugepagesize_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Hugepagesize - Huge Page size", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory HugePages Size", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 72 + }, + "hiddenSeries": false, + "id": 128, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_DirectMap1G_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "DirectMap1G - Amount of pages mapped as this size", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_DirectMap2M_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "DirectMap2M - Amount of pages mapped as this size", + "refId": "B", + "step": 4 + }, + { + "expr": "node_memory_DirectMap4k_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "DirectMap4K - Amount of pages mapped as this size", + "refId": "C", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory DirectMap", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 72 + }, + "hiddenSeries": false, + "id": 137, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_Unevictable_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Unevictable - Amount of unevictable memory that can't be swapped out for a variety of reasons", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_Mlocked_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "MLocked - Size of pages locked to memory using the mlock() system call", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Unevictable and MLocked", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "Total Swap": "#614D93", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 82 + }, + "hiddenSeries": false, + "id": 132, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_NFS_Unstable_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "NFS Unstable - Memory in NFS pages sent to the server, but not yet commited to the storage", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory NFS", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Memory Meminfo", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 60 + }, + "id": 267, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 23 + }, + "hiddenSeries": false, + "id": 176, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*out/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_vmstat_pgpgin{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Pagesin - Page in operations", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_vmstat_pgpgout{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Pagesout - Page out operations", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Pages In / Out", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "pages out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 23 + }, + "hiddenSeries": false, + "id": 22, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*out/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_vmstat_pswpin{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Pswpin - Pages swapped in", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_vmstat_pswpout{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Pswpout - Pages swapped out", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Pages Swap In / Out", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "pages out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 33 + }, + "hiddenSeries": false, + "id": 175, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Pgfault - Page major and minor fault operations", + "fill": 0, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_vmstat_pgfault{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Pgfault - Page major and minor fault operations", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_vmstat_pgmajfault{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Pgmajfault - Major page fault operations", + "refId": "B", + "step": 4 + }, + { + "expr": "irate(node_vmstat_pgfault{instance=~\"$node:$port\",job=~\"$job\"}[5m]) - irate(node_vmstat_pgmajfault{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Pgminfault - Minor page fault operations", + "refId": "C", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Page Faults", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "faults", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "Total Swap": "#614D93", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 33 + }, + "hiddenSeries": false, + "id": 307, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_vmstat_oom_kill{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "oom killer invocations ", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "OOM Killer", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Memory Vmstat", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 61 + }, + "id": 293, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 24 + }, + "hiddenSeries": false, + "id": 260, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Variation*./", + "color": "#890F02" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_timex_estimated_error_seconds{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Estimated error in seconds", + "refId": "A", + "step": 240 + }, + { + "expr": "node_timex_offset_seconds{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Time offset in between local system and reference clock", + "refId": "B", + "step": 240 + }, + { + "expr": "node_timex_maxerror_seconds{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Maximum error in seconds", + "refId": "C", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Time Syncronized Drift", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "seconds", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 24 + }, + "hiddenSeries": false, + "id": 291, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_timex_loop_time_constant{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Phase-locked loop time adjust", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Time PLL Adjust", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 34 + }, + "hiddenSeries": false, + "id": 168, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Variation*./", + "color": "#890F02" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_timex_sync_status{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Is clock synchronized to a reliable server (1 = yes, 0 = no)", + "refId": "A", + "step": 240 + }, + { + "expr": "node_timex_frequency_adjustment_ratio{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Local clock frequency adjustment", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Time Syncronized Status", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 34 + }, + "hiddenSeries": false, + "id": 294, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_timex_tick_seconds{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Seconds between clock ticks", + "refId": "A", + "step": 240 + }, + { + "expr": "node_timex_tai_offset_seconds{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "International Atomic Time (TAI) offset", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Time Misc", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "seconds", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "title": "System Timesync", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 62 + }, + "id": 312, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 7 + }, + "hiddenSeries": false, + "id": 62, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_procs_blocked{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Processes blocked waiting for I/O to complete", + "refId": "A", + "step": 240 + }, + { + "expr": "node_procs_running{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Processes in runnable state", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Processes Status", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 7 + }, + "hiddenSeries": false, + "id": 315, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_processes_state{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ state }}", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Processes State", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 17 + }, + "hiddenSeries": false, + "id": 148, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_forks_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Processes forks second", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Processes Forks", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "forks / sec", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 17 + }, + "hiddenSeries": false, + "id": 149, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Max.*/", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(process_virtual_memory_bytes{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Processes virtual memory size in bytes", + "refId": "A", + "step": 240 + }, + { + "expr": "process_resident_memory_max_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Maximum amount of virtual memory available in bytes", + "refId": "B", + "step": 240 + }, + { + "expr": "irate(process_virtual_memory_bytes{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Processes virtual memory size in bytes", + "refId": "C", + "step": 240 + }, + { + "expr": "irate(process_virtual_memory_max_bytes{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Maximum amount of virtual memory available in bytes", + "refId": "D", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Processes Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 27 + }, + "hiddenSeries": false, + "id": 313, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "PIDs limit", + "color": "#F2495C", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_processes_pids{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Number of PIDs", + "refId": "A", + "step": 240 + }, + { + "expr": "node_processes_max_processes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "PIDs limit", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "PIDs Number and Limit", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 27 + }, + "hiddenSeries": false, + "id": 305, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*waiting.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_schedstat_running_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "CPU {{ cpu }} - seconds spent running a process", + "refId": "A", + "step": 240 + }, + { + "expr": "irate(node_schedstat_waiting_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "CPU {{ cpu }} - seconds spent by processing waiting for this CPU", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Process schdeule stats Running / Waiting", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "seconds", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 37 + }, + "hiddenSeries": false, + "id": 314, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Threads limit", + "color": "#F2495C", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_processes_threads{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Allocated threads", + "refId": "A", + "step": 240 + }, + { + "expr": "node_processes_max_threads{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Threads limit", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Threads Number and Limit", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "title": "System Processes", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 63 + }, + "id": 269, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 64 + }, + "hiddenSeries": false, + "id": 8, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_context_switches_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Context switches", + "refId": "A", + "step": 240 + }, + { + "expr": "irate(node_intr_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Interrupts", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Context Switches / Interrupts", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 64 + }, + "hiddenSeries": false, + "id": 7, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_load1{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 4, + "legendFormat": "Load 1m", + "refId": "A", + "step": 480 + }, + { + "expr": "node_load5{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 4, + "legendFormat": "Load 5m", + "refId": "B", + "step": 480 + }, + { + "expr": "node_load15{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 4, + "legendFormat": "Load 15m", + "refId": "C", + "step": 480 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "System Load", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 74 + }, + "hiddenSeries": false, + "id": 259, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Critical*./", + "color": "#E24D42", + "fill": 0 + }, + { + "alias": "/.*Max*./", + "color": "#EF843C", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_interrupts_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ type }} - {{ info }}", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Interrupts Detail", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 74 + }, + "hiddenSeries": false, + "id": 306, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_schedstat_timeslices_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "CPU {{ cpu }}", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Schedule timeslices executed by each cpu", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 84 + }, + "hiddenSeries": false, + "id": 151, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_entropy_available_bits{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Entropy available to random number generators", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Entropy", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 84 + }, + "hiddenSeries": false, + "id": 308, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(process_cpu_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Time spent", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU time spent in user and system contexts", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "seconds", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 94 + }, + "hiddenSeries": false, + "id": 64, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Max*./", + "color": "#890F02", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "process_max_fds{instance=~\"$node:$port\",job=~\"$job\"}", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Maximum open file descriptors", + "refId": "A", + "step": 240 + }, + { + "expr": "process_open_fds{instance=~\"$node:$port\",job=~\"$job\"}", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Open file descriptors", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "File Descriptors", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "System Misc", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 64 + }, + "id": 304, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 17 + }, + "hiddenSeries": false, + "id": 158, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Critical*./", + "color": "#E24D42", + "fill": 0 + }, + { + "alias": "/.*Max*./", + "color": "#EF843C", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_hwmon_temp_celsius{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ chip }} {{ sensor }} temp", + "refId": "A", + "step": 240 + }, + { + "expr": "node_hwmon_temp_crit_alarm_celsius{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": true, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ chip }} {{ sensor }} Critical Alarm", + "refId": "B", + "step": 240 + }, + { + "expr": "node_hwmon_temp_crit_celsius{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ chip }} {{ sensor }} Critical", + "refId": "C", + "step": 240 + }, + { + "expr": "node_hwmon_temp_crit_hyst_celsius{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": true, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ chip }} {{ sensor }} Critical Historical", + "refId": "D", + "step": 240 + }, + { + "expr": "node_hwmon_temp_max_celsius{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": true, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ chip }} {{ sensor }} Max", + "refId": "E", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Hardware temperature monitor", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "celsius", + "label": "temperature", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 17 + }, + "hiddenSeries": false, + "id": 300, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Max*./", + "color": "#EF843C", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_cooling_device_cur_state{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Current {{ name }} in {{ type }}", + "refId": "A", + "step": 240 + }, + { + "expr": "node_cooling_device_max_state{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max {{ name }} in {{ type }}", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Throttle cooling device", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 27 + }, + "hiddenSeries": false, + "id": 302, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_power_supply_online{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ power_supply }} online", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Power supply", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "title": "Hardware Misc", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 65 + }, + "id": 296, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 10 + }, + "hiddenSeries": false, + "id": 297, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_systemd_socket_accepted_connections_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ name }} Connections", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Systemd Sockets", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 10 + }, + "hiddenSeries": false, + "id": 298, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Failed", + "color": "#F2495C" + }, + { + "alias": "Inactive", + "color": "#FF9830" + }, + { + "alias": "Active", + "color": "#73BF69" + }, + { + "alias": "Deactivating", + "color": "#FFCB7D" + }, + { + "alias": "Activating", + "color": "#C8F2C2" + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_systemd_units{instance=~\"$node:$port\",job=~\"$job\",state=\"activating\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Activating", + "refId": "A", + "step": 240 + }, + { + "expr": "node_systemd_units{instance=~\"$node:$port\",job=~\"$job\",state=\"active\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Active", + "refId": "B", + "step": 240 + }, + { + "expr": "node_systemd_units{instance=~\"$node:$port\",job=~\"$job\",state=\"deactivating\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Deactivating", + "refId": "C", + "step": 240 + }, + { + "expr": "node_systemd_units{instance=~\"$node:$port\",job=~\"$job\",state=\"failed\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Failed", + "refId": "D", + "step": 240 + }, + { + "expr": "node_systemd_units{instance=~\"$node:$port\",job=~\"$job\",state=\"inactive\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Inactive", + "refId": "E", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Systemd Units State", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "title": "Systemd", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 66 + }, + "id": 270, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 29 + }, + "hiddenSeries": false, + "id": 9, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [ + { + "alias": "/.*Read.*/", + "transform": "negative-Y" + }, + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_reads_completed_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "intervalFactor": 4, + "legendFormat": "{{device}} - Reads completed", + "refId": "A", + "step": 8 + }, + { + "expr": "irate(node_disk_writes_completed_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "intervalFactor": 2, + "legendFormat": "{{device}} - Writes completed", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk IOps Completed", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "iops", + "label": "IO read (-) / write (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 29 + }, + "hiddenSeries": false, + "id": 33, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Read.*/", + "transform": "negative-Y" + }, + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_read_bytes_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 4, + "legendFormat": "{{device}} - Read bytes", + "refId": "A", + "step": 8 + }, + { + "expr": "irate(node_disk_written_bytes_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Written bytes", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk R/W Data", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": "bytes read (-) / write (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 3, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 39 + }, + "hiddenSeries": false, + "id": 37, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Read.*/", + "transform": "negative-Y" + }, + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_read_time_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "hide": false, + "intervalFactor": 4, + "legendFormat": "{{device}} - Read time", + "refId": "A", + "step": 8 + }, + { + "expr": "irate(node_disk_write_time_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{device}} - Write time", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk R/W Time", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "time. read (-) / write (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 39 + }, + "hiddenSeries": false, + "id": 35, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_io_time_weighted_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "intervalFactor": 4, + "legendFormat": "{{device}} - IO time weighted", + "refId": "A", + "step": 8 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk IOs Weighted", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "time", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 49 + }, + "hiddenSeries": false, + "id": 133, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Read.*/", + "transform": "negative-Y" + }, + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_reads_merged_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "intervalFactor": 2, + "legendFormat": "{{device}} - Read merged", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_disk_writes_merged_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "intervalFactor": 2, + "legendFormat": "{{device}} - Write merged", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk R/W Merged", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "iops", + "label": "I/Os", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 3, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 49 + }, + "hiddenSeries": false, + "id": 36, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_io_time_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "intervalFactor": 4, + "legendFormat": "{{device}} - IO time", + "refId": "A", + "step": 8 + }, + { + "expr": "irate(node_disk_discard_time_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "interval": "", + "intervalFactor": 4, + "legendFormat": "{{device}} - discard time", + "refId": "B", + "step": 8 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Time Spent Doing I/Os", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "time", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 59 + }, + "hiddenSeries": false, + "id": 34, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_disk_io_now{instance=~\"$node:$port\",job=~\"$job\"}", + "interval": "", + "intervalFactor": 4, + "legendFormat": "{{device}} - IO now", + "refId": "A", + "step": 8 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk IOs Current in Progress", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "iops", + "label": "I/Os", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 59 + }, + "hiddenSeries": false, + "id": 301, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null as zero", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_discards_completed_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "interval": "", + "intervalFactor": 4, + "legendFormat": "{{device}} - Discards completed", + "refId": "A", + "step": 8 + }, + { + "expr": "irate(node_disk_discards_merged_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{device}} - Discards merged", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk IOps Discards completed / merged", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "iops", + "label": "IOs", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Storage Disk", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 67 + }, + "id": 271, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 3, + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 29 + }, + "hiddenSeries": false, + "id": 43, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_filesystem_avail_bytes{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{mountpoint}} - Available", + "metric": "", + "refId": "A", + "step": 4 + }, + { + "expr": "node_filesystem_free_bytes{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'}", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{mountpoint}} - Free", + "refId": "B", + "step": 2 + }, + { + "expr": "node_filesystem_size_bytes{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'}", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{mountpoint}} - Size", + "refId": "C", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Filesystem space available", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 29 + }, + "hiddenSeries": false, + "id": 41, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_filesystem_files_free{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{mountpoint}} - Free file nodes", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "File Nodes Free", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "file nodes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 39 + }, + "hiddenSeries": false, + "id": 28, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_filefd_maximum{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 4, + "legendFormat": "Max open files", + "refId": "A", + "step": 8 + }, + { + "expr": "node_filefd_allocated{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Open files", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "File Descriptor", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "files", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 39 + }, + "hiddenSeries": false, + "id": 219, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_filesystem_files{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{mountpoint}} - File nodes total", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "File Nodes Size", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "file Nodes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "/ ReadOnly": "#890F02" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": null, + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 49 + }, + "hiddenSeries": false, + "id": 44, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_filesystem_readonly{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{mountpoint}} - ReadOnly", + "refId": "A", + "step": 4 + }, + { + "expr": "node_filesystem_device_error{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{mountpoint}} - Device error", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Filesystem in ReadOnly / Error", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": "1", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Storage Filesystem", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 68 + }, + "id": 272, + "panels": [ + { + "aliasColors": { + "receive_packets_eth0": "#7EB26D", + "receive_packets_lo": "#E24D42", + "transmit_packets_eth0": "#7EB26D", + "transmit_packets_lo": "#E24D42" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 109 + }, + "hiddenSeries": false, + "id": 60, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_receive_packets_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_network_transmit_packets_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{device}} - Transmit", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic by Packets", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "pps", + "label": "packets out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 109 + }, + "hiddenSeries": false, + "id": 142, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_receive_errs_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive errors", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_network_transmit_errs_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Rransmit errors", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Errors", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "pps", + "label": "packets out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 119 + }, + "hiddenSeries": false, + "id": 143, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_receive_drop_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive drop", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_network_transmit_drop_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Transmit drop", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Drop", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "pps", + "label": "packets out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 119 + }, + "hiddenSeries": false, + "id": 141, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_receive_compressed_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive compressed", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_network_transmit_compressed_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Transmit compressed", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Compressed", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "pps", + "label": "packets out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 129 + }, + "hiddenSeries": false, + "id": 146, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_receive_multicast_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive multicast", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Multicast", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "pps", + "label": "packets out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 129 + }, + "hiddenSeries": false, + "id": 144, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_receive_fifo_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive fifo", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_network_transmit_fifo_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Transmit fifo", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Fifo", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "pps", + "label": "packets out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 139 + }, + "hiddenSeries": false, + "id": 145, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_receive_frame_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive frame", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Frame", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "pps", + "label": "packets out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 139 + }, + "hiddenSeries": false, + "id": 231, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_transmit_carrier_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Statistic transmit_carrier", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Carrier", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 149 + }, + "hiddenSeries": false, + "id": 232, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_transmit_colls_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Transmit colls", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Colls", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 149 + }, + "hiddenSeries": false, + "id": 61, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "NF conntrack limit", + "color": "#890F02", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_nf_conntrack_entries{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "NF conntrack entries", + "refId": "A", + "step": 4 + }, + { + "expr": "node_nf_conntrack_entries_limit{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "NF conntrack limit", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "NF Contrack", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "entries", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 159 + }, + "hiddenSeries": false, + "id": 230, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_arp_entries{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ device }} - ARP entries", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "ARP Entries", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "Entries", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 159 + }, + "hiddenSeries": false, + "id": 288, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_network_mtu_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ device }} - Bytes", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "MTU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 169 + }, + "hiddenSeries": false, + "id": 280, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_network_speed_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ device }} - Speed", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Speed", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 169 + }, + "hiddenSeries": false, + "id": 289, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_network_transmit_queue_length{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ device }} - Interface transmit queue length", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Queue Length", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "none", + "label": "packets", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 179 + }, + "hiddenSeries": false, + "id": 290, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Dropped.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_softnet_processed_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "CPU {{cpu}} - Processed", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_softnet_dropped_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "CPU {{cpu}} - Dropped", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Softnet Packets", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "packetes drop (-) / process (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 179 + }, + "hiddenSeries": false, + "id": 310, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_softnet_times_squeezed_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "CPU {{cpu}} - Squeezed", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Softnet Out of Quota", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 189 + }, + "hiddenSeries": false, + "id": 309, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_network_up{operstate=\"up\",instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{interface}} - Operational state UP", + "refId": "A", + "step": 4 + }, + { + "expr": "node_network_carrier{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "instant": false, + "legendFormat": "{{device}} - Physical link state", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Operational Status", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Network Traffic", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 69 + }, + "id": 273, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 13 + }, + "hiddenSeries": false, + "id": 63, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_sockstat_TCP_alloc{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "TCP_alloc - Allocated sockets", + "refId": "A", + "step": 240 + }, + { + "expr": "node_sockstat_TCP_inuse{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "TCP_inuse - Tcp sockets currently in use", + "refId": "B", + "step": 240 + }, + { + "expr": "node_sockstat_TCP_mem{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": true, + "interval": "", + "intervalFactor": 2, + "legendFormat": "TCP_mem - Used memory for tcp", + "refId": "C", + "step": 240 + }, + { + "expr": "node_sockstat_TCP_orphan{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "TCP_orphan - Orphan sockets", + "refId": "D", + "step": 240 + }, + { + "expr": "node_sockstat_TCP_tw{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "TCP_tw - Sockets wating close", + "refId": "E", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Sockstat TCP", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 13 + }, + "hiddenSeries": false, + "id": 124, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_sockstat_UDPLITE_inuse{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "UDPLITE_inuse - Udplite sockets currently in use", + "refId": "A", + "step": 240 + }, + { + "expr": "node_sockstat_UDP_inuse{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "UDP_inuse - Udp sockets currently in use", + "refId": "B", + "step": 240 + }, + { + "expr": "node_sockstat_UDP_mem{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "UDP_mem - Used memory for udp", + "refId": "C", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Sockstat UDP", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 23 + }, + "hiddenSeries": false, + "id": 126, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_sockstat_sockets_used{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Sockets_used - Sockets currently in use", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Sockstat Used", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "sockets", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 23 + }, + "hiddenSeries": false, + "id": 220, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_sockstat_TCP_mem_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "mem_bytes - TCP sockets in that state", + "refId": "A", + "step": 240 + }, + { + "expr": "node_sockstat_UDP_mem_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "mem_bytes - UDP sockets in that state", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Sockstat Memory Size", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 33 + }, + "hiddenSeries": false, + "id": 125, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_sockstat_FRAG_inuse{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "FRAG_inuse - Frag sockets currently in use", + "refId": "A", + "step": 240 + }, + { + "expr": "node_sockstat_FRAG_memory{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "FRAG_memory - Used memory for frag", + "refId": "B", + "step": 240 + }, + { + "expr": "node_sockstat_RAW_inuse{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "RAW_inuse - Raw sockets currently in use", + "refId": "C", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Sockstat FRAG / RAW", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Network Sockstat", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 70 + }, + "id": 274, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 32 + }, + "height": "", + "hiddenSeries": false, + "id": 221, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Out.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_IpExt_InOctets{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "InOctets - Received octets", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_netstat_IpExt_OutOctets{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "OutOctets - Sent octets", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Netstat IP In / Out Octets", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "octects out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 32 + }, + "height": "", + "hiddenSeries": false, + "id": 81, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_Ip_Forwarding{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Forwarding - IP forwarding", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Netstat IP Forwarding", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "datagrams", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": null, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 42 + }, + "height": "", + "hiddenSeries": false, + "id": 115, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Out.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_Icmp_InMsgs{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "InMsgs - Messages which the entity received. Note that this counter includes all those counted by icmpInErrors", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_netstat_Icmp_OutMsgs{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "OutMsgs - Messages which this entity attempted to send. Note that this counter includes all those counted by icmpOutErrors", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "ICMP In / Out", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "messages out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": null, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 42 + }, + "height": "", + "hiddenSeries": false, + "id": 50, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Out.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_Icmp_InErrors{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "InErrors - Messages which the entity received but determined as having ICMP-specific errors (bad ICMP checksums, bad length, etc.)", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "ICMP Errors", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "messages out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": null, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 52 + }, + "height": "", + "hiddenSeries": false, + "id": 55, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Out.*/", + "transform": "negative-Y" + }, + { + "alias": "/.*Snd.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_Udp_InDatagrams{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "InDatagrams - Datagrams received", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_netstat_Udp_OutDatagrams{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "OutDatagrams - Datagrams sent", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "UDP In / Out", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "datagrams out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 52 + }, + "height": "", + "hiddenSeries": false, + "id": 109, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_Udp_InErrors{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "InErrors - UDP Datagrams that could not be delivered to an application", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_netstat_Udp_NoPorts{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "NoPorts - UDP Datagrams received on a port with no listener", + "refId": "B", + "step": 4 + }, + { + "expr": "irate(node_netstat_UdpLite_InErrors{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "interval": "", + "legendFormat": "InErrors Lite - UDPLite Datagrams that could not be delivered to an application", + "refId": "C" + }, + { + "expr": "irate(node_netstat_Udp_RcvbufErrors{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "RcvbufErrors - UDP buffer errors received", + "refId": "D", + "step": 4 + }, + { + "expr": "irate(node_netstat_Udp_SndbufErrors{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "SndbufErrors - UDP buffer errors send", + "refId": "E", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "UDP Errors", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "datagrams", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": null, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 62 + }, + "height": "", + "hiddenSeries": false, + "id": 299, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Out.*/", + "transform": "negative-Y" + }, + { + "alias": "/.*Snd.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_Tcp_InSegs{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "instant": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "InSegs - Segments received, including those received in error. This count includes segments received on currently established connections", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_netstat_Tcp_OutSegs{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "OutSegs - Segments sent, including those on current connections but excluding those containing only retransmitted octets", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "TCP In / Out", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "datagrams out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 62 + }, + "height": "", + "hiddenSeries": false, + "id": 104, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_TcpExt_ListenOverflows{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "ListenOverflows - Times the listen queue of a socket overflowed", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_netstat_TcpExt_ListenDrops{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "ListenDrops - SYNs to LISTEN sockets ignored", + "refId": "B", + "step": 4 + }, + { + "expr": "irate(node_netstat_TcpExt_TCPSynRetrans{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "TCPSynRetrans - SYN-SYN/ACK retransmits to break down retransmissions in SYN, fast/timeout retransmits", + "refId": "C", + "step": 4 + }, + { + "expr": "irate(node_netstat_Tcp_RetransSegs{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "interval": "", + "legendFormat": "RetransSegs - Segments retransmitted - that is, the number of TCP segments transmitted containing one or more previously transmitted octets", + "refId": "D" + }, + { + "expr": "irate(node_netstat_Tcp_InErrs{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "interval": "", + "legendFormat": "InErrs - Segments received in error (e.g., bad TCP checksums)", + "refId": "E" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "TCP Errors", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 72 + }, + "height": "", + "hiddenSeries": false, + "id": 85, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*MaxConn *./", + "color": "#890F02", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_netstat_Tcp_CurrEstab{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "CurrEstab - TCP connections for which the current state is either ESTABLISHED or CLOSE- WAIT", + "refId": "A", + "step": 4 + }, + { + "expr": "node_netstat_Tcp_MaxConn{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "MaxConn - Limit on the total number of TCP connections the entity can support (Dinamic is \"-1\")", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "TCP Connections", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "connections", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 72 + }, + "height": "", + "hiddenSeries": false, + "id": 91, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Sent.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_TcpExt_SyncookiesFailed{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "SyncookiesFailed - Invalid SYN cookies received", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_netstat_TcpExt_SyncookiesRecv{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "SyncookiesRecv - SYN cookies received", + "refId": "B", + "step": 4 + }, + { + "expr": "irate(node_netstat_TcpExt_SyncookiesSent{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "SyncookiesSent - SYN cookies sent", + "refId": "C", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "TCP SynCookie", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 82 + }, + "height": "", + "hiddenSeries": false, + "id": 82, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_Tcp_ActiveOpens{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "ActiveOpens - TCP connections that have made a direct transition to the SYN-SENT state from the CLOSED state", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_netstat_Tcp_PassiveOpens{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "PassiveOpens - TCP connections that have made a direct transition to the SYN-RCVD state from the LISTEN state", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "TCP Direct Transition", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "connections", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Network Netstat", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 71 + }, + "id": 279, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 154 + }, + "hiddenSeries": false, + "id": 40, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_scrape_collector_duration_seconds{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{collector}} - Scrape duration", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Node Exporter Scrape Time", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "seconds", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 154 + }, + "hiddenSeries": false, + "id": 157, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*error.*/", + "color": "#F2495C", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_scrape_collector_success{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{collector}} - Scrape success", + "refId": "A", + "step": 4 + }, + { + "expr": "node_textfile_scrape_error{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{collector}} - Scrape textfile error (1 = true)", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Node Exporter Scrape", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Node Exporter", + "type": "row" + } + ], + "refresh": false, + "schemaVersion": 25, + "style": "dark", + "tags": [ + "linux" + ], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "Prometheus", + "value": "Prometheus" + }, + "hide": 0, + "includeAll": false, + "label": "datasource", + "multi": false, + "name": "DS_PROMETHEUS", + "options": [], + "query": "prometheus", + "queryValue": "", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "type": "datasource" + }, + { + "allValue": null, + "current": { + "selected": false, + "text": "kafka", + "value": "kafka" + }, + "datasource": "${DS_PROMETHEUS}", + "definition": "", + "hide": 0, + "includeAll": false, + "label": "Job", + "multi": false, + "name": "job", + "options": [], + "query": "label_values(node_uname_info, job)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": { + "selected": false, + "text": "ip-10-0-0-15.us-west-2.compute.internal", + "value": "ip-10-0-0-15.us-west-2.compute.internal" + }, + "datasource": "${DS_PROMETHEUS}", + "definition": "", + "hide": 0, + "includeAll": false, + "label": "Host:", + "multi": false, + "name": "name", + "options": [], + "query": "label_values(node_uname_info{job=~\"$job\"}, nodename)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": { + "selected": false, + "text": "10.0.0.15", + "value": "10.0.0.15" + }, + "datasource": "${DS_PROMETHEUS}", + "definition": "", + "hide": 2, + "includeAll": false, + "label": "Host:", + "multi": false, + "name": "node", + "options": [], + "query": "label_values(node_uname_info{nodename=\"$name\"}, instance)", + "refresh": 1, + "regex": "/([^:]+):.*/", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": { + "selected": false, + "text": "9100", + "value": "9100" + }, + "datasource": "${DS_PROMETHEUS}", + "definition": "", + "hide": 0, + "includeAll": false, + "label": "Port", + "multi": false, + "name": "port", + "options": [], + "query": "label_values(node_uname_info{instance=~\"$node:(.*)\"}, instance)", + "refresh": 1, + "regex": "/[^:]+:(.*)/", + "skipUrlSync": false, + "sort": 3, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-3h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "browser", + "title": "Node Exporter Full", + "uid": "rYdddlPWk", + "version": 4 +} \ No newline at end of file diff --git a/driver-redpanda/deploy/monitoring/dashboards/zookeeper.json b/driver-redpanda/deploy/monitoring/dashboards/zookeeper.json new file mode 100644 index 00000000..d8a4ab43 --- /dev/null +++ b/driver-redpanda/deploy/monitoring/dashboards/zookeeper.json @@ -0,0 +1,953 @@ +{ + "annotations": { + "list": [] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "hideControls": false, + "id": 3, + "links": [], + "rows": [ + { + "collapse": false, + "height": 236, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 1, + "description": "All write operations (create / setData / ...)", + "fill": 0, + "id": 1, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(zookeeper_server_requests_latency_ms_count{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\", type=\"write\"}[30s])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Write Requests", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "writes / s", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "description": "All read operations (getData / getChildren / ...)", + "fill": 0, + "id": 2, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(zookeeper_server_requests_latency_ms_count{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\", type=\"read\"}[30s])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Read Requests", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "reads / s", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "Dashboard Row", + "titleSize": "h6" + }, + { + "collapse": false, + "height": 250, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "description": "All write operations (create / setData / ...)", + "fill": 0, + "id": 4, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null as zero", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "zookeeper_server_requests_latency_ms{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\", type=\"write\", quantile=\"0.99\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Write Latency - 99pct", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 1, + "description": "All write operations (create / setData / ...)", + "fill": 0, + "id": 5, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "zookeeper_server_requests_latency_ms{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\", type=\"read\", quantile=\"0.99\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Read Latency - 99pct", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "Dashboard Row", + "titleSize": "h6" + }, + { + "collapse": false, + "height": 250, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 1, + "description": "", + "fill": 1, + "id": 6, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 12, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum(irate(zookeeper_server_requests{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\"}[30s])) by (type)", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{type}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Request Types", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "Dashboard Row", + "titleSize": "h6" + }, + { + "collapse": false, + "height": 250, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "description": "", + "fill": 0, + "id": 7, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "zookeeper_server_znode_count{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{cluster}} - {{kubernetes_pod_name}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Z-Nodes count", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "description": "Size of the data stored in a ZK server", + "fill": 0, + "id": 8, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "zookeeper_server_data_size_bytes{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{cluster}} - {{kubernetes_pod_name}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Data set size", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "Dashboard Row", + "titleSize": "h6" + }, + { + "collapse": false, + "height": 250, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "description": "Number of opened connections", + "fill": 1, + "id": 9, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 4, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "zookeeper_server_connections{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{cluster}} - {{kubernetes_pod_name}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Connections", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "description": "", + "fill": 1, + "id": 10, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 4, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "zookeeper_server_watches_count{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{cluster}} - {{kubernetes_pod_name}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Number of watches", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "description": "", + "fill": 0, + "id": 11, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 4, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "zookeeper_server_ephemerals_count{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{cluster}} - {{kubernetes_pod_name}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Number of ephemerals", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "Dashboard Row", + "titleSize": "h6" + } + ], + "schemaVersion": 14, + "style": "dark", + "tags": [ + "zookeeper" + ], + "templating": { + "list": [ + { + "allValue": null, + "current": { + "text": "us-central", + "value": "us-central" + }, + "datasource": "Prometheus", + "hide": 0, + "includeAll": false, + "label": "Cluster", + "multi": false, + "name": "cluster", + "options": [], + "query": "{cluster=~\".+\"}", + "refresh": 1, + "regex": "/.*[^_]cluster=\\\"([^\\\"]+)\\\".*/", + "sort": 1, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Prometheus", + "hide": 0, + "includeAll": true, + "label": "ZK Server", + "multi": false, + "name": "server", + "options": [], + "query": "zookeeper_server_requests_latency_ms_count{cluster=~\"$cluster\", kubernetes_pod_name=~\".+\"}", + "refresh": 2, + "regex": "/.*[^_]kubernetes_pod_name=\\\"([^\\\"]+)\\\".*/", + "sort": 1, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "browser", + "title": "ZooKeeper", + "version": 11 +} \ No newline at end of file diff --git a/driver-redpanda/deploy/monitoring/grafana.ini b/driver-redpanda/deploy/monitoring/grafana.ini new file mode 100644 index 00000000..e28ca88b --- /dev/null +++ b/driver-redpanda/deploy/monitoring/grafana.ini @@ -0,0 +1,39 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +[users] +# disable user signup / registration +allow_sign_up = false + +# Default UI theme ("dark" or "light") +default_theme = dark + +[auth.anonymous] +# enable anonymous access +enabled = true + +# specify organization name that should be used for unauthenticated users +org_name = Main Org. + +# specify role for unauthenticated users +org_role = Viewer + +[dashboards] +enabled = true +path = /var/lib/grafana/dashboards \ No newline at end of file diff --git a/driver-redpanda/deploy/monitoring/jmx_exporter/client.yml b/driver-redpanda/deploy/monitoring/jmx_exporter/client.yml new file mode 100644 index 00000000..792f8af8 --- /dev/null +++ b/driver-redpanda/deploy/monitoring/jmx_exporter/client.yml @@ -0,0 +1,22 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +lowercaseOutputLabelNames: false +lowercaseOutputName: true +## Export everything diff --git a/driver-redpanda/deploy/monitoring/jmx_exporter/jmx_prometheus_javaagent-0.13.0.jar b/driver-redpanda/deploy/monitoring/jmx_exporter/jmx_prometheus_javaagent-0.13.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..c55a92e5434fc28d56bb3b9d3757de4acf812617 GIT binary patch literal 374371 zcmbrkV|Zp=wf5wtqO3oMfbww5g5p-Qnc49Y! z{6shg-7dJRXadKLj7cm$VZmtx7UH>$g~5S!V@hjxuIigLxH?0H0~)a?Fu9lwsQ1b5 zdkZR8^YI}b4zU*~KkXYe>0J!^Lm#$z zowJn+Um5yyyEar9ijr`nKG-+7G6VClH{29)yJY3nq}ie*Rql+z|B7sHHu_-!Vb>cM}IEds|Z% z3sYC;zh#Z`57t(;9)HUN_W#y{vxT9Fsmb4Rg!iu;{Y_9P{tv$Xn`qJe-@E<0Fbe)X z*HVUVhJxm%b}ppC_I75L=JdukhR)8#O1knmf@r*;G?di=7TWpu(!Ra6r{uBrTBt$` zAz>C;lvl9a{X0y?ZWzA{{l~&(llbl-@5NcSuw(eXKj&plc9~CqaJZX2Zh!In1N#iq z59BL+idL5JVBcjtQY_Hu#|M88|1{e1cEDy4*CFqqBbyndL>yMgMLH7?#Cs_Xh9)HU zG{KH~YI`G}cDP2%;cHu zqklVSpLC+tjvdChl1c3>E)=z&zH4n<=jff_Rk^PBgJ^yAtb?*pDIgdglZLYLTQDZQ z+Ahxh_|UKHpY4GBt7$+!BXqnvO`P6cV zKSEykDaoc0^V;lSRvarYHLGg$BX}+_1oNcU`M~}~2V%aYrzL+lAeh-}-4lNu8H}0gg)elB$y~5LHHXWch%jNc# z%Uo=RvC-X3RyzX`b~nmnKU%$0QxxtH@TOG0F7g&^2Wg9xHOe%NHo$IEaMjUo&mb9z zm!ARqCLDs>Y%@WKZXru5Kj?sH#6`SHjC3QNN&#rqq&efEa0t&2i85S^;bU|pk!9|- zUK`41#hG~YX;D*@J5(1PXuUilU!boH>MRej0{V5D3 z%dKX*Ta~B%QIZtRL}{mdJ+iL8cDURxP~$tZ9gj^)aTppWw>(uC+#deyb-I9il1ey> zzmPbNJj{mvwqkgB&E*PXfZ&5L1>%-o5!uL7McfZg%A;7Vj7A09BTEl40rf63Y|}H8 zE(?SLQ&kP6dbJBgT&zBc0--fZkR7Kn1k4W)DC@GH!BmC#!qDgiw|EI@*bgiYQKGq zfJuD78Kf&K0~IH(ir+uMR(TFEz(}L}DE~x#QWANNs*i&%_5mX2vcn+ak92x%EIlrK#}Sxy)V10 zEwG2T!d}d~fI}7od#R!k7Np#)t3goJJ-WLmA}!hc2ia8g{0|eyw=9*-55C#Qm9e57 z<}CFeA0@&3gahn1bokr7Ehl9M_!TN2(TqN2I@!bSU~U^evlh<;!WKc9h({w&t~z~) z&vh2f2WH!Eha_}h?+Me`AI2zAV@hj{hq6PTwe=u3Sr}bwT7@y4spwU(^L!}ZS&~aR z(K&`dIZfVo1FRCPYQNp0Im-!FbR-+&9H53-W1COhw!ZH6K~JPAH;rqaEVI5^@y}k- zF?Sp0{$Qzy9l|a>%w%Fgo>*^oaW);eD+=e$?m*re)s$cjqY|aO6C2;&zM&f^-D#+@ zht{r9wCKBf!G%p}#eBMXf&6TN%%lTrBh1+-Mu@*%D_DMgO{@DDKC#Wm_#uD?RfO;H z{Rlmdpwbnk1J=K?;|@r%1GlUo)O!3t=twxp7j(kI!wNipl74qi^gc(YulF2gzM;Hl z=Z5TDyI(ol<8_}&Obt+y+;%o9o(i}zm(dlyT6Fa>19#@}skoaYj#(roC5)z|D?rg4 zo>;NyN+B!SE*n{Z0mUq{h9;I~uIhEOaz`?x zDEt-5cP<8lI48tldrq{a*BKIScw6yU3Q#6=&Q~313_E&(%{Nq^X`j5F$HtIeoiu?| zr+25P{q39t>Kpz1j%Mt21>;s@uwp~9$iOt*4VWhLIk_qyCGJj*E&8=sNVil?aBH{bnBKhhKcC>rGM0cs$8Mon?ucF%xUprQHsd)N)wf1ML2cgr5YZ)n&ejXFQC!Jj5 z`KgsRDUD<)_I17BRYL#UJo$O4H|v?xuTN%(<7%syq0O5=ZdY9=)&NV~F+~aYE@_~K zs!5qSW_zdQTs>X}IzcrRa!gQk-A#>JEQa1{-Xjd9#<%n90MOqsvqvhA=J>r7u}(}p z$fk7e)xL;TXa4$e!~hD0g-&t(O17(Y+)%lA$YdkKvO_lHo8wV@vHt{G8z+; z46zLX1a$N#3;yRaiugxH|1%x8HFPtz`&)@A(Lb77+SC763Q7NWbG^T0{eStMe{}fA zss4YxL*MF8!e{tb!uPj6{jaR@zyBr&ds})BTbm(`ZTsJBaDG?%yXfB322_@BwKP1S zo0%ZII`*RL_>UNr&54v0(qW|RV_|RG;+k&n>#{ZM=XB)!zD1HzMW{tmb`~a`y8WS_ z4=%PcUZIXcdSwEnWOJFs>ZFAqwR_oCPx+_&Nq`~j%6F8?=2n&j%2ctBnAZ$N7~68HPnM)MrG-$ zZJscSJXAXNWhTk5KOnF3k1lE%14njc} zY9|rn6hJi5xy-D*eGPji-n*{^Q@n%qG|@~FhR+dVEwiS0uKc__C(NDjlj6uGMd3k6 zKYGjiW8EYuL$L>DFak5p!fVS3q>(F;3LbvRVfEwEwdOG!(@-xhI_BnatTXXfr>Ku~-!66n6RKBsL<4GRxG%G#^VbbD8v z#3hct9k_rS$Mg~Athy{&qh&=z*}`Q`{g`RC<90-3BkwC#IHoAou!qdWL8oePp= zoykv`gc8N|-V6iiw=6$WY8GnH>h_{Im1IogqFr&}1(ns)(WFNKI2O{m3);~W1# zCm~imb?Z7XSK3EZ$X5OwSI-8dv>4&}Uo3LJ>a@0Uug^~_+oiYf=ARmltiLYr==g-? zTY_uW{C5sdUSlZ;#O2_^>v2Prmf`XhMUIPAB-!IwQ_|w&z#zoyrr;k~()^0bQZu3` z+bM$R@`d>^f{vo@8XuShl?=@LDVLSw5MeN+$ltd)=e$~P+oR$g)~Yu_mi8^QM+L9; zYM2|>u5cLdCwL!@{G*!i&_CX^10eHi0DQ~?ma#RNn7UHowx&SwCEt3RqAb+Z{L#T% zTi(_SY-RH^%Q974vr9kj9=yqIu41OpbeUM$%y5I8-*QbeHyy*L|9Q?Dt-oY+S2hC zwngo5+sf`dk~)#-ODbKq_mtrA-0BX;NiCwm@0V*^$~w|y(<0<&t;w!oF4`2op03y6 zVP!eOu4yJC%marVUhem=3M|S2f5+a(>SKd3UVmFL79V;v8%Q0|Jsk z`&Z&1@&8Pbe^}bV)XBxt)LC?_4kj3Y6tMe|yVuLBQ;@WygU7X`Tm4`~k}lC1^7=Tn zeDU>?nFS_US-*4F&y5K^E2C+pXMz8#+Fo}XIW8U=pEHQ~Rp-JCQQ}`+hP@Cvd+{TIe$V489ixw4ZwAT<1h-F~b6mW;`_`hJx6z zXSmvigswQkT37anAOZ>Fy+320+B96*5FZi2@I5EHi#X)qhcJOx$WB=nHAa>WOut2y zQMqjOeAmTs2w;PntU|)cI0TyFxOWH=!RIHw%UsJ!s5z@g()kMU{g1zJ(d5CV`}rqo zgg@Kte~ydf-^NAR*vatE|4k|@WNK)qWNK_`>1OKm?+8^T2ucqCu)?+%+uGYX{X-zT zu#k9E-5kDA;|GCX)qPkfuQ!sOtj1qsdR`y*5t5Z$0!&a#u%INj*!8!rh^`13YJjEz zX6fUZ?CsT~hl@CRDzJ7=2}*4B$0&9LYk;D#wj@;Lfq}^jou51+5NsRSH>rkypXJR=N*) zrYlL}a2P*tZBsoMqC5c>MBQX^Z54S~i+-b9o$S5|b8pzMu^u6C$Ia7_YLk<)Fm|bg z+|+(7rb~C8`&sy9=Xm>m!frx)nknkiXE!?&P?E{DXYtzbtTw z{B89AYgYdM3SY`+N(%yLpUvR&%aq06#)ok8gj7K&lR+?QBQR(|m-?&3@%>z(#Rw(1ZkDAcVO{dgaayF zv@QzGq2YPqG7y+8A{bp>EU~=$x3KGTnwftJmO|?e75_rQ;9o~K9jR`G`xshgf@wxk zB}ywNHeF4^5Izm^R+n6;PGmo96Z+LDRy7pYc9zRk-;d;~`x@YzpPlMVZIaPpG@?9` z`wKxRoIVG`Q&OWlx*dyymnEfEMm;oyB|gc}RX!tCk(6SIjUK-W%x$yGF-u)kc6HpM zSYvt)6O=4Et*80mGPO~Ap70lnUg%w(QU6}`FYamwQR492^wTm-w0Ac&0RzahMSM|_(Kz{)+9D41y}buAKN zDJSP*B3C|=$;Q@UmL_kf3mHUX6UW(#|7t&B@RQkRNQfeDZ0OQdhyx zY#eHeYr)vE{iS7B{~NDiLir8)G@K2md$1`#DY@8c?_X|QUL;Fo9 zv(qF}zT4oKF0*;{(Ta>Hiy~5YB+0bS@-{R^kJ^qEN5eE8g#uV?-I& zYtkIAQJemA;5pXcDJ}W|hBH^8#5=NRKRU z!Eenh=0!7!rE};E@fa9m@ic#~_G+Olns%?5rn-csz&lzE^bk5~`Gc$kZ;pHd|FyKl9e2P^{wyoCKO3KaPHen?duja- zV*8)z9)Om;YGsXnj;zzlMi~K#1P<;vhdTH;hiI#msOH6nNzf}CsfbCx!3ntA>B{hY z8hL;)h(sRXQtw=@C?GFfzAiXz9TO3P{^G@}ppR-QlbpdIz!KJoh~6pwPQ{-C8-EQo>McKu~-ql6j$0VV= z9`#STUHO-tcJ#L&1qIK#d9^`#LNpeFU?OD620nQ0s8}}cS({XWUpqhMAY~SxkAwNg zJ@ zEE)72JT+TeZpWRdPh)9P9N+*zG^*RZgiHDff^&lO^|vU-yoO$ilXg6rIpD8}Fxd zCG+%Yun!LEYw5xgAY2ibZNWd$_HiIsh8|FJdz8Nlk7O@Aqls8}kp}R?(w!>A;B?Eq z)NdsX72e<&UD(Rj1Ty<5&ti#n4c!Zs%KXI)$pJy$DoqE;t)vTaUeaNAS&Ps=tA(oy zit_lfc&mWx&D&P73(mQlLd(3Wli!5SmGkn$;FrEd9iCfm_yX_J=%E1XY%`$REI8g4mzdsSExc+DK)O~}tuUGG7-lWo&R zx$-LTsx)}0QrW_=ubz~%7FGlYd+6D%>8R@TZ-4E5@cn+s{h0qeN+U{er?wNMmC!YG z8fy;aR^QL1;DP)8Zm5v8K&T9B`06lk6{ki%6>~T`OQG{D@GZm>CuvF6B`@jF{9fb% zL3&{|)UJMhT0fFj%=wjs-e2%*UA~peCjj>Zbb}zjltCssu7l+syO9S7KhF1Bd6sdx zqFWFycGz({K5H0^Kmjh6z$ogRHM3-)Hl8Vjm~R{<>h+k>%)lVfL4Joba7;K(d@%p# ztS=N>q#;}EkzZ5v#WzkfP|gwy1aK!F&cs3~Y)%>0pwiKV6GuZKjoS-&+6AAn6;3%| zR8sPfU&bcb;?^vm|JLKMZ$^Z~{nODT`qTXU=RC#z-(8UZo^nlTdHSd3!K|{*mjv{XF=FcmW2OqQ=BS zm1Sw9K(&?gYFbFJ(pYG&BWmK>IBjHu)6hZcKOUZM#!c!lILnpb3l0e9wGJv?-=E+FaR!Iu45%P08FTMY0NT&K%10zHz( zflSe^_ksZ{1t9|sV;rga(*;mHmR?GNAIo~IlWb7pNHdCsjT1R9aO*gw( z1Qm0v+_0wn_te{PShE99=eVWw-bt7r2DAKr+%0;YgUQ9WEn~`B#l3rzAedtIDR^-; z6ri#Q|Vzvu2FgVHJ>vWz*H&9ACn@}3X}Y`;1xl+)&7Rh84g9Vn?kMn?vL zq!iV_V8bB+FomuzB0vY18_7V!t%c>lDm&lsm%soRg7{0|4z=7?P&-I5D|3oL@As#a z_-r4+<&|?QnGX73rXQ)fJ&b#erG=5LvBr>jk!K*dBhcp-R({&vUP+3#=RiW~CnIop z4Cx#4KhV8k-@+)uNlrwZlHef(ho~uhy=b%bG9;R@aoM;flYCNCl_A6JF@`3A%nX|e zDGcKb=D&>>Eu>0t!^2|ava%z`b9?2*dIrsX)HzvkGa6 zZnV<$p@>P}Eg{kGB?E|u~&JU)=2O3=`!f9lg2-07t%J?_0tT)SL`44Km zMugL-cy)+xKRXJLk0!}v+33GD?~i)1i}(BKM4$&{?s7E9lNc4_JDP(Zsl&%*=p>p5 zLv*n*i^qk{QeyGCOD+OEi%u9017@`4U>=c%w6AkywC&-_ z*4np`fxK3nq#Y)E#uB8OhQ>&%$nN`q)~RqwgGSgA_pEme&GXO=Puei46u`%E=3xJs z3$Mo`>^`%d?r8r*2yIWwrydL1rveMJydO2pU;|6Oc;E)A_yw*?DE{fkh-}+NHkks@ z%8nL)^{_cK^zQON%w|@`?jVr{K$6hhjsEPfCiw#Goa^FK16eLZRa6DvGp$_x07l7Aq z=gL?`(nBu%@)uB4n|-x%@2mAK96eRzX5ynzztY0M)-eIgXk4}DB@Q>D=;q6m8C;*F z8i5-;`2Dno;00aedp_EAtphwGt=l)4Z$z84$&6kvBNe}G&N08U@x3U!J^=W~Xg`R5 zme#EGk26TK<dYmm@vEuI@|r`rzK!y9>5uS#c))*+8ziaw z{iZFVcSB%$;)=e!JTPbj+f>4t-&6X%^#xXctHCpY+;Q63YyjBjmUAU;Fr;nDV7EzEb7h8w!7vaeTf zK4SC+mDB)wEBcbyjIOOADI11_J&aIRqX}s| zPfluY?oH`FyOkiqGX;`iBnmgG`QUtuCrpTuzv!isd=hR8s}}h@vF5lIdV3Dm*;3vHoqi%V)H0g@1~PS_4-{Neqna3Wq81B1=;eZ#;O&LG{|Dq zr@VpULn6b5`2GaP3~oCVn^L%@EFm-1B^O5x-OzX{`#}&D-^=fSb=_@99P=*JhJzWn z@+4f$DME`^V3En3p79CMTTIVT>W=LRp%jyMcV597ps!gViR<3i3Zjht^Vb8{U2vDu zYmm$xIw2_OU4eX3-q7RX_9(e&ssn4$? z$mzsG7moVW*1fga?Uks7xekOK0u~t)T)r(o4|dAF3`i#i!V;G8mF?_f39;;?LaTNG zW1i{6>d-~Wd=!i<+dQb>_Y>^m#jja)o~Z?sJQH0rKslF%{lNa|FWa(;>h-YGQ^uEd1#NuV)v(u7 zgIzW}P5gV?fyTEsnwi_Xt2TN_A29JO*bx?z^7MpptBeGxEORkx`)=&=L2$F8dW_5j zE9hs=zApKe zuzdZB5A<50h|G=}eeR5fWb)9N+PALloXPs??Ud=;vBjPm(;2_$%6`)5sNYQRru$B$rJaw(Lpt%W>mr6~tlau1Fbrqp-$(TNx>JwA5o zBU#0xE`!IAV6Pq*W?yv<>Mrx7dKYtX>;vTfv~#BNv^8(Dj0;;E9~&zkK@m1K)D zeBtnu$YjQX;_pX=D~5+_qqsp6hx|>=6KgJU2La-N!EflmH+B6&l`9;`VtQ!ew7sDU zH}hlns4_&|fXgr6xm8{2M*3X~Rlx6zY&?f)lY1pm|2O+HT@owm`DHmjc~{4sx(qA) zBLg5iP_#&6GD+TCijK&ZS=gVdm_Mn!6%RQ(ltZg*V67GIXa^@dKFb04a(}$bf=oZW zy;6ihEi!aTDS$QEkIpr6Of#n587b|qPEL(j6n=iORJeM;>+u2Cgo16%xD$_e>`4Ck zos2$Vd#7+2O3D>n>`E{r_T_3<1?S|R#JgN77d~2<4W-wcvdJ+aR(fjynT^f47B^`t zv@0PzH2JBh|uZv)vb;__Jwfpv?E*nNul!H-DWqv-{5n4oslk` zzr;anboqI^0iDDu*zM$vTLde)4@6GNZ`O_ZJxb{0+_xgEZi|kOEdcDh9khmrh*Z0& zO0Hzp$XI|Rwrd>`h;>EF~h={}OA059d7tM0J z=O4dn^Vni)D7Mil_ zmu}5)+K`I1EA(rb$Zr*M)8!$I~>CU*Pi*_y;OLve-8cHsSLO!JDOhv?2a@A*8v|4!L zI@ZAvuYs1BVP|Pl#W26z|7t$#hZpXRtUlmjtk7L~l6S35ZVuq!t||?FES&E|hrEl# z)>bUJGPe`0<4d#e)7)~_$!H8ohlwA(rRRKFIB?Q43U3TMCt9_h=HLlXDIA5N8wZox7L^J) z;l6vkb8MiQ=3>|9Aoa9Pu~`v@^xv@+hqNPJOP2HD6};+ zzP#!tQ%kFoZ~v4s#@?|H>}KRjI*O>Ovhv;8vzC}cEY`{MhsE%|{zXVniA;Bu%f#I9ay8#*t!68Z)J%SS(24aA7r0RAa`cz%X)|6d;$i1`ZfITInU%hmedo zotl3~htYbLdW|d|l`^;Q*xwv$K4vM5 zWQ{pFzu&5l=cR5wVUKgb9?kkJeji(HZLYGtCevAbyv-@>T_xApes{F|midJfn325U z0Mo|(Bhl!x0&K{sd~v*H)gEkL44bBhXa!~JH=K^vmkFkkmP?%92s177EAPqe=&x-Tx0ip=G5FD3p71> zEq;>xA5sVdcTAx(R-Kft9+Ghb`Uf(dv`2gBj@RyyyM&4T)=pGMj$4E8k2imq-N9Af0L-+GErOC|cF=7occ1Ymo4p(p*n~nZvDvm7i~HatJY6qq&V=1;Zrg|Omt8#Y8~QQ(MXP$dbM;a z+C1we1b2F0a$TUlObTGu*fMmCs{S?-tV(;jOlh7cW2*w2JSH70>S?Ft(#t{xY{|irhX^mF zRl>!s9Afje>yz7yeOl*Aq{G8>)?0J3B*WMGcB)sgo8*)9Cge?Sf&29gYDx45(*p0Y z?$Bc2GX;^v&Hq8cY2Toe_~O0rSoNxH~sZ8!uM=+eZTe zP%kal<%dCYO_%Dk63O9wo|?te`dc@R$KY0NGM5=zmY+!$`$~6orM*gNF~$bR?kF+0 zf?tr5{9o|bno1h?{(rUWI?-Q$=3)Q=$+P^cGPv;HD}xKUTH2UM+L_t^XFvQuP9Uh* zs-udd`9YwtRVo6YG7H>(c807}X*HpQh|#iPeP=_9X$)tUBsVl@$ZE*Qdymik4E3|^ z5zv-@t0R0Z9PH@W9Yi{xvzj*3yPRNt;&Z=ze>KV!}pkxv?| z2E_(fH>fczJzYs-nSrgTTy$wIrBprf#9J43$7Q64c6T+>Pol>V&3?D&5GX<3LU;40 z=P1>x?a44oC#fg~=&j9UqV5j9(W$Tv#swd#rm~|kz8@~D8>wms(B@*MQbJ(3(FU%Y!v8=*hwp)+N9|*)iGZpmz-6b(^TJla z*1Kypz>>2u%XE;xP# zw7!UA$E-t~+~^)iqvBE>G4~Ll5e7?_9xGGW8qMIk(Z?GW$hOT|PKzwc1jsPuSdof> zu!`@Va?^mNlunb|cGz9pan%jN26^O&vi5_y#bjl^_6^Q44N9WjvT_W5PcLNeN!TcUM7P1_!p- z@NC99j)3CX$jQHYeo}kw=LtWtP>QICb-Qo)-Y|+Cec}S`86S;(t zxmX_00&4R02k_y8?}_%Wl_vG(^50Q@gp(xe4#pt7{YcQj3E&x9=@Az=b!*b8Ksh@=1p z9U-6rM-B`fjf}3Bm}cU@glbMst0n!gqSe%F)dbU|k;dj~jXWl#obrpBzNxvO+0OM# z_vdo+GWh=2w6{Guv!sH6e`@F3<)8j{1H;q79D|=TAu|5YWky-V5NU0aT?~?Cn?_OT zl_ne7Shh2GF=0#p-o4b=gI$B!viMLEoSS_6YD9<_g-RC7hT!sdD0a+A_JW55fgC+d z78WUEoJ5(GBG*^19Lr(kdR2fZ3FbmJ$!7Ot89T@syu-1X)6jOh86j2wtwR~(Y|-4e z5*O=9ma~X*Yt#f&W=_+=WSV|z+i38hVpT8ez90qKddWha5&*efM$is2((FSSTJ0X zp2GAvequD7mvk0fL}jx?PQrGpx4JGLWg0Bn04r0M<1N#530YqedvI^nJ2>7&>p@h6 zoG}#<9N7@`Vgq9>2am}mFcIZ0T5=J6pVePy!BT~iwH;myIjPuvwOa}cYWnsfhVBbA z@e<|CZ#&v$kU_S{$3$IDV+EqHsf_S7=MUuut>simR@7C43maK__8pJe!n~i~0zq0g zFseg=>q`5U%U5Zx0uC3&;dsqx5gW0VyeM^y7lSSJCX*p!O1e|U`V|apl-u;S;o$BN zk_tXKLV7d<6~3|I*0lpt@*-(|D?%}&OJmqnvTGR!I!F{IrAvX;)-{SEp2&(tOLRyf zvW1b*i47#SyBc(8*)t|KPntTR$?2Trqn2;T%4Nx-hA>S|S^=1dlUGC>|Id1$_Egt6Y?jv1|)7Tc&>FT@qe60mEJb$nsIXIuw<= zByFM4#)jQDz&oo%6XH}kEJztrQ)q@vz-_ujEreXG*;N!TAcGA;WWab8+tOum*43+j zONBG{I)>v?2K)eDPw>5AakervmBQ>g*}{(2{P)eP8iB_Q)hp1WL&@abvL>lu?Ku zuIPsk91fV<$v2ymLj@1v15#^b>kZ;{X)dz@fcM!|asn~uIu_mc38{VqBczl;k%zyP zC>v{>y#bvWqEE}*bgzqu zFRpBQ@su8SI$=RQy5W4ltD#QSrOrPi} zndDnE;e3kIxa#$_#wrLCJl%N@xV68?N~sJs4r@CBnkc*p;JPzq+HnEn zH8MP|Y5#5k4Vm6PE`(hp^d#0UlOzH%GzPv&vf06>LV4;`UfZ8;CTy$zm4l?9IbqhR z;&U(?H^Dw!?GX`;S((;Y@-}y_tE^&O>ojImC`5}l)dZuZ@H-vP-Zy}033}F*%YgNj z5dE>~u?g=l8;r~zw*|MlM54KLg2*ZMpjYyuGKVsv(*k^eBb>3P2(oc4t&$c~NQbujYH5Vd9t`sOFqyzFf>)OzzX=i6XW0WS`_JqX_F_^)*79hN zBDS9ZdqKs`;>8W8hLJF0^1^Y4DXEDB(R(GIw6-zo!v=Iaj9!Q0`rd@{@h| z0;*v~xoNF{G=#RR3xeAQ?O4q^wcaOQ&7{=YNuaBqHG$be|5HkU@KofmR#&H zBG5P}DCN1QtipWZ1+`iaU<|3eEa>q(wqJgCPPbnwoP*zmg7WASX3)6v5BDon1l&1A zbsvTf2o@Q|>WS9=Y|v9X?PH@^8{p9^W#72R`C#CIvS(P(4m!7`WXIYv5IKD)t1F@l z`>ts_e^VX4)s*@kJhpBwS*&LcW{U4}9~jP8i}8tC-IC9V#2gf8QQ4x@m+7BReAe_T z6~Ow6xH_OUH~{cr<0q(^L`Q$*i8=4Nmn8R<`7ylU52I5!L$qMVt7U5w<7vU)l_2?c z3~MrsME*M5+u9`z6ysW%S3Is#@37Oe3T=i3{}|!ts==U)V{PXa$;fdZ27%Zy^u%{4 zldXxlcs6rM146LBD~NGOTa*a(svv{lxPa6?F(6DkssLE180pm+9eM$*H;});%2PWt z{t`VJl>7w2M2tVeN!o|vaWp~>(>99hez(*398UiN}B=V$cRNSlT&B@dC8D6H?uV&db2T2nulkuUn6SN zyg;)|n$-0s8LcOi&@L%?V8qw8*ocmGhGT0=*;C8PF%d|97j=IJ`jG) z!JQFf5>1(~pF-*;G;Cq0Y$Xle<9X%8LRRRg-4bs``1GZ{Om6Q*=niCd!v;)Sw{vtL znig8UcQj~k5-_Z+q_l7wVJKm>M;%e2FG^dNn%3HunO34xIvFc+FI(b&$HcxOA>|B- z+DDuath^F5h~B9*stF#NH8ItT{@_r>8b7~fI?5{(yWd1aRR^Lh-~jQ1YB4*-DIE0s zur;%0+I2!)cEtV3uGh_H{sz$NpuTQ8d;Fb461b&Uni3gyFTxjJ-Mx`MP#ehJ9g(Ug z@!bjXz)A=Ke+Wq2%7bHDu$Gt7=CEM0VN696;DCo4B3*oZty`e+DI2hmPMQsxO3SP~ zwN4KHiCw>_FiUYhh12>d#a!7@lTm)!LO+Sn7Bqot@iZx-m|$a@?kWjtsJp;Pa`^lE zg@3O%e;YOu4~C!`71;{9?V;;>K_Iwex@v{PNtu0eGsr{BV02r4n3QA&3VSyf7nv6c z9g^WOriNldXH%zU{9wLAaP&(@{RIl?V&IB} zPq|Kqff;?sE^TGH#^vtB%UgyIwtj-r!UTPYu1dhWuw{J#&1}vp94G9AqT;oxPg7RS zKA|KMqmXQ!S;J!4^>x#`G0|_XGcaZi8)WHi7?C=ML=!M%sMbJ#>WF4&{{#I?Mt)Qt zc1BYHTE&i~F`7y&K>kL53k)_tyF9wzWM~0o~f+p|aTq z5kB-WxDHZWD2Pg`7Jag!z_?)nQk({XLT!@a*W1M|X<{0oJYFrrRO>oHWRhPPF=Tdv zU62Rp;UW)W!U)L3HGo)SzdS0WyK8#s%d(XQ&^alp7S!?EYkOeQp{D|vkZGZy!GdYB zX?yr^a^y@AUA6Z?FkeeEd)rj>5@kvH^wkk_0V_i*=k*AXK}hVd%$P8vjwNvGByw3N zMk{A?<8L7rZ?$X6wNs1|5w+FTZg648p6FNOl_B%l@ z4he7$Ef$V%=Ik#o3`!E=dz>~kty^91Dmc3{lU4CbQo+{l=B$josV>2z{=z?+T2C88 z0KT~Q0&sgA68gh4Z7-VTzPj*+(SnFQlw9}BnMwIKZ0jf|6%xI0#0(uT=;e?oE4k9Z zu|xSaz_Z?O##6s!x_1v(uyv)?e%b(?JeV_t*WpsBOG=KK;PwpJcUUs_fHoRTVzQQ> zciHVeg=AVIlWV{FvkUG#T|>H9L&%&653)6Y#g03UmDs~d*H?w}@A>BkANo&_$q5f^ z7$8;aa$FlhXA|D}7i&L@c*Uf~TGO5`v#fqLkmID?nV&cl`fnh~GRbn6i4tyT9BHGx z_sf#J0CjrKZJ(U>VKcP!@wJKFlSNWtApD5kBiV0&&e&IyD`^gdde$mF zQD-)pubJQ6SIu1f?CNJCMs@+C20hfpM@Y%G7U@@_&!{Z2z#S|cm$r_~c-o?F2bQYA z8xZk%IB4-bVrjiFmzc?YYG=wmKR&x*4?t&Q8W zqN#nTeWqlrkXcE`w_QBjW`$hHY60>6z5f#blP4wcI|r0mH(op5>Vd`P}=A;0i;{Yq9Q>qb0MTWDijGhbeGX zsYuJjGXvP%fq?t@mzN3+mZxfhz(?dD`i^{KliweDPRnDHyiYjgjNQ}lyt0Y`XLq}VE%yF97#j!E z`~PF@9is(lwl&?VW!tuG+jcG6wr$(CZQHhOo3+&S?S1w=_x8AFpZ>c0M~?UxBQs;> zn-OzHJg;k9P}Mw?kMylY*sl=U2A)F!<0bPjJZ+BLNsKDmA-gncgLFHvPE~wta0zRZ zgjLn(d%Q9y@bkISVmN3frWb`-_eC?uD2*zGrqWeF-)ZiHBk)1&1YMnmQN{-)JBlg%)5N{Tm9BUpvJF7sHmt=zBL9Y%8i zX?$*DZ~2|s6NFAUCypF_p3}JuTn>krOxXc--$Ln8Xx$(-yZ|&oCj>sI z)VD4R6;tdX;QJoj6`uBDdB@u~H51PaEr^Es_2(5&f3qjAy7~SmU7gO}~xZ){a zZq?TG+I0D;UY9VZ36L3nD~o@ULA%$w{j)6+XD2)!uN z19U*|aLp3gTTRTN98(9%xIC?arwy;ie6(*uJ(h9@??{3?t9Bd5%+~W0N7vWCiH#q$ z5yl6z6yD({m!NC&Jcry;;6nPD#N=1%vE!#5KVU{PGUU2>a_bVXg4y*;IXp%>q-_tquN; z4f2Zi5S-GfH$idKtF|7p6L^ok&HT)f%RM}Yz5}ht!OtPPy>H<_+6ZYWkGtfD#-dP| z-xi$MTOFJwt5_NrKd8ptSitWsX%FA>Gf@-pXrBeNDaPG~f)9~13=r?tNxRngZ;*~U zQ-C~afnUAlr$fYhVHJIGk&iw$KxmjkNG=b~s$ z2ddR=Fu*SMBegE&8_Pd`sNzu3HIszfyVXXybu;r2Ev^CPgZN`XrcpEugYp*#uZ`~d z8JTT2)<5E402u6UGC;3BbfyO_WMof>t{qC>nKw%~tU&^=*9NLMxCIt1TjMPB0R!OR zqL%(@(6QpS%jrRIY8hD-f#tM!&Yugmfedw1qUS`%78OoSd#w$&zU%hD`rsQ@PTwN`>0OuJ%L04 z*S&)ZlE=&~?a$=dj=UF0%X=}Lx0KM&HPrAl%xTZwd{%4OrMd{zKp^$p;K_q_Fg`vI zFZ}^VYK#X4D-b><2>0w4p|B1#X6cK?l5fcl>om|3i#Q`HwvC$|?rWVNaVpcE z>VE3+2&W|>yYO;m)b7tC0JkIi%ML|rVBk!hruf2*!|Laf2L4oz?>Z)4R?dA}V-#(1 z#w$fTy5}Z9+4i_B-?{8O?c0qbW{+e`1(c}?+*Vn1e#avHBPDa1chz)$$I@D(V3sWB zlF?$GwJ-RN$kuGH%_5*9Ez?@T^X%t2`FhoMG3esRqlYL7_bHkPEc?e}tpNu&z!cYc zY0(H4$R~Wf$EF?j=a?NQ_g-tnGY3v#30BQKV|2`E%`}z!a+=@_`@<>l36T4klw`{6 zs#jvk+%6+iJE4PP-pU0wyZxazM$y~|#?^abc%ldI8-h*P9crUYf#<_ctb75C9KKO% z8T3s+6*73OhzIe`)*bp?Dt*E8f;N9E!w)%?oE{)(7_p&6i)k8e#iedQ~DlfydO0m_u{If?Ylv0*cPg z5bw{&VVUl>^%(4))58to*=<(pDSB#dT5j4a!5Q<^MT#8?l4e^=c^Ec)F9uvIX%3#zV@pOw^I9Q@8LA&wU8NY zX69z*Hl1N6FRs0=1n~2FWefW-#1Z{K;-ig^Sg=&73LKcYF9_s^2wjifI1It&b;?xowynAv|+w7(K z4ZMtRcizwu* zBUenm;l&hrvU`Fj^WrH{Ez4J;!9%3RAndAO49sEW>bw@E#K7e-6~(0I+U$*J1U19+ zqJlxs8?CCP!PR z*{Y@$vMy;|M){^rzK@#^(2<kLeChvp#T^GV&apwu3T-39y z{`l+SuJg%t%)Qfqhi%K{bXd9 z9Fzqio%N0(_J`$6vALQkg|sY3GD9p<7ZE~j(nQ%rMB9;9ay!(fO4ocU_4Y1=fA~(? zhmj1u&hm8_mGyKks2K2O)(k>P&cRvz&=eZbeghz_sz;@osV}XZWOrD z_dHF67M$dO!Cpc4`iCrxb&iQ7QqU0ti?+RkwbQ~60-d03zx5V@V`jm;6CqydDTIPE z`hAAOWcMq(*pA5C<8wrUJwecK)eO5+PGP*GulG;PID3AecZzw$LhtORoOyWz2Q61z z?ytBq^-L4H;*8kXBKM3@zEN+F-rO#YKI%^rj;Xo+P{Iq&yIR^cIdma-qZNQ<9*{wm zwylA;6BJ!KVBkCqYKEYQP)IbHAqmt;%un*3-Oe?5+Jdx7>o9G`00+0vk76>xpRL}%Hfre%gBpXDX=ux2?{PW(aEUrO!|6njyrb2iXhP>rr>8@Hjk;9 zRt8S?GO3xu*(ihPSR5?hmr*ukft?pj9ja&n#L|isxFMS;l2I61W|AX?#;1W3HIzIQh;#g<J3 z;lvu%7D7Xp$82{Ru5{XrwNxf^qhhipn6jP4Hq{=A5vAy5yF~BG3&NiF!^|CPDj$5e zM6Ff8kBSw=X;-QoZQL0jW@0OFvzQ#A1jpY5CRtQgn-YeZ74DNv_nVC>q>F~Z zlDbe?5$E+7ljZIlu5Nm9q}1S1P#qT-kC0jnVbVI$SvlEl?u;xfj1Jx$W93iXfGJ6-9nKg{wH%ivF?>-*PKyCnaK+p@+M}>q6 z;jD>%BD~74sjK^CtZ8_QM77ii;gFsLuWOMP-bkY-p&CR^oq*a(Oh|Fg5;&2sMpjFz zW9E8(u1;!bil}UJ&P5X7dyH~g9{Q}e+HppltKuR>7Cd)?MI&Q~NvqP4XY#9rZDu1y z`><5WY=oVjQF0)RZfMBKVcW@$>Hy?exXzlxnjBj^_inRNUbG^a->Y*#k5er8)&uIzEF99$d4wl4d&lsYHqdHur z>X~<0SW?fhIZUtZ1&JC44o@$hxYMq^0xg2M8|Q&heOPIg+S1Hgk{Di%8H7p^`0VB0A0lorg0o=RFaWV z0pC78L@sQ8RmZpi77-fe_FiVu@6=6r81mk}C=VVJ^M;+=U$d?@ESL3>$nRPDbsb( z8)r9GzpY3ycYh4Ahr+n~`C_k%ulMW3HU@QXyZ|%(Aa09#f7F)r={KQsET`6cXi?M!Qiaf?hZ)Baeu`GaEU=7nPIrXi0lu2<*Rw|3)JSkcig|^zjbVvH3Im@4`Qf)C;tL}TmJu_ zjRHgpPL}^6{Y6R|e;tPZGS*OSuauLM>(r6!P+nc;Y-UL%2rK@nA1Aa^Y-HJD?UJ#k zrQn@RB6JYI+ly<&#b^Zp1`F1)#?E+hpT)kDwzlKr{RMCfR)aRKefn&;ifpGr6t{8q zyj42YGSuv`cw4qL)uN(hgOf>J)o5XO6}4$hhGqeG_c5jB79_juPMEQ z$bWf#vc7pGUo9VeQX)i0KOCz_J_qK|kGm^W^$%0X=*jED$j95YfE`*T23x*=sS z`$l38!OO)!mqNbU*M)q=(JE)xovJHWxH%5{n$!?$#XgDhcA%P4Z~ivO-wd)x6dGT% zO(gWm*9Tr1N1o|j=vcKup)9M2J#qNnP4Jb1e~`{0w{k_{ek&by=##Zps+5wKdn{7U${Z?W!IFhs?nOq3iIy9UZt@HxwG z;NW@mSTqKw8suBHxW#Wr=FR00YD;?pE%!{*btS+7!zsu?^?55W_C?hvx;W{&^Rl2% z7O=p|-(2BBLRs{s^nAhHRK>a3W|=GZ{c;Eg>e^V~vbf|JDYAY<_Tp7pQ{oN_Syi`;QaZa-;Q1qtW9<@SQ%}$Cw-2u zAWw4KF?x@fgjO$MmtcYg0Yw^TLWRv?VX-Qr9?!N!T&^C&t^h|c1pR#XB7*yot%7H6 zaq0UhLSubYdGl959(8T5n6*OE_=Q38?)D8^-ur*&!dI`Z>7Mq1-=zimkEPQhY6W69 zAYDVgM(H*>_upoTFkQYdUjTmf%60J2q0tdgWClJtAeHt@lSvRdJrk60{1S%gOSAo% zccryy5%i=KCp%hi+CSVzvC7Fbnja1ZleY?Mj5nD7#djs+RjY47hk>IYFEA>eCP$wW zYc@Tt{q_hKImUxhZ=VPDYm$6hNwfdB2najRyPAbL*q{4L8#$%kg*si1f$kG+6+EzW z8L4Iw9z;=;rCEkZg>wSzdAX@OqE7DD3aW45PYHtiVFS1&L{FAsbn&H;l#vsO<8em*yddPJQjs@78Ij{B_%;$Zbcug%)h z0h6}`4*Zs@;O$p_=(0XVfUjeMzqP(GL0AmE=b-HKv~KOCPo+mYh_VuEs8h3U0`00- zj^<#FCkuU3baJ;v`=nV$!#gaVE(5Da#v%^fcf8)Z>BF<06akA|QG@49eE!lAivJO& zwtc>{hF+V=L)hD!Lq9vPz4}(I&rYb+GFLDHFjqAKBB;mHIp@gFv^Lh~U9cfCbB1{Q zHc6x#948dmNk}W6oiwdm9KK^fD)Mo2K-8(Mdx_GSBd4m@dvS7m7gSaOJrpw+n5+_Nt$PjM(9Xfo?^I4o$F;TF~bhrl{737T(BcXdt z-Gor(yZng=4Ueep1y2rqn3869c*KYFO)k$&TdBGiyv-dy7mY!JU*PLV9_mjtgm@ytTx@1)k3<&7LGMKQTx>?v z*wW;E9r}P;3MV=G2OWZS)xLW68K6steJgj+tTG2?{q2xO<_yTB+Zj}yJO{@DkCmX< ztPGA?e*Wrc(yv3f8P zl9TV}NkMhoaTvMX<~L3n9UiLr7+&=1I*tljr&$$SGTws#w$H30fVq;1dVX;n73-QM zgym2iHT+;yt3GSH#hz3jY(`dy%YZQ57JAblJgT88(gqUf>Y~bPPRcosmMBex%{fLy z(ZO6)Q*dKa;wcRw6lt5O)T^tV)3R1q)IKW&&b&zKM_>YM>?B2^K@HtEC}6l|H=Zw? zCyp%O{>r5@|=+++ANIqB4Tw)4POpZ`2 zM{F^3XvRl^sGXvyB64l7M6DQ}GxF3_5^N&>pzbTxyVh%R3(Bk<&1PV(vRgQ6Os=gh zVnvJBN*eKxTg_!Ezw8f8Sr#vJnB(;?sQ07fZUtv`m_`u2qo?#`DM~In+zMmY&aVhG zXxPl#rrod>_W>;sImV;u<*h|wngDn{@&`X|R;4?~r6b`Bd~NQWkAAuzFN%|B=7oo^ z3*BoPo-C*{CB52JSTgWO+8bvYasRZePt9sca28L#9qMow5n~a3ehv~89U{A+5cSw> z%vwiVdqq&T_6neAxfb8Q=*q14SS3}PeQdtv-&C{AmpMN9(bf0_z(MeMlOb--F9Jo%butl zw16d}fPT@61p+^38V3CRsP|<&##7c1s!r1?=CD!JNr(5B>3bKE6MBY`?8iPq`6pFJ z+1iU(PnE{;+D@KykCnrrHSAD7Pr(|k=$RQfNShb^|b&#j6sd8oe> zxoR+QsSt8c$mGk>+uMC#(wWqkP8dcux}iB~jnb={X4k&>qDoHx(NalW^8-?~E5e2B zs6u<3k0cd|Wp9$Ncon@>NnIH5GOBfSfmx7&FxCe4 zmfhukOaImf;>b2>F`0V2QX|lceohrxgbPGDgRqVXr5i?hTfx;5X`T0wxF&C~AjEX< zk&|ikN$m%dW)?$d{V|hcbN&SqR1INYCHwI13}47GTbLiRK`7a2th7mLb7d0|snuFE znZ7=tqUNBKWQ*jPJ}wHw3fwkmh}juHGjbzBkWzqxdJu;C6kZ1iwI(qk*9}nC015Iv zaYh8*P1Z~PN9@Rh>lVg_o_5Kxp$)TBW#qvNZm<4Snh#m@1_u)#-`U@vns-?|-PKK}hLi`XYGZ~&xd9GcjIu~Nhlq>EUPJY7(`DohQoSc}bJ#hb(0yn8B?0Y7wRil_p{xVk43G{&#DGwn@YXwQo z#>4Pr%_#5-q()0U+yw0Li_zButQ6p^^a!>3rb=DM2TWRSfhJ)8;tn>k{#)DB& z%XiBc3#yF*Ezbj}6qY2QnYNWtQRf z{qEXkYA;wCCTou-&C)x4E(yPTMt)PH(~=r>PBIWpM(=V@D$lsr2=G`P%We1zFZwzy z2C}S&e=bJSv}1r+4g6@r6WOq%Y}$ue59=^vy)NN)O|% zaJt7f;oZ&!+2#b6K&e z93jO6XR-Ha`reY@ADdfQnx+p8NmlJpx>%Bz4&eA25Avu9? z`ilA$mukf@&~mF|MUrxiHss^FHFo=Z4ecufN?eTD$W3NH zWnh;Ioxhk|)$n-y7Sp6|-IL_iLHJ6eUM%W>>tSdNUml0_N!u_g(kH%c%n1c_(j=4X zML#Clpy$x-p|Mk*;<=o#^x-%r-Z+9fKZt-K#wYxgyUasMx%n`#m?vUkfNVjD5?9FC zD6{;xs98{pZs3BfSF(9csXfR3qEOzX6?=pz z!!j~5Y8tJbIa{=cRDCO%j0W)j@z}-E*ouBK`wUBd;F&(Wc6vBFvAz&E@1ZG*dC_r$ z*hEU46}Ea_q~!$~e^SdKlhqAX{&J;F?_65mQKJh-quW(hn!4RP+10XyjQl%e3-a7( zE6-ZNiVT)vNbK9CbOu!>9^~upe&ddP1F*fDrC=UAJ{V~>GSb&`7-A$u%^r2;NK6vT z5zo=jPW?O_>fH<&wwsy~z(}u}JU?sQ$FYL0NF3UEek8i%)kJ%^3@IWidH1?x7<%P$ zu0Z0>=Ps`0(H6?Akz;bJ*0}am3Ka^w%!Y1E;Z`-b#84=aO3!m1q z(aQDJK<0kLu-64doYEt@Y$T%IIh6e*Syvg*+gQwKEK9MfZ}es@OPX62TE^Am_FxV* zf>PvM9kBXCF{e5+2B`%-0~0wVBRrz_j0twVY1u7tq|`2e-KG9bH@yJ*c5IKS#gCis z^eA6m5+e`ll?gL<<(SCBpHsrQW|EUHdS>mO%_B`a%YE6V=N@!jlr#JJ$oL!UGrVnj z!EQ)e$FM_mbzd|Q;&*&~GLACF*@OfpcQIDsNRsyNaD*b##EjF5@vBGXBWsSbO;Lk! zK%`$d`HJI;Oy!;tE8McOCTwSEkwuOq2IyXjaGLD?ZwI%11p<1ZDs~a!GpT`3C#ga^ zz>x;b_9g@6`BFm{cr?%lp4F%g!RT$|<}4Zo$9C7+4<!*d==W$(|zPN7ExyXtiKRYWICCDYOvR-@t$660nJ9W>^2X1iX{{yIcb0 zpFG)r3)46F7d82BarznlUf2Ht=Fd`^u->49>%5?h+>{=dmTUB*$mLVaORt;hB1ksvfiCMN;Qc?7BoID>~#Sd?crUNk7 zTpY85dkQ@!?wu6dqCxt6I%O=#vI74?Gh_1jGVqCr!eU90_#kE1OF?R_CADoa-8p*> zZJ6K?nwnZ|qkW%}X{qI;Y@8rIcM5UHs2Z|0v6`D3pt+n6)sX9{;mdF3M7L9}VCpZ! zw3`BlrN+GB|11hVT8Rod%uS*Y;Ez*;V7xVVXz09U|6(^G;jw->RXLKWDH&!k?<}RE zwA+e2>>`vfhRF9gm1oyBnW%u$nF@SAWUh2Bo z2Bwm{#ixCvF^iH-90Z~S91dxlrTD%`Lp<%qklsIwNQx0qEM{kq5#Z*D6-B6JQ@R&l zsw~&9gS3E8Q`(B(uqFnS%~1`Vh=YYva`PP3C>|+s0I7&9v4RJV4;wpX1IfM*LX&>T}p zsf&pAukdkze;m4PJwOn*_;bIuf3E*JJBaiK_u?{yFZcyK>vw`$l%Y0`@tW7`Zz7e9K1X^(qLGu6|3Y<8_|TonoWL~xoR>w%(x zxA@&lMtQrQ4hfT10ZEyu*!%oZRUw@{(?+0=XCMmDqaflv(mn^(P{&A{0^F6!qFfxW zqQ_0b4ha;^&m|SuOU6!1Sk7VplGQT+R7lr9_a6M``mYCp{%=3sA5W4fC25BRI=HTr zUsUWXDhh0TBTjimS>y=q zh9Rn|OCB6qfU8q!g4A_ndwRHtZc13+h$^DIk0yWCCv|08XI9jJm7OM6BrYdfxt33* zbNP4>+{~+;3^CR?t3X{gTP-|SooG!PJKR5*)d>xRlL)AZA|IF<4JAG83NW5~DttqM z_!wMTqW2CyC~(O>fbXU#w;$e%&St%DL`K$%?=CIc9{IC01Gvvk&> zpY0LGVUVgMvI7MqL<-HuxsZADNb)+0KaRjcwBN{J!e~WEE9Uv#P>9K+nLpRg zgUm7xrWJ!;5!(Dr@V7H+i#m7ljUJ`HL3R8Xivgs18gEjSR0aACjD-Q6qO}x*0RkHp z=f>1Fr}`uwJ9M!1xpL&?PovN>py0@2KwHGOm2cV!HeeA|uYXz^5E%$1x* zCK1xltXOUFDdjK=kw}a;67k(5LnK{6YBK0La3l{djXD)nU1k|rr-DL$HeIrc)8go{ z;zQyuHfW_Q{)1Zd(-k$!O%YbDMC$2}RY;7+_1)0<`~tcvl~n{2MX~sW$~LE4c9}bV z$+8W4huKYwr?EgnM`TwnM()0z{970A82KHw9 zdiwt=;#J8@$_&sUVTH^yQRg63_X4n}>JQ|HO3M*1;-RqnC2%!GXBO6D1N}1S`^kp1 zUnEuvrh=R-l3jw{b5gg%tG)9>6CXv)k#eQEYOJQzp}st)NTV!X;!Tk(vUqr+kU1D) zXT5>bK4__J96AUNU_pYL+)Sw;vv4w-D)%l z4MOu~m2OaM_c5j#Afd_Y?MTVT{K#Uu=mF&0^qVO*w@c$04&C0%;p%xZ3AO`f=KkA1`Lrr z|G(WM!_GShmdRAtZZi;$;{SzFB{@MO(6OEN3 zrZSSZH3C9B6_d1|zfyZqqkyl7g=7<6v#*kAu7s(CP9@b?GS${)u;D`8^kag~2Pn)Z z;O9K7lSnBoV{|kl$ARo^OX-1wOUe(wGMN(Z(QSuo_80aUhnqH3@9+0_+@G02#I?Gs zXZAxhXEO3N$_o}nGxJONDzlJhU4ETrr^yM~jnaxUoX$lyGA-p?eib#fo}oC1-w2 zK!Zqx(fpPnO2^I=trLvR6L?(4s=mf+H3C3_5DI9KdT1uAa~^kuu8h$w&Hzu)QM*@Y(_?(I+G-mc zLf-7zEmKydU`(h@=63Tmr`PC{WUi>FMqTn@-0dNYiCP+QzoJjF$y%TDsV}6_V3dP? zmw*@}YxWsGCL$$Z2 z)W6e~PoGkk=`KBU+Y&68C_VJOS ze1|Yl>rffHSO|7ZM4y(NkH3m*wK9kPAIS--936mAs~Y-8Dm{Y*4#BgF)L5{vADfI34^55FR&a<{lUYilCLHPQ>S=a4ulmu1^2!=_D&Rf8D)9_V5^e8F_k zVLH5-wt;o?nz$S~780u?eg>;A*7?+z1MeDHyt~ks1DA^VJD78F2W1{}bnYT=uH-*>Ii|Fag{LSY%y#m&|w_v2AS5N)|=K2vHpaxrypV%q5KwpW|Ub$#4jVCr? zE1!GS=mGXLu=CXmLl4Fa=S=A|b;rmJ#rVgzNh7fI9B*70-YiPzAgTgSZ}+rL>)pL; zihx0w;+C-N#_D~upxF)hqSlg2QK=2Ro0?38xq#Q>P|7tCGx3L#dAd5zg>_=X;RJXs zF;6d(TIPtjW?x8m<^s~s)JF*}`G|YVuOc!=3v9&FTeEU|qp75!@5wI#nLx09)Ctta zX@+|C>JQ(^sgqPm?G1tDgd}P0m&-)8XwZSaUvq6ciN9sR4j?@{bQwKE%IMRQdnAiuz9} z?NZkI^+!s#Si#W|KqLTx{V2ltGGI?lH7tqE!e{mC#LJ=cuM|TJi2@R&q)2Gq&t-3+ zzkO-BR+|E8oTyW}&vopboOaUiiIKc=mqI4DP6*#G9gedPXH0rNKz12$AU2t;s@Cc+ zf)yD#tgK4DqL!=AlnctAKq!*Un6RvtnyCu*SF6_Y_Zlb1)3sTvMvS_)8zY+m@aZ}W ze5x#xw^x_1t*+>P@yqF!z7I(<(AZujIw1!Fi^!1C*nTrNGhAdr5CG`GLLSO!=pNW5 zD3$Yx5#T^~O%tlP(pNALGc`9vvRg}Z-%<<_$xhX#14z8vat&xVMH{HA_gQjIzU`+{ zx}4{KbM;$h2lcZz=yACD$=n}h>r^cuzD7T#ts{YvC}vO$)58mcB~VQ3vibj*u3(Eu z6|yNqyYsX|E?^^_+qkz{l$x%7c-U#V3&g(<*iM4y(qvUHhO{Sfu@DJH)W*ac;*M_?=@I zfnCJ?AH%6*kio2>HwzEgGd$S|XC^N4v~lU#aCp$s{{x}+xc zVQk|n$ux;9Ks1ReK(vT1f@}FJf2$Q(f68iM9X|k6MTFvo;nPfl&8PAW|7st*v6XyF zg$@k0Yf_R$=CIUiCr5)R$pi=hNbI?U{?oM2WMrGu?SwCoS6k! z4MO<+GjCVBrKNRb`>HC?<(9?*Rxj=Q+M)7Gpa~>s4(wAfbIgb;fAoP-1OzVfBMKS# z=XFsmFHrY~jX2&&1JXG3jPw%M*bO%aQ|YVviWpXu+>Mi;Xj>V#3z@=s>d2ua^e)GC z32`)-W+480-p!S<7r%nY>eHtFhXZQ`EUcy-zdrD1rdFbda z@?ztqq|7C=!utX_k_GYLUAlrFuvuC|)ONH3zkQP7@#tJ#sX_2H$ZnGCg@YeW%h5YG z((aw3$(HV~t&3HSZhN-mC4;W?jZg6+FbRUGoV9;!REI(Gjd~@2Ep#|Ii3(i3sorX8|V&{2BbYYbgkb2p0h_ z2D6)B#f`{pRDWxi*yXZHuKS&xHd~~t&835kdH&@#GhgIY@f+qBbEd71?iW@BjO)Ig@4jz|HfSZ= zZraRG3m8`#HeJCF{?VCyi#QwR7&%um7#QX`TZv@F z;tGMq2*SaE?e7X(u1Bi4^V33TSHiC?1poZmYJWW$mi}3~hWmy6=H>dz$J!H87m~+h zmHgzxjXLG%HySO<$H7{`SAS~a9{TrXR3m|d@(ZX#c>jXCjDs&d6;28XQ4c{`!B=;j zT|B4Ul$?gby5S`w5M|>W)_zbUNsJgFgiG&qZLL&qZHvOHcD03lyXg4%cwJ!P6lLcw zAM`-H8w(l-1#<#dGHJ^e6ia}CX(+J1SD0-rEs8|p?}59-F~-_hZrc->l6YS|H5(#~ zs7d7pm#ho_GKCFHnPI{{C8}9WnV|uwD0%tNd>TscsF?eLFK_XcKipHsMUC+}J{L9) z2g5&PY_Ji~fxN|!_Xz|)RU&kDIGLxB0q(fZvM)Xc^ym?^R56JDI2KeWoSGV{)l$t_vkh^6#1ZCT=k=P+>1&9X z;UKT8RKN?gbB2#vC8b9*e8F6Wlw$n#t=s-z0Z*oSYX@dB8)8UazQHTk>S{8 ztQ>{t-l)QjZA!d^%1&qW**y9%`cmWbt5i=SCe>*`V@vXOoj)hcM`NxQD_%~$L7f#Y z42iSo%9xvz0f9$|sQYqg?U|=Gyc~{8R=9-rt_3n6Wpll77?a}xWs@h7gx+y&4OrVX zPlbH<=Fkh^A$*h+0M67+FM*`WN434{HN*O9;<89FuIJZ?}nxu?F)9w(Ou? zThRo%hb}B^i6Ybky}9!pusi+3%}?vt3(ASCKl`S=aN0T8ruuIkHoie7j@D;1s{tCeID-A zT6=E}Qr#NQf0x7N<2Ilyulmjh3Kof9qym=QLw! z=Zv>P-pS6=)?pCGE5U&}{IhD>8_Ex)nd1|8qfDw6sxCzzFr(UpS3Xjgi-Q2xuC2}p8FrWjrYCMIAs77iGo}MiM`OGOv${{0c z&ppDxX`{&H$@gg?7eZWy>*C|>h^18ICaOla2;-#fj;RPtZZJZ?EUrBp z*K(a^cP*jLlm(g=fiz*AqaZwmrdD+AGy*B^L(-rFX#wWpF#pj$xQ%ZAyAs$vY|?s& zg>oM1XpZhIV-UvwDplacsIoh3c2@ckN^1Z|))1nrae*_)&qB=8#IT@!(gQc%b@;wJ z+1b~o7EJLm%MLpwh~`1T8MJPu9*tEr73CM+Vb0m(5oL zY41hpMMG%^x758wEFp!UU00ZiE^O|NFy2IzDU2|AyJ*dQ?Ol{d4yEmE)hhf$H2edm z`GEBCz$ES`W_jlYIWUENazr{lVY{;y_dP1@z%{uhz6$CkvS#Yv>)DiD8G>*?=YXfZVtzB7e{;)SU-p-Y5AT6enFRIQZ&8z{>Wc<)9#6G z=^2KZLFX6czJYKbbdZ_Vn*sHQ(L$CTl*-kC+e|qe`lXbGX?R8w^iWp10pLkeT%OKV z;r|B%$zh8h)DvoI_3PjtrI>`fg%Z*~2~y^N>(MUyzdut`FfuW7aI|;(mrrex!i4o7 zGf?h>Ry!*-bmQW?)yht~ui+Y1Sm}`{&3#j9Z=$)JH^Cm9Hm+AYP1*r{+LinX; zBPy8tF+L(Mp3u>TQxh(>eDv=DWt}5&yl2Co<{fr$WlF<>G1kQbAQgxs1ZJXK(!%C8 zav>a_x0BVV(5R$JaskrI_)L6ZGJFT1$+AAmJ$YYEsx3VRf;Zm5U&bJ;;53uFsQZj{ zfykPo*cq;3Dg%J}WHYYOqkyWjJD5m!;ZaC9ak2vd7=})0jjU&s6wLLtl!I=-%M(jI zf6e=gM$lH){y045{F(dz*Xdcq{|nLd|C6Q_wsx{Ive$Dov$6i?G^pv9hpnbE`ghjU z_4f5~vAAM9LS<2No~84GH7>-wP_DG1dPZR^br~?QHA~Bww9C!#RtIsPe%XELAJ$4E z9`etC@c3xyg;0ecbdCT*jsT8>(1L^4o^M8|JD2IMwJpPzaUwkikDIogx9OKxub79U zsTZF&3g0SMwOtxYMBFjs`C>-HV~4xFM^i3VL#R~1yEe?RM5A??PQnC(uKd1hgUx6_w%>M^z@4zJpvutgaZQHhO+qThV+tp>;wz_QF z?y_y0Q};c0zQLOBtaa}EhRl_@BjSm@ml04bXnwrEOwd+Zf=etRAa!~K0=%fF$_?9kGrn;Z&*%!4ZK7D**3J%~0x~$UvDBbI7Hb5qkqVYCx>;GEKsH%j$jxIf zTqdh}QAsh$D8by);NPj^(6d~q2GmNZMTy#yJn1qweSZR6K-yDP80s1?OsHn|dBwE2 zl(qL{`khDXeCdk2ih7ZgEa0i`1E=GXt+r@tjq|~#$x2X`Y*$m93I&MjEiCUpEKe8e z@TLe~?5hP-MSS&xQW${3&NL!p$FkJ|N;Gx2q?}|!)OIpPz4Mci6h_Df2a=jK#gS_g z99xjK2U2)v2NYaOCRu2gZXL=uL**F;k%R-h(9Z9_PZw;QDpH@US_K6f9J5am&1C`{ zLu1$))s4CNNDdUE?-Wr^3$FJ`MqD>Z zCElwN!m+4JjFhP&o3NzZ6ibsleK2ZCvz%*YB@gA$Qz?!~9cC~vXPA6_v8jwMyQDZ^ z;nm45u^#I$@dLVjT!u~TlAg-`CY5|f+KN?n6(u3hR{Qta%bc2e6rBT9WxBXUUFkRl zA15=y*nmraWGTI)BpTme3l8*1hB!lI)=}6dR_*d7eShl%a2M*C!5 zFVQ3q^+L18^I+_qJApJyM24oGYK{xp5bk@y+V>h><%I`*lqSz06f*32bP@a)p~xzMiTp> ztJ%hkTS<)0{D@=ag<}^%n(zFOqyG{5qh~fW_NJx%;JxspZtZWzzCu8EO^qC!oDThd zY<55+zJm*l>IblzxN%~bNGU>Ovz(DJ%No~j+Qb#HaToJ8{of9J%k7=5c)1{pQsXGU zNSj`7h?YGA>SL1doi-&p0>}~i6E$L#t8y0_KPYFKb8kirCz>RjZ>r;ciP&JL<4P6K zc|%7*FS3Sh1H#p7k7rSyTssD@gn9q8Rj!vfbolSBUfJEr@56bxChGXe?XZ_^+kVBI+UX;$@xhsqkc>AOvDVe96Lxp~?dUd{|e*PbEf6%-~KC6YJ3!%(*C2_zhU zwsD>vhQQShBH@e0X|r?&%s|Hbp!ck8`$z}!TiQ=0fCN=angVwZA;=~)m`S(}UHrz8 z=bQ0*0WB)`3cia$tj$fhrvky=7Hf{%}x!W3}w4ZbV0N2-S_;YV$-b-$2k& zra{^oDBFKFIp?UyAAhWWBoxm|Ut)Lhzz&ib9pA{By17*zt2LNdJksd7z{OS`aP!{N z&v#QZ@ZGCFPg3?JK!k;_h!9SgEa{Bxp0g0s3eRdo$p4{oP^4f>J*WJ$!p7j;o4N6d z8+rM>;S-tu0>0tTZ$wUe-Ir@m{Z)`v8RGZq1;Oa0^@}3xbH!=4fT7$uIk<(|74q+& z9T@0qaCB2~1vRzgqG_rbw$+>*)n?R*FFWsU;mofX)E9898~I`n%t0@We8w)2`_4_} zjzl}mPApVai!XU|03-zj&$13Cr3=OY0YZ`lN(ck1dN4gA z#Y`ieMnbOEDz0u)Td$}tZeHWHskTvo7*r8F{mGhruh_KG*1oI}Ao#rYp-)U7n~kL} z`t0v?+ip9~xzByvnrI-;b%*L@+C|VfgjRJ46$WHpGaV*UBcD~tx=53Xm^6eD z`SzhIE5_ayIF__FW~7r&P#SMxg-p=IP|!D>?D9cOV=8E6u>lrfr7S3;!ELFbRBSs~ zK*&8F6}2+VQt=4tGshJm<94bxJlR$4TnUGc#u*;~EfMDWN|aDL3kg2%JUP_XmQ|4l zxUa#E5l^@Gw{|6*YRm=iNV2AwOR8$l5f|FN8%LKS4p}XLWk81cxrjEw{eHi$3Ap1H z=Ac-_wm1g0EZ#To{4VjBMMsL+TX8kwC+dDSyS2TqM7f_zCnc1t%FI?SYq?fU;GBtQ z%FIsXw?Sr%i$-p!r;gkJq-*8pgJpjvvXT&Xl;gOapR zFD7)1x}EC^Ot2?}t75y3l(`=a@B9}w#Lzx_bZrbDO;Qpzi$-6eooCGOOw+(twTBYWqqp2m)x^4E1Qu1DH$w|WU1 z3$Cr-+*zX|x|1o+Sne^c+62om&f@PyD7e@0&{ut4BSbZ5RdAuve3kJV=Yu}=B4{02 zwl|`@^|9^Vgv;(Yx@tJOW7<^$!%twi*CXJL`MZFt<)}@z^{e?s^C!G73Utmq5{1Hs zf9Nei{Ax)R-DDt1`Qu-d$ zF+DSqJKnbTZouX0KTbEA%e8P9JIh5^9ZtpUg3 zPLZYfdlsU!o@`h@>K0=X&BV*#hgKBY>KS48pB9LU5li2e`m$)njrD3*Jv5 z)oR~SY~`H&I`1gYCtf0~VfB-7{mDUSjX)Jf*b(9%AFb)kDu|f>#A5o+=MJEeXWZI6 zN%hRxz9lQWbP}wZ?{T9b!cu}d(o=8d)ByUyZ>Ju<2Gto4a8NYY;6o<0FVIK}Cy@U> zzCkAUjmo_<$=@lPMVOhP<)N=1d)AmkdgSsA(3d*4a<7H^o${XX}Ewo-nTGER*7X@3clE#@umf|$&%P>-8biAYpBij@Rdksh_~_AmCeq!owx10o&5K?R%>go%#_Ob@{o)>WF}lWnGERA3CF z1)>W_8G~U1k6X1kf1z+h9c9oksiK?0=CcMd4-KrWu|-)y)Kwe26S$(7-ZDbW06OEG z;q&qcs@#ew9ty9dhgZIf>mNMV-$9)>+)40fv92bIN7Tb#7MCyB^WzaLg5TtMawj2I zoGv(G4LOmB^B&ZTu~1&6g(3>E!%mmHouA&rM6D>+Qy41!#Bj%x<*sVTasEy6BD}st z-=%6l$BOY(2-?&b8}O#R8Y*@V>)3{@(Ezw4F|#UL*qK%6Im2KQ%X4ssfo8Y5!7mgE zI7wT$#d?%1wNtvX^%T?O4c5y6Ran+ZKdbXN&5}3cx+sR4kVG|>n?LZ$EubF}du+~9 z8Gd&BnJAeRDzyvhh;u*(>Ff%@m{S|6)P^M)QFfdQ==quQ2q;C=?$ZWJ7|B5u9e@hFN$s&;f0iDrg_Hmo$74lEToXCRwxP(< z0u$?UtTg+KL|+%un!uUI;fVjAoilpZQdr^h@r1?F`HF~sdK6sSgKk)+8O|c+Wg+UD*Q^nLO zfU@GP+HaXU5vD7Z(kQ+^kEiok+(Rk4ddXo>u9d3lq zE$shEGHN9NpR5)KZp5*Y%hd5-D!y8ALTW$(fpA^ zR=S6mpC@2#2xxyZRF)Mki-}6A!-)>7ZFVi)ulgfzetTZh&rwRyI(*5lMttf&WKDoX zohjV=Wo5%nD35Vzio*|F&#? zGDir)Fv{AcUyi_OFfG13ctpcA;43^1gdDy?0y%;YOzh(&!}wPG1WX(|*sdsLTyIYv z)`50PGoNfo-BV5bFq?yBHun7o5EJe8zzqNC>3aV_V*mS-7yKVoaQ`}aVT+%zw11s@ zcKo*7k4w>TPyTF5dvTKl;H|u9W3iNaxE@AQFp8{1h2CPEJ?Cb2V^BwfiCYRn^wtZK z-V5BY$hrtp*K>Z9c}g^dUfo;&$ zmYo{=%S6bLL?O!#+(D^G`*Pm6oJ?S2it9TcTQ8l*%hWF2-4h%p7&WaGCe4u0qcjtH38Y1yfK6#-09 z=tK$`BN)^W2i`cufkb9cUPfKVpTJ>44dVs(YNKX>2hNb8{dhZ%oD(NI;)@YJ#2h>h zBl!t|L;G|?j{)}H47gt)P`}H|ULA_8comfcv=p7yCw%6{_n`)43Y}oC&J-%X*5=}B zP;33q4?;U?eq#?yU`CQXu>!A?{6*)&te8{0(6-34tw?2Ek_xto6^{=a9mU|q6R>9XQra&% zm9^{=p5tOF@^^F!E4&+ben>|I=8H!;tnkx>S5j-% z#4`F~A$-Rt><4icN|S};H8Qiv{Uh)55xhr;=1Qe5UiNA2JLK#WmI;<2nfDijF;^&B ztDm+X!<+Q=kbUuv7Sk`3vs0Y9ZERe{5&N-mn@TXMrE?d4?!$ZB=?i~m_22;b@UrL^ z&~pO6VUd#x=j%W0e+fzQlGqPu!TfJ8E%*QQ(*E}|rT(gnB98KvVP)VZ(8-Vi4I2(| zMy5xi$zvcWiY^19$f6i(>fg7j$;4e5_s++fnjzxkPCAF98eWbPtdLxvuzi<$U?-s( z^T!;_(5(&$&DWsg_|Z$h=ecY7Pv-Xb*DE@}`Av1N7%?JNBeKKh>9X?JtbjK~(#5jp zLyp3m&?JlV1f(bu<;0u~sL)Q!$)xpq^h;j3I8sUZNLH{ezp#_vd4)ue;Ztx+u(|cs zwf5g4a^vQ?YL`q;4TJltKm`Q?gmhqe6corZ-zY2a#{CQdcQg=63PcL$Qsx*3pfW~L zt8{Bsfm?nMG^t}D$`J

NNw^hQpNss3XXv5?YEhdGHO@fXz0h#R~3b#PymXSf^Iq z#6@yc8lIU4l%uppBxw<-Wl(tt&-3b~+Xn4tj`wlodd|?+ z*{0q!msd$%%@1c~+Rr6skH6P6A=UIbwCjH@y&tN3u~b3kp;$=<6%VD?3olsnFHG4E zbws@1`fu3cwwy0d38G^2^oa$4uD(ODsLb%q8cFl-K37+B4tS)B002s=b{h_12)ZPi z)Z%3Vj{-+_E=q|s*>1|bb;w3r$Ug(L5dg2xDhNG_L5gPnXx`eu436^!Ty|<%Dp!M2 z9XrF!C=VK>=x%wo!LoSge#@?gzUC%FO10VXJmYzA?G})VlC&WtH5$`(JriVQHg&FM z@K}ivJXDR_?Kh}3Nr8EHB{yAL#X9(GL1%-WgW{pesv3Yb`?&6tddrrHo1;=tK}2?6 zm{{qF0ZZ6iX{ea_C4zUXNQpe6spg?nJxr7lmBnDH+M#b^iyUD0>iQU#k zp1z~e;OnJORT$|(M;=L$2rgD;(ZN#QU1p$6+f@WI2j-s4P8c5aUM3#;%Bs){nwset zaj`EVJ*WbB`ozT193LCpDKF6GgAc5P>|BTLh-E2-@a6RTt#bBsXZf9z$?G7Nk4g82 zn2-qe+Z3Kua*uX*jnIOHPNp;Fs0QmVuL_dO1smD6ge-T;2eVhkXL<1DXWOgHHr*etwO@p%})(FE`1KIde<7@gtpyUrSCI%IxU@Pa@+nr|Yn7ZEHrF?YN9h zCQ9-~oWQgo(ox^Zpf4>z&o}2#=Gv_ZBXwmZt|-sC$29P{_bvU2Mx+&hZp~1vjj#Qp zaaP=6t;nQhL%;B?Qe#yaW9DlVgMW$Det}6@iPwe?JY%k)c7B}eTtI2E^0^|4@AyZ) z=f!HDo&gW>)re$N_<(>iWp+Pt{eqU~7P!1Q=&m4tHqL0g-nHXhdU?W*yOxUlbrfxI z{s?nkK)HkmPd+w4iEh{sJ1Y|GZK-%qOvH|$!5LU0WA-<5vch8ciN#EwIE*>zX6YG` z{f!aSXAtq?jc%aMKuzQLwF6u6mt+_}hCAR$fJ37TqS-YD97NQf!s0sz5d#>S-1!;f zAm}vVh|} z(DH!Pd|eKt5B7EYAk0hmv^e_KfWzBsv3ykNBV1Ew)3c8el?0Q0zf)!NbTdbD*SFiT4SSx5!Qp`h&$6PU=%%`Bf&K)+yq z!S6uN2ZKYL&n^7J)9lqWfrK1mN_^L&tI6zlp650!&$Jp!C+AxuaZjz;W`@AxPj8PdLj1VI1Zx-XgdM+{xB)#YbelvwFoP&M}5Ga1b}h zc)My1olW|iXa)w@Qwou*-+efX(&Y&PEJNZO*0IbaWb`T(fl7nyu5cB=eqXe3@%42P zVx$$5-9O8oRqkm+uRE!ij~KDJP@c|ZB3@oXSB^2<1Zo4m)|$32eODrTNsF8*yArYu z$d#z)M2-zJ`yo`&N^_yzN>Dwe?V5!ehI+IHMq0S{+ZURs<1Ukq zDZ9?DAlr_=(iLCTvpYdf=nh$uVxzgT1`u^G-Xb{FOH08BpY6mf##EsGNps1350HK^ z5-lxZajVF}(Mi14G}4BHDKuR`!-nc?O5iycOD$-sbIs9u_*@))gHiX^`}ECb*PerK zw_1EY0R2n*)75C9Qj-m@O10K*6^-=DxjEqzJ23+;O6^QxNj;?voCvFEqGqXC7>{iY z27DcuJoFp*dx|V`g=c(*fq(QhSj}%w{><%2E^%=*)+#K$YP{hSE>HY&q>gGAG@K=r zG33JokR*Co^fLbzRTWl$bjxXIm*9gN#8MLemsV%Urv7IP>-KAI@V!|TCTy{Eg;>9S)BUIf@)&uH2XLOHD zN$PNPPhU4k@Tf36gTW{0;O2dZq5pZGtHZ*djQ1*|{bz&TnWF@v6lKFZ^M+?hCA^5# zG$N~j@|iA?)G~$|=-JZOpHj*?W`13XskR*L7>aj&9IMx<*d+Xf7nepm-=9URuo;=kW#P9nXfXHyP8^g zRh&qk_o(X0R~IH_3#kJ{giN+HH($hBl819Y6RK|c3Hv2efo`GzeNqXzoBql643#_b z3tY|uDW*0yyRe1)(ilh!sV;*R7Q@YbbY6qy8(vcy3}AG_|BMq#aj&B8E|dS znY|AQ0kaT7NX;vG_|O~Yp@_A3A<5|9SkEue6Kdm4W`1}84nC&55j!_|b=<{H)>Rw0jwk$Yf9lOF^raz?7L5JStGBjo1(p~7`%z;O9 zasbx_R^Bi(F4r7hGNj`=38fMVg+i^?)CN@2$px@!BJRoL(c5>n{=F(NT~Bc;l~ly; zTx3X{wCXtmlTLK$rnBsjvvY@3h31fSZua=5K6uJ)Gz#RhZnCpFm5Z#ydXmM0`)XH2!iRD4od^FG5 zC@Ut9tjFISI*X4_tnF03qU_Rd-G0y+)A7 zNvk65j+IrSDWFe~E#I>nW9x<=K^*v%6CjO>gQPKns-6K7HZJ!@B>CZpMuCPI{J~eF zvXfxySyYo0`yXK9aU3&LdrK9s4YlO)d-**11g7|!StR8@dDcP7choJe+}*W z;k!_|(lN$W^dBE*#FbA1NniBzkQn3Sh~gDBP3nr&ffNA)P4PxYS{&@nl3Jtm4=?9I zdR+dFEbELRo`|@Y_NyV)xMZTuz_uen@e_(hC{b5j#!%Ge3Y^;^qN+Hwh?|AdYnnJ# zwe&sh`t>RWISd?ZlvJAIPb0x_O_&5uc`iB$D33ViAppv7*(9|G?`JWmnnvdYy_tg1wqdLf(X}leOz-npIR5MmPw8{$ekBrIThAhF3Wx9uiDBWY zK$Ty_$tHe82#_KN>T|Ogkd4k1il&Hv6@QETQZ9sIbsMQr=_@~Y1)zK^UHK(O>OLIq zpu&m43fF?d$IiI{rBJ`Hn?mDA;b7G>Qq6SXigBpjSEldqy{to?O!O)AVD$RC|yot#zUjE<1~s)0$6oE`e_1N z9!M=w%#qM@lS6N~da()~{F%&+Q&DrP@6qBh-a5?9Yb=VtGKcLOQ zzXiGfbI?ZI(8b*J|Euh{bX*rf;kDvctfs)14VPX6uyxS(D?)^|5w@4G%7T~4LOElR zd1U8VdUxKys5HS2Qfp0GYwBW z0oFrlp-dSDi-z*nz2#T5J1H&YlZuJVxNEH&tX~Cl2>-S;qI9oslxL#uoh{x^9I$no zaH`c##>v5R!PHcll*xuHLC-9yW2Q{lCCY5|a;HTYqd-=O#aj2>zvP=#?dpbDa5Wek zAT2w~>~jgf(`49*?z>n%55iz}mJ)|NW0rV!WJ{!+E0mI9?iH*;p}2*NIhXLq1Z2J_ zjKCJbL>UvsK-e-{_^!}_&F^Z3?Cx4c&P6VLcO%VDp3X8(Ft~bZ58#B4S+Pp(nB0(i zy(bCs-B$<1+S`GU9hDCShKTB_x(geEUr|1)Pv*msvVz^`cZJkyFUrldZIaMiE8qeMWk56 z!{##U&~vIT-%DH-E!bW`(x3XKsy1CCjh3QqDEG6yPCMO1&-|}i(PXritT5}pn2e_#rm2RF0IkT}%D~B`lGu3ky zCi|=RY#&t1J&5`Jp62l&R9&F9U9XH_mEOZ59YNHaJL;zQZVyLnUjQg4r6-v(^^DwM zD)@B?6`k35M@(lZ@kP?mwr%h7gt5>ep2pb^zRK@#4*$dF#9S~wY~o+trY`}HJ59?=(z({28xeuu`5q3o9g zZCN4h41-lAvXo3GBDWatnlO>fNQ~(9$-p-VLDJ59$f3eqkqLGBonvDPyPH1GB^AoD zhZp)W9xL#b!V<-s^Yzd04#ioqy8Nf=!2h>ZhxC73btwPine~5pr~E&Mcxp3F3t}i= zORhxP)(jvJjl0kCBamVEw2dnuVTl60!2u>50O+fFMy4iX#ADedsc@ghp0?bHv-6hp zmymJ~DsngI_Ev3-ow|_5$g#`@USjV#TUWl@&#v1w9|u$W{D4`*upyWetY3Gq zTjdyzH3Cf6mfVcCXvZmi^QD9^R&+!9Iz=}VVQwc^aAPi4@{IwAVI+*uLt|tq2X8pR z;k!0*g!5Zcjh#*|k0nC4`kGZ?O)WSk>p-wtn%mk|L|Z&JEWWNc!7vRYYGLlnS@^bt1r5rOy-vgsZb z^pZUcKlhS`

QwLzar0y1~yHF4k`^Lc*I)ZI!>MMd8BwMz2-c!zir>qiz9nEz?j+ z4Z9t81UbiJlRwA35an7t$6n+i#`4`bTg1J9b0(Fz6?ddx;IUQYA<@A)7k;Fnj-_e0 zX{m=WH4%11^%;;a9V!-b?R0?ofHyBE{+K@b6-d8)^Ve$&fxE5dC4tsDi0ZBa_SHK0 zA})GDbCor#hmo%?1RD8z?m5(Fs)~cmA>;^Nfeqau{YZ}8=@`*?#Vy>3`3yxW_?zO5 z-}IAf-afh@AAQ8d6kJi|Tqu>;Ql3=F?w=MV<2fo=^3Q8<@NXSI{_|1(|LZmQS9`Ka z{aqVn8PgY@`@FY4Pf#&jYBrA!TB503G9Dqm%)p;TNOrc!%oWqX#nrWgxiYT#l-6cp zMSCqRGTictC0w=%6~U6FE1k_|fvt=8GyiK=|Be3PG;y%o+)QKDR2FsYzIQU+sr&ue zciZi$`dK~~uoln{y_GY?LZSr8VH0n0L2aP>MInf_?D5nGb`@NaxFpk6*o`KKUI>+SB^ZA-sB6y(@?1+C1empyfKNGmHn>p!Cc4rXR+J%XEZK@7Kk)uiPd{}R zkyj;stJJ|>MlDDIV;`DK+oVyz8#lhLAvmj}^Jl;cYv;i$*N|5u7gAN6VnKFQ6)B|} z$a{%p`b5|LC0X2Pxc6+VQlU9781Pq9@lHr75jvf~c2E}3dT=DDthb3tE3-uCCSXj> zfmxV6PkA9@mK4>rbRW%{PK;Tr#5&itq9D1Jr3$yJM4>J64fhx^-9;aU;gaj`XpYi*R$1XUT6OXWqzK$~S4%N1wQjo} zJ{p1oAkaD3kH-BA*n1^U9tVGay{s0#uohk0k830iqIk>&7&HNOSHyZOi8gF6ldNkq zg@TZp;=mV_CyA{t%{C{~%GtnHIMoDVtU<@BIEDn-sd*dui!KkOq?QPC{ts^v5d=o| z?DwL>nlr1nQaAk;4vXo(GI_FXrb(qWXh!ic!bD+?ZjY7$&N*TX=piO!6RcB~ENTG7 zdHc{#86oR1@CXn2uBna`{y_xo-dg(la_1RTg`0xjV7bYccTV+MS%N(0R*~o6*j=ow z*6-$%@ol-?a++^@pDN3ose8r5NoNJt*P*9j`+YIgL${9%r^$_0&Ui{bAg>`dJSGjB zOpGyfDK>e%H=3Xr*Jq7*KxTT>7zIKWr_lL?;kqKhqwll$QZ-yzXZ5kQIs9aLGq)O_ zm0%6d=v4Ymb1UojH?GsOdVvJoNqtisrtLOIszvnh8**esD>dZz8OvSU3y!P_gTFq=5*xFoN;5bKI z#<@EWm0cUkQl?#XPLc0vAF>a?9!@NC_H>xdn)REx-SAG|rZ3|`UrtJt>ofZRb(b>2igX?dwJP%4TcT?%3P84u>C#mfWj`BW(v*3DK3kP$F%sA8o4)F!-KlUIj*c!sFL0wH{^9xC`Opu9P9ALG4T73Z$U?15cY}B zi=#^XFyZ5TIfY+PuP9@LYu59lgcH7`i`>e)r79w8c>A9Xb9khZ_>Vkp&~p|SEXj|J zg6E4!j|cW&Jl&B(Jx6Y%6$@TTx_Lvcc?p#rT3asa9C&=yu3YYJN#JAh9FfE&KN>r3 zHv+qi-Roi^89QmhV-AsUCrF`|qlqYkT%q{)UT>W=i1Zg4zchZqPE08l9lVnSFhr=* zDak>yRY7*rxr=H~4q*e?5fJVBK=oj>-Pq0dcz~R#M7QQa-hZO;ez9_=M9sd+fKBhS z^B_hYr*&F*-Z&Wg_+nLcX#6oS{mBBpza^;|Q9j@tw|!*k7-z29G>`AU|46sM&k)tE1^< zX*<2&{WI-__ci=Xm7zHLho~50$eFseEzsg=p_WKzKov9M>mS(Y6i(!12Lb><3+>;{ zeE)N|Bjq0_N_$fiHWm_LQ)}yg>8WBBUFH8;pI?WE%7;(^6*&-ASg$A&0BmX!4vn9a z6T_#0fpO23b1f!7;BiX7*H@EpN`sgy_Tr5KjlIsMZd@v%sRMCJXcXbv?4P!+_zBQejgE}!QYx$$RvmE?;_6fBRIUQ)8H7bpX2b?FWX50y<37v%m_h`Fv3V16p!F+_PNn zsCABaWz`y~dX>LGS|p5yQKQtt6KW^}Ws&3kX9H9ZR_n6etVbVH;%43BQfimSJVz8W za|1>{uVmqAk^zcjTWOnY9JAZBotD{t5?H<41ObEnXY(O1chyV8US&iniad2rxJSwi z8W22%+zwa5pi`@0dML_Yiz&?N7ud+5-}J4oj7z*kSwtncG{&G|h1w4gDinA`U|UMD zEe_%yyv5cTF1ZR6bTmG{zji0BZX3t_)hVC$ETVG`{40MOz7mZARB?uUK*hLZz&P|^ae#}*eJFp>|3aZO& znjTdz1Nah*dVVvMb-|18N_jhvlW2ugl@bz~x}MHTj?Z}1*} zeS3T!^KWyqABW`dfaYOsqtHm37IwKdkBqx%`?Q_J*i8~s474VaA+)l)Qmp%BmLbhzdKx+#EJ58iT}z}D^x{q@O6TXM%*fI&cT>!L z28L;YERo!iA2N_P)>a*9$rZ#}(m6w@ry?#VF411F&-PpXRK)&4Ta1Dvj-MiVv)0CB zykE^xA=0{zOR+AgWHc>K)b>m?+p4!@<_2s!MCO&q9@io~qP=xZneyB1q)cpSr+L>k zTt{B$Y##NQP)=9z1*PwHG|UY6SqcjUZ*a$cy+W~jIfB$iw}51B8E@0GGj+P}hXW>* zf$jZ`4f6N<9o5o3H;*L#@|4x4k}okz+hfV&FwJqR)+RK0bQ#rqGfWB>x;9Q+`r+Zu ztu&o(_+SweUZ(sMqB5)?Fq16F2NoZLKdhug2tnGVIT0(s%Bv&|JjHXi`R?iJhf!8p z-B?}BpU3yFDJVw`9tJHBIfUUUg~P)dDP^hyYB_5KrG~|zP#ji^b}nSJSh^u>pVIjB zz#EekO$-pLnybUI!n86^3^4;XO{=15#7GO2jL@EGFSDjY85hIFV#6%!H_Fy_fK3EN zRsWs6X=*F2jkV_PXx1~sbfc&OQnqYM5MnCzM|m?go%x1wQW?#TSwYMG$pQFKYVEfT z*inTpdV)17TdpmbWdl!f=nR}o^`zpK(mHM+>hfAL$&fiY{*%RSmj{Z($-D~P`t)YQ@8410DD^JJomuPHRyDQZ ztEPL2ckx)5g~q&8WAq5MHj<(!yf%4wHcV4CXwrU$CRYTH{Q`8Q3ehsXBpp7q0YFo z)rmNiTB^uKj^Kv#jc(nk@y~*!d$0%b(^&FuP-~mP*!r}JTz*Bz84XdW;<1O6oj!lq z+kgdzi1MWNA)Lpv@I6c~_MNM3*elr1A4mF_*9}Iy1B#`lOaoe)Z~${4++B$GA{#fthXU{R zDmq*1s-dN8v3VhAgFC$Qy?~jRjrw660b-0hX?WoPio11ik-Ln!>fxFQUae~k7C!RB zR;!t>YNW!Scj9k!ie+qP{xGHlz9==e`{b&sl1 z^;e(M7yDx0tnuwV=C{^dbI$jDi0E0!6YKUd(Ms9-1&)VyUHyn}Ks(Ed$74{;h^-P> zf_X>|_kfSVo>OwEjhRFV!qzw+$Ax4cK z`URWz;5d1G7_*y7Vxv%&J%)e_gwf&wWV-hb@Pjmi{lzB(4LU zMY7gpS47!pus;iXuD_aFF9$|=sVjc?5kjvUTxg3+H% zS^d=KL)RmO#hjrFdlwvjL5R&Ja9Nzdb!$o=&xp;RKMsDs?m%$4f=bS(^oN?1GUB+S zE8&96@pcUtG6vC6^X^43(ROY}FnS$aM>>3N{*?qld9{$Ger5SoaDSHs{qvKZ3Qks5 zdiH?-qQ$Cms(`41^r?kV3n(We6Jt`ZFBbonx5$bloEs0R9x6}+s~N{kW$nCcycFj7 zC)l%TjyA*Vy#9R}HsiQH14Yqz#p|f(1NohiBjb2?tqP6*f3pf z(ADaCTL7G3cLTbca@y98RII=Vw3jt~fRmB@!W22!Pxn4J6Qcb;shJqF63(oG?gPJ~ zU&|>)coOi-MLOG()&!QY2k>xl_CFKzrA_2j2IBaljZK|t1qrmV>)ePkWFi>EQY8EO zJPCK9I|QQz_?se7EPv`@tCs{pxxP|Krfg>uTk2g6Am%Z!;G+yGTN>D!<9iaJjh%bs zfYSI4^x?;5%l@A5Moxml{?5T^Z zSMJ$YzMu{6B$S1|2d|k%K1R|x=2A*MKg4~Ukw^B=c74|)Pv!?Mv{IQ9cTgzRHY}b> zjpCoLW?E?2LptiviM=R2?V+nKO=zHWkGQo<$Jg<{Ek(9a^vB7(6%Pt=eHKMt-@df! zo3%ucK>!e+CsJq!@S_(^G6}esbZ7VXkLkYKChECY!0lTL$_15B#;+-p@3xm6nxL_$ z407+Ay2%t&awCX*Up3^Y%G~NqDn=$B$Tim^LkX$@T*e4Wg(jsFbW>lBNw-UA& zK%Gyr7oWJjC4$DHoy&Z2ChU+crRl(>^}7Xq4N|aoOmRzi2Yc?U1PVvpZGia&*U(gr zZ8ec2fI)rZm*o(_>ZZ+s&?#LVq;MTmAmKJ@(7j-4P9|dMt%!PJs~prL$z)|A@jRCl zz@L7JYDHpFKl57M=(Pmh$|?#d$O&CzL>p5%497jIobENuxsK#VANpKP?Fo7gDqxyU zu}nurg18|7d!Fg-u0un#h%_T#*Hw^gbowdYUHIG373Qld2t@GfHYQ3ww52!4eRu{m0JK-$u?X0&*zimtng?=j=wH$9vt(HX#igHK)3=al{VHVL1nWFp&FJbUj){TeHW?yV{^-L z)(?bWT}+OPZ6?7RQKEor_QeSU-F7qEpMqV}#hlnMR4H7C(%Q+Qt{yn(xlaV#QIk9N zbGMEu1IRelggn7#+>q_S2*PyZ;ot+E(?QcaeOnmrD;pwj z?SWm>>{Gc^P7#Vz60Q4~1<4b3Us=1j_SY*IPuX?Ru8>#o8N`0_MZQh0%em3-PX;wz z{F}O-XS7nT=1)E!yhzI2%!s;BC6lt~{sEz%JRv@x*|F2M3@^BU9XvDOLRg?*l7in~ z47~qdfQk0iz5h@AI~#iw8i1aaHeQq{EuKP>~Tp*f4VO) zmZuE;7Ef}B6})D=yu{Kya31>HG#dnctlO(sqs?_GCOz@Eq3#+!5heZ39TEF)7aMjI zmdsq*#hT(E0b3fBd5HRp6N4ot+ZLYh(+%bWB4$p$?!*iHe~={F(>_=)nq7U#+t7>N z8WOIBz2E+!cQvmZq;mOsWUsH!fB$!r|3CkzFCNx8wwcXZ*+B0;0#{dbjI1Hv&az?x)uw25+jU{?btx%H(i`S-4)DcBo&C_Z?gXWQck4rucYL}x4W}Om4a!WU+>J}B}6AXPE zD{8uM_;Q}8lL-T_5$#=04*{TP>dGO|ai?N;jZ87|(`ROkJbymi+!>yfnXDu0SEataq>$|&LCJ$U#06GG`O(%g*USJ+Fm#qCVP~C|U ztRniL5uE9D+6r`RaD+vQS}pkf4>>6o9Bqgx$|U`PHlM*~`sBO5?;D2XLaY|+m#3Og zHW6t+cewO*vaNteC}9b)W`+IWK5eM7Qj|Op`7~v-3&`k|tfWK|ymFhgG|+sM zvS{G>iecem{3%JXH5hreI4~r&6BNf!l`+9Qx_3zkc?x(*^8qTIrZ{Y6_>%KeA{Kd; zNxzj^l-o=ZqHc&PblAE1#vs~+^MD3QUA7ead=7_hl6CCW+vM`R)JDG-Ro6API|5^Q4)ps8-9iaG)<^K}dcK2zxRvU+ANrVLu>9?uRa4tpFRuthC&rO*!sO=gj$?B0-T)z zeFlP~t-$LBHikIlC1dMLLPt zTK*sDE2lv%HVUeQ%7)dnEaI43cu_PvXzxQu_xB{nns^6VT!|LC9~v}0T~FDNKQzm6 zlqYF&Syw!;o?u*9?pH||z(g}{kdbjk$7i#zDgl}3uA;I}yvLV)>P2qq{9HSQR6xp~Q1_je74tK>IDC3J{@|wq zU!p$0B7(@J>Zf+^gkW&L8}`0~;7WF>ynzNdaB6jBT_NefMp^LfHJkY9O;Y+FdMf|H zg%gwuAk=uvZJR*2C|}&hBOu4EaOAZvvoqiAoDxb6WzD|xwU==i;kTH27e|5y*UpJ> zr{^w8%!NL}VgxF0Rxc(DTt@y>gF;lqYd)GW=LZYZrjG|Lix%5jzU8j2k8A|8G=oN3 zisa zd1TO0$csLy>n8H~ydK3y8hwpAw0g%pZcrOE5BNetw4GN09qBoW<5OV6g$Ja7*~D8>b;3w92#h{2OGqO51TIkPqJ{`v{w5qGOY8X=FjGd&E%hh)q3V~B z6BCcJfxE2Uqeb#0{Ojs6I{H=+6PlIDLnE(;5K+s~YIrSg*IA6E8<*tWJqDNU8SkyH z-9=vf(~UmCF(k)Zl<&m|?WhGTzHW-W8f?l~S7~SOEZ|z2k0AekfjLP$@FMcpDoJU= z%7tV@hD}8iWrV=EaXJ_eif=le7~u|Foeb~?hO5k;OOwUNe< znOBRUE4iQpqu6rwy`A=?GS2bkD;w=lB)s^1;bRkI5xC%S#4f9=Z><>CzK{A7HMSs< zj9hABS<}WwEGJ?F=uQI%zuCC?7@zZae2!%@2%~%#n14}Uo5s)kyXSKY1{dVV_HOtV z9HUJ~yIIw$w|Vz9TxkfpRP!M977CcO6ami%Xg4Mi-}lVv2-G%m?~@?jRvB`{3vi{B zg*={{sU|>;Y5_2L6GXJvk+4;d#~m(VC#q59a=pj#42MQgQPo|mSG>z6bg*d4BsOtU zz>Ls3ZaXI%r@fN$+V@sg%IOA%rc~k8H-W(ihJ(c2>h^=k+SRar^&gjhIp%9BDOhEI zn5O7zmiv|d;P&d)@QC09_}@x?q_!eY0lQ3bGqc5Ef}gLub#*#Xoviyo%mSFrx*b#| z&5SB)-|kG4g3#r)V3Z8y?(#b2Og!h`wQm3}l)(v;S{z`gF1D#{!Oda2lx|LmU_b{g zS>=su6=0t$m;BCG>Uu6V9~Wf14wTMN?KRrD+D%*};!uppLPD+&H+?k}?zFocYK^x8 zYSFiaUSF^7YZwuJ2ZrpIESuMl3dsF8BOz^m2L0}Qbujo#L+_%9!MiylZP{HDFxGy5 zgz{z7qk4D;#&x0xtRa8yfd)x!2|va|FTnM>y?_SBnY!f+lIWYsLzm~}Gwf&T%Z-cw zCe4~Lvg(MYN{dQC6K&!~<(cG^3#NwhFLVQ*UuXyrLAgluNK#$mmF*Wz7AH^h{3azad8(u7&8&_`_w3fIQpHh<^)FG1gnKp5G>m$eD%sA}xoUO6exRJ+=;@!Zl9T8EI^Pa-YGi-a7kg&U~cb z!Vg{eNu{_c*%&-t#AHNB&a$mJ4tkCpd_1pEWSd)#RHJydnHo%0oo}F!kttedUdZ`> zEYr6&86Z6+H|s3!c^JFu`K9jE;Fev>1xiuvMY=2%p{R@Z6XDyTc;}*`HEw=nz99%# znBmFgYAXW3506LPDKArpPMMk7YPTthJ&<$Ct*Sj^`Q^}x9j57A5Y3ykC?c;1$RN;( z^};EwU#UcA%%-^}{Th-2df$xvXgh&^+g!dXbcM}JGlak;H7%eR!k7j+My*L}A508J z;BT+r`5+yc8H#3WzS6RL8h?)NOK=>T5C)1ohkRB`Kkt*gE6lzKPr!d}piBa92nA6x%CV^*6{_1{_S2#3@uq_hjnHCXDvhQ?z5`DG!0vF~rh66ZcWZ`M zo%hxs7yj8KGYt6mz}__#mNf8?A0o5Mh+6U))&M4X9~Wdh47nC#7?#>s7n>`1u@7U` zvv!1e(jY&mAL$#TU)B`jqhd=5w|H#vw6?0LUH98(aEL?}`MHl&{b&B#MK{R4QIpuL z)fFAE20HNlrOQF&9ba#iAP#*(lr`2#3T?;Qwla9j#h}RLtCSR_fCmugrthb=l*Csp z+!JwVGf|N`O7ZRt;wz1fQsWfG%$ue+ULE0uF&7rg><0$NvhZg=HYfd=UMp1eZJrj* zV__qsOOnXlowtM0?ryd{`OICG)EMIczyB7ROpKA$ZahuTt!|XIpd*>gh9@?`7?pi~ z&_4cj8|{O8sJ#O0tpAT)MgXMJ)B|LYcgcx)N7IlfsZHbW2RAkv{GaZ-cZ*79NAj1m zSkBq}Z7<{7InTWMwI%zA{=qLTkTXx_n|jxM-AK4ioaJwRU*nCxC*+Bu%IjR|(UZ=} zc)l}@8vlVAvxN-vMf6SiR4(uilRHkMlDV|EyoL0CIbF{D87#3$#zwpx|6r0GAId@CyAGt{#}J7jm9(&_P(s$k zX9CHke*-7WqDkCrs>!#)R4ZZjD%*E07qW;NI6e1y|H-w5oUCk(>}75LViGtI ziCEgWC^!QC56<_?xdBlH&dYkEPU}~$uAF*_uyk(oj-*DQJRS*HsK_#0#EX%5rJh|~ zT3uVsy$*Tfw1O%>h_GWuBqlIy5oQqMM$MfSA#D|^BWH=>i(LRIZ z(ZzLj&N;2iVk1iK&}qUBbHyUh%q-KYeecG(YTeSVY5qof=)o8=@iy(EtI-uJLa(gZ zqMd;fBZ~f{&X}EL#^tL+aZ*y>F=oN@oY}JkNkS(+F(M&Bi&lC}BfIV*-A12< zF5lJER^yPk4Y>7>yT3qP0Q}q}3)#`YNVZ}s$(p~W(|7ncR|v-Jzy=`32}LxL@6W~* z6g0Xbd+o*gNTi^7N#t!^2D9~Xv{5LxLjJFAQx6f3wx0F85SzzakI}o;zKrjU35{k8 zEttWBa565XsS38(tY{*jHFNfMmohpsTPX0l_3CStjN?Dkx4p9wyLh)meP0xG468{$ zaRDkq^4AgOPig~Hl@NWj^Oph>aUkM+dT5*?;#lnZ_3bq&DzT_Yn}YmIPaOh=Ri(eK z60+aDfGMc$^;(L5@A^mW3L={yKFa|UQiyOsda@F-7tsvLGg*C9udf|gFaK%W8)ake zD@Cg$zw1t(p9r#gvPyci5_k+FYn^kpXx9z<;WW|MLg|v^F6j`@B*D8rQy?x!%O?-B z7ZP(Pa|-fhw$hoLKNKSbS=3!Ez5*7vlXs@)fosC6zXM|ijeJbL!7}`bRS5j45kOil zK@tBBb;wI_Cvxy7SK+)}7h^N_OymcI@-fnnvLA#5?R6@JKW)i5UrA?eVChN3AoC;2 zwbp7CJymlf<3IreR{`2(j$y?V`^|o3{GJ%%v5cwjAjcoGxj<)fW>d%cfe?OB{0<72 zb{%d$X(g+#&4fM=H8JY>uRMt_^hHs67-G69ACjEOPV6}5uiOF)^AfJGT{ybu*o$8i z2WL4%_e1iVAq*u62A?q!lc#P8nmDHmM>wM|oDp5zSkVL}vn4Mu1cibkXtD(n+bMUt zjM0I-Hb(ul3cLQlb!lUfYsJ(Us zDi@BmLf<1e>CSavYqfWIy)tpMSDkt_)l4xcF7;~~sHf>&7y5LB`XgY-$r@=lT%>_1 z!xHFbejG{g)lQd}3p&RDRm2FiZ{l;}C^!rMPqvY56{$RQIQ59{^u;7Ko$I1}D7a7_ z?o2>xSYjjf1etujHyLA+riK(F6}Nfpw@t)K72!ZVVgxIg!Y~;}uYr+Kg|NSywg^3usTY!-!(#W{I4I|^eA-lGfViD}CRnjPPjK;q;`&b-#yznrk~8(4 zAq=JgeD#DkftxH(W|g@czp9sJkzV+Gvj}no-emS@FZ6+-5eYa5T3)_u3snSg-*5`` z6RIu6)M|1}Hmf2uLE$gp%Tlz&HuyE7_4q#Sj8)7+C3ClgM8b*_^EM9$5z5?gYU?!R zZ%t?%Y4aC~mi$@4kLZ))J4?p`BKI2LDS%U#!b*jJMdo38c26jPZ(s9QW1+D=J zr}NDh!^ePV9>v&ha7blaQDMx<5$#PQ+hcZfwx)7?hE}@aYEW#8`eTZ$N=;pkD$ZS0 z9|1ipiEpR1bx8&F<&XtIZ)D#RVpf2kgaXw$U#WapIPx$7JL+^$Ok>yx97@#t0Zv(m zj`+O1#+j$+)@HL+xZmg0XSSRd5J+n+Fzkq}lq=d*XZOIE_0W3lHyGqnunC=M-`iYG z`sDHWlq*(Q%#PV3d8e02dGYsN;p6YW`{P|Qs68t@Om{?gsvIp7N9*}3XWd%<-l5Iz z!r|q2y-|c{(GPBZf~?dE&J!zBcNdtG@EC&Atc|Fb2taP$j-9F5{s7SojePU7n8HBg zHYAqspP_M)?^xxxAcczmv5;LvvOTJSVJ8G%b{hUWA${Y|RI{^uYST}5qKRCmW;;M- zrsgG7gdyyevZ)8|W&gu9PKu{gX22;o*dy42IpmyE^W|v=I_w12&O?SE6>+f6hW!-u z-DimJw(qsL>>ojjP`qal551`i7wd;P9q%)Ir+y~>A9|(T6!d`NM!{xLEyMX$$tO5m zIYn?90%=ZGv*xJR$d$)fSP$V-1%W3Fl`EKI&oDWU@NbL5i;4%>k=-{?&9ylZoOfH_ zV83MiyIyAyo+r&~b`BfAdh8TBH-}v=x9vDimqBDrI*2&mvDT+BcJtUO=8r5I#COam z>L?=oYPw=AD*{@S550waznzl;ls|8=?MUuoEX%5(l>E}~$dXQ^lZAG48v zaP4UT%P}-?f@6{e7_o^&VhS%3K;$u?V$u*s_!u*bMs+YyBSFiS=A3g`JGi!Q0%n0x z5i2&6PkC5V9c{W|3MP&M2Nx}mXWUbO$<>=foi7rzE-;DUN-@bpxw&vt)4dyYjRGLC z*s4spBe__;px>cEUS?j(Nd>h{v7@#~qlJ65IJE&@SYfQR;Lp@pE9l^_;frF~1tB$N z$P#X0hz z0v2JRVF_cS5+Jov`ZQ@f6r1MGJaxU(YP&2WRtx&g(=qy$a?Bb{KV&dQ zrc798A^UEOSJ_^&O7~l}4VrNy8=#a#&^j`X__6}D!{jJcq$Td2P0R6X*A}BHmmOW; zQ2o)mgOReg;@o?y(XEv6PYr{04T1OvQ2aOd=!V~m?sh!u63B#dJQ3iEgDLfY{o2^=o1Pj`x8#khQ3;sG|0;B zWuOhd)f)o0<q|7JibQW2sL^^i7H4yNF;O;rx+D#>c8u?uL5v&jXuAX)i0V>T;dYyux&pgABygU zEWxvQ+vFC8uCdPt!Dk<0+p~(dk$*hrY*HN@CG`R;5evWAgtQBOwW^JTw$ZQyubMKa zuP{Aa0xDEg;V~vKF}P>SA*E+f-RyGJ5HZ$qQ@_4LO(2Gb&gpNdaJZ2%6>Jr3#rs9~ zDnNQc{vy9(BCneMys1ab7}XiH(#(0r&iSq24m&FFA_t!_WQxmoxVH6=xvEmA7&51? z-A?##<*0u;`vL|#N*oLDn~lO@$Bes`AbicZsZSVJ2-P?JJoTR z`O40_%=__n@A3`m5BzYNOye;J%<<(&V$!;eN9O%QL~6Mac2nkiuc@lq6bsMq9_x+; zQwf){ zpUXPX^uDS`ihR_x9`?ez=ST=g-6$bmwo+Mtj>#2!9*neF4N=pm55pf>B!Evji*{W1 zx~tV^5&uXP$od!WQVoj0_c+i;KnRs38c0fzCR~h|Sh(mYd)8(M$@j5yO{F+sX=FjJ z$=<6bdMwqSw%nEMwa!aw*FjH>!8k1NiX-haOOUSJE?7NiG)Cq4jBbGg}Zj>q;l-c+}@IydrwmO8h zgzYp^Fwd{V+B8L*f=(6&5aykr| zo_i>}^3yxvyzn0^BW^9`V4mTEyVgjvf*1pYS2#&mo-)osSzg(KeT-{K6>N^!Zim&< z(&`T8OoS%kh151p7;Up17H8@`^K43e6quDGhrig>8BQCwn>1HQ6+W4W)kn-)lv>Pg z5Ib~NXJHOh+{&Q#m?dz{oSec4fyGX!#ASbjL`dK2#7){o=wm_rSSy%=7XL5{PBt|- zA)n;VM)b@!!-lx%BziS#hg+dVh;C3Phyz3 z{aWU5IDUiI9vgr63x{os5Ra3R0IRu;%2NTxkleD!_4)$r?s#3D5Z=U!92k0}WZB8J ztcW}m`95)+b?v@JEmHPDoOBU-$Wp>6e9d{LmuCR{21emGIDQf*xfVq(7+6+DHvDc# zL&y8%v*?tZ46Y#-wAc6dwQ85t|3Sm<^BTM24JC;`S%~=An1v@Vjud}n)2t~sKSY*D zQQEunqX~Cg#`ZmD#ihczN-{rMFkd{>5)GErJi$?hz{P(0dt9uZA{X*d@1D6B+yk4 zxQyN1(9qE1S0KhuFpO_SeJ&~%X2do`)i;7)W0n^khaQJDhnnvv4Owr%-F6|aqKB~Fz%zf*^_VyNvbxUeI#U&Qvgmv^b2V{eb%#ylE*5zhF z6B>3BYBN-?_?{D;WN@`N=sIV1@t!sUZn=>xxe+yNTiS7(HAk1f!?lFU0;n5P3rpI#R}SX6ST9QUB1lHFOh#Fp z2)S!B7zf>R+Dn!nf}nr%MIVkE(j?6&mN+aGTOU0n^EnuriucI1(+8lmi)TCW(8KeV z;RR*lwb~Z>S&K7o(*S3vYKl>~GQRj7b#p_y5ibO|Bi|WR<;##YSBOQDp^?cylK%4_GX6bO^_KzH~0o-)7El#gpai12w;@|;8%xt855Hv zqH)T6@!qm1Okp%QBt1aD`Ni(*n>%gWsJpz4OkKXBM*?xYYvpS415mPhD8)h=y|(Gt=^IXh&H}iaDqxEG+UgjAyr6&!tcy^qMY;Kb>25iQ>dx6W^9FUxEc}rb zA<14RKK3{^MN8jm|DLoZ_F--<*=Qq?D(}!vO^_sk`ye@f)S~PqFtYk=bQ^i3NL;oi z@pw_nNa36yghE;LIcCm`lUo!^#3xG4)@?g;c)HOVt-8^&=zRm@wNavC z)3|M3{p9%_Ih9+hYyAdi74w>t*bY>|ZROXwA34-Zyuwl&BD)v6WNAqmCAt;=&)W65 zU=yfin{2{6oOYT~|FY;i|ONeUG@m4><2TZTx?AY&OL#j#nchaD0g z6rc6J~WSPncYI;&0t1Z{P`gT0t=ns>x)n(NbR)Q1T>g|M_M=EmeRhxcy}8eiw8 ztu)i2xx4Wu(=o>SCyWZWL=;WZ*~2H%a{%-%*jg|u;BYm0z$La@k}ddB?tsvBzJX*= z?Zh1PoR@y#W8Cl!N>+0a8FwmT33f(@U3*}#5pD+c&^%Dg3uFWCJ+k&w zX0q+d8W->IB=`syYjZb?lGFm|xN0=PTmGSI7*J(1n^}Gt>+Rs712G%`MTCZ3{;?LO z>PJk)kK!Xi^~sN^O?dcD{6+InT?yIW#@!ZNuw5zL{sH*tE9fu18Z)HsI-@m;@)vf@ zR&tEHh2NA)DL+N63EnmM07|U{+v6)x==TC<=bPN^{Q3?{G=81;lsvWXy3T|c%4{f|)pZ1G zScwuNsKhr3C+3$)C|rFk0u`zb-1lkE01pWg~=9w2hu~DN%ukU52(M29bw|OemPq=(bc(GcIqtY&CNeEtQBy;kdv(fRUu?x6)5YFlT=Eq z6Z`e@gDrN^e#{C<+k zE;HC4x2ebCH=S}TFbgSD%?+C{M#dsL8sz^d`_YgGc9?4_Dx`V{fK$qVQa4Le7d(pG@(bY&EDmww4Qn>g3d`-Q zc^MG5#@yq1mjTt1?m4NqI;c;g1-$UgatouDRB2};aWuEK%?(lbPS^ICU`kn34(`QQZx4CYpSXf zmtNV{R=AAR6Y~+E$)?eAuhEe)VE+eB_Lw{EBQIt0yIy%UP=mhQlnptWr=-v-q63ZP3CHu%~K$t(h*y9iP}2vN^c$PV^V7|*P+ z3T?UFI6+#u&?!m*FQ~D)WPg!qZkomZrPP(|sM1BgQ}alb;pU~|<|4>iVoG7k<5lPM zb60+nDYf_UMv|#nqrY^chW9u;)hs(uR)%SLm?|?~-Gaku7nG1Pu(qXSlgXZgb{NGA z#+Su043+?iYgYrR_wBaMboK2@>5cwlxAHNn^%2d=i`CTR_!$}K!>48sev(81{75DW zE1MJ$0d*?sdif2t%vfgu%XNSo$ntji@@xqF39h48L#X^Uc&Iy zJ%s6Bnn`{{Wp1ANoJ0OflOpi(Yc%nb^%C4aKo@~}%4QqRR7qI>IiMS;Kh2Y@F5u9g z*;Jz#>f{ejsH`t8cZ@{o86vwLQv+!@UTH(UM;)h~9h_8Nu3yo3(PW{K2sV0ag|$Q! zLW0R65))n$yOa#E725`44$x`>KuC_uT7mzFPR^q^9MS|3%%Py&vUkRqnHZVvI z&-k%6DOk4UT$Y@*m|?0g7y>UX+_u0B>_t$>usHPz=Ms*2BO#4d(& zHZti^&qDqoXe&63qMlWQaUq>Ug@4W| z#>iG+AT7E#Mz7W*8Gfc6E@19{G!*H#L6e}|6k#xz;9$LfF_WN{IkX#%Qi>Y1p>84? z%BX)IWf~y8PYi`Tf&n_=ywxW+oUyq(rZJR$9ClnIwV*$pC3;b4im1H`-M%yKtNS5~ zZK8@DatAu^K2BKU(OyWSJa7`y*d9oO4wG7f_4IFKLfxQM(R#UyzcES#;I|3C0O`w_bQmy~PE%{LL&2Pd;ni@Bn160HWz3TZU99 zen1}NYzvVj?tW)n9_&d90NWLXhRV0ntZa?0@mzZfX|s`)+j}ANilNfmsY2R!`OJS3 zul3u3AHWh`ZQh6b!a7W!l;3l1H47#dLH5~DB?w>f$S`71pr z>m?0Q__Cn5`&*#XzZAF({}#9fidKIGuGfPpyIZC_JlN({g@8L=I5M+(Kb#+gc%V=` zC@(;h^}NTaX}JyIP1b8#2yaHH>oqT;Zs`R94?jWD*|?VTYZimG?sfMt$>!U|F1;YT zVtav-0ujti)U&cf(hy7+iMi%6hxa8bA&#WCM*iaWP=V#|2CgdWH!dDH&$W{(tW82O ziX5EhL=jK+1oc^D+$!h9?TXCsx5#k`&ya#2w%;+)gL3lJEbkcir0nJnV)P1C2zA_j;(njOW5{m|AKcg6s zHBiM#FW4?pn-S*;s8h{F>7?E=N?94Ko75#pa~oF}@~|md>M=tS=`CG3)rf^;~0pcRc@b#~A6-pHJLYck%hjp`3uhG8qS8UJ!t-Z>>6x)pd9^31(bH9*2 z*FC2z6jKnvx{ygNLCAs4hfxp&>F`r@g~YGUt=pC%*R32@sgL|WqiA_d2@sfPSaIL- zA`YFUnbK(cNVpI8Jl-ZvUT>HF3hr(EzS`a8&KnK_%W!L5T*s)h?1{8oGxt)Xt{v>9 zpG3S!vGua~)%rg4^A_OkLsm&+i5&{OaFNxsOOAp=4NU?$u16*2R!FWhhz!tY(i0S? z$U$qmKS9WY-fVF|44~DtHgZ`Qs3KPqeW?Uj4k_TE>ju1NL2smf#h1o^n6pZ#y9f{T zvQd4n8(J4YDnX+lbXtq9%@T>gz=2wo`K6lM5CNKpIX$B!%CXJiuY<+?#(P3@t~R`_ zi2@;|&K3?qtz{^N(m)(-hG?d#FLr!^rYuTRSuL=RZiQnRo=4Z~Ia2L>;s>*qZE+pQ z79kUvqfV9a@r!z`cbv_7hsB93515e}UPJ_{&T|#ZN;EWTDepA()j@*RaQfa;HZZqk z_f)}|s|7F**NFlhFFk(RBaI^2mz5UCnM`js8y@e{XMtefdBEJpRFb>y`J{5SKGLdGxk3Ur?ne|)5oit>l3!SCcJyyUF%oO%u`|mrr3;vMgdf4v z7VMR1sEc!x{&{Br*I6c~iSb3tq4vSjB`z-zS1)%^X4q3`6w2(lA;RtR4tBJOJ^?A$ ztb!K_3Q)A*wQ}JM<_k6#dqNI7i+s2oo`o)S-iKy7BuzJ5$ z8N#h%`RXZykK}55l^KmVG#h4NV zN#stlY!xOgZp9o1?x1z$SY!9$U*-+LJS^4wIetN~xTiE&mW=TeQUlP@Nfg^RAte#U zWm=ZY*u`dKQn@Ak`+24U(?_BP@X&$E4>x7yfQj(E<&oz>5uLyrwOTas3`T!~BFcst z=VPNBf8?TFm|UUgeFdY_hv>dvCwYARH4%2fBENt@I$*<0NdlIRC)kVUL_2H5UHy}n z0)FN!Jx7&gylz&1S#uGe&2*)l!(9NI#T&JX*T^Q*JB3-xX%=bNZseVL_?&u--&@aB zMq9LC6eV=19D58*9^Q3tY#JtL4wICr4?f3}E*H(KDH2$qEZMRqG(B)>`ab@{aSeX= zd)V|BlT_(%vw^?0u>CKJ1^-B6Wo!(M{&N6H%dYald7gUc?UL}}*H6RpVZ|w)G!`{V zK!Oty<&*uA6Sh4iQ6t90!mKzieJfKoS1Jkq@cAe%t*hbxLMZSpWN*$!Y_;q~@@ z|9*wR34N*5P3uG#J0muTk1N}GWlQwkz8i#lPep&{dKwkg{v>10rU?;xPmZYJ2v7?; zcvZrUk_Gk{z`HlpQFA6bp)q{FpzMx9k|ic!U7YGJ9aQj%E-}nlzGgz6Gpw7&qmzo) zSEhEKpv&0YB+NiXwkzUmtSX&95PO3lFHq7W^PMYcM_=-pV#PqU%7}ik4Z20W<22XL z2pp`u+4j0SC{QWLgGnC0??Vb^O@qcsu419?ex=C#=nF*4l<@{cJj1fWuj8tflOX<) zELG`-+TPm!Q*mW9DZ_R4H-|8fAw-5jkg*VH%KKCU+96YjlMW8WT%G>30mjU*KBm zR4*XtJBr~vrx;Hu*a?9Yp4kZETFij-*oI+_$Sl`CuGb(In@90|B=2S70cRX^_i+-k z!!9EvVkzxKdr9O_iO2 zH|Y|j+EMxFZ9eDZ9kGYH@RR?z1>LaMzfXRJkHp`G&%d+*DVSM)?Lfj-W{zK*(7zwP z-hUmw+*OwIkw6YVC_a?ut;t~Fh#_g<(nsRHeE{{1Da*mx*Ak zK=h~OvD4`f^HxujU@ma#0*9Zf;iQyD#l#w#jy2XG(71>TWeQSsmtiE9Yy?zJO0;gM z88i(2dTLp^@CzL7>G&S`i~TFMoLHPk(jSsoZ4xs$$ci$;B$HXV3I}4J=a||u5K}Xj zIg-j+WX}~~FH`XAFEzd>WSE96oJeW+xCo7EvSO)rU`FB=m(_q3kMlx1nmr7Z(ylGDlerH z%q0}5DZE82k@Sx-BB{KGm3fj_K*XJP9Pk)9H0h(-sDerP(%atmF`CoJ+i>8%F&}$0 zy=gsU@1^ozz`zT&?Q#U9c~v@<$*kTP)f|K|CJ@`ipMsfXoUq@E#2wtvGcii~2v4)Q zV~o}#4+FOf;VS`w$^zGTb;IlN2yGe1FPEMUNvrWR_%R^`E_-24q-E=mv6sz zvSPFYYa;LfMD_(dGtk5DB*~Y%S((xR;V!x~V{0DsVp{{(!AHt6&vj;aQp^i;|A|c( z{E3Z1)37{uX(H%w)b5Zy3_c6C?zRA%#tSaH%Y@OEgJ0%}cEcLQaYI`bM3I`8V4jDh z@B1I~>%0O*~MUUH?b9@gE8D|HzF>y5B_;8eem^lO~KBC8fWimzi|mNV%vN z5izm(J@9*dkbRq_!g z5c^HswHoB^3K%Imyb4~}&ap@!=&CXwa!MCxBB^{}7q1e)Wn`Gf^IUXnB&s-!s4sm< z!6&XS-bdf-7*3VLVoRwi+h)_dag%J~qY@*QRORv&Q;{ga>K5LTti#9bKr{jB^5Pa+ zd2No8G4Q3JhjUIZE`MgIcPQM zaq-PC2tF>1AkO>=L`Eo^YV3+@*1H@A9RKnI{WQ7=0I9o)!_rmXL*jcn?+Y z7;fy{J~IX2H8ute2%0s|*s%wE;9_)L(}f%JmxunbN5-lrn`1eo2jnHBRx&cwV;(~? z9LekD>zj9}HnnL;)kAk_c6;s7VDLv1(r$x|7l&Ha_^Tef;_Pz;%V{KO*K_`9wD(xg z3NYtX|3_sVnpJV#{hbW!zMJmYoiLyp%CF}X8epZ>>>SWjyvhe^@~F=Edgb=0=txfJQv)&vi2-W5p(j42rA0o@}##zYfL}DdEN8 z$3PJ6uZ>l>%FTaO7z-y6O6};@&_ix&8`Ryjmx(UqR`wwAqAc@NlqwlHA+fTLTty{Z zs*f=S%kDI#54nvMy=Th%zH@mJ&9gEdHX|D((xWwKcWi^g)dA?8iZ1FLT3_dx(BCb2 zDvF!Ave+IyAE#s;<4cR~*6yF`&OYCCEfm;!Anb&3fx6db?9B*~I!)*ncjel#W-vB# zCo9;T5z$H=kGkEbJez7K;}WO3=YE*v|53n$jb=7cRd>;SC`5@}f$F9qG&EKUy~$O{ zFm`T>Gfu}@LzX+eSiSPkm>Jfn}uKQehvkV6hmi$rKd|r`f>6WYjXZB*T!j zCP#Z&#&^OtbUCw5@|@il28zV-Z&@MVhcofC4-I-~(GU*!*(OB;e)D(G7>Au1A@L1! zVjXsO!`;mxOWJ5t(0z18wRLzP4nG*@R;5GK-q8|QLmPLVf)y?n zL{jP<${8*#OCTYdCz%)y>3uvv0N-AlJl>1U=Q~31#jOq@YFH}5%T+{U?NFoTbu1QL zu&kGqKpWGrjQ?SZM5gF~{ur+4O=4T!;8D1E)NfHiwRhbbq%gU3xquivoKK~lYhNfG zU|Qn4vL>iQ^ETp4OLamvdcd728KdC|YJ+xXL$Y8JIY#BkePo;j9|q48NX%rFQb?Xz zc##@y?qXoLVGt2wFAnt(Yowh3zg-<1>;d1+##SJ z?E?TjB090|F_+5EVA^CTm%jKn7|am&GYH=(;;FnB!d)F~jZ%~i$kw4p$KDY3Ga7=Do{*( z!oA5CX$>ml3FH<%oR?6oLq*)`XyW$!Z}NBVNL7N7rv=6JvVtXYq-=M$fxSTl9KHc*g;>=k+@pZaBa+FZT zeXYT$%2Ym>#*5J9?GBOVba?HF;_8R+dsWPqJSuN>prbZw#t{J&*l{fU+ShPdiGKwq zKhP#qT2ams5-5&eLw6AA$c1+xqGaGLtsTo~ zM#fuoKp;jE^3xVKwbB1rcN@TgWWJM)J1u18&%(i#*PI&dBG+N1F$62*o?l*FXJRTS zk2oJ(hO)NNkUkBS;KbqTO;pTYyx&E9K{|mDu{i_|w zv0<&{ad0 zAA7qqT~mzb8zzt(j(9mDKVs7GdY$~774gPj3{AtziLr5GJr14sT>eZmdspo)jT<%; z--hT5F#Bu{w61zjk+@zGm|5C14u9_ckpa+m`w&OD*&7>&F#pQgaemKVscdQ!|ExAhpv6ui%1E z)iaK;UWI}wf?>OLb6f+hX~H;%e~1Fu%YeGxJAv1$e*f{APUl0l!&3bOA?ClG zBf-`hvad9)8fb1$PIoM=l1g@SC4m1CF9-2j5@bOxcAA1CxXVr6Zt61BBF4y= zxw^^^iH|ryB8;bj?U7{aXxb$*I0F-jbF5RvRu>@i7V&fh9dLxo8|x-#(Ew~;sKvQD znlbjSn9(`F6xYd)@pB?bzqK&~Z@w~&j;F1$TR+i58ur%$2u(=xs-&e$k%LRTGzpU` zYFpa~L0ELuO%S!~g;>9|%~juUA2jevF+pZNK#@ULXoc$w{g=oHMC8(ZVc_}(@S#~F z5yxtSVm^{JGr}!)8x+rmp3EUK{a+_8-CP3>HdJcP`bYZ#k%!Dvuw+LvPGJ(WLOTDN zL{uAQ1C!h)_x2v{@f8vQBKvN$5t5!w2J=6U^+OhkW16lP*yl{H7bYBXB7lJxxDQtBgEZhxgs-nI?e^gw~Sawu0qmBOW#=A!pgiB1l!4) zpOA5;vlgst^x^@k9B4CKN4speseEM!HZJbtW&%g^Y^+4(<}sFP%Gw8C3wRscUkAek z-Fm`wn>m80%}<;jo>5IwGAhBr!Q?Dsjqg5ZKg_)8RWr-7>rct=k-h!vGZw^aF@i_- z_8mfkSgpva(!-P-x+qoSTRbYWkwaYL`(pz)P~2C~_)dduY?1iXVD8}cvI`HIb*e%Nf8H);NWqk#NNlKUX zBkmU*6vw2}oBO##`>~bBJ8EVg@OU@=FgjiT>#E>_@`6 z$NO8c5I@ywhdsA)&a4=rqyb)DhO}WFYyC>K@@j^I2#iDXVLJOoy3=%j+*#5gq-AUv zLzOlLF5u{tBq3R2GLPW6^|)F0GSpgW7_Q`Kk(7*390NC9 z<4et$2qU>`OrrR(AgAr9V&hvQ{CmW)1yRW{fm#g-){)*YVXL^k7&)CTRHZ{btW_rh^yRCTR|c2(a@AL0R--sv>&5QyC7 zjSQ~G&^0+W&}98zmqvkB-FaA|wf3sgU*QR;@-T5O6N3KMXU6GIO6^xBtDa%(2m8mr zKV~E44Fvcn^>{G8X^A7J z1qQFet>pB+oen|tdu&_v0~N?x1D2r!if-`czq~laQDt|+&uh0w zIr_4ox_&dTOp&O)(>#|=LhWrP%Y+6YZ|~Y~n?QERG}G{HR~>uJvK|sF{RD9~4w}mP z6*QHTr+nf#Ha7@$mY76OBP&$+(EiNV)E%)Lt)Oj`-=wB!3FeU~^i1&NlU@1&4B1y6 z7QfBG)jG9r6gxUt%1eNuS%;a*DIBPFYK>8jPJ?F z?SEXOl?|Wh0wx4%w~-|!N36JI^6ea$Mz5p|$)|@0=nJ=c?a-o3fx)fo83sjQ4^9^P zy`rG=J`~EH3#JlR1fEGd?s_!)*{rSu29=`g=JK@!0CeG;THG4*9GdxeNJ=-V{ttLO zC|`vbkVEatl!|y22bwvHl=*BWIgMT^PkX#tkOJT}Sva+kX*KEoyjOHIomL#KJo-5| z=I_(<=eoE1)wbD%wG6)As8?xjiD45Oa*ox{4bC`;psb>Wn<$2|sV%$LK83-p?=~^> zBbI_JHesq8Xwn<3g_53O$he%9><;HfsP;1vSenw6N&J-+)6olI?FnO}!)xqzC`p`D zbxd{9*sU<|3&U3T05<$zVpW2q_#!b?Lnb(k`8)JY75*6M6AkGTw9qoj2S4}FRMpYt zXY0Hitau1ANktPQGqllubwalUdm4*nf@Bmy0PAvzVsh>-X|^~!5g+Vs71^mz7nHE% z=+45L%OVij_BJHZGk3ZLq{d=s|CXiDi*;-@{9BqdkjBR#DPPpYXvAk&=iMB)${9a# zT0g2{G_7yNGixF#0NTsiI1;Zu&{RP^WYaLDWDIXz%uenWnG16jEM1zZZX7F1 z<=))iH9N1aAgn(K<1wpp$$wZF;F3DVH|8$2Z#6-g3>{DrwOM3CH?P5tl#(}}me|)> z)Mu?W$}g)PTJ$!*kWKj26xaDHx68PXKj#-BXAe%TJ^RXr^C=aRfw4ROz6zjX8Ec*f z`5+s-^ZjbALWC6MBT1xt(CkmI+0tN^1*@Ay&6x7IQgyw~Tgu6rY`uf^#n0c#eUazd zvR3S+JVpsuc$oV0>q?OhZ> z(`eR{m*6M|=|~6ei8sp9B`ADF1nOca&vlpMYbW8m`|Fb6YhY!GknYh66pUNDBwN5s z!iro=kp9zML%w6C7oU84YEoK!bK0PDX@(KOlz>T+R#IZwd`D&1T|~}+W1weVlH(Oy z{8$<9@GXT-B`>zAyvJZX;3Z4P7+TBNqYh=!36@-A;TA-`j6f=_;9J~Cr0~a|gDf6d zhOTf`>Dd-@lWg-tW@vi;HnyUZ7DeNWc$2Qpaa!l3SuokPGtcP&%BK!O=d572p>|^e zb%85Ct7>Ds4T7pbwm}6hU$tvTCIOn4)`aXu#?NxL?C}XxKFG_kiw7M(_P-q$58WXD zz+!MR>OUxvfq=}o{}mR)_HSY_09$K2TSsGue@mF--vtQ&D~Ry_iuOnPH9&ng+{!+?p`ftQ`A^;o!^J(abx=7$Q!Mcg0{# z-5bP=2{mIb<-=s@*9Q6|jF^8Y7l<}Bgx@F8O;(3ePL1KM6rvQ9R4}Z#y8?(j6Aa^8 zKrR+Vb`%C@p6hmaq#IA~vRy^g-v0Xz7O`pM1xGlPIaW2mKjUCfg3B`RH_a?T#1VC( zPpKGKIOv7RUp(lN&QLZG@&rHgKy8$u#9#DB`?>N_i|&lzi-R+asyP(4{;U~9IqQCF zN#Jsmk(XTtvU+>Hp`4{)^LEV2)sr%uE~ct7Q|pWzJoqdHlc|BKek(}k4>@XrM0asn zXbX*8++#C*j$_1i{5TRpC#wOiDf!A+#dRWcqOkRxM%3c4kmNBzk-#iTP-3Jw7*HxH zxB%Kg6U$abf@bf8X6|pdb<%@-1%l@03$cKn`}fCUgV^8VmqIW#t2I-j_;mAic}ea+nwfKW6h8(0U@5R;eEyv zOZ-dg#cvs>t20gSN4(umQU--nSqV~@O09q&qRXabFm`fg=B7t!Ho#}5zKTCldtpCP z6Um7W{zp${bGm-o#*dWh)#vqwC?X^ZDUba=HV`>tAUP$Sms4HL1*64IWn1+wzE`1~ zHXj;a5|3P=DDF3*qb?)Koo0~YTJ7#Hxhzh(% zji^}qzzeexg*x%m4@P?;ySMJ!ztYcj8}p(OW6b@t2=f8bXu!!1>GmwOhM;_@wa@-$ zfr&q`V+zA$)GA_M9JsnjP`_aMa9CuWo!sma%VyQpj z#qP&=Am-9F<>D4!MganyNZW=fo^vAF04w3g#7<#VKl5wDG+RGanhstgF%nU5NK z3SYAH13S70miObgH)vwtksr_8VB}#l;*z1^1uh*!9un}{zd?cFdN=-Il#+<2C02NW zSgZPqv$}w&hB3Lp08HaXS%XRciA41&s04_QbOetkm>f98xFw`!@l`5H#p7HR3_}i2r9E5NPU2L zn*5R}n#>xN%m}B4PuH()BDY|xkzuPtro)6iSEmjd*czToIFD-{)ny-sa@j;YpJ+&3 zTWOBzx(Hd>UQWy}$>F!U_0barJCQ7VLyPBdr+Sf1DU6^zTs+xi6LSwA)-gF2p{&oK z?s0HJ7+wwu(RH4<^cUaLR#Sk~)*c}AncF?q@bT=%NfD`J z{H8C<`40I{pJ=mT2y2>Ja8F*x!n(Z4Ej^lGOow`o*Z~>RcEk23Mr%tGs$ne5uFt& z3JZAllq3xsD#@6{aww{^B^GYnvpIt*yE&7V8xDgG!f|->@NCidG?~;0yv}FBsHRNj zEm%$*K(3(kWbm^0u0}g)%Y#H^P(qHpzb4Q3im0%Vw(?O# zW5}c!=wY;azZg9Qg23L5=J|}3j!$Lul0}|U7#~I)YeP78Cfv_wzYo@vuV65tNQQg5 z($!p)l?-Oc)Oui4@t-GG!`9nP>p9bQ7y5k+J;h8{%&QY>~_N; zMV{9}V&1i9iK^|8ZUyq`xD_|xcR!Htd)(f^0wylHYXuU&ZpS2@-;OpyHa_`@y*=?a z9iDPu;P3O8+%t8#3qa-|VUx3{4tKcnQsl)ZVs8(OpP(Bzo*<55K;~1w3L_UJ9{5cX zg82LgwwPbZ&Yc1H|Uk{u|D-LO68E-iDM4mte+Z&;D9zA|had{<+;w3iv8r z_+XiS0jfd?wEo<0J*Ty)U)9Z*8|T2iENtkJcOt4fOM!J}&oF9w2yb}Za9CTjNs$9N zrCIs>9MD*iy@;WuD@dg7;N`Ps@#BeFT>S}xE)C*(=4f-}{{GNrq56@&LMnH(-AM{& zoV)gYRu7=cQ{Pi<07M6u|Fg}>>^cWKJJDdZSB`A|H#EL=jKGgb!5A9hYto5DI$EmgC0Zn)|G9r4&DJ}*k@KyFJnA|D##3RH8b*5;bvJsWw2<_M zhI%p;47t(L<{!)szFbRxrPjK`R(;ttTOcrZx%qXci*fBpZSo4!PfTfCb}@LzCeMd2 zIDhlpP&du)$>OQ%xMR1AF{HC#wW>2ae9iTpRGoTXt9W+D_qp1Na+%`Q!|LLB24)W{ zJsZGGFCf^<{tyywzd5(?cgk^*;6SK)gr{=my3_l6gd|YywA;9rSLTgH+**E%?z|Hz zw5yR234m|Bqu8o@sOO4YHNhq9?L!-4xM6qwYs~*XHdK*-eQWt1M9E>8R_}uED82jr zWSogm{u^+G=nTsVD5>@$T|v#`tt-9Gh<1Yk8uAV7zc4GeV~0#(0dblwq@dZZf725+ zScp;?D9o_e>Y;_BtXU+Ypc90d;0A@|qP1%;a5t(=&f%{d)k^?Ty&e}l&}*#=ue4*& zk_P%PeDDsTN6+t~-anJYt%&Cehyq^~UliLTW*O+X7M61Uq;}HcU6B5RB}Y9F;#Z19 z8d|}5+pR!6Hm4Gz=+LW}+4mHxf_I_7q>U{27y8Yh zqia`Aagn^J&dTb`ZTe@$3ybEu46UbTJB*J#NZ~mJ0qGzsza$rd6pK6M?nIYMk?y^VLI} zC&jOy|3Ugz_SIPDf&&6#CHYt7kj($I9Qw~nMbr&o{J)KdRVvBKqX{B;gV%e}5@nNw z-}K1-Jc)55(qvlaTAN5&(SzM4ai= z?XLQ8>b$J;_3?n)!=8ou7^%#6<$$1jiFwLPSdv%1zM(edy5O2=T2}MwFP+fVaRl>N z#suaWkl@+N$%8<0z9}Bw>8gis?%R98Kp2(wB@u~|bmg?dy}Zq8Ajg?skMSlnG9RD| zg0H6c?(RDI5-lHC+dPzZoppU@%%WBzvmV6_y|p6O`NA0RFs!U)E1MryN{u3e8aKlR zzO&c4@F@_;ZNTfyeocggahXOT1K&RjYjBj?9K)~Vl4MUGC+tMSHE-7hwHA~#^-9ZO z)xs{$LZ6sxj-9#h6NPKgWKK)?bjR{2T;#F)%75S;&$Pry5)Fo=#su-wT|=u+nu3%t zz>#p5%BZgx3$DV!uHRWjuAb6Ld#7gP>xkQnIsrnS*59!p+VER+G|Wu0Wfp}GonEkV zfJv>tz$qFb&+q`^ANBC_vJPVKH#dRvUvd-vU1l`kTa3}k!5QFW`|p*+^8faS_W#Eb zH2e-}0B{oi&)EMgk1JKa`7?@0e3)V3mf*DdOAHu-)`A*>q6JV(VyK3th@vQ7?H79E zyDrVGp5f1^@6exc`cfpJ9p6(2j?INJODR9Sjwdc!S&k;ACN8VD1$;m>ekK|8!=IiySVYT z@!Y6hxsvh}%I}0*4G+s8z5-yK&1Eb*z$L5cZmU|tb(Y?{;C-}MkwC-~7rAW4>{x$x z^BD(a)#BG2^N5mLz@?WuQa$^T3bp@akH50gpy-^eabjWz6<#3c*m%V|ZtHVdwD~JO z`GO=4(oa!k5NNQg;?aL6^2bwjFwxCh0fQ~m;8%pfJ8MZv!I`?=qV6>ET#qxVeGh3ubYi#}JZL!}qFB$+l?3uM#XmPnp7PygI*5|ybv;z>JB zXLfQBDkl`zhmv9}2p)R)4Z!#Dsi)lEfNZf+;sr5=*`ClmPDv0o5}+0!$!mo5p?xqL zG?|VSJXzzDB?(PsUhGnr{=y=w_e-MtX;3gSNPaUuPbWFIouT6J_*6-Q5Y+tSrAh%n z=z4!=Wcj%|UHs~vBtv@|2kuOwZtMD2n;r&2qn1VP0>U}2i*JzyLJP80FPP688gvmbyQ@%$4GZkiA$*lQQdZ+tr( zOEU{M(8uUcmM!m|-|_os^J5_Ti=Q{qgxP5b2$pcUG5<-_3or-XB|_x#M{P}C<|et0 zXRM(H*Eo8NaY<(DbF2ze$FsaQn!+#2X^#FF_x4EzU9|$kG#-bq+Q4?OJG%A8e)fKE zZ^iBrRu3ly+j~|OJ4sOlRd{N8j95WgVJbmOxK%qNNVu!EqdPr1i-0j(Wl-Cx6PUWH zlSpG0+RJs}`YvQszuV0Z*>S=2i!1WMVc&!mKU!hFaBwKXtr@5MxVT!c$Y6gIPm*jVc(Tcf+ zXF9WU>BVXHijTDQ)yyau)k+wEz?G`3VC*kQn8H7`V5HB|1U`w;(` zlrOa1y;K$-1WcI?nBy^%0_ps*jIzl@em)`*6aORvCW8{O$Bq+cW=zF41>W^vw9uW^ zD#s|BYa49RLN-7tfT^rh^VPMwC~91@u;gf;R}KHja^3FGoR1rne;dBKi|u&3beL-0 zuHWLB#+2uOfJ2_FNo1ybf}r-#{n<`nKA*o6W_{64-DjPJ(OF1>WKns1-S9@;=QHiH zX~qWmz9T`oh6f!;UB+k7NpW*YWP;N+S>La`bN8%Gvt+ee#37EC(9g`kiHN@P`f^Z%xS84AquwRm(n8+Y z+jig{QtRGs(Bi$)Qgfv|aTK>fL`MVMF9;{ESi;-!%UI{i9G?;x-U>IbD}+OJtnx&O zq9UIO<@Oa)=6A>8PftdqC1IJP`?vxvNRKjL!#@~=oub%GO%A<1Sc849PLPT?2!oZ2 zhACFbkse_2r%Il$wEm1vO`iTcsoI_Vgbm3eu9B4dCnZloz0p5R&aUv6m0j1yvSbGb zsBj$!D;U2*Jrn(zE5vsd_}{nvCu)MNfQ-@8N0DK`NJ4;Q9N)0GQ($VSOM*%8j|4$9 z&cpN+Z(m7se{z=K;_9Z$NP>iQ(H!5gdy-lzYhJ&|1WKGM= z%JieyExhJm)Q~{Rnxri+Uti>uO6V%b6S2+>3k@z_@i0s9MSmNm0%V-s!OFt05F4GsEVf8Q0Q5emnLhPT-2>8*dp# z$|+Y`L=MfJ%xRS=LPsVqF;jRJOyVZ}V*V)x-Fv$O%%%oZm9;hvMf;3UXh34iw^80I zYrEC8fO><46AVmyis=qn8HtL{X4w$6)N-t25vbg7iacocykMT1l}|B3QUsndGkje> zE4D_4m!5KX9~l%t|C%EaA0N3VS`po@EzG%ZF z`x4sR30rog7@>{VI1X8^YNB{^&eoP`hI+zcYs=2slW{J0mTebR_1-{5Z7YP}wr4t3 zY$&rYN6Yk4xN><`-01OvD4pvv2UoCl5>>DAst>}pi0#D*b(4hRm(zw6ZowWq#rhyr zbn`p}Cf70GmRmSKx_p^u=dG6#&S7goS#nY{^2+8l@K?RM2sjc~RuTqT8tr{iX7wze zQ#Ftap%6Hl&kaH}1I*&(=hYIfOgcXi@K0_`1j5r_^v_=)424Q{?mx8nGcBHbCK|%m zKZmJ#3yc^;-8w$6sqru0v1<kQf5Z^H zdV9bITDY>E^@ec#b)AWqL2ZV}`%H=}*-pDy-JO@N*i#H0*yQD&D3HX9b`y$)kT>(Z zLaif!5k$}ow{}r%ChH}Yas5F$pUh%`vgwy!Ks}XD&n=?=3ulA+APJmkKJjB@?nA)W z@*WO9e!(fjT(WzV>sVSTYfzu{=e%{5AV?;(W1r6#X7{)&Gs|eGF3It9&Y&@b4f{!vfFVLA1of)7PZ*{28;!^ z50_GOP7|r4&gy{r;UmAYrH4VXh25+%U9)@vGW>g75#17lfH9_0aTG@yoR277AmKqq+-{W9AJ5pQHJ-M;6dC2|^>O}JS6PBDqsa5QD#L~3O5Td^zSnE11S zqc|$;Fa{a&0-FXga^*+cW$lXjD*;_6C8#4BsUdd`I@?l`HhP*{;khEN6^K%;NkAE4 z;gmR-PH#R? z6-Ngd-ec1%xjqAEz`6R5BTJo$V(2yiP!5OAkvLo9A}LT-R7lXL{cjXe0WI?Hw9Ie7 zPG?>s@4q8cG&|~0VG9fH5*9&SdMkn{|5ws58+)X$)h*1*w#@!cq1Ya{{jN1cnvGk~ zS8Qz0p&$p2O*$@hbYa0(_Xo5J>UHRYfiww+`n6`C55$ISGrgTM9Z*nhOE(A>7Y7`s zm_bsI+>#cWNsM`x7RpZ|r_0}MzsHEK<~%_lQ)D^+gkeV+gc?C4J%Ey{NWH*a)QmJ@ z@u!W=vc^_|8j*aJMjcsHAqyt;d5{kxOq*yR=w(gQ?2n|cZyY}4rrEJ+2grO|MXiAL zkk+TumjQ>ON7?cERK!{?Om-}VfLjW0x!8)(^SEV(fk(>hq1>yBdv`SgSBpfDK?*RC zOOctC zYo#hCmOKheWP1qP8^s`{ohr(ZO2ZJFNI*6x@e|%+BVrRvjmg-Gmv?Q|D@11I`^ z$jw)gw{^_Ee#=Q*t!A)=D=}i-hkotDF^L?W0c^)#Ggz>*`SqU-w z1AxnG30g83bh-wnVUihG(8WJq>0dIXY^k7!gjGT}9u99DmH2*+av4ZkE7vQIdl>Cw zK8q4Z-(3-0`A6^M7c1@~JO=%EbtVf6{^ zCP(?gN|QQz@*^VG0Walvq1$;=epd7J@~nSzLSG*z++r?pyk^jOm!>Mhe7pz~^4{q0 z4no`ms*}26^y%5zo}s|(?(bGr_YdkW_uDQ9#*4gL`wPb=c9b0h7V{>@7`YirEiS(R zic~+KZ0Mgb?CV$KK*~w&LwaJKl-5s4N`zzar<;ZERlr^M**1#js_hu5dzkfL!AG2F zDZ?o?U^{u+w+@n}Z8(Uzc`S&u3D7W!I8}em9TdV_hZ#cc)?l}r#!K(K{sLz42W}0r< zXEw#W>o#cqBjTY6Db30}JL9BmwW}N#Kvt^T=29@14pax@p~qwxXc@gYqJPS-l2$IZ z`dE%|<+NHH*Paa`FW1C7RXs02?da)@xS#2v#+!F_L{8*|Ri|r-q$#p5ebQ|?ZVUFB zpYy~U>Jz@uzzlP&Sxe0qc`Ilh>dc#LOMKSstP|_1n7lI@_^H;ZZC1>SBa57sV47** z_5;TxYG@sJ0>I1Q;5tk8q?k6R!dV$UhA{8ck+HZS%7QRoA>!zg$AvlhVn)v?lW3-v z>po?m6=$~8^1`^-=7=zV`y;Ts63druFj7qczfDfqlbeyaW3?3IEeo;~a~4fYlEoZd z>mgstzs zc!`*6(u8?^b@>ZhU^YH>7X?DfQFSeN#w3v8WL!aHCk|L^=&XrV17qc82)dOKbL<$N4>K63jD%Z(dz`N35hU=8 zJ()<>m&k4Y(2--LPUy;-AXMbroYGzPFjSNPR_~Cip$ae)&lyh|6>nU;qkP8F^S!8!4N z2N83OL2K%di9N8iyU><4%)2lUZH7~a< zkq99Kv%HiaqT(kCsE!73r#@xjS^OplFmQ$-`c{yGSN)<~4X&42(yOV5o}Bo zmw9)kxGGUSGTC`h-oSWSxq!ni`QLddt2QC`o1Lt9LUQ7F=z#g*6V25pTBmo)tyzUf z-b&%4bJBZMh*=I~_c7T!N*a#Iy<*t&x}p_=eEoB_cW0N{O_J4@?@q_argTIBH(_YS-`zZxq%=$!0ui zZzskrcdmjj%lA>CJzhC9DvrcAg!B2DRfE)+6`w|RN`iN)FCd`uPth2iyNb(42Qw2GtE1lMLJfPnHItw$B05!q`XxRf@-WRNlkYfBD<{~V4Tf5|>K{tvBuwt@-V@ci#G|dcS=7ID< zQ{28~t-j^Bsd`oS9!EF5xNl&$3Y%SJz!%cVH~5iohrb(gP=LrU8|d9P7w5ISwHC$7 zil2dz1A~Qwoxzczq5Y^+h2m=PPYye`F~gvwr{t8L1p}#w!@KPH;PH+ql_!@Zy_qN2 zx*+Z#+R;oZZ^+axZ(6^cBg0;8GBy9O({I%p>)Im4OQl$6r?_uXV4ZXur+nI8F{)k^ zwVnXM7XN8x!L{f}39C{Cv}AJ8F#8*cT6e$B2|9ZchrqK4+FLOaZwW>$aqtclIU7hl z)X85!aY;z%6x?Pv)HV`K$|t29vs7r__Qa8UB-95xteN5|W*N}A<*j152J64wdtwEBLzv@vbl;=zEf*_-Hp3f4Aa<)zp0#_N!G<0A=?rHD$%wa!*uv_r zcg~p$-Z8c#SZ%H8wr2&Nh_}PcL6@h8-kDC5f?XVdk7~< zX?L`^mqn;8V@9IcCnB6t8aVHxF!tS7vGD~C{XYFfqZK-cJgl#LYTj zHVoGI1LGQs-PvP4c*o)2%O}@i_9~-$#JylzgYjl`@R)uy>XfzPjvmB2QTFFIeOQX zBEUr8f*7$+f_@O6*N+`TKD6VGsfI;pF@HDG00a~fOy4Jg`Bk&IR5OwKt5heaUqAFz z|3=*)s)Tq{((~OD1gZdY*8FlrRl)bG6TBi_b}7F1Rn|wk_V6uok9L;0<*6De6%MjlI@2() zCchuP z`mB1(3_E?z}0CQ9MCsF1A4O|16eg`wU_6pxx|E5#WIELRgV1N;X*787#= zAkUyT4>JSsGXs$`1G22~wneQS!5B9eF?VWZhwGFht~2yoka$fpTzOsn&oc4T#%ko$o7PHL@Hl&qAEct(4p6^MN?jKsB)iO~;@CFmQPct0q}I7ojI z3_r7`ing+IjN-!zb4f7ozy61^lCZg}-w-+w(BrpW_qN z#!s?)*P@2liZ~hWKnSgpvRM+R8SwXW;_ImH3a4ku?DxPBJP-PN|GM3 zAvV9NX!L^@S+Zb~(_`3_xh||5qY%^5m?eHVm0j_u53yN?G3eJAqB~hDj<{!jX$T9Z z>e@%)wY_5R%nM=~y#-u!-_AN~_>Xok0wqfg*1)66+_})2o!?dr1|@j+Sf|s5sb#F5 zy$aTiPuNTJ2z)dByjkZ3LKM0H80hSs(d>*yw1_D%T^)lGe1}xn@#~I7{^KvY#inQ= zbv|0dQE~i82x^U@c8wbfOlk}``L92o;N|eUHq0$+WTm@xcyiOjI5rq%X9=k{FTAP% z!sh9+tC^pJ$o(E)PoNtncH9MhH4Dp3$!{A4USxyieT=k^%H$9)R%8>?__igEsNtCn zGOnt$jpVbsZHYyg_nuPF^RXLR1_AJC{=(f%uxWz|FwrypAnBLj4|(dV_stjz3OcI6_o3LJmYKpH;L+h2~1kw&d%J%^uONB zMs+AJE#t)RZ1Fj98*u zhRBd;i$(1PXJa7$azfh3@SNH{84Z+l;STnSiUA;2^1HPKA%-vLZb9n zqFFho8P|^ae6QlO}`FGOqgbiDA5RH{j)pE&f|LZPvQ zV&%NTcgE5!E_Rkdjs!5+*!^#kq*E(9??JBs zL|Z)EM&M(Xj3l-Y=S8if{*=_qHPBQbh4ZYNB_B{fi zE%0dOYN41gl8JOwf+o+iW~v+LjPqIGB1B2^?rpF@&X*RweLKuzmEjK*jJ=EX_VPi> zY>l!S3F9g^i-wg!gndX&QvuBg;S3!fX`E}W*ie{45=d;c2-MjRN{f1Z5vn42w`Dr{ zlqMiZ3`|Y~YKkG_AW)3bODNH$b`3&4{y~zpu~VtYjZ~Q7Sl-Ahk-vJ~gz+N?QPX}m8POd0UR}f)>BXcevEQ{7t66UQd zQru@EEm6vOfMttb9IbTUtIlWguhxpCj3Js0?Z|mM;)~N@GR2o!#8gfEvcSOXIz@@Q z1!~AE_0Ognk|SDg6^8K$|N=>{R*o+7a}!FAPsXU(3#bE)HzQ_)4U<|wtQVJ+_<(#$fMB3)_>=V`E7KW zg$Y-qom>xjA_pT)v`y5_@xX`UDl4y*QeP`321>VpfKut`HV$c^_>FJz`_wVc`EoAq zZBTKbFYVhC#Z?hb9z$~|?bF@p2U_}2kQY!rpX`E&+(-khKgE<*IADEAaD2K*Fgj01 za*5-FVKHnvcn>0!qk*}D{s;A9gI?6Vck=M+lR?t&XTh$lSLsW4hNC~}RlmlOY>ocO* z2)+FlTQv$RNRCk{??t#vXg$m@jiW%uinuGu@l2cs@}G{J_&A?EZ^(xhSLte#iudGF zd;Ev3HF+6~i5o{Z+~Nofi`K5SteJ>D#$UpMz;2M=ubDg6`aExxUz8udaccdVITtO} z=wl`+lV?r#HspwL!_$O72cJ_J8xjTGGsb@hL^)@VWy|)Z`){MC-kTfl;Uh5Ey~-Y zg7$iWB$TA%ESzgNr4_6TMH<6`Sc9r9ebT|U`r!3uIvOzx}h#+<@qqcBIpz^PYE55{c<{ixaZ$&8UmuJZ~IX1gZw;QrtW0NjTY& zBhe9pcfJ>t+7Y`AFpfxh#Ng{(zqY&f*dkaxhb2rruU((E%7sD5tS8OuOi9-N-XyZ% zBP9?FQehl~PaSWX55xfoItjq-;pUJ-NFHjT3&`iP&SVKb7U42 z;nL?xFOm5#?nel3ExFrLE`hY$sSt5xL;|SgdzC396^Tkj*03XkI0jpcF$}LlAY-+` zl&@>(n5;5|5{z0aW(p)|cM$5jmzb$_rOY{~EF9z*?TiYwO0K%i#^~rPcS~?x$0=FS zH+kA!<(jags^a-$7sk#g22DMgdr4<#9wUbR!@}oT7}hm;9BM1(jViVB{EAr=(ar@W zXIF_+ z!n0pV(*frCY;$>H3v~2P&{~HRzWwP?fvD8_{Rrg}lf_!?eN{)=_B^8aAvjs?n#SMM z1!m^0tgEFTZi$;^&Na8o?-)8bWzOuBnUvZsu0F8j8JC&1kj3VX0a}%#F0Dc8cI=B@ zHmM?gGEI?`UQ(XKo2*!(7%0IN4FZNW%OR`AM}4Opb85++YbtFk#Caai)O8xiG4pLG zIO2=oyyx*R?f6jM))Km`lt|&hbDx^y*bOGaAexU6E+RGVq8Y``TnDGMo^|YWOe=LG zyqxDDk$6oA7vLjA{-r-#k$kvuRguP}NK#pEVxp;(GM^?E#3PF?jDfkXpUfH0ntE=|&~_ocka4K5F=!puyiCZBmiQ!t^ZX`ckYXQ9Cv z1ET|LLxa0nXddk&9^|cX1XisYvYtuYNh);`J`6cJ0q&rm$TE>;3ya4fsHhx`_Z>|Xk-e*2ARID6vmpN0kOgY&uv z>;512@Ld7(ZjjM?>Jg5t-Vt>$u~V=?2om`R-Gu!sPzmM`!Oa*xbfH%MbfD9vteEesJ*evne^S ze&a_LI^=ND=&~G!-!<*apspO-Iv-TzIR2@2d~|O+!8-VqzH|5WvJJ2qSF3@xx$1Rp zH_jpE%`;Ng_ZAcC;`>JUV9{&@_UR>hNzfZ$Dag7)k&+^eh%=Sivi^!Sq$msbA zb0uFPM;W<)A92R8T}m9cWP%t?e48Rc{Kz>gcjEd!MQpF4eeOzj`v5Yd4vCD{Ydl@6#m>bBbU*ZZPMpYziB+}$T+y$q&NTA{sIQ*bU;gmUp54?QLzxow26Vl|hOh(VvO+eiu z9aqx3qfBWK!_Me#lNI=VQiY7v)Bm>1dQ=_~OB>;c=e1fEvIeo+?*$dgu#Yk$YXw?w zHCA>}Z&MkJcPTgWRV{mKZJD z0@W9>oz&=jg3(%JKnWv^6*ce`N)|h&swn)a1Fc=#Yn>Q2;dx4;H8bk%=^{f#?Bl(= z9+sEtb6Y*d3hq%a#V+FqoL+KUgq*hTF&T+E5OoI|WY6N+=)yx_MoO>}eB5`CZ$^Lg zcAX#f{1Y261*^ibQ-igX5eZ9>73vK*h=WsC&b8QntNntYlGG9-A(T&SsajVwpCY50 ztR#a98hQU@6n?#vyW*r}3k~&x0)dT5w+_d((AUf%v-bV@(eS7u+tdU$w}zY3)D*?0 zAod=V^#H@LmBW8%Y_)gnO7Z>dcJ@v_3|9k7XTSsq$$Vj;8jut|%bqc$+XvCfed03? ze8HIgIv#k^g+KHWXMaQSezuf&!^--gQS})vRxSKd9SYZ-ED}dHPONKD@Q3J`d#cw) zrdFp_gFH7uJch|Z_^AF}6Q4~o5IZ^00jpGWfX;Q?z#~s#$S725M8V_C%ROl$E1vQd z)$|IDj4CMNL+f~wjfkh2TMr2n7-Se#OCy_lTB1GPV*EjY?&t-l#2C zo|nT}TD!Kdqu^OvgI&;GQJ#PlKrSw6yaQIAEh?L;Y&M&y@{%;(KR3CUQpE{h|GZ3h zc6$Q4w>geoakm`-&!^qIcj$i{jr?<{5Xv#k$Z`%3Xp-pXdE( z$);l+6mO)>AYr+R${HLOtF{oz1d4{;jjX9lG7iz*vuaA(-VB$DtPoGv?%wm87?ZoC zPo2}m5EjW|q5#PhN`feK%FT#AF2ag|CS3PO0LH>uDL?9!r>&3*BU<=9BSn>eGHAm~ zfhcrHm~ak_g%viX+>NxiA?@!q^$W@_YOh<4-r1>*0u_rMM&ppX7df0eBLaG%nmLa9 zcn=tf^%)B?EMeoGVjvBjIqvgOI<{-cZ0Nkoq`7ReF&h+G1)c7ciwVoW z(0I}0L)vX@X-6%lrIUmWlAGA%mKAi$td24>CrG_R=ciTem;md51c%gFTfUoEXa47g8*JWv4C_4QG$ z3!!lIf)wTPyF>9Q_KBttC`+IUb*U~Gw9B*paF9uO)2EYe88Zv>D_comFsgS6hK|+d z?2I$zg71_#L4EyeQ7L@Ap+NJt1Mfj#lV)?-V6I=%wYz3?+4kK~`l5ae%)-Txey?A3 z?r13;{Mc|N2Jvw#Y$m3xK~b$tc`iCMb|i*R1;$;scRc7lIT~0vNTuqZ6%zCX`$8>2 za;SgP?JBqsda|ew5PzT98Kfk7?ZqHvXfp94Tadx@R<0BY+HrZWSP7TkZyd3GSk&{G zoa%AV>6?q=>5L!305~_BM%{F$pN|F2QlXY1oXR$BND)P|PkVzCeW~m_b8LWr9?Q4A z@7GpB4l=293#fmJ_EJDFt)j!m>juPE46`Jcg0k(SqCDeKkV7}YWWJzFN-b<~LZU8$ z{z}IWa#-p{$(Hl7HDuw10Og}=wLx>k{4mKX<&}n%7I6zFTaSD(5jbJ*U7j*%Oiue| z;?19V)&*%Nt9yXB^VVgLe0(%@_JaHttqDmF-34+H+zNfeAjnX{;ToeWX^(-TA`=Jw z6^jsE&v7dow5~N8H;_0-IYWruQkNr!`P0$^*FU2ki%~#bjdUtaIHl6loZ5nQ=shh} zeN^gMDdufZK9JDwUbaE`Al3>Nt&8nKA+vT7NCpc^@-KwuD^mYygN>-w$FctHAG|?pvN) zC9HZUC+C*Ov>QqHaR+*Wa&X_xZ|Usn)arKU+-)XO#4RqMsL^tr+igtcJKcs_c>!@q zQ@3vWEKHNvXa2>2@ceBp#iu3 z_m>(wTEnaQsnLVvheYw&_hh-0 ztEH!;s;i-AG1&BK@td>2@;a(w=ZEcvn?R-$q;~wVB^>S3M~S59I~9}1+SyR z5JE?OIdbtej65m{wtIQ>LD?CUB?aHTaI$V1FQvlkvvh~E&H~?LM!XtDDJHR2zb_7{ zy4@aKw#{DH{49?XD}jRBO){~5^`$<_xQv8cXR)cNcHO`Ea{nt4aMH-GHcs=X>OrpM zgpDAb>Q)%&rckh7gN&wDY|cf8vqwEsTh50n%Q>iRXFj^cTChMvODTTj<(5zswG?F& zouIikqJ)E|nmL&v&Phk2h9O^cx`(Ladn~h5Mp0RTQ+$>Ol`gm(gCLty30X&ak*~qS zs3@~MNMu@5Nf9wIVNVS(Eh9;cFVA>vpD5Zclo0d38_I*I0vR^SuhK_NZ{<3y2{Z!Y`Pj{V}cILoW0b3zR7J=(JGP6@zBOT3+q!t1h&9@2bM~-e^Cb%6T9x%O!2)+Dfwn%`(Muw;r$gTgpWQ(yz z=Je=hRA7?SGOg1BPXNY(h2#hdwFmMd53FqsRb)35hpWE+NapnQ_2~4HPyI6<`%~-u zi&)p__Azd+G?@2P9y9OQasG>2bpJ77w(Ol2yYB6)QuK&$##dcbE1 z7sjmtc_l<*)!$6Eez4<#?WYfbHZQQNf_1*h>UKLg340o@=;_^iyIqfk9jF#Gn~jjx z7eX;kz#xw99xNJ^4Lrp~fTo6B6^{X^odMc2DiMXq3!`g-UOD(zW=7`1{?mj`Pyi0+ z(g|M)l%s0X4&a0Aaq$rI0}Zzzi%LzI`m-Qh^4!5=OPa@8{aHSVX4gid#+A1xlae@J z#g25;J%vfrK2a-p(t*cyi~rN+pex<&X9tGs7)^^9ub=0uclJiu`yrB>gpJ|&vp6?d z_Tab!*j9q4os!Frb!)uKhaYu}r}?Dz9JOu&>T8@;Je}gbjFv$#;8v5nH69}o+|8d$ zzL4;MAmXBz=-vKzKLPg^LPj&5?mYi7CnqrF*JBT^7m?59JW^#PWXXY?Wp^Wz(Dl?a zykD+?u07`Vx&T@!yoSCviZ|^29nl>ar3?G)^{2eaLnkvJF4R@GmMBv9qQ8Eldh=Kt zv1aZvC}ZJxSW+9264ovGB4Fwuf2QhBCW7Y;q0nogTxc~h(pthp_xp{{>W^wgMKB?f z*S61COi-mi-`zMX5{24nd^Zjr;+{Um~3D2)P#o}VP`~my?5(c~bTLYU&A&+$%uLNEdQu1|9QEeodERetF zT@cdoCu9-jPtSt{WSM+MhnU3m@4r%`C*7#+=& zv@}M}Lq)~PCSZ%Q2(n43$u%+ni{*JDLe{2hQd+9V4;UU)ec>bWKBle1CP`ItNoNqh z_X3UC^KHR_G_y-#reY6Vs01HqTX!trOfoI!%So+&dbmTbNUl?va~Qnzyo^ zaro7v>xM$8YnL*ri@2DcSvCLJjLi~(;Z8T%1q)rnAk_NvsOdR9Jr zDOt2Pc4}}!dC!6Hc};{t8FTDbP=fi<6jauj;c%?|J?C25l`?D8FY8A#BS?h1J5Nk? zW#ZI6XA@9CxRD^@(}=iH$ATu5;MalB5fGMB(^l_7w*ICi<<68QZ+za0+jl_YT2X0~ zQK(ozl}`6fH*U-`PkgZpYJzL53(5#@+*BjBUKq>09OOt{UEYm#*)=zdgEkF@lbKtJ zJDQ%Q9nJKQNencJLWT}!smobqNSLo4zXE0~?o2l&J_rj!@#5{N2HTD2DT(V;BZtcs z!4(ZIurG{&2R#3c1(>eq_S00K<|WeY&3A~2c~|~W!yT5q1E~(s?bp0>e!HfiNVc5| z-%iwU*8slz>lM09`T-E*JbaIf!5edVjrEesifun2i;K%1!+lNVCg_eKJ4{X!%33rT zanvaM(104d*Z2*{*QTa3J3kbmq3&KpyyLp`a2Icv)|tIZ*tTpxP_}OV5Ll zKUseCnl2b*P69@=E}u6ju8~T*)rNh=`scR+^3MR9BbXmQ-thj@u&MdqK5QD>I~&^= z{yXWXQq|oHc@gKkD|zz*A}BDBI^PbjQ$2i6 zBd(g|HC8T~#@{}_*FvE{#M5kXZB1caqq1^oY009o>1n2E@0zWC^`a0k@KOJM)VcjJ zb$$Kr>G)0MiVbR4bOU9z^zc@Y3s<7joyK_H3(-enN2_wF zEG3(g6dR`ACcn+yRW(tuz9^|+L0II04>Hz7#g*{Z5_eL*J=3Wjsg9cfUg0tRi^neh zj`|&HHHQBlBw){1RZl{I8@N!V+e9UcpoWzb$RsJY?@&XqUIo0OJPkf_F;f5p{y|`m z*f)+6kQG1yXn{wxt9=L7B<)kuZ>7N26;;E3J0g@g;VDz!7VRD{%YRKFSX3N-UV

2Rkq#I0w6Gl7(lO5uC$cdLMO(++YK9VF{wX6y9f=iWC$|-izgv>K+N6*WV&}%bs zxtv`lr7<%F=0dNcQ7harj_me%tLw z9NT=6ug8rpXCRBH2kB5MmLbW?6AUb?Qx;~4cc$)l;4|5^@*Qn8#mx}fG_q({=IX5! zsOUTUp^}&CMr2YFR#+wPnW(g3U>+o3iSTGS+ee!iRo{SRLFZ2tEbH$Ewl%uyp4@Y>jPm#= zXd1b$R-OSlOob%{NXljto5~OyUML!GQ||`_50ATaJZu72Gu$UM^<>q`ns0#!N;`UE z2U@Y~dy7w>@*q_FpD71%!8TD?iUU#x5!gA+`FCRL9wYNPG)nGgJuvr~>J;m<9Fzfk z&l)5peN{i!3-WOH8nA1V*5{e_BXlyZKJu_IM&HDb#_YBd6}{7OHhGvF_Y!qcmxx1+bJH-V=KNOAUBDlRB5(zsB@3 zLgGzNHp~q`lY~u3CDe!#u^K+mc+c~~Um(W4bMu)9Q-LBwv$DJMT7lEx6C-4^ixf0l z`3e+OkA{5H_p8<(fvI!UusMX5GO8B~6>=8_G&kZ!;G zV&wZIXoZtL#-S+MCOfVAR{jRkF-ID=FbbcCZT%8H?2LhAs}vox{B#EoSX4=}#Jbei z#zNfG)T0Xh(fqAvd1_l+Wi03M&d+>;=kM)1c^S3%mrr{Zqk%>EkcWR|Xn@7aU0Emx zbEh``HNn`}%TKHvQ#5UKQXz10*>G{c?@yM-=KKm1WJS2ycw~|XtOB-Eka_rD0pUx9 z9YmiGfBg=zVXCmi@lF%ZEwB439&=Y4iBj17&OUdPHvv+des5JXsrhPNrjyp>n)H5! z{kcUEN`*u$G~P{n^h@9odYg70M4T5PHY?GTVhtIxZcLIL-cnxUHwaG7#xkO}PprqE z;b~e3%d?`c;)doe%okm_jR>kO4Y{N7v5{_~GoBCle$EKf`c}y+bRn6}%V1S1e_7bZe?nn!v!!|=7BokN7@f~yd z(G@594e#aov*2#FCL6|MHQZYZ=8jX(6GyK)IO=*om}q62CG2PJbmWd6sn2$w^aJ`E z<0rfE+ZnixehECt`hdx7Xb3y)PsR{%3G{?KWTw)xdin@W0W?nPUN(Cyfg4ih9hbVx zp-Cqc+(PA2wE%}YJ20<2Ohl_i3~9-5;MHP%z{G_GvrU#T|}EVn>So@ z7bv=>-S?&>?*&@Ep3R3Voe9ZqPiW=Eixb@?M;11rEcQE`(Z#kThhxQ8g2RM0Ai@mD0Z~0Y zg5r)iVVrRykzirWT#c|_jiA`jpL$q@18LI%mD!z_iYBZZU=t;o`?rP-3EU^3*X-% zK7)GQxb-5T{y-(*#WLtlG=U@qIrV|MZ-Wl5N1IE_lM1&JqA)ku{ZUhgXQ-Ua?UB9u ztEZgI{gF(EXRy5c=FD8@Gf{Q=?##Bs1Hg`Tbq*rz^D76~AsvuOj5%tO#73lE8R02oR7;(J7cX4h& zBUMo8DklvlPw`4Hc|*v1fcct$i*7IbRNoFRH>$FkKCwAa#pJign_qiP-RR(l;&8*m zT+HM;EKTz2`oi4zHe-Ux`#$zbu2ey|_&N01FZwfeAJU^F<|=a%kjE6_QDxRXNk(_O zEu)URc1MW&m}CT2Ix;IAUyM76iC9mHt8((Ka*8EOa#}huF`nIeFm&&(nVsV5UDbaD zW6oWaw{$}O_`!|-pSo!6|L!jOpI9$h0}EqAr+=SqRJ0YbjFAB{zab!?0+35I_!I_E z5$7rsRUjKA2*Ft)8U^S-YqaB%Yv5h>uSD0OzW?y`r*FB9=lJyXVkwx^L2j%?HH~EIBzOZCACsz(8xC~UT%_=brzzC$g@<&y(z8J zlsDyGf;X$u!>reqfetq;EC~2i%ue4|B}Q7y+X3SXx@o=(D2}JeD{N1=ARNhFGX7z* z>VW7qJ`IUE`;q#?1Kf0-p3sR)vyI0kuqNi}Prf=UdofmreY4R8cY zcZ@2;Dl}52LjzqNdxejyYlck)4FYt5J9i#7p|8$ z6NQuKI|$aN*^@lA2$ilGQ)xup9SSX&5L?|)ZJ}|_-~}#-)Y9}dB8frqW5hzS6?Cl! z(?t@5rXjM@q-rhQun3wyuEFfX?jm?#H}O{KZOf3_(_|eZb%-+Iz?fVkn81$Duc7X8 zc2CmY?DrPG1KM3?o#idv{2rV;OEUf{u}&DY`pkUP24`{;#)ma(%0D}{!jx%7==Q?V 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
xa{Bc*B-TB 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

9khd); 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 VI%?a8sA-lxt3+6CqUBEwETmCdqR^K%F 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 + name: kafka_server_$1_$2 + type: GAUGE + labels: + clientId: "$3" + topic: "$4" + partition: "$5" + - pattern: kafka.server<>Value + name: kafka_server_$1_$2 + type: GAUGE + labels: + clientId: "$3" + broker: "$4:$5" + - pattern: kafka.coordinator.(\w+)<>Value + name: kafka_coordinator_$1_$2_$3 + type: GAUGE + + # Generic per-second counters with 0-2 key/value pairs + - pattern: kafka.(\w+)<>Count + name: kafka_$1_$2_$3_total + type: COUNTER + labels: + "$4": "$5" + "$6": "$7" + - pattern: kafka.(\w+)<>Count + name: kafka_$1_$2_$3_total + type: COUNTER + labels: + "$4": "$5" + - pattern: kafka.(\w+)<>Count + name: kafka_$1_$2_$3_total + type: COUNTER + + - pattern: kafka.server<>([a-z-]+) + name: kafka_server_quota_$3 + type: GAUGE + labels: + resource: "$1" + clientId: "$2" + + - pattern: kafka.server<>([a-z-]+) + name: kafka_server_quota_$4 + type: GAUGE + labels: + resource: "$1" + user: "$2" + clientId: "$3" + + # Generic gauges with 0-2 key/value pairs + - pattern: kafka.(\w+)<>Value + name: kafka_$1_$2_$3 + type: GAUGE + labels: + "$4": "$5" + "$6": "$7" + - pattern: kafka.(\w+)<>Value + name: kafka_$1_$2_$3 + type: GAUGE + labels: + "$4": "$5" + - pattern: kafka.(\w+)<>Value + name: kafka_$1_$2_$3 + type: GAUGE + + # Emulate Prometheus 'Summary' metrics for the exported 'Histogram's. + # + # Note that these are missing the '_sum' metric! + - pattern: kafka.(\w+)<>Count + name: kafka_$1_$2_$3_count + type: COUNTER + labels: + "$4": "$5" + "$6": "$7" + - pattern: kafka.(\w+)<>(\d+)thPercentile + name: kafka_$1_$2_$3 + type: GAUGE + labels: + "$4": "$5" + "$6": "$7" + quantile: "0.$8" + - pattern: kafka.(\w+)<>Count + name: kafka_$1_$2_$3_count + type: COUNTER + labels: + "$4": "$5" + - pattern: kafka.(\w+)<>(\d+)thPercentile + name: kafka_$1_$2_$3 + type: GAUGE + labels: + "$4": "$5" + quantile: "0.$6" + - pattern: kafka.(\w+)<>Count + name: kafka_$1_$2_$3_count + type: COUNTER + - pattern: kafka.(\w+)<>(\d+)thPercentile + name: kafka_$1_$2_$3 + type: GAUGE + labels: + quantile: "0.$4" diff --git a/driver-redpanda/deploy/monitoring/jmx_exporter/zookeeper.yml b/driver-redpanda/deploy/monitoring/jmx_exporter/zookeeper.yml new file mode 100644 index 00000000..22b82b72 --- /dev/null +++ b/driver-redpanda/deploy/monitoring/jmx_exporter/zookeeper.yml @@ -0,0 +1,123 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +lowercaseOutputLabelNames: false +lowercaseOutputName: true +## Export everything +# rules: +# # Special cases and very specific rules +# - pattern: kafka.server<>Value +# name: kafka_server_$1_$2 +# type: GAUGE +# labels: +# clientId: "$3" +# topic: "$4" +# partition: "$5" +# - pattern: kafka.server<>Value +# name: kafka_server_$1_$2 +# type: GAUGE +# labels: +# clientId: "$3" +# broker: "$4:$5" +# - pattern: kafka.coordinator.(\w+)<>Value +# name: kafka_coordinator_$1_$2_$3 +# type: GAUGE + +# # Generic per-second counters with 0-2 key/value pairs +# - pattern: kafka.(\w+)<>Count +# name: kafka_$1_$2_$3_total +# type: COUNTER +# labels: +# "$4": "$5" +# "$6": "$7" +# - pattern: kafka.(\w+)<>Count +# name: kafka_$1_$2_$3_total +# type: COUNTER +# labels: +# "$4": "$5" +# - pattern: kafka.(\w+)<>Count +# name: kafka_$1_$2_$3_total +# type: COUNTER + +# - pattern: kafka.server<>([a-z-]+) +# name: kafka_server_quota_$3 +# type: GAUGE +# labels: +# resource: "$1" +# clientId: "$2" + +# - pattern: kafka.server<>([a-z-]+) +# name: kafka_server_quota_$4 +# type: GAUGE +# labels: +# resource: "$1" +# user: "$2" +# clientId: "$3" + +# # Generic gauges with 0-2 key/value pairs +# - pattern: kafka.(\w+)<>Value +# name: kafka_$1_$2_$3 +# type: GAUGE +# labels: +# "$4": "$5" +# "$6": "$7" +# - pattern: kafka.(\w+)<>Value +# name: kafka_$1_$2_$3 +# type: GAUGE +# labels: +# "$4": "$5" +# - pattern: kafka.(\w+)<>Value +# name: kafka_$1_$2_$3 +# type: GAUGE + +# # Emulate Prometheus 'Summary' metrics for the exported 'Histogram's. +# # +# # Note that these are missing the '_sum' metric! +# - pattern: kafka.(\w+)<>Count +# name: kafka_$1_$2_$3_count +# type: COUNTER +# labels: +# "$4": "$5" +# "$6": "$7" +# - pattern: kafka.(\w+)<>(\d+)thPercentile +# name: kafka_$1_$2_$3 +# type: GAUGE +# labels: +# "$4": "$5" +# "$6": "$7" +# quantile: "0.$8" +# - pattern: kafka.(\w+)<>Count +# name: kafka_$1_$2_$3_count +# type: COUNTER +# labels: +# "$4": "$5" +# - pattern: kafka.(\w+)<>(\d+)thPercentile +# name: kafka_$1_$2_$3 +# type: GAUGE +# labels: +# "$4": "$5" +# quantile: "0.$6" +# - pattern: kafka.(\w+)<>Count +# name: kafka_$1_$2_$3_count +# type: COUNTER +# - pattern: kafka.(\w+)<>(\d+)thPercentile +# name: kafka_$1_$2_$3 +# type: GAUGE +# labels: +# quantile: "0.$4" diff --git a/driver-redpanda/deploy/monitoring/start.sh b/driver-redpanda/deploy/monitoring/start.sh new file mode 100755 index 00000000..8cc5a499 --- /dev/null +++ b/driver-redpanda/deploy/monitoring/start.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + + +echo 'Starting Grafana...' + +/run.sh "$@" & + +AddDataSource() { + curl 'http://admin:admin@localhost:3000/api/datasources' \ + -X POST \ + -H 'Content-Type: application/json;charset=UTF-8' \ + --data-binary \ + "{\"name\":\"Prometheus\",\"type\":\"prometheus\",\"url\":\"$PROMETHEUS_URL\",\"access\":\"proxy\",\"isDefault\":true}" +} + +until AddDataSource; do + echo 'Configuring Grafana...' + sleep 1 +done + echo 'Done!' +wait \ No newline at end of file diff --git a/driver-redpanda/deploy/provision-redpanda-aws.tf b/driver-redpanda/deploy/provision-redpanda-aws.tf new file mode 100644 index 00000000..45e9b80d --- /dev/null +++ b/driver-redpanda/deploy/provision-redpanda-aws.tf @@ -0,0 +1,195 @@ +provider "aws" { + region = "${var.region}" + version = "~> 2.7" + profile = var.profile +} + +provider "random" { + version = "~> 2.1" +} + +variable "public_key_path" { + description = < instance.private_ip + } +} + +output "redpanda" { + value = { + for instance in aws_instance.redpanda : + instance.public_ip => instance.private_ip + } +} + +output "prometheus_host" { + value = "${aws_instance.prometheus.0.public_ip}" +} diff --git a/driver-redpanda/deploy/requirements.yaml b/driver-redpanda/deploy/requirements.yaml new file mode 100644 index 00000000..ab16d5e2 --- /dev/null +++ b/driver-redpanda/deploy/requirements.yaml @@ -0,0 +1,6 @@ +- src: mrlesmithjr.mdadm +- src: cloudalchemy.prometheus +- src: cloudalchemy.grafana +- src: cloudalchemy.node-exporter +- src: computology.packagecloud +- src: geerlingguy.repo-epel \ No newline at end of file diff --git a/driver-redpanda/deploy/templates/benchmark-worker.service b/driver-redpanda/deploy/templates/benchmark-worker.service new file mode 100644 index 00000000..0a75fa8b --- /dev/null +++ b/driver-redpanda/deploy/templates/benchmark-worker.service @@ -0,0 +1,14 @@ +[Unit] +Description=Benchmark worker +After=network.target + +[Service] +ExecStart=/opt/benchmark/bin/benchmark-worker +WorkingDirectory=/opt/benchmark +RestartSec=1s +Restart=on-failure +Type=simple +LimitNOFILE=300000 + +[Install] +WantedBy=multi-user.target diff --git a/driver-redpanda/deploy/templates/chrony.conf b/driver-redpanda/deploy/templates/chrony.conf new file mode 100644 index 00000000..0e68c66a --- /dev/null +++ b/driver-redpanda/deploy/templates/chrony.conf @@ -0,0 +1,54 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# Use public servers from the pool.ntp.org project. +# Please consider joining the pool (http://www.pool.ntp.org/join.html). +server 169.254.169.123 prefer iburst + +# Record the rate at which the system clock gains/losses time. +driftfile /var/lib/chrony/drift + +# Allow the system clock to be stepped in the first three updates +# if its offset is larger than 1 second. +makestep 1.0 3 + +# Enable kernel synchronization of the real-time clock (RTC). +rtcsync + +# Enable hardware timestamping on all interfaces that support it. +#hwtimestamp * + +# Increase the minimum number of selectable sources required to adjust +# the system clock. +#minsources 2 + +# Allow NTP client access from local network. +#allow 192.168.0.0/16 + +# Serve time even if not synchronized to a time source. +#local stratum 10 + +# Specify file containing keys for NTP authentication. +#keyfile /etc/chrony.keys + +# Specify directory for log files. +logdir /var/log/chrony + +# Select which information is logged. +#log measurements statistics tracking diff --git a/driver-redpanda/deploy/templates/kafka-dashboard.service b/driver-redpanda/deploy/templates/kafka-dashboard.service new file mode 100644 index 00000000..8b00e459 --- /dev/null +++ b/driver-redpanda/deploy/templates/kafka-dashboard.service @@ -0,0 +1,16 @@ +[Unit] +Description=Kafka Dashboard +After=docker.service +Requires=docker.service +After=prometheus.service +Requires=prometheus.service + +[Service] +ExecStartPre=/usr/bin/docker pull aloknnikhil/omb-kafka-dashboard:latest +ExecStart=/usr/bin/docker run --restart=always --name=systemd_kafka_dashboard -p3000:3000 -e PROMETHEUS_URL=http://{{ hostvars[groups['prometheus'][0]].private_ip }}:9090/ aloknnikhil/omb-kafka-dashboard:latest +ExecStop=/usr/bin/docker stop systemd_kafka_dashboard +ExecStopPost=/usr/bin/docker rm -f systemd_kafka_dashboard +ExecReload=/usr/bin/docker restart systemd_kafka_dashboard + +[Install] +WantedBy=multi-user.target diff --git a/driver-redpanda/deploy/templates/kafka.service b/driver-redpanda/deploy/templates/kafka.service new file mode 100644 index 00000000..3ed876d3 --- /dev/null +++ b/driver-redpanda/deploy/templates/kafka.service @@ -0,0 +1,19 @@ +[Unit] +Description=Kafka +After=network.target + +[Service] +ExecStart=/opt/kafka/bin/kafka-server-start.sh config/server.properties +Environment=JMX_PORT=9999 +Environment="KAFKA_OPTS=-javaagent:/opt/kafka/jmx_prometheus_javaagent-0.13.0.jar=8080:/opt/kafka/metrics.yml" +Environment="KAFKA_JMX_OPTS=-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=prod-kafka-001 -Djava.net.preferIPv4Stack=true" +Environment='KAFKA_HEAP_OPTS=-Xms6g -Xmx6g -XX:MetaspaceSize=96m' +Environment='KAFKA_JVM_PERFORMANCE_OPTS=-server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSize=16M -XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80 -Djava.awt.headless=true" +WorkingDirectory=/opt/kafka +RestartSec=1s +Restart=on-failure +Type=simple +LimitNOFILE=300000 + +[Install] +WantedBy=multi-user.target diff --git a/driver-redpanda/deploy/templates/myid b/driver-redpanda/deploy/templates/myid new file mode 100644 index 00000000..6b8ddbb2 --- /dev/null +++ b/driver-redpanda/deploy/templates/myid @@ -0,0 +1 @@ +{{ zid }} diff --git a/driver-redpanda/deploy/templates/prometheus.service b/driver-redpanda/deploy/templates/prometheus.service new file mode 100644 index 00000000..8f1effac --- /dev/null +++ b/driver-redpanda/deploy/templates/prometheus.service @@ -0,0 +1,13 @@ +[Unit] +Description=Prometheus server +After=network.target + +[Service] +WorkingDirectory=/opt/prometheus +ExecStart=/opt/prometheus/prometheus \ + --web.enable-admin-api \ + --storage.tsdb.path=/opt/prometheus/data \ + --config.file=/opt/prometheus/prometheus.yml + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/driver-redpanda/deploy/templates/prometheus.yml b/driver-redpanda/deploy/templates/prometheus.yml new file mode 100644 index 00000000..13462e8c --- /dev/null +++ b/driver-redpanda/deploy/templates/prometheus.yml @@ -0,0 +1,83 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# my global config +global: + scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. + evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. + # scrape_timeout is set to the global default (10s). + +# Alertmanager configuration +alerting: + alertmanagers: + - static_configs: + - targets: + # - alertmanager:9093 + +# Load rules once and periodically evaluate them according to the global 'evaluation_interval'. +rule_files: + # - "first_rules.yml" + # - "second_rules.yml" + +# A scrape configuration containing exactly one endpoint to scrape: +# Here it's Prometheus itself. +scrape_configs: + # The job name is added as a label `job=` to any timeseries scraped from this config. + - job_name: 'kafka' + + # metrics_path defaults to '/metrics' + # scheme defaults to 'http'. + + static_configs: + - targets: +{% for worker in groups['kafka'] %} + - {{ hostvars[worker].private_ip }}:8080 +{% endfor %} + labels: + group: 'broker' + - targets: +{% for worker in groups['client'] %} + - {{ hostvars[worker].private_ip }}:8081 +{% endfor %} + labels: + group: 'client' + - targets: +{% for worker in groups['kafka'] %} + - {{ hostvars[worker].private_ip }}:9100 +{% endfor %} + labels: + group: 'broker-os' + - targets: +{% for worker in groups['zookeeper'] %} + - {{ hostvars[worker].private_ip }}:7070 +{% endfor %} + labels: + group: 'zookeeper-jmx' + - targets: +{% for worker in groups['zookeeper'] %} + - {{ hostvars[worker].private_ip }}:8000 +{% endfor %} + labels: + group: 'zookeeper' + - targets: +{% for worker in groups['client'] %} + - {{ hostvars[worker].private_ip }}:9090 +{% endfor %} + labels: + group: 'client - jmx' diff --git a/driver-redpanda/deploy/templates/server.properties b/driver-redpanda/deploy/templates/server.properties new file mode 100644 index 00000000..7df1891a --- /dev/null +++ b/driver-redpanda/deploy/templates/server.properties @@ -0,0 +1,35 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + + +broker.id={{ brokerId }} + +advertised.listeners=PLAINTEXT://{{ privateIp }}:9092 + +log.dirs=/mnt/data-1,/mnt/data-2 + +zookeeper.connect={{ zookeeperServers }} + +num.replica.fetchers=8 + +message.max.bytes=10485760 + +replica.fetch.max.bytes=10485760 + +num.network.threads=8 diff --git a/driver-redpanda/deploy/templates/workers.yaml b/driver-redpanda/deploy/templates/workers.yaml new file mode 100644 index 00000000..c9ef4e45 --- /dev/null +++ b/driver-redpanda/deploy/templates/workers.yaml @@ -0,0 +1,24 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + + +workers: +{% for worker in groups['client'] %} + - http://{{ hostvars[worker].private_ip }}:8080 +{% endfor %} diff --git a/driver-redpanda/deploy/terraform.tfvars b/driver-redpanda/deploy/terraform.tfvars new file mode 100644 index 00000000..3807da35 --- /dev/null +++ b/driver-redpanda/deploy/terraform.tfvars @@ -0,0 +1,16 @@ +public_key_path = "~/.ssh/redpanda_aws.pub" +region = "us-west-2" +ami = "ami-020405ee5d5747724" +profile = "default" + +instance_types = { + "redpanda" = "i3en.2xlarge" + "client" = "c5n.2xlarge" + "prometheus" = "c5.2xlarge" +} + +num_instances = { + "client" = 4 + "redpanda" = 3 + "prometheus" = 1 +} diff --git a/driver-redpanda/kafka-0.yaml b/driver-redpanda/kafka-0.yaml new file mode 100644 index 00000000..7b9082f2 --- /dev/null +++ b/driver-redpanda/kafka-0.yaml @@ -0,0 +1,40 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: Kafka +driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver + +# Kafka client-specific configuration +replicationFactor: 3 +reset: true + +topicConfig: | + min.insync.replicas=2 + +commonConfig: | + bootstrap.servers=localhost:9092 + +producerConfig: | + acks=0 + linger.ms=1 + batch.size=131072 + +consumerConfig: | + auto.offset.reset=earliest + enable.auto.commit=false diff --git a/driver-redpanda/kafka-1.yaml b/driver-redpanda/kafka-1.yaml new file mode 100644 index 00000000..5abf8242 --- /dev/null +++ b/driver-redpanda/kafka-1.yaml @@ -0,0 +1,40 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: Kafka +driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver + +# Kafka client-specific configuration +replicationFactor: 3 +reset: true + +topicConfig: | + min.insync.replicas=2 + +commonConfig: | + bootstrap.servers=localhost:9092 + +producerConfig: | + acks=1 + linger.ms=1 + batch.size=131072 + +consumerConfig: | + auto.offset.reset=earliest + enable.auto.commit=false diff --git a/driver-redpanda/kafka-all.yaml b/driver-redpanda/kafka-all.yaml new file mode 100644 index 00000000..c78f99c0 --- /dev/null +++ b/driver-redpanda/kafka-all.yaml @@ -0,0 +1,41 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: Kafka +driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver + +# Kafka client-specific configuration +replicationFactor: 3 +reset: true + +topicConfig: | + min.insync.replicas=2 + +commonConfig: | + bootstrap.servers=localhost:9092 + +producerConfig: | + acks=all + linger.ms=100 + batch.size=1048576 + +consumerConfig: | + auto.offset.reset=earliest + enable.auto.commit=false + max.partition.fetch.bytes=10485760 diff --git a/driver-redpanda/kafka-exactly-once.yaml b/driver-redpanda/kafka-exactly-once.yaml new file mode 100644 index 00000000..a7407661 --- /dev/null +++ b/driver-redpanda/kafka-exactly-once.yaml @@ -0,0 +1,43 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: Kafka-exactly-once +driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver + +# Kafka client-specific configuration +replicationFactor: 3 +reset: true + +topicConfig: | + min.insync.replicas=2 + +commonConfig: | + bootstrap.servers=localhost:9092 + +producerConfig: | + enable.idempotence=true + max.in.flight.requests.per.connection=1 + retries=2147483647 + acks=all + linger.ms=1 + batch.size=131072 + +consumerConfig: | + auto.offset.reset=earliest + enable.auto.commit=false diff --git a/driver-redpanda/kafka-group-all.yaml b/driver-redpanda/kafka-group-all.yaml new file mode 100644 index 00000000..b8944d36 --- /dev/null +++ b/driver-redpanda/kafka-group-all.yaml @@ -0,0 +1,42 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: Kafka +driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver + +# Kafka client-specific configuration +replicationFactor: 3 +reset: true + +topicConfig: | + min.insync.replicas=2 + +commonConfig: | + bootstrap.servers=localhost:9092 + request.timeout.ms=120000 +producerConfig: | + acks=all + linger.ms=10 + batch.size=1048576 + +consumerConfig: | + group.id=benchGroup + auto.offset.reset=earliest + enable.auto.commit=false + max.partition.fetch.bytes=1048576 diff --git a/driver-redpanda/kafka-sync-0.yaml b/driver-redpanda/kafka-sync-0.yaml new file mode 100644 index 00000000..a4e03180 --- /dev/null +++ b/driver-redpanda/kafka-sync-0.yaml @@ -0,0 +1,44 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# Kafka driver profile that is configuring to sync all +# published messages to disk to achieve durability +name: Kafka +driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver + +# Kafka client-specific configuration +replicationFactor: 3 +reset: true + +topicConfig: | + min.insync.replicas=2 + flush.messages=1 + flush.ms=0 + +commonConfig: | + bootstrap.servers=localhost:9092 + +producerConfig: | + acks=0 + linger.ms=1 + batch.size=131072 + +consumerConfig: | + auto.offset.reset=earliest + enable.auto.commit=false diff --git a/driver-redpanda/kafka-sync-1.yaml b/driver-redpanda/kafka-sync-1.yaml new file mode 100644 index 00000000..3bf6d7d1 --- /dev/null +++ b/driver-redpanda/kafka-sync-1.yaml @@ -0,0 +1,44 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# Kafka driver profile that is configuring to sync all +# published messages to disk to achieve durability +name: Kafka +driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver + +# Kafka client-specific configuration +replicationFactor: 3 +reset: true + +topicConfig: | + min.insync.replicas=2 + flush.messages=1 + flush.ms=0 + +commonConfig: | + bootstrap.servers=localhost:9092 + +producerConfig: | + acks=1 + linger.ms=1 + batch.size=131072 + +consumerConfig: | + auto.offset.reset=earliest + enable.auto.commit=false diff --git a/driver-redpanda/kafka-sync-all.yaml b/driver-redpanda/kafka-sync-all.yaml new file mode 100644 index 00000000..a4fb4955 --- /dev/null +++ b/driver-redpanda/kafka-sync-all.yaml @@ -0,0 +1,44 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# Kafka driver profile that is configuring to sync all +# published messages to disk to achieve durability +name: Kafka +driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver + +# Kafka client-specific configuration +replicationFactor: 3 +reset: true + +topicConfig: | + min.insync.replicas=2 + flush.messages=1 + flush.ms=0 + +commonConfig: | + bootstrap.servers=localhost:9092 + +producerConfig: | + acks=all + linger.ms=1 + batch.size=131072 + +consumerConfig: | + auto.offset.reset=earliest + enable.auto.commit=false diff --git a/driver-redpanda/kafka-sync-group-all-1ms.yaml b/driver-redpanda/kafka-sync-group-all-1ms.yaml new file mode 100644 index 00000000..fcda5030 --- /dev/null +++ b/driver-redpanda/kafka-sync-group-all-1ms.yaml @@ -0,0 +1,41 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: Kafka +driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver +# Kafka client-specific configuration +replicationFactor: 3 +reset: true + +topicConfig: | + min.insync.replicas=2 + flush.messages=1 + flush.ms=0 +commonConfig: | + bootstrap.servers=localhost:9092 + request.timeout.ms=120000 +producerConfig: | + acks=all + linger.ms=1 + batch.size=131072 +consumerConfig: | + group.id=benchGroup + auto.offset.reset=earliest + enable.auto.commit=false + max.partition.fetch.bytes=131072 diff --git a/driver-redpanda/kafka-sync-group-all.yaml b/driver-redpanda/kafka-sync-group-all.yaml new file mode 100644 index 00000000..dbd91136 --- /dev/null +++ b/driver-redpanda/kafka-sync-group-all.yaml @@ -0,0 +1,42 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: Kafka +driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver +# Kafka client-specific configuration +replicationFactor: 3 +reset: true + +# Configuration (flush.messages; flush.ms) enabled only for tests that fsync every message +topicConfig: | + min.insync.replicas=2 + flush.messages=1 + flush.ms=0 +commonConfig: | + bootstrap.servers=localhost:9092 + request.timeout.ms=120000 +producerConfig: | + acks=all + linger.ms=10 + batch.size=1048576 +consumerConfig: | + group.id=benchGroup + auto.offset.reset=earliest + enable.auto.commit=false + max.partition.fetch.bytes=1048576 diff --git a/driver-redpanda/pom.xml b/driver-redpanda/pom.xml new file mode 100644 index 00000000..8a68f008 --- /dev/null +++ b/driver-redpanda/pom.xml @@ -0,0 +1,70 @@ + + + 4.0.0 + + io.openmessaging.benchmark + messaging-benchmark + 0.0.1-SNAPSHOT + .. + + driver-redpanda + + + + + + + Kafka Public Repo + https://repository.apache.org/content/groups/public/ + + + + + + ${project.groupId} + driver-api + ${project.version} + + + + org.apache.kafka + kafka-clients + 2.6.0 + + + + + + + \ No newline at end of file diff --git a/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/Config.java b/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/Config.java new file mode 100644 index 00000000..da59b963 --- /dev/null +++ b/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/Config.java @@ -0,0 +1,33 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package io.openmessaging.benchmark.driver.kafka; + +public class Config { + public short replicationFactor; + + public boolean reset; + + public String topicConfig; + + public String commonConfig; + + public String producerConfig; + + public String consumerConfig; +} diff --git a/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkConsumer.java b/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkConsumer.java new file mode 100644 index 00000000..c5a4f13f --- /dev/null +++ b/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkConsumer.java @@ -0,0 +1,84 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package io.openmessaging.benchmark.driver.kafka; + +import java.time.Duration; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; + +import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.apache.kafka.clients.consumer.KafkaConsumer; +import org.apache.kafka.clients.consumer.OffsetAndMetadata; +import org.apache.kafka.common.TopicPartition; + +import io.openmessaging.benchmark.driver.BenchmarkConsumer; +import io.openmessaging.benchmark.driver.ConsumerCallback; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class KafkaBenchmarkConsumer implements BenchmarkConsumer { + + private static final Logger log = LoggerFactory.getLogger(KafkaBenchmarkConsumer.class); + + private final KafkaConsumer consumer; + + private final ExecutorService executor; + private final Future consumerTask; + private volatile boolean closing = false; + + public KafkaBenchmarkConsumer(KafkaConsumer consumer, ConsumerCallback callback) { + this.consumer = consumer; + this.executor = Executors.newSingleThreadExecutor(); + + this.consumerTask = this.executor.submit(() -> { + while (!closing) { + try { + ConsumerRecords records = consumer.poll(Duration.ofMillis(100)); + Map offsetMap = new HashMap<>(); + for (ConsumerRecord record : records) { + callback.messageReceived(record.value(), TimeUnit.MILLISECONDS.toNanos(record.timestamp())); + offsetMap.put(new TopicPartition(record.topic(), record.partition()), + new OffsetAndMetadata(record.offset())); + } + + if (!records.isEmpty()) { + // Async commit all messages polled so far + consumer.commitAsync(offsetMap, null); + } + } catch (Exception e) { + log.error("exception occur while consuming message", e); + } + } + }); + } + + @Override + public void close() throws Exception { + closing = true; + executor.shutdown(); + consumerTask.get(); + consumer.close(); + } + +} diff --git a/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkDriver.java b/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkDriver.java new file mode 100644 index 00000000..8d708c31 --- /dev/null +++ b/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkDriver.java @@ -0,0 +1,183 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package io.openmessaging.benchmark.driver.kafka; + +import java.io.File; +import java.io.IOException; +import java.io.StringReader; +import java.util.*; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; + +import org.apache.bookkeeper.stats.StatsLogger; +import org.apache.kafka.clients.admin.AdminClient; +import org.apache.kafka.clients.admin.DeleteTopicsResult; +import org.apache.kafka.clients.admin.ListTopicsResult; +import org.apache.kafka.clients.admin.NewTopic; +import org.apache.kafka.clients.consumer.ConsumerConfig; +import org.apache.kafka.clients.consumer.KafkaConsumer; +import org.apache.kafka.clients.producer.KafkaProducer; +import org.apache.kafka.clients.producer.ProducerConfig; +import org.apache.kafka.common.serialization.ByteArrayDeserializer; +import org.apache.kafka.common.serialization.ByteArraySerializer; +import org.apache.kafka.common.serialization.StringDeserializer; +import org.apache.kafka.common.serialization.StringSerializer; + +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; + +import io.openmessaging.benchmark.driver.BenchmarkConsumer; +import io.openmessaging.benchmark.driver.BenchmarkDriver; +import io.openmessaging.benchmark.driver.BenchmarkProducer; +import io.openmessaging.benchmark.driver.ConsumerCallback; + +public class KafkaBenchmarkDriver implements BenchmarkDriver { + + private Config config; + + private List producers = Collections.synchronizedList(new ArrayList<>()); + private List consumers = Collections.synchronizedList(new ArrayList<>()); + + private Properties topicProperties; + private Properties producerProperties; + private Properties consumerProperties; + + private AdminClient admin; + + @Override + public void initialize(File configurationFile, StatsLogger statsLogger) throws IOException { + config = mapper.readValue(configurationFile, Config.class); + + Properties commonProperties = new Properties(); + commonProperties.load(new StringReader(config.commonConfig)); + + producerProperties = new Properties(); + commonProperties.forEach((key, value) -> producerProperties.put(key, value)); + producerProperties.load(new StringReader(config.producerConfig)); + producerProperties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); + producerProperties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, ByteArraySerializer.class.getName()); + + consumerProperties = new Properties(); + commonProperties.forEach((key, value) -> consumerProperties.put(key, value)); + consumerProperties.load(new StringReader(config.consumerConfig)); + consumerProperties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); + consumerProperties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, ByteArrayDeserializer.class.getName()); + + topicProperties = new Properties(); + topicProperties.load(new StringReader(config.topicConfig)); + + admin = AdminClient.create(commonProperties); + + if (config.reset) { + // List existing topics + ListTopicsResult result = admin.listTopics(); + try { + Set topics = result.names().get(); + // Delete all existing topics + DeleteTopicsResult deletes = admin.deleteTopics(topics); + deletes.all().get(); + } catch (InterruptedException | ExecutionException e) { + e.printStackTrace(); + throw new IOException(e); + } + } + } + + @Override + public String getTopicNamePrefix() { + return "test-topic"; + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Override + public CompletableFuture createTopic(String topic, int partitions) { + return CompletableFuture.runAsync(() -> { + try { + NewTopic newTopic = new NewTopic(topic, partitions, config.replicationFactor); + newTopic.configs(new HashMap<>((Map) topicProperties)); + admin.createTopics(Arrays.asList(newTopic)).all().get(); + } catch (InterruptedException | ExecutionException e) { + throw new RuntimeException(e); + } + }); + } + + @Override + public CompletableFuture notifyTopicCreation(String topic, int partitions) { + // No-op + return CompletableFuture.completedFuture(null); + } + + @Override + public CompletableFuture createProducer(String topic) { + KafkaProducer kafkaProducer = new KafkaProducer<>(producerProperties); + BenchmarkProducer benchmarkProducer = new KafkaBenchmarkProducer(kafkaProducer, topic); + try { + // Add to producer list to close later + producers.add(benchmarkProducer); + return CompletableFuture.completedFuture(benchmarkProducer); + } catch (Throwable t) { + kafkaProducer.close(); + CompletableFuture future = new CompletableFuture<>(); + future.completeExceptionally(t); + return future; + } + } + + @Override + public CompletableFuture createConsumer(String topic, String subscriptionName, + Optional partition, ConsumerCallback consumerCallback) { + Properties properties = new Properties(); + consumerProperties.forEach((key, value) -> properties.put(key, value)); + properties.put(ConsumerConfig.GROUP_ID_CONFIG, subscriptionName); + KafkaConsumer kafkaConsumer = new KafkaConsumer<>(properties); + try { + // Subscribe + kafkaConsumer.subscribe(Arrays.asList(topic)); + + // Start polling + BenchmarkConsumer benchmarkConsumer = new KafkaBenchmarkConsumer(kafkaConsumer, consumerCallback); + + // Add to consumer list to close later + consumers.add(benchmarkConsumer); + return CompletableFuture.completedFuture(benchmarkConsumer); + } catch (Throwable t) { + kafkaConsumer.close(); + CompletableFuture future = new CompletableFuture<>(); + future.completeExceptionally(t); + return future; + } + } + + @Override + public void close() throws Exception { + for (BenchmarkProducer producer : producers) { + producer.close(); + } + + for (BenchmarkConsumer consumer : consumers) { + consumer.close(); + } + admin.close(); + } + + private static final ObjectMapper mapper = new ObjectMapper(new YAMLFactory()) + .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); +} diff --git a/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkProducer.java b/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkProducer.java new file mode 100644 index 00000000..dcd487b8 --- /dev/null +++ b/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkProducer.java @@ -0,0 +1,61 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package io.openmessaging.benchmark.driver.kafka; + +import java.util.Optional; +import java.util.concurrent.CompletableFuture; + +import org.apache.kafka.clients.producer.KafkaProducer; +import org.apache.kafka.clients.producer.ProducerRecord; + +import io.openmessaging.benchmark.driver.BenchmarkProducer; + +public class KafkaBenchmarkProducer implements BenchmarkProducer { + + private final KafkaProducer producer; + private final String topic; + + public KafkaBenchmarkProducer(KafkaProducer producer, String topic) { + this.producer = producer; + this.topic = topic; + } + + @Override + public CompletableFuture sendAsync(Optional key, byte[] payload) { + ProducerRecord record = new ProducerRecord<>(topic, key.orElse(null), payload); + + CompletableFuture future = new CompletableFuture<>(); + + producer.send(record, (metadata, exception) -> { + if (exception != null) { + future.completeExceptionally(exception); + } else { + future.complete(null); + } + }); + + return future; + } + + @Override + public void close() throws Exception { + producer.close(); + } + +} From bbffe971911f8b1ef69e883c1f91266edfe3138d Mon Sep 17 00:00:00 2001 From: Roko Kruze Date: Fri, 9 Oct 2020 16:28:22 -0700 Subject: [PATCH 06/47] Changes to the benchmarking code to be more redpanda specific There is a current issue that doesn't allow for the passing for "min.insync.replicas". So this has been removed for the moment from the driver files. --- benchmark-framework/pom.xml | 6 + driver-redpanda/deploy/ansible.cfg | 1 + driver-redpanda/deploy/deploy.yaml | 45 +++-- driver-redpanda/deploy/requirements.yaml | 23 ++- driver-redpanda/kafka-0.yaml | 5 +- driver-redpanda/kafka-1.yaml | 5 +- driver-redpanda/kafka-all.yaml | 5 +- driver-redpanda/kafka-exactly-once.yaml | 5 +- driver-redpanda/kafka-group-all.yaml | 5 +- driver-redpanda/kafka-sync-0.yaml | 5 +- driver-redpanda/kafka-sync-1.yaml | 5 +- driver-redpanda/kafka-sync-all.yaml | 5 +- driver-redpanda/kafka-sync-group-all-1ms.yaml | 5 +- driver-redpanda/kafka-sync-group-all.yaml | 5 +- .../benchmark/driver/kafka/Config.java | 33 ---- .../driver/kafka/KafkaBenchmarkConsumer.java | 84 -------- .../driver/kafka/KafkaBenchmarkDriver.java | 183 ------------------ .../driver/kafka/KafkaBenchmarkProducer.java | 61 ------ pom.xml | 1 + 19 files changed, 72 insertions(+), 415 deletions(-) delete mode 100644 driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/Config.java delete mode 100644 driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkConsumer.java delete mode 100644 driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkDriver.java delete mode 100644 driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkProducer.java diff --git a/benchmark-framework/pom.xml b/benchmark-framework/pom.xml index 03b435a0..37000292 100644 --- a/benchmark-framework/pom.xml +++ b/benchmark-framework/pom.xml @@ -104,6 +104,12 @@ ${project.version} + + ${project.groupId} + driver-redpanda + ${project.version} + + ${project.groupId} driver-rocketmq diff --git a/driver-redpanda/deploy/ansible.cfg b/driver-redpanda/deploy/ansible.cfg index 845d0dc5..ae9cc686 100644 --- a/driver-redpanda/deploy/ansible.cfg +++ b/driver-redpanda/deploy/ansible.cfg @@ -1,6 +1,7 @@ [defaults] host_key_checking=false private_key_file=~/.ssh/redpanda_aws +interpreter_python=auto [privilege_escalation] become=true diff --git a/driver-redpanda/deploy/deploy.yaml b/driver-redpanda/deploy/deploy.yaml index ebc77f07..a658c8bf 100644 --- a/driver-redpanda/deploy/deploy.yaml +++ b/driver-redpanda/deploy/deploy.yaml @@ -73,22 +73,24 @@ become: true tasks: - name: Remove sysstat - yum: pkg={{ item }} state=absent - with_items: - - sysstat + package: + name: + - sysstat + state: absent - name: Install RPM packages - yum: pkg={{ item }} state=latest - with_items: - - mdadm - - xfsprogs - - iotop - - wget - - java-11 - - sysstat - - vim - - chrony - - git - - gcc + package: + name: + - mdadm + - xfsprogs + - iotop + - wget + - java-11 + - sysstat + - vim + - chrony + - git + - gcc + state: present - name: set facts about drives hosts: redpanda @@ -96,7 +98,6 @@ - set_fact: device_info: "{{ hostvars[inventory_hostname].ansible_devices }}" nvme_device_ids: "{{ hostvars[inventory_hostname].ansible_devices.keys() | map('regex_search', 'nvme.*') | select('string') | list }}" - - set_fact: nvme_devices_for_raid: '{{ (nvme_devices_for_raid | default([])) + ["/dev/" + item] }}' loop: '{{ nvme_device_ids }}' @@ -185,9 +186,10 @@ - name: Store server lists hosts: all connection: ssh + tags: client tasks: - set_fact: - boostrapServers: "{{ groups['redpanda'] | map('extract', hostvars, ['private_ip']) | map('regex_replace', '^(.*)$', '\\1:9092') | join(',') }}" + bootstrapServers: "{{ groups['redpanda'] | map('extract', hostvars, ['private_ip']) | map('regex_replace', '^(.*)$', '\\1:9092') | join(',') }}" - name: install redpanda hosts: redpanda @@ -195,8 +197,8 @@ - name: add the redpanda repo shell: | curl -s https://ceba06f0585fdd548c3106334751dcd75abf0d043320fab5:@packagecloud.io/install/repositories/vectorizedio/v/script.rpm.sh | sudo bash - - + args: + warn: no - name: install redpanda package: name: @@ -334,6 +336,7 @@ hosts: client connection: ssh become: true + tags: client tasks: - file: path=/opt/benchmark state=absent - name: Copy benchmark code @@ -344,14 +347,14 @@ #- shell: tuned-adm profile latency-performance - name: Get list of driver config files - raw: ls -1 /opt/benchmark/driver-kafka/*.yaml + raw: ls -1 /opt/benchmark/driver-redpanda/*.yaml register: drivers_list - name: Configure URL lineinfile: dest: "{{ item }}" regexp: "^ bootstrap.servers=" - line: " bootstrap.servers={{ boostrapServers }}" + line: " bootstrap.servers={{ bootstrapServers }}" with_items: "{{ drivers_list.stdout_lines }}" - name: Configure memory lineinfile: diff --git a/driver-redpanda/deploy/requirements.yaml b/driver-redpanda/deploy/requirements.yaml index ab16d5e2..8c57768f 100644 --- a/driver-redpanda/deploy/requirements.yaml +++ b/driver-redpanda/deploy/requirements.yaml @@ -1,6 +1,23 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + - src: mrlesmithjr.mdadm - src: cloudalchemy.prometheus - src: cloudalchemy.grafana -- src: cloudalchemy.node-exporter -- src: computology.packagecloud -- src: geerlingguy.repo-epel \ No newline at end of file +- src: cloudalchemy.node-exporter \ No newline at end of file diff --git a/driver-redpanda/kafka-0.yaml b/driver-redpanda/kafka-0.yaml index 7b9082f2..8671473c 100644 --- a/driver-redpanda/kafka-0.yaml +++ b/driver-redpanda/kafka-0.yaml @@ -17,15 +17,14 @@ # under the License. # -name: Kafka -driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver +name: Redpanda +driverClass: io.openmessaging.benchmark.driver.redpanda.RedpandaBenchmarkDriver # Kafka client-specific configuration replicationFactor: 3 reset: true topicConfig: | - min.insync.replicas=2 commonConfig: | bootstrap.servers=localhost:9092 diff --git a/driver-redpanda/kafka-1.yaml b/driver-redpanda/kafka-1.yaml index 5abf8242..b9eab117 100644 --- a/driver-redpanda/kafka-1.yaml +++ b/driver-redpanda/kafka-1.yaml @@ -17,15 +17,14 @@ # under the License. # -name: Kafka -driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver +name: Redpanda +driverClass: io.openmessaging.benchmark.driver.redpanda.RedpandaBenchmarkDriver # Kafka client-specific configuration replicationFactor: 3 reset: true topicConfig: | - min.insync.replicas=2 commonConfig: | bootstrap.servers=localhost:9092 diff --git a/driver-redpanda/kafka-all.yaml b/driver-redpanda/kafka-all.yaml index c78f99c0..2c7aa186 100644 --- a/driver-redpanda/kafka-all.yaml +++ b/driver-redpanda/kafka-all.yaml @@ -17,15 +17,14 @@ # under the License. # -name: Kafka -driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver +name: Redpanda +driverClass: io.openmessaging.benchmark.driver.redpanda.RedpandaBenchmarkDriver # Kafka client-specific configuration replicationFactor: 3 reset: true topicConfig: | - min.insync.replicas=2 commonConfig: | bootstrap.servers=localhost:9092 diff --git a/driver-redpanda/kafka-exactly-once.yaml b/driver-redpanda/kafka-exactly-once.yaml index a7407661..7d0f84f0 100644 --- a/driver-redpanda/kafka-exactly-once.yaml +++ b/driver-redpanda/kafka-exactly-once.yaml @@ -17,15 +17,14 @@ # under the License. # -name: Kafka-exactly-once -driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver +name: Redpanda-exactly-once +driverClass: io.openmessaging.benchmark.driver.redpanda.RedpandaBenchmarkDriver # Kafka client-specific configuration replicationFactor: 3 reset: true topicConfig: | - min.insync.replicas=2 commonConfig: | bootstrap.servers=localhost:9092 diff --git a/driver-redpanda/kafka-group-all.yaml b/driver-redpanda/kafka-group-all.yaml index b8944d36..6c018ba4 100644 --- a/driver-redpanda/kafka-group-all.yaml +++ b/driver-redpanda/kafka-group-all.yaml @@ -17,15 +17,14 @@ # under the License. # -name: Kafka -driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver +name: Redpanda +driverClass: io.openmessaging.benchmark.driver.redpanda.RedpandaBenchmarkDriver # Kafka client-specific configuration replicationFactor: 3 reset: true topicConfig: | - min.insync.replicas=2 commonConfig: | bootstrap.servers=localhost:9092 diff --git a/driver-redpanda/kafka-sync-0.yaml b/driver-redpanda/kafka-sync-0.yaml index a4e03180..bd915f89 100644 --- a/driver-redpanda/kafka-sync-0.yaml +++ b/driver-redpanda/kafka-sync-0.yaml @@ -19,15 +19,14 @@ # Kafka driver profile that is configuring to sync all # published messages to disk to achieve durability -name: Kafka -driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver +name: Redpanda +driverClass: io.openmessaging.benchmark.driver.redpanda.RedpandaBenchmarkDriver # Kafka client-specific configuration replicationFactor: 3 reset: true topicConfig: | - min.insync.replicas=2 flush.messages=1 flush.ms=0 diff --git a/driver-redpanda/kafka-sync-1.yaml b/driver-redpanda/kafka-sync-1.yaml index 3bf6d7d1..e5f39c6d 100644 --- a/driver-redpanda/kafka-sync-1.yaml +++ b/driver-redpanda/kafka-sync-1.yaml @@ -19,15 +19,14 @@ # Kafka driver profile that is configuring to sync all # published messages to disk to achieve durability -name: Kafka -driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver +name: Redpanda +driverClass: io.openmessaging.benchmark.driver.redpanda.RedpandaBenchmarkDriver # Kafka client-specific configuration replicationFactor: 3 reset: true topicConfig: | - min.insync.replicas=2 flush.messages=1 flush.ms=0 diff --git a/driver-redpanda/kafka-sync-all.yaml b/driver-redpanda/kafka-sync-all.yaml index a4fb4955..87050215 100644 --- a/driver-redpanda/kafka-sync-all.yaml +++ b/driver-redpanda/kafka-sync-all.yaml @@ -19,15 +19,14 @@ # Kafka driver profile that is configuring to sync all # published messages to disk to achieve durability -name: Kafka -driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver +name: Redpanda +driverClass: io.openmessaging.benchmark.driver.redpanda.RedpandaBenchmarkDriver # Kafka client-specific configuration replicationFactor: 3 reset: true topicConfig: | - min.insync.replicas=2 flush.messages=1 flush.ms=0 diff --git a/driver-redpanda/kafka-sync-group-all-1ms.yaml b/driver-redpanda/kafka-sync-group-all-1ms.yaml index fcda5030..d3231018 100644 --- a/driver-redpanda/kafka-sync-group-all-1ms.yaml +++ b/driver-redpanda/kafka-sync-group-all-1ms.yaml @@ -17,14 +17,13 @@ # under the License. # -name: Kafka -driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver +name: Redpanda +driverClass: io.openmessaging.benchmark.driver.redpanda.RedpandaBenchmarkDriver # Kafka client-specific configuration replicationFactor: 3 reset: true topicConfig: | - min.insync.replicas=2 flush.messages=1 flush.ms=0 commonConfig: | diff --git a/driver-redpanda/kafka-sync-group-all.yaml b/driver-redpanda/kafka-sync-group-all.yaml index dbd91136..b3e034e4 100644 --- a/driver-redpanda/kafka-sync-group-all.yaml +++ b/driver-redpanda/kafka-sync-group-all.yaml @@ -17,15 +17,14 @@ # under the License. # -name: Kafka -driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver +name: Redpanda +driverClass: io.openmessaging.benchmark.driver.redpanda.RedpandaBenchmarkDriver # Kafka client-specific configuration replicationFactor: 3 reset: true # Configuration (flush.messages; flush.ms) enabled only for tests that fsync every message topicConfig: | - min.insync.replicas=2 flush.messages=1 flush.ms=0 commonConfig: | diff --git a/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/Config.java b/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/Config.java deleted file mode 100644 index da59b963..00000000 --- a/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/Config.java +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package io.openmessaging.benchmark.driver.kafka; - -public class Config { - public short replicationFactor; - - public boolean reset; - - public String topicConfig; - - public String commonConfig; - - public String producerConfig; - - public String consumerConfig; -} diff --git a/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkConsumer.java b/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkConsumer.java deleted file mode 100644 index c5a4f13f..00000000 --- a/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkConsumer.java +++ /dev/null @@ -1,84 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package io.openmessaging.benchmark.driver.kafka; - -import java.time.Duration; -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; - -import org.apache.kafka.clients.consumer.ConsumerRecord; -import org.apache.kafka.clients.consumer.ConsumerRecords; -import org.apache.kafka.clients.consumer.KafkaConsumer; -import org.apache.kafka.clients.consumer.OffsetAndMetadata; -import org.apache.kafka.common.TopicPartition; - -import io.openmessaging.benchmark.driver.BenchmarkConsumer; -import io.openmessaging.benchmark.driver.ConsumerCallback; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class KafkaBenchmarkConsumer implements BenchmarkConsumer { - - private static final Logger log = LoggerFactory.getLogger(KafkaBenchmarkConsumer.class); - - private final KafkaConsumer consumer; - - private final ExecutorService executor; - private final Future consumerTask; - private volatile boolean closing = false; - - public KafkaBenchmarkConsumer(KafkaConsumer consumer, ConsumerCallback callback) { - this.consumer = consumer; - this.executor = Executors.newSingleThreadExecutor(); - - this.consumerTask = this.executor.submit(() -> { - while (!closing) { - try { - ConsumerRecords records = consumer.poll(Duration.ofMillis(100)); - Map offsetMap = new HashMap<>(); - for (ConsumerRecord record : records) { - callback.messageReceived(record.value(), TimeUnit.MILLISECONDS.toNanos(record.timestamp())); - offsetMap.put(new TopicPartition(record.topic(), record.partition()), - new OffsetAndMetadata(record.offset())); - } - - if (!records.isEmpty()) { - // Async commit all messages polled so far - consumer.commitAsync(offsetMap, null); - } - } catch (Exception e) { - log.error("exception occur while consuming message", e); - } - } - }); - } - - @Override - public void close() throws Exception { - closing = true; - executor.shutdown(); - consumerTask.get(); - consumer.close(); - } - -} diff --git a/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkDriver.java b/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkDriver.java deleted file mode 100644 index 8d708c31..00000000 --- a/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkDriver.java +++ /dev/null @@ -1,183 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package io.openmessaging.benchmark.driver.kafka; - -import java.io.File; -import java.io.IOException; -import java.io.StringReader; -import java.util.*; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ExecutionException; - -import org.apache.bookkeeper.stats.StatsLogger; -import org.apache.kafka.clients.admin.AdminClient; -import org.apache.kafka.clients.admin.DeleteTopicsResult; -import org.apache.kafka.clients.admin.ListTopicsResult; -import org.apache.kafka.clients.admin.NewTopic; -import org.apache.kafka.clients.consumer.ConsumerConfig; -import org.apache.kafka.clients.consumer.KafkaConsumer; -import org.apache.kafka.clients.producer.KafkaProducer; -import org.apache.kafka.clients.producer.ProducerConfig; -import org.apache.kafka.common.serialization.ByteArrayDeserializer; -import org.apache.kafka.common.serialization.ByteArraySerializer; -import org.apache.kafka.common.serialization.StringDeserializer; -import org.apache.kafka.common.serialization.StringSerializer; - -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; - -import io.openmessaging.benchmark.driver.BenchmarkConsumer; -import io.openmessaging.benchmark.driver.BenchmarkDriver; -import io.openmessaging.benchmark.driver.BenchmarkProducer; -import io.openmessaging.benchmark.driver.ConsumerCallback; - -public class KafkaBenchmarkDriver implements BenchmarkDriver { - - private Config config; - - private List producers = Collections.synchronizedList(new ArrayList<>()); - private List consumers = Collections.synchronizedList(new ArrayList<>()); - - private Properties topicProperties; - private Properties producerProperties; - private Properties consumerProperties; - - private AdminClient admin; - - @Override - public void initialize(File configurationFile, StatsLogger statsLogger) throws IOException { - config = mapper.readValue(configurationFile, Config.class); - - Properties commonProperties = new Properties(); - commonProperties.load(new StringReader(config.commonConfig)); - - producerProperties = new Properties(); - commonProperties.forEach((key, value) -> producerProperties.put(key, value)); - producerProperties.load(new StringReader(config.producerConfig)); - producerProperties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); - producerProperties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, ByteArraySerializer.class.getName()); - - consumerProperties = new Properties(); - commonProperties.forEach((key, value) -> consumerProperties.put(key, value)); - consumerProperties.load(new StringReader(config.consumerConfig)); - consumerProperties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); - consumerProperties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, ByteArrayDeserializer.class.getName()); - - topicProperties = new Properties(); - topicProperties.load(new StringReader(config.topicConfig)); - - admin = AdminClient.create(commonProperties); - - if (config.reset) { - // List existing topics - ListTopicsResult result = admin.listTopics(); - try { - Set topics = result.names().get(); - // Delete all existing topics - DeleteTopicsResult deletes = admin.deleteTopics(topics); - deletes.all().get(); - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - throw new IOException(e); - } - } - } - - @Override - public String getTopicNamePrefix() { - return "test-topic"; - } - - @SuppressWarnings({ "rawtypes", "unchecked" }) - @Override - public CompletableFuture createTopic(String topic, int partitions) { - return CompletableFuture.runAsync(() -> { - try { - NewTopic newTopic = new NewTopic(topic, partitions, config.replicationFactor); - newTopic.configs(new HashMap<>((Map) topicProperties)); - admin.createTopics(Arrays.asList(newTopic)).all().get(); - } catch (InterruptedException | ExecutionException e) { - throw new RuntimeException(e); - } - }); - } - - @Override - public CompletableFuture notifyTopicCreation(String topic, int partitions) { - // No-op - return CompletableFuture.completedFuture(null); - } - - @Override - public CompletableFuture createProducer(String topic) { - KafkaProducer kafkaProducer = new KafkaProducer<>(producerProperties); - BenchmarkProducer benchmarkProducer = new KafkaBenchmarkProducer(kafkaProducer, topic); - try { - // Add to producer list to close later - producers.add(benchmarkProducer); - return CompletableFuture.completedFuture(benchmarkProducer); - } catch (Throwable t) { - kafkaProducer.close(); - CompletableFuture future = new CompletableFuture<>(); - future.completeExceptionally(t); - return future; - } - } - - @Override - public CompletableFuture createConsumer(String topic, String subscriptionName, - Optional partition, ConsumerCallback consumerCallback) { - Properties properties = new Properties(); - consumerProperties.forEach((key, value) -> properties.put(key, value)); - properties.put(ConsumerConfig.GROUP_ID_CONFIG, subscriptionName); - KafkaConsumer kafkaConsumer = new KafkaConsumer<>(properties); - try { - // Subscribe - kafkaConsumer.subscribe(Arrays.asList(topic)); - - // Start polling - BenchmarkConsumer benchmarkConsumer = new KafkaBenchmarkConsumer(kafkaConsumer, consumerCallback); - - // Add to consumer list to close later - consumers.add(benchmarkConsumer); - return CompletableFuture.completedFuture(benchmarkConsumer); - } catch (Throwable t) { - kafkaConsumer.close(); - CompletableFuture future = new CompletableFuture<>(); - future.completeExceptionally(t); - return future; - } - } - - @Override - public void close() throws Exception { - for (BenchmarkProducer producer : producers) { - producer.close(); - } - - for (BenchmarkConsumer consumer : consumers) { - consumer.close(); - } - admin.close(); - } - - private static final ObjectMapper mapper = new ObjectMapper(new YAMLFactory()) - .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); -} diff --git a/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkProducer.java b/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkProducer.java deleted file mode 100644 index dcd487b8..00000000 --- a/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkProducer.java +++ /dev/null @@ -1,61 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package io.openmessaging.benchmark.driver.kafka; - -import java.util.Optional; -import java.util.concurrent.CompletableFuture; - -import org.apache.kafka.clients.producer.KafkaProducer; -import org.apache.kafka.clients.producer.ProducerRecord; - -import io.openmessaging.benchmark.driver.BenchmarkProducer; - -public class KafkaBenchmarkProducer implements BenchmarkProducer { - - private final KafkaProducer producer; - private final String topic; - - public KafkaBenchmarkProducer(KafkaProducer producer, String topic) { - this.producer = producer; - this.topic = topic; - } - - @Override - public CompletableFuture sendAsync(Optional key, byte[] payload) { - ProducerRecord record = new ProducerRecord<>(topic, key.orElse(null), payload); - - CompletableFuture future = new CompletableFuture<>(); - - producer.send(record, (metadata, exception) -> { - if (exception != null) { - future.completeExceptionally(exception); - } else { - future.complete(null); - } - }); - - return future; - } - - @Override - public void close() throws Exception { - producer.close(); - } - -} diff --git a/pom.xml b/pom.xml index abdae281..bfc2d293 100644 --- a/pom.xml +++ b/pom.xml @@ -34,6 +34,7 @@ driver-pulsar driver-kafka + driver-redpanda driver-rabbitmq driver-artemis driver-bookkeeper From cd799373d70b97e2147073b7d1c4855c30afcd47 Mon Sep 17 00:00:00 2001 From: Roko Kruze Date: Fri, 9 Oct 2020 16:29:30 -0700 Subject: [PATCH 07/47] Added the specific redpanda java files --- .../benchmark/driver/redpanda/Config.java | 33 +++ .../redpanda/RedpandaBenchmarkConsumer.java | 84 ++++++++ .../redpanda/RedpandaBenchmarkDriver.java | 190 ++++++++++++++++++ .../redpanda/RedpandaBenchmarkProducer.java | 61 ++++++ 4 files changed, 368 insertions(+) create mode 100644 driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/redpanda/Config.java create mode 100644 driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/redpanda/RedpandaBenchmarkConsumer.java create mode 100644 driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/redpanda/RedpandaBenchmarkDriver.java create mode 100644 driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/redpanda/RedpandaBenchmarkProducer.java diff --git a/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/redpanda/Config.java b/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/redpanda/Config.java new file mode 100644 index 00000000..0aa12971 --- /dev/null +++ b/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/redpanda/Config.java @@ -0,0 +1,33 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package io.openmessaging.benchmark.driver.redpanda; + +public class Config { + public short replicationFactor; + + public boolean reset; + + public String topicConfig; + + public String commonConfig; + + public String producerConfig; + + public String consumerConfig; +} diff --git a/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/redpanda/RedpandaBenchmarkConsumer.java b/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/redpanda/RedpandaBenchmarkConsumer.java new file mode 100644 index 00000000..6e9bea59 --- /dev/null +++ b/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/redpanda/RedpandaBenchmarkConsumer.java @@ -0,0 +1,84 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package io.openmessaging.benchmark.driver.redpanda; + +import java.time.Duration; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; + +import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.apache.kafka.clients.consumer.KafkaConsumer; +import org.apache.kafka.clients.consumer.OffsetAndMetadata; +import org.apache.kafka.common.TopicPartition; + +import io.openmessaging.benchmark.driver.BenchmarkConsumer; +import io.openmessaging.benchmark.driver.ConsumerCallback; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class RedpandaBenchmarkConsumer implements BenchmarkConsumer { + + private static final Logger log = LoggerFactory.getLogger(RedpandaBenchmarkConsumer.class); + + private final KafkaConsumer consumer; + + private final ExecutorService executor; + private final Future consumerTask; + private volatile boolean closing = false; + + public RedpandaBenchmarkConsumer(KafkaConsumer consumer, ConsumerCallback callback) { + this.consumer = consumer; + this.executor = Executors.newSingleThreadExecutor(); + + this.consumerTask = this.executor.submit(() -> { + while (!closing) { + try { + ConsumerRecords records = consumer.poll(Duration.ofMillis(100)); + Map offsetMap = new HashMap<>(); + for (ConsumerRecord record : records) { + callback.messageReceived(record.value(), TimeUnit.MILLISECONDS.toNanos(record.timestamp())); + offsetMap.put(new TopicPartition(record.topic(), record.partition()), + new OffsetAndMetadata(record.offset())); + } + + if (!records.isEmpty()) { + // Async commit all messages polled so far + consumer.commitAsync(offsetMap, null); + } + } catch (Exception e) { + log.error("exception occur while consuming message", e); + } + } + }); + } + + @Override + public void close() throws Exception { + closing = true; + executor.shutdown(); + consumerTask.get(); + consumer.close(); + } + +} diff --git a/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/redpanda/RedpandaBenchmarkDriver.java b/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/redpanda/RedpandaBenchmarkDriver.java new file mode 100644 index 00000000..5a831a8a --- /dev/null +++ b/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/redpanda/RedpandaBenchmarkDriver.java @@ -0,0 +1,190 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package io.openmessaging.benchmark.driver.redpanda; + +import java.io.File; +import java.io.IOException; +import java.io.StringReader; +import java.util.*; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; + +import org.apache.bookkeeper.stats.StatsLogger; +import org.apache.kafka.clients.admin.AdminClient; +import org.apache.kafka.clients.admin.DeleteTopicsResult; +import org.apache.kafka.clients.admin.ListTopicsResult; +import org.apache.kafka.clients.admin.NewTopic; +import org.apache.kafka.clients.consumer.ConsumerConfig; +import org.apache.kafka.clients.consumer.KafkaConsumer; +import org.apache.kafka.clients.producer.KafkaProducer; +import org.apache.kafka.clients.producer.ProducerConfig; +import org.apache.kafka.common.serialization.ByteArrayDeserializer; +import org.apache.kafka.common.serialization.ByteArraySerializer; +import org.apache.kafka.common.serialization.StringDeserializer; +import org.apache.kafka.common.serialization.StringSerializer; + +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; + +import io.openmessaging.benchmark.driver.BenchmarkConsumer; +import io.openmessaging.benchmark.driver.BenchmarkDriver; +import io.openmessaging.benchmark.driver.BenchmarkProducer; +import io.openmessaging.benchmark.driver.ConsumerCallback; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class RedpandaBenchmarkDriver implements BenchmarkDriver { + + private Config config; + + private List producers = Collections.synchronizedList(new ArrayList<>()); + private List consumers = Collections.synchronizedList(new ArrayList<>()); + + private Properties topicProperties; + private Properties producerProperties; + private Properties consumerProperties; + + private AdminClient admin; + + @Override + public void initialize(File configurationFile, StatsLogger statsLogger) throws IOException { + config = mapper.readValue(configurationFile, Config.class); + + Properties commonProperties = new Properties(); + commonProperties.load(new StringReader(config.commonConfig)); + + producerProperties = new Properties(); + commonProperties.forEach((key, value) -> producerProperties.put(key, value)); + producerProperties.load(new StringReader(config.producerConfig)); + producerProperties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); + producerProperties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, ByteArraySerializer.class.getName()); + + consumerProperties = new Properties(); + commonProperties.forEach((key, value) -> consumerProperties.put(key, value)); + consumerProperties.load(new StringReader(config.consumerConfig)); + consumerProperties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); + consumerProperties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, ByteArrayDeserializer.class.getName()); + + topicProperties = new Properties(); + topicProperties.load(new StringReader(config.topicConfig)); + + admin = AdminClient.create(commonProperties); + + if (config.reset) { + // List existing topics + ListTopicsResult result = admin.listTopics(); + try { + Set topics = result.names().get(); + // Delete all existing topics + DeleteTopicsResult deletes = admin.deleteTopics(topics); + deletes.all().get(); + } catch (InterruptedException | ExecutionException e) { + e.printStackTrace(); + throw new IOException(e); + } + } + } + + @Override + public String getTopicNamePrefix() { + return "test-topic"; + } + + private static final Logger log = LoggerFactory.getLogger(RedpandaBenchmarkDriver.class); + + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Override + public CompletableFuture createTopic(String topic, int partitions) { + return CompletableFuture.runAsync(() -> { + try { + log.info("Creating a topic: {}, with {} partitions and replication of: {}", + topic, partitions, config.replicationFactor); + NewTopic newTopic = new NewTopic(topic, partitions, config.replicationFactor); + newTopic.configs(new HashMap<>((Map) topicProperties)); + admin.createTopics(Arrays.asList(newTopic)).all().get(); + } catch (InterruptedException | ExecutionException e) { + log.info("{}", e.toString()); + throw new RuntimeException(e); + } + }); + } + + @Override + public CompletableFuture notifyTopicCreation(String topic, int partitions) { + // No-op + return CompletableFuture.completedFuture(null); + } + + @Override + public CompletableFuture createProducer(String topic) { + KafkaProducer kafkaProducer = new KafkaProducer<>(producerProperties); + BenchmarkProducer benchmarkProducer = new RedpandaBenchmarkProducer(kafkaProducer, topic); + try { + // Add to producer list to close later + producers.add(benchmarkProducer); + return CompletableFuture.completedFuture(benchmarkProducer); + } catch (Throwable t) { + kafkaProducer.close(); + CompletableFuture future = new CompletableFuture<>(); + future.completeExceptionally(t); + return future; + } + } + + @Override + public CompletableFuture createConsumer(String topic, String subscriptionName, + Optional partition, ConsumerCallback consumerCallback) { + Properties properties = new Properties(); + consumerProperties.forEach((key, value) -> properties.put(key, value)); + properties.put(ConsumerConfig.GROUP_ID_CONFIG, subscriptionName); + KafkaConsumer kafkaConsumer = new KafkaConsumer<>(properties); + try { + // Subscribe + kafkaConsumer.subscribe(Arrays.asList(topic)); + + // Start polling + BenchmarkConsumer benchmarkConsumer = new RedpandaBenchmarkConsumer(kafkaConsumer, consumerCallback); + + // Add to consumer list to close later + consumers.add(benchmarkConsumer); + return CompletableFuture.completedFuture(benchmarkConsumer); + } catch (Throwable t) { + kafkaConsumer.close(); + CompletableFuture future = new CompletableFuture<>(); + future.completeExceptionally(t); + return future; + } + } + + @Override + public void close() throws Exception { + for (BenchmarkProducer producer : producers) { + producer.close(); + } + + for (BenchmarkConsumer consumer : consumers) { + consumer.close(); + } + admin.close(); + } + + private static final ObjectMapper mapper = new ObjectMapper(new YAMLFactory()) + .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); +} diff --git a/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/redpanda/RedpandaBenchmarkProducer.java b/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/redpanda/RedpandaBenchmarkProducer.java new file mode 100644 index 00000000..5d38682e --- /dev/null +++ b/driver-redpanda/src/main/java/io/openmessaging/benchmark/driver/redpanda/RedpandaBenchmarkProducer.java @@ -0,0 +1,61 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package io.openmessaging.benchmark.driver.redpanda; + +import java.util.Optional; +import java.util.concurrent.CompletableFuture; + +import org.apache.kafka.clients.producer.KafkaProducer; +import org.apache.kafka.clients.producer.ProducerRecord; + +import io.openmessaging.benchmark.driver.BenchmarkProducer; + +public class RedpandaBenchmarkProducer implements BenchmarkProducer { + + private final KafkaProducer producer; + private final String topic; + + public RedpandaBenchmarkProducer(KafkaProducer producer, String topic) { + this.producer = producer; + this.topic = topic; + } + + @Override + public CompletableFuture sendAsync(Optional key, byte[] payload) { + ProducerRecord record = new ProducerRecord<>(topic, key.orElse(null), payload); + + CompletableFuture future = new CompletableFuture<>(); + + producer.send(record, (metadata, exception) -> { + if (exception != null) { + future.completeExceptionally(exception); + } else { + future.complete(null); + } + }); + + return future; + } + + @Override + public void close() throws Exception { + producer.close(); + } + +} From ffea5a1955417266f0f2b71ac2c24307af70d660 Mon Sep 17 00:00:00 2001 From: Roko Kruze Date: Tue, 13 Oct 2020 16:04:30 -0700 Subject: [PATCH 08/47] Working version of Redpanda Benchmark Fully working version of the Redpanda benchmark. Also added the workloads from the confluent benchmarking blog, found under workloads/blog --- .../io/openmessaging/benchmark/Benchmark.java | 10 +- driver-redpanda/README.md | 48 +++- driver-redpanda/deploy/deploy.yaml | 263 +----------------- .../deploy/provision-redpanda-aws.tf | 5 + driver-redpanda/deploy/terraform.tfvars | 4 +- .../{kafka-0.yaml => redpanda-ack-0.yaml} | 0 .../{kafka-1.yaml => redpanda-ack-1.yaml} | 0 ...> redpanda-ack-all-group-linger-10ms.yaml} | 2 - ...=> redpanda-ack-all-group-linger-1ms.yaml} | 2 - ....yaml => redpanda-ack-all-linger-1ms.yaml} | 2 - .../{kafka-all.yaml => redpanda-ack-all.yaml} | 0 ...y-once.yaml => redpanda-exactly-once.yaml} | 0 ...group-all.yaml => redpanda-group-all.yaml} | 0 ...partitions-1kb-4-producers-1000k-rate.yaml | 34 +-- ...-partitions-1kb-4-producers-100k-rate.yaml | 34 +-- ...0-partitions-1kb-4-producers-10k-rate.yaml | 31 +++ ...-partitions-1kb-4-producers-200k-rate.yaml | 31 +++ ...0-partitions-1kb-4-producers-40k-rate.yaml | 31 +++ ...-partitions-1kb-4-producers-500k-rate.yaml | 31 +++ ...0-partitions-1kb-4-producers-50k-rate.yaml | 31 +++ ...0-partitions-1kb-4-producers-75k-rate.yaml | 31 +++ ...partitions-1kb-4-producers-1000k-rate.yaml | 31 +++ ...-partitions-1kb-4-producers-100k-rate.yaml | 31 +++ ...0-partitions-1kb-4-producers-10k-rate.yaml | 31 +++ ...-partitions-1kb-4-producers-200k-rate.yaml | 31 +++ ...-partitions-1kb-4-producers-500k-rate.yaml | 31 +++ ...0-partitions-1kb-4-producers-50k-rate.yaml | 31 +++ 27 files changed, 457 insertions(+), 319 deletions(-) rename driver-redpanda/{kafka-0.yaml => redpanda-ack-0.yaml} (100%) rename driver-redpanda/{kafka-1.yaml => redpanda-ack-1.yaml} (100%) rename driver-redpanda/{kafka-sync-group-all.yaml => redpanda-ack-all-group-linger-10ms.yaml} (97%) rename driver-redpanda/{kafka-sync-group-all-1ms.yaml => redpanda-ack-all-group-linger-1ms.yaml} (97%) rename driver-redpanda/{kafka-sync-all.yaml => redpanda-ack-all-linger-1ms.yaml} (97%) rename driver-redpanda/{kafka-all.yaml => redpanda-ack-all.yaml} (100%) rename driver-redpanda/{kafka-exactly-once.yaml => redpanda-exactly-once.yaml} (100%) rename driver-redpanda/{kafka-group-all.yaml => redpanda-group-all.yaml} (100%) rename driver-redpanda/kafka-sync-0.yaml => workloads/blog/1-topic-100-partitions-1kb-4-producers-1000k-rate.yaml (60%) rename driver-redpanda/kafka-sync-1.yaml => workloads/blog/1-topic-100-partitions-1kb-4-producers-100k-rate.yaml (60%) create mode 100644 workloads/blog/1-topic-100-partitions-1kb-4-producers-10k-rate.yaml create mode 100644 workloads/blog/1-topic-100-partitions-1kb-4-producers-200k-rate.yaml create mode 100644 workloads/blog/1-topic-100-partitions-1kb-4-producers-40k-rate.yaml create mode 100644 workloads/blog/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml create mode 100644 workloads/blog/1-topic-100-partitions-1kb-4-producers-50k-rate.yaml create mode 100644 workloads/blog/1-topic-100-partitions-1kb-4-producers-75k-rate.yaml create mode 100644 workloads/blog/rabbitmq/1-topic-100-partitions-1kb-4-producers-1000k-rate.yaml create mode 100644 workloads/blog/rabbitmq/1-topic-100-partitions-1kb-4-producers-100k-rate.yaml create mode 100644 workloads/blog/rabbitmq/1-topic-100-partitions-1kb-4-producers-10k-rate.yaml create mode 100644 workloads/blog/rabbitmq/1-topic-100-partitions-1kb-4-producers-200k-rate.yaml create mode 100644 workloads/blog/rabbitmq/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml create mode 100644 workloads/blog/rabbitmq/1-topic-100-partitions-1kb-4-producers-50k-rate.yaml diff --git a/benchmark-framework/src/main/java/io/openmessaging/benchmark/Benchmark.java b/benchmark-framework/src/main/java/io/openmessaging/benchmark/Benchmark.java index 9e6d64ef..df2d41a5 100644 --- a/benchmark-framework/src/main/java/io/openmessaging/benchmark/Benchmark.java +++ b/benchmark-framework/src/main/java/io/openmessaging/benchmark/Benchmark.java @@ -152,9 +152,13 @@ public static void main(String[] args) throws Exception { TestResult result = generator.run(); - String fileName = arguments.output.length() > 0 ? arguments.output - : String.format("%s-%s-%s.json", workloadName, driverConfiguration.name, - dateFormat.format(new Date())); + String fileName; + if (arguments.output != null && arguments.output.length() > 0) { + fileName = arguments.output; + } else { + fileName = String.format("%s-%s-%s.json", workloadName, driverConfiguration.name, + dateFormat.format(new Date())); + } log.info("Writing test result into {}", fileName); writer.writeValue(new File(fileName), result); diff --git a/driver-redpanda/README.md b/driver-redpanda/README.md index 6ec3eba6..3c7b8674 100644 --- a/driver-redpanda/README.md +++ b/driver-redpanda/README.md @@ -1,3 +1,47 @@ -# Apache Kafka benchmarks +# Redpanda Benchmarks + +## Requirements + +- Terraform + +- Ansible + +- Python 3 set as default. + +- The [terraform inventory plugin](https://github.com/adammck/terraform-inventory) + +## Setup + +1. In the top level directory run `mvn clean install`. This will build the benchmark client needed during deployment. + +2. Create an ssh key for the benchmark using the following: `ssh-keygen -f ~/.ssh/redpanda_aws`. Set the password to blank. + +3. In the `driver-redpanda/deploy` directory. Run the following: + + terraform init + terraform apply -auto-approve + +4. To setup the deployed nodes. Run: + + ansible-playbook \ + --user fedora \ + --inventory `which terraform-inventory` \ + deploy.yaml + +## Running the benchmark + +1. SSH to the client machine. + ssh -i ~/.ssh/redpanda_aws fedora@$(terraform output client_ssh_host) + +2. Change into the benchmark directory + cd /opt/benchmark + +3. Run a benchmark using a specific driver and workload, for example: + sudo bin/benchmark -d driver-redpanda/redpanda-ack-all-group-linger-10ms.yaml \ + workloads/blog/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml + +## Cleanup + +Once you are done. Tear down the cluster with the following command: + terraform destroy -force -For instructions on running the OpenMessaging bencmarks for Kafka, see the [official documentation](http://openmessaging.cloud/docs/benchmarks/kafka). diff --git a/driver-redpanda/deploy/deploy.yaml b/driver-redpanda/deploy/deploy.yaml index a658c8bf..8c0cec53 100644 --- a/driver-redpanda/deploy/deploy.yaml +++ b/driver-redpanda/deploy/deploy.yaml @@ -17,56 +17,6 @@ # under the License. # -#- name: Collect profiles -# hosts: kafka, client -# become: true -# tags: -# - profile -# tasks: -# - set_fact: -# time: "{{ ansible_date_time.epoch }}" -# - name: Generate Flame graph -# tags: -# - flame -# shell: | -# /tmp/profiler.sh -d 120 `pidof java` -f /tmp/flame.svg -# - name: Fetch flame graph -# tags: -# - flame -# fetch: -# src: /tmp/flame.svg -# dest: results/{{ group_names[0] }}/{{ time }}/{{ inventory_hostname }}/flame.svg -# flat: yes -# -# # - name: Dump & compress heap -# # tags: -# # - heap -# # shell: | -# # jattach `pidof java` dumpheap /tmp/heap -# # chmod 777 /tmp/heap -# # tar -cvzf /tmp/heap.tar /tmp/heap -# # - name: Fetch heap dump -# # tags: -# # - heap -# # fetch: -# # src: /tmp/heap.tar -# # dest: results/{{ group_names[0] }}/{{ time }}/{{ inventory_hostname }}/heap.tar -# # flat: yes -# -# - name: Heap allocation profile -# tags: -# - heap -# shell: | -# /tmp/profiler.sh -d 60 -e alloc -o svg -f /tmp/heap.svg 1 `pidof java` -# chmod 777 /tmp/heap.svg -# - name: Fetch heap dump -# tags: -# - heap -# fetch: -# src: /tmp/heap.svg -# dest: results/{{ group_names[0] }}/{{ time }}/{{ inventory_hostname }}/heap.svg -# flat: yes - - name: Setup common packages hosts: all connection: ssh @@ -158,31 +108,6 @@ group: root mode: ugo=rwx -#- name: Format and mount disks for Redpanda hosts -# hosts: redpanda -# connection: ssh -# become: true -# tasks: -# - command: > -# tuned-adm profile latency-performance -# - name: Format disks -# filesystem: -# fstype: xfs -# dev: "{{ item }}" -# with_items: -# - "/dev/nvme1n1" -# - "/dev/nvme2n1" -# - name: Mount disks -# mount: -# path: "{{ item.path }}" -# src: "{{ item.src }}" -# fstype: xfs -# opts: defaults,noatime,nodiscard -# state: mounted -# with_items: -# - { path: "/mnt/data-1", src: "/dev/nvme1n1" } -# - { path: "/mnt/data-2", src: "/dev/nvme2n1" } - - name: Store server lists hosts: all connection: ssh @@ -206,69 +131,6 @@ state: present update_cache: yes - - - -#- name: Kafka installation -# hosts: redpanda -# connection: ssh -# become: true -# tasks: -# - file: path=/opt/kafka state=absent -# - file: path=/opt/kafka state=directory -# - set_fact: -# boostrapServers: "{{ groups['kafka'] | map('extract', hostvars, ['private_ip']) | map('regex_replace', '^(.*)$', '\\1:9092') | join(',') }}" -# kafkaVersion: "2.6.0" -# - debug: -# msg: "boostrap servers: {{ boostrapServers }}" -# -# #################### Release #################### -# - name: Download Kafka package -# unarchive: -# src: http://mirrors.ocf.berkeley.edu/apache/kafka/{{ kafkaVersion }}/kafka_2.13-{{ kafkaVersion }}.tgz -# remote_src: yes -# dest: /opt/kafka -# extra_opts: ["--strip-components=1"] -# -# #################### Staging #################### -# # # https://access.redhat.com/articles/5117881 -# # - name: Fix Sectigo Root CA expiration issue -# # shell: | -# # trust dump --filter "pkcs11:id=%ad%bd%98%7a%34%b4%26%f7%fa%c4%26%54%ef%03%bd%e0%24%cb%54%1a;type=cert" > /etc/pki/ca-trust/source/blacklist/addtrust-external-root.p11-kit -# # update-ca-trust -# # - name: Download Kafka package -# # unarchive: -# # src: https://home.apache.org/~rhauch/kafka-2.6.0-rc2/kafka_2.13-2.6.0.tgz -# # remote_src: yes -# # dest: /opt/kafka -# # extra_opts: ["--strip-components=1"] -# -# #################### Custom build #################### -# # - name: Copy Kafka -# # unarchive: -# # src: /Users/anikhil/offsets_patch/core/build/distributions/kafka_2.13-2.7.0-SNAPSHOT.tgz -# # dest: /opt/kafka -# # extra_opts: ["--strip-components=1"] -# -# - set_fact: -# privateIp: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" -# - name: Change locale to en_US.utf-8 -# shell: | -# echo 'LANG=en_US.utf-8 -# LC_ALL=en_US.utf-8' > /etc/environment -# - name: Setup JMX for Prometheus -# copy: -# src: "monitoring/jmx_exporter/jmx_prometheus_javaagent-0.13.0.jar" -# dest: "/opt/kafka/jmx_prometheus_javaagent-0.13.0.jar" -# - name: Configure JMX for Prometheus (Kafka) -# template: -# src: "monitoring/jmx_exporter/metrics.yml" -# dest: "/opt/kafka/metrics.yml" -# - name: Configure JMX for Prometheus (Zookeeper) -# template: -# src: "monitoring/jmx_exporter/zookeeper.yml" -# dest: "/opt/kafka/zookeeper.yml" - - hosts: redpanda tasks: - name: ensure /etc/redpanda exists @@ -471,126 +333,7 @@ basicAuth: false grafana_dashboards_dir: '{{ grafana_dir }}' -## Setup the Prometheus/Grafana monitoring stack -#- name: Prometheus installation -# hosts: prometheus -# connection: ssh -# become: true -# tasks: -# - name: Add Extras Repo -# shell: yum-config-manager --enable rhui-REGION-rhel-server-extras -# - name: Install RPM packages -# yum: pkg={{ item }} state=latest -# with_items: -# - docker -# - set_fact: -# prometheusVersion: "2.19.3" -# - file: path=/opt/prometheus state=absent -# - file: path=/opt/prometheus state=directory -# - name: Download Prometheus Binary Package -# unarchive: -# src: "https://github.com/prometheus/prometheus/releases/download/v{{ prometheusVersion }}/prometheus-{{ prometheusVersion }}.linux-amd64.tar.gz" -# remote_src: yes -# dest: /opt/prometheus -# extra_opts: ["--strip-components=1"] -# - set_fact: -# private_ip: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" +output "client_ssh_host" { + value = "${aws_instance.client.0.public_ip}" +} -#- name: Prometheus setup -# hosts: prometheus -# connection: ssh -# become: true -# tasks: -# - file: -# path: "/opt/prometheus/{{ item }}" -# state: directory -# with_items: -# - data -# - template: -# src: "templates/prometheus.service" -# dest: "/etc/systemd/system/prometheus.service" -# - template: -# src: "templates/kafka-dashboard.service" -# dest: "/etc/systemd/system/kafka-dashboard.service" -# - template: -# src: "templates/prometheus.yml" -# dest: "/opt/prometheus/prometheus.yml" -# - systemd: -# state: restarted -# daemon_reload: yes -# name: "kafka-dashboard" -# -#- name: Install Node exporter on Brokers to collect system metrics -# hosts: kafka -# become: true -# tasks: -# - name: Add user node_exporter -# user: -# name: node_exporter -# shell: /bin/false -# system: true -# create_home: no -# -# - name: Download and extract -# unarchive: -# src: https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz -# dest: /tmp -# remote_src: yes -# -# - name: Copy bin node_exporter to /usr/local/bin -# copy: -# src: /tmp/node_exporter-1.0.1.linux-amd64/node_exporter -# remote_src: yes -# dest: /usr/local/bin/ -# owner: node_exporter -# group: node_exporter -# mode: u+x,g+x,o+x -# -# - name: Create service node_exporter.service -# blockinfile: -# path: /etc/systemd/system/node_exporter.service -# block: | -# [Unit] -# Description=Prometheus Node Exporter -# Wants=network-online.target -# After=network-online.target -# [Service] -# User=node_exporter -# Group=node_exporter -# Type=simple -# ExecStart=/usr/local/bin/node_exporter -# [Install] -# WantedBy=multi-user.target -# create: true -# -# - name: systemctl daemon_reload -# systemd: -# daemon_reload: yes -# -# - name: Start and Enable node_exporter -# service: -# name: node_exporter -# state: started -# enabled: yes -# -# - name: Check whether port 9100 is available -# wait_for: -# port: 9100 -# state: started -# timeout: 5 -# -#- name: Install jattach and async-profiler -# hosts: all -# become: true -# tasks: -# - name: Download and extract async-profiler -# unarchive: -# src: https://github.com/jvm-profiling-tools/async-profiler/releases/download/v1.7.1/async-profiler-1.7.1-linux-x64.tar.gz -# dest: /tmp -# remote_src: yes -# -# - name: Download and install jattach -# get_url: -# url: https://github.com/apangin/jattach/releases/download/v1.5/jattach -# dest: /usr/bin/jattach -# mode: "0755" diff --git a/driver-redpanda/deploy/provision-redpanda-aws.tf b/driver-redpanda/deploy/provision-redpanda-aws.tf index 45e9b80d..ba9de1b0 100644 --- a/driver-redpanda/deploy/provision-redpanda-aws.tf +++ b/driver-redpanda/deploy/provision-redpanda-aws.tf @@ -193,3 +193,8 @@ output "redpanda" { output "prometheus_host" { value = "${aws_instance.prometheus.0.public_ip}" } + +output "client_ssh_host" { + value = "${aws_instance.client.0.public_ip}" +} + diff --git a/driver-redpanda/deploy/terraform.tfvars b/driver-redpanda/deploy/terraform.tfvars index 3807da35..c78116ae 100644 --- a/driver-redpanda/deploy/terraform.tfvars +++ b/driver-redpanda/deploy/terraform.tfvars @@ -5,12 +5,12 @@ profile = "default" instance_types = { "redpanda" = "i3en.2xlarge" - "client" = "c5n.2xlarge" + "client" = "c5n.4xlarge" "prometheus" = "c5.2xlarge" } num_instances = { - "client" = 4 + "client" = 2 "redpanda" = 3 "prometheus" = 1 } diff --git a/driver-redpanda/kafka-0.yaml b/driver-redpanda/redpanda-ack-0.yaml similarity index 100% rename from driver-redpanda/kafka-0.yaml rename to driver-redpanda/redpanda-ack-0.yaml diff --git a/driver-redpanda/kafka-1.yaml b/driver-redpanda/redpanda-ack-1.yaml similarity index 100% rename from driver-redpanda/kafka-1.yaml rename to driver-redpanda/redpanda-ack-1.yaml diff --git a/driver-redpanda/kafka-sync-group-all.yaml b/driver-redpanda/redpanda-ack-all-group-linger-10ms.yaml similarity index 97% rename from driver-redpanda/kafka-sync-group-all.yaml rename to driver-redpanda/redpanda-ack-all-group-linger-10ms.yaml index b3e034e4..f67ec9e8 100644 --- a/driver-redpanda/kafka-sync-group-all.yaml +++ b/driver-redpanda/redpanda-ack-all-group-linger-10ms.yaml @@ -25,8 +25,6 @@ reset: true # Configuration (flush.messages; flush.ms) enabled only for tests that fsync every message topicConfig: | - flush.messages=1 - flush.ms=0 commonConfig: | bootstrap.servers=localhost:9092 request.timeout.ms=120000 diff --git a/driver-redpanda/kafka-sync-group-all-1ms.yaml b/driver-redpanda/redpanda-ack-all-group-linger-1ms.yaml similarity index 97% rename from driver-redpanda/kafka-sync-group-all-1ms.yaml rename to driver-redpanda/redpanda-ack-all-group-linger-1ms.yaml index d3231018..dc29d69f 100644 --- a/driver-redpanda/kafka-sync-group-all-1ms.yaml +++ b/driver-redpanda/redpanda-ack-all-group-linger-1ms.yaml @@ -24,8 +24,6 @@ replicationFactor: 3 reset: true topicConfig: | - flush.messages=1 - flush.ms=0 commonConfig: | bootstrap.servers=localhost:9092 request.timeout.ms=120000 diff --git a/driver-redpanda/kafka-sync-all.yaml b/driver-redpanda/redpanda-ack-all-linger-1ms.yaml similarity index 97% rename from driver-redpanda/kafka-sync-all.yaml rename to driver-redpanda/redpanda-ack-all-linger-1ms.yaml index 87050215..62523fb9 100644 --- a/driver-redpanda/kafka-sync-all.yaml +++ b/driver-redpanda/redpanda-ack-all-linger-1ms.yaml @@ -27,8 +27,6 @@ replicationFactor: 3 reset: true topicConfig: | - flush.messages=1 - flush.ms=0 commonConfig: | bootstrap.servers=localhost:9092 diff --git a/driver-redpanda/kafka-all.yaml b/driver-redpanda/redpanda-ack-all.yaml similarity index 100% rename from driver-redpanda/kafka-all.yaml rename to driver-redpanda/redpanda-ack-all.yaml diff --git a/driver-redpanda/kafka-exactly-once.yaml b/driver-redpanda/redpanda-exactly-once.yaml similarity index 100% rename from driver-redpanda/kafka-exactly-once.yaml rename to driver-redpanda/redpanda-exactly-once.yaml diff --git a/driver-redpanda/kafka-group-all.yaml b/driver-redpanda/redpanda-group-all.yaml similarity index 100% rename from driver-redpanda/kafka-group-all.yaml rename to driver-redpanda/redpanda-group-all.yaml diff --git a/driver-redpanda/kafka-sync-0.yaml b/workloads/blog/1-topic-100-partitions-1kb-4-producers-1000k-rate.yaml similarity index 60% rename from driver-redpanda/kafka-sync-0.yaml rename to workloads/blog/1-topic-100-partitions-1kb-4-producers-1000k-rate.yaml index bd915f89..6a61a35d 100644 --- a/driver-redpanda/kafka-sync-0.yaml +++ b/workloads/blog/1-topic-100-partitions-1kb-4-producers-1000k-rate.yaml @@ -17,27 +17,15 @@ # under the License. # -# Kafka driver profile that is configuring to sync all -# published messages to disk to achieve durability -name: Redpanda -driverClass: io.openmessaging.benchmark.driver.redpanda.RedpandaBenchmarkDriver +name: 100-partitions-1000K-rate-4-producer -# Kafka client-specific configuration -replicationFactor: 3 -reset: true - -topicConfig: | - flush.messages=1 - flush.ms=0 - -commonConfig: | - bootstrap.servers=localhost:9092 - -producerConfig: | - acks=0 - linger.ms=1 - batch.size=131072 - -consumerConfig: | - auto.offset.reset=earliest - enable.auto.commit=false +topics: 1 +partitionsPerTopic: 100 +messageSize: 1024 +payloadFile: "payload/payload-1Kb.data" +subscriptionsPerTopic: 1 +consumerPerSubscription: 4 +producersPerTopic: 4 +producerRate: 1000000 +consumerBacklogSizeGB: 0 +testDurationMinutes: 10 diff --git a/driver-redpanda/kafka-sync-1.yaml b/workloads/blog/1-topic-100-partitions-1kb-4-producers-100k-rate.yaml similarity index 60% rename from driver-redpanda/kafka-sync-1.yaml rename to workloads/blog/1-topic-100-partitions-1kb-4-producers-100k-rate.yaml index e5f39c6d..c7e66698 100644 --- a/driver-redpanda/kafka-sync-1.yaml +++ b/workloads/blog/1-topic-100-partitions-1kb-4-producers-100k-rate.yaml @@ -17,27 +17,15 @@ # under the License. # -# Kafka driver profile that is configuring to sync all -# published messages to disk to achieve durability -name: Redpanda -driverClass: io.openmessaging.benchmark.driver.redpanda.RedpandaBenchmarkDriver +name: 100-partitions-100K-rate-4-producer -# Kafka client-specific configuration -replicationFactor: 3 -reset: true - -topicConfig: | - flush.messages=1 - flush.ms=0 - -commonConfig: | - bootstrap.servers=localhost:9092 - -producerConfig: | - acks=1 - linger.ms=1 - batch.size=131072 - -consumerConfig: | - auto.offset.reset=earliest - enable.auto.commit=false +topics: 1 +partitionsPerTopic: 100 +messageSize: 1024 +payloadFile: "payload/payload-1Kb.data" +subscriptionsPerTopic: 1 +consumerPerSubscription: 4 +producersPerTopic: 4 +producerRate: 100000 +consumerBacklogSizeGB: 0 +testDurationMinutes: 10 diff --git a/workloads/blog/1-topic-100-partitions-1kb-4-producers-10k-rate.yaml b/workloads/blog/1-topic-100-partitions-1kb-4-producers-10k-rate.yaml new file mode 100644 index 00000000..2d0dd57e --- /dev/null +++ b/workloads/blog/1-topic-100-partitions-1kb-4-producers-10k-rate.yaml @@ -0,0 +1,31 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: 100-partitions-10K-rate-4-producer + +topics: 1 +partitionsPerTopic: 100 +messageSize: 1024 +payloadFile: "payload/payload-1Kb.data" +subscriptionsPerTopic: 1 +consumerPerSubscription: 4 +producersPerTopic: 4 +producerRate: 10000 +consumerBacklogSizeGB: 0 +testDurationMinutes: 10 diff --git a/workloads/blog/1-topic-100-partitions-1kb-4-producers-200k-rate.yaml b/workloads/blog/1-topic-100-partitions-1kb-4-producers-200k-rate.yaml new file mode 100644 index 00000000..99f54f16 --- /dev/null +++ b/workloads/blog/1-topic-100-partitions-1kb-4-producers-200k-rate.yaml @@ -0,0 +1,31 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: 100-partitions-200K-rate-4-producer + +topics: 1 +partitionsPerTopic: 100 +messageSize: 1024 +payloadFile: "payload/payload-1Kb.data" +subscriptionsPerTopic: 1 +consumerPerSubscription: 4 +producersPerTopic: 4 +producerRate: 200000 +consumerBacklogSizeGB: 0 +testDurationMinutes: 10 diff --git a/workloads/blog/1-topic-100-partitions-1kb-4-producers-40k-rate.yaml b/workloads/blog/1-topic-100-partitions-1kb-4-producers-40k-rate.yaml new file mode 100644 index 00000000..5ac29359 --- /dev/null +++ b/workloads/blog/1-topic-100-partitions-1kb-4-producers-40k-rate.yaml @@ -0,0 +1,31 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: 100-partitions-40K-rate-4-producer + +topics: 1 +partitionsPerTopic: 100 +messageSize: 1024 +payloadFile: "payload/payload-1Kb.data" +subscriptionsPerTopic: 1 +consumerPerSubscription: 4 +producersPerTopic: 4 +producerRate: 40000 +consumerBacklogSizeGB: 0 +testDurationMinutes: 10 diff --git a/workloads/blog/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml b/workloads/blog/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml new file mode 100644 index 00000000..8e40a479 --- /dev/null +++ b/workloads/blog/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml @@ -0,0 +1,31 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: 100-partitions-500K-rate-4-producer + +topics: 1 +partitionsPerTopic: 100 +messageSize: 1024 +payloadFile: "payload/payload-1Kb.data" +subscriptionsPerTopic: 1 +consumerPerSubscription: 4 +producersPerTopic: 4 +producerRate: 500000 +consumerBacklogSizeGB: 0 +testDurationMinutes: 10 diff --git a/workloads/blog/1-topic-100-partitions-1kb-4-producers-50k-rate.yaml b/workloads/blog/1-topic-100-partitions-1kb-4-producers-50k-rate.yaml new file mode 100644 index 00000000..ed6be664 --- /dev/null +++ b/workloads/blog/1-topic-100-partitions-1kb-4-producers-50k-rate.yaml @@ -0,0 +1,31 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: 100-partitions-50K-rate-4-producer + +topics: 1 +partitionsPerTopic: 100 +messageSize: 1024 +payloadFile: "payload/payload-1Kb.data" +subscriptionsPerTopic: 1 +consumerPerSubscription: 4 +producersPerTopic: 4 +producerRate: 50000 +consumerBacklogSizeGB: 0 +testDurationMinutes: 10 diff --git a/workloads/blog/1-topic-100-partitions-1kb-4-producers-75k-rate.yaml b/workloads/blog/1-topic-100-partitions-1kb-4-producers-75k-rate.yaml new file mode 100644 index 00000000..499fe750 --- /dev/null +++ b/workloads/blog/1-topic-100-partitions-1kb-4-producers-75k-rate.yaml @@ -0,0 +1,31 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: 100-partitions-75K-rate-4-producer + +topics: 1 +partitionsPerTopic: 100 +messageSize: 1024 +payloadFile: "payload/payload-1Kb.data" +subscriptionsPerTopic: 1 +consumerPerSubscription: 4 +producersPerTopic: 4 +producerRate: 75000 +consumerBacklogSizeGB: 0 +testDurationMinutes: 10 diff --git a/workloads/blog/rabbitmq/1-topic-100-partitions-1kb-4-producers-1000k-rate.yaml b/workloads/blog/rabbitmq/1-topic-100-partitions-1kb-4-producers-1000k-rate.yaml new file mode 100644 index 00000000..6a61a35d --- /dev/null +++ b/workloads/blog/rabbitmq/1-topic-100-partitions-1kb-4-producers-1000k-rate.yaml @@ -0,0 +1,31 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: 100-partitions-1000K-rate-4-producer + +topics: 1 +partitionsPerTopic: 100 +messageSize: 1024 +payloadFile: "payload/payload-1Kb.data" +subscriptionsPerTopic: 1 +consumerPerSubscription: 4 +producersPerTopic: 4 +producerRate: 1000000 +consumerBacklogSizeGB: 0 +testDurationMinutes: 10 diff --git a/workloads/blog/rabbitmq/1-topic-100-partitions-1kb-4-producers-100k-rate.yaml b/workloads/blog/rabbitmq/1-topic-100-partitions-1kb-4-producers-100k-rate.yaml new file mode 100644 index 00000000..07396ede --- /dev/null +++ b/workloads/blog/rabbitmq/1-topic-100-partitions-1kb-4-producers-100k-rate.yaml @@ -0,0 +1,31 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: 100-partitions-100K-rate-4-producer + +topics: 1 +partitionsPerTopic: 24 +messageSize: 1024 +payloadFile: "payload/payload-1Kb.data" +subscriptionsPerTopic: 1 +consumerPerSubscription: 24 +producersPerTopic: 24 +producerRate: 100000 +consumerBacklogSizeGB: 0 +testDurationMinutes: 10 diff --git a/workloads/blog/rabbitmq/1-topic-100-partitions-1kb-4-producers-10k-rate.yaml b/workloads/blog/rabbitmq/1-topic-100-partitions-1kb-4-producers-10k-rate.yaml new file mode 100644 index 00000000..3c01c7b1 --- /dev/null +++ b/workloads/blog/rabbitmq/1-topic-100-partitions-1kb-4-producers-10k-rate.yaml @@ -0,0 +1,31 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: 100-partitions-10K-rate-4-producer + +topics: 1 +partitionsPerTopic: 24 +messageSize: 1024 +payloadFile: "payload/payload-1Kb.data" +subscriptionsPerTopic: 1 +consumerPerSubscription: 24 +producersPerTopic: 24 +producerRate: 10000 +consumerBacklogSizeGB: 0 +testDurationMinutes: 10 diff --git a/workloads/blog/rabbitmq/1-topic-100-partitions-1kb-4-producers-200k-rate.yaml b/workloads/blog/rabbitmq/1-topic-100-partitions-1kb-4-producers-200k-rate.yaml new file mode 100644 index 00000000..4c18faa4 --- /dev/null +++ b/workloads/blog/rabbitmq/1-topic-100-partitions-1kb-4-producers-200k-rate.yaml @@ -0,0 +1,31 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: 100-partitions-200K-rate-4-producer + +topics: 1 +partitionsPerTopic: 24 +messageSize: 1024 +payloadFile: "payload/payload-1Kb.data" +subscriptionsPerTopic: 1 +consumerPerSubscription: 24 +producersPerTopic: 24 +producerRate: 200000 +consumerBacklogSizeGB: 0 +testDurationMinutes: 10 diff --git a/workloads/blog/rabbitmq/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml b/workloads/blog/rabbitmq/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml new file mode 100644 index 00000000..958e43b8 --- /dev/null +++ b/workloads/blog/rabbitmq/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml @@ -0,0 +1,31 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: 100-partitions-500K-rate-4-producer + +topics: 1 +partitionsPerTopic: 24 +messageSize: 1024 +payloadFile: "payload/payload-1Kb.data" +subscriptionsPerTopic: 1 +consumerPerSubscription: 24 +producersPerTopic: 24 +producerRate: 500000 +consumerBacklogSizeGB: 0 +testDurationMinutes: 10 diff --git a/workloads/blog/rabbitmq/1-topic-100-partitions-1kb-4-producers-50k-rate.yaml b/workloads/blog/rabbitmq/1-topic-100-partitions-1kb-4-producers-50k-rate.yaml new file mode 100644 index 00000000..f1349304 --- /dev/null +++ b/workloads/blog/rabbitmq/1-topic-100-partitions-1kb-4-producers-50k-rate.yaml @@ -0,0 +1,31 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: 100-partitions-50K-rate-4-producer + +topics: 1 +partitionsPerTopic: 24 +messageSize: 1024 +payloadFile: "payload/payload-1Kb.data" +subscriptionsPerTopic: 1 +consumerPerSubscription: 24 +producersPerTopic: 24 +producerRate: 50000 +consumerBacklogSizeGB: 0 +testDurationMinutes: 10 From 06b1eed27adac0bef580d3aa7282a4ce657c4604 Mon Sep 17 00:00:00 2001 From: Roko Kruze Date: Tue, 13 Oct 2020 16:19:21 -0700 Subject: [PATCH 09/47] Fixed formatting in the readme. --- driver-redpanda/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/driver-redpanda/README.md b/driver-redpanda/README.md index 3c7b8674..c2731f98 100644 --- a/driver-redpanda/README.md +++ b/driver-redpanda/README.md @@ -31,17 +31,21 @@ ## Running the benchmark 1. SSH to the client machine. + ssh -i ~/.ssh/redpanda_aws fedora@$(terraform output client_ssh_host) 2. Change into the benchmark directory + cd /opt/benchmark 3. Run a benchmark using a specific driver and workload, for example: + sudo bin/benchmark -d driver-redpanda/redpanda-ack-all-group-linger-10ms.yaml \ workloads/blog/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml ## Cleanup Once you are done. Tear down the cluster with the following command: + terraform destroy -force From 1aa2dcc52f69aeb8ac95366f01649695626b9fca Mon Sep 17 00:00:00 2001 From: Roko Kruze Date: Wed, 14 Oct 2020 13:20:31 -0700 Subject: [PATCH 10/47] Fixed an issue with the ansible script. --- driver-redpanda/deploy/deploy.yaml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/driver-redpanda/deploy/deploy.yaml b/driver-redpanda/deploy/deploy.yaml index 8c0cec53..07e7cea0 100644 --- a/driver-redpanda/deploy/deploy.yaml +++ b/driver-redpanda/deploy/deploy.yaml @@ -332,8 +332,3 @@ url: 'http://localhost:9090' basicAuth: false grafana_dashboards_dir: '{{ grafana_dir }}' - -output "client_ssh_host" { - value = "${aws_instance.client.0.public_ip}" -} - From 066871df24e5ecb5a8dc9664beb0446f129c1e87 Mon Sep 17 00:00:00 2001 From: Roko Kruze Date: Wed, 14 Oct 2020 13:31:37 -0700 Subject: [PATCH 11/47] Fixes for single disk instances. --- driver-redpanda/deploy/deploy.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/driver-redpanda/deploy/deploy.yaml b/driver-redpanda/deploy/deploy.yaml index 07e7cea0..5a056fde 100644 --- a/driver-redpanda/deploy/deploy.yaml +++ b/driver-redpanda/deploy/deploy.yaml @@ -80,11 +80,11 @@ - name: create xfs file system filesystem: fstype: xfs - dev: /dev/nvme0n1 + dev: '{{ nvme_devices_for_raid[0] }}' - name: mount nvme device mount: path: /mnt/vectorized - src: /dev/nvme0n1 + src: '{{ nvme_devices_for_raid[0] }}' fstype: xfs state: mounted when: nvme_devices_for_raid|length == 1 From d40294c0eddde39f8c380fa81cbdc5a0d6b2f233 Mon Sep 17 00:00:00 2001 From: Roko Kruze Date: Thu, 22 Oct 2020 17:37:58 -0700 Subject: [PATCH 12/47] Updated Kafka to flush for every message --- driver-kafka/deploy/templates/server.properties | 2 ++ 1 file changed, 2 insertions(+) diff --git a/driver-kafka/deploy/templates/server.properties b/driver-kafka/deploy/templates/server.properties index 7df1891a..cb8d3271 100644 --- a/driver-kafka/deploy/templates/server.properties +++ b/driver-kafka/deploy/templates/server.properties @@ -33,3 +33,5 @@ message.max.bytes=10485760 replica.fetch.max.bytes=10485760 num.network.threads=8 + +log.flush.interval.messages=1 From 0b189c0cfbcf6a720b58e1a48914ba94c49b76d2 Mon Sep 17 00:00:00 2001 From: Roko Kruze Date: Thu, 22 Oct 2020 17:38:28 -0700 Subject: [PATCH 13/47] Added Grafana and reduced the number of clients --- driver-kafka/deploy/deploy.yaml | 260 +++++++++++++-------- driver-kafka/deploy/provision-kafka-aws.tf | 12 +- driver-kafka/deploy/terraform.tfvars | 2 +- 3 files changed, 165 insertions(+), 109 deletions(-) diff --git a/driver-kafka/deploy/deploy.yaml b/driver-kafka/deploy/deploy.yaml index 7b2181f9..236cd650 100644 --- a/driver-kafka/deploy/deploy.yaml +++ b/driver-kafka/deploy/deploy.yaml @@ -317,113 +317,169 @@ msg: "Benchmark clients {{ item }}" with_items: "{{ groups['client'] }}" -# Setup the Prometheus/Grafana monitoring stack -- name: Prometheus installation - hosts: prometheus - connection: ssh - become: true - tasks: - - name: Add Extras Repo - shell: yum-config-manager --enable rhui-REGION-rhel-server-extras - - name: Install RPM packages - yum: pkg={{ item }} state=latest - with_items: - - docker - - set_fact: - prometheusVersion: "2.19.3" - - file: path=/opt/prometheus state=absent - - file: path=/opt/prometheus state=directory - - name: Download Prometheus Binary Package - unarchive: - src: "https://github.com/prometheus/prometheus/releases/download/v{{ prometheusVersion }}/prometheus-{{ prometheusVersion }}.linux-amd64.tar.gz" - remote_src: yes - dest: /opt/prometheus - extra_opts: ["--strip-components=1"] - - set_fact: - private_ip: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" - -- name: Prometheus setup - hosts: prometheus - connection: ssh - become: true - tasks: - - file: - path: "/opt/prometheus/{{ item }}" - state: directory - with_items: - - data - - template: - src: "templates/prometheus.service" - dest: "/etc/systemd/system/prometheus.service" - - template: - src: "templates/kafka-dashboard.service" - dest: "/etc/systemd/system/kafka-dashboard.service" - - template: - src: "templates/prometheus.yml" - dest: "/opt/prometheus/prometheus.yml" - - systemd: - state: restarted - daemon_reload: yes - name: "kafka-dashboard" - -- name: Install Node exporter on Brokers to collect system metrics +# Install the monitoring stack +- name: Install Node Exporter hosts: kafka - become: true - tasks: - - name: Add user node_exporter - user: - name: node_exporter - shell: /bin/false - system: true - create_home: no + roles: + - cloudalchemy.node-exporter - - name: Download and extract - unarchive: - src: https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz - dest: /tmp - remote_src: yes +- hosts: prometheus + roles: + - cloudalchemy.prometheus + vars: + prometheus_scrape_configs: + - job_name: "broker" + static_configs: + - targets: "{{ groups['kafka'] | map('extract', hostvars, ['ansible_default_ipv4','address']) | map('regex_replace', '^(.*)$','\\1:8080') | list }}" + - job_name: "node" + static_configs: + - targets: "{{ groups['kafka'] | map('extract', hostvars, ['ansible_default_ipv4','address']) | map('regex_replace', '^(.*)$','\\1:9100') | list }}" + - job_name: "client - jmx" + static_configs: + - targets: "{{ groups['client'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^(.*)$', '\\1:9090') | list }}" + - job_name: "client" + static_configs: + - targets: "{{ groups['client'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^(.*)$', '\\1:8081') | list }}" - - name: Copy bin node_exporter to /usr/local/bin - copy: - src: /tmp/node_exporter-1.0.1.linux-amd64/node_exporter - remote_src: yes - dest: /usr/local/bin/ - owner: node_exporter - group: node_exporter - mode: u+x,g+x,o+x +#- name: jmx export setup +# hosts: prometheus +# connection: ssh +# become: true +# tasks: +# - template: +# src: "templates/kafka-dashboard.service" +# dest: "/etc/systemd/system/kafka-dashboard.service" +# - systemd: +# state: restarted +# daemon_reload: yes +# name: "kafka-dashboard" - - name: Create service node_exporter.service - blockinfile: - path: /etc/systemd/system/node_exporter.service - block: | - [Unit] - Description=Prometheus Node Exporter - Wants=network-online.target - After=network-online.target - [Service] - User=node_exporter - Group=node_exporter - Type=simple - ExecStart=/usr/local/bin/node_exporter - [Install] - WantedBy=multi-user.target - create: true +- hosts: prometheus + roles: + - cloudalchemy.grafana + vars: + grafana_version: 6.7.3 + grafana_security: + admin_user: admin + admin_password: enter_your_secure_password + grafana_datasources: + - name: prometheus + type: prometheus + access: proxy + url: 'http://localhost:9090' + basicAuth: false + grafana_dashboards: + - dashboard_id: 1860 + revision_id: 21 + datasource: prometheus - - name: systemctl daemon_reload - systemd: - daemon_reload: yes - - - name: Start and Enable node_exporter - service: - name: node_exporter - state: started - enabled: yes - - - name: Check whether port 9100 is available - wait_for: - port: 9100 - state: started - timeout: 5 +# Setup the Prometheus/Grafana monitoring stack +#- name: Prometheus installation +# hosts: prometheus +# connection: ssh +# become: true +# tasks: +# - name: Add Extras Repo +# shell: yum-config-manager --enable rhui-REGION-rhel-server-extras +# - name: Install RPM packages +# yum: pkg={{ item }} state=latest +# with_items: +# - docker +# - set_fact: +# prometheusVersion: "2.19.3" +# - file: path=/opt/prometheus state=absent +# - file: path=/opt/prometheus state=directory +# - name: Download Prometheus Binary Package +# unarchive: +# src: "https://github.com/prometheus/prometheus/releases/download/v{{ prometheusVersion }}/prometheus-{{ prometheusVersion }}.linux-amd64.tar.gz" +# remote_src: yes +# dest: /opt/prometheus +# extra_opts: ["--strip-components=1"] +# - set_fact: +# private_ip: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" +# +#- name: Prometheus setup +# hosts: prometheus +# connection: ssh +# become: true +# tasks: +# - file: +# path: "/opt/prometheus/{{ item }}" +# state: directory +# with_items: +# - data +# - template: +# src: "templates/prometheus.service" +# dest: "/etc/systemd/system/prometheus.service" +# - template: +# src: "templates/kafka-dashboard.service" +# dest: "/etc/systemd/system/kafka-dashboard.service" +# - template: +# src: "templates/prometheus.yml" +# dest: "/opt/prometheus/prometheus.yml" +# - systemd: +# state: restarted +# daemon_reload: yes +# name: "kafka-dashboard" +# +#- name: Install Node exporter on Brokers to collect system metrics +# hosts: kafka +# become: true +# tasks: +# - name: Add user node_exporter +# user: +# name: node_exporter +# shell: /bin/false +# system: true +# create_home: no +# +# - name: Download and extract +# unarchive: +# src: https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz +# dest: /tmp +# remote_src: yes +# +# - name: Copy bin node_exporter to /usr/local/bin +# copy: +# src: /tmp/node_exporter-1.0.1.linux-amd64/node_exporter +# remote_src: yes +# dest: /usr/local/bin/ +# owner: node_exporter +# group: node_exporter +# mode: u+x,g+x,o+x +# +# - name: Create service node_exporter.service +# blockinfile: +# path: /etc/systemd/system/node_exporter.service +# block: | +# [Unit] +# Description=Prometheus Node Exporter +# Wants=network-online.target +# After=network-online.target +# [Service] +# User=node_exporter +# Group=node_exporter +# Type=simple +# ExecStart=/usr/local/bin/node_exporter +# [Install] +# WantedBy=multi-user.target +# create: true +# +# - name: systemctl daemon_reload +# systemd: +# daemon_reload: yes +# +# - name: Start and Enable node_exporter +# service: +# name: node_exporter +# state: started +# enabled: yes +# +# - name: Check whether port 9100 is available +# wait_for: +# port: 9100 +# state: started +# timeout: 5 - name: Install jattach and async-profiler hosts: all diff --git a/driver-kafka/deploy/provision-kafka-aws.tf b/driver-kafka/deploy/provision-kafka-aws.tf index 630d72a3..8675b545 100644 --- a/driver-kafka/deploy/provision-kafka-aws.tf +++ b/driver-kafka/deploy/provision-kafka-aws.tf @@ -110,12 +110,12 @@ resource "aws_security_group" "benchmark_security_group" { # protocol = "tcp" # cidr_blocks = ["0.0.0.0/0"] # } - # ingress { - # from_port = 3000 - # to_port = 3000 - # protocol = "tcp" - # cidr_blocks = ["0.0.0.0/0"] - # } + ingress { + from_port = 3000 + to_port = 3000 + protocol = "tcp" + cidr_blocks = ["0.0.0.0/0"] + } # outbound internet access egress { diff --git a/driver-kafka/deploy/terraform.tfvars b/driver-kafka/deploy/terraform.tfvars index 855111a6..d3f88618 100644 --- a/driver-kafka/deploy/terraform.tfvars +++ b/driver-kafka/deploy/terraform.tfvars @@ -11,7 +11,7 @@ instance_types = { } num_instances = { - "client" = 4 + "client" = 1 "kafka" = 3 "zookeeper" = 3 "prometheus" = 1 From c64b858c273512ad0182a1ce28ae4163d34ec15b Mon Sep 17 00:00:00 2001 From: Roko Kruze Date: Thu, 22 Oct 2020 17:38:55 -0700 Subject: [PATCH 14/47] Updated to work with Debian/Ubuntu along with Fedora/Redhat --- driver-redpanda/deploy/deploy.yaml | 36 ++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/driver-redpanda/deploy/deploy.yaml b/driver-redpanda/deploy/deploy.yaml index 5a056fde..a63007e0 100644 --- a/driver-redpanda/deploy/deploy.yaml +++ b/driver-redpanda/deploy/deploy.yaml @@ -17,7 +17,7 @@ # under the License. # -- name: Setup common packages +- name: Setup common packages on Redhat based systems hosts: all connection: ssh become: true @@ -27,20 +27,32 @@ name: - sysstat state: absent - - name: Install RPM packages + - name: Install packages package: name: - mdadm - xfsprogs - iotop - wget - - java-11 - sysstat - vim - chrony - git - gcc state: present + update_cache: true + - name: Install Java Redhat + when: ansible_os_family == 'Redhat' + package: + name: + - java-11 + state: present + - name: Install Java on Debian + when: ansible_os_family == 'Debian' + package: + name: + - openjdk-11-jdk + state: present - name: set facts about drives hosts: redpanda @@ -119,17 +131,29 @@ - name: install redpanda hosts: redpanda tasks: - - name: add the redpanda repo + - name: add the redpanda yum repo + when: ansible_os_family == 'RedHat' shell: | curl -s https://ceba06f0585fdd548c3106334751dcd75abf0d043320fab5:@packagecloud.io/install/repositories/vectorizedio/v/script.rpm.sh | sudo bash args: warn: no + - name: add the repanda apt repo + when: ansible_os_family == 'Debian' + shell: | + curl -s https://ceba06f0585fdd548c3106334751dcd75abf0d043320fab5:@packagecloud.io/install/repositories/vectorizedio/v/script.deb.sh | sudo bash + args: + warn: no - name: install redpanda package: name: - redpanda state: present update_cache: yes + - name: set data dir file perms + file: + path: /var/lib/redpanda/data + owner: redpanda + group: redpanda - hosts: redpanda tasks: @@ -332,3 +356,7 @@ url: 'http://localhost:9090' basicAuth: false grafana_dashboards_dir: '{{ grafana_dir }}' + grafana_dashboards: + - dashboard_id: 1860 + revision_id: 21 + datasource: prometheus From 8ececba5bd9f1e8323329f71d8777f2005fbe874 Mon Sep 17 00:00:00 2001 From: Roko Kruze Date: Thu, 22 Oct 2020 17:39:23 -0700 Subject: [PATCH 15/47] Updated to run on Redhat 8, with client set to 1. --- driver-redpanda/deploy/terraform.tfvars | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/driver-redpanda/deploy/terraform.tfvars b/driver-redpanda/deploy/terraform.tfvars index c78116ae..4328c3e8 100644 --- a/driver-redpanda/deploy/terraform.tfvars +++ b/driver-redpanda/deploy/terraform.tfvars @@ -1,6 +1,6 @@ public_key_path = "~/.ssh/redpanda_aws.pub" region = "us-west-2" -ami = "ami-020405ee5d5747724" +ami = "ami-02f147dfb8be58a10" profile = "default" instance_types = { @@ -10,7 +10,7 @@ instance_types = { } num_instances = { - "client" = 2 + "client" = 1 "redpanda" = 3 "prometheus" = 1 } From 4aeda295d8ec4edcfea2e492f534f13a7e21ff03 Mon Sep 17 00:00:00 2001 From: Michal Maslanka Date: Thu, 14 Jan 2021 11:57:05 +0100 Subject: [PATCH 16/47] benchmark-framework: using nanoseconds resolution rate limiter Ported over Google's guava rate limiter and modified it to use nano seconds resolution timer. This allow us to run workloads with more than one million messages per second. Signed-off-by: Michal Maslanka --- .../benchmark/utils/RateLimiter.java | 388 +++++++++++++++++ .../benchmark/utils/SmoothRateLimiter.java | 397 ++++++++++++++++++ .../benchmark/worker/LocalWorker.java | 2 +- 3 files changed, 786 insertions(+), 1 deletion(-) create mode 100644 benchmark-framework/src/main/java/io/openmessaging/benchmark/utils/RateLimiter.java create mode 100644 benchmark-framework/src/main/java/io/openmessaging/benchmark/utils/SmoothRateLimiter.java diff --git a/benchmark-framework/src/main/java/io/openmessaging/benchmark/utils/RateLimiter.java b/benchmark-framework/src/main/java/io/openmessaging/benchmark/utils/RateLimiter.java new file mode 100644 index 00000000..10f27eac --- /dev/null +++ b/benchmark-framework/src/main/java/io/openmessaging/benchmark/utils/RateLimiter.java @@ -0,0 +1,388 @@ +package io.openmessaging.benchmark.utils; +import static com.google.common.base.Preconditions.checkArgument; +import static com.google.common.base.Preconditions.checkNotNull; +import static com.google.common.util.concurrent.Uninterruptibles.sleepUninterruptibly; +import static java.lang.Math.max; +import static java.util.concurrent.TimeUnit.NANOSECONDS; +import static java.util.concurrent.TimeUnit.SECONDS; + +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Stopwatch; +import com.google.errorprone.annotations.CanIgnoreReturnValue; +import io.openmessaging.benchmark.utils.SmoothRateLimiter.SmoothBursty; +import io.openmessaging.benchmark.utils.SmoothRateLimiter.SmoothWarmingUp; +import java.util.Locale; +import java.util.concurrent.TimeUnit; +import org.checkerframework.checker.nullness.qual.Nullable; + +public abstract class RateLimiter { + /** + * Creates a {@code RateLimiter} with the specified stable throughput, given + * as "permits per second" (commonly referred to as QPS, queries per + * second). + * + *

The returned {@code RateLimiter} ensures that on average no more than + * {@code permitsPerSecond} are issued during any given second, with sustained + * requests being smoothly spread over each second. When the incoming request + * rate exceeds {@code permitsPerSecond} the rate limiter will release one + * permit every {@code (1.0 / permitsPerSecond)} seconds. When the rate + * limiter is unused, bursts of up to {@code permitsPerSecond} permits will be + * allowed, with subsequent requests being smoothly limited at the stable rate + * of {@code permitsPerSecond}. + * + * @param permitsPerSecond the rate of the returned {@code RateLimiter}, + * measured in how many permits become available per second + * @throws IllegalArgumentException if {@code permitsPerSecond} is negative or + * zero + */ + // TODO(user): "This is equivalent to + // {@code createWithCapacity(permitsPerSecond, 1, TimeUnit.SECONDS)}". + public static RateLimiter create(double permitsPerSecond) { + /* + * The default RateLimiter configuration can save the unused permits of up + * to one second. This is to avoid unnecessary stalls in situations like + * this: A RateLimiter of 1qps, and 4 threads, all calling acquire() at + * these moments: + * + * T0 at 0 seconds + * T1 at 1.05 seconds + * T2 at 2 seconds + * T3 at 3 seconds + * + * Due to the slight delay of T1, T2 would have to sleep till 2.05 seconds, + * and T3 would also have to sleep till 3.05 seconds. + */ + return create(permitsPerSecond, SleepingStopwatch.createFromSystemTimer()); + } + + static RateLimiter create(double permitsPerSecond, + SleepingStopwatch stopwatch) { + RateLimiter rateLimiter = + new SmoothBursty(stopwatch, 1.0 /* maxBurstSeconds */); + rateLimiter.setRate(permitsPerSecond); + return rateLimiter; + } + + /** + * Creates a {@code RateLimiter} with the specified stable throughput, given + * as "permits per second" (commonly referred to as QPS, queries per + * second), and a warmup period, during which the {@code RateLimiter} + * smoothly ramps up its rate, until it reaches its maximum rate at the end of + * the period (as long as there are enough requests to saturate it). + * Similarly, if the {@code RateLimiter} is left unused for a duration + * of {@code warmupPeriod}, it will gradually return to its "cold" state, i.e. + * it will go through the same warming up process as when it was first + * created. + * + *

The returned {@code RateLimiter} is intended for cases where the + * resource that actually fulfills the requests (e.g., a remote server) needs + * "warmup" time, rather than being immediately accessed at the stable + * (maximum) rate. + * + *

The returned {@code RateLimiter} starts in a "cold" state (i.e. the + * warmup period will follow), and if it is left unused for long enough, it + * will return to that state. + * + * @param permitsPerSecond the rate of the returned {@code RateLimiter}, + * measured in how many permits become available per second + * @param warmupPeriod the duration of the period where the {@code + * RateLimiter} ramps up its rate, before reaching its stable (maximum) + * rate + * @param unit the time unit of the warmupPeriod argument + * @throws IllegalArgumentException if {@code permitsPerSecond} is negative or + * zero or {@code warmupPeriod} is negative + */ + @SuppressWarnings("GoodTime") // should accept a java.time.Duration + public static RateLimiter create(double permitsPerSecond, long warmupPeriod, + TimeUnit unit) { + checkArgument(warmupPeriod >= 0, "warmupPeriod must not be negative: %s", + warmupPeriod); + return create(permitsPerSecond, warmupPeriod, unit, 3.0, + SleepingStopwatch.createFromSystemTimer()); + } + + @VisibleForTesting + static RateLimiter create(double permitsPerSecond, long warmupPeriod, + TimeUnit unit, double coldFactor, + SleepingStopwatch stopwatch) { + RateLimiter rateLimiter = + new SmoothWarmingUp(stopwatch, warmupPeriod, unit, coldFactor); + rateLimiter.setRate(permitsPerSecond); + return rateLimiter; + } + + /** + * The underlying timer; used both to measure elapsed time and sleep as + * necessary. A separate object to facilitate testing. + */ + private final SleepingStopwatch stopwatch; + + // Can't be initialized in the constructor because mocks don't call the + // constructor. + private volatile @Nullable Object mutexDoNotUseDirectly; + + private Object mutex() { + Object mutex = mutexDoNotUseDirectly; + if (mutex == null) { + synchronized (this) { + mutex = mutexDoNotUseDirectly; + if (mutex == null) { + mutexDoNotUseDirectly = mutex = new Object(); + } + } + } + return mutex; + } + + RateLimiter(SleepingStopwatch stopwatch) { + this.stopwatch = checkNotNull(stopwatch); + } + + /** + * Updates the stable rate of this {@code RateLimiter}, that is, the {@code + * permitsPerSecond} argument provided in the factory method that constructed + * the {@code RateLimiter}. Currently throttled threads will not be + * awakened as a result of this invocation, thus they do not observe the new + * rate; only subsequent requests will. + * + *

Note though that, since each request repays (by waiting, if necessary) + * the cost of the previous request, this means that the very next + * request after an invocation to {@code setRate} will not be affected by the + * new rate; it will pay the cost of the previous request, which is in terms + * of the previous rate. + * + *

The behavior of the {@code RateLimiter} is not modified in any other + * way, e.g. if the {@code RateLimiter} was configured with a warmup period of + * 20 seconds, it still has a warmup period of 20 seconds after this method + * invocation. + * + * @param permitsPerSecond the new stable rate of this {@code RateLimiter} + * @throws IllegalArgumentException if {@code permitsPerSecond} is negative or + * zero + */ + public final void setRate(double permitsPerSecond) { + checkArgument(permitsPerSecond > 0.0 && !Double.isNaN(permitsPerSecond), + "rate must be positive"); + synchronized (mutex()) { + doSetRate(permitsPerSecond, stopwatch.readNanos()); + } + } + + abstract void doSetRate(double permitsPerSecond, long nowNanos); + + /** + * Returns the stable rate (as {@code permits per seconds}) with which this + * {@code RateLimiter} is configured with. The initial value of this is the + * same as the {@code permitsPerSecond} argument passed in the factory method + * that produced this {@code RateLimiter}, and it is only updated after + * invocations to {@linkplain #setRate}. + */ + public final double getRate() { + synchronized (mutex()) { return doGetRate(); } + } + + abstract double doGetRate(); + + /** + * Acquires a single permit from this {@code RateLimiter}, blocking until the + * request can be granted. Tells the amount of time slept, if any. + * + *

This method is equivalent to {@code acquire(1)}. + * + * @return time spent sleeping to enforce rate, in seconds; 0.0 if not + * rate-limited + * @since 16.0 (present in 13.0 with {@code void} return type}) + */ + @CanIgnoreReturnValue + public double acquire() { + return acquire(1); + } + + /** + * Acquires the given number of permits from this {@code RateLimiter}, + * blocking until the request can be granted. Tells the amount of time slept, + * if any. + * + * @param permits the number of permits to acquire + * @return time spent sleeping to enforce rate, in seconds; 0.0 if not + * rate-limited + * @throws IllegalArgumentException if the requested number of permits is + * negative or zero + * @since 16.0 (present in 13.0 with {@code void} return type}) + */ + @CanIgnoreReturnValue + public double acquire(int permits) { + long nanosToWait = reserve(permits); + stopwatch.sleepNanosUninterruptibly(nanosToWait); + return 1.0 * nanosToWait / SECONDS.toNanos(1L); + } + + /** + * Reserves the given number of permits from this {@code RateLimiter} for + * future use, returning the number of NANOSECONDS until the reservation can + * be consumed. + * + * @return time in NANOSECONDS to wait until the resource can be acquired, + * never negative + */ + final long reserve(int permits) { + checkPermits(permits); + synchronized (mutex()) { + return reserveAndGetWaitLength(permits, stopwatch.readNanos()); + } + } + + /** + * Acquires a permit from this {@code RateLimiter} if it can be obtained + * without exceeding the specified {@code timeout}, or returns {@code false} + * immediately (without waiting) if the permit would not have been granted + * before the timeout expired. + * + *

This method is equivalent to {@code tryAcquire(1, timeout, unit)}. + * + * @param timeout the maximum time to wait for the permit. Negative values are + * treated as zero. + * @param unit the time unit of the timeout argument + * @return {@code true} if the permit was acquired, {@code false} otherwise + * @throws IllegalArgumentException if the requested number of permits is + * negative or zero + */ + @SuppressWarnings("GoodTime") // should accept a java.time.Duration + public boolean tryAcquire(long timeout, TimeUnit unit) { + return tryAcquire(1, timeout, unit); + } + + /** + * Acquires permits from this {@link RateLimiter} if it can be acquired + * immediately without delay. + * + *

This method is equivalent to {@code tryAcquire(permits, 0, anyUnit)}. + * + * @param permits the number of permits to acquire + * @return {@code true} if the permits were acquired, {@code false} otherwise + * @throws IllegalArgumentException if the requested number of permits is + * negative or zero + * @since 14.0 + */ + public boolean tryAcquire(int permits) { + return tryAcquire(permits, 0, NANOSECONDS); + } + + /** + * Acquires a permit from this {@link RateLimiter} if it can be acquired + * immediately without delay. + * + *

This method is equivalent to {@code tryAcquire(1)}. + * + * @return {@code true} if the permit was acquired, {@code false} otherwise + * @since 14.0 + */ + public boolean tryAcquire() { return tryAcquire(1, 0, NANOSECONDS); } + + /** + * Acquires the given number of permits from this {@code RateLimiter} if it + * can be obtained without exceeding the specified {@code timeout}, or returns + * {@code false} immediately (without waiting) if the permits would not have + * been granted before the timeout expired. + * + * @param permits the number of permits to acquire + * @param timeout the maximum time to wait for the permits. Negative values + * are treated as zero. + * @param unit the time unit of the timeout argument + * @return {@code true} if the permits were acquired, {@code false} otherwise + * @throws IllegalArgumentException if the requested number of permits is + * negative or zero + */ + @SuppressWarnings("GoodTime") // should accept a java.time.Duration + public boolean tryAcquire(int permits, long timeout, TimeUnit unit) { + long timeoutNanos = max(unit.toNanos(timeout), 0); + checkPermits(permits); + long nanosToWait; + synchronized (mutex()) { + long nowNanos = stopwatch.readNanos(); + if (!canAcquire(nowNanos, timeoutNanos)) { + return false; + } else { + nanosToWait = reserveAndGetWaitLength(permits, nowNanos); + } + } + stopwatch.sleepNanosUninterruptibly(nanosToWait); + return true; + } + + private boolean canAcquire(long nowNanos, long timeoutNanos) { + return queryEarliestAvailable(nowNanos) - timeoutNanos <= nowNanos; + } + + /** + * Reserves next ticket and returns the wait time that the caller must wait + * for. + * + * @return the required wait time, never negative + */ + final long reserveAndGetWaitLength(int permits, long nowNanos) { + long momentAvailable = reserveEarliestAvailable(permits, nowNanos); + return max(momentAvailable - nowNanos, 0); + } + + /** + * Returns the earliest time that permits are available (with one caveat). + * + * @return the time that permits are available, or, if permits are available + * immediately, an arbitrary past or present time + */ + abstract long queryEarliestAvailable(long nowNanos); + + /** + * Reserves the requested number of permits and returns the time that those + * permits can be used (with one caveat). + * + * @return the time that the permits may be used, or, if the permits may be + * used immediately, an arbitrary past or present time + */ + abstract long reserveEarliestAvailable(int permits, long nowNanos); + + @Override + public String toString() { + return String.format(Locale.ROOT, "RateLimiter[stableRate=%3.1fqps]", + getRate()); + } + + abstract static class SleepingStopwatch { + /** Constructor for use by subclasses. */ + protected SleepingStopwatch() {} + + /* + * We always hold the mutex when calling this. TODO(cpovirk): Is that + * important? Perhaps we need to guarantee that each call to + * reserveEarliestAvailable, etc. sees a value >= the previous? Also, is it + * OK that we don't hold the mutex when sleeping? + */ + protected abstract long readNanos(); + + protected abstract void sleepNanosUninterruptibly(long nanos); + + public static SleepingStopwatch createFromSystemTimer() { + return new SleepingStopwatch() { + final Stopwatch stopwatch = Stopwatch.createStarted(); + + @Override + protected long readNanos() { + return stopwatch.elapsed(NANOSECONDS); + } + + @Override + protected void sleepNanosUninterruptibly(long nanos) { + if (nanos > 0) { + sleepUninterruptibly(nanos, NANOSECONDS); + } + } + }; + } + } + + private static void checkPermits(int permits) { + checkArgument(permits > 0, "Requested permits (%s) must be positive", + permits); + } +} diff --git a/benchmark-framework/src/main/java/io/openmessaging/benchmark/utils/SmoothRateLimiter.java b/benchmark-framework/src/main/java/io/openmessaging/benchmark/utils/SmoothRateLimiter.java new file mode 100644 index 00000000..6ce2453c --- /dev/null +++ b/benchmark-framework/src/main/java/io/openmessaging/benchmark/utils/SmoothRateLimiter.java @@ -0,0 +1,397 @@ +/* + * Copyright (C) 2012 The Guava Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + */ + +package io.openmessaging.benchmark.utils; + +import static java.lang.Math.min; +import static java.util.concurrent.TimeUnit.SECONDS; + +import com.google.common.annotations.GwtIncompatible; +import com.google.common.math.LongMath; +import java.util.concurrent.TimeUnit; + +@GwtIncompatible +abstract class SmoothRateLimiter extends RateLimiter { + /* + * How is the RateLimiter designed, and why? + * + * The primary feature of a RateLimiter is its "stable rate", the maximum rate that is should + * allow at normal conditions. This is enforced by "throttling" incoming requests as needed, i.e. + * compute, for an incoming request, the appropriate throttle time, and make the calling thread + * wait as much. + * + * The simplest way to maintain a rate of QPS is to keep the timestamp of the last granted + * request, and ensure that (1/QPS) seconds have elapsed since then. For example, for a rate of + * QPS=5 (5 tokens per second), if we ensure that a request isn't granted earlier than 200ms after + * the last one, then we achieve the intended rate. If a request comes and the last request was + * granted only 100ms ago, then we wait for another 100ms. At this rate, serving 15 fresh permits + * (i.e. for an acquire(15) request) naturally takes 3 seconds. + * + * It is important to realize that such a RateLimiter has a very superficial memory of the past: + * it only remembers the last request. What if the RateLimiter was unused for a long period of + * time, then a request arrived and was immediately granted? This RateLimiter would immediately + * forget about that past underutilization. This may result in either underutilization or + * overflow, depending on the real world consequences of not using the expected rate. + * + * Past underutilization could mean that excess resources are available. Then, the RateLimiter + * should speed up for a while, to take advantage of these resources. This is important when the + * rate is applied to networking (limiting bandwidth), where past underutilization typically + * translates to "almost empty buffers", which can be filled immediately. + * + * On the other hand, past underutilization could mean that "the server responsible for handling + * the request has become less ready for future requests", i.e. its caches become stale, and + * requests become more likely to trigger expensive operations (a more extreme case of this + * example is when a server has just booted, and it is mostly busy with getting itself up to + * speed). + * + * To deal with such scenarios, we add an extra dimension, that of "past underutilization", + * modeled by "storedPermits" variable. This variable is zero when there is no underutilization, + * and it can grow up to maxStoredPermits, for sufficiently large underutilization. So, the + * requested permits, by an invocation acquire(permits), are served from: + * + * - stored permits (if available) + * + * - fresh permits (for any remaining permits) + * + * How this works is best explained with an example: + * + * For a RateLimiter that produces 1 token per second, every second that goes by with the + * RateLimiter being unused, we increase storedPermits by 1. Say we leave the RateLimiter unused + * for 10 seconds (i.e., we expected a request at time X, but we are at time X + 10 seconds before + * a request actually arrives; this is also related to the point made in the last paragraph), thus + * storedPermits becomes 10.0 (assuming maxStoredPermits >= 10.0). At that point, a request of + * acquire(3) arrives. We serve this request out of storedPermits, and reduce that to 7.0 (how + * this is translated to throttling time is discussed later). Immediately after, assume that an + * acquire(10) request arriving. We serve the request partly from storedPermits, using all the + * remaining 7.0 permits, and the remaining 3.0, we serve them by fresh permits produced by the + * rate limiter. + * + * We already know how much time it takes to serve 3 fresh permits: if the rate is + * "1 token per second", then this will take 3 seconds. But what does it mean to serve 7 stored + * permits? As explained above, there is no unique answer. If we are primarily interested to deal + * with underutilization, then we want stored permits to be given out /faster/ than fresh ones, + * because underutilization = free resources for the taking. If we are primarily interested to + * deal with overflow, then stored permits could be given out /slower/ than fresh ones. Thus, we + * require a (different in each case) function that translates storedPermits to throtting time. + * + * This role is played by storedPermitsToWaitTime(double storedPermits, double permitsToTake). The + * underlying model is a continuous function mapping storedPermits (from 0.0 to maxStoredPermits) + * onto the 1/rate (i.e. intervals) that is effective at the given storedPermits. "storedPermits" + * essentially measure unused time; we spend unused time buying/storing permits. Rate is + * "permits / time", thus "1 / rate = time / permits". Thus, "1/rate" (time / permits) times + * "permits" gives time, i.e., integrals on this function (which is what storedPermitsToWaitTime() + * computes) correspond to minimum intervals between subsequent requests, for the specified number + * of requested permits. + * + * Here is an example of storedPermitsToWaitTime: If storedPermits == 10.0, and we want 3 permits, + * we take them from storedPermits, reducing them to 7.0, and compute the throttling for these as + * a call to storedPermitsToWaitTime(storedPermits = 10.0, permitsToTake = 3.0), which will + * evaluate the integral of the function from 7.0 to 10.0. + * + * Using integrals guarantees that the effect of a single acquire(3) is equivalent to { + * acquire(1); acquire(1); acquire(1); }, or { acquire(2); acquire(1); }, etc, since the integral + * of the function in [7.0, 10.0] is equivalent to the sum of the integrals of [7.0, 8.0], [8.0, + * 9.0], [9.0, 10.0] (and so on), no matter what the function is. This guarantees that we handle + * correctly requests of varying weight (permits), /no matter/ what the actual function is - so we + * can tweak the latter freely. (The only requirement, obviously, is that we can compute its + * integrals). + * + * Note well that if, for this function, we chose a horizontal line, at height of exactly (1/QPS), + * then the effect of the function is non-existent: we serve storedPermits at exactly the same + * cost as fresh ones (1/QPS is the cost for each). We use this trick later. + * + * If we pick a function that goes /below/ that horizontal line, it means that we reduce the area + * of the function, thus time. Thus, the RateLimiter becomes /faster/ after a period of + * underutilization. If, on the other hand, we pick a function that goes /above/ that horizontal + * line, then it means that the area (time) is increased, thus storedPermits are more costly than + * fresh permits, thus the RateLimiter becomes /slower/ after a period of underutilization. + * + * Last, but not least: consider a RateLimiter with rate of 1 permit per second, currently + * completely unused, and an expensive acquire(100) request comes. It would be nonsensical to just + * wait for 100 seconds, and /then/ start the actual task. Why wait without doing anything? A much + * better approach is to /allow/ the request right away (as if it was an acquire(1) request + * instead), and postpone /subsequent/ requests as needed. In this version, we allow starting the + * task immediately, and postpone by 100 seconds future requests, thus we allow for work to get + * done in the meantime instead of waiting idly. + * + * This has important consequences: it means that the RateLimiter doesn't remember the time of the + * _last_ request, but it remembers the (expected) time of the _next_ request. This also enables + * us to tell immediately (see tryAcquire(timeout)) whether a particular timeout is enough to get + * us to the point of the next scheduling time, since we always maintain that. And what we mean by + * "an unused RateLimiter" is also defined by that notion: when we observe that the + * "expected arrival time of the next request" is actually in the past, then the difference (now - + * past) is the amount of time that the RateLimiter was formally unused, and it is that amount of + * time which we translate to storedPermits. (We increase storedPermits with the amount of permits + * that would have been produced in that idle time). So, if rate == 1 permit per second, and + * arrivals come exactly one second after the previous, then storedPermits is _never_ increased -- + * we would only increase it for arrivals _later_ than the expected one second. + */ + + /** + * This implements the following function where coldInterval = coldFactor * stableInterval. + * + *

+   *          ^ throttling
+   *          |
+   *    cold  +                  /
+   * interval |                 /.
+   *          |                / .
+   *          |               /  .   ← "warmup period" is the area of the trapezoid between
+   *          |              /   .     thresholdPermits and maxPermits
+   *          |             /    .
+   *          |            /     .
+   *          |           /      .
+   *   stable +----------/  WARM .
+   * interval |          .   UP  .
+   *          |          . PERIOD.
+   *          |          .       .
+   *        0 +----------+-------+--------------→ storedPermits
+   *          0 thresholdPermits maxPermits
+   * 
+ * + * Before going into the details of this particular function, let's keep in mind the basics: + * + *
    + *
  1. The state of the RateLimiter (storedPermits) is a vertical line in this figure. + *
  2. When the RateLimiter is not used, this goes right (up to maxPermits) + *
  3. When the RateLimiter is used, this goes left (down to zero), since if we have + * storedPermits, we serve from those first + *
  4. When _unused_, we go right at a constant rate! The rate at which we move to the right is + * chosen as maxPermits / warmupPeriod. This ensures that the time it takes to go from 0 to + * maxPermits is equal to warmupPeriod. + *
  5. When _used_, the time it takes, as explained in the introductory class note, is equal to + * the integral of our function, between X permits and X-K permits, assuming we want to + * spend K saved permits. + *
+ * + *

In summary, the time it takes to move to the left (spend K permits), is equal to the area of + * the function of width == K. + * + *

Assuming we have saturated demand, the time to go from maxPermits to thresholdPermits is + * equal to warmupPeriod. And the time to go from thresholdPermits to 0 is warmupPeriod/2. (The + * reason that this is warmupPeriod/2 is to maintain the behavior of the original implementation + * where coldFactor was hard coded as 3.) + * + *

It remains to calculate thresholdsPermits and maxPermits. + * + *

    + *
  • The time to go from thresholdPermits to 0 is equal to the integral of the function + * between 0 and thresholdPermits. This is thresholdPermits * stableIntervals. By (5) it is + * also equal to warmupPeriod/2. Therefore + *
    + * thresholdPermits = 0.5 * warmupPeriod / stableInterval + *
    + * + *
  • The time to go from maxPermits to thresholdPermits is equal to the integral of the + * function between thresholdPermits and maxPermits. This is the area of the pictured + * trapezoid, and it is equal to 0.5 * (stableInterval + coldInterval) * (maxPermits - + * thresholdPermits). It is also equal to warmupPeriod, so + *
    + * maxPermits = thresholdPermits + 2 * warmupPeriod / (stableInterval + coldInterval) + *
    + * + *
+ */ + static final class SmoothWarmingUp extends SmoothRateLimiter { + private final long warmupPeriodNanos; + /** + * The slope of the line from the stable interval (when permits == 0), to the cold interval + * (when permits == maxPermits) + */ + private double slope; + private double thresholdPermits; + private double coldFactor; + + SmoothWarmingUp( + SleepingStopwatch stopwatch, long warmupPeriod, TimeUnit timeUnit, double coldFactor) { + super(stopwatch); + this.warmupPeriodNanos = timeUnit.toNanos(warmupPeriod); + this.coldFactor = coldFactor; + } + + @Override + void doSetRate(double permitsPerSecond, double stableIntervalNanos) { + double oldMaxPermits = maxPermits; + double coldIntervalNanos = stableIntervalNanos * coldFactor; + thresholdPermits = 0.5 * warmupPeriodNanos / stableIntervalNanos; + maxPermits = + thresholdPermits + 2.0 * warmupPeriodNanos / (stableIntervalNanos + coldIntervalNanos); + slope = (coldIntervalNanos - stableIntervalNanos) / (maxPermits - thresholdPermits); + if (oldMaxPermits == Double.POSITIVE_INFINITY) { + // if we don't special-case this, we would get storedPermits == NaN, below + storedPermits = 0.0; + } else { + storedPermits = + (oldMaxPermits == 0.0) + ? maxPermits // initial state is cold + : storedPermits * maxPermits / oldMaxPermits; + } + } + + @Override + long storedPermitsToWaitTime(double storedPermits, double permitsToTake) { + double availablePermitsAboveThreshold = storedPermits - thresholdPermits; + long nanos = 0; + // measuring the integral on the right part of the function (the climbing line) + if (availablePermitsAboveThreshold > 0.0) { + double permitsAboveThresholdToTake = min(availablePermitsAboveThreshold, permitsToTake); + // TODO(cpovirk): Figure out a good name for this variable. + double length = permitsToTime(availablePermitsAboveThreshold) + + permitsToTime(availablePermitsAboveThreshold - permitsAboveThresholdToTake); + nanos = (long) (permitsAboveThresholdToTake * length / 2.0); + permitsToTake -= permitsAboveThresholdToTake; + } + // measuring the integral on the left part of the function (the horizontal line) + nanos += (long) (stableIntervalNanos * permitsToTake); + return nanos; + } + + private double permitsToTime(double permits) { + return stableIntervalNanos + permits * slope; + } + + @Override + double coolDownIntervalNanos() { + return warmupPeriodNanos / maxPermits; + } + } + + /** + * This implements a "bursty" RateLimiter, where storedPermits are translated to zero throttling. + * The maximum number of permits that can be saved (when the RateLimiter is unused) is defined in + * terms of time, in this sense: if a RateLimiter is 2qps, and this time is specified as 10 + * seconds, we can save up to 2 * 10 = 20 permits. + */ + static final class SmoothBursty extends SmoothRateLimiter { + /** The work (permits) of how many seconds can be saved up if this RateLimiter is unused? */ + final double maxBurstSeconds; + + SmoothBursty(SleepingStopwatch stopwatch, double maxBurstSeconds) { + super(stopwatch); + this.maxBurstSeconds = maxBurstSeconds; + } + + @Override + void doSetRate(double permitsPerSecond, double stableIntervalNanos) { + double oldMaxPermits = this.maxPermits; + maxPermits = maxBurstSeconds * permitsPerSecond; + if (oldMaxPermits == Double.POSITIVE_INFINITY) { + // if we don't special-case this, we would get storedPermits == NaN, below + storedPermits = maxPermits; + } else { + storedPermits = + (oldMaxPermits == 0.0) + ? 0.0 // initial state + : storedPermits * maxPermits / oldMaxPermits; + } + } + + @Override + long storedPermitsToWaitTime(double storedPermits, double permitsToTake) { + return 0L; + } + + @Override + double coolDownIntervalNanos() { + return stableIntervalNanos; + } + } + + /** + * The currently stored permits. + */ + double storedPermits; + + /** + * The maximum number of stored permits. + */ + double maxPermits; + + /** + * The interval between two unit requests, at our stable rate. E.g., a stable rate of 5 permits + * per second has a stable interval of 200ms. + */ + double stableIntervalNanos; + + /** + * The time when the next request (no matter its size) will be granted. After granting a request, + * this is pushed further in the future. Large requests push this further than small requests. + */ + private long nextFreeTicketNanos = 0L; // could be either in the past or future + + private SmoothRateLimiter(SleepingStopwatch stopwatch) { + super(stopwatch); + } + + @Override + final void doSetRate(double permitsPerSecond, long nowNanos) { + resync(nowNanos); + double stableIntervalNanos = SECONDS.toNanos(1L) / permitsPerSecond; + this.stableIntervalNanos = stableIntervalNanos; + doSetRate(permitsPerSecond, stableIntervalNanos); + } + + abstract void doSetRate(double permitsPerSecond, double stableIntervalNanos); + + @Override + final double doGetRate() { + return SECONDS.toNanos(1L) / stableIntervalNanos; + } + + @Override + final long queryEarliestAvailable(long nowNanos) { + return nextFreeTicketNanos; + } + + @Override + final long reserveEarliestAvailable(int requiredPermits, long nowNanos) { + resync(nowNanos); + long returnValue = nextFreeTicketNanos; + double storedPermitsToSpend = min(requiredPermits, this.storedPermits); + double freshPermits = requiredPermits - storedPermitsToSpend; + long waitNanos = + storedPermitsToWaitTime(this.storedPermits, storedPermitsToSpend) + + (long) (freshPermits * stableIntervalNanos); + + this.nextFreeTicketNanos = LongMath.saturatedAdd(nextFreeTicketNanos, waitNanos); + this.storedPermits -= storedPermitsToSpend; + return returnValue; + } + + /** + * Translates a specified portion of our currently stored permits which we want to spend/acquire, + * into a throttling time. Conceptually, this evaluates the integral of the underlying function we + * use, for the range of [(storedPermits - permitsToTake), storedPermits]. + * + *

This always holds: {@code 0 <= permitsToTake <= storedPermits} + */ + abstract long storedPermitsToWaitTime(double storedPermits, double permitsToTake); + + /** + * Returns the number of nanoseconds during cool down that we have to wait to get a new permit. + */ + abstract double coolDownIntervalNanos(); + + /** + * Updates {@code storedPermits} and {@code nextFreeTicketNanos} based on the current time. + */ + void resync(long nowNanos) { + // if nextFreeTicket is in the past, resync to now + if (nowNanos > nextFreeTicketNanos) { + double newPermits = (nowNanos - nextFreeTicketNanos) / coolDownIntervalNanos(); + storedPermits = min(maxPermits, storedPermits + newPermits); + nextFreeTicketNanos = nowNanos; + } + } +} diff --git a/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/LocalWorker.java b/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/LocalWorker.java index 97c48521..3cbb105e 100644 --- a/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/LocalWorker.java +++ b/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/LocalWorker.java @@ -40,7 +40,7 @@ import com.fasterxml.jackson.databind.ObjectWriter; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import com.google.common.base.Preconditions; -import com.google.common.util.concurrent.RateLimiter; +import io.openmessaging.benchmark.utils.RateLimiter; import org.HdrHistogram.Recorder; import org.apache.bookkeeper.stats.Counter; From 6d8b3d564a746151e675f94478f9d20f8cad422e Mon Sep 17 00:00:00 2001 From: Roko Kruze Date: Sat, 30 Jan 2021 13:17:17 -0800 Subject: [PATCH 17/47] Python script to generate charts with an index.html --- bin/generate_charts.py | 405 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 405 insertions(+) create mode 100755 bin/generate_charts.py diff --git a/bin/generate_charts.py b/bin/generate_charts.py new file mode 100755 index 00000000..7b21c5c2 --- /dev/null +++ b/bin/generate_charts.py @@ -0,0 +1,405 @@ +#!/usr/bin/env python3 +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +import json +import sys +import statistics +import numpy as np +import argparse +import re +import pygal +from pygal.style import Style +from itertools import chain +from os import walk +from os import path +from jinja2 import Template +from collections import defaultdict + +chartStyle = Style( + background='transparent', + plot_background='transparent', + font_family='googlefont:Montserrat', + # colors=('#D8365D', '#78365D') + #colors=('#66CC69', '#173361', '#D8365D'), + colors=('#800000', '#4363d8', '#f58231'), + label_font_size=16, + legend_font_size=16, + major_label_font_size=16, + # colors=('#66CC69', '#667C69', '#173361', '#D8365D', '#78365D'), +) + +#theme = pygal.style.CleanStyle +theme = chartStyle +fill = False +output = '' +file_list = defaultdict(list) + + +def create_quantile_chart(prefix, workload, title, y_label, time_series): + import math + chart = pygal.XY(style=theme, + dots_size=0.5, + legend_at_bottom=True, + truncate_legend=37, + x_value_formatter=lambda x: '{:,.3f} %'.format(100.0 - + (100.0 / + (10**x))), + show_dots=True, + fill=fill, + stroke_style={'width': 2}, + show_y_guides=True, + show_x_guides=False) + chart.title = title + # chart.stroke = False + + chart.human_readable = True + chart.y_title = y_label + chart.x_title = 'Percentile' + chart.x_labels = [0.30103, 1, 2, 3, 4, 5] + + for label, values, opts in time_series: + values = sorted((float(x), y) for x, y in values.items()) + xy_values = [(math.log10(100 / (100 - x)), y) for x, y in values + if x <= 99.999] + chart.add(label, xy_values, stroke_style=opts) + + file_list[prefix].append(f'{workload}.svg') + chart.render_to_file(f'{output}{workload}.svg') + + +def create_multi_chart(prefix, svg_file_name, title, y_label_1, y_label_2, + time_series): + chart = pygal.XY(style=theme, + dots_size=1, + show_dots=False, + stroke_style={'width': 2}, + fill=fill, + legend_at_bottom=True, + show_x_guides=False, + show_y_guides=True) + chart.title = title + chart.human_readable = True + chart.x_title = 'Time (seconds)' + + ys_1 = [] + ys_2 = [] + + for label_1, values_1, label_2, values_2 in time_series: + ys_1.append(values_1) + chart.add(label_1, [(10 * x, y) for x, y in enumerate(values_1)]) + chart.add(label_2, [(10 * x, y) for x, y in enumerate(values_2)], + secondary=True) + + ys_1 = chain.from_iterable(ys_1) + ys_2 = chain.from_iterable(ys_2) + max_y_1 = float('-inf') # Hack for starting w/ INT64_MIN + max_y_2 = max_y_1 + for y in ys_1: + if max_y_1 < y: + max_y_1 = y + chart.range = (0, max_y_1 * 1.20) + + file_list[prefix].append(f'{path.basename(svg_file_name)}.svg') + chart.render_to_file(f'{svg_file_name}.svg') + + +def create_bar_chart(prefix, workload, title, y_label, x_label, data): + chart = pygal.Bar(style=theme, + dots_size=1, + show_dots=False, + stroke_style={'width': 2}, + fill=fill, + show_legend=False, + show_x_guides=False, + show_y_guides=True) + chart.title = title + chart.x_labels = x_label + chart.value_formatter = lambda y: "{:,.0f}".format(y) + + for label, points in data.items(): + chart.add(label, points) + + file_list[prefix].append(f'{workload}.svg') + chart.render_to_file(f'{output}{workload}.svg') + + +def create_chart(prefix, workload, title, y_label, time_series): + chart = pygal.XY(style=theme, + dots_size=1, + show_dots=False, + stroke_style={'width': 2}, + fill=fill, + legend_at_bottom=True, + show_x_guides=False, + show_y_guides=True) + chart.title = title + + chart.human_readable = True + chart.y_title = y_label + chart.x_title = 'Time (seconds)' + # line_chart.x_labels = [str(10 * x) for x in range(len(time_series[0][1]))] + + ys = [] + for label, values in time_series: + ys.append(values) + chart.add(label, [(10 * x, y) for x, y in enumerate(values)]) + ys = chain.from_iterable(ys) + max_y = float('-inf') # Hack for starting w/ INT64_MIN + for y in ys: + if max_y < y: + max_y = y + chart.range = (max_y * 0.0, max_y * 1.20) + + file_list[prefix].append(f'{workload}.svg') + chart.render_to_file(f'{output}{workload}.svg') + + +def generate_charts(files): + + aggregate = [] + topics = 0 + partitions = 0 + message_size = 0 + producers = 0 + rate = 0 + + for file in sorted(files): + data = json.load(open(file)) + m = re.search( + r'^(\d+)-topic-(\d+)-partitions-(\d+)kb-(\d+)-producers-(\d+)k-rate-(\w+)-.*', + path.basename(file)) + if m: + topic = m.group(1) + partitions = m.group(2) + message_size = m.group(3) + producers = m.group(4) + rate = m.group(5) + data['file'] = m.group(6) + else: + print("Something is not right with the file names!") + exit(-1) + aggregate.append(data) + + stats_pub_rate = [] + stats_con_rate = [] + stats_backlog = [] + stats_lat_p99 = [] + stats_lat_p999 = [] + stats_lat_p9999 = [] + stat_lat_avg = [] + stat_lat_max = [] + stat_lat_quantile = [] + stat_e2e_lat_quantile = [] + drivers = [] + + pub_rate_avg = {} + pub_rate_avg["Throughput (MB/s)"] = [] + + # colors = ['#66CC69', '#173361', '#D8365D'] + #colors = ['#66CC69', '#667C69', '#173361', '#D8365D', '#78365D'] + colors = ['#80000', '#f58231', '#ffe119', '#000075', '#000075'] + + # Aggregate across all runs + count = 0 + for data in aggregate: + stats_pub_rate.append(data['publishRate']) + stats_con_rate.append(data['consumeRate']) + stats_backlog.append(data['backlog']) + stats_lat_p99.append(data['publishLatency99pct']) + stats_lat_p999.append(data['publishLatency999pct']) + stats_lat_p9999.append(data['publishLatency9999pct']) + stat_lat_avg.append(data['publishLatencyAvg']) + stat_lat_max.append(data['publishLatencyMax']) + + stat_lat_quantile.append(data['aggregatedPublishLatencyQuantiles']) + stat_e2e_lat_quantile.append( + data['aggregatedEndToEndLatencyQuantiles']) + drivers.append(data['file']) + + # if (count >= len(aggregate)/2): + # pub_rate_avg[args.barlabels[1]].append( + # sum(data['publishRate'])/len(data['publishRate'])) + # else: + # pub_rate_avg[args.barlabels[0]].append( + # sum(data['publishRate'])/len(data['publishRate'])) + pub_rate_avg["Throughput (MB/s)"].append({ + 'value': + (sum(data['publishRate']) / len(data['publishRate']) * 1024) / + (1024.0 * 1024.0), + 'color': + colors[count] + }) + count = count + 1 + + # Parse plot options + opts = [] + if args.opts is None: + for driver in drivers: + opts.append({}) + else: + for opt in args.opts: + if opt == 'Dashed': + opts.append({'width': 2, 'dasharray': '3, 6, 12, 24'}) + else: + opts.append({}) + + prefix = f'{rate}k-rate-{partitions}-partitions-{message_size}kb-{producers}-producers' + + # Generate publish rate bar-chart + svg = prefix + '-publish-rate-bar' + create_bar_chart(prefix, svg, 'Throughput (MB/s)', 'MB/s', drivers, + pub_rate_avg) + + # Generate latency quantiles + time_series = zip(drivers, stat_lat_quantile, opts) + svg = prefix + '-latency-quantile' + create_quantile_chart(prefix, + svg, + 'Publish Latency Percentiles', + y_label='Latency (ms)', + time_series=time_series) + + time_series = zip(drivers, stat_e2e_lat_quantile, opts) + svg = prefix + '-e2e-latency-quantile' + create_quantile_chart(prefix, + svg, + 'End-to-End Latency Percentiles', + y_label='Latency (ms)', + time_series=time_series) + + # Generate p99 latency time-series + svg = prefix + '-publish-latency-p99' + time_series = zip(drivers, stats_lat_p99) + create_chart(prefix, + svg, + 'Publish Latency - 99th Percentile', + y_label='Latency (ms)', + time_series=time_series) + + # Generate avg E2E latency time-series + svg = prefix + '-e2e-latency-avg' + time_series = zip(drivers, stat_lat_avg) + create_chart(prefix, + svg, + 'End-to-end Latency - Average', + y_label='Latency (ms)', + time_series=time_series) + + # Generate publish rate + svg = prefix + '-publish-rate' + time_series = zip(drivers, stats_pub_rate) + create_chart(prefix, + svg, + 'Publish Rate', + y_label='Message/s', + time_series=time_series) + + # Generate consume + backlog rate + svg = f'{output}{prefix}-consume-rate-backlog' + labels_con = [] + labels_backlog = [] + + for x in drivers: + labels_con.append(x + " - Consume Rate") + labels_backlog.append(x + " - Backlog") + + time_series = zip(labels_con, stats_con_rate, labels_backlog, + stats_backlog) + create_multi_chart( + prefix, svg, + 'Consume rate (Messages/s - Left) w/ Backlog (No. of Messages - Right)', + 'Consume - Messages/s', 'Backlog - Messages', time_series) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description='Plot Kafka OpenMessaging Benchmark results') + + parser.add_argument( + '--results', + dest='results_dir', + required=True, + help='Directory containing the results for both Redpanda and Kafka') + parser.add_argument('--series-opts', + nargs='+', + dest='opts', + required=False, + type=str, + help='Options for each series: Dashed or Filled') + parser.add_argument('--output', + dest='output', + required=False, + type=str, + help='Location where all output will be stored') + args = parser.parse_args() + + prefixes = {} + + if args.output != '': + output = path.join(args.output, '') + + # Get list of directories + for (dirpath, dirnames, filenames) in walk(args.results_dir): + for file in filenames: + m = re.search( + r'(^\d+-topic-\d+-partitions-\d+kb-\d+-producers-\d+k-rate-).*', + file) + if m: + prefix = m.group(1) + file_path = path.join(dirpath, file) + if prefix in prefixes: + prefixes[prefix].append(file_path) + else: + prefixes[prefix] = [file_path] + + for prefix in prefixes: + generate_charts(prefixes[prefix]) + + html = ''' + + + + + + +

+

{{title}}

+{% for prefix in file_list %} +
+

{{prefix}}

+ {% for file in file_list[prefix] %} +
+ +
+ {% endfor %} +
+{% endfor %} +
+ + + ''' + + template = Template(html) + + index_html = template.render(file_list=file_list, title="Charts") + + f = open(f"{output}index.html", "w") + f.write(index_html) + f.close() From a6f7511971c7c509a913cd60f88aac5a6bf8c138 Mon Sep 17 00:00:00 2001 From: Alexander Gallego Date: Sat, 30 Jan 2021 13:26:31 -0800 Subject: [PATCH 18/47] generate_charts.py: show max latency --- bin/generate_charts.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/bin/generate_charts.py b/bin/generate_charts.py index 7b21c5c2..d340546f 100755 --- a/bin/generate_charts.py +++ b/bin/generate_charts.py @@ -76,8 +76,9 @@ def create_quantile_chart(prefix, workload, title, y_label, time_series): for label, values, opts in time_series: values = sorted((float(x), y) for x, y in values.items()) - xy_values = [(math.log10(100 / (100 - x)), y) for x, y in values - if x <= 99.999] + # do not restrict to any percentiles. show the max; the outliers + # are where the goodies lie + xy_values = [(math.log10(100 / (100 - x)), y) for x, y in values] chart.add(label, xy_values, stroke_style=opts) file_list[prefix].append(f'{workload}.svg') From a21d05d3aebb3caa99ca4263cfb4b1339ae753f8 Mon Sep 17 00:00:00 2001 From: Alexander Gallego Date: Sat, 30 Jan 2021 13:27:18 -0800 Subject: [PATCH 19/47] generate_chars.py: extract value formatting to free func The inline fmt function makes the code hard to read. This is strictly a cosmetic change. --- bin/generate_charts.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bin/generate_charts.py b/bin/generate_charts.py index d340546f..07f53762 100755 --- a/bin/generate_charts.py +++ b/bin/generate_charts.py @@ -54,13 +54,13 @@ def create_quantile_chart(prefix, workload, title, y_label, time_series): import math + def _fmt_val(x): + return '{:,.3f} %'.format(100.0 - (100.0 / (10**x))) chart = pygal.XY(style=theme, dots_size=0.5, legend_at_bottom=True, truncate_legend=37, - x_value_formatter=lambda x: '{:,.3f} %'.format(100.0 - - (100.0 / - (10**x))), + x_value_formatter=_fmt_val, show_dots=True, fill=fill, stroke_style={'width': 2}, From 3d046ec909d93e9ed07b48bc190b96475b1e683f Mon Sep 17 00:00:00 2001 From: Alexander Gallego Date: Sat, 30 Jan 2021 13:41:41 -0800 Subject: [PATCH 20/47] bin: add python requirements for rendering graphs --- bin/requirements.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 bin/requirements.txt diff --git a/bin/requirements.txt b/bin/requirements.txt new file mode 100644 index 00000000..6fab6808 --- /dev/null +++ b/bin/requirements.txt @@ -0,0 +1,3 @@ +numpy +jinja2 +pygal From 3b4eb2e949f4a5258c8941e675348c65f23f8bb9 Mon Sep 17 00:00:00 2001 From: Alexander Gallego Date: Sat, 30 Jan 2021 13:47:18 -0800 Subject: [PATCH 21/47] generate_charts.py: fix division by zero --- bin/generate_charts.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/generate_charts.py b/bin/generate_charts.py index 07f53762..9ebd4548 100755 --- a/bin/generate_charts.py +++ b/bin/generate_charts.py @@ -78,7 +78,7 @@ def _fmt_val(x): values = sorted((float(x), y) for x, y in values.items()) # do not restrict to any percentiles. show the max; the outliers # are where the goodies lie - xy_values = [(math.log10(100 / (100 - x)), y) for x, y in values] + xy_values = [(math.log10(100 / max((100 - x),1)), y) for x, y in values] chart.add(label, xy_values, stroke_style=opts) file_list[prefix].append(f'{workload}.svg') From 9d2a0b178258bad5587433a364a2da2585866240 Mon Sep 17 00:00:00 2001 From: Alexander Gallego Date: Sat, 30 Jan 2021 15:56:40 -0800 Subject: [PATCH 22/47] see full graphs --- bin/generate_charts.py | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/bin/generate_charts.py b/bin/generate_charts.py index 9ebd4548..5061ec9e 100755 --- a/bin/generate_charts.py +++ b/bin/generate_charts.py @@ -21,6 +21,7 @@ import json import sys import statistics +import math import numpy as np import argparse import re @@ -51,13 +52,29 @@ output = '' file_list = defaultdict(list) +def _clean_xy_values(values): + values = sorted((float(x), y) for x, y in values.items()) + # do not restrict to any percentiles. show the max; the outliers + # are where the goodies lie + def _x_axis(x): + if x < 100: + return math.log10(100 / (100 - x)) + return x + xy_values = [(_x_axis(x), y) for x, y in values] + found_normalized_max = False + def _max_index(clean_vals): + index = 0 + for x, y in clean_vals: + if 100 == int(x): return index + index = index + 1 + return xy_values[:_max_index(xy_values)] + def create_quantile_chart(prefix, workload, title, y_label, time_series): - import math def _fmt_val(x): return '{:,.3f} %'.format(100.0 - (100.0 / (10**x))) chart = pygal.XY(style=theme, - dots_size=0.5, + dots_size=2, legend_at_bottom=True, truncate_legend=37, x_value_formatter=_fmt_val, @@ -65,20 +82,15 @@ def _fmt_val(x): fill=fill, stroke_style={'width': 2}, show_y_guides=True, - show_x_guides=False) + show_x_guides=True) + # chart = pygal.XY() chart.title = title - # chart.stroke = False - chart.human_readable = True chart.y_title = y_label chart.x_title = 'Percentile' - chart.x_labels = [0.30103, 1, 2, 3, 4, 5] - + chart.x_labels = [1, 3, 5, 8] for label, values, opts in time_series: - values = sorted((float(x), y) for x, y in values.items()) - # do not restrict to any percentiles. show the max; the outliers - # are where the goodies lie - xy_values = [(math.log10(100 / max((100 - x),1)), y) for x, y in values] + xy_values = _clean_xy_values(values) chart.add(label, xy_values, stroke_style=opts) file_list[prefix].append(f'{workload}.svg') @@ -155,8 +167,7 @@ def create_chart(prefix, workload, title, y_label, time_series): chart.human_readable = True chart.y_title = y_label chart.x_title = 'Time (seconds)' - # line_chart.x_labels = [str(10 * x) for x in range(len(time_series[0][1]))] - + ys = [] for label, values in time_series: ys.append(values) @@ -386,7 +397,7 @@ def generate_charts(files):

{{prefix}}

{% for file in file_list[prefix] %} -
+
{% endfor %} From 7726c224a6badbd662fc8b7669a2ba177a9c4b6f Mon Sep 17 00:00:00 2001 From: Alexander Gallego Date: Sat, 30 Jan 2021 16:48:26 -0800 Subject: [PATCH 23/47] use brighter colors and titles --- bin/generate_charts.py | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-) diff --git a/bin/generate_charts.py b/bin/generate_charts.py index 5061ec9e..a99f9a7b 100755 --- a/bin/generate_charts.py +++ b/bin/generate_charts.py @@ -33,17 +33,15 @@ from jinja2 import Template from collections import defaultdict +graph_colors = ['#00ff00', '#ff0000', '#0000ff', '#ff00ff', '#ffff00', '#00ffff', '#ffd700'] chartStyle = Style( background='transparent', plot_background='transparent', font_family='googlefont:Montserrat', - # colors=('#D8365D', '#78365D') - #colors=('#66CC69', '#173361', '#D8365D'), - colors=('#800000', '#4363d8', '#f58231'), + colors=graph_colors, label_font_size=16, legend_font_size=16, major_label_font_size=16, - # colors=('#66CC69', '#667C69', '#173361', '#D8365D', '#78365D'), ) #theme = pygal.style.CleanStyle @@ -222,11 +220,7 @@ def generate_charts(files): drivers = [] pub_rate_avg = {} - pub_rate_avg["Throughput (MB/s)"] = [] - - # colors = ['#66CC69', '#173361', '#D8365D'] - #colors = ['#66CC69', '#667C69', '#173361', '#D8365D', '#78365D'] - colors = ['#80000', '#f58231', '#ffe119', '#000075', '#000075'] + pub_rate_avg["Throughput (MB/s): higher is better"] = [] # Aggregate across all runs count = 0 @@ -244,19 +238,12 @@ def generate_charts(files): stat_e2e_lat_quantile.append( data['aggregatedEndToEndLatencyQuantiles']) drivers.append(data['file']) - - # if (count >= len(aggregate)/2): - # pub_rate_avg[args.barlabels[1]].append( - # sum(data['publishRate'])/len(data['publishRate'])) - # else: - # pub_rate_avg[args.barlabels[0]].append( - # sum(data['publishRate'])/len(data['publishRate'])) - pub_rate_avg["Throughput (MB/s)"].append({ + pub_rate_avg["Throughput (MB/s): higher is better"].append({ 'value': (sum(data['publishRate']) / len(data['publishRate']) * 1024) / (1024.0 * 1024.0), 'color': - colors[count] + graph_colors[count % len(graph_colors)] }) count = count + 1 @@ -276,7 +263,7 @@ def generate_charts(files): # Generate publish rate bar-chart svg = prefix + '-publish-rate-bar' - create_bar_chart(prefix, svg, 'Throughput (MB/s)', 'MB/s', drivers, + create_bar_chart(prefix, svg, 'Throughput (MB/s)', 'MB/s: higher is better', drivers, pub_rate_avg) # Generate latency quantiles @@ -284,7 +271,7 @@ def generate_charts(files): svg = prefix + '-latency-quantile' create_quantile_chart(prefix, svg, - 'Publish Latency Percentiles', + 'Publish Latency Percentiles: lower is better', y_label='Latency (ms)', time_series=time_series) @@ -292,7 +279,7 @@ def generate_charts(files): svg = prefix + '-e2e-latency-quantile' create_quantile_chart(prefix, svg, - 'End-to-End Latency Percentiles', + 'End-to-End Latency Percentiles: lower is better', y_label='Latency (ms)', time_series=time_series) @@ -301,7 +288,7 @@ def generate_charts(files): time_series = zip(drivers, stats_lat_p99) create_chart(prefix, svg, - 'Publish Latency - 99th Percentile', + 'Publish Latency - 99th Percentile: lower is better', y_label='Latency (ms)', time_series=time_series) @@ -310,7 +297,7 @@ def generate_charts(files): time_series = zip(drivers, stat_lat_avg) create_chart(prefix, svg, - 'End-to-end Latency - Average', + 'End-to-end Latency - Average: lower is better', y_label='Latency (ms)', time_series=time_series) From a3982f974cf7bf0642ed710163230209bafd42aa Mon Sep 17 00:00:00 2001 From: Alexander Gallego Date: Sat, 30 Jan 2021 17:21:45 -0800 Subject: [PATCH 24/47] fixed coloring of graphs --- bin/generate_charts.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/bin/generate_charts.py b/bin/generate_charts.py index a99f9a7b..6906511e 100755 --- a/bin/generate_charts.py +++ b/bin/generate_charts.py @@ -33,7 +33,14 @@ from jinja2 import Template from collections import defaultdict -graph_colors = ['#00ff00', '#ff0000', '#0000ff', '#ff00ff', '#ffff00', '#00ffff', '#ffd700'] +graph_colors = ['#202020', # dark gray + '#0000ff', # blue + '#ff0000', # red + '#00ff00', + '#ff00ff', + '#ffff00', + '#00ffff', + '#ffd700'] chartStyle = Style( background='transparent', plot_background='transparent', @@ -263,7 +270,7 @@ def generate_charts(files): # Generate publish rate bar-chart svg = prefix + '-publish-rate-bar' - create_bar_chart(prefix, svg, 'Throughput (MB/s)', 'MB/s: higher is better', drivers, + create_bar_chart(prefix, svg, 'Throughput (MB/s): higher is better', 'MB/s', drivers, pub_rate_avg) # Generate latency quantiles @@ -306,7 +313,7 @@ def generate_charts(files): time_series = zip(drivers, stats_pub_rate) create_chart(prefix, svg, - 'Publish Rate', + 'Publish Rate: higher is better', y_label='Message/s', time_series=time_series) @@ -375,7 +382,7 @@ def generate_charts(files): - +
@@ -384,7 +391,7 @@ def generate_charts(files):

{{prefix}}

{% for file in file_list[prefix] %} -
+
{% endfor %} From 3306fdaebbb067427716bd404558a44f37fb01ca Mon Sep 17 00:00:00 2001 From: Alexander Gallego Date: Sat, 30 Jan 2021 18:39:46 -0800 Subject: [PATCH 25/47] remove white space for percentile formatting --- bin/generate_charts.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/generate_charts.py b/bin/generate_charts.py index 6906511e..6e6c48aa 100755 --- a/bin/generate_charts.py +++ b/bin/generate_charts.py @@ -77,7 +77,7 @@ def _max_index(clean_vals): def create_quantile_chart(prefix, workload, title, y_label, time_series): def _fmt_val(x): - return '{:,.3f} %'.format(100.0 - (100.0 / (10**x))) + return '{:,.3f}%'.format(100.0 - (100.0 / (10**x))) chart = pygal.XY(style=theme, dots_size=2, legend_at_bottom=True, From 69346a8d4ebde358a2c4c386b588d21f922a23cc Mon Sep 17 00:00:00 2001 From: Alexander Gallego Date: Fri, 12 Feb 2021 12:36:09 -0800 Subject: [PATCH 26/47] hack-print-to-stdout --- bin/generate_charts.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/bin/generate_charts.py b/bin/generate_charts.py index 6e6c48aa..7e6fb5f8 100755 --- a/bin/generate_charts.py +++ b/bin/generate_charts.py @@ -188,6 +188,11 @@ def create_chart(prefix, workload, title, y_label, time_series): chart.render_to_file(f'{output}{workload}.svg') +def terminal_print_p99999(title, data): + target = list(data.keys())[-2] + value = data[target] + print(title, target, value) + def generate_charts(files): aggregate = [] @@ -198,6 +203,7 @@ def generate_charts(files): rate = 0 for file in sorted(files): + print(file) data = json.load(open(file)) m = re.search( r'^(\d+)-topic-(\d+)-partitions-(\d+)kb-(\d+)-producers-(\d+)k-rate-(\w+)-.*', @@ -244,6 +250,7 @@ def generate_charts(files): stat_lat_quantile.append(data['aggregatedPublishLatencyQuantiles']) stat_e2e_lat_quantile.append( data['aggregatedEndToEndLatencyQuantiles']) + terminal_print_p99999(data['file'],data['aggregatedEndToEndLatencyQuantiles']) drivers.append(data['file']) pub_rate_avg["Throughput (MB/s): higher is better"].append({ 'value': From b63066a19b31407751d3877550a6fab38dcd842c Mon Sep 17 00:00:00 2001 From: Alexander Gallego Date: Thu, 18 Feb 2021 08:15:29 -0800 Subject: [PATCH 27/47] pygal.xy chart fixes --- bin/generate_charts.py | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/bin/generate_charts.py b/bin/generate_charts.py index 7e6fb5f8..805271ac 100755 --- a/bin/generate_charts.py +++ b/bin/generate_charts.py @@ -34,11 +34,11 @@ from collections import defaultdict graph_colors = ['#202020', # dark gray + '#828282', # light gray + '#FF0000', # redpanda red1 + '#D85556', # redpanda red2 '#0000ff', # blue - '#ff0000', # red - '#00ff00', '#ff00ff', - '#ffff00', '#00ffff', '#ffd700'] chartStyle = Style( @@ -62,22 +62,23 @@ def _clean_xy_values(values): # do not restrict to any percentiles. show the max; the outliers # are where the goodies lie def _x_axis(x): - if x < 100: - return math.log10(100 / (100 - x)) - return x + if x < 100.0: x = math.log10(100 / (100 - x)) + # clamp + return min(x, 100.0) + xy_values = [(_x_axis(x), y) for x, y in values] - found_normalized_max = False - def _max_index(clean_vals): - index = 0 - for x, y in clean_vals: - if 100 == int(x): return index - index = index + 1 - return xy_values[:_max_index(xy_values)] + needle_idx = len(xy_values)-1 + while needle_idx > 0: + x = round(xy_values[needle_idx][0],2) + if x < 100.00: + return xy_values[0:needle_idx] + needle_idx = needle_idx-1 + return xy_values def create_quantile_chart(prefix, workload, title, y_label, time_series): def _fmt_val(x): - return '{:,.3f}%'.format(100.0 - (100.0 / (10**x))) + return 'p{:,.3f}'.format(100.0 - (100.0 / (10**x))) chart = pygal.XY(style=theme, dots_size=2, legend_at_bottom=True, @@ -93,9 +94,13 @@ def _fmt_val(x): chart.human_readable = True chart.y_title = y_label chart.x_title = 'Percentile' - chart.x_labels = [1, 3, 5, 8] + chart.x_labels = [0.31, 1, 3, 5] + chart.x_label_rotation=20 + chart.x_labels_major_count=4 + chart.show_minor_x_labels=False + chart.tooltip_border_radius=10 for label, values, opts in time_series: - xy_values = _clean_xy_values(values) + xy_values = _clean_xy_values(values) chart.add(label, xy_values, stroke_style=opts) file_list[prefix].append(f'{workload}.svg') @@ -133,7 +138,6 @@ def create_multi_chart(prefix, svg_file_name, title, y_label_1, y_label_2, if max_y_1 < y: max_y_1 = y chart.range = (0, max_y_1 * 1.20) - file_list[prefix].append(f'{path.basename(svg_file_name)}.svg') chart.render_to_file(f'{svg_file_name}.svg') From 2b953908abe13ec27748d093fd5064d37eac83c7 Mon Sep 17 00:00:00 2001 From: Roko Kruze Date: Thu, 18 Feb 2021 14:20:47 -0800 Subject: [PATCH 28/47] Removing workload and results from previous blog post --- .../kafka/latency/default-sync-200k.json | 4006 ----------------- blog/results/kafka/latency/sync-200k.json | 2258 ---------- .../kafka/throughput/default-sync.json | 3014 ------------- blog/results/kafka/throughput/sync.json | 3041 ------------- .../pulsar/latency/default-sync-200k.json | 2230 --------- .../throughput/default-sync-colocated.json | 2739 ----------- .../pulsar/throughput/default-sync-raid0.json | 3361 -------------- .../throughput/default-sync-tiered.json | 2959 ------------ .../results/rabbitmq/latency/classic-30k.json | 2935 ------------ .../rabbitmq/latency/mirrored-30k.json | 3589 --------------- blog/results/rabbitmq/throughput/classic.json | 3149 ------------- .../results/rabbitmq/throughput/mirrored.json | 2795 ------------ ...partitions-1kb-4-producers-1000k-rate.yaml | 31 - ...-partitions-1kb-4-producers-100k-rate.yaml | 31 - ...0-partitions-1kb-4-producers-10k-rate.yaml | 31 - ...-partitions-1kb-4-producers-200k-rate.yaml | 31 - ...0-partitions-1kb-4-producers-40k-rate.yaml | 31 - ...-partitions-1kb-4-producers-500k-rate.yaml | 31 - ...0-partitions-1kb-4-producers-50k-rate.yaml | 31 - ...0-partitions-1kb-4-producers-75k-rate.yaml | 31 - ...partitions-1kb-4-producers-1000k-rate.yaml | 31 - ...-partitions-1kb-4-producers-100k-rate.yaml | 31 - ...0-partitions-1kb-4-producers-10k-rate.yaml | 31 - ...-partitions-1kb-4-producers-200k-rate.yaml | 31 - ...-partitions-1kb-4-producers-500k-rate.yaml | 31 - ...0-partitions-1kb-4-producers-50k-rate.yaml | 31 - 26 files changed, 36510 deletions(-) delete mode 100644 blog/results/kafka/latency/default-sync-200k.json delete mode 100644 blog/results/kafka/latency/sync-200k.json delete mode 100644 blog/results/kafka/throughput/default-sync.json delete mode 100644 blog/results/kafka/throughput/sync.json delete mode 100644 blog/results/pulsar/latency/default-sync-200k.json delete mode 100644 blog/results/pulsar/throughput/default-sync-colocated.json delete mode 100644 blog/results/pulsar/throughput/default-sync-raid0.json delete mode 100644 blog/results/pulsar/throughput/default-sync-tiered.json delete mode 100644 blog/results/rabbitmq/latency/classic-30k.json delete mode 100644 blog/results/rabbitmq/latency/mirrored-30k.json delete mode 100644 blog/results/rabbitmq/throughput/classic.json delete mode 100644 blog/results/rabbitmq/throughput/mirrored.json delete mode 100644 blog/workloads/1-topic-100-partitions-1kb-4-producers-1000k-rate.yaml delete mode 100644 blog/workloads/1-topic-100-partitions-1kb-4-producers-100k-rate.yaml delete mode 100644 blog/workloads/1-topic-100-partitions-1kb-4-producers-10k-rate.yaml delete mode 100644 blog/workloads/1-topic-100-partitions-1kb-4-producers-200k-rate.yaml delete mode 100644 blog/workloads/1-topic-100-partitions-1kb-4-producers-40k-rate.yaml delete mode 100644 blog/workloads/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml delete mode 100644 blog/workloads/1-topic-100-partitions-1kb-4-producers-50k-rate.yaml delete mode 100644 blog/workloads/1-topic-100-partitions-1kb-4-producers-75k-rate.yaml delete mode 100644 blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-1000k-rate.yaml delete mode 100644 blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-100k-rate.yaml delete mode 100644 blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-10k-rate.yaml delete mode 100644 blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-200k-rate.yaml delete mode 100644 blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml delete mode 100644 blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-50k-rate.yaml diff --git a/blog/results/kafka/latency/default-sync-200k.json b/blog/results/kafka/latency/default-sync-200k.json deleted file mode 100644 index 7d1c8814..00000000 --- a/blog/results/kafka/latency/default-sync-200k.json +++ /dev/null @@ -1,4006 +0,0 @@ -{ - "workload" : "100-partitions-200K-rate-4-producer", - "driver" : "Kafka", - "publishRate" : [ 204415.53587444662, 199936.83637354354, 200089.89593013682, 199972.25757810657, 200026.9799020437, 200055.79733418784, 199843.75036629412, 200101.97155462884, 200035.0828962221, 200007.022797337, 200006.04245982095, 199984.6181005365, 200034.57953224945, 199960.80849883912, 200022.07009040745, 199999.48482830022, 200011.6147566744, 199903.40495556316, 200066.5851710034, 200031.45137851487, 199915.7229581263, 200017.8760844455, 199898.23612456943, 200163.59194964883, 199969.43120530233, 199981.12661654165, 200034.51267620694, 200003.47291776427, 199922.92042703557, 200126.29154669386, 200002.34156893604, 200034.5601490102, 200010.65564623568, 199814.99768669484, 200082.13686573468, 200043.65204990868, 200005.09317318007, 199966.34921339448, 200029.64232438905, 199935.63280994887, 200028.20062867986, 199890.023218169, 200132.88818446058, 199874.26634837425, 200146.73800212337, 199992.31368564256, 199935.97315310148, 199982.81507357207, 200010.6836986086, 200059.82435125625, 199984.38465792447, 200006.47376303183, 200019.26062118576, 199880.4217294682, 200019.34048069036, 200065.99719495664, 200008.33570832715, 199998.03085274776, 199978.77533138826, 200089.2243323748 ], - "consumeRate" : [ 204484.72134683144, 199857.25111988594, 200090.7905633894, 199994.31984167206, 200011.87075769974, 200054.40564099312, 199857.36200877387, 200137.54905459486, 199993.43023157332, 200007.4204878756, 199998.08863663467, 199991.27967753893, 200031.79570793262, 199956.9307747478, 200022.07009040745, 199989.64192296634, 200024.54061276047, 199901.51659626435, 200068.97130366106, 200037.51612517957, 199895.64631852438, 200028.3108612377, 199892.47539997078, 200169.35848761807, 199971.22073434148, 199979.33738758368, 200034.51267620694, 200007.25044325512, 199919.14367209323, 200126.29154669386, 199990.20815985033, 200051.46938409665, 199997.62677644996, 199823.2444539565, 200082.13686573468, 199992.2522741945, 200068.2459030066, 199941.29307870416, 200042.96916039655, 199928.17642768688, 200035.65765618454, 199890.023218169, 200132.88818446058, 199879.9313891369, 200115.4115271713, 200017.97172881878, 199940.1487612684, 199984.40514048544, 200008.3971055174, 200058.6310939808, 199990.0524421229, 199998.7182289645, 200019.06173329888, 199880.4217294682, 200026.89483566626, 200058.44049952927, 200008.43514466382, 200010.46032912185, 199955.21569395016, 200088.92594040144 ], - "backlog" : [ -736, 65, 56, -166, -14, 0, -134, -495, -76, -80, 0, -64, -39, 0, 0, 99, -31, -12, -36, -97, 105, 0, 58, 0, -18, 0, 0, -38, 0, 0, 122, -48, 83, 0, 0, 517, -118, 134, 0, 75, 0, 0, 0, -57, 261, 0, -42, -58, -35, -17, -82, -2, 0, 0, -76, 0, 0, -126, 111, 114 ], - "publishLatencyAvg" : [ 2.3479968260913333, 2.326760230302946, 2.4111521317632096, 2.3086218855975162, 2.338809892842286, 2.3355303056877914, 2.320442174341026, 2.296689447418853, 2.30489714294518, 2.2908746985556023, 2.2839576719182184, 2.2920391930042068, 2.231973621625168, 2.2548918142713874, 2.279295080165995, 2.2610444535920924, 2.270231835139898, 2.2606847638312564, 2.257458595962909, 2.281132100945268, 2.2773731912894557, 2.285999420172627, 2.302083773819284, 2.2743133180588453, 2.2940220406369427, 2.2887989093641985, 2.2694984148123116, 2.2855867282468534, 2.3060450217435826, 2.2910526702000387, 2.2731755595738248, 2.311521578854468, 2.283614466643397, 2.2620426343481763, 2.3095900295035365, 2.258805558013016, 2.2570551682061195, 2.2765853025786127, 2.2784151615754564, 2.273513778267592, 2.287308697253397, 2.2737125013107566, 2.2748950210115972, 2.279305402264961, 2.2630228282026197, 2.30484221409716, 3.3447273910146773, 2.286144352705793, 2.280086825268471, 2.314243530215854, 2.2816506909733896, 2.3312552912880546, 2.2918271606104432, 2.2907448541582656, 2.335767955021383, 2.2952602627939207, 2.2995644071158723, 2.304550741405705, 2.3252649390586426, 2.279971791815456 ], - "publishLatency50pct" : [ 2.206, 2.165, 2.168, 2.168, 2.167, 2.16, 2.165, 2.148, 2.13, 2.144, 2.158, 2.154, 2.123, 2.125, 2.128, 2.124, 2.134, 2.12, 2.124, 2.119, 2.124, 2.126, 2.147, 2.142, 2.135, 2.129, 2.125, 2.143, 2.138, 2.136, 2.142, 2.168, 2.156, 2.137, 2.134, 2.125, 2.124, 2.134, 2.153, 2.129, 2.131, 2.134, 2.144, 2.121, 2.127, 2.142, 2.165, 2.137, 2.177, 2.162, 2.155, 2.18, 2.153, 2.164, 2.185, 2.169, 2.165, 2.132, 2.154, 2.147 ], - "publishLatency75pct" : [ 2.485, 2.418, 2.432, 2.43, 2.416, 2.421, 2.409, 2.418, 2.421, 2.41, 2.411, 2.407, 2.4, 2.406, 2.417, 2.404, 2.426, 2.407, 2.398, 2.41, 2.418, 2.42, 2.428, 2.421, 2.419, 2.421, 2.408, 2.416, 2.425, 2.434, 2.422, 2.421, 2.415, 2.414, 2.419, 2.423, 2.411, 2.409, 2.417, 2.416, 2.422, 2.411, 2.403, 2.403, 2.41, 2.445, 2.469, 2.418, 2.411, 2.433, 2.412, 2.418, 2.426, 2.422, 2.43, 2.429, 2.426, 2.422, 2.438, 2.414 ], - "publishLatency95pct" : [ 3.546, 3.448, 3.57, 3.487, 3.476, 3.507, 3.457, 3.473, 3.477, 3.458, 3.465, 3.466, 3.397, 3.435, 3.452, 3.436, 3.44, 3.445, 3.441, 3.446, 3.486, 3.497, 3.492, 3.463, 3.487, 3.478, 3.451, 3.467, 3.495, 3.508, 3.454, 3.51, 3.479, 3.444, 3.508, 3.451, 3.448, 3.466, 3.479, 3.474, 3.5, 3.467, 3.472, 3.47, 3.471, 3.52, 3.712, 3.45, 3.435, 3.515, 3.462, 3.505, 3.478, 3.473, 3.496, 3.504, 3.463, 3.493, 3.511, 3.456 ], - "publishLatency99pct" : [ 4.576, 4.053, 9.395, 4.484, 4.491, 5.007, 4.205, 4.208, 4.658, 4.041, 4.038, 4.269, 3.86, 3.961, 4.126, 3.93, 4.04, 4.024, 3.948, 4.077, 4.066, 4.233, 4.659, 4.033, 4.421, 4.688, 4.192, 4.266, 4.765, 4.557, 4.117, 4.91, 4.105, 4.039, 5.219, 3.977, 4.032, 4.291, 4.092, 4.079, 4.46, 4.042, 4.073, 4.307, 4.047, 4.819, 54.575, 4.103, 3.986, 4.92, 4.145, 4.901, 4.163, 4.137, 4.905, 4.361, 4.237, 5.058, 4.839, 4.037 ], - "publishLatency999pct" : [ 16.131, 27.115, 23.751, 15.943, 25.482, 19.475, 21.354, 14.759, 18.38, 16.98, 13.964, 15.411, 10.746, 12.791, 15.455, 14.977, 13.912, 13.708, 14.12, 20.734, 14.504, 16.313, 15.502, 13.765, 16.509, 14.639, 15.491, 16.236, 16.404, 14.913, 15.091, 15.225, 14.02, 13.616, 17.502, 12.988, 13.164, 14.38, 13.522, 15.044, 15.296, 15.205, 13.69, 17.217, 13.154, 15.981, 81.92, 17.02, 12.646, 16.241, 15.146, 17.773, 15.137, 14.714, 18.644, 14.213, 16.481, 16.364, 18.841, 14.848 ], - "publishLatency9999pct" : [ 19.11, 34.857, 67.836, 19.346, 30.884, 22.948, 42.028, 51.238, 20.298, 21.721, 16.293, 19.092, 17.959, 16.882, 19.271, 19.26, 21.799, 16.28, 17.594, 26.411, 18.788, 27.767, 19.972, 15.786, 19.435, 19.517, 21.478, 19.568, 20.053, 18.113, 21.884, 18.647, 18.318, 19.746, 21.139, 16.945, 16.601, 18.253, 16.701, 21.403, 34.583, 20.085, 19.276, 21.721, 15.628, 20.34, 85.704, 20.747, 18.129, 26.053, 19.172, 21.135, 20.118, 20.484, 23.209, 17.588, 18.72, 22.787, 25.547, 19.165 ], - "publishLatencyMax" : [ 19.61, 38.375, 69.137, 20.618, 33.399, 24.035, 43.234, 52.317, 21.405, 24.217, 16.437, 21.965, 19.195, 18.013, 20.379, 21.189, 23.72, 16.716, 18.999, 30.945, 29.846, 29.102, 21.481, 16.582, 21.044, 21.253, 22.435, 20.505, 20.942, 18.716, 23.893, 21.571, 20.676, 21.426, 23.196, 20.253, 16.825, 18.855, 18.485, 23.425, 35.771, 21.882, 20.808, 22.591, 17.754, 24.314, 94.178, 22.105, 18.698, 27.301, 19.533, 21.849, 21.122, 21.775, 24.366, 17.997, 19.846, 25.418, 26.89, 20.256 ], - "aggregatedPublishLatencyAvg" : 2.309284874205961, - "aggregatedPublishLatency50pct" : 2.146, - "aggregatedPublishLatency75pct" : 2.42, - "aggregatedPublishLatency95pct" : 3.479, - "aggregatedPublishLatency99pct" : 4.349, - "aggregatedPublishLatency999pct" : 17.368, - "aggregatedPublishLatency9999pct" : 65.852, - "aggregatedPublishLatencyMax" : 94.178, - "aggregatedPublishLatencyQuantiles" : { - "8.284063245873756E-7" : 0.669, - "0.5004593140286991" : 1.041, - "1.0003602821946262" : 1.165, - "1.5079811688993832" : 1.219, - "2.0024303950432008" : 1.25, - "2.5015708862031567" : 1.274, - "3.01599547405175" : 1.295, - "3.5146654304193405" : 1.314, - "4.004217118372197" : 1.332, - "4.523396758523922" : 1.351, - "5.010140149036428" : 1.369, - "5.5072568435454174" : 1.388, - "6.021439536747231" : 1.409, - "6.505455813639195" : 1.43, - "7.011762019506832" : 1.453, - "7.505050648389902" : 1.476, - "8.006865235165627" : 1.5, - "8.516668144129346" : 1.524, - "9.020625818066778" : 1.547, - "9.504467301224254" : 1.568, - "10.009631134770284" : 1.589, - "10.50863411048036" : 1.609, - "11.007149983271576" : 1.628, - "11.511343753011516" : 1.646, - "12.019230558146466" : 1.663, - "12.53036885810542" : 1.679, - "13.033069011242128" : 1.694, - "13.528450194501106" : 1.708, - "14.016397259403238" : 1.721, - "14.523817671777445" : 1.734, - "15.013374330168249" : 1.746, - "15.527763296544885" : 1.758, - "16.018633807366484" : 1.769, - "16.532041112248486" : 1.78, - "17.02394713097582" : 1.79, - "17.53436223221341" : 1.8, - "18.012710553032548" : 1.809, - "18.508520850767663" : 1.818, - "19.021013595067316" : 1.827, - "19.556666094983463" : 1.836, - "20.04875519150853" : 1.844, - "20.55643489506233" : 1.852, - "21.015903835744123" : 1.859, - "21.557562281513526" : 1.867, - "22.045472896537376" : 1.874, - "22.547353755819067" : 1.881, - "23.061895148959426" : 1.888, - "23.515764891293333" : 1.894, - "24.060723707859893" : 1.901, - "24.53533591615514" : 1.907, - "25.022529131301898" : 1.913, - "25.5241341312775" : 1.919, - "26.03764415854375" : 1.925, - "26.559532687376876" : 1.931, - "27.007124766583058" : 1.936, - "27.55616182748556" : 1.942, - "28.0188938606799" : 1.947, - "28.59219494282957" : 1.953, - "29.080336683217975" : 1.958, - "29.5744727717711" : 1.963, - "30.080182525085036" : 1.968, - "30.594734687507614" : 1.973, - "31.00994353507935" : 1.977, - "31.537086645229333" : 1.982, - "32.0663247949742" : 1.987, - "32.60472760388797" : 1.992, - "33.03619475398606" : 1.996, - "33.58575122565408" : 2.001, - "34.02982837682504" : 2.005, - "34.5813067511661" : 2.01, - "35.02806876723505" : 2.014, - "35.5849276406543" : 2.019, - "36.03748270215109" : 2.023, - "36.59977840627861" : 2.028, - "37.05525608528854" : 2.032, - "37.507566766919574" : 2.036, - "38.08102855989621" : 2.041, - "38.543227099417514" : 2.045, - "39.00386326461065" : 2.049, - "39.58577811572338" : 2.054, - "40.04680943073334" : 2.058, - "40.51405544999036" : 2.062, - "41.0908598624867" : 2.067, - "41.55706871702534" : 2.071, - "42.019513293225046" : 2.075, - "42.60108684093204" : 2.08, - "43.061231761174696" : 2.084, - "43.522317751002085" : 2.088, - "44.09716795297873" : 2.093, - "44.55218835169749" : 2.097, - "45.01002118988822" : 2.101, - "45.57489572290418" : 2.106, - "46.029597185187974" : 2.11, - "46.58960731626596" : 2.115, - "47.04065219303302" : 2.119, - "47.598379236280444" : 2.124, - "48.04825191809822" : 2.128, - "48.6068098528892" : 2.133, - "49.04916060527972" : 2.137, - "49.60739877522941" : 2.142, - "50.04982077056385" : 2.146, - "50.27048253483786" : 2.148, - "50.60477182421758" : 2.151, - "50.82369476361629" : 2.153, - "51.041630242676085" : 2.155, - "51.26384444040237" : 2.157, - "51.58952741647595" : 2.16, - "51.806965851741" : 2.162, - "52.0246892587817" : 2.164, - "52.354335330712104" : 2.167, - "52.56920570637093" : 2.169, - "52.781690271814945" : 2.171, - "53.10057203196366" : 2.174, - "53.30591656329605" : 2.176, - "53.508043564463755" : 2.178, - "53.80740558638622" : 2.181, - "54.09183144227637" : 2.184, - "54.27449006640994" : 2.186, - "54.54086991892528" : 2.189, - "54.78931394610698" : 2.192, - "55.024304654577385" : 2.195, - "55.25028561586158" : 2.198, - "55.53204897382451" : 2.202, - "55.809799531551135" : 2.206, - "56.01855792534715" : 2.209, - "56.31325353444322" : 2.213, - "56.546502104413015" : 2.216, - "56.79679016407324" : 2.219, - "57.07190059084341" : 2.222, - "57.263829081749115" : 2.224, - "57.5699301891221" : 2.227, - "57.79155953198323" : 2.229, - "58.016993745093195" : 2.231, - "58.25097296944128" : 2.233, - "58.614770092102795" : 2.236, - "58.870169418785736" : 2.238, - "59.1255496921232" : 2.24, - "59.25481338660549" : 2.241, - "59.51642327550386" : 2.243, - "59.78554266773462" : 2.245, - "60.05148429330425" : 2.247, - "60.31766532830169" : 2.249, - "60.58517181341848" : 2.251, - "60.85802814657944" : 2.253, - "61.124466815943826" : 2.255, - "61.25709881054189" : 2.256, - "61.520227996639555" : 2.258, - "61.78150320938279" : 2.26, - "62.04576234170719" : 2.262, - "62.30191634655182" : 2.264, - "62.55486027688868" : 2.266, - "62.804710938009535" : 2.268, - "63.05624906281357" : 2.27, - "63.29963484097734" : 2.272, - "63.53955870911066" : 2.274, - "63.7767306114337" : 2.276, - "64.01514595164996" : 2.278, - "64.3613568364468" : 2.281, - "64.58831448878769" : 2.283, - "64.81645427695375" : 2.285, - "65.03660905655711" : 2.287, - "65.25397790569089" : 2.289, - "65.57503423244165" : 2.292, - "65.7894506414346" : 2.294, - "66.09948833566203" : 2.297, - "66.30273451377424" : 2.299, - "66.50695406931784" : 2.301, - "66.80168447147955" : 2.304, - "67.09011898557438" : 2.307, - "67.28304404928855" : 2.309, - "67.56327319873834" : 2.312, - "67.83785510227342" : 2.315, - "68.02186320030975" : 2.317, - "68.28779654181614" : 2.32, - "68.54896571854982" : 2.323, - "68.80979193506514" : 2.326, - "69.06340521771226" : 2.329, - "69.31364191618037" : 2.332, - "69.56332772444263" : 2.335, - "69.8062959858188" : 2.338, - "70.04892708582088" : 2.341, - "70.28454241266003" : 2.344, - "70.51657985258328" : 2.347, - "70.8248049937725" : 2.351, - "71.05004287458353" : 2.354, - "71.27525921683012" : 2.357, - "71.56553859180981" : 2.361, - "71.7791912101715" : 2.364, - "72.06093800000794" : 2.368, - "72.26567448109809" : 2.371, - "72.53611186779125" : 2.375, - "72.79617346526896" : 2.379, - "73.05043124803663" : 2.383, - "73.29433063812164" : 2.387, - "73.53295059470005" : 2.391, - "73.76152032574859" : 2.395, - "74.0401059170504" : 2.4, - "74.2523336765338" : 2.404, - "74.51078899414813" : 2.409, - "74.75980047966218" : 2.414, - "75.04500006705949" : 2.42, - "75.1401814685356" : 2.422, - "75.27633916045112" : 2.425, - "75.41019636800324" : 2.428, - "75.50051833797933" : 2.43, - "75.62989386731543" : 2.433, - "75.75753885583948" : 2.436, - "75.8856510655306" : 2.439, - "76.0092683425045" : 2.442, - "76.13317059125406" : 2.445, - "76.2526549490746" : 2.448, - "76.40837628475155" : 2.452, - "76.52526524555715" : 2.455, - "76.63743311871893" : 2.458, - "76.7858164311727" : 2.462, - "76.89308013889293" : 2.465, - "77.03577229989678" : 2.469, - "77.13969007447199" : 2.472, - "77.27546421425922" : 2.476, - "77.37743192034634" : 2.479, - "77.50910047838892" : 2.483, - "77.64115424537242" : 2.487, - "77.76851343371447" : 2.491, - "77.89533415794556" : 2.495, - "78.01678101034904" : 2.499, - "78.13840514170599" : 2.503, - "78.25549706206111" : 2.507, - "78.40025775365746" : 2.512, - "78.51259213649048" : 2.516, - "78.62621137753294" : 2.52, - "78.76522292923664" : 2.525, - "78.90049754001014" : 2.53, - "79.00903865028287" : 2.534, - "79.14102283113512" : 2.539, - "79.27365482573317" : 2.544, - "79.37704490547962" : 2.548, - "79.50712540859796" : 2.553, - "79.63626815575685" : 2.558, - "79.76177088552552" : 2.563, - "79.88859906541353" : 2.568, - "80.01364202967204" : 2.573, - "80.1343971627945" : 2.578, - "80.2557504052833" : 2.583, - "80.39798197237067" : 2.589, - "80.51339636991851" : 2.594, - "80.62884804575096" : 2.599, - "80.76333815573507" : 2.605, - "80.89389830611535" : 2.611, - "81.0031071118857" : 2.616, - "81.13152748872955" : 2.622, - "81.2561098590716" : 2.628, - "81.38096146146914" : 2.634, - "81.50485791137443" : 2.64, - "81.62626500027433" : 2.646, - "81.76617702965287" : 2.653, - "81.88305190755095" : 2.659, - "82.00062181835536" : 2.665, - "82.1359991515131" : 2.672, - "82.2507011196218" : 2.678, - "82.38274328891676" : 2.685, - "82.51102117987278" : 2.692, - "82.63912179187535" : 2.699, - "82.76380108575738" : 2.706, - "82.8868094840827" : 2.713, - "83.00803349518488" : 2.72, - "83.12762637423393" : 2.727, - "83.26125162801517" : 2.735, - "83.37641501844666" : 2.742, - "83.50638700033647" : 2.75, - "83.63583128739752" : 2.758, - "83.76368254909639" : 2.766, - "83.88923332643188" : 2.774, - "84.01301048582643" : 2.782, - "84.13598409108613" : 2.79, - "84.2574036060809" : 2.798, - "84.37876596103928" : 2.806, - "84.51333642643687" : 2.815, - "84.63133379490478" : 2.823, - "84.76158329291331" : 2.832, - "84.87744502987643" : 2.84, - "85.0065968895049" : 2.849, - "85.1346850754126" : 2.858, - "85.25087237606128" : 2.866, - "85.38332046445528" : 2.875, - "85.50432908991306" : 2.883, - "85.62680399456535" : 2.891, - "85.75155701661026" : 2.899, - "85.87903798068204" : 2.907, - "86.00987978921268" : 2.915, - "86.12694105853379" : 2.922, - "86.26257271243318" : 2.93, - "86.38328891045838" : 2.937, - "86.50697825878252" : 2.944, - "86.63415851135848" : 2.951, - "86.7658154717125" : 2.958, - "86.87961613374004" : 2.964, - "87.01751347893718" : 2.971, - "87.1380217469749" : 2.977, - "87.26102186123698" : 2.983, - "87.38605985505755" : 2.989, - "87.51182353281847" : 2.995, - "87.57730325393283" : 2.998, - "87.64204486501198" : 3.001, - "87.70727192219734" : 3.004, - "87.75288480283544" : 3.006, - "87.81856499828035" : 3.009, - "87.8843272059514" : 3.012, - "87.95230622894704" : 3.015, - "88.01889270091104" : 3.018, - "88.06324640393578" : 3.02, - "88.13174152407164" : 3.023, - "88.1988084717039" : 3.026, - "88.26818004573117" : 3.029, - "88.3129413246676" : 3.031, - "88.38026424985418" : 3.034, - "88.44973523264039" : 3.037, - "88.51719401646419" : 3.04, - "88.56266772483977" : 3.042, - "88.63293066407229" : 3.045, - "88.7015450747189" : 3.048, - "88.77075179588758" : 3.051, - "88.81920196818739" : 3.053, - "88.88847661867469" : 3.056, - "88.95745635651043" : 3.059, - "89.00549812449222" : 3.061, - "89.07467667984587" : 3.064, - "89.14388257260822" : 3.067, - "89.19280576491937" : 3.069, - "89.26174905287684" : 3.072, - "89.33065920458131" : 3.075, - "89.37871422706431" : 3.077, - "89.44717206891555" : 3.08, - "89.51482387141299" : 3.083, - "89.5845069262183" : 3.086, - "89.6294562533904" : 3.088, - "89.69714202054715" : 3.091, - "89.76650613891749" : 3.094, - "89.8333419611852" : 3.097, - "89.87730548483106" : 3.099, - "89.94507409262025" : 3.102, - "90.01047097310216" : 3.105, - "90.07556879890087" : 3.108, - "90.14172615638876" : 3.111, - "90.20514314575489" : 3.114, - "90.27003884041041" : 3.117, - "90.33241120940124" : 3.12, - "90.39413576464625" : 3.123, - "90.45735062286919" : 3.126, - "90.51795268754438" : 3.129, - "90.57756066463006" : 3.132, - "90.63846344080108" : 3.135, - "90.69647093686766" : 3.138, - "90.75613690239607" : 3.141, - "90.8128959901315" : 3.144, - "90.88792475094937" : 3.148, - "90.94531922633576" : 3.151, - "91.00002138116724" : 3.154, - "91.07365344892186" : 3.158, - "91.1272993856895" : 3.161, - "91.19976091530748" : 3.165, - "91.25216507099455" : 3.168, - "91.32150930761311" : 3.172, - "91.39088005323406" : 3.176, - "91.44116845916813" : 3.179, - "91.50859824877057" : 3.183, - "91.57332826216118" : 3.187, - "91.6391202924599" : 3.191, - "91.70231112689943" : 3.195, - "91.75048295467418" : 3.198, - "91.82742864772716" : 3.203, - "91.88960054238744" : 3.207, - "91.9494669822464" : 3.211, - "92.01004667995082" : 3.215, - "92.06848494730619" : 3.219, - "92.12736144160726" : 3.223, - "92.19936900455937" : 3.228, - "92.2574858502608" : 3.232, - "92.3134554667689" : 3.236, - "92.3834549727902" : 3.241, - "92.43856056150176" : 3.245, - "92.5045414684425" : 3.25, - "92.57016616066366" : 3.255, - "92.6328624365274" : 3.26, - "92.69503433118768" : 3.265, - "92.7565666961654" : 3.27, - "92.81515159144021" : 3.275, - "92.88219368688274" : 3.281, - "92.94335823945232" : 3.287, - "93.00445900473491" : 3.294, - "93.06375964307418" : 3.303, - "93.12861723103877" : 3.317, - "93.18960367624857" : 3.327, - "93.2541257596517" : 3.334, - "93.32401094560022" : 3.34, - "93.37904032092992" : 3.344, - "93.45223830377046" : 3.349, - "93.51214036510136" : 3.353, - "93.57469001304565" : 3.357, - "93.63599373787777" : 3.361, - "93.69886232225704" : 3.365, - "93.75935006685943" : 3.369, - "93.78930689636915" : 3.371, - "93.82040941182579" : 3.373, - "93.84943428422037" : 3.375, - "93.87803584098306" : 3.377, - "93.92010148573928" : 3.38, - "93.94899132790295" : 3.382, - "93.97607607268533" : 3.384, - "94.00245170165387" : 3.386, - "94.04223094495423" : 3.389, - "94.06753792976404" : 3.391, - "94.10472840330007" : 3.394, - "94.12912331274653" : 3.396, - "94.16635520659878" : 3.399, - "94.19004762748197" : 3.401, - "94.22511986604603" : 3.404, - "94.26060133733444" : 3.407, - "94.28294842634651" : 3.409, - "94.31617166199408" : 3.412, - "94.34993750378426" : 3.415, - "94.38246736333817" : 3.418, - "94.41542385214922" : 3.421, - "94.447080571437" : 3.424, - "94.47834296931428" : 3.427, - "94.51010738142426" : 3.43, - "94.54036243721085" : 3.433, - "94.57069287797296" : 3.436, - "94.60208782086217" : 3.439, - "94.63264358814457" : 3.442, - "94.6635704814604" : 3.445, - "94.69312056346475" : 3.448, - "94.72262839674656" : 3.451, - "94.75312286196093" : 3.454, - "94.7828618206073" : 3.457, - "94.81250634093266" : 3.46, - "94.85319186075212" : 3.464, - "94.88279413235493" : 3.467, - "94.91347333217969" : 3.47, - "94.94321560445135" : 3.473, - "94.97293468134593" : 3.476, - "95.00415897253228" : 3.479, - "95.03420029948711" : 3.482, - "95.06544530083157" : 3.485, - "95.09555455710503" : 3.488, - "95.12571434616427" : 3.491, - "95.15726502944251" : 3.494, - "95.18774375493673" : 3.497, - "95.22932063996144" : 3.501, - "95.25935368285303" : 3.504, - "95.28953004003878" : 3.507, - "95.32081811851212" : 3.51, - "95.35140453682854" : 3.513, - "95.38213261262646" : 3.516, - "95.41413394894526" : 3.519, - "95.44505255819784" : 3.522, - "95.47728253466224" : 3.525, - "95.50835936952281" : 3.528, - "95.53927052311846" : 3.531, - "95.57146322129826" : 3.534, - "95.6027413588957" : 3.537, - "95.63397724777059" : 3.54, - "95.66625361498916" : 3.543, - "95.69731305331692" : 3.546, - "95.72924563191079" : 3.549, - "95.76018826494678" : 3.552, - "95.79134959725245" : 3.555, - "95.81313751199542" : 3.557, - "95.84442890409407" : 3.56, - "95.87586940933113" : 3.563, - "95.90812009595365" : 3.566, - "95.93979172655527" : 3.569, - "95.97159258854353" : 3.572, - "96.00453085241544" : 3.575, - "96.03657609426946" : 3.578, - "96.06984820589018" : 3.581, - "96.1017650447639" : 3.584, - "96.13394283162984" : 3.587, - "96.15642743609179" : 3.589, - "96.18849918694819" : 3.592, - "96.22084016986008" : 3.595, - "96.2541189087314" : 3.598, - "96.28646154845595" : 3.601, - "96.31853412771866" : 3.604, - "96.35145665187042" : 3.607, - "96.38344307687538" : 3.61, - "96.41634820449433" : 3.613, - "96.44790302980418" : 3.616, - "96.46880952021779" : 3.618, - "96.50117038488148" : 3.621, - "96.5324377531967" : 3.624, - "96.56363305016168" : 3.627, - "96.59612066099302" : 3.63, - "96.62764152164358" : 3.633, - "96.65941173259783" : 3.636, - "96.69231686021676" : 3.639, - "96.72398683400574" : 3.642, - "96.75685136971477" : 3.645, - "96.78863649198286" : 3.648, - "96.82049948444546" : 3.651, - "96.85338473031261" : 3.654, - "96.8853719837239" : 3.657, - "96.89612055578543" : 3.658, - "96.90679954171569" : 3.659, - "96.92896520974267" : 3.661, - "96.93967401830061" : 3.662, - "96.9610717536647" : 3.664, - "96.97172008856094" : 3.665, - "96.99313439205153" : 3.667, - "97.00375373272641" : 3.668, - "97.02590117581425" : 3.67, - "97.03621317774272" : 3.671, - "97.05676511024942" : 3.673, - "97.06703072142369" : 3.674, - "97.08759922205688" : 3.676, - "97.09865016242686" : 3.677, - "97.11883345411911" : 3.679, - "97.12875610507503" : 3.68, - "97.14857572639077" : 3.682, - "97.1584113946826" : 3.683, - "97.17898983619168" : 3.685, - "97.1888188772329" : 3.686, - "97.20821766813577" : 3.688, - "97.22746651749388" : 3.69, - "97.23684159186924" : 3.691, - "97.2566347041826" : 3.693, - "97.2660785362829" : 3.694, - "97.28475827049603" : 3.696, - "97.30346534211786" : 3.698, - "97.31282716199202" : 3.699, - "97.33203956147184" : 3.701, - "97.35032248905549" : 3.703, - "97.35953850941652" : 3.704, - "97.37777007580804" : 3.706, - "97.39591051750385" : 3.708, - "97.41481474983094" : 3.71, - "97.42381786976655" : 3.711, - "97.44158801383529" : 3.713, - "97.45927200364625" : 3.715, - "97.4775988367651" : 3.717, - "97.48633355305154" : 3.718, - "97.50367209742515" : 3.72, - "97.52076957555832" : 3.722, - "97.5377601892756" : 3.724, - "97.54717502715454" : 3.725, - "97.56417806696669" : 3.727, - "97.58109081048947" : 3.729, - "97.59798698588575" : 3.731, - "97.61549701036856" : 3.733, - "97.63200217797963" : 3.735, - "97.64836485970288" : 3.737, - "97.65648158487119" : 3.738, - "97.67271089317619" : 3.74, - "97.68986138931412" : 3.742, - "97.70623732553857" : 3.744, - "97.72258509594796" : 3.746, - "97.73882020309723" : 3.748, - "97.75566004686344" : 3.75, - "97.77145527025435" : 3.752, - "97.78720327448475" : 3.754, - "97.80286595286373" : 3.756, - "97.81915076439248" : 3.758, - "97.8344174645483" : 3.76, - "97.84966842498395" : 3.762, - "97.86498565792556" : 3.764, - "97.88060857280095" : 3.766, - "97.89536248944185" : 3.768, - "97.90998800310244" : 3.77, - "97.92444866390444" : 3.772, - "97.93942542184666" : 3.774, - "97.953537323586" : 3.776, - "97.97454570797754" : 3.779, - "97.98921098514171" : 3.781, - "98.00278359436375" : 3.783, - "98.01623442785608" : 3.785, - "98.03623215653161" : 3.788, - "98.04996050614268" : 3.79, - "98.06281737230027" : 3.792, - "98.08206125122044" : 3.795, - "98.09561232187804" : 3.797, - "98.11440720457028" : 3.8, - "98.1267728257774" : 3.802, - "98.14576652598754" : 3.805, - "98.15758042858248" : 3.807, - "98.17506311565657" : 3.81, - "98.19291692876408" : 3.813, - "98.20416502983932" : 3.815, - "98.22063374757212" : 3.818, - "98.23737583939203" : 3.821, - "98.25337899277041" : 3.824, - "98.26909717437313" : 3.827, - "98.28513180719185" : 3.83, - "98.30028915771281" : 3.833, - "98.3151772761783" : 3.836, - "98.33012752511813" : 3.839, - "98.34427339151678" : 3.842, - "98.36282720796856" : 3.846, - "98.37597318793344" : 3.849, - "98.39331918796398" : 3.853, - "98.40941015241276" : 3.857, - "98.42563946071776" : 3.861, - "98.44082083502214" : 3.865, - "98.4482416988778" : 3.867, - "98.45594753450911" : 3.869, - "98.46307348571321" : 3.871, - "98.47009091568879" : 3.873, - "98.47703793112677" : 3.875, - "98.48761005264116" : 3.878, - "98.49434002562211" : 3.88, - "98.50105674410186" : 3.882, - "98.51107051975347" : 3.885, - "98.51744427801485" : 3.887, - "98.52358939613065" : 3.889, - "98.53265630335325" : 3.892, - "98.54199658466297" : 3.895, - "98.54774489614928" : 3.897, - "98.55610517277702" : 3.9, - "98.56449858565774" : 3.903, - "98.57268324014467" : 3.906, - "98.58070635539829" : 3.909, - "98.5882837880493" : 3.912, - "98.5955986158954" : 3.915, - "98.60287119501895" : 3.918, - "98.6097395118561" : 3.921, - "98.61869044219327" : 3.925, - "98.62698941675299" : 3.929, - "98.63305832148691" : 3.932, - "98.64118830115642" : 3.936, - "98.6489844330771" : 3.94, - "98.65656020891547" : 3.944, - "98.66586818237852" : 3.949, - "98.67298584951938" : 3.953, - "98.68022280717098" : 3.957, - "98.68890699067163" : 3.962, - "98.6957728222898" : 3.966, - "98.70389451789606" : 3.971, - "98.71194000012045" : 3.976, - "98.71971625028935" : 3.981, - "98.72682231974166" : 3.986, - "98.73502685598038" : 3.992, - "98.74258109325429" : 3.998, - "98.75101675485756" : 4.005, - "98.75800104858016" : 4.011, - "98.76593221073176" : 4.018, - "98.77385508882011" : 4.025, - "98.7816040015803" : 4.032, - "98.78912013216328" : 4.039, - "98.79744892935068" : 4.047, - "98.80567169052854" : 4.055, - "98.81251929720757" : 4.062, - "98.82103448581802" : 4.071, - "98.82833026031865" : 4.079, - "98.83640887879602" : 4.088, - "98.84383222787065" : 4.096, - "98.85194729622631" : 4.105, - "98.85948579378005" : 4.114, - "98.8676878447998" : 4.124, - "98.87531746704924" : 4.134, - "98.88321963497948" : 4.145, - "98.89079126878622" : 4.156, - "98.89899746183758" : 4.168, - "98.9067273212523" : 4.179, - "98.91444061254053" : 4.19, - "98.9221182823568" : 4.202, - "98.92985559742846" : 4.214, - "98.93802119856991" : 4.228, - "98.94579330670719" : 4.242, - "98.95323405231464" : 4.256, - "98.96101858654679" : 4.271, - "98.96922146597285" : 4.287, - "98.97695960945082" : 4.302, - "98.98476071180946" : 4.317, - "98.99255021647956" : 4.333, - "99.00029747242709" : 4.349, - "99.00792792308287" : 4.365, - "99.01603305056263" : 4.382, - "99.02359971393142" : 4.4, - "99.0312947802805" : 4.422, - "99.0392831024685" : 4.446, - "99.04701379028955" : 4.467, - "99.05497726028781" : 4.487, - "99.06269386520134" : 4.507, - "99.07047674262084" : 4.527, - "99.07843772740013" : 4.549, - "99.08611705402905" : 4.574, - "99.09377981253148" : 4.599, - "99.10183523563177" : 4.626, - "99.10962888233348" : 4.651, - "99.11729246924224" : 4.681, - "99.12506209216055" : 4.717, - "99.13299076909318" : 4.753, - "99.14072145691422" : 4.792, - "99.14849770708312" : 4.832, - "99.15627147203305" : 4.872, - "99.16408334367391" : 4.915, - "99.17192420953613" : 4.96, - "99.17980732412092" : 5.01, - "99.18752475744077" : 5.054, - "99.19539461752434" : 5.097, - "99.20327607529647" : 5.145, - "99.2110332721199" : 5.197, - "99.21879958141291" : 5.248, - "99.22272622739146" : 5.274, - "99.22662553596129" : 5.301, - "99.2305712352853" : 5.325, - "99.23440344294283" : 5.349, - "99.23839801824" : 5.375, - "99.24221697139635" : 5.403, - "99.24625131019708" : 5.435, - "99.25012079613924" : 5.465, - "99.2539977377383" : 5.493, - "99.25787385093105" : 5.525, - "99.26175824818704" : 5.563, - "99.26566584082012" : 5.6, - "99.26960325608088" : 5.632, - "99.27354398496695" : 5.663, - "99.27735134043475" : 5.691, - "99.28139313489241" : 5.719, - "99.28515824163766" : 5.749, - "99.28909317167945" : 5.784, - "99.29299082343663" : 5.823, - "99.29694646363653" : 5.857, - "99.30083831654945" : 5.892, - "99.30477407499757" : 5.928, - "99.30868829488124" : 5.97, - "99.31253872747791" : 6.008, - "99.31644880532997" : 6.049, - "99.3204052739362" : 6.09, - "99.3242424520317" : 6.127, - "99.32819395019997" : 6.172, - "99.33211231211527" : 6.208, - "99.3359677151499" : 6.247, - "99.33991921331818" : 6.289, - "99.34375556300735" : 6.331, - "99.3477062327693" : 6.378, - "99.3516850683463" : 6.413, - "99.35548413975086" : 6.453, - "99.35940912891675" : 6.503, - "99.36334902939649" : 6.549, - "99.36722017215128" : 6.592, - "99.3711393624729" : 6.644, - "99.37505358235659" : 6.697, - "99.37893052395565" : 6.744, - "99.38284888587096" : 6.793, - "99.38673245472062" : 6.843, - "99.39066738476241" : 6.893, - "99.39456917855121" : 6.949, - "99.3984535758072" : 6.995, - "99.40240755919446" : 7.046, - "99.40631598023386" : 7.094, - "99.41021363199104" : 7.149, - "99.41408560315216" : 7.197, - "99.41802384681925" : 7.257, - "99.42192232698277" : 7.319, - "99.4258249491779" : 7.377, - "99.42970189077697" : 7.426, - "99.43365421735157" : 7.479, - "99.43751873285576" : 7.538, - "99.44146443217979" : 7.603, - "99.44535131465474" : 7.648, - "99.44923322669176" : 7.699, - "99.45315821585766" : 7.755, - "99.45704344151997" : 7.816, - "99.46097340112381" : 7.867, - "99.4648611120051" : 7.932, - "99.46877781710775" : 7.995, - "99.47275251065312" : 8.045, - "99.47658720352963" : 8.104, - "99.48051881994613" : 8.171, - "99.48438085023135" : 8.237, - "99.4883141234605" : 8.307, - "99.49225236712758" : 8.364, - "99.49610362813058" : 8.426, - "99.50006258195579" : 8.487, - "99.5039237838347" : 8.558, - "99.50785871387649" : 8.621, - "99.51177541897913" : 8.693, - "99.51563744926436" : 8.757, - "99.5195640952429" : 8.83, - "99.52347003106333" : 8.891, - "99.52741158835572" : 8.945, - "99.53126947660932" : 9.004, - "99.53520192143213" : 9.08, - "99.53907554940591" : 9.146, - "99.54301213626034" : 9.229, - "99.54692801295667" : 9.3, - "99.5507834159913" : 9.357, - "99.55470094950027" : 9.43, - "99.55859942966379" : 9.496, - "99.56252773245498" : 9.568, - "99.56642704102481" : 9.639, - "99.57036445628557" : 9.701, - "99.57424719672892" : 9.766, - "99.57816555864422" : 9.834, - "99.58210463071762" : 9.9, - "99.58600890972541" : 9.965, - "99.58986928319798" : 10.031, - "99.59376279292354" : 10.1, - "99.59765713105543" : 10.164, - "99.60160945763003" : 10.23, - "99.60550545257458" : 10.296, - "99.60941967245824" : 10.359, - "99.61133080584906" : 10.397, - "99.61330075608893" : 10.434, - "99.61527484836043" : 10.477, - "99.6171942658145" : 10.516, - "99.61916255924172" : 10.562, - "99.6211159413551" : 10.597, - "99.62307098028113" : 10.633, - "99.62502601920714" : 10.675, - "99.62695454913079" : 10.712, - "99.62893444024655" : 10.746, - "99.63089776323582" : 10.78, - "99.63285777259979" : 10.825, - "99.6347987286183" : 10.858, - "99.636722288104" : 10.892, - "99.63868146906165" : 10.934, - "99.64062822392442" : 10.971, - "99.64261805591609" : 11.0, - "99.64458055049903" : 11.036, - "99.6464900270772" : 11.073, - "99.64846991819297" : 11.117, - "99.65041584464943" : 11.16, - "99.65238496648297" : 11.193, - "99.65433503497106" : 11.236, - "99.6562875886781" : 11.273, - "99.65822357425866" : 11.307, - "99.6602092642187" : 11.348, - "99.6621162555779" : 11.377, - "99.66408786263041" : 11.411, - "99.66603710271217" : 11.443, - "99.66798137235598" : 11.491, - "99.6699463521579" : 11.528, - "99.67190801833452" : 11.572, - "99.67386471407319" : 11.612, - "99.67581395415495" : 11.648, - "99.67779218845807" : 11.688, - "99.67970332184889" : 11.725, - "99.6816716152761" : 11.771, - "99.68362251217052" : 11.807, - "99.68557175225226" : 11.853, - "99.68751187986445" : 11.895, - "99.68948928576124" : 11.933, - "99.69144846671888" : 11.975, - "99.6933761682362" : 12.01, - "99.69534943210137" : 12.042, - "99.69727133477441" : 12.079, - "99.69926779401666" : 12.121, - "99.70121951931739" : 12.161, - "99.70312733908293" : 12.212, - "99.70513373920107" : 12.254, - "99.70705149984249" : 12.29, - "99.7090197932697" : 12.333, - "99.71098228785266" : 12.371, - "99.71290916096365" : 12.41, - "99.71489319411104" : 12.445, - "99.71682420925364" : 12.484, - "99.71875605280259" : 12.52, - "99.72074257116894" : 12.552, - "99.72266861587362" : 12.59, - "99.72461702754904" : 12.625, - "99.72656378241182" : 12.66, - "99.72854533034024" : 12.699, - "99.7305219078307" : 12.736, - "99.73244132528477" : 12.779, - "99.73440464827404" : 12.829, - "99.73635554516845" : 12.864, - "99.73828656031105" : 12.901, - "99.74026976505212" : 12.945, - "99.74222894600977" : 12.981, - "99.74416327477768" : 13.021, - "99.74611997051636" : 13.062, - "99.74806506856649" : 13.1, - "99.75000022574072" : 13.141, - "99.75196437713632" : 13.186, - "99.75393432737619" : 13.224, - "99.75590096399075" : 13.267, - "99.7578261802891" : 13.306, - "99.75979447371633" : 13.347, - "99.76172051842099" : 13.39, - "99.7637020663494" : 13.434, - "99.76566538933866" : 13.472, - "99.76758729201171" : 13.508, - "99.76953818890611" : 13.546, - "99.7715354765547" : 13.585, - "99.7734698053226" : 13.623, - "99.77542153062333" : 13.663, - "99.77736414345449" : 13.702, - "99.7793456913829" : 13.735, - "99.7812692508686" : 13.773, - "99.78322428979463" : 13.822, - "99.78519838206611" : 13.863, - "99.78715259258581" : 13.897, - "99.78907863729049" : 13.934, - "99.79101876490267" : 13.984, - "99.79302350820817" : 14.026, - "99.79496612103932" : 14.072, - "99.79690044980724" : 14.11, - "99.798849689889" : 14.147, - "99.80080307200237" : 14.19, - "99.80274982686515" : 14.233, - "99.80471646347972" : 14.297, - "99.80569066931743" : 14.32, - "99.80665741949822" : 14.341, - "99.80761837083475" : 14.365, - "99.80861577204955" : 14.384, - "99.80957920860504" : 14.402, - "99.81055010081747" : 14.43, - "99.81152596346783" : 14.465, - "99.81252336468263" : 14.493, - "99.81350419777094" : 14.513, - "99.8144734331707" : 14.539, - "99.81544515378945" : 14.559, - "99.81641687440819" : 14.585, - "99.8174316721558" : 14.608, - "99.81837854058482" : 14.628, - "99.81935357482885" : 14.655, - "99.82033523632349" : 14.682, - "99.82131772622445" : 14.704, - "99.82227205031037" : 14.726, - "99.8232429425228" : 14.754, - "99.824233716487" : 14.776, - "99.8252070939184" : 14.806, - "99.82619621106994" : 14.836, - "99.82718284300253" : 14.862, - "99.82815787724657" : 14.884, - "99.82910640248822" : 14.914, - "99.83007895151329" : 14.943, - "99.83107386750912" : 14.968, - "99.8320671266923" : 14.995, - "99.83302145077822" : 15.019, - "99.83399648502225" : 15.043, - "99.83499140101809" : 15.079, - "99.83594986713564" : 15.11, - "99.83692075934805" : 15.139, - "99.83791898896918" : 15.175, - "99.83890976293338" : 15.2, - "99.8398500041118" : 15.223, - "99.84084243488866" : 15.251, - "99.84180338622517" : 15.272, - "99.84281569875382" : 15.296, - "99.84378162052829" : 15.319, - "99.84473925823951" : 15.351, - "99.84572091973415" : 15.379, - "99.84668352788331" : 15.418, - "99.84768838475505" : 15.449, - "99.84864602246627" : 15.47, - "99.84961857149133" : 15.498, - "99.8505911205164" : 15.534, - "99.8515852081059" : 15.573, - "99.85255361509934" : 15.612, - "99.8535195368738" : 15.647, - "99.85450368358742" : 15.682, - "99.85548783030103" : 15.714, - "99.85646866338934" : 15.751, - "99.85743707038279" : 15.783, - "99.85840879100152" : 15.811, - "99.85938216843292" : 15.851, - "99.86036714355285" : 15.888, - "99.86132975170202" : 15.931, - "99.86233129494845" : 15.963, - "99.86329224628497" : 16.002, - "99.86426810893533" : 16.04, - "99.86526633855647" : 16.07, - "99.86623391714357" : 16.095, - "99.86720315254334" : 16.13, - "99.86818398563166" : 16.168, - "99.86914410856185" : 16.195, - "99.87014399499563" : 16.232, - "99.87110743155112" : 16.258, - "99.87208909304576" : 16.289, - "99.87305998525818" : 16.324, - "99.87405738647298" : 16.356, - "99.87502827868539" : 16.39, - "99.87599917089781" : 16.418, - "99.87697006311024" : 16.447, - "99.87793929851" : 16.496, - "99.87891598956669" : 16.545, - "99.87989847946764" : 16.581, - "99.88086522964844" : 16.615, - "99.88186925811384" : 16.664, - "99.88281944016815" : 16.697, - "99.88379364600586" : 16.735, - "99.88476619503092" : 16.776, - "99.88575862580778" : 16.808, - "99.88674194411506" : 16.836, - "99.88771697835911" : 16.868, - "99.88867958650827" : 16.892, - "99.88966290481555" : 16.929, - "99.8906379390596" : 16.972, - "99.89162208577321" : 17.011, - "99.89258055189076" : 17.051, - "99.89356304179172" : 17.091, - "99.89453476241046" : 17.132, - "99.89550896824817" : 17.164, - "99.89648483089853" : 17.213, - "99.89746980601846" : 17.256, - "99.89844732548148" : 17.3, - "99.89942153131919" : 17.336, - "99.90039408034426" : 17.392, - "99.90136828618198" : 17.447, - "99.90236651580311" : 17.498, - "99.9028378790018" : 17.519, - "99.90332912395228" : 17.544, - "99.90381125643319" : 17.566, - "99.90431161385324" : 17.592, - "99.90480617242902" : 17.614, - "99.9052742220024" : 17.632, - "99.90576960898451" : 17.65, - "99.90626333915397" : 17.678, - "99.90675789772975" : 17.704, - "99.90724085861697" : 17.731, - "99.90772133428524" : 17.751, - "99.9082117508294" : 17.773, - "99.9086971969356" : 17.796, - "99.9091992111683" : 17.826, - "99.90967720161758" : 17.845, - "99.91016430453645" : 17.864, - "99.91064809383" : 17.885, - "99.91114265240579" : 17.909, - "99.91163306894994" : 17.933, - "99.91212514230675" : 17.956, - "99.91261721566354" : 17.976, - "99.91308940726856" : 17.999, - "99.9135922499076" : 18.022, - "99.91407189716952" : 18.046, - "99.91456314212" : 18.075, - "99.91504444619459" : 18.104, - "99.91554397520832" : 18.124, - "99.91603770537778" : 18.141, - "99.91651983785869" : 18.166, - "99.91699617149531" : 18.188, - "99.9174940436964" : 18.218, - "99.917972862552" : 18.243, - "99.91846245068984" : 18.28, - "99.91895038201503" : 18.309, - "99.91945156784139" : 18.342, - "99.91994861163614" : 18.363, - "99.92042660208544" : 18.388, - "99.92090459253473" : 18.418, - "99.92140163632948" : 18.451, - "99.92189536649893" : 18.472, - "99.92237252854189" : 18.502, - "99.92285548942912" : 18.529, - "99.9233467343796" : 18.559, - "99.92382969526685" : 18.602, - "99.92433253790587" : 18.627, - "99.9248154987931" : 18.654, - "99.92529680286768" : 18.693, - "99.92578390578655" : 18.714, - "99.9262710087054" : 18.75, - "99.92676059684322" : 18.792, - "99.92724935657473" : 18.816, - "99.92774805718214" : 18.84, - "99.92823101806937" : 18.875, - "99.92871480736294" : 18.916, - "99.92920688071973" : 18.966, - "99.92968901320064" : 19.01, - "99.93017777293215" : 19.06, - "99.93067067469528" : 19.098, - "99.93117600255329" : 19.115, - "99.93165979184684" : 19.14, - "99.93214855157835" : 19.157, - "99.93262737043396" : 19.199, - "99.93311447335282" : 19.236, - "99.93360323308433" : 19.279, - "99.93408702237788" : 19.312, - "99.93458406617263" : 19.341, - "99.93506205662192" : 19.37, - "99.93554750272813" : 19.404, - "99.93604951696082" : 19.435, - "99.93652750741012" : 19.478, - "99.93701378192264" : 19.525, - "99.9375108257174" : 19.561, - "99.93799047297934" : 19.593, - "99.93847674749188" : 19.637, - "99.93896550722337" : 19.679, - "99.93945923739282" : 19.726, - "99.93994882553066" : 19.792, - "99.94043510004319" : 19.858, - "99.94092965861897" : 19.906, - "99.94140930588091" : 19.975, - "99.94189806561242" : 20.046, - "99.94238765375025" : 20.105, - "99.9428813839197" : 20.178, - "99.94336848683855" : 20.213, - "99.94384813410049" : 20.252, - "99.9443435210826" : 20.296, - "99.94482648196983" : 20.354, - "99.94531938373296" : 20.435, - "99.94580980027712" : 20.493, - "99.9462911043517" : 20.524, - "99.94678152089585" : 20.578, - "99.94728022150326" : 20.653, - "99.94775986876519" : 20.709, - "99.94824282965243" : 20.775, - "99.94873076097761" : 20.884, - "99.94922200592809" : 20.975, - "99.94971490769122" : 21.031, - "99.95019869698478" : 21.137, - "99.95069159874791" : 21.225, - "99.95117538804146" : 21.295, - "99.95141811109457" : 21.328, - "99.95167408864887" : 21.369, - "99.95191018445138" : 21.39, - "99.95215787794243" : 21.414, - "99.95239563055759" : 21.45, - "99.95263918201701" : 21.494, - "99.9528843902891" : 21.535, - "99.95312794174852" : 21.595, - "99.9533731500206" : 21.63, - "99.95361421626106" : 21.707, - "99.95385776772048" : 21.757, - "99.95411126005581" : 21.806, - "99.95434818426465" : 21.866, - "99.95459339253672" : 21.902, - "99.95484357124674" : 21.965, - "99.95507966704925" : 22.067, - "99.95532818894662" : 22.12, - "99.9555667699681" : 22.226, - "99.95581114983386" : 22.36, - "99.95605801491858" : 22.414, - "99.95629990956537" : 22.468, - "99.95654511783745" : 22.526, - "99.95679363973483" : 22.585, - "99.95703470597527" : 22.644, - "99.95727660062205" : 22.733, - "99.95752263730046" : 22.775, - "99.95776453194723" : 22.823, - "99.95800808340667" : 22.918, - "99.95825577689772" : 22.996, - "99.95849684313818" : 23.074, - "99.95874205141025" : 23.183, - "99.95898477446336" : 23.227, - "99.95923412476705" : 23.375, - "99.95947353419486" : 23.503, - "99.95971791406062" : 23.667, - "99.9599631223327" : 23.725, - "99.9602058453858" : 23.856, - "99.9604518820642" : 23.943, - "99.96069957555525" : 24.095, - "99.96093898498306" : 24.265, - "99.96118170803616" : 24.337, - "99.96142940152721" : 24.567, - "99.96167046776766" : 24.686, - "99.96191650444607" : 24.804, - "99.96216088431183" : 25.048, - "99.96240360736493" : 25.183, - "99.96264715882435" : 25.341, - "99.96289153869012" : 25.521, - "99.96313509014954" : 25.636, - "99.96338361204691" : 25.768, - "99.96362467828737" : 25.844, - "99.9638682297468" : 25.97, - "99.96411178120623" : 26.108, - "99.9643569894783" : 26.289, - "99.96459971253141" : 26.413, - "99.96484574920981" : 26.578, - "99.96508847226292" : 26.716, - "99.96533285212867" : 26.862, - "99.96558137402604" : 26.985, - "99.96582078345385" : 27.172, - "99.96606599172593" : 27.398, - "99.96631037159167" : 27.775, - "99.96655309464478" : 27.909, - "99.96679913132319" : 28.094, - "99.96704185437629" : 28.266, - "99.96728540583572" : 28.593, - "99.96753227092044" : 28.764, - "99.96777416556722" : 29.002, - "99.96801937383931" : 29.143, - "99.9682654105177" : 29.345, - "99.96851144719611" : 29.683, - "99.96875002821758" : 29.838, - "99.96899523648966" : 29.948, - "99.96923961635542" : 30.234, - "99.96948316781484" : 30.612, - "99.96972671927428" : 30.842, - "99.96997192754635" : 31.275, - "99.97021796422476" : 31.561, - "99.97045903046521" : 31.802, - "99.9707042387373" : 32.042, - "99.97094779019672" : 32.389, - "99.97119217006248" : 32.52, - "99.97143737833456" : 32.82, - "99.97168341501296" : 33.147, - "99.97192448125341" : 33.391, - "99.97216968952549" : 33.613, - "99.97241241257859" : 33.994, - "99.97265762085067" : 34.184, - "99.97290282912275" : 34.559, - "99.97314472376952" : 34.801, - "99.97339490247955" : 35.038, - "99.97363348350103" : 35.261, - "99.97387786336678" : 35.553, - "99.97412141482621" : 35.975, - "99.97436579469196" : 36.405, - "99.97461017455772" : 36.705, - "99.9748553828298" : 37.2, - "99.9750981058829" : 37.552, - "99.97534248574866" : 37.94, - "99.9755868656144" : 38.18, - "99.97570946975046" : 38.348, - "99.97583290229281" : 38.507, - "99.97595302120988" : 38.878, - "99.97607645375224" : 38.996, - "99.97619740107564" : 39.098, - "99.97631917680535" : 39.18, - "99.97644095253506" : 39.59, - "99.97656272826477" : 39.962, - "99.97668616080713" : 40.098, - "99.97680876494317" : 40.233, - "99.97692971226657" : 40.684, - "99.97705148799628" : 41.071, - "99.977173263726" : 41.155, - "99.97729586786204" : 41.307, - "99.97741764359175" : 41.475, - "99.97754024772779" : 41.69, - "99.9776620234575" : 42.02, - "99.97778462759354" : 42.141, - "99.97790640332326" : 42.354, - "99.97802735064664" : 42.49, - "99.97815078318901" : 42.763, - "99.97827255891872" : 42.876, - "99.97839433464844" : 43.135, - "99.97851611037815" : 43.305, - "99.97863871451419" : 43.445, - "99.97876297546287" : 43.573, - "99.97888226597362" : 43.854, - "99.97900404170333" : 43.978, - "99.97912664583937" : 44.395, - "99.97924842156908" : 44.526, - "99.97937102570512" : 44.648, - "99.97949280143484" : 44.952, - "99.97961540557088" : 45.246, - "99.97973635289426" : 45.645, - "99.97985978543663" : 45.979, - "99.97998156116634" : 46.552, - "99.98010499370871" : 46.955, - "99.98022511262577" : 46.987, - "99.98034688835548" : 47.649, - "99.98046949249152" : 47.893, - "99.98059209662756" : 48.057, - "99.9807147007636" : 48.159, - "99.980835648087" : 48.948, - "99.98095908062936" : 48.975, - "99.98107919954643" : 49.33, - "99.98120180368247" : 49.945, - "99.9813277214438" : 50.055, - "99.98144535514189" : 50.448, - "99.98156795927792" : 50.846, - "99.98168973500765" : 51.158, - "99.98181316755002" : 51.533, - "99.9819341148734" : 51.879, - "99.98205671900944" : 51.936, - "99.98217849473914" : 52.312, - "99.98230027046887" : 52.96, - "99.98242287460491" : 53.398, - "99.98254465033462" : 53.524, - "99.98267139650228" : 53.795, - "99.98278820179405" : 54.071, - "99.98291163433642" : 54.497, - "99.9830325816598" : 54.594, - "99.98315518579584" : 54.758, - "99.98327696152556" : 54.916, - "99.9833995656616" : 55.158, - "99.98352216979764" : 55.58, - "99.98364311712102" : 55.73, - "99.98376489285074" : 55.765, - "99.9838883253931" : 55.982, - "99.98400927271649" : 56.174, - "99.98413187685253" : 56.298, - "99.98425365258224" : 56.755, - "99.98437791353093" : 56.838, - "99.98449720404167" : 56.923, - "99.98462063658404" : 57.057, - "99.98474158390742" : 57.343, - "99.98486418804346" : 57.665, - "99.98498596377318" : 57.734, - "99.98510939631554" : 57.916, - "99.9852295152326" : 58.041, - "99.98535211936864" : 58.174, - "99.98547389509837" : 58.404, - "99.9855998128597" : 58.732, - "99.98571827496411" : 58.804, - "99.98584087910015" : 58.879, - "99.98596348323619" : 59.008, - "99.98608940099753" : 59.182, - "99.98621200513357" : 59.237, - "99.98632881042533" : 59.278, - "99.98645307137403" : 59.49, - "99.98657401869741" : 59.6, - "99.9866949660208" : 59.937, - "99.98681757015684" : 60.116, - "99.98693934588655" : 60.2, - "99.98706195002259" : 60.323, - "99.98718289734599" : 60.427, - "99.98730632988834" : 60.58, - "99.98742810561806" : 61.043, - "99.9875507097541" : 61.276, - "99.98767579910911" : 61.442, - "99.98779343280721" : 61.486, - "99.98785473487523" : 61.524, - "99.98791520853692" : 61.673, - "99.98797733901127" : 61.982, - "99.98803946948561" : 62.047, - "99.98809828633465" : 62.128, - "99.988160416809" : 62.191, - "99.98822089047069" : 62.308, - "99.9882821925387" : 62.407, - "99.98834266620041" : 62.532, - "99.98840479667476" : 62.594, - "99.98846609874278" : 62.731, - "99.98852657240447" : 62.891, - "99.98858704606616" : 63.006, - "99.98864834813418" : 63.052, - "99.9887096502022" : 63.069, - "99.98877095227022" : 63.177, - "99.98883059752559" : 63.345, - "99.98889272799994" : 63.513, - "99.98895403006796" : 63.589, - "99.98901533213598" : 63.606, - "99.98907580579767" : 63.808, - "99.98913710786569" : 63.99, - "99.98919758152738" : 64.114, - "99.98925805518907" : 64.146, - "99.98932101406974" : 64.535, - "99.98938065932512" : 64.554, - "99.98944196139314" : 64.69, - "99.98950326346116" : 64.887, - "99.9895653939355" : 65.044, - "99.98962421078454" : 65.159, - "99.98968551285256" : 65.277, - "99.98974764332691" : 65.394, - "99.98980728858227" : 65.415, - "99.9898685906503" : 65.528, - "99.9899323779373" : 65.796, - "99.98999119478634" : 65.848, - "99.99005249685436" : 65.896, - "99.99011297051605" : 66.03, - "99.99017427258407" : 66.119, - "99.99023723146473" : 66.155, - "99.99029604831378" : 66.222, - "99.99035652197549" : 66.34, - "99.9904178240435" : 66.497, - "99.9904816113305" : 66.842, - "99.99054291339851" : 66.857, - "99.99060173024756" : 66.876, - "99.99066220390925" : 66.916, - "99.99072350597727" : 66.941, - "99.99078563645162" : 67.103, - "99.99084528170698" : 67.204, - "99.990906583775" : 67.23, - "99.9909670574367" : 67.361, - "99.99102835950472" : 67.429, - "99.99109131838539" : 67.83, - "99.99115096364076" : 67.891, - "99.99121392252142" : 67.933, - "99.99127273937047" : 67.988, - "99.99133321303216" : 68.026, - "99.99139451510018" : 68.208, - "99.9914558171682" : 68.278, - "99.99151711923622" : 68.301, - "99.99157759289793" : 68.339, - "99.99163972337226" : 68.847, - "99.99170019703396" : 68.917, - "99.99176149910198" : 69.105, - "99.99182197276367" : 69.123, - "99.99188244642536" : 69.285, - "99.99194457689971" : 69.3, - "99.9920050505614" : 69.478, - "99.99206552422311" : 69.584, - "99.99212848310377" : 69.678, - "99.99218895676546" : 69.814, - "99.99224943042717" : 69.951, - "99.99231073249518" : 70.069, - "99.99237120615688" : 70.106, - "99.9924325082249" : 70.212, - "99.99249298188658" : 70.355, - "99.99255594076726" : 70.479, - "99.99261475761631" : 70.653, - "99.99267605968433" : 70.713, - "99.99273736175235" : 70.801, - "99.99279949222668" : 71.038, - "99.99285913748206" : 71.321, - "99.9929212679564" : 71.351, - "99.9929817416181" : 71.581, - "99.99304304368611" : 71.721, - "99.99310434575413" : 71.761, - "99.99316564782215" : 71.831, - "99.9932277782965" : 71.854, - "99.99328659514555" : 71.9, - "99.99334872561988" : 72.417, - "99.9934100276879" : 72.46, - "99.99346967294328" : 72.655, - "99.99353180341762" : 72.717, - "99.99359144867299" : 72.887, - "99.993652750741" : 72.966, - "99.99371488121535" : 73.276, - "99.99377784009603" : 73.381, - "99.99383831375772" : 73.483, - "99.99389713060677" : 73.529, - "99.99392861004709" : 73.572, - "99.99395843267479" : 73.638, - "99.99399322574041" : 73.649, - "99.99401890633648" : 73.747, - "99.99404955737049" : 73.791, - "99.99408103681083" : 73.818, - "99.9941108594385" : 74.006, - "99.99414151047252" : 74.03, - "99.9941713331002" : 74.19, - "99.99420695457216" : 74.199, - "99.99423346357455" : 74.211, - "99.99426411460855" : 74.446, - "99.99429393723624" : 74.551, - "99.99432375986393" : 74.596, - "99.99435441089794" : 74.614, - "99.99438589033826" : 74.643, - "99.99441571296596" : 74.655, - "99.99444636399997" : 74.666, - "99.99447701503398" : 74.883, - "99.99450766606799" : 74.894, - "99.99453997391464" : 74.901, - "99.99456979654234" : 74.905, - "99.99459879076369" : 74.967, - "99.9946294417977" : 75.008, - "99.99466092123804" : 75.084, - "99.99469157227205" : 75.099, - "99.99472222330606" : 75.113, - "99.99475121752741" : 75.174, - "99.99478186856142" : 75.271, - "99.99481334800176" : 75.292, - "99.99484399903577" : 75.403, - "99.99487465006978" : 75.527, - "99.99490364429114" : 75.612, - "99.99493678054412" : 75.628, - "99.99496577476548" : 75.739, - "99.9949964257995" : 75.77, - "99.99502624842718" : 75.919, - "99.99505772786752" : 76.048, - "99.99508672208887" : 76.081, - "99.99511820152921" : 76.096, - "99.99514968096955" : 76.104, - "99.99517950359723" : 76.202, - "99.99520932622491" : 76.301, - "99.99524246247789" : 76.31, - "99.99527062829293" : 76.546, - "99.99530045092061" : 76.563, - "99.99533441557992" : 76.655, - "99.99536423820761" : 76.665, - "99.99539323242897" : 76.675, - "99.99542305505665" : 76.753, - "99.99545370609066" : 76.778, - "99.99548352871835" : 76.856, - "99.99551417975236" : 76.875, - "99.99554648759901" : 76.897, - "99.99557631022671" : 76.908, - "99.99560613285439" : 76.971, - "99.99564092592001" : 76.985, - "99.99566660651608" : 76.989, - "99.99569725755009" : 77.105, - "99.9957279085841" : 77.124, - "99.99575855961811" : 77.162, - "99.99578921065212" : 77.174, - "99.99581986168613" : 77.198, - "99.99585134112647" : 77.278, - "99.99588116375415" : 77.287, - "99.99591098638183" : 77.329, - "99.99594246582217" : 77.546, - "99.99597228844986" : 77.567, - "99.99600459629652" : 77.68, - "99.99603359051788" : 77.705, - "99.99606424155189" : 77.747, - "99.9960948925859" : 77.804, - "99.99612471521358" : 77.82, - "99.99615536624759" : 77.849, - "99.99618684568793" : 77.931, - "99.99621832512825" : 77.952, - "99.99624649094329" : 77.977, - "99.99627797038363" : 77.989, - "99.99630779301131" : 78.049, - "99.99633844404532" : 78.058, - "99.99636909507933" : 78.084, - "99.99640057451967" : 78.19, - "99.99642956874102" : 78.239, - "99.99646104818136" : 78.266, - "99.99649335602803" : 78.276, - "99.99652400706204" : 78.283, - "99.99655382968972" : 78.289, - "99.99658448072373" : 78.297, - "99.9966134749451" : 78.314, - "99.9966441259791" : 78.331, - "99.99667394860678" : 78.486, - "99.9967045996408" : 78.626, - "99.9967352506748" : 78.638, - "99.99676673011514" : 78.736, - "99.9967957243365" : 78.768, - "99.9968263753705" : 78.789, - "99.99685868321717" : 79.029, - "99.99688850584485" : 79.154, - "99.99691832847253" : 79.172, - "99.99694980791287" : 79.188, - "99.99696554763304" : 79.267, - "99.99697963054055" : 79.27, - "99.99699702707338" : 79.273, - "99.99700945316825" : 79.276, - "99.99702684970106" : 79.28, - "99.9970417610149" : 79.284, - "99.9970583291414" : 79.355, - "99.99707324045524" : 79.358, - "99.9970856665501" : 79.361, - "99.99710140627027" : 79.37, - "99.99711714599043" : 79.38, - "99.99713205730428" : 79.385, - "99.9971494538371" : 79.39, - "99.99716187993197" : 79.394, - "99.99717844805845" : 79.399, - "99.9971933593723" : 79.404, - "99.99720909909246" : 79.408, - "99.99722401040631" : 79.417, - "99.99723892172015" : 79.525, - "99.99725548984664" : 79.533, - "99.99726957275416" : 79.545, - "99.99728531247433" : 79.559, - "99.99729939538184" : 79.567, - "99.99731596350834" : 79.578, - "99.99733004641585" : 79.633, - "99.99735241338662" : 79.636, - "99.99736318266883" : 79.638, - "99.99737809398268" : 79.641, - "99.99739383370284" : 79.645, - "99.99740708820404" : 79.648, - "99.99742199951788" : 79.81, - "99.99743691083172" : 79.818, - "99.99745182214556" : 80.063, - "99.99746756186573" : 80.074, - "99.9974833015859" : 80.084, - "99.99749904130607" : 80.097, - "99.99751312421358" : 80.106, - "99.99752969234008" : 80.116, - "99.99754377524759" : 80.199, - "99.99756117178042" : 80.205, - "99.99757525468793" : 80.21, - "99.99759265122074" : 80.214, - "99.99760507731561" : 80.217, - "99.99761998862947" : 80.226, - "99.99763572834962" : 80.231, - "99.99765478169509" : 80.235, - "99.99766720778996" : 80.238, - "99.99768626113543" : 80.242, - "99.99770034404294" : 80.244, - "99.99771277013781" : 80.247, - "99.99772768145165" : 80.251, - "99.99774424957815" : 80.346, - "99.99775833248566" : 80.35, - "99.99777738583113" : 80.355, - "99.99778815511335" : 80.388, - "99.99780389483352" : 80.394, - "99.99781880614736" : 80.402, - "99.9978337174612" : 80.411, - "99.99784862877505" : 80.718, - "99.99786436849521" : 80.725, - "99.99788010821538" : 80.733, - "99.99789584793555" : 81.183, - "99.99790993084306" : 81.191, - "99.9979248421569" : 81.302, - "99.9979414102834" : 81.309, - "99.99796129203519" : 81.313, - "99.99797288972374" : 81.315, - "99.99798614422492" : 81.317, - "99.9980018839451" : 81.32, - "99.99801762366526" : 81.323, - "99.99803419179176" : 81.326, - "99.99804744629294" : 81.36, - "99.99806318601311" : 81.37, - "99.99807809732695" : 81.381, - "99.99809383704712" : 81.454, - "99.99810874836096" : 81.463, - "99.9981236596748" : 81.474, - "99.99814105620763" : 81.479, - "99.99815431070881" : 81.485, - "99.99817087883531" : 81.494, - "99.99818661855548" : 81.53, - "99.99820152986932" : 81.534, - "99.99822058321479" : 81.543, - "99.998231352497" : 81.553, - "99.99824709221717" : 81.565, - "99.9982611751247" : 81.876, - "99.99827691484487" : 81.882, - "99.99829348297135" : 81.894, - "99.99830673747255" : 81.902, - "99.99832164878639" : 81.913, - "99.99833738850656" : 81.924, - "99.99835312822673" : 81.944, - "99.99836803954057" : 81.953, - "99.99838460766705" : 81.958, - "99.99840200419987" : 82.056, - "99.99841443029474" : 82.062, - "99.99842934160858" : 82.075, - "99.99844425292243" : 82.158, - "99.9984599926426" : 82.169, - "99.99847490395643" : 82.177, - "99.99848235961336" : 82.181, - "99.99848981527028" : 82.281, - "99.9984972709272" : 82.289, - "99.99850472658412" : 82.303, - "99.99851301064737" : 82.311, - "99.99852129471061" : 82.418, - "99.99852875036753" : 82.422, - "99.99853537761813" : 82.426, - "99.9985444900877" : 82.429, - "99.99855194574462" : 82.432, - "99.99855857299522" : 82.44, - "99.99856602865214" : 82.445, - "99.99857348430906" : 82.45, - "99.9985817683723" : 82.455, - "99.99859005243555" : 82.46, - "99.99859750809247" : 82.464, - "99.99860413534307" : 82.471, - "99.99861241940631" : 82.486, - "99.99861987506324" : 82.49, - "99.99862733072015" : 82.495, - "99.99863561478341" : 82.501, - "99.998642242034" : 82.513, - "99.99865052609725" : 82.517, - "99.99865881016049" : 82.544, - "99.99866543741109" : 82.549, - "99.99867372147433" : 82.555, - "99.99868034872493" : 82.56, - "99.99868780438186" : 82.566, - "99.9986960884451" : 82.619, - "99.99870354410201" : 82.624, - "99.99871182816527" : 82.63, - "99.99871845541587" : 82.635, - "99.99872673947911" : 82.639, - "99.99873502354235" : 82.644, - "99.99874165079295" : 82.671, - "99.99874910644988" : 82.675, - "99.99875739051312" : 82.68, - "99.99876484617003" : 82.685, - "99.99877313023329" : 82.69, - "99.99878307110919" : 82.694, - "99.99878804154713" : 83.019, - "99.99879466879773" : 83.021, - "99.99880460967363" : 83.023, - "99.9988137221432" : 83.025, - "99.99881786417481" : 83.026, - "99.99882697664438" : 83.028, - "99.99883774592661" : 83.03, - "99.9988410595519" : 83.031, - "99.99884934361515" : 83.034, - "99.99885928449105" : 83.037, - "99.99886508333532" : 83.04, - "99.99887088217959" : 83.043, - "99.99887916624283" : 83.049, - "99.99888662189976" : 83.058, - "99.99889407755667" : 83.071, - "99.99890236161993" : 83.077, - "99.99890981727684" : 83.082, - "99.99891892974641" : 83.088, - "99.99892555699701" : 83.092, - "99.99893301265394" : 83.152, - "99.99894046831085" : 83.155, - "99.9989487523741" : 83.158, - "99.99895537962469" : 83.16, - "99.99896366368795" : 83.163, - "99.99897029093854" : 83.166, - "99.99897857500179" : 83.259, - "99.99898685906503" : 83.263, - "99.99899431472195" : 83.266, - "99.99900094197255" : 83.269, - "99.99900839762947" : 83.273, - "99.9990158532864" : 83.278, - "99.99902413734964" : 83.281, - "99.99903159300656" : 83.283, - "99.9990398770698" : 83.286, - "99.99904733272672" : 83.289, - "99.99905478838365" : 83.293, - "99.99906307244689" : 83.299, - "99.99907052810381" : 83.304, - "99.99907715535441" : 83.309, - "99.99908461101133" : 83.459, - "99.99909620869988" : 83.492, - "99.9991003507315" : 83.493, - "99.99910863479474" : 83.495, - "99.99911609045166" : 83.497, - "99.99912603132756" : 83.5, - "99.99913348698448" : 83.502, - "99.99914177104773" : 83.504, - "99.99914674148567" : 83.506, - "99.99915336873627" : 83.508, - "99.99916248120584" : 83.511, - "99.99916910845644" : 83.513, - "99.99917656411336" : 83.516, - "99.99918567658293" : 83.549, - "99.99919313223985" : 83.553, - "99.99919975949045" : 83.603, - "99.9992080435537" : 83.607, - "99.99921549921062" : 83.612, - "99.9992221264612" : 83.616, - "99.9992320673371" : 83.62, - "99.99923786618137" : 83.702, - "99.999242008213" : 83.704, - "99.99924780705727" : 83.714, - "99.99924946386993" : 83.715, - "99.99925277749522" : 83.717, - "99.99925774793317" : 83.72, - "99.99926023315214" : 83.722, - "99.99926437518377" : 83.724, - "99.99926768880907" : 83.726, - "99.99927183084068" : 83.963, - "99.99927762968495" : 83.965, - "99.99928011490394" : 83.966, - "99.99928425693555" : 83.968, - "99.99928757056085" : 83.97, - "99.99929088418615" : 83.972, - "99.9992958546241" : 83.975, - "99.9992991682494" : 83.98, - "99.9993024818747" : 83.982, - "99.99930579549999" : 83.984, - "99.99930993753162" : 83.986, - "99.99931739318853" : 84.11, - "99.99932319203282" : 84.112, - "99.99932733406443" : 84.113, - "99.99933147609606" : 84.115, - "99.99933561812769" : 84.117, - "99.99933727494033" : 84.118, - "99.99934224537827" : 84.12, - "99.9993463874099" : 84.122, - "99.99935052944153" : 84.124, - "99.99935467147314" : 84.125, - "99.9993563282858" : 84.126, - "99.9993596419111" : 84.127, - "99.9993662691617" : 84.129, - "99.99936792597434" : 84.13, - "99.99937123959964" : 84.131, - "99.99937455322494" : 84.132, - "99.99938035206921" : 84.134, - "99.99938283728818" : 84.135, - "99.99938697931981" : 84.139, - "99.99939112135142" : 84.142, - "99.99939360657041" : 84.143, - "99.99939774860202" : 84.146, - "99.99940189063365" : 84.153, - "99.99940520425895" : 84.155, - "99.99941017469689" : 84.158, - "99.99941265991586" : 84.161, - "99.99941680194749" : 84.164, - "99.99942094397912" : 84.167, - "99.99942425760442" : 84.169, - "99.99942839963603" : 84.172, - "99.99943171326133" : 84.174, - "99.99943585529296" : 84.177, - "99.9994408257309" : 84.18, - "99.99944331094987" : 84.182, - "99.9994474529815" : 84.222, - "99.99945159501313" : 84.224, - "99.99945573704474" : 84.226, - "99.99945905067004" : 84.228, - "99.99946236429534" : 84.23, - "99.99946650632697" : 84.232, - "99.99947147676491" : 84.234, - "99.99947561879654" : 84.235, - "99.99947810401551" : 84.236, - "99.99948141764081" : 84.237, - "99.99948555967244" : 84.239, - "99.99948970170405" : 84.241, - "99.99949384373568" : 84.369, - "99.99949715736098" : 84.519, - "99.99950047098628" : 84.521, - "99.99950461301789" : 84.524, - "99.99950792664319" : 84.526, - "99.99951206867482" : 84.528, - "99.99951703911276" : 84.531, - "99.99952035273806" : 84.533, - "99.99952366636336" : 84.535, - "99.99952780839499" : 84.537, - "99.99953112202029" : 84.539, - "99.99953609245823" : 84.541, - "99.99953940608353" : 84.543, - "99.99954271970883" : 84.544, - "99.99954686174046" : 84.574, - "99.99955017536575" : 84.576, - "99.9995551458037" : 84.579, - "99.999558459429" : 84.58, - "99.9995617730543" : 84.581, - "99.99956757189857" : 84.583, - "99.99957088552387" : 84.584, - "99.99957337074284" : 84.585, - "99.99957999799344" : 84.587, - "99.99958248321241" : 84.588, - "99.99958496843138" : 84.589, - "99.999589110463" : 84.59, - "99.99959325249463" : 84.591, - "99.9995990513389" : 84.593, - "99.99960153655788" : 84.594, - "99.99960402177685" : 84.595, - "99.99960733540215" : 84.596, - "99.99961147743377" : 84.599, - "99.99961479105907" : 84.601, - "99.99961976149702" : 84.605, - "99.99962224671599" : 84.606, - "99.99962307512232" : 84.609, - "99.99962638874761" : 84.611, - "99.99962970237291" : 84.613, - "99.99963135918556" : 84.614, - "99.99963301599821" : 84.615, - "99.99963467281086" : 84.616, - "99.99963715802983" : 84.617, - "99.99963798643616" : 84.618, - "99.99964047165513" : 84.619, - "99.9996429568741" : 84.62, - "99.99964461368675" : 84.621, - "99.99964709890573" : 84.622, - "99.9996495841247" : 84.623, - "99.99965372615632" : 84.625, - "99.99965538296897" : 84.626, - "99.99965703978162" : 84.627, - "99.9996595250006" : 84.628, - "99.99966118181324" : 84.629, - "99.99966366703222" : 84.63, - "99.99966532384487" : 84.631, - "99.99966698065752" : 84.632, - "99.99966863747017" : 84.633, - "99.99967029428281" : 84.938, - "99.99967360790811" : 84.941, - "99.99967526472076" : 84.942, - "99.9996769215334" : 84.943, - "99.99967857834606" : 84.944, - "99.9996802351587" : 84.945, - "99.99968189197136" : 84.946, - "99.99968520559666" : 84.947, - "99.99968769081563" : 84.948, - "99.99969266125358" : 84.949, - "99.99969597487888" : 84.95, - "99.99969928850417" : 84.951, - "99.99970094531682" : 84.952, - "99.99970260212947" : 84.953, - "99.99970508734845" : 84.959, - "99.99970757256742" : 84.961, - "99.99971005778639" : 84.962, - "99.99971088619272" : 84.963, - "99.99971254300537" : 84.964, - "99.99971419981802" : 85.057, - "99.99971668503699" : 85.058, - "99.99971917025597" : 85.059, - "99.99972082706861" : 85.06, - "99.99972248388126" : 85.061, - "99.99972414069391" : 85.062, - "99.99972662591288" : 85.063, - "99.99972745431921" : 85.064, - "99.99972993953818" : 85.065, - "99.99973159635083" : 85.067, - "99.99973325316348" : 85.068, - "99.99973490997613" : 85.069, - "99.99973739519511" : 85.071, - "99.99973905200775" : 85.072, - "99.9997407088204" : 85.073, - "99.9997440224457" : 85.075, - "99.99974485085203" : 85.076, - "99.99974650766468" : 85.077, - "99.99974899288365" : 85.078, - "99.9997506496963" : 85.079, - "99.9997539633216" : 85.08, - "99.9997572769469" : 85.082, - "99.99975976216587" : 85.083, - "99.99976224738484" : 85.604, - "99.99976473260382" : 85.605, - "99.99976638941646" : 85.606, - "99.99976804622912" : 85.607, - "99.99977053144809" : 85.609, - "99.99977218826074" : 85.61, - "99.99977384507339" : 85.611, - "99.99977550188603" : 85.612, - "99.999777987105" : 85.613, - "99.99977964391766" : 85.614, - "99.9997813007303" : 85.615, - "99.99978295754296" : 85.616, - "99.9997846143556" : 85.617, - "99.99978709957458" : 85.619, - "99.99978958479356" : 85.62, - "99.99979041319988" : 85.621, - "99.99979372682517" : 85.623, - "99.99979538363783" : 85.624, - "99.99979704045047" : 85.625, - "99.99979869726313" : 85.626, - "99.99980035407577" : 85.627, - "99.99980283929474" : 85.629, - "99.99980366770107" : 85.63, - "99.99980615292004" : 85.684, - "99.99980863813902" : 85.686, - "99.99980946654534" : 85.687, - "99.99981029495167" : 85.688, - "99.99981195176431" : 85.689, - "99.99981278017064" : 85.69, - "99.99981360857697" : 85.691, - "99.99981443698329" : 85.692, - "99.99981526538961" : 85.693, - "99.99981775060859" : 85.694, - "99.99982023582757" : 85.695, - "99.99982189264021" : 85.696, - "99.99982354945286" : 85.697, - "99.99982603467184" : 85.698, - "99.99982686307816" : 85.699, - "99.99982851989081" : 85.7, - "99.99982934829714" : 85.701, - "99.99983100510978" : 85.702, - "99.99983183351611" : 85.703, - "99.99983349032875" : 85.704, - "99.99983514714141" : 85.705, - "99.99983597554773" : 85.706, - "99.99983763236038" : 85.707, - "99.99983928917302" : 85.708, - "99.99984094598568" : 85.709, - "99.99984177439201" : 85.71, - "99.99984343120465" : 85.711, - "99.9998450880173" : 85.712, - "99.99984591642362" : 85.713, - "99.99984757323628" : 85.714, - "99.99984923004892" : 85.715, - "99.99985005845525" : 85.716, - "99.99985088686158" : 86.777, - "99.99985254367422" : 87.274, - "99.99985420048688" : 87.275, - "99.99985585729952" : 87.276, - "99.99985751411216" : 87.277, - "99.99985917092482" : 87.278, - "99.99986165614379" : 87.279, - "99.99986414136276" : 87.28, - "99.99986579817542" : 87.281, - "99.99986745498806" : 87.282, - "99.99986911180072" : 87.283, - "99.99987076861336" : 87.284, - "99.99987242542602" : 87.285, - "99.99987408223866" : 87.286, - "99.99987491064499" : 87.287, - "99.99987656745763" : 87.288, - "99.9998790526766" : 87.289, - "99.99987988108293" : 87.29, - "99.99988153789559" : 87.291, - "99.99988319470823" : 87.292, - "99.99988485152089" : 87.293, - "99.9998856799272" : 87.294, - "99.99988733673986" : 87.301, - "99.9998889935525" : 87.302, - "99.99988982195883" : 87.303, - "99.99989147877147" : 87.304, - "99.99989396399046" : 87.305, - "99.99989479239677" : 87.306, - "99.9998956208031" : 87.31, - "99.99989810602207" : 92.008, - "99.99989976283473" : 92.009, - "99.9999022480537" : 92.01, - "99.99990473327267" : 92.011, - "99.99990639008533" : 92.012, - "99.99990721849164" : 93.061, - "99.9999088753043" : 93.062, - "99.99991136052327" : 93.063, - "99.99991301733591" : 93.064, - "99.99991467414857" : 93.065, - "99.99991633096121" : 93.066, - "99.99991798777387" : 93.067, - "99.99991964458651" : 93.068, - "99.99992047299284" : 93.069, - "99.99992378661814" : 93.07, - "99.99992544343078" : 93.071, - "99.99992958546241" : 93.072, - "99.99993289908771" : 93.073, - "99.99993455590035" : 93.074, - "99.99993621271301" : 93.075, - "99.99993786952565" : 93.076, - "99.99993952633831" : 93.077, - "99.99994035474462" : 93.078, - "99.99994201155728" : 93.079, - "99.99994366836992" : 93.08, - "99.99994532518258" : 93.081, - "99.99994615358891" : 93.082, - "99.99994781040155" : 93.083, - "99.9999494672142" : 93.084, - "99.99995112402685" : 93.085, - "99.99995195243318" : 93.086, - "99.9999527808395" : 93.087, - "99.99995360924582" : 93.088, - "99.99995443765215" : 94.144, - "99.99995609446479" : 94.145, - "99.99995692287112" : 94.146, - "99.99995940809009" : 94.147, - "99.99996106490275" : 94.148, - "99.99996272171539" : 94.149, - "99.99996437852805" : 94.15, - "99.99996520693436" : 94.151, - "99.99996686374702" : 94.152, - "99.99996852055966" : 94.153, - "99.99997017737232" : 94.154, - "99.99997183418496" : 94.155, - "99.99997266259129" : 94.156, - "99.99997431940393" : 94.157, - "99.99997597621659" : 94.158, - "99.99997680462292" : 94.159, - "99.99997763302923" : 94.16, - "99.99997928984189" : 94.161, - "99.9999801182482" : 94.162, - "99.99998177506086" : 94.163, - "99.99998260346719" : 94.164, - "99.99998426027983" : 94.165, - "99.99998591709249" : 94.166, - "99.99998757390513" : 94.167, - "99.99998840231146" : 94.168, - "99.9999900591241" : 94.169, - "99.99999171593676" : 94.17, - "99.9999933727494" : 94.171, - "99.99999502956206" : 94.172, - "99.9999966863747" : 94.173, - "99.99999834318736" : 94.174, - "99.99999917159367" : 94.175, - "100.0" : 94.178 - }, - "endToEndLatencyAvg" : [ 3.2046667811865017, 3.182266808773789, 3.2612260302622937, 3.163047314081722, 3.195016170398042, 3.190760506389491, 3.1614899701131645, 3.142515902955055, 3.146753620537454, 3.1383000530909047, 3.136293311910981, 3.1411027736680506, 3.0716143326406447, 3.0970057097229367, 3.1183195032897584, 3.100393255460866, 3.1124758901453955, 3.1019670470674505, 3.0986321980857947, 3.12285881930534, 3.120142130662886, 3.124552211809066, 3.147213336778759, 3.1180819196860954, 3.135191789328095, 3.134048715133447, 3.1096167337353147, 3.1388703479101134, 3.15061610278066, 3.137777838774246, 3.1273342780176647, 3.1710496817047478, 3.13977024226271, 3.1093200898215803, 3.1538748921282567, 3.0991146158155605, 3.1029984113547373, 3.1220271005162714, 3.1237009860150047, 3.1203498685532804, 3.1301489745630393, 3.1231397426614382, 3.119608066461009, 3.1202269688887827, 3.1091367205648304, 3.1565383481984797, 4.2028967651499025, 3.1358464419699006, 3.1390128173263805, 3.1721432692895477, 3.1444850807969176, 3.1897623411364586, 3.150066734411618, 3.152732714338916, 3.1951506265442466, 3.1556777415407677, 3.1625160086087196, 3.1483817948967805, 3.173737481333601, 3.1287325414911766 ], - "endToEndLatency50pct" : [ 3.064, 3.023, 3.029, 3.025, 3.024, 3.018, 3.02, 3.009, 2.988, 3.003, 3.021, 3.013, 2.976, 2.979, 2.983, 2.981, 2.985, 2.973, 2.978, 2.971, 2.988, 2.981, 3.002, 2.998, 2.993, 2.991, 2.979, 2.998, 2.996, 2.998, 3.001, 3.036, 3.021, 2.989, 2.992, 2.978, 2.982, 2.987, 3.006, 2.985, 2.99, 2.997, 3.004, 2.979, 2.986, 3.004, 3.019, 2.999, 3.036, 3.028, 3.016, 3.046, 3.018, 3.025, 3.043, 3.03, 3.029, 2.992, 3.017, 3.008 ], - "endToEndLatency75pct" : [ 3.502, 3.431, 3.45, 3.442, 3.433, 3.433, 3.425, 3.423, 3.416, 3.418, 3.424, 3.421, 3.393, 3.408, 3.41, 3.398, 3.426, 3.4, 3.401, 3.408, 3.412, 3.412, 3.435, 3.424, 3.414, 3.421, 3.407, 3.423, 3.429, 3.435, 3.426, 3.439, 3.425, 3.415, 3.426, 3.414, 3.415, 3.419, 3.42, 3.412, 3.426, 3.415, 3.41, 3.404, 3.41, 3.451, 3.474, 3.429, 3.434, 3.446, 3.434, 3.442, 3.444, 3.435, 3.454, 3.448, 3.442, 3.427, 3.444, 3.427 ], - "endToEndLatency95pct" : [ 4.437, 4.338, 4.426, 4.37, 4.358, 4.367, 4.338, 4.342, 4.354, 4.333, 4.325, 4.333, 4.289, 4.324, 4.328, 4.295, 4.343, 4.322, 4.309, 4.326, 4.338, 4.343, 4.367, 4.335, 4.339, 4.36, 4.322, 4.361, 4.365, 4.37, 4.324, 4.367, 4.347, 4.323, 4.374, 4.311, 4.324, 4.333, 4.328, 4.33, 4.352, 4.338, 4.34, 4.336, 4.335, 4.397, 4.596, 4.336, 4.315, 4.386, 4.34, 4.374, 4.353, 4.343, 4.377, 4.364, 4.348, 4.354, 4.375, 4.339 ], - "endToEndLatency99pct" : [ 5.68, 5.145, 10.344, 5.642, 5.573, 6.105, 5.281, 5.386, 5.625, 5.185, 5.107, 5.331, 4.843, 5.051, 5.217, 4.958, 5.192, 5.126, 4.972, 5.108, 5.207, 5.298, 5.673, 5.106, 5.439, 5.711, 5.211, 5.489, 5.799, 5.642, 5.244, 6.054, 5.202, 5.123, 6.259, 5.006, 5.095, 5.263, 5.207, 5.184, 5.491, 5.115, 5.119, 5.339, 5.177, 5.961, 55.424, 5.187, 5.016, 6.044, 5.326, 5.962, 5.214, 5.308, 5.924, 5.396, 5.39, 5.939, 5.91, 5.162 ], - "endToEndLatency999pct" : [ 17.02, 28.361, 24.098, 16.685, 26.523, 20.508, 19.618, 15.936, 19.324, 17.888, 14.911, 16.531, 12.062, 14.003, 16.414, 16.193, 14.688, 14.526, 15.183, 21.855, 15.619, 16.708, 16.507, 14.618, 17.496, 15.932, 15.882, 17.466, 17.189, 16.049, 16.463, 16.318, 15.303, 14.755, 18.502, 13.635, 14.299, 15.616, 14.129, 16.393, 16.344, 15.962, 14.526, 17.752, 14.03, 17.023, 82.267, 17.768, 13.807, 16.903, 15.993, 18.668, 16.706, 15.497, 19.883, 15.552, 17.321, 17.499, 19.436, 15.547 ], - "endToEndLatency9999pct" : [ 20.154, 33.722, 61.669, 19.831, 32.501, 23.883, 32.967, 20.108, 21.673, 22.613, 17.236, 20.081, 19.04, 17.941, 20.013, 20.065, 17.835, 17.463, 18.633, 28.02, 19.266, 22.005, 20.693, 17.053, 20.609, 20.786, 20.443, 20.33, 20.821, 19.099, 23.653, 19.431, 19.377, 20.842, 21.829, 17.593, 17.121, 19.507, 17.917, 22.902, 21.066, 21.179, 20.197, 22.225, 16.696, 21.062, 86.884, 20.945, 19.207, 22.193, 20.421, 21.779, 21.24, 21.224, 24.028, 18.379, 20.579, 25.241, 24.442, 20.15 ], - "endToEndLatencyMax" : [ 20.831, 37.725, 69.955, 21.492, 34.644, 25.045, 35.964, 52.801, 22.669, 24.329, 18.092, 22.273, 21.027, 19.431, 21.007, 21.557, 24.556, 18.413, 19.733, 31.897, 30.346, 29.877, 22.499, 17.721, 21.867, 22.991, 22.612, 21.288, 22.137, 20.452, 24.649, 21.955, 22.236, 23.989, 23.88, 21.5, 18.737, 20.102, 19.21, 24.213, 36.653, 22.69, 21.173, 23.661, 18.529, 25.29, 95.874, 23.217, 20.031, 27.992, 21.439, 23.829, 22.032, 23.179, 24.472, 19.372, 21.556, 26.651, 28.093, 21.142 ], - "aggregatedEndToEndLatencyQuantiles" : { - "1.6568507235902033E-6" : 0.684, - "0.5001419299751095" : 1.482, - "1.0013856656814066" : 1.708, - "1.504645788718313" : 1.834, - "2.002711684736764" : 1.92, - "2.5054689535790606" : 1.987, - "3.0074814680211035" : 2.039, - "3.5028980597325337" : 2.081, - "4.004996730412203" : 2.116, - "4.506398695362603" : 2.146, - "5.004594654162856" : 2.172, - "5.502470840773456" : 2.195, - "6.005422789575775" : 2.216, - "6.524879456861137" : 2.236, - "7.018539786805562" : 2.254, - "7.509650223486381" : 2.271, - "8.023203531643592" : 2.288, - "8.517491808012256" : 2.304, - "9.03228775421216" : 2.32, - "9.524486741818379" : 2.335, - "10.001575250825454" : 2.349, - "10.531364867648486" : 2.364, - "11.006778300574013" : 2.377, - "11.50218412275574" : 2.39, - "12.02420642338658" : 2.403, - "12.51626292183057" : 2.415, - "13.027133788666287" : 2.427, - "13.508237675401984" : 2.438, - "14.007961250569387" : 2.449, - "14.520776431729239" : 2.46, - "15.048395574104367" : 2.471, - "15.520395066113936" : 2.485, - "16.048054801331794" : 2.497, - "16.505998400227785" : 2.506, - "17.017142647432895" : 2.516, - "17.531075374405805" : 2.526, - "18.02188260740421" : 2.535, - "18.514986235505507" : 2.544, - "19.01016755441419" : 2.553, - "19.52477296278088" : 2.562, - "20.007671218850223" : 2.57, - "20.50403718602627" : 2.578, - "21.06158485144697" : 2.587, - "21.557583826187745" : 2.595, - "22.053203382112812" : 2.603, - "22.5511383869241" : 2.611, - "23.046664330783287" : 2.619, - "23.538549345177387" : 2.627, - "24.03219144976385" : 2.635, - "24.53780678610434" : 2.643, - "25.05088872023069" : 2.651, - "25.564878608553567" : 2.659, - "26.020108285964316" : 2.666, - "26.548169807482644" : 2.674, - "27.008877861810944" : 2.681, - "27.542281070062128" : 2.689, - "28.01139847023801" : 2.696, - "28.551444821465427" : 2.704, - "29.02421226378538" : 2.711, - "29.50061483659289" : 2.718, - "30.043676656137244" : 2.726, - "30.518076096419932" : 2.733, - "31.048996513861812" : 2.741, - "31.510701992325718" : 2.748, - "32.055129056866306" : 2.756, - "32.5396742225549" : 2.763, - "33.03023458479549" : 2.77, - "33.525586559328694" : 2.777, - "34.02743587397447" : 2.784, - "34.53104145038724" : 2.791, - "35.03599570328902" : 2.798, - "35.55105343190325" : 2.805, - "36.00580345102952" : 2.815, - "36.53255606047621" : 2.823, - "37.04066744243179" : 2.83, - "37.54357714154066" : 2.837, - "38.03756552792835" : 2.844, - "38.54266309841772" : 2.851, - "39.061137253224" : 2.858, - "39.50644736535261" : 2.864, - "40.01471283442548" : 2.871, - "40.518663864214126" : 2.878, - "41.035327909604874" : 2.885, - "41.57398002094839" : 2.892, - "42.046423548951886" : 2.898, - "42.52512583056374" : 2.904, - "43.07586881006265" : 2.911, - "43.548854128252756" : 2.917, - "44.00964668196796" : 2.923, - "44.546317199846065" : 2.93, - "45.0036850431156" : 2.936, - "45.537386484497034" : 2.943, - "46.069471667997604" : 2.95, - "46.52643441126523" : 2.956, - "47.0508715718257" : 2.963, - "47.5729294947471" : 2.97, - "48.01129574549315" : 2.976, - "48.515672585917756" : 2.983, - "49.02021262613864" : 2.99, - "49.5363580772529" : 2.997, - "50.04399062934936" : 3.004, - "50.255500050596076" : 3.007, - "50.54614314767755" : 3.011, - "50.75797316953928" : 3.014, - "51.050275602620424" : 3.018, - "51.267693353547465" : 3.021, - "51.551382648142024" : 3.025, - "51.76808712483256" : 3.028, - "52.047717963579686" : 3.032, - "52.2614326531395" : 3.035, - "52.539863103537385" : 3.039, - "52.75360927326095" : 3.042, - "53.02901679951365" : 3.046, - "53.31188263929859" : 3.05, - "53.52276080041961" : 3.053, - "53.795649913572454" : 3.057, - "54.0039972352132" : 3.06, - "54.274584154285606" : 3.064, - "54.553790010822134" : 3.068, - "54.755144593983964" : 3.071, - "55.02895160243767" : 3.075, - "55.29407505624905" : 3.079, - "55.56412598411237" : 3.083, - "55.7603981776796" : 3.086, - "56.029240432940064" : 3.09, - "56.29144120207502" : 3.094, - "56.560186531568164" : 3.098, - "56.76332968508611" : 3.101, - "57.02832307611568" : 3.105, - "57.29835329334497" : 3.109, - "57.56192262117761" : 3.113, - "57.765199151178805" : 3.116, - "58.02905511418663" : 3.12, - "58.298475610349634" : 3.124, - "58.55842306250051" : 3.128, - "58.75495289635525" : 3.131, - "59.00646035092016" : 3.135, - "59.26138837380392" : 3.139, - "59.50906436107052" : 3.143, - "59.7592604182877" : 3.147, - "60.00138595563028" : 3.151, - "60.25149917031129" : 3.155, - "60.555108781155575" : 3.16, - "60.80156698314034" : 3.164, - "61.045563104949856" : 3.168, - "61.294764223307524" : 3.172, - "61.53964344655271" : 3.176, - "61.791326527294316" : 3.18, - "62.03614196178664" : 3.184, - "62.28770574927615" : 3.188, - "62.533653641238054" : 3.192, - "62.78600857494808" : 3.196, - "63.03117111966699" : 3.2, - "63.28218151901483" : 3.204, - "63.52560851260078" : 3.208, - "63.77635547268356" : 3.212, - "64.0207111311001" : 3.216, - "64.27122530365621" : 3.22, - "64.5139141702448" : 3.224, - "64.76053308674976" : 3.228, - "65.06055478735212" : 3.233, - "65.3036926604868" : 3.237, - "65.53798046548144" : 3.241, - "65.77678567397395" : 3.245, - "66.00771255727578" : 3.249, - "66.29555226293293" : 3.254, - "66.53013498735636" : 3.258, - "66.7578028452849" : 3.262, - "67.04521591188073" : 3.267, - "67.26808304483765" : 3.271, - "67.55207222941318" : 3.276, - "67.7712619821891" : 3.28, - "68.0534891060201" : 3.285, - "68.27336065286877" : 3.289, - "68.54614041387386" : 3.294, - "68.76766135561786" : 3.298, - "69.03643816527476" : 3.303, - "69.2539097638503" : 3.307, - "69.51703091356222" : 3.312, - "69.78567434673586" : 3.317, - "70.04833654879734" : 3.322, - "70.25508169578838" : 3.326, - "70.51856486738339" : 3.331, - "70.77270008719591" : 3.336, - "71.0270614671322" : 3.341, - "71.27750356668184" : 3.346, - "71.52270918951957" : 3.351, - "71.77070246369975" : 3.356, - "72.01152654479894" : 3.361, - "72.25054797231088" : 3.366, - "72.54252234894875" : 3.372, - "72.78157442819906" : 3.377, - "73.0167469914801" : 3.382, - "73.25352172941085" : 3.387, - "73.52932441456112" : 3.393, - "73.75345323934405" : 3.398, - "74.02574505781104" : 3.404, - "74.29057939117115" : 3.41, - "74.50967387503046" : 3.415, - "74.77790889450074" : 3.421, - "75.03812558489419" : 3.427, - "75.1648473272119" : 3.43, - "75.25140866484051" : 3.432, - "75.38013851023521" : 3.435, - "75.50310582881328" : 3.438, - "75.6303867582502" : 3.441, - "75.75685168870575" : 3.444, - "75.87741160318242" : 3.447, - "76.00136474794103" : 3.45, - "76.15918640676588" : 3.454, - "76.28028562615309" : 3.457, - "76.40043464165032" : 3.46, - "76.5145891712296" : 3.463, - "76.6321932640154" : 3.466, - "76.78212417126916" : 3.47, - "76.89887415750694" : 3.473, - "77.01505915764798" : 3.476, - "77.14677713332267" : 3.481, - "77.256858295398" : 3.486, - "77.38397851031475" : 3.49, - "77.52694070342508" : 3.494, - "77.63817254832796" : 3.497, - "77.78488005249898" : 3.501, - "77.88882506791948" : 3.504, - "78.03083374343841" : 3.508, - "78.13311362388171" : 3.511, - "78.27445127485758" : 3.515, - "78.37510081418887" : 3.518, - "78.51408325186115" : 3.522, - "78.64858722202757" : 3.526, - "78.75184547282315" : 3.529, - "78.88868477408447" : 3.533, - "79.0212303466956" : 3.537, - "79.154637481683" : 3.541, - "79.28267724875133" : 3.545, - "79.3817138439032" : 3.548, - "79.51121081118293" : 3.552, - "79.64749009689967" : 3.556, - "79.78178033332274" : 3.56, - "79.88493585937347" : 3.563, - "80.01603334445218" : 3.567, - "80.15090679232996" : 3.571, - "80.28122224386713" : 3.575, - "80.3811850185735" : 3.578, - "80.51083110241835" : 3.582, - "80.6423204326932" : 3.586, - "80.76717159054397" : 3.59, - "80.89670997909178" : 3.594, - "81.02040631198822" : 3.598, - "81.14770878048455" : 3.602, - "81.27094368045447" : 3.606, - "81.3971402010928" : 3.61, - "81.5188748227325" : 3.614, - "81.64200948323365" : 3.618, - "81.75705208480076" : 3.622, - "81.90307448119758" : 3.627, - "82.0127331463384" : 3.631, - "82.1261975975913" : 3.635, - "82.26241557983127" : 3.64, - "82.39837675020908" : 3.645, - "82.50131274353893" : 3.649, - "82.63028366071391" : 3.654, - "82.76176304988442" : 3.659, - "82.88750227972304" : 3.664, - "83.01520073554231" : 3.669, - "83.13972383694981" : 3.674, - "83.26233824632375" : 3.679, - "83.38793498700014" : 3.684, - "83.508248030719" : 3.689, - "83.62554312084485" : 3.694, - "83.76651626466152" : 3.7, - "83.8796128950538" : 3.705, - "84.01722346032693" : 3.711, - "84.13161160585824" : 3.716, - "84.2647354193719" : 3.722, - "84.39437570423922" : 3.728, - "84.50296652908868" : 3.733, - "84.62686334092268" : 3.739, - "84.76884219312856" : 3.746, - "84.88745199430358" : 3.752, - "85.00503951858214" : 3.758, - "85.14483961208651" : 3.765, - "85.26370705354904" : 3.771, - "85.38164334490492" : 3.777, - "85.51794748338251" : 3.784, - "85.63542648393867" : 3.79, - "85.75486139677403" : 3.796, - "85.89167087472232" : 3.803, - "86.00167167953757" : 3.811, - "86.13544994908705" : 3.821, - "86.25089268010392" : 3.827, - "86.3863816480255" : 3.834, - "86.50071925960974" : 3.84, - "86.63223758477226" : 3.847, - "86.76209160338291" : 3.854, - "86.87655679247285" : 3.86, - "87.00707023767151" : 3.867, - "87.13527071926002" : 3.874, - "87.26383736485845" : 3.881, - "87.37863392409312" : 3.887, - "87.50058227947618" : 3.893, - "87.57987666983111" : 3.897, - "87.64225378587284" : 3.9, - "87.70202881785316" : 3.903, - "87.76419137172618" : 3.906, - "87.8258204196662" : 3.909, - "87.88527982158368" : 3.912, - "87.94834121697426" : 3.915, - "88.00823554220668" : 3.918, - "88.07186440897007" : 3.921, - "88.13530688002707" : 3.924, - "88.19575045127436" : 3.927, - "88.2596601542354" : 3.93, - "88.32231479277333" : 3.933, - "88.38150909857504" : 3.936, - "88.44369401993282" : 3.939, - "88.50195386192642" : 3.942, - "88.56271057796049" : 3.945, - "88.6430222746597" : 3.949, - "88.69951757063268" : 3.952, - "88.7581717430985" : 3.955, - "88.8129927914153" : 3.958, - "88.88778966048105" : 3.962, - "88.94351949141974" : 3.965, - "89.01435731568147" : 3.969, - "89.0697325805653" : 3.972, - "89.14126959583238" : 3.976, - "89.19689338832477" : 3.979, - "89.26749345450766" : 3.983, - "89.32198478953046" : 3.986, - "89.37698891985221" : 3.989, - "89.44746720750693" : 3.993, - "89.50162468710892" : 3.996, - "89.57242357537865" : 4.0, - "89.62781623719508" : 4.003, - "89.69814955041149" : 4.007, - "89.75413122266015" : 4.01, - "89.82544456307956" : 4.014, - "89.88112220322044" : 4.017, - "89.9552447340417" : 4.021, - "90.00706191199662" : 4.024, - "90.07939338718568" : 4.028, - "90.13136133855645" : 4.031, - "90.20392642969753" : 4.035, - "90.25479754588928" : 4.038, - "90.32568590409808" : 4.042, - "90.37822215526704" : 4.045, - "90.44516306662689" : 4.049, - "90.51504157431968" : 4.053, - "90.56455987189561" : 4.056, - "90.63360498367443" : 4.06, - "90.6987001633282" : 4.064, - "90.76616215424062" : 4.068, - "90.81414869332261" : 4.071, - "90.88090983637895" : 4.075, - "90.94535387369835" : 4.079, - "91.01290284927376" : 4.083, - "91.07758630152273" : 4.087, - "91.12691571811618" : 4.09, - "91.18972610062212" : 4.094, - "91.25524874776258" : 4.098, - "91.31766562822168" : 4.102, - "91.38213700357801" : 4.106, - "91.4433352703299" : 4.11, - "91.50667584506739" : 4.114, - "91.56690402572062" : 4.118, - "91.62989500495543" : 4.122, - "91.69121339338479" : 4.126, - "91.75533268796237" : 4.13, - "91.81637769602231" : 4.134, - "91.87990383804086" : 4.138, - "91.93962916449946" : 4.142, - "92.00108755681497" : 4.146, - "92.07453492096636" : 4.151, - "92.13540098914817" : 4.155, - "92.19447517327241" : 4.159, - "92.25586066415607" : 4.163, - "92.31474679572318" : 4.167, - "92.37527155265593" : 4.171, - "92.44708277671778" : 4.176, - "92.5068428970416" : 4.18, - "92.56389655170842" : 4.184, - "92.63854513263442" : 4.189, - "92.69640070305147" : 4.193, - "92.75761885201204" : 4.197, - "92.81699706824406" : 4.201, - "92.87950756076904" : 4.205, - "92.93996687209821" : 4.209, - "93.00314341861406" : 4.213, - "93.06397800663213" : 4.217, - "93.1270087502843" : 4.221, - "93.20214775902448" : 4.226, - "93.26159390613617" : 4.23, - "93.32415410418285" : 4.234, - "93.3840567136689" : 4.238, - "93.44678922419084" : 4.242, - "93.50679455842173" : 4.246, - "93.56892894583245" : 4.25, - "93.62780016574307" : 4.254, - "93.68979040714083" : 4.258, - "93.75000119086145" : 4.262, - "93.78137531616336" : 4.264, - "93.81298637111874" : 4.266, - "93.84464298946901" : 4.268, - "93.88946162996749" : 4.271, - "93.92072060414411" : 4.273, - "93.95210881267717" : 4.275, - "93.98342163450229" : 4.277, - "94.01214562707182" : 4.279, - "94.04304175093996" : 4.281, - "94.07351040732142" : 4.283, - "94.10371976656465" : 4.285, - "94.1316559266151" : 4.287, - "94.16195641264812" : 4.289, - "94.1922187911145" : 4.291, - "94.22263608512353" : 4.293, - "94.2506128380167" : 4.295, - "94.29546627238038" : 4.298, - "94.325250649413" : 4.3, - "94.35246028042116" : 4.302, - "94.38184369957867" : 4.304, - "94.411105340208" : 4.306, - "94.44013170803457" : 4.308, - "94.48155463297505" : 4.311, - "94.51085189589493" : 4.313, - "94.5399478514519" : 4.315, - "94.56895599392051" : 4.317, - "94.59583508320932" : 4.319, - "94.63892728525381" : 4.322, - "94.66758583221976" : 4.324, - "94.69386928367344" : 4.326, - "94.72250297787852" : 4.328, - "94.75103146206266" : 4.33, - "94.7936804565386" : 4.333, - "94.81990343294085" : 4.335, - "94.84808646374913" : 4.337, - "94.87611043688793" : 4.339, - "94.91552940087823" : 4.342, - "94.94336035090772" : 4.344, - "94.97063956964628" : 4.346, - "95.01085216513317" : 4.349, - "95.03552515768352" : 4.351, - "95.07589266871307" : 4.354, - "95.10281069399387" : 4.356, - "95.12764605791513" : 4.358, - "95.16837393397707" : 4.361, - "95.19530190036221" : 4.363, - "95.22211140192063" : 4.365, - "95.26055199555864" : 4.368, - "95.28740043310907" : 4.37, - "95.3137518154424" : 4.372, - "95.35040466714966" : 4.375, - "95.375940878927" : 4.377, - "95.41413543023256" : 4.38, - "95.43772898453649" : 4.382, - "95.47580424258996" : 4.385, - "95.50078706622561" : 4.387, - "95.5361078099511" : 4.39, - "95.57364127781796" : 4.393, - "95.59887262906214" : 4.395, - "95.6345653357751" : 4.398, - "95.65976272157945" : 4.4, - "95.69722743014127" : 4.403, - "95.72206279406252" : 4.405, - "95.7570413981136" : 4.408, - "95.78126621254322" : 4.41, - "95.8172704071922" : 4.413, - "95.8512118226903" : 4.416, - "95.87500502750642" : 4.418, - "95.91005404771325" : 4.421, - "95.94336503151102" : 4.424, - "95.97834694926354" : 4.427, - "96.00163232933288" : 4.429, - "96.034545668957" : 4.432, - "96.06867679386296" : 4.435, - "96.09937658092036" : 4.438, - "96.13102657186775" : 4.441, - "96.16252081884711" : 4.444, - "96.1918263660206" : 4.447, - "96.22299835553423" : 4.45, - "96.25343304647586" : 4.453, - "96.28218851920913" : 4.456, - "96.31264889133698" : 4.459, - "96.35107954387065" : 4.463, - "96.38078853419535" : 4.466, - "96.41028710447814" : 4.469, - "96.43793083037589" : 4.472, - "96.47600857370544" : 4.476, - "96.50391905256967" : 4.48, - "96.53544809341423" : 4.485, - "96.56491518353329" : 4.489, - "96.60167573053758" : 4.493, - "96.62809338689986" : 4.496, - "96.66543466008278" : 4.5, - "96.69151017677065" : 4.503, - "96.71920195133937" : 4.506, - "96.75467181162999" : 4.51, - "96.7821208575677" : 4.513, - "96.81841582951867" : 4.517, - "96.8524392591276" : 4.521, - "96.87867549033565" : 4.524, - "96.89422089224973" : 4.526, - "96.9111936710622" : 4.528, - "96.92822278279925" : 4.53, - "96.94522289964866" : 4.532, - "96.95375319559906" : 4.533, - "96.96924557828999" : 4.535, - "96.9860153928888" : 4.537, - "97.00281751607673" : 4.539, - "97.01967431533853" : 4.541, - "97.03515675692513" : 4.543, - "97.05208314391733" : 4.545, - "97.06878419921111" : 4.547, - "97.08521601626232" : 4.549, - "97.10008625150654" : 4.551, - "97.11622729125575" : 4.553, - "97.13240312487017" : 4.555, - "97.14873967300477" : 4.557, - "97.16379050497787" : 4.559, - "97.17207807229727" : 4.56, - "97.1890317973264" : 4.562, - "97.20578255814189" : 4.564, - "97.22087563980844" : 4.566, - "97.2372063889655" : 4.568, - "97.25351808433925" : 4.57, - "97.26969143267758" : 4.572, - "97.28413254358439" : 4.574, - "97.30003665368014" : 4.576, - "97.31557294291524" : 4.578, - "97.33083999390776" : 4.58, - "97.34454049254113" : 4.582, - "97.35962280467797" : 4.584, - "97.38251965325263" : 4.587, - "97.3976748668213" : 4.589, - "97.41122873416563" : 4.591, - "97.4259374264643" : 4.593, - "97.44069499585932" : 4.595, - "97.45498201964884" : 4.597, - "97.4749860068601" : 4.6, - "97.48906012533165" : 4.602, - "97.50297187243227" : 4.604, - "97.52223773264618" : 4.607, - "97.53579657054267" : 4.609, - "97.54926428164939" : 4.611, - "97.56260110154892" : 4.613, - "97.58143038159716" : 4.616, - "97.59464045241634" : 4.618, - "97.61420785946194" : 4.621, - "97.62584723579516" : 4.623, - "97.6448761663556" : 4.626, - "97.65726692449196" : 4.628, - "97.67467545504473" : 4.631, - "97.69332330993873" : 4.634, - "97.70552932921943" : 4.636, - "97.72252281866594" : 4.639, - "97.73445048702506" : 4.641, - "97.75212328526823" : 4.644, - "97.76837533401593" : 4.647, - "97.78529757888131" : 4.65, - "97.80162749961302" : 4.653, - "97.81655158250577" : 4.656, - "97.83190976028808" : 4.659, - "97.84638566506008" : 4.662, - "97.86155661871064" : 4.665, - "97.8763001048745" : 4.668, - "97.89462238860133" : 4.672, - "97.90899474020311" : 4.675, - "97.92638256012184" : 4.679, - "97.93985027122854" : 4.682, - "97.95629699993626" : 4.686, - "97.96883604621239" : 4.689, - "97.98549982236489" : 4.693, - "98.00149008869826" : 4.697, - "98.01783077895966" : 4.701, - "98.03317901563764" : 4.705, - "98.04877163779736" : 4.709, - "98.0630926270267" : 4.713, - "98.08064281831633" : 4.718, - "98.09448166398512" : 4.722, - "98.11125147858394" : 4.727, - "98.12800058254871" : 4.732, - "98.14068294641244" : 4.736, - "98.15732932563235" : 4.741, - "98.17296336906014" : 4.746, - "98.19041663458245" : 4.752, - "98.20498449456962" : 4.757, - "98.21904204453391" : 4.762, - "98.23504225197162" : 4.768, - "98.25041616983582" : 4.774, - "98.26785369527624" : 4.781, - "98.28248948614308" : 4.787, - "98.29808542200423" : 4.793, - "98.31314370980557" : 4.799, - "98.32830058022498" : 4.805, - "98.3439859860252" : 4.819, - "98.36148978549458" : 4.827, - "98.37622498740483" : 4.834, - "98.39092870915132" : 4.841, - "98.40735721250108" : 4.849, - "98.42321575920194" : 4.857, - "98.43818292021348" : 4.865, - "98.4464506053242" : 4.87, - "98.45313434114315" : 4.874, - "98.46139622727634" : 4.879, - "98.46898128988894" : 4.883, - "98.47662434227686" : 4.887, - "98.48454326031026" : 4.891, - "98.49411323008972" : 4.896, - "98.50010108860478" : 4.899, - "98.50964040664584" : 4.904, - "98.51738618377863" : 4.908, - "98.52483538463188" : 4.912, - "98.53285288528335" : 4.916, - "98.54033273787499" : 4.92, - "98.54799153034479" : 4.924, - "98.5550190626889" : 4.928, - "98.56390806682096" : 4.933, - "98.57064813556453" : 4.937, - "98.57885120349701" : 4.942, - "98.58748339576692" : 4.947, - "98.59384984467232" : 4.951, - "98.60197421219544" : 4.956, - "98.60976638114849" : 4.961, - "98.61861147873637" : 4.967, - "98.62572019676594" : 4.972, - "98.63329117614738" : 4.978, - "98.64068238722531" : 4.984, - "98.64979589463043" : 4.991, - "98.65684248075786" : 4.996, - "98.66527253723947" : 5.002, - "98.67206231150476" : 5.007, - "98.68038467268934" : 5.013, - "98.68815198888154" : 5.019, - "98.6956426110029" : 5.025, - "98.70388958547956" : 5.032, - "98.71097179389754" : 5.038, - "98.71940019352844" : 5.045, - "98.7276040898863" : 5.052, - "98.73478073879554" : 5.058, - "98.74305919343595" : 5.065, - "98.75114462496707" : 5.072, - "98.75886803461509" : 5.079, - "98.76595438515989" : 5.086, - "98.77437781423862" : 5.095, - "98.78195542102296" : 5.103, - "98.78945764109937" : 5.111, - "98.79772698306081" : 5.12, - "98.80468906980134" : 5.128, - "98.81265023752819" : 5.137, - "98.8211739060757" : 5.147, - "98.82837209404434" : 5.155, - "98.83611455747568" : 5.164, - "98.84447502622692" : 5.175, - "98.85160942544269" : 5.184, - "98.8599790068729" : 5.195, - "98.86766927950644" : 5.205, - "98.87534215520739" : 5.215, - "98.883334803098" : 5.226, - "98.89074672480997" : 5.236, - "98.89855380541954" : 5.247, - "98.9063824250885" : 5.258, - "98.91428808831611" : 5.27, - "98.92197670409892" : 5.282, - "98.93018557100896" : 5.295, - "98.93782116756863" : 5.307, - "98.94543025451671" : 5.32, - "98.9534187602805" : 5.336, - "98.96145282943918" : 5.352, - "98.9690702006409" : 5.368, - "98.97674307634185" : 5.384, - "98.98446151543769" : 5.4, - "98.99236966394139" : 5.416, - "99.0001775729763" : 5.434, - "99.00784464969972" : 5.453, - "99.01583895444104" : 5.474, - "99.02372556388532" : 5.496, - "99.03132139602762" : 5.515, - "99.03914835884586" : 5.537, - "99.046943013075" : 5.561, - "99.05476252006498" : 5.585, - "99.06257208595062" : 5.61, - "99.07033194631455" : 5.635, - "99.07834447641383" : 5.664, - "99.08603971959955" : 5.692, - "99.09385674131346" : 5.721, - "99.10158926364045" : 5.752, - "99.10946758883112" : 5.781, - "99.11723656187404" : 5.82, - "99.12519441589944" : 5.857, - "99.13308848117198" : 5.893, - "99.14074230308961" : 5.926, - "99.14850050660282" : 5.956, - "99.15647078700864" : 5.993, - "99.16424058847693" : 6.032, - "99.17196151284885" : 6.074, - "99.17982989693519" : 6.117, - "99.1876096395078" : 6.165, - "99.19536287246885" : 6.214, - "99.20320971749577" : 6.264, - "99.21103088133647" : 6.321, - "99.21884624619965" : 6.372, - "99.2226942820052" : 6.396, - "99.22668977752512" : 6.423, - "99.23057592089731" : 6.449, - "99.23437590803186" : 6.482, - "99.23834572236558" : 6.515, - "99.24220452770082" : 6.546, - "99.24618014101208" : 6.581, - "99.25004474532486" : 6.612, - "99.25397230996512" : 6.64, - "99.25781786049458" : 6.67, - "99.26180590018626" : 6.702, - "99.2656994993867" : 6.731, - "99.26954339306542" : 6.761, - "99.27352149165277" : 6.792, - "99.27743497306189" : 6.832, - "99.28126561193483" : 6.864, - "99.2851890344483" : 6.902, - "99.28910831483493" : 6.934, - "99.2930035708861" : 6.965, - "99.2968938563851" : 6.994, - "99.30084710221158" : 7.032, - "99.30475147094171" : 7.072, - "99.30870140306676" : 7.107, - "99.31254115461867" : 7.141, - "99.31641570003579" : 7.185, - "99.32033912254926" : 7.23, - "99.32430810845761" : 7.277, - "99.32815697268852" : 7.316, - "99.332032346531" : 7.355, - "99.33598642078285" : 7.402, - "99.33992475495282" : 7.442, - "99.34379930036992" : 7.489, - "99.34767964476458" : 7.53, - "99.3515757292411" : 7.578, - "99.35556956791031" : 7.616, - "99.3594557112825" : 7.661, - "99.36332114402063" : 7.706, - "99.36722799802686" : 7.754, - "99.37114810683887" : 7.806, - "99.37501022587556" : 7.866, - "99.37892039358323" : 7.909, - "99.38289269319304" : 7.951, - "99.38672250364061" : 7.991, - "99.39064592615408" : 8.045, - "99.39460745623418" : 8.096, - "99.398492771181" : 8.148, - "99.40239465463506" : 8.195, - "99.40629985179056" : 8.235, - "99.41022658800547" : 8.289, - "99.41410444712403" : 8.341, - "99.41804775184617" : 8.395, - "99.4219438363227" : 8.45, - "99.42579601425504" : 8.507, - "99.4297086672388" : 8.564, - "99.43360640856605" : 8.613, - "99.43750000776649" : 8.669, - "99.44145076831688" : 8.731, - "99.44531620105502" : 8.781, - "99.44925039309818" : 8.849, - "99.45316553135804" : 8.899, - "99.45706244425992" : 8.957, - "99.46099912157916" : 9.008, - "99.46486538274266" : 9.065, - "99.46879129053221" : 9.123, - "99.47266335067324" : 9.18, - "99.47656689097802" : 9.234, - "99.48054250428928" : 9.291, - "99.48442781923609" : 9.347, - "99.4882874529967" : 9.403, - "99.49223075771884" : 9.464, - "99.4961218716432" : 9.518, - "99.5000204413958" : 9.58, - "99.50391321217087" : 9.636, - "99.50785900216911" : 9.697, - "99.51176419932462" : 9.754, - "99.51564454371926" : 9.821, - "99.51957210835953" : 9.891, - "99.52346487913461" : 9.95, - "99.52738001739445" : 10.012, - "99.53125042068476" : 10.079, - "99.53519869595907" : 10.147, - "99.539077383503" : 10.219, - "99.54297926695705" : 10.278, - "99.54696647822337" : 10.336, - "99.55082445513325" : 10.392, - "99.55473213756484" : 10.457, - "99.55866135905583" : 10.529, - "99.56254915927873" : 10.595, - "99.56641542044223" : 10.668, - "99.57034878406003" : 10.725, - "99.57423492743222" : 10.793, - "99.57813681088628" : 10.873, - "99.58207928718305" : 10.928, - "99.58600022442043" : 10.987, - "99.58988139724045" : 11.053, - "99.5937832806945" : 11.119, - "99.59768599257391" : 11.181, - "99.60162764044533" : 11.235, - "99.60550384271318" : 11.305, - "99.60943306420417" : 11.364, - "99.61138069222974" : 11.394, - "99.61328524213651" : 11.428, - "99.61525523764686" : 11.456, - "99.61720286567244" : 11.494, - "99.61920268449582" : 11.528, - "99.62112545976055" : 11.565, - "99.62305983298033" : 11.598, - "99.62502402951316" : 11.633, - "99.62696917226265" : 11.674, - "99.62893336879546" : 11.704, - "99.63088762422393" : 11.735, - "99.63283028169735" : 11.773, - "99.63479530665552" : 11.817, - "99.63676198846443" : 11.859, - "99.63869304798277" : 11.898, - "99.64064813183661" : 11.934, - "99.64261895577232" : 11.977, - "99.64453427520878" : 12.008, - "99.6464943296148" : 12.054, - "99.6484543840208" : 12.096, - "99.65039621306884" : 12.13, - "99.65236869385528" : 12.17, - "99.65433868936563" : 12.205, - "99.65625235195138" : 12.239, - "99.65820412210377" : 12.282, - "99.66018571556918" : 12.317, - "99.66213417202012" : 12.356, - "99.66409671170221" : 12.391, - "99.66603274177274" : 12.424, - "99.66796877184325" : 12.462, - "99.66997853177097" : 12.502, - "99.67188722380453" : 12.541, - "99.67386633199386" : 12.581, - "99.67579573466149" : 12.618, - "99.67776407332111" : 12.658, - "99.67972661300321" : 12.702, - "99.68165270196938" : 12.734, - "99.68365003551666" : 12.773, - "99.68556452652777" : 12.807, - "99.68754777684391" : 12.852, - "99.68947635108617" : 12.892, - "99.69140906745524" : 12.923, - "99.69336000918227" : 12.961, - "99.69533166154334" : 12.995, - "99.69726686318849" : 13.032, - "99.69926502516114" : 13.074, - "99.70117868774689" : 13.103, - "99.70313294317536" : 13.137, - "99.70511950719295" : 13.189, - "99.70705305198737" : 13.229, - "99.70903464545279" : 13.268, - "99.71096156284433" : 13.299, - "99.71289676448949" : 13.338, - "99.71487752952953" : 13.369, - "99.71679781951818" : 13.408, - "99.71879183936402" : 13.449, - "99.72074443794176" : 13.491, - "99.72269206596735" : 13.538, - "99.7246164980828" : 13.587, - "99.72661631690617" : 13.624, - "99.7285216952383" : 13.659, - "99.73050908768124" : 13.703, - "99.73248156846768" : 13.736, - "99.73439854475487" : 13.773, - "99.73635528545944" : 13.826, - "99.73830208505966" : 13.865, - "99.74028616380114" : 13.899, - "99.74222716442384" : 13.935, - "99.74414993968857" : 13.975, - "99.74612490575109" : 14.011, - "99.74809821496288" : 14.062, - "99.75001767652616" : 14.093, - "99.75196033399956" : 14.133, - "99.75390879045051" : 14.186, - "99.75588292808767" : 14.234, - "99.75783718351614" : 14.273, - "99.75981629170548" : 14.308, - "99.76172249846296" : 14.353, - "99.76367344018999" : 14.39, - "99.7656310093199" : 14.439, - "99.7675786373455" : 14.476, - "99.7695560886841" : 14.525, - "99.77149543245606" : 14.573, - "99.77345797213815" : 14.611, - "99.77541139914126" : 14.658, - "99.77734660078642" : 14.691, - "99.77934973331124" : 14.729, - "99.78126505274771" : 14.773, - "99.7832168229001" : 14.823, - "99.78518019100756" : 14.867, - "99.7871195347795" : 14.903, - "99.78908621658842" : 14.938, - "99.79102804563647" : 14.984, - "99.79298478634102" : 15.029, - "99.79495229657529" : 15.067, - "99.79688335609363" : 15.111, - "99.79883678309675" : 15.176, - "99.80080595018173" : 15.225, - "99.80279665632612" : 15.269, - "99.80473600009809" : 15.319, - "99.80567377760764" : 15.344, - "99.80667948599685" : 15.361, - "99.80762223405858" : 15.386, - "99.8085997759855" : 15.415, - "99.80959554327038" : 15.444, - "99.81056977149585" : 15.472, - "99.81153240176626" : 15.497, - "99.81250911526782" : 15.522, - "99.81350322570196" : 15.551, - "99.81446585597237" : 15.574, - "99.81544919687681" : 15.597, - "99.81640851344578" : 15.616, - "99.81741587868572" : 15.638, - "99.8183702247025" : 15.656, - "99.81934362450262" : 15.683, - "99.82034519076502" : 15.711, - "99.82132438954267" : 15.738, - "99.82227376500728" : 15.764, - "99.82324385110596" : 15.787, - "99.82422387830896" : 15.823, - "99.82522130244456" : 15.853, - "99.82617564846134" : 15.869, - "99.82715733251507" : 15.898, - "99.82813818814344" : 15.918, - "99.82913975440584" : 15.939, - "99.83007918876612" : 15.967, - "99.83108324030462" : 15.993, - "99.83203592947068" : 16.018, - "99.83306897589684" : 16.042, - "99.83399929757813" : 16.06, - "99.8349934080123" : 16.094, - "99.83593781292474" : 16.114, - "99.8369426928886" : 16.14, - "99.83792189166624" : 16.167, - "99.8388919777649" : 16.189, - "99.83987614709471" : 16.221, - "99.84085617429771" : 16.243, - "99.84182460354565" : 16.266, - "99.84281042972619" : 16.292, - "99.84375897676544" : 16.314, - "99.84476137145322" : 16.338, - "99.8457289722758" : 16.367, - "99.84670320050127" : 16.401, - "99.84767577187601" : 16.431, - "99.84865745592974" : 16.465, - "99.84961594407334" : 16.499, - "99.85060674080604" : 16.529, - "99.85159670911338" : 16.561, - "99.85254691300337" : 16.588, - "99.85352859705709" : 16.614, - "99.8545260211927" : 16.647, - "99.85548450933629" : 16.687, - "99.85645211015887" : 16.724, - "99.8574619606749" : 16.764, - "99.85842293409458" : 16.795, - "99.85937976538746" : 16.829, - "99.86037221897088" : 16.86, - "99.86133816294273" : 16.894, - "99.8623082490414" : 16.919, - "99.86328579096832" : 16.953, - "99.86427410242494" : 16.98, - "99.86523921797144" : 17.012, - "99.86622338730125" : 17.041, - "99.8672108703325" : 17.079, - "99.86816853005074" : 17.102, - "99.8691535278059" : 17.124, - "99.87014101083717" : 17.165, - "99.87110861165975" : 17.205, - "99.87207952618377" : 17.231, - "99.87304961228243" : 17.27, - "99.87404620799268" : 17.301, - "99.87501298038988" : 17.332, - "99.87597892436175" : 17.369, - "99.87697137794517" : 17.397, - "99.87796300310325" : 17.443, - "99.87892397652293" : 17.473, - "99.87989737632303" : 17.518, - "99.88086994769778" : 17.556, - "99.88185494545296" : 17.59, - "99.88283331580523" : 17.626, - "99.88379925977709" : 17.663, - "99.88477763012936" : 17.711, - "99.88575765733238" : 17.746, - "99.88672442972958" : 17.788, - "99.88771025591012" : 17.842, - "99.88867702830734" : 17.889, - "99.88967362401758" : 17.916, - "99.8906445385416" : 17.951, - "99.89162125204315" : 17.978, - "99.89259133814181" : 18.008, - "99.89357716432235" : 18.039, - "99.89454062301812" : 18.08, - "99.89551982179576" : 18.112, - "99.89649405002123" : 18.167, - "99.89747242037352" : 18.222, - "99.8984400211961" : 18.258, - "99.89941921997374" : 18.302, - "99.90040256087818" : 18.344, - "99.90138093123046" : 18.384, - "99.90235847315738" : 18.428, - "99.90284890097156" : 18.448, - "99.90333435823358" : 18.468, - "99.90380987439124" : 18.488, - "99.9043119001605" : 18.505, - "99.90481061222829" : 18.524, - "99.90527370200554" : 18.556, - "99.90577655620015" : 18.575, - "99.90627443984259" : 18.602, - "99.9067557549778" : 18.63, - "99.90723789853836" : 18.646, - "99.9077357821808" : 18.672, - "99.90821212676383" : 18.69, - "99.90869427032439" : 18.711, - "99.9091863549893" : 18.738, - "99.90968423863174" : 18.757, - "99.91016472534157" : 18.781, - "99.9106543247304" : 18.798, - "99.91115717892501" : 18.824, - "99.91162855295588" : 18.855, - "99.91212643659831" : 18.882, - "99.91261272228569" : 18.895, - "99.91310397852523" : 18.912, - "99.91358115153362" : 18.935, - "99.91408317730287" : 18.959, - "99.91456035031126" : 18.978, - "99.91504912127472" : 19.009, - "99.91554120593963" : 19.052, - "99.91602003579875" : 19.081, - "99.91653697322451" : 19.111, - "99.91700089142711" : 19.125, - "99.91748800553985" : 19.154, - "99.91798423233156" : 19.183, - "99.91846803274285" : 19.21, - "99.91895763213167" : 19.237, - "99.91944474624441" : 19.263, - "99.91992274767816" : 19.298, - "99.92041731761915" : 19.323, - "99.92090360330653" : 19.347, - "99.92139485954607" : 19.373, - "99.9219059979943" : 19.395, - "99.92237985730125" : 19.414, - "99.92286282928717" : 19.434, - "99.92334911497454" : 19.457, - "99.92383871436337" : 19.49, - "99.92431671579712" : 19.514, - "99.9248071436113" : 19.57, - "99.92529922827622" : 19.6, - "99.92579131294112" : 19.627, - "99.92627594177777" : 19.647, - "99.92676636959195" : 19.674, - "99.92725265527932" : 19.711, - "99.9277347988399" : 19.743, - "99.92823185405696" : 19.782, - "99.92872311029652" : 19.829, - "99.92920111173026" : 19.873, - "99.92969402482053" : 19.899, - "99.9301869379108" : 19.931, - "99.93067653729962" : 19.956, - "99.93116199456163" : 20.01, - "99.93164993709973" : 20.036, - "99.93213539436175" : 20.067, - "99.93262085162375" : 20.091, - "99.93312122054228" : 20.116, - "99.93360253567748" : 20.139, - "99.93408964979022" : 20.158, - "99.93457179335078" : 20.198, - "99.93505890746351" : 20.229, - "99.93554850685234" : 20.257, - "99.93604721892014" : 20.307, - "99.93653433303288" : 20.339, - "99.93701896186953" : 20.382, - "99.93751601708661" : 20.418, - "99.93799070481892" : 20.465, - "99.93847864735702" : 20.503, - "99.93898895737988" : 20.535, - "99.93947772834333" : 20.57, - "99.9399557297771" : 20.631, - "99.9404345596362" : 20.673, - "99.94092001689822" : 20.717, - "99.94141624368993" : 20.781, - "99.94190004410122" : 20.807, - "99.94238301608715" : 20.845, - "99.9428717870506" : 20.906, - "99.94336138643943" : 20.956, - "99.94384932897752" : 21.009, - "99.94434389891852" : 21.059, - "99.94482687090445" : 21.102, - "99.94531729871863" : 21.171, - "99.94580358440601" : 21.223, - "99.94629484064555" : 21.274, - "99.94678029790757" : 21.345, - "99.94727818155" : 21.432, - "99.9477553545584" : 21.511, - "99.9482474392233" : 21.568, - "99.9487353817614" : 21.635, - "99.94922580957558" : 21.725, - "99.94971872266585" : 21.826, - "99.95019838095033" : 21.887, - "99.95069460774204" : 21.94, - "99.95117675130261" : 22.014, - "99.95141865150825" : 22.042, - "99.9516646938407" : 22.102, - "99.95191570672533" : 22.129, - "99.95215760693097" : 22.146, - "99.95239287973372" : 22.165, - "99.95263975049154" : 22.224, - "99.95288165069718" : 22.268, - "99.953128521455" : 22.339, - "99.95336959323528" : 22.406, - "99.95361563556773" : 22.493, - "99.9538591926241" : 22.562, - "99.95410357810583" : 22.612, - "99.954351277289" : 22.659, - "99.95459234906929" : 22.705, - "99.95484253352855" : 22.77, - "99.9550819484581" : 22.815, - "99.95532384866375" : 22.88, - "99.95557154784693" : 22.917, - "99.95581676175402" : 22.969, - "99.9560578335343" : 22.987, - "99.95629890531458" : 23.072, - "99.95654660449776" : 23.129, - "99.95679264683021" : 23.163, - "99.95703537546122" : 23.186, - "99.95727727566687" : 23.248, - "99.95752248957396" : 23.365, - "99.9577643897796" : 23.465, - "99.95800794683596" : 23.528, - "99.95825481759378" : 23.591, - "99.95850085992623" : 23.67, - "99.9587402748558" : 23.767, - "99.95898631718825" : 23.842, - "99.95923567322215" : 23.883, - "99.95947591657706" : 23.958, - "99.95971781678271" : 23.99, - "99.95996220226445" : 24.083, - "99.96020575932081" : 24.139, - "99.96044931637718" : 24.229, - "99.96069535870963" : 24.36, - "99.9609430578928" : 24.51, - "99.96118330124773" : 24.573, - "99.96142934358018" : 24.662, - "99.96167207221119" : 24.769, - "99.9619148008422" : 24.968, - "99.96216084317464" : 25.051, - "99.9624027433803" : 25.157, - "99.96264878571274" : 25.286, - "99.96289151434375" : 25.367, - "99.96313838510156" : 25.471, - "99.96337945688185" : 25.546, - "99.96362798449039" : 25.706, - "99.96386739941994" : 25.917, - "99.9641134417524" : 26.057, - "99.96435782723412" : 26.325, - "99.96460138429049" : 26.457, - "99.96484494134687" : 26.586, - "99.96509429738076" : 26.697, - "99.96533454073568" : 26.916, - "99.96557975464277" : 27.09, - "99.96582165484843" : 27.151, - "99.96606769718088" : 27.289, - "99.96630959738651" : 27.429, - "99.96655315444289" : 27.569, - "99.96679753992461" : 27.828, - "99.9670427538317" : 28.021, - "99.96728962458953" : 28.2, - "99.96753152479516" : 28.367, - "99.9677759102769" : 28.76, - "99.96802112418399" : 29.059, - "99.96826468124036" : 29.232, - "99.968506581446" : 29.467, - "99.96875096692773" : 29.752, - "99.96899618083482" : 29.927, - "99.96924139474191" : 30.204, - "99.96948329494755" : 30.314, - "99.96972850885464" : 30.408, - "99.96997703646318" : 30.702, - "99.97021562296739" : 31.001, - "99.97046332215056" : 31.152, - "99.97070439393084" : 31.432, - "99.97094795098721" : 31.734, - "99.97119647859574" : 31.89, - "99.97143920722675" : 32.097, - "99.9716811074324" : 32.409, - "99.97192466448877" : 32.673, - "99.97217070682122" : 32.928, - "99.97241260702687" : 33.115, - "99.97265699250859" : 33.346, - "99.97290137799033" : 33.711, - "99.97314493504669" : 34.044, - "99.97338932052841" : 34.333, - "99.9736345344355" : 34.724, - "99.97387891991724" : 35.125, - "99.97412496224969" : 35.331, - "99.97437183300751" : 35.72, - "99.9746104195117" : 35.963, - "99.97485729026951" : 36.619, - "99.9750983620498" : 36.963, - "99.97534274753153" : 37.588, - "99.97558630458789" : 37.912, - "99.97570891154145" : 38.217, - "99.97583069006963" : 38.57, - "99.97595329702317" : 38.727, - "99.97607507555136" : 38.902, - "99.97619851093026" : 39.141, - "99.97632028945844" : 39.461, - "99.97644123956127" : 39.735, - "99.97656550336553" : 40.074, - "99.97668645346836" : 40.341, - "99.97680740357119" : 40.458, - "99.97693166737545" : 41.035, - "99.97705261747828" : 41.261, - "99.9771735675811" : 41.424, - "99.97729534610929" : 41.786, - "99.97741795306283" : 42.009, - "99.97754221686709" : 42.154, - "99.97766399539528" : 42.371, - "99.9777849454981" : 42.518, - "99.97790589560093" : 42.776, - "99.97802933097984" : 42.992, - "99.97815276635873" : 43.139, - "99.9782728880362" : 43.497, - "99.97839549498974" : 43.566, - "99.97851727351792" : 44.021, - "99.97863822362075" : 44.123, - "99.97876165899966" : 44.483, - "99.97888343752784" : 44.518, - "99.97900687290675" : 44.698, - "99.97912782300958" : 45.069, - "99.97924960153776" : 45.484, - "99.97937055164059" : 45.619, - "99.97949398701948" : 45.805, - "99.97961825082376" : 46.085, - "99.97973754407586" : 46.512, - "99.9798601510294" : 46.564, - "99.97998358640831" : 46.735, - "99.98010536493649" : 46.903, - "99.98022465818859" : 47.484, - "99.98034726514213" : 47.537, - "99.98047070052104" : 47.64, - "99.98059082219851" : 48.006, - "99.98071342915205" : 48.574, - "99.98083520768023" : 48.884, - "99.98095781463378" : 49.365, - "99.98108125001268" : 49.939, - "99.9812022001155" : 50.61, - "99.98132397864369" : 50.955, - "99.98144658559724" : 51.251, - "99.9815708494015" : 51.396, - "99.98169262792969" : 51.768, - "99.98181440645787" : 51.932, - "99.9819353565607" : 52.237, - "99.98205796351424" : 52.444, - "99.98217974204242" : 52.586, - "99.98230152057062" : 52.796, - "99.98242247067343" : 53.413, - "99.98254507762698" : 53.675, - "99.9826660277298" : 53.962, - "99.98278863468335" : 54.607, - "99.98291289848761" : 54.936, - "99.98303302016508" : 55.282, - "99.98315479869326" : 55.442, - "99.98327989092289" : 55.706, - "99.98340166945107" : 56.102, - "99.98352179112854" : 56.409, - "99.9836460549328" : 56.465, - "99.98376700503563" : 56.688, - "99.98388795513844" : 56.907, - "99.98400973366662" : 57.337, - "99.98413151219482" : 57.407, - "99.98425660442444" : 57.456, - "99.9843767261019" : 57.56, - "99.98449767620473" : 57.676, - "99.98462028315828" : 58.081, - "99.98474454696255" : 58.309, - "99.98486549706537" : 58.431, - "99.98498644716818" : 58.527, - "99.98510822569637" : 58.706, - "99.98523083264992" : 58.834, - "99.98535343960346" : 59.074, - "99.98547687498237" : 59.276, - "99.98559699665984" : 59.414, - "99.98571794676265" : 59.788, - "99.9858405537162" : 59.902, - "99.98596398909511" : 60.064, - "99.98608493919792" : 60.199, - "99.98620920300219" : 60.333, - "99.98632932467966" : 60.513, - "99.98645027478248" : 60.787, - "99.98657288173602" : 60.916, - "99.9866946602642" : 61.076, - "99.98681892406847" : 61.271, - "99.98693904574594" : 61.534, - "99.98706165269948" : 61.685, - "99.98718343122766" : 61.876, - "99.98730686660657" : 61.949, - "99.98742947356013" : 62.293, - "99.98755042366294" : 62.493, - "99.98767137376576" : 62.655, - "99.98779315229395" : 62.798, - "99.98785528419609" : 62.837, - "99.9879157592475" : 62.92, - "99.98797789114963" : 63.008, - "99.98803836620104" : 63.23, - "99.98810132652854" : 63.31, - "99.98816014472922" : 63.359, - "99.98822393348209" : 63.378, - "99.98828275168277" : 63.651, - "99.98834239830882" : 63.761, - "99.98840453021096" : 63.804, - "99.98846583368773" : 63.845, - "99.98852548031378" : 63.976, - "99.98858678379055" : 63.993, - "99.98864808726732" : 64.234, - "99.98870856231873" : 64.288, - "99.98877152264623" : 64.307, - "99.98883365454836" : 64.339, - "99.98889330117441" : 64.776, - "99.98895294780046" : 64.98, - "99.9890150797026" : 65.021, - "99.98907638317937" : 65.07, - "99.98913685823078" : 65.199, - "99.98919816170755" : 65.277, - "99.98926029360969" : 65.741, - "99.98931994023573" : 65.972, - "99.98938124371251" : 66.038, - "99.98944420404001" : 66.063, - "99.98950467909141" : 66.107, - "99.98956432571747" : 66.516, - "99.98962562919424" : 66.539, - "99.989686932671" : 66.6, - "99.98974657929706" : 66.727, - "99.98981036804992" : 67.049, - "99.9898691862506" : 67.191, - "99.98993048972739" : 67.277, - "99.9899909647788" : 67.409, - "99.99005392510628" : 67.496, - "99.99011274330698" : 67.564, - "99.99017570363448" : 67.759, - "99.99023617868588" : 67.797, - "99.99029748216266" : 68.036, - "99.9903571287887" : 68.154, - "99.99041843226547" : 68.172, - "99.99048056416761" : 68.374, - "99.99054021079367" : 68.469, - "99.99060317112115" : 68.576, - "99.99066198932185" : 68.735, - "99.99072329279862" : 68.778, - "99.99078542470075" : 68.871, - "99.99084672817753" : 68.927, - "99.9909080316543" : 68.964, - "99.99096684985498" : 69.035, - "99.99102898175713" : 69.166, - "99.99108945680854" : 69.276, - "99.99115407398675" : 69.453, - "99.99121123533672" : 69.57, - "99.99127419566422" : 69.672, - "99.99133632756634" : 69.767, - "99.99139431734167" : 69.929, - "99.99145644924381" : 69.954, - "99.99151775272058" : 70.223, - "99.99157988462271" : 70.25, - "99.99163953124877" : 70.27, - "99.99170000630018" : 70.352, - "99.99176130977695" : 70.417, - "99.99182344167909" : 70.598, - "99.99188308830513" : 70.7, - "99.99194770548335" : 70.912, - "99.99200569525868" : 70.972, - "99.99206617031008" : 71.177, - "99.99212995906295" : 71.221, - "99.99218877726364" : 71.244, - "99.99225090916576" : 71.372, - "99.99231221264255" : 71.588, - "99.99237351611932" : 71.898, - "99.99243399117073" : 71.964, - "99.99249446622214" : 72.03, - "99.99255411284818" : 72.169, - "99.99261790160105" : 72.202, - "99.99267754822709" : 72.266, - "99.99273719485315" : 72.477, - "99.99279849832992" : 72.711, - "99.99285980180669" : 72.888, - "99.99292193370883" : 72.96, - "99.99298406561095" : 73.004, - "99.99304205538628" : 73.154, - "99.99310418728842" : 73.213, - "99.99316466233982" : 73.263, - "99.99322513739124" : 73.451, - "99.9932889261441" : 73.761, - "99.9933494011955" : 73.862, - "99.99341070467229" : 73.966, - "99.99346952287297" : 74.061, - "99.99353331162582" : 74.085, - "99.9935946151026" : 74.335, - "99.99365757543009" : 74.347, - "99.99371556520542" : 74.662, - "99.99377604025683" : 74.699, - "99.99383651530825" : 74.728, - "99.99389947563574" : 74.833, - "99.9939284705234" : 74.844, - "99.99396077911251" : 75.203, - "99.99398811714946" : 75.333, - "99.99401876888784" : 75.393, - "99.99405604802912" : 75.423, - "99.99408172921534" : 75.427, - "99.994110724103" : 75.451, - "99.99414303269211" : 75.461, - "99.99417119915441" : 75.52, - "99.99420350774352" : 75.528, - "99.99423333105655" : 75.655, - "99.99426481122029" : 75.665, - "99.99429463453332" : 75.687, - "99.99432445784635" : 75.694, - "99.99435593801009" : 75.803, - "99.99438658974847" : 75.812, - "99.99441724148686" : 75.818, - "99.99444872165061" : 75.836, - "99.99447771653827" : 75.869, - "99.99451002512738" : 75.883, - "99.99453736316433" : 76.189, - "99.99456884332807" : 76.231, - "99.99460032349182" : 76.24, - "99.99463097523021" : 76.377, - "99.9946616269686" : 76.411, - "99.99469227870698" : 76.509, - "99.99472210202" : 76.519, - "99.99475275375839" : 76.599, - "99.99478340549678" : 76.793, - "99.99481240038443" : 76.805, - "99.99484305212283" : 76.847, - "99.99487453228657" : 76.856, - "99.9949043555996" : 76.863, - "99.99493500733799" : 77.027, - "99.99496565907637" : 77.044, - "99.9949954823894" : 77.058, - "99.99502944782922" : 77.103, - "99.9950584427169" : 77.154, - "99.99508909445528" : 77.163, - "99.99511726091758" : 77.229, - "99.9951495695067" : 77.246, - "99.99518104967044" : 77.309, - "99.99521252983419" : 77.326, - "99.99523986787112" : 77.335, - "99.9952730048856" : 77.351, - "99.9953011713479" : 77.498, - "99.99533265151165" : 77.522, - "99.9953641316754" : 77.532, - "99.99539312656306" : 77.646, - "99.99542294987609" : 77.68, - "99.99545360161447" : 77.689, - "99.9954834249275" : 77.728, - "99.99551407666588" : 77.828, - "99.99554472840427" : 77.839, - "99.99557538014265" : 77.896, - "99.99560603188104" : 78.017, - "99.99563668361942" : 78.036, - "99.99566816378318" : 78.22, - "99.9956979870962" : 78.273, - "99.99572863883458" : 78.285, - "99.99576011899833" : 78.33, - "99.99579159916208" : 78.34, - "99.99582059404975" : 78.555, - "99.99585207421349" : 78.669, - "99.99588272595187" : 78.677, - "99.99591089241417" : 78.686, - "99.99594320100329" : 78.82, - "99.99597468116704" : 78.829, - "99.99600284762934" : 78.866, - "99.99603432779308" : 78.998, - "99.99606415110611" : 79.1, - "99.99609563126985" : 79.15, - "99.99612462615752" : 79.22, - "99.996157763172" : 79.232, - "99.9961859296343" : 79.256, - "99.99621658137268" : 79.265, - "99.9962464046857" : 79.319, - "99.99627705642409" : 79.33, - "99.99630770816248" : 79.339, - "99.99634001675159" : 79.512, - "99.99636984006462" : 79.541, - "99.99640214865373" : 79.563, - "99.99643114354139" : 79.673, - "99.99646013842904" : 79.804, - "99.99649079016744" : 79.813, - "99.99652227033118" : 79.874, - "99.99655375049493" : 79.884, - "99.99658440223332" : 80.084, - "99.99661256869562" : 80.092, - "99.99664736256082" : 80.163, - "99.9966780142992" : 80.169, - "99.99670452391078" : 80.203, - "99.99673766092525" : 80.21, - "99.99676831266363" : 80.249, - "99.9967973075513" : 80.3, - "99.99682630243896" : 80.321, - "99.99685943945343" : 80.329, - "99.99688926276646" : 80.467, - "99.99691825765412" : 80.476, - "99.9969513946686" : 80.487, - "99.99696547789975" : 80.497, - "99.99698536010843" : 80.501, - "99.99699612963813" : 80.503, - "99.99700938444391" : 80.507, - "99.99702512452579" : 80.512, - "99.99704003618231" : 80.527, - "99.99705577626418" : 80.535, - "99.9970706879207" : 80.54, - "99.99708891327865" : 80.549, - "99.99710133965908" : 80.552, - "99.99711790816632" : 80.557, - "99.9971336482482" : 80.564, - "99.99714690305397" : 80.568, - "99.99716429998658" : 80.661, - "99.99717755479236" : 80.666, - "99.99719329487424" : 80.772, - "99.99721317708293" : 80.776, - "99.99722808873943" : 80.778, - "99.99724134354523" : 80.78, - "99.99725956890317" : 80.783, - "99.99726951000753" : 80.786, - "99.99728525008939" : 80.856, - "99.99730016174591" : 81.089, - "99.9973175586785" : 81.112, - "99.99732998505894" : 81.118, - "99.99734738199153" : 81.139, - "99.99736146522268" : 81.142, - "99.997380519006" : 81.145, - "99.99739211696107" : 81.148, - "99.9974086854683" : 81.157, - "99.99742276869945" : 81.162, - "99.99743768035597" : 81.195, - "99.99745259201248" : 81.2, - "99.99746998894508" : 81.205, - "99.99748324375086" : 81.236, - "99.99749898383274" : 81.241, - "99.99751389548925" : 81.246, - "99.99753129242185" : 81.28, - "99.99754620407836" : 81.284, - "99.99755863045878" : 81.296, - "99.99757519896603" : 81.466, - "99.99759259589862" : 81.471, - "99.99760502227905" : 81.475, - "99.99762490448774" : 81.489, - "99.99763898771889" : 81.492, - "99.99765141409931" : 81.495, - "99.99766632575583" : 81.498, - "99.99768123741234" : 81.509, - "99.99769780591957" : 81.525, - "99.99771271757608" : 81.531, - "99.9977276292326" : 81.537, - "99.99774419773983" : 81.552, - "99.99775745254563" : 81.556, - "99.99777484947822" : 81.561, - "99.99778810428401" : 81.567, - "99.99780384436588" : 81.586, - "99.9978187560224" : 81.592, - "99.99783449610426" : 81.657, - "99.99784940776078" : 81.715, - "99.99786597626802" : 81.72, - "99.99787923107381" : 81.724, - "99.99789497115567" : 81.745, - "99.9979098828122" : 81.758, - "99.99792645131943" : 81.774, - "99.99794301982666" : 81.843, - "99.99795793148317" : 81.848, - "99.99797118628896" : 81.852, - "99.9979877547962" : 81.955, - "99.99800183802735" : 81.959, - "99.99801923495995" : 81.964, - "99.99803166134038" : 82.07, - "99.99804988669834" : 82.075, - "99.99806231307876" : 82.077, - "99.998078881586" : 82.08, - "99.99809627851859" : 82.083, - "99.99811201860047" : 82.086, - "99.99812527340626" : 82.097, - "99.99813935663741" : 82.108, - "99.99815509671929" : 82.113, - "99.99816917995044" : 82.117, - "99.9981849200323" : 82.121, - "99.99820066011418" : 82.124, - "99.99821474334533" : 82.128, - "99.99823131185256" : 82.132, - "99.99824705193444" : 82.137, - "99.99826196359095" : 82.162, - "99.9982760468221" : 82.175, - "99.99829427218006" : 82.2, - "99.99830835541121" : 82.204, - "99.998321610217" : 82.208, - "99.99833817872424" : 82.268, - "99.99835474723147" : 82.273, - "99.99836800203727" : 82.445, - "99.99838539896986" : 82.45, - "99.99840031062638" : 82.457, - "99.99841605070824" : 82.461, - "99.99842847708868" : 82.465, - "99.99844421717054" : 82.541, - "99.9984624425285" : 82.544, - "99.99847901103574" : 82.547, - "99.99848398158791" : 82.548, - "99.9984906089908" : 82.552, - "99.99849889324443" : 82.556, - "99.99850552064733" : 82.56, - "99.9985146333263" : 82.648, - "99.99852126072919" : 82.65, - "99.99852788813209" : 82.652, - "99.99853617238571" : 82.655, - "99.9985452850647" : 82.659, - "99.9985535693183" : 82.662, - "99.99855936829584" : 82.713, - "99.99856599569873" : 82.715, - "99.99857593680308" : 82.74, - "99.9985817357806" : 82.742, - "99.99858919160886" : 82.744, - "99.99859913271321" : 82.747, - "99.99860576011609" : 82.749, - "99.99861155909363" : 82.751, - "99.99861984334724" : 82.82, - "99.99862895602622" : 82.823, - "99.99863558342912" : 82.825, - "99.99864221083202" : 82.827, - "99.998651323511" : 82.83, - "99.9986579509139" : 82.832, - "99.99866706359288" : 82.858, - "99.99867369099577" : 82.86, - "99.99868280367474" : 82.863, - "99.99868943107764" : 82.865, - "99.99869605848053" : 82.867, - "99.99870599958487" : 82.87, - "99.99871345541314" : 83.101, - "99.99871842596531" : 83.103, - "99.99872671021892" : 83.132, - "99.99873665132326" : 83.135, - "99.99874410715152" : 83.137, - "99.99875156297978" : 83.139, - "99.99875819038267" : 83.141, - "99.99876564621093" : 83.143, - "99.99877310203918" : 83.174, - "99.99878304314352" : 83.177, - "99.99878967054642" : 83.179, - "99.99879712637467" : 83.186, - "99.99880375377757" : 83.188, - "99.99881038118046" : 83.19, - "99.99881866543409" : 83.192, - "99.99882529283697" : 83.194, - "99.9988377192174" : 83.197, - "99.99884351819493" : 83.199, - "99.99885097402318" : 83.238, - "99.99885760142608" : 83.24, - "99.99886505725433" : 83.251, - "99.9988725130826" : 83.253, - "99.99887914048549" : 83.255, - "99.9988899100152" : 83.258, - "99.99889488056736" : 83.407, - "99.99890150797026" : 83.409, - "99.9989114490746" : 83.412, - "99.9989180764775" : 83.414, - "99.99892470388039" : 83.416, - "99.99893464498473" : 83.419, - "99.99894044396227" : 83.496, - "99.9989503850666" : 83.499, - "99.9989570124695" : 83.501, - "99.99896281144703" : 83.503, - "99.99897192412601" : 83.507, - "99.99897772310355" : 83.509, - "99.99898600735716" : 83.512, - "99.99899346318541" : 83.535, - "99.9990025758644" : 83.541, - "99.99900837484194" : 83.699, - "99.99901831594627" : 83.702, - "99.99902494334917" : 83.704, - "99.99903157075207" : 83.706, - "99.99903902658032" : 83.708, - "99.9990481392593" : 83.711, - "99.9990547666622" : 84.065, - "99.99906222249045" : 84.068, - "99.99907133516943" : 84.072, - "99.99907713414696" : 84.09, - "99.99908541840058" : 84.093, - "99.99909287422884" : 84.095, - "99.99910033005709" : 84.096, - "99.99910778588534" : 84.097, - "99.99912104069114" : 84.099, - "99.9991260112433" : 84.1, - "99.9991326386462" : 84.102, - "99.9991392660491" : 84.104, - "99.999145893452" : 84.106, - "99.9991541777056" : 84.119, - "99.9991608051085" : 84.121, - "99.99917157463821" : 84.124, - "99.9991782020411" : 84.126, - "99.99918482944399" : 84.128, - "99.99919145684689" : 84.13, - "99.99920056952587" : 84.336, - "99.99920802535412" : 84.339, - "99.99921548118238" : 84.341, - "99.99922459386136" : 84.344, - "99.9992303928389" : 84.346, - "99.99923784866715" : 84.481, - "99.99924116236859" : 84.482, - "99.9992453044954" : 84.493, - "99.99924861819686" : 84.497, - "99.99925276032366" : 84.501, - "99.99925773087583" : 84.506, - "99.99926104457728" : 84.509, - "99.99926435827872" : 84.512, - "99.99926767198018" : 84.514, - "99.99927264253235" : 84.518, - "99.99927595623379" : 84.521, - "99.9992800983606" : 84.524, - "99.99928424048741" : 84.528, - "99.9992867257635" : 84.616, - "99.99929086789031" : 84.618, - "99.99929832371856" : 84.62, - "99.99930495112146" : 84.622, - "99.9993082648229" : 84.623, - "99.99931157852434" : 84.624, - "99.99931572065115" : 84.625, - "99.99931903435261" : 84.626, - "99.99932234805405" : 84.627, - "99.99932566175549" : 84.628, - "99.99932897545695" : 84.629, - "99.99933477443447" : 84.631, - "99.9993364312852" : 84.675, - "99.99934223026274" : 84.677, - "99.99934471553883" : 84.678, - "99.99935051451635" : 84.68, - "99.99935299979244" : 84.688, - "99.99935631349389" : 84.689, - "99.99935962719533" : 84.69, - "99.99936625459823" : 84.692, - "99.99936956829967" : 84.693, - "99.99937288200113" : 84.694, - "99.99937536727721" : 84.695, - "99.99937868097865" : 84.696, - "99.99938365153082" : 84.79, - "99.9993861368069" : 84.791, - "99.99939193578444" : 84.801, - "99.99939359263517" : 84.802, - "99.9993993916127" : 84.856, - "99.99940187688878" : 84.857, - "99.99940519059024" : 84.858, - "99.99941181799312" : 84.86, - "99.99941513169458" : 84.861, - "99.99941761697066" : 84.862, - "99.9994209306721" : 84.863, - "99.99942424437356" : 84.864, - "99.99943087177644" : 84.866, - "99.9994341854779" : 84.867, - "99.99943667075398" : 84.868, - "99.9994424697315" : 84.949, - "99.99944578343296" : 84.95, - "99.9994490971344" : 84.951, - "99.99945241083586" : 84.952, - "99.9994557245373" : 84.953, - "99.99945903823875" : 84.954, - "99.9994623519402" : 84.955, - "99.99946897934309" : 84.957, - "99.99947229304453" : 84.958, - "99.99947560674599" : 84.959, - "99.99947892044743" : 84.96, - "99.9994838909996" : 85.086, - "99.99948720470105" : 85.087, - "99.99949217525322" : 85.088, - "99.99949797423075" : 85.089, - "99.99950377320829" : 85.09, - "99.99950708690973" : 85.091, - "99.99951040061119" : 85.092, - "99.99951454273798" : 85.093, - "99.99951785643944" : 85.094, - "99.99951951329015" : 85.095, - "99.99952365541697" : 85.467, - "99.9995294543945" : 85.469, - "99.99953111124522" : 85.47, - "99.9995360817974" : 85.472, - "99.99953856707349" : 85.473, - "99.99954436605101" : 85.475, - "99.9995468513271" : 85.476, - "99.99955182187927" : 85.478, - "99.99955430715535" : 85.479, - "99.9995576208568" : 85.481, - "99.9995617629836" : 85.544, - "99.99956756196114" : 85.546, - "99.99957087566258" : 85.547, - "99.99957418936404" : 85.548, - "99.99957667464012" : 85.549, - "99.99958081676694" : 85.551, - "99.99958495889373" : 85.553, - "99.99958992944592" : 85.555, - "99.999592414722" : 85.556, - "99.99959572842344" : 85.557, - "99.99960069897561" : 85.559, - "99.99960566952778" : 85.768, - "99.99960732637851" : 85.769, - "99.99961312535603" : 85.772, - "99.99961478220676" : 85.773, - "99.99961892433357" : 85.775, - "99.99962140960966" : 85.776, - "99.99962306646039" : 85.777, - "99.99962555173647" : 85.778, - "99.99962720858719" : 85.779, - "99.99962969386328" : 85.78, - "99.999631350714" : 85.781, - "99.99963383599008" : 85.782, - "99.9996379781169" : 85.784, - "99.99964046339298" : 85.785, - "99.99964294866906" : 85.786, - "99.99964460551979" : 85.787, - "99.99964709079588" : 85.788, - "99.99964791922123" : 85.789, - "99.99965206134804" : 85.897, - "99.9996553750495" : 85.898, - "99.99965868875094" : 85.899, - "99.99966200245238" : 85.9, - "99.99966531615384" : 85.901, - "99.99966780142992" : 85.902, - "99.99967194355673" : 85.903, - "99.99967525725818" : 85.904, - "99.99967857095962" : 85.905, - "99.99968188466107" : 85.906, - "99.99968519836251" : 85.907, - "99.9996876836386" : 85.908, - "99.99969016891468" : 85.942, - "99.99969348261614" : 85.943, - "99.99969679631758" : 85.944, - "99.99970011001903" : 85.945, - "99.99970342372048" : 85.946, - "99.99970673742193" : 85.947, - "99.99971005112337" : 85.948, - "99.99971336482481" : 85.949, - "99.99971419325018" : 86.06, - "99.99971667852627" : 86.061, - "99.99971833537698" : 86.062, - "99.99972082065308" : 86.074, - "99.99972413435452" : 86.075, - "99.99972827648133" : 86.076, - "99.99973159018278" : 86.077, - "99.99973407545886" : 86.078, - "99.99973738916032" : 86.079, - "99.99974153128711" : 86.08, - "99.99974484498857" : 86.081, - "99.99974815869001" : 86.082, - "99.99975147239147" : 86.083, - "99.99975561451826" : 86.084, - "99.99975727136899" : 86.085, - "99.99975892821972" : 86.744, - "99.99976058507045" : 86.745, - "99.99976307034653" : 86.747, - "99.99976472719725" : 86.748, - "99.99976638404797" : 86.749, - "99.9997680408987" : 86.75, - "99.99976969774941" : 86.751, - "99.99977135460014" : 86.752, - "99.99977383987623" : 86.753, - "99.99977549672695" : 86.754, - "99.99977715357768" : 86.755, - "99.99977963885377" : 86.756, - "99.99978212412985" : 86.757, - "99.99978378098056" : 86.758, - "99.99978626625666" : 86.759, - "99.99978875153275" : 86.76, - "99.99979123680883" : 86.761, - "99.99979372208492" : 86.762, - "99.999796207361" : 86.763, - "99.99979786421173" : 86.764, - "99.99980117791317" : 86.766, - "99.9998028347639" : 86.767, - "99.99980449161461" : 86.875, - "99.99980780531607" : 86.876, - "99.99981111901751" : 86.877, - "99.99981360429359" : 86.878, - "99.99981691799505" : 86.879, - "99.99982023169649" : 86.88, - "99.99982354539794" : 86.881, - "99.99982685909939" : 86.882, - "99.99983017280083" : 86.883, - "99.99983348650228" : 86.884, - "99.99983597177837" : 86.885, - "99.99983845705445" : 86.886, - "99.99984177075589" : 86.887, - "99.99984508445735" : 86.888, - "99.9998459128827" : 86.889, - "99.99984839815879" : 86.895, - "99.99985005500952" : 86.896, - "99.99985088343487" : 87.742, - "99.99985171186025" : 87.818, - "99.9998525402856" : 87.825, - "99.99985419713633" : 87.826, - "99.99985585398704" : 87.827, - "99.99985751083777" : 87.828, - "99.99985999611386" : 87.829, - "99.99986248138994" : 87.83, - "99.99986413824067" : 87.831, - "99.99986745194211" : 87.832, - "99.99987159406892" : 87.833, - "99.99987490777036" : 87.834, - "99.99987822147182" : 87.835, - "99.99988153517326" : 87.836, - "99.99988567730007" : 87.837, - "99.9998873341508" : 87.838, - "99.99989064785224" : 87.839, - "99.99989478997905" : 87.84, - "99.99989561840441" : 87.841, - "99.99989893210586" : 93.897, - "99.9999022458073" : 93.898, - "99.99990473108339" : 93.899, - "99.99990638793412" : 93.9, - "99.99990804478485" : 94.874, - "99.99991135848629" : 94.875, - "99.99991301533701" : 94.876, - "99.99991632903846" : 94.877, - "99.99991881431454" : 94.878, - "99.999922128016" : 94.879, - "99.99992461329208" : 94.88, - "99.99992709856816" : 94.887, - "99.9999304122696" : 94.888, - "99.99993372597106" : 94.889, - "99.9999370396725" : 94.89, - "99.99993952494859" : 94.891, - "99.99994283865004" : 94.892, - "99.99994532392613" : 94.893, - "99.99994780920221" : 94.894, - "99.99995112290365" : 94.895, - "99.99995360817974" : 94.896, - "99.99995443660511" : 95.841, - "99.99995526503047" : 95.842, - "99.99995775030655" : 95.843, - "99.99996106400799" : 95.844, - "99.99996354928408" : 95.845, - "99.9999652061348" : 95.846, - "99.99996603456016" : 95.857, - "99.99996934826162" : 95.858, - "99.9999718335377" : 95.859, - "99.99997266196306" : 95.86, - "99.99997349038843" : 95.863, - "99.99997597566451" : 95.864, - "99.99997928936595" : 95.865, - "99.99998177464204" : 95.866, - "99.99998425991812" : 95.867, - "99.99998591676885" : 95.868, - "99.99998923047029" : 95.869, - "99.99999171574638" : 95.87, - "99.99999420102247" : 95.871, - "99.99999668629856" : 95.872, - "99.99999917157464" : 95.873, - "100.0" : 95.874 - }, - "aggregatedEndToEndLatencyAvg" : 3.1580275972595193, - "aggregatedEndToEndLatency50pct" : 3.004, - "aggregatedEndToEndLatency75pct" : 3.427, - "aggregatedEndToEndLatency95pct" : 4.349, - "aggregatedEndToEndLatency99pct" : 5.434, - "aggregatedEndToEndLatency999pct" : 18.329, - "aggregatedEndToEndLatency9999pct" : 67.481, - "aggregatedEndToEndLatencyMax" : 95.874 -} \ No newline at end of file diff --git a/blog/results/kafka/latency/sync-200k.json b/blog/results/kafka/latency/sync-200k.json deleted file mode 100644 index 125fb876..00000000 --- a/blog/results/kafka/latency/sync-200k.json +++ /dev/null @@ -1,2258 +0,0 @@ -{ - "workload" : "100-partitions-200K-rate-4-producer", - "driver" : "Kafka", - "publishRate" : [ 203974.153890742, 199991.37724374473, 199888.8811924253, 200040.0507026323, 199986.94688105947, 199962.50460668502, 200040.68159510067, 200097.4710693472, 200067.7018797035, 199938.87443724764, 199977.33867894133, 200149.1659019169, 199800.1857893253, 200048.76232668667, 200124.0042479133, 199834.8758318643, 200096.3319996583, 200057.33447503814, 199846.85062933838, 200066.79359083186, 199999.6468460273, 200007.13778590868, 199970.2688290632, 200000.77708590872, 200043.26152172897, 200046.2726419041, 199984.08332350792, 200011.4905908545, 199837.47365183433, 199977.9635077807, 199922.19065030094, 200302.59630800784, 199584.14972845867, 200236.7866390457, 200035.29214542572, 199924.9854431966, 200012.90096703832, 199860.86640504055, 200094.6872958073, 200178.37664036502, 199879.8412543188, 199892.58432835538, 200183.75754842418, 200049.8463581543, 200018.7976221676, 200041.94142873978, 199984.71152269418, 199969.39478420184, 199981.0864802471, 200075.66196096578, 199948.87830738502, 199918.374510097, 200066.53631924893, 200031.1854815746, 199889.33860657108, 199779.61219507246, 200231.33165578346, 199947.86858760603, 200002.45483234705, 199995.56100798212 ], - "consumeRate" : [ 203987.1743761726, 199989.88683732884, 199884.71067805408, 200045.31524908173, 199981.68210871628, 199972.83513658115, 200044.15835735181, 200083.65662395366, 200067.7018797035, 199932.7111271075, 199983.60257410206, 200149.06645148483, 199800.1857893253, 200038.7278876514, 200145.165779091, 199864.6012405651, 200055.47217407264, 200057.33447503814, 199846.85062933838, 200066.79359083186, 199988.11950604312, 200018.66300361732, 199977.52353370536, 199977.63060698556, 200065.42138663237, 200040.00897614323, 199989.5483006912, 200016.5613114222, 199809.6570187624, 199999.61066885712, 199928.34739131285, 200292.05660420828, 199584.14972845867, 200241.95305542354, 200030.12755555508, 199917.53565921795, 200028.39485631027, 199862.35606383323, 200085.14821751142, 200175.19570457682, 199883.02142898558, 199884.23458804077, 200192.10659332815, 200049.8463581543, 200018.7976221676, 200047.11264510002, 199967.80919085973, 199985.89807618488, 199976.3149929029, 200075.66196096578, 199948.87830738502, 199925.03322832327, 200059.87448431834, 200036.55505387828, 199873.13491476243, 199798.6980705438, 200217.816826943, 199957.30677348928, 200003.05080527283, 199984.83136589872 ], - "backlog" : [ -57, -42, 0, -53, 0, -99, -139, 0, 0, 62, -1, 0, 0, 101, -112, -411, 0, 0, 0, 0, 116, 0, -73, 160, -63, 0, -55, -106, 174, -44, -106, 0, 0, -52, 0, 75, -81, -93, 0, 32, 0, 84, 0, 0, 0, -52, 118, -48, 0, 0, 0, -63, 0, -53, 109, -80, 53, -40, -48, 60 ], - "publishLatencyAvg" : [ 4.510764069234944, 4.520219581724492, 3.954664479220587, 4.5391720125448884, 4.115946319178377, 3.882644893473904, 3.997786043934108, 4.0134202335055535, 4.061283613861903, 4.422842582815303, 4.071845717825277, 4.11654758179087, 3.930265459098008, 6.589627619313885, 4.579638754679137, 3.9845119180121924, 3.8527884210390315, 3.8872766378679864, 4.300250108682784, 3.843413799474707, 4.086300174233944, 4.0134809341977356, 4.1992962010282, 4.3887389026393215, 4.17547622157797, 5.237677540177385, 4.255465619834628, 4.295914524901116, 4.621975930204404, 5.2304215642366, 4.5701059998480416, 5.917176327888387, 3.842312535377646, 6.044834519599445, 4.367525954025659, 4.3840562960431, 4.188949679110288, 4.459053013043195, 4.216023109409565, 4.229285424040596, 4.183698132240123, 4.361113740306916, 5.070829719777522, 4.711633157435423, 4.262711718177277, 4.084288957326652, 3.8533202768470933, 4.014543409565477, 3.89201439091023, 4.243467080689774, 3.9803808860850127, 4.059454415625746, 3.885850344181407, 4.053484973005653, 3.921233359409696, 4.429122955693655, 4.2598551528895126, 5.744380948027609, 4.1359169851072135, 4.392196080769004 ], - "publishLatency50pct" : [ 3.366, 3.286, 3.177, 3.326, 3.185, 3.141, 3.17, 3.179, 3.209, 3.272, 3.178, 3.185, 3.128, 3.284, 3.269, 3.151, 3.137, 3.166, 3.187, 3.135, 3.151, 3.195, 3.282, 3.316, 3.224, 3.221, 3.245, 3.301, 3.265, 3.356, 3.251, 3.24, 3.162, 3.256, 3.28, 3.221, 3.191, 3.267, 3.227, 3.234, 3.227, 3.236, 3.39, 3.332, 3.241, 3.197, 3.162, 3.174, 3.171, 3.253, 3.165, 3.181, 3.197, 3.242, 3.211, 3.29, 3.236, 3.202, 3.198, 3.3 ], - "publishLatency75pct" : [ 4.38, 4.306, 4.107, 4.392, 4.136, 4.066, 4.088, 4.146, 4.181, 4.316, 4.113, 4.156, 4.046, 4.377, 4.342, 4.069, 4.05, 4.095, 4.183, 4.024, 4.098, 4.161, 4.287, 4.361, 4.213, 4.199, 4.246, 4.344, 4.282, 4.492, 4.262, 4.232, 4.079, 4.293, 4.338, 4.196, 4.135, 4.317, 4.22, 4.229, 4.219, 4.24, 4.743, 4.463, 4.224, 4.136, 4.067, 4.131, 4.079, 4.273, 4.094, 4.124, 4.125, 4.23, 4.143, 4.339, 4.248, 4.18, 4.16, 4.384 ], - "publishLatency95pct" : [ 11.556, 10.898, 8.779, 11.827, 9.26, 8.445, 8.909, 9.074, 9.021, 11.538, 9.066, 9.073, 8.811, 12.734, 12.02, 8.745, 8.244, 8.364, 10.739, 8.165, 9.253, 8.997, 9.476, 10.398, 9.569, 9.783, 10.241, 10.237, 12.012, 15.743, 11.539, 11.099, 7.981, 12.43, 11.104, 11.574, 10.101, 12.023, 10.09, 10.399, 9.932, 11.256, 15.195, 12.766, 10.454, 9.2, 8.145, 8.954, 8.248, 10.279, 8.601, 9.21, 8.35, 9.037, 8.175, 11.024, 9.893, 12.877, 9.31, 10.748 ], - "publishLatency99pct" : [ 22.003, 25.263, 14.797, 21.432, 19.59, 14.931, 17.153, 15.295, 16.548, 20.215, 17.731, 19.261, 16.012, 111.999, 23.439, 17.448, 14.635, 14.025, 21.371, 14.638, 17.557, 15.203, 17.188, 20.497, 18.104, 45.555, 18.336, 17.953, 26.283, 36.955, 27.9, 85.093, 13.813, 83.628, 19.162, 21.479, 20.026, 20.292, 18.949, 18.474, 18.354, 20.743, 26.043, 24.275, 19.188, 18.261, 13.974, 15.342, 15.058, 17.157, 16.081, 18.06, 13.134, 14.448, 14.487, 19.993, 19.592, 77.393, 18.55, 18.268 ], - "publishLatency999pct" : [ 37.007, 42.711, 24.6, 36.149, 30.946, 22.023, 29.747, 21.42, 24.628, 30.545, 32.438, 31.869, 25.024, 241.086, 39.076, 27.21, 22.85, 19.777, 31.224, 23.406, 38.005, 22.044, 27.964, 31.306, 28.65, 196.311, 29.399, 26.25, 56.821, 57.599, 45.651, 209.385, 22.079, 214.301, 28.098, 35.586, 34.119, 29.925, 32.183, 27.713, 28.298, 32.592, 36.453, 43.979, 29.247, 28.227, 22.854, 30.12, 22.027, 24.021, 30.44, 30.869, 19.982, 19.995, 23.065, 34.12, 32.973, 116.134, 31.229, 34.365 ], - "publishLatency9999pct" : [ 53.633, 50.984, 33.488, 46.377, 39.216, 33.566, 40.227, 25.009, 30.709, 37.834, 39.563, 39.847, 39.605, 302.851, 54.265, 33.927, 29.196, 25.071, 41.553, 43.552, 69.728, 26.399, 34.295, 36.366, 32.888, 260.593, 36.016, 31.023, 81.777, 65.223, 63.281, 250.141, 28.606, 253.3, 32.931, 45.661, 43.272, 35.713, 46.065, 34.441, 38.747, 42.435, 43.971, 52.709, 37.677, 36.427, 28.987, 36.47, 26.793, 30.48, 34.982, 37.667, 26.455, 25.219, 27.408, 44.186, 37.594, 133.647, 37.497, 40.798 ], - "publishLatencyMax" : [ 56.809, 54.169, 36.314, 48.674, 43.53, 35.709, 43.406, 29.367, 32.655, 41.262, 42.371, 41.989, 42.923, 330.533, 58.782, 35.054, 31.055, 26.633, 44.233, 47.747, 70.849, 28.667, 37.537, 37.388, 35.362, 288.713, 38.704, 32.879, 82.954, 67.402, 67.962, 255.282, 31.197, 267.119, 35.244, 47.518, 47.557, 37.822, 48.415, 36.137, 40.961, 45.03, 47.465, 59.084, 39.324, 39.253, 31.275, 38.928, 28.435, 32.361, 36.095, 39.606, 29.854, 27.394, 29.499, 45.977, 39.728, 139.341, 39.099, 42.135 ], - "aggregatedPublishLatencyAvg" : 4.357378482063882, - "aggregatedPublishLatency50pct" : 3.222, - "aggregatedPublishLatency75pct" : 4.207, - "aggregatedPublishLatency95pct" : 10.009, - "aggregatedPublishLatency99pct" : 19.712, - "aggregatedPublishLatency999pct" : 62.293, - "aggregatedPublishLatency9999pct" : 210.828, - "aggregatedPublishLatencyMax" : 330.533, - "aggregatedPublishLatencyQuantiles" : { - "8.280981931675837E-7" : 1.044, - "0.5023069739133997" : 1.758, - "1.0035630912196698" : 1.879, - "1.5033882548481463" : 1.945, - "2.0025244407799074" : 1.995, - "2.5112160517626294" : 2.039, - "3.010270255973267" : 2.078, - "3.513175944880327" : 2.114, - "4.001869812596245" : 2.147, - "4.507557911432348" : 2.18, - "5.0000221102217575" : 2.216, - "5.5068447035825" : 2.244, - "6.0189961088162764" : 2.267, - "6.511967931798098" : 2.288, - "7.007732101887281" : 2.309, - "7.522087076413076" : 2.331, - "8.005403274462562" : 2.351, - "8.516029322824524" : 2.371, - "9.019638895195778" : 2.39, - "9.501105949979921" : 2.408, - "10.026970661292552" : 2.427, - "10.509211159789116" : 2.444, - "11.014587065606394" : 2.461, - "11.53111993838022" : 2.477, - "12.021158637561841" : 2.491, - "12.512454389800693" : 2.504, - "13.035145828837106" : 2.517, - "13.50480917197584" : 2.528, - "14.043825738792357" : 2.54, - "14.520966808615395" : 2.55, - "15.020219756392391" : 2.56, - "15.537648631411225" : 2.57, - "16.015744498450985" : 2.579, - "16.50348605324476" : 2.588, - "17.00361595700832" : 2.597, - "17.50853392452478" : 2.606, - "18.01741102950277" : 2.615, - "18.531409921805505" : 2.624, - "19.049220550091388" : 2.633, - "19.508749627542134" : 2.641, - "20.022326189766353" : 2.65, - "20.535635276274178" : 2.659, - "21.047623546163898" : 2.668, - "21.55571561405477" : 2.677, - "22.052979469971778" : 2.686, - "22.544397780743214" : 2.695, - "23.028520546432848" : 2.704, - "23.505847110251157" : 2.713, - "24.030127669720258" : 2.723, - "24.500455147609912" : 2.732, - "25.02859381656098" : 2.742, - "25.50744822154568" : 2.751, - "26.04544291519183" : 2.761, - "26.535856742854957" : 2.77, - "27.030472340750215" : 2.779, - "27.530792707098207" : 2.788, - "28.043783803899856" : 2.797, - "28.504601402139173" : 2.805, - "29.029561830224864" : 2.814, - "29.507318177005427" : 2.822, - "30.051916125643896" : 2.831, - "30.540537120718813" : 2.839, - "31.040248834894825" : 2.847, - "31.54695135401756" : 2.855, - "32.06137588879158" : 2.863, - "32.518005794468046" : 2.87, - "33.04415371536275" : 2.878, - "33.5084087492019" : 2.885, - "34.038648303269035" : 2.893, - "34.56653108987842" : 2.901, - "35.024156369583075" : 2.908, - "35.54872179483063" : 2.916, - "36.004541820474174" : 2.923, - "36.51880321990414" : 2.931, - "37.02709982804872" : 2.939, - "37.52834186768571" : 2.947, - "38.023865889298875" : 2.955, - "38.51478982544899" : 2.963, - "39.05497980740523" : 2.972, - "39.52515491522734" : 2.98, - "40.04735860442798" : 2.989, - "40.55521880482476" : 2.998, - "41.00166724321623" : 3.006, - "41.54444006343696" : 3.016, - "42.01922685009682" : 3.025, - "42.52741497737809" : 3.035, - "43.01770955890141" : 3.045, - "43.54226173457787" : 3.056, - "44.0083013200233" : 3.066, - "44.509938362498424" : 3.077, - "45.03879996117213" : 3.089, - "45.51085402379454" : 3.1, - "46.015007656678705" : 3.112, - "46.503590559236734" : 3.124, - "47.02015241544732" : 3.137, - "47.51840667680336" : 3.15, - "48.033208824353466" : 3.164, - "48.529854919018376" : 3.178, - "49.01193725076004" : 3.192, - "49.511540484072746" : 3.207, - "50.00132495710907" : 3.222, - "50.25777703035475" : 3.23, - "50.50999255324419" : 3.238, - "50.75657866461647" : 3.246, - "51.00021591832289" : 3.254, - "51.270115478127416" : 3.263, - "51.50725712960663" : 3.271, - "51.7661462958348" : 3.28, - "52.01410373781497" : 3.289, - "52.271155354152505" : 3.299, - "52.5030261606322" : 3.309, - "52.76567572075555" : 3.322, - "53.00419201523542" : 3.334, - "53.25322184437574" : 3.345, - "53.51679639018086" : 3.355, - "53.77957347742595" : 3.364, - "54.03035390614663" : 3.372, - "54.25974621473418" : 3.379, - "54.52471859028936" : 3.387, - "54.75606521061278" : 3.394, - "55.013197980573246" : 3.402, - "55.26604285808949" : 3.41, - "55.51276063707449" : 3.418, - "55.75266730842068" : 3.426, - "56.01593711409072" : 3.435, - "56.27613881595506" : 3.444, - "56.50228001103623" : 3.452, - "56.75604490564508" : 3.461, - "57.000527647606724" : 3.47, - "57.26992041131704" : 3.48, - "57.50711423298241" : 3.489, - "57.767433524790185" : 3.499, - "58.021667122976375" : 3.509, - "58.26736799738016" : 3.519, - "58.506044942909504" : 3.529, - "58.76592285838032" : 3.54, - "59.000224961155155" : 3.55, - "59.252826377802606" : 3.561, - "59.50476448779734" : 3.572, - "59.75863372277853" : 3.583, - "60.009269234315404" : 3.594, - "60.26180688740198" : 3.605, - "60.51094519740561" : 3.616, - "60.75980195402356" : 3.627, - "61.008253770625046" : 3.638, - "61.25727780307802" : 3.649, - "61.508176649840316" : 3.66, - "61.761952309725686" : 3.671, - "62.01587868348221" : 3.682, - "62.27513883770092" : 3.693, - "62.51322369302215" : 3.703, - "62.75333159222928" : 3.713, - "63.01793712028489" : 3.724, - "63.2648230032031" : 3.734, - "63.5145459505311" : 3.744, - "63.7683050484526" : 3.754, - "64.00123830491414" : 3.763, - "64.26524843036886" : 3.773, - "64.50385829994455" : 3.782, - "64.76979458179659" : 3.792, - "65.00795148166061" : 3.801, - "65.27506283484875" : 3.811, - "65.51801359515302" : 3.82, - "65.76627246487551" : 3.829, - "66.01603433281859" : 3.838, - "66.26664500140967" : 3.847, - "66.51888288295032" : 3.856, - "66.76837230658785" : 3.865, - "67.01545527687604" : 3.874, - "67.26220700788696" : 3.883, - "67.5097918056802" : 3.892, - "67.75684413633523" : 3.901, - "68.00181876862362" : 3.91, - "68.27180776303301" : 3.92, - "68.51197942580102" : 3.929, - "68.75006096872947" : 3.938, - "69.012882773277" : 3.948, - "69.27465951790475" : 3.958, - "69.50374460206262" : 3.967, - "69.75861417966117" : 3.977, - "70.01231117021818" : 3.987, - "70.26975861749206" : 3.997, - "70.52384978278901" : 4.007, - "70.77239517448633" : 4.017, - "71.0172033590379" : 4.027, - "71.26079341114729" : 4.037, - "71.52367152637196" : 4.048, - "71.7641181177401" : 4.058, - "72.00117116271264" : 4.068, - "72.258243481505" : 4.079, - "72.51245223674539" : 4.09, - "72.76906164864778" : 4.101, - "73.01708036989424" : 4.112, - "73.26142895994859" : 4.123, - "73.5017215250528" : 4.134, - "73.75646937221694" : 4.146, - "74.01131493496787" : 4.158, - "74.26240921290376" : 4.17, - "74.50878001874582" : 4.182, - "74.75101281791663" : 4.194, - "75.01283345174862" : 4.207, - "75.1319885007635" : 4.213, - "75.26880522804225" : 4.22, - "75.38668252154508" : 4.226, - "75.50405798754285" : 4.232, - "75.6398942465609" : 4.239, - "75.75564415580548" : 4.245, - "75.88681905009419" : 4.252, - "76.01718489244818" : 4.259, - "76.12733437361237" : 4.265, - "76.25386694943018" : 4.272, - "76.37822742368732" : 4.279, - "76.50159335201445" : 4.286, - "76.64004391702834" : 4.294, - "76.76103485973748" : 4.301, - "76.87767911503067" : 4.308, - "77.01168610514002" : 4.316, - "77.1264298750799" : 4.323, - "77.25486210815284" : 4.331, - "77.38200085184805" : 4.339, - "77.50689627753798" : 4.347, - "77.62831451891478" : 4.355, - "77.76441908174742" : 4.364, - "77.88281476471917" : 4.372, - "78.01467035572266" : 4.381, - "78.12667312064316" : 4.389, - "78.2608126064634" : 4.399, - "78.3868864158822" : 4.409, - "78.50055697056374" : 4.419, - "78.62896684498547" : 4.432, - "78.758537713074" : 4.446, - "78.88539904387451" : 4.458, - "79.00940509210497" : 4.468, - "79.13310557210215" : 4.477, - "79.26037184291911" : 4.486, - "79.38854570935578" : 4.495, - "79.50092111846321" : 4.503, - "79.625130050751" : 4.512, - "79.76009349427345" : 4.522, - "79.87743003965613" : 4.531, - "80.00559976560184" : 4.541, - "80.12771940614826" : 4.551, - "80.25660626512925" : 4.562, - "80.37875571721062" : 4.573, - "80.50299611722976" : 4.585, - "80.63434325594264" : 4.598, - "80.75210130330565" : 4.61, - "80.87638973301998" : 4.623, - "81.00547616366552" : 4.637, - "81.13028463904516" : 4.651, - "81.25037461092013" : 4.665, - "81.37577186411511" : 4.68, - "81.50772185831264" : 4.696, - "81.62824409744444" : 4.711, - "81.75446116785065" : 4.727, - "81.87908083684225" : 4.743, - "82.00645393232612" : 4.76, - "82.1312582672148" : 4.777, - "82.25276594319647" : 4.794, - "82.38161553775876" : 4.812, - "82.50101570383883" : 4.829, - "82.625033345444" : 4.847, - "82.75381172356168" : 4.866, - "82.87794943940484" : 4.885, - "83.00077544771004" : 4.904, - "83.12551684713604" : 4.924, - "83.25580153586709" : 4.945, - "83.37542363226292" : 4.965, - "83.50303522002643" : 4.987, - "83.62652205068977" : 5.009, - "83.75030782480086" : 5.031, - "83.87669713963125" : 5.054, - "84.00481966397994" : 5.078, - "84.12900955000929" : 5.101, - "84.25407390773061" : 5.125, - "84.37809486172856" : 5.15, - "84.50014328583036" : 5.175, - "84.62562831743382" : 5.201, - "84.75153650721398" : 5.228, - "84.875789328706" : 5.255, - "85.00039243573374" : 5.283, - "85.12594951188001" : 5.311, - "85.25348160221697" : 5.339, - "85.37764664530052" : 5.367, - "85.50187710814133" : 5.397, - "85.62869620593398" : 5.427, - "85.75054505837123" : 5.456, - "85.87613028985606" : 5.487, - "86.00111846254362" : 5.52, - "86.12790692070313" : 5.558, - "86.25108487074041" : 5.592, - "86.37596787495744" : 5.622, - "86.50210296364253" : 5.653, - "86.62562209013541" : 5.685, - "86.7515509823704" : 5.719, - "86.87737304993848" : 5.755, - "87.00030753910698" : 5.792, - "87.12596233084004" : 5.83, - "87.25248331328315" : 5.869, - "87.37527205716965" : 5.907, - "87.50297556383259" : 5.947, - "87.56350291696761" : 5.966, - "87.62773766571343" : 5.986, - "87.68822112964419" : 6.005, - "87.75278960196185" : 6.026, - "87.81290870268762" : 6.045, - "87.87629796317822" : 6.065, - "87.9386827405605" : 6.085, - "88.00240572462293" : 6.106, - "88.06323616169664" : 6.126, - "88.12630991677564" : 6.147, - "88.19036496821353" : 6.169, - "88.25222969993051" : 6.19, - "88.31315619639462" : 6.211, - "88.37679968303051" : 6.233, - "88.43986350093118" : 6.255, - "88.50241224175572" : 6.277, - "88.56378011455679" : 6.299, - "88.62538647963748" : 6.321, - "88.68803376414701" : 6.344, - "88.75088227651746" : 6.368, - "88.81452824744792" : 6.392, - "88.87590274503455" : 6.415, - "88.93772275944909" : 6.439, - "89.00125114043612" : 6.464, - "89.06335602062912" : 6.488, - "89.12687694873243" : 6.513, - "89.18799556397735" : 6.537, - "89.25166969024639" : 6.562, - "89.31372157215502" : 6.587, - "89.37704624098654" : 6.613, - "89.43880497613479" : 6.64, - "89.50057116416677" : 6.669, - "89.56250462803378" : 6.696, - "89.62518420837283" : 6.721, - "89.68966158988924" : 6.746, - "89.75098722968245" : 6.771, - "89.81285858618497" : 6.796, - "89.87502557374245" : 6.822, - "89.93853325227467" : 6.848, - "90.0015664305422" : 6.875, - "90.06283658775648" : 6.903, - "90.12656702470265" : 6.931, - "90.1885427215775" : 6.958, - "90.25216550575857" : 6.987, - "90.31272184233033" : 7.015, - "90.37618563165832" : 7.044, - "90.43870538904608" : 7.072, - "90.5014851692665" : 7.1, - "90.56440324188517" : 7.129, - "90.62700746528866" : 7.158, - "90.68792402457444" : 7.187, - "90.7509066888522" : 7.217, - "90.81286665186137" : 7.247, - "90.87544271992628" : 7.277, - "90.93866139218908" : 7.308, - "91.0002048218071" : 7.338, - "91.06409342550818" : 7.371, - "91.12678211492734" : 7.402, - "91.18847128982736" : 7.433, - "91.25121049323631" : 7.466, - "91.31310089599728" : 7.498, - "91.37542439411327" : 7.529, - "91.43943472824873" : 7.562, - "91.50183109900571" : 7.594, - "91.56289671596627" : 7.627, - "91.6250454853635" : 7.66, - "91.68851341518244" : 7.693, - "91.75129402350106" : 7.727, - "91.81300721324868" : 7.763, - "91.87544084842436" : 7.801, - "91.93837796730148" : 7.835, - "92.0006617167042" : 7.868, - "92.06295291899065" : 7.9, - "92.12556293908148" : 7.932, - "92.18866070900806" : 7.965, - "92.25151501806587" : 8.0, - "92.31315699136888" : 8.035, - "92.37653383038658" : 8.071, - "92.43878114346879" : 8.107, - "92.50123299680472" : 8.143, - "92.56376103517441" : 8.179, - "92.62508833116402" : 8.216, - "92.68893221756267" : 8.253, - "92.75115551579728" : 8.291, - "92.81374483343326" : 8.328, - "92.87529240354225" : 8.366, - "92.93792975087345" : 8.406, - "93.00147386572617" : 8.446, - "93.06348682701972" : 8.486, - "93.12603556784424" : 8.526, - "93.18899338917619" : 8.567, - "93.25135580790726" : 8.607, - "93.3130292489416" : 8.65, - "93.37606491150372" : 8.691, - "93.43848364091191" : 8.732, - "93.50048583692895" : 8.774, - "93.56381630244783" : 8.818, - "93.62623503185603" : 8.864, - "93.68850635978585" : 8.913, - "93.75063939531739" : 8.956, - "93.78196552186674" : 8.978, - "93.81288008361406" : 8.998, - "93.84468567901725" : 9.019, - "93.87561845892483" : 9.041, - "93.90720957689598" : 9.064, - "93.93869138590563" : 9.087, - "93.96960677575116" : 9.11, - "94.00000046373499" : 9.134, - "94.03175554514839" : 9.158, - "94.06287299095304" : 9.182, - "94.09421236707347" : 9.206, - "94.12569169178855" : 9.23, - "94.15728612215247" : 9.255, - "94.18793072388883" : 9.28, - "94.21965433757089" : 9.305, - "94.251129521795" : 9.33, - "94.28174431199639" : 9.356, - "94.31337269438623" : 9.383, - "94.34484787861034" : 9.409, - "94.37502708916215" : 9.435, - "94.40737508888185" : 9.462, - "94.43826397958519" : 9.488, - "94.4688183186185" : 9.515, - "94.50025706652211" : 9.541, - "94.53126189097249" : 9.569, - "94.56275777765143" : 9.597, - "94.5938114598952" : 9.625, - "94.62528664411931" : 9.654, - "94.65705000651465" : 9.68, - "94.68823784066572" : 9.707, - "94.71904474964795" : 9.734, - "94.75012989962308" : 9.761, - "94.7819669627576" : 9.791, - "94.81299911444836" : 9.82, - "94.8443956293441" : 9.85, - "94.87509157316845" : 9.88, - "94.90688557519692" : 9.911, - "94.93758565951222" : 9.941, - "94.96942686313771" : 9.975, - "95.0007347715268" : 10.009, - "95.03158805400784" : 10.042, - "95.0635054426671" : 10.073, - "95.09461957607898" : 10.103, - "95.125425656963" : 10.134, - "95.15670126952256" : 10.167, - "95.18789158796822" : 10.2, - "95.21958373391894" : 10.233, - "95.25076494328447" : 10.267, - "95.28199252614881" : 10.302, - "95.31256342714599" : 10.338, - "95.34410071873458" : 10.375, - "95.37504840440964" : 10.409, - "95.40663455379163" : 10.445, - "95.43786710524513" : 10.483, - "95.4691766698306" : 10.521, - "95.50012518360386" : 10.557, - "95.53173866022622" : 10.595, - "95.56322792211962" : 10.636, - "95.59443231823455" : 10.676, - "95.62581558355922" : 10.715, - "95.65670778665535" : 10.753, - "95.6879949925896" : 10.793, - "95.7189608964249" : 10.834, - "95.75032180309836" : 10.874, - "95.78164792964769" : 10.914, - "95.81266103508001" : 10.956, - "95.84386377499857" : 10.997, - "95.87500523565083" : 11.041, - "95.90700377793301" : 11.085, - "95.93770965893567" : 11.132, - "95.96904323836874" : 11.175, - "96.00061034149229" : 11.219, - "96.03141393808174" : 11.263, - "96.06315659802225" : 11.309, - "96.09445953782216" : 11.356, - "96.12506190655067" : 11.403, - "96.15668946084233" : 11.452, - "96.18760236639326" : 11.498, - "96.21887963514921" : 11.547, - "96.25003268917618" : 11.595, - "96.28150124861473" : 11.645, - "96.31290024780508" : 11.699, - "96.34377092034816" : 11.746, - "96.37527343181264" : 11.796, - "96.4064405635089" : 11.845, - "96.43788345190347" : 11.898, - "96.46910606617865" : 11.95, - "96.50017216989534" : 12.002, - "96.53129789668193" : 12.054, - "96.56269523967588" : 12.108, - "96.59401308524329" : 12.159, - "96.62514957730639" : 12.217, - "96.65638295685808" : 12.272, - "96.68788464022438" : 12.328, - "96.71909566112487" : 12.385, - "96.75024374656267" : 12.442, - "96.78147215752522" : 12.498, - "96.81262355535578" : 12.557, - "96.84384699772917" : 12.618, - "96.87555404944736" : 12.679, - "96.89087800651193" : 12.707, - "96.90658785733451" : 12.736, - "96.92236229981616" : 12.768, - "96.93782123688622" : 12.798, - "96.95355179016363" : 12.827, - "96.96881860845286" : 12.86, - "96.9845715203815" : 12.893, - "97.00019856138476" : 12.923, - "97.01583471146814" : 12.952, - "97.03140378559789" : 12.984, - "97.04711612071506" : 13.018, - "97.06280195669004" : 13.052, - "97.07843893487161" : 13.083, - "97.09393596445855" : 13.116, - "97.10964167479017" : 13.147, - "97.12543267923569" : 13.183, - "97.14108456318475" : 13.216, - "97.15670663559885" : 13.25, - "97.17216391647251" : 13.283, - "97.1879342184632" : 13.317, - "97.203400608417" : 13.352, - "97.21879081333701" : 13.388, - "97.23468036146751" : 13.421, - "97.25022128025869" : 13.455, - "97.26584832126196" : 13.489, - "97.28128572777898" : 13.524, - "97.29708087271545" : 13.56, - "97.31295054648932" : 13.595, - "97.32844591987988" : 13.628, - "97.34401499400963" : 13.664, - "97.35951202359657" : 13.699, - "97.37532538669329" : 13.734, - "97.39063360989218" : 13.771, - "97.40648506550579" : 13.808, - "97.42201439092227" : 13.846, - "97.43780539536777" : 13.883, - "97.45343823305839" : 13.918, - "97.46890627920858" : 13.954, - "97.48473040758182" : 13.993, - "97.50032515275555" : 14.032, - "97.51594805326785" : 14.07, - "97.53125793266312" : 14.104, - "97.54724602447861" : 14.142, - "97.56290039272226" : 14.18, - "97.57826989518745" : 14.217, - "97.59388451471781" : 14.254, - "97.60949168136445" : 14.293, - "97.62508477034179" : 14.334, - "97.64093042926805" : 14.371, - "97.65647383235381" : 14.416, - "97.67188970831782" : 14.461, - "97.68777925644831" : 14.503, - "97.7031371655388" : 14.543, - "97.71897371538493" : 14.586, - "97.73475726694672" : 14.629, - "97.75001994474498" : 14.67, - "97.76570826501454" : 14.709, - "97.78153487768236" : 14.752, - "97.79720497979167" : 14.794, - "97.81264487060328" : 14.834, - "97.82824955295533" : 14.874, - "97.84389729641343" : 14.914, - "97.85953179030042" : 14.958, - "97.87528304603266" : 15.002, - "97.89077593512864" : 15.044, - "97.90635743073129" : 15.089, - "97.92204326670627" : 15.137, - "97.93781605299152" : 15.179, - "97.95343564111106" : 15.221, - "97.96883661130758" : 15.263, - "97.98445619942711" : 15.307, - "98.00025465675637" : 15.356, - "98.01567632940773" : 15.404, - "98.03133980673148" : 15.45, - "98.04708609387457" : 15.499, - "98.06256159290848" : 15.548, - "98.07834928496122" : 15.596, - "98.09396887308075" : 15.645, - "98.10960171077137" : 15.695, - "98.12528671864816" : 15.745, - "98.14091127535684" : 15.795, - "98.15630313647326" : 15.842, - "98.17187800729035" : 15.893, - "98.18766652744128" : 15.944, - "98.20313374549326" : 15.998, - "98.2188121285845" : 16.051, - "98.23457414959326" : 16.101, - "98.25012500556275" : 16.153, - "98.2656940796925" : 16.203, - "98.28143374205003" : 16.26, - "98.29693574022613" : 16.316, - "98.31268533976198" : 16.372, - "98.32829830309596" : 16.429, - "98.34400401342758" : 16.485, - "98.35953499504043" : 16.542, - "98.3752953598528" : 16.599, - "98.39085615300061" : 16.658, - "98.40656931621596" : 16.719, - "98.4219586930378" : 16.773, - "98.43755426630972" : 16.834, - "98.44540215288637" : 16.865, - "98.45334113026426" : 16.897, - "98.46109875413786" : 16.928, - "98.46893173494703" : 16.957, - "98.47669929599894" : 16.991, - "98.484450295087" : 17.021, - "98.49237767909018" : 17.054, - "98.5000475245553" : 17.086, - "98.50786311530243" : 17.117, - "98.51582113893876" : 17.154, - "98.52356799753585" : 17.186, - "98.53133224619498" : 17.217, - "98.53911057252341" : 17.248, - "98.54708184573084" : 17.278, - "98.55478895561465" : 17.312, - "98.56250517457859" : 17.346, - "98.57042841809081" : 17.384, - "98.57830446000602" : 17.42, - "98.58609189541458" : 17.455, - "98.59393398530388" : 17.491, - "98.60181996439741" : 17.527, - "98.6094442644619" : 17.56, - "98.61720023213911" : 17.596, - "98.62508869552723" : 17.633, - "98.63305003155634" : 17.67, - "98.64063706720214" : 17.702, - "98.64856445120533" : 17.742, - "98.65632373127531" : 17.78, - "98.66419480460137" : 17.818, - "98.67200045817017" : 17.856, - "98.67970922425036" : 17.891, - "98.68750080014988" : 17.931, - "98.6953155627988" : 17.973, - "98.70332244422853" : 18.011, - "98.71114714405579" : 18.047, - "98.71886005062694" : 18.084, - "98.72664417364271" : 18.123, - "98.73450282549588" : 18.158, - "98.74221656016523" : 18.196, - "98.75003546330512" : 18.238, - "98.75798272166494" : 18.277, - "98.76575442320782" : 18.318, - "98.77358574782062" : 18.356, - "98.78129617009719" : 18.398, - "98.78915896244132" : 18.441, - "98.79702672337461" : 18.488, - "98.80469242834876" : 18.526, - "98.8126752949309" : 18.565, - "98.82039317009122" : 18.608, - "98.82829571114861" : 18.649, - "98.83595479133723" : 18.695, - "98.8438482233145" : 18.735, - "98.8517499362737" : 18.779, - "98.85952163781658" : 18.83, - "98.8673248070908" : 18.876, - "98.8750095583234" : 18.922, - "98.88283591434703" : 18.969, - "98.89066641086161" : 19.023, - "98.89850353216175" : 19.072, - "98.90637874597877" : 19.119, - "98.91408171537162" : 19.161, - "98.92199336550914" : 19.207, - "98.92982303392554" : 19.255, - "98.93762620319976" : 19.302, - "98.94542523198301" : 19.349, - "98.95318782444576" : 19.398, - "98.96104647629893" : 19.456, - "98.96887034802798" : 19.51, - "98.97667434540038" : 19.563, - "98.98442700068482" : 19.611, - "98.99232374505486" : 19.662, - "99.00007888463388" : 19.712, - "99.0078936472828" : 19.769, - "99.0156744579058" : 19.818, - "99.02345858092158" : 19.874, - "99.03138596492478" : 19.928, - "99.03911377726341" : 19.989, - "99.04696414813465" : 20.047, - "99.05469527286606" : 20.106, - "99.06261106349454" : 20.167, - "99.07037199976091" : 20.217, - "99.07829110278217" : 20.275, - "99.08596674493464" : 20.334, - "99.09381960010045" : 20.399, - "99.10165754949878" : 20.459, - "99.10941682956876" : 20.528, - "99.11730115246591" : 20.591, - "99.12500826234972" : 20.648, - "99.13290500671977" : 20.711, - "99.14071894127049" : 20.775, - "99.14845586268926" : 20.835, - "99.15630457736411" : 20.9, - "99.16415743252992" : 20.965, - "99.1719167125999" : 21.035, - "99.17977370825666" : 21.107, - "99.18760668906584" : 21.173, - "99.19535437576111" : 21.25, - "99.20320143423957" : 21.309, - "99.21097396388065" : 21.38, - "99.21879783560969" : 21.443, - "99.22266008558262" : 21.483, - "99.22662336353513" : 21.521, - "99.23057918860388" : 21.555, - "99.23440997084548" : 21.591, - "99.23831114143348" : 21.627, - "99.24228187226973" : 21.666, - "99.24620208911618" : 21.703, - "99.2500792448566" : 21.74, - "99.253956400597" : 21.777, - "99.25781533817717" : 21.823, - "99.26174632030013" : 21.86, - "99.26566570904839" : 21.9, - "99.26954783337797" : 21.941, - "99.27351193942866" : 21.98, - "99.27741476621306" : 22.02, - "99.2812645947131" : 22.06, - "99.28515831241737" : 22.105, - "99.2891414647265" : 22.141, - "99.29298880893197" : 22.184, - "99.29690736958203" : 22.223, - "99.30078618151883" : 22.264, - "99.30473455370385" : 22.313, - "99.30863075570271" : 22.366, - "99.31255262874555" : 22.408, - "99.3164844389667" : 22.45, - "99.32031356501192" : 22.487, - "99.32422136038547" : 22.526, - "99.32812584336625" : 22.578, - "99.33208001223863" : 22.622, - "99.33600105718328" : 22.668, - "99.33986579145079" : 22.719, - "99.34381085124303" : 22.769, - "99.34766316403766" : 22.818, - "99.35161898910641" : 22.86, - "99.35553340926552" : 22.914, - "99.35942795506799" : 22.965, - "99.36337218676205" : 23.012, - "99.36725099869884" : 23.056, - "99.3711231858501" : 23.101, - "99.37500696637605" : 23.15, - "99.37898266580144" : 23.201, - "99.3828300100069" : 23.253, - "99.38673614918407" : 23.302, - "99.3906828651727" : 23.346, - "99.39454263085106" : 23.406, - "99.39849597162525" : 23.467, - "99.40236153399096" : 23.525, - "99.40626436077535" : 23.578, - "99.41017215614892" : 23.623, - "99.41412052833394" : 23.68, - "99.41802997990388" : 23.737, - "99.42191624472441" : 23.802, - "99.42581410291966" : 23.865, - "99.42969788344561" : 23.922, - "99.43361975648845" : 23.983, - "99.43751927088007" : 24.029, - "99.44147509594885" : 24.085, - "99.44532658064526" : 24.134, - "99.44927578092847" : 24.194, - "99.45314382758876" : 24.253, - "99.4570425138822" : 24.306, - "99.46099419845999" : 24.365, - "99.4648713542004" : 24.42, - "99.46880150822517" : 24.482, - "99.47265961770714" : 24.541, - "99.47659391222288" : 24.602, - "99.48048928612354" : 24.666, - "99.4843846600242" : 24.727, - "99.48833137601284" : 24.796, - "99.49223420279723" : 24.858, - "99.49610390565391" : 24.93, - "99.50001335722385" : 24.995, - "99.50392694928476" : 25.067, - "99.50785461901496" : 25.145, - "99.51173011855899" : 25.215, - "99.51563294534338" : 25.296, - "99.51955150599345" : 25.371, - "99.5234617856616" : 25.437, - "99.52740353306106" : 25.505, - "99.5312649549358" : 25.574, - "99.53518848417504" : 25.656, - "99.53909793574498" : 25.735, - "99.54299993443118" : 25.82, - "99.5469019331174" : 25.89, - "99.55078405744696" : 25.963, - "99.5547299453374" : 26.059, - "99.55861621015794" : 26.128, - "99.56253228651343" : 26.215, - "99.56641027035204" : 26.298, - "99.57031309713643" : 26.398, - "99.57425567263411" : 26.488, - "99.57814442174922" : 26.568, - "99.58204559233722" : 26.645, - "99.58597160587104" : 26.729, - "99.58984379302228" : 26.816, - "99.59375076029765" : 26.908, - "99.59766683665315" : 27.006, - "99.60157131963393" : 27.108, - "99.60547166212375" : 27.198, - "99.60940347234491" : 27.287, - "99.6113321130368" : 27.332, - "99.61329139336183" : 27.383, - "99.6152457050977" : 27.437, - "99.61722651597576" : 27.493, - "99.61916426574777" : 27.537, - "99.62112023368003" : 27.597, - "99.6230646082376" : 27.656, - "99.62501809187528" : 27.709, - "99.62695832594187" : 27.755, - "99.62893830872173" : 27.81, - "99.63087108990459" : 27.869, - "99.63281298016756" : 27.921, - "99.63477888527814" : 27.977, - "99.63672574413027" : 28.043, - "99.63868585255351" : 28.096, - "99.64063353950384" : 28.164, - "99.64258371074875" : 28.229, - "99.64455624064487" : 28.278, - "99.6464923342205" : 28.33, - "99.64846900460759" : 28.377, - "99.6504075824778" : 28.441, - "99.65236106611547" : 28.511, - "99.65430130018207" : 28.575, - "99.65625561191794" : 28.643, - "99.6582124079484" : 28.715, - "99.66017086017524" : 28.783, - "99.6621276562057" : 28.852, - "99.66406789027229" : 28.909, - "99.6660296548919" : 28.965, - "99.66798976331513" : 29.028, - "99.66995980891667" : 29.087, - "99.67187851243024" : 29.16, - "99.67385187042456" : 29.237, - "99.67582191602611" : 29.307, - "99.67774641622702" : 29.367, - "99.67970072796291" : 29.431, - "99.68164179012768" : 29.496, - "99.68362260100575" : 29.566, - "99.6855686317597" : 29.631, - "99.68750141294254" : 29.715, - "99.6894565527766" : 29.785, - "99.69141666119984" : 29.859, - "99.69337014483752" : 29.93, - "99.69531948798424" : 29.988, - "99.69728290880023" : 30.045, - "99.69922562716141" : 30.116, - "99.70119236037019" : 30.204, - "99.70313176633859" : 30.27, - "99.70509932764554" : 30.344, - "99.7070445303013" : 30.426, - "99.7089947015462" : 30.505, - "99.7109473570857" : 30.596, - "99.71290829360711" : 30.685, - "99.71485763675383" : 30.772, - "99.71680118321319" : 30.862, - "99.71876874452016" : 30.943, - "99.72070400999759" : 31.023, - "99.72267571179553" : 31.095, - "99.72461925825489" : 31.192, - "99.72656694520522" : 31.29, - "99.72853533461038" : 31.366, - "99.73048302156072" : 31.454, - "99.73245141096587" : 31.54, - "99.73438916073789" : 31.631, - "99.73634016008099" : 31.721, - "99.7382895032277" : 31.823, - "99.74023636207984" : 31.927, - "99.7421923300121" : 32.017, - "99.74414829794436" : 32.118, - "99.74611171876036" : 32.212, - "99.74805526521973" : 32.32, - "99.75001620174115" : 32.423, - "99.7519738258698" : 32.534, - "99.7539248252129" : 32.634, - "99.755875824556" : 32.723, - "99.75781357432801" : 32.84, - "99.75978610422413" : 32.968, - "99.76172302589796" : 33.069, - "99.7636814781248" : 33.199, - "99.76562750887875" : 33.333, - "99.76759258589114" : 33.457, - "99.7695361323505" : 33.56, - "99.77150038126469" : 33.676, - "99.7734381310367" : 33.798, - "99.77539409896896" : 33.951, - "99.77735089499942" : 34.083, - "99.77929692575336" : 34.219, - "99.78125206558742" : 34.379, - "99.78322293928717" : 34.505, - "99.7851582047646" : 34.613, - "99.78711500079505" : 34.76, - "99.78907759351286" : 34.92, - "99.79102113997223" : 35.065, - "99.79298373269003" : 35.212, - "99.79493307583675" : 35.397, - "99.79688490327804" : 35.566, - "99.79883590262115" : 35.706, - "99.80078524576787" : 35.874, - "99.80273790130735" : 36.058, - "99.80468807255227" : 36.254, - "99.80566854081297" : 36.357, - "99.80665729005563" : 36.47, - "99.80762699303982" : 36.575, - "99.8085991803186" : 36.67, - "99.80957550808834" : 36.735, - "99.81055846064363" : 36.847, - "99.81152733552963" : 36.95, - "99.81250283520119" : 37.069, - "99.81348081916732" : 37.176, - "99.81445963123164" : 37.324, - "99.81543264660861" : 37.413, - "99.81640649008378" : 37.54, - "99.81738530214811" : 37.668, - "99.81835997372146" : 37.772, - "99.81934127008037" : 37.87, - "99.82032339453747" : 38.001, - "99.82129226942347" : 38.116, - "99.82226859719322" : 38.292, - "99.82324823735573" : 38.46, - "99.8242204246345" : 38.565, - "99.82519923669884" : 38.722, - "99.82617556446858" : 38.865, - "99.82715106414012" : 38.978, - "99.8281356728918" : 39.093, - "99.82910454777782" : 39.233, - "99.83008004744936" : 39.35, - "99.83105968761188" : 39.511, - "99.83203601538163" : 39.635, - "99.83301151505317" : 39.851, - "99.8339919833139" : 39.985, - "99.83496168629809" : 40.107, - "99.83594298265699" : 40.297, - "99.83691682613215" : 40.399, - "99.83789149770551" : 40.573, - "99.83886865357346" : 40.799, - "99.83984498134319" : 40.954, - "99.84082048101475" : 41.1, - "99.84180343357004" : 41.246, - "99.84277562084881" : 41.396, - "99.84375112052037" : 41.569, - "99.8447291044865" : 41.767, - "99.84571371323817" : 41.902, - "99.8466801038296" : 42.066, - "99.84765808779574" : 42.233, - "99.84863607176186" : 42.402, - "99.84961488382619" : 42.542, - "99.85058872730136" : 42.81, - "99.85156339887472" : 43.027, - "99.85254138284084" : 43.174, - "99.85351936680698" : 43.422, - "99.85449486647852" : 43.586, - "99.85547367854285" : 43.866, - "99.85644752201802" : 44.055, - "99.85742633408233" : 44.294, - "99.85839852136111" : 44.547, - "99.85937650532725" : 44.715, - "99.86035945788254" : 44.997, - "99.86132998896493" : 45.272, - "99.86230548863648" : 45.505, - "99.86328844119177" : 45.673, - "99.86425897227416" : 45.957, - "99.8652353000439" : 46.214, - "99.86621576830461" : 46.456, - "99.86719043987797" : 46.707, - "99.86816759574592" : 47.037, - "99.86914640781023" : 47.312, - "99.87012190748179" : 47.563, - "99.87109823525154" : 47.909, - "99.87207125062851" : 48.2, - "99.87305006269283" : 48.575, - "99.87402390616799" : 48.892, - "99.87500023393774" : 49.28, - "99.87598484268942" : 49.67, - "99.87695620187" : 49.992, - "99.87793252963975" : 50.495, - "99.87890802931129" : 50.965, - "99.87988435708104" : 51.408, - "99.88086482534175" : 51.956, - "99.8818403250133" : 52.401, - "99.88281499658666" : 52.731, - "99.88378966816002" : 53.34, - "99.88476848022434" : 53.663, - "99.8857431517977" : 54.064, - "99.88672030766564" : 54.548, - "99.88769994782815" : 55.113, - "99.88867296320512" : 55.653, - "99.88964846287668" : 56.102, - "99.89062644684282" : 56.817, - "99.89160194651436" : 57.211, - "99.89258158667688" : 57.898, - "99.89355791444663" : 58.326, - "99.89453258601998" : 58.984, - "99.89550891378973" : 59.424, - "99.89648524155947" : 60.067, - "99.8974632255256" : 60.642, - "99.89843872519715" : 61.193, - "99.8994150529669" : 61.892, - "99.90039552122761" : 62.601, - "99.90136853660458" : 63.459, - "99.90234403627613" : 64.18, - "99.90283344230829" : 64.617, - "99.90332036404588" : 64.967, - "99.90380977007804" : 65.421, - "99.90430083230659" : 65.838, - "99.90478609784779" : 66.199, - "99.90527467578175" : 66.604, - "99.90576242561752" : 67.137, - "99.90625017545331" : 67.593, - "99.90674040958366" : 67.999, - "99.90722733132124" : 68.337, - "99.90771590925522" : 68.891, - "99.90820365909099" : 69.429, - "99.90869140892676" : 69.975, - "99.90917998686074" : 70.573, - "99.90967022099109" : 70.948, - "99.91015714272866" : 71.629, - "99.91064489256445" : 72.028, - "99.9111351266948" : 72.598, - "99.91162122033418" : 73.156, - "99.91211559495551" : 73.827, - "99.91259837620213" : 74.35, - "99.9130861260379" : 74.903, - "99.91357470397188" : 75.35, - "99.91406328190584" : 75.841, - "99.91455103174161" : 76.096, - "99.91503960967559" : 76.717, - "99.91552735951136" : 77.108, - "99.91601593744532" : 77.797, - "99.91650699967389" : 78.18, - "99.91699226521507" : 78.633, - "99.91748167124723" : 79.121, - "99.91796942108301" : 79.564, - "99.91845799901698" : 80.085, - "99.91894823314733" : 80.598, - "99.91943432678673" : 80.969, - "99.91992373281889" : 81.457, - "99.92041148265466" : 81.868, - "99.92090088868683" : 82.489, - "99.9213878104244" : 82.991, - "99.92187970075115" : 83.487, - "99.92236496629235" : 84.096, - "99.92285188802992" : 84.748, - "99.92334295025847" : 85.206, - "99.92382987199606" : 85.783, - "99.92431679373364" : 86.329, - "99.92480537166762" : 87.128, - "99.92529312150339" : 87.513, - "99.92578169943735" : 88.246, - "99.92627027737133" : 88.555, - "99.92675968340349" : 89.002, - "99.92725157373023" : 89.351, - "99.92773518307504" : 89.848, - "99.92822376100901" : 90.379, - "99.92871151084478" : 90.726, - "99.92919926068056" : 91.29, - "99.92968783861453" : 91.877, - "99.93017641654849" : 92.547, - "99.93066416638428" : 93.424, - "99.93115357241643" : 94.067, - "99.9316421503504" : 94.746, - "99.93213155638256" : 95.492, - "99.93261847812015" : 95.996, - "99.93310622795592" : 96.687, - "99.9335939777917" : 97.144, - "99.93408255572567" : 97.78, - "99.93457444605241" : 98.311, - "99.93505971159361" : 99.157, - "99.93554994572396" : 99.411, - "99.93603521126515" : 100.239, - "99.93652792969009" : 100.744, - "99.93701319523129" : 101.383, - "99.93750094506706" : 101.932, - "99.93798952300104" : 102.419, - "99.93848058522958" : 103.035, - "99.93896502267258" : 103.656, - "99.93945608490114" : 104.303, - "99.93994300663871" : 104.796, - "99.94043075647448" : 105.653, - "99.94091933440846" : 106.191, - "99.9414112247352" : 107.087, - "99.94189483408002" : 107.959, - "99.94238424011218" : 108.311, - "99.94287116184975" : 109.198, - "99.94335973978373" : 109.565, - "99.9438483177177" : 110.523, - "99.94433606755346" : 111.105, - "99.94482630168382" : 112.0, - "99.9453148796178" : 112.922, - "99.94580097325718" : 113.88, - "99.94629037928934" : 114.472, - "99.9467806134197" : 115.14, - "99.94726587896089" : 116.113, - "99.94775445689487" : 117.089, - "99.94824303482883" : 118.393, - "99.9487316127628" : 119.701, - "99.94921936259858" : 121.246, - "99.94970711243435" : 122.782, - "99.95019651846651" : 124.1, - "99.9506842683023" : 125.512, - "99.95117201813807" : 126.293, - "99.95141630710505" : 126.818, - "99.95166059607203" : 127.079, - "99.95190571313721" : 127.399, - "99.9521500021042" : 127.906, - "99.9523926348748" : 128.394, - "99.95263692384178" : 128.77, - "99.95288204090696" : 128.975, - "99.95312964226672" : 129.538, - "99.95336979074273" : 130.066, - "99.95361407970972" : 131.024, - "99.9538583686767" : 132.129, - "99.9541018295455" : 133.016, - "99.95434611851248" : 133.633, - "99.95459040747946" : 134.144, - "99.95483552454463" : 134.778, - "99.95507815731524" : 135.178, - "99.955325758675" : 135.836, - "99.9555667352492" : 136.128, - "99.95581102421619" : 136.575, - "99.95605696937956" : 137.113, - "99.95630125834654" : 137.403, - "99.95654389111715" : 137.669, - "99.95679066437872" : 138.205, - "99.95703246905111" : 138.482, - "99.9572759299199" : 138.998, - "99.95752021888688" : 139.989, - "99.95776367975569" : 140.605, - "99.95800962491906" : 141.364, - "99.95825225768965" : 141.805, - "99.95849654665663" : 142.324, - "99.95874083562362" : 142.878, - "99.9589851245906" : 143.417, - "99.9592285854594" : 144.043, - "99.95947287442638" : 144.689, - "99.95971716339336" : 145.122, - "99.95996228045854" : 145.394, - "99.96020656942552" : 145.899, - "99.9604508583925" : 146.45, - "99.96069349116311" : 146.976, - "99.96093943632648" : 147.383, - "99.96118289719527" : 147.628, - "99.96142718616225" : 148.253, - "99.96167230322743" : 148.59, - "99.96191410789983" : 149.102, - "99.96215839686683" : 149.426, - "99.962403513932" : 149.995, - "99.96264697480079" : 150.501, - "99.96289126376777" : 151.089, - "99.96313555273476" : 151.985, - "99.96337984170174" : 152.686, - "99.96362330257054" : 153.031, - "99.96386759153752" : 153.558, - "99.9641127086027" : 153.855, - "99.96435616947149" : 154.029, - "99.96459963034027" : 154.339, - "99.96484391930727" : 154.851, - "99.96508820827425" : 155.023, - "99.96533249724123" : 155.339, - "99.96557761430641" : 155.791, - "99.9658210751752" : 156.259, - "99.96606784843677" : 156.757, - "99.96630965310916" : 157.211, - "99.96655311397797" : 157.833, - "99.9668015434359" : 158.283, - "99.96704252001012" : 158.912, - "99.96728680897711" : 159.528, - "99.9675302698459" : 160.465, - "99.9677737307147" : 160.801, - "99.96801801968168" : 161.726, - "99.96826313674686" : 162.156, - "99.96850742571384" : 162.985, - "99.96875005848443" : 163.666, - "99.96899517554961" : 164.04, - "99.96923946451659" : 164.754, - "99.96948375348359" : 164.979, - "99.96972887054876" : 165.37, - "99.96997233141755" : 165.958, - "99.97021496418814" : 166.188, - "99.97045925315513" : 166.694, - "99.97070354212212" : 167.27, - "99.9709486591873" : 167.61, - "99.97119294815428" : 168.358, - "99.97143558092488" : 169.031, - "99.97167986989186" : 170.237, - "99.97192498695703" : 171.679, - "99.97216844782584" : 172.433, - "99.97241356489101" : 173.179, - "99.972657853858" : 174.051, - "99.97290131472678" : 174.229, - "99.97314477559557" : 175.121, - "99.97338906456255" : 175.362, - "99.97363666592231" : 176.374, - "99.97387764249653" : 176.827, - "99.97412110336532" : 177.475, - "99.9743662204305" : 177.664, - "99.97461133749567" : 178.541, - "99.97485397026627" : 178.708, - "99.97509825923326" : 179.095, - "99.97534254820025" : 179.744, - "99.97558683716723" : 180.306, - "99.97570856760163" : 180.846, - "99.9758327823306" : 181.155, - "99.9759536846668" : 181.731, - "99.976074587003" : 181.897, - "99.9761963174374" : 182.228, - "99.97632136026456" : 182.33, - "99.97644060640438" : 182.644, - "99.97656399303517" : 182.823, - "99.97668489537136" : 183.044, - "99.97680745390396" : 183.304, - "99.97693001243654" : 183.461, - "99.97705339906733" : 183.717, - "99.97717347330534" : 184.035, - "99.97729603183792" : 184.225, - "99.97741776227232" : 184.407, - "99.97753949270671" : 184.515, - "99.9776628793375" : 184.758, - "99.97778460977189" : 185.117, - "99.9779055121081" : 185.326, - "99.97802889873888" : 185.355, - "99.97814980107508" : 185.49, - "99.97827318770587" : 185.783, - "99.97839409004206" : 186.147, - "99.97851582047646" : 186.204, - "99.97863920710724" : 186.274, - "99.97876010944344" : 186.443, - "99.97888183987784" : 186.772, - "99.97900439841042" : 186.94, - "99.97912695694302" : 187.147, - "99.9792486873774" : 187.266, - "99.97937124591" : 187.353, - "99.9794938044426" : 187.86, - "99.97961636297518" : 188.205, - "99.97973643721319" : 188.351, - "99.97985982384397" : 188.935, - "99.97998072618017" : 189.143, - "99.98010411281095" : 189.333, - "99.98022501514716" : 189.486, - "99.98034674558156" : 190.024, - "99.98047013221233" : 190.125, - "99.98059186264673" : 190.323, - "99.9807160773757" : 190.548, - "99.98083532351552" : 190.757, - "99.98095953824449" : 191.23, - "99.9810796124825" : 191.529, - "99.98120382721149" : 191.734, - "99.98132472954768" : 192.3, - "99.98144811617847" : 192.596, - "99.98156819041648" : 192.829, - "99.98168992085087" : 193.429, - "99.98181330748166" : 193.762, - "99.98193503791605" : 194.002, - "99.98205594025225" : 194.235, - "99.98217932688303" : 194.554, - "99.98230022921923" : 194.877, - "99.9824252720464" : 195.068, - "99.98254451818622" : 195.227, - "99.98266707671881" : 195.333, - "99.9827896352514" : 195.952, - "99.98291219378399" : 196.149, - "99.98303475231657" : 196.311, - "99.98315731084917" : 196.54, - "99.98327655698898" : 196.707, - "99.98340077171795" : 197.089, - "99.98352084595597" : 197.478, - "99.98364340448856" : 197.631, - "99.98376596302114" : 197.793, - "99.98388852155374" : 197.945, - "99.98401108008632" : 198.262, - "99.98413115432433" : 198.637, - "99.9842561971515" : 198.739, - "99.98437544329131" : 198.842, - "99.9844988299221" : 198.946, - "99.98462138845468" : 199.031, - "99.98474229079089" : 199.358, - "99.98486650551986" : 199.71, - "99.98498575165968" : 199.833, - "99.98511079448684" : 199.988, - "99.98523252492124" : 200.049, - "99.98535259915926" : 200.597, - "99.98547847008462" : 200.813, - "99.985600200519" : 200.984, - "99.98571779046245" : 201.109, - "99.98584034899503" : 201.42, - "99.98596290752762" : 201.682, - "99.98608712225659" : 202.078, - "99.98620636839641" : 202.256, - "99.98632975502719" : 202.362, - "99.98645148546159" : 202.687, - "99.98657238779779" : 202.905, - "99.98669494633037" : 203.085, - "99.98681667676478" : 203.469, - "99.98693923529736" : 203.877, - "99.98706345002634" : 204.141, - "99.98718435236253" : 204.441, - "99.98730525469874" : 204.667, - "99.98742698513314" : 204.849, - "99.98754954366572" : 204.997, - "99.98767293029651" : 205.519, - "99.98779300453451" : 205.747, - "99.98785676809538" : 205.917, - "99.9879155630671" : 205.934, - "99.98797767043159" : 205.992, - "99.9880381215997" : 206.111, - "99.98810022896419" : 206.51, - "99.98816233632867" : 206.798, - "99.9882203032022" : 206.891, - "99.98828158246849" : 206.924, - "99.98834286173478" : 207.173, - "99.98840662529565" : 207.544, - "99.98846542026737" : 207.586, - "99.98852752763186" : 207.881, - "99.98858797879996" : 207.993, - "99.98864760186987" : 208.24, - "99.98870970923436" : 208.508, - "99.98877016040245" : 208.62, - "99.98883143966874" : 208.667, - "99.98889189083685" : 208.951, - "99.98895317010314" : 209.068, - "99.98901444936944" : 209.112, - "99.98907490053755" : 209.15, - "99.98913617980384" : 209.268, - "99.98919745907013" : 209.348, - "99.989261222631" : 209.37, - "99.98932001760272" : 209.392, - "99.9893829530654" : 209.49, - "99.98944091993891" : 209.821, - "99.98950302730341" : 209.885, - "99.9895643065697" : 210.093, - "99.98962724203238" : 210.131, - "99.98968686510229" : 210.175, - "99.98974897246678" : 210.213, - "99.98980776743849" : 210.396, - "99.98986904670478" : 210.472, - "99.9899294978729" : 210.811, - "99.98999491763016" : 210.827, - "99.99005205640547" : 210.973, - "99.99011913235913" : 211.245, - "99.99017461493807" : 211.269, - "99.99023589420436" : 211.596, - "99.99029634537246" : 211.71, - "99.99035762463876" : 211.79, - "99.99041807580686" : 211.906, - "99.99047852697495" : 212.06, - "99.9905456029286" : 212.166, - "99.99060356980213" : 212.31, - "99.99066236477384" : 212.53, - "99.99072447213833" : 212.738, - "99.99078492330644" : 212.778, - "99.99084703067092" : 212.882, - "99.99090582564263" : 212.907, - "99.99096793300713" : 213.168, - "99.99103418086257" : 213.228, - "99.99109049153971" : 213.747, - "99.99115011460962" : 213.817, - "99.99121139387591" : 213.991, - "99.9912735012404" : 214.108, - "99.9913339524085" : 214.26, - "99.9913944035766" : 214.314, - "99.9914556828429" : 214.923, - "99.99151861830558" : 215.2, - "99.99157824137549" : 215.272, - "99.99163952064178" : 215.346, - "99.99169997180988" : 215.399, - "99.99176042297798" : 215.768, - "99.99182170224428" : 216.001, - "99.99188380960877" : 216.15, - "99.99194426077686" : 216.436, - "99.99200471194497" : 216.647, - "99.99206930360404" : 216.804, - "99.99212727047755" : 217.217, - "99.99218937784204" : 217.426, - "99.99224900091195" : 217.46, - "99.99231193637463" : 217.77, - "99.99237321564092" : 218.529, - "99.99243532300541" : 218.541, - "99.99249328987894" : 218.56, - "99.99255456914523" : 218.844, - "99.9926175046079" : 218.861, - "99.99267629957963" : 219.624, - "99.99273840694411" : 219.797, - "99.99279803001401" : 219.946, - "99.99285930928032" : 220.014, - "99.99292058854661" : 220.261, - "99.9929810397147" : 220.832, - "99.99304231898101" : 220.884, - "99.9931035982473" : 221.087, - "99.99316487751359" : 221.248, - "99.99322615677988" : 221.344, - "99.993286607948" : 221.612, - "99.99334788721428" : 221.645, - "99.99340833838238" : 221.927, - "99.99347044574688" : 221.999, - "99.99353089691498" : 222.414, - "99.99359217618127" : 222.444, - "99.99365262734938" : 222.991, - "99.99371390661567" : 223.007, - "99.99377601398015" : 223.504, - "99.99383563705005" : 223.727, - "99.99389774441455" : 223.88, - "99.99392838404769" : 223.933, - "99.99395902368084" : 223.952, - "99.99399049141218" : 224.076, - "99.99401947484894" : 224.167, - "99.9940492863839" : 224.198, - "99.99408075411525" : 224.806, - "99.99411056565019" : 224.855, - "99.99414120528334" : 224.953, - "99.99417598540745" : 224.972, - "99.99420248454963" : 224.994, - "99.99423229608459" : 225.031, - "99.99426376381592" : 225.149, - "99.99429440344908" : 225.248, - "99.99432421498403" : 225.672, - "99.99435485461717" : 225.696, - "99.99438549425032" : 225.887, - "99.99441530578528" : 225.957, - "99.99444594541842" : 226.031, - "99.99447989744435" : 226.036, - "99.99450805278292" : 226.249, - "99.99453869241606" : 226.266, - "99.99456933204921" : 226.352, - "99.99459914358417" : 226.405, - "99.99462895511911" : 226.42, - "99.99466207904685" : 226.766, - "99.99469189058179" : 226.777, - "99.99472087401855" : 227.098, - "99.9947523417499" : 227.115, - "99.99478298138304" : 227.15, - "99.994812792918" : 227.32, - "99.99484343255115" : 227.33, - "99.99487572838068" : 227.34, - "99.99490388371925" : 227.422, - "99.9949353514506" : 227.442, - "99.99496599108373" : 227.495, - "99.99499745881508" : 227.674, - "99.99502644225184" : 227.847, - "99.99505790998317" : 227.861, - "99.9950910339109" : 227.87, - "99.99511753305309" : 228.227, - "99.99514817268623" : 228.252, - "99.99517881231938" : 228.349, - "99.99521110814891" : 228.362, - "99.99524009158567" : 228.417, - "99.99526990312063" : 228.431, - "99.99530054275377" : 228.506, - "99.99533118238692" : 228.523, - "99.99536265011827" : 229.423, - "99.99539577404599" : 229.436, - "99.99542392938456" : 229.442, - "99.99545374091952" : 229.599, - "99.99548438055265" : 229.618, - "99.99551419208761" : 229.911, - "99.99554483172076" : 230.254, - "99.9955754713539" : 230.272, - "99.99560611098705" : 230.525, - "99.9956367506202" : 230.978, - "99.99566821835154" : 231.006, - "99.9956972017883" : 231.343, - "99.99572866951964" : 231.36, - "99.99576096534918" : 231.536, - "99.99578912068775" : 232.602, - "99.99581976032088" : 232.618, - "99.99585039995404" : 232.631, - "99.995880211489" : 233.265, - "99.99591085112213" : 233.722, - "99.99594231885348" : 234.146, - "99.99597295848663" : 234.163, - "99.99600525431616" : 234.295, - "99.99603340965473" : 234.308, - "99.99606404928788" : 234.336, - "99.99609386082282" : 234.796, - "99.99612532855417" : 235.032, - "99.99615514008913" : 235.056, - "99.99618577972227" : 235.251, - "99.99621724745361" : 235.28, - "99.99624705898856" : 235.377, - "99.99627769862171" : 235.411, - "99.99630999445125" : 235.487, - "99.9963381497898" : 235.504, - "99.99636961752115" : 236.13, - "99.99639942905611" : 236.57, - "99.99643172488564" : 236.582, - "99.99646236451879" : 237.742, - "99.99649051985736" : 237.957, - "99.9965219875887" : 238.809, - "99.99655262722185" : 238.83, - "99.9965824387568" : 238.915, - "99.99661307838994" : 239.029, - "99.9966437180231" : 239.048, - "99.99667518575443" : 239.242, - "99.99670582538758" : 239.417, - "99.99673480882434" : 239.434, - "99.99676544845748" : 239.467, - "99.99679608809063" : 239.669, - "99.99682755582198" : 239.688, - "99.99685736735692" : 239.896, - "99.99688800699008" : 239.917, - "99.99691781852503" : 240.005, - "99.99694845815817" : 240.034, - "99.99696750441662" : 240.113, - "99.99697992588952" : 240.118, - "99.99699648785338" : 240.131, - "99.99701056552267" : 240.319, - "99.99702464319195" : 240.331, - "99.9970428613522" : 240.337, - "99.9970552828251" : 240.467, - "99.99707184478896" : 240.481, - "99.99708675055643" : 240.491, - "99.99710165632392" : 240.507, - "99.99711656209139" : 240.516, - "99.99713146785886" : 240.527, - "99.99714720172454" : 240.533, - "99.99716293559021" : 240.541, - "99.99717866945588" : 240.551, - "99.99719274712517" : 240.557, - "99.99720765289264" : 240.749, - "99.9972250429547" : 240.762, - "99.9972382925258" : 240.77, - "99.99725568258785" : 240.786, - "99.99726976025713" : 240.796, - "99.9972846660246" : 240.806, - "99.99729957179208" : 241.092, - "99.99731447755956" : 241.102, - "99.99733103952342" : 241.113, - "99.99734511719271" : 241.144, - "99.99736167915657" : 241.556, - "99.99737658492404" : 241.567, - "99.99739149069153" : 241.577, - "99.9974072245572" : 241.621, - "99.99742213032467" : 241.734, - "99.99743703609215" : 241.747, - "99.99745194185962" : 241.767, - "99.99746850382348" : 241.875, - "99.99748423768915" : 241.89, - "99.99749831535844" : 242.178, - "99.99751404922411" : 242.187, - "99.9975281268934" : 242.202, - "99.99754386075907" : 242.232, - "99.99755876652654" : 242.256, - "99.99757450039222" : 242.647, - "99.99758940615969" : 242.828, - "99.99760514002536" : 242.864, - "99.99762087389102" : 243.326, - "99.99763577965851" : 243.337, - "99.99765151352418" : 243.342, - "99.99766559119347" : 243.351, - "99.99768132505913" : 243.969, - "99.9976970589248" : 244.042, - "99.99771196469227" : 244.047, - "99.99772687045976" : 244.405, - "99.99774177622723" : 245.068, - "99.99776082248567" : 245.11, - "99.99777324395858" : 245.114, - "99.99778814972605" : 245.118, - "99.99780388359171" : 245.208, - "99.99782044555559" : 245.212, - "99.99783617942126" : 245.221, - "99.99785108518873" : 245.371, - "99.99786433475983" : 245.468, - "99.9978792405273" : 245.471, - "99.99789497439296" : 245.475, - "99.99791070825864" : 245.578, - "99.99792644212431" : 246.189, - "99.99794051979359" : 246.198, - "99.99795625365927" : 246.285, - "99.99797115942674" : 246.295, - "99.99798606519421" : 246.307, - "99.99800511145266" : 246.431, - "99.99801918912195" : 246.434, - "99.99803326679123" : 246.441, - "99.9980481725587" : 246.54, - "99.99806307832618" : 246.544, - "99.99807798409365" : 246.551, - "99.99809288986114" : 246.644, - "99.99810862372681" : 246.658, - "99.99812352949428" : 246.672, - "99.99814009145814" : 247.507, - "99.99815499722563" : 247.512, - "99.9981699029931" : 247.516, - "99.99818480876057" : 247.746, - "99.99819971452806" : 247.757, - "99.99821544839372" : 248.718, - "99.9982303541612" : 248.734, - "99.99824691612507" : 248.836, - "99.99826099379435" : 249.804, - "99.99827589956182" : 249.817, - "99.9982924615257" : 249.831, - "99.99830819539136" : 250.126, - "99.99832227306064" : 250.134, - "99.99833800692632" : 250.145, - "99.9983520845956" : 250.898, - "99.99836781846126" : 250.913, - "99.99838272422875" : 250.927, - "99.99839845809441" : 251.02, - "99.99841502005827" : 251.211, - "99.99842909772757" : 251.217, - "99.99844400349504" : 251.225, - "99.99845890926251" : 251.357, - "99.99847464312819" : 252.079, - "99.99848209601193" : 252.084, - "99.99848954889566" : 252.089, - "99.99849865797579" : 252.095, - "99.99850611085952" : 252.1, - "99.99851273564506" : 252.105, - "99.99852018852881" : 252.11, - "99.99852846951075" : 252.22, - "99.99853592239448" : 252.225, - "99.99854420337641" : 252.436, - "99.99855082816195" : 252.444, - "99.99855828104569" : 252.453, - "99.99856573392944" : 252.461, - "99.99857401491137" : 252.471, - "99.9985814677951" : 253.108, - "99.99858974877704" : 253.112, - "99.99859720166077" : 253.17, - "99.99860382644631" : 253.174, - "99.99861293552644" : 253.181, - "99.99862038841019" : 253.187, - "99.99862701319573" : 253.192, - "99.99863446607947" : 253.198, - "99.9986427470614" : 253.284, - "99.99865268423972" : 253.288, - "99.99865930902526" : 253.291, - "99.99866510571262" : 253.293, - "99.99867338669455" : 253.298, - "99.99868083957828" : 253.303, - "99.99868829246202" : 253.308, - "99.99869657344395" : 253.314, - "99.9987031982295" : 253.539, - "99.99871147921144" : 253.548, - "99.99871976019337" : 253.553, - "99.99872638497891" : 253.558, - "99.99873466596084" : 254.174, - "99.99874377504096" : 254.177, - "99.9987503998265" : 254.178, - "99.99876033700482" : 254.179, - "99.9987644774958" : 254.183, - "99.99877193037953" : 254.191, - "99.99877938326327" : 254.198, - "99.9987876642452" : 254.355, - "99.99879594522713" : 254.359, - "99.99880257001269" : 254.363, - "99.99881085099462" : 254.368, - "99.99881830387835" : 254.373, - "99.99882575676209" : 254.376, - "99.99883486584221" : 254.379, - "99.99884066252956" : 254.381, - "99.99884811541331" : 254.385, - "99.99885888068981" : 254.389, - "99.99886384927898" : 254.392, - "99.99887130216271" : 254.402, - "99.99887875504645" : 254.635, - "99.99888703602838" : 254.699, - "99.99889448891211" : 254.707, - "99.99890276989406" : 254.717, - "99.9989093946796" : 254.726, - "99.99891767566153" : 255.234, - "99.99892595664346" : 255.237, - "99.998932581429" : 255.239, - "99.99894086241093" : 255.244, - "99.99894831529468" : 255.249, - "99.99895825247299" : 255.251, - "99.99896322106216" : 255.263, - "99.99897398633867" : 255.266, - "99.9989814392224" : 255.268, - "99.99898806400795" : 255.27, - "99.99899303259711" : 255.272, - "99.99900214167724" : 255.278, - "99.99900876646278" : 255.28, - "99.99901621934652" : 255.446, - "99.99902450032845" : 255.451, - "99.99903278131038" : 255.455, - "99.99903940609593" : 255.459, - "99.99904685897967" : 255.466, - "99.9990551399616" : 255.802, - "99.99906259284533" : 255.807, - "99.99907004572907" : 255.812, - "99.999078326711" : 255.818, - "99.99908577959474" : 255.826, - "99.99909488867486" : 256.301, - "99.99910068536222" : 256.304, - "99.99911724732608" : 256.309, - "99.99912304401343" : 256.311, - "99.99913132499536" : 256.827, - "99.99913794978092" : 256.83, - "99.99914705886104" : 256.888, - "99.99915368364658" : 256.894, - "99.99916196462851" : 256.899, - "99.99916858941405" : 256.903, - "99.9991760422978" : 256.911, - "99.99918432327974" : 257.894, - "99.99919177616347" : 257.899, - "99.9991992290472" : 257.902, - "99.99920751002914" : 257.907, - "99.99921496291287" : 257.911, - "99.9992232438948" : 257.916, - "99.99922986868036" : 257.981, - "99.99923897776048" : 258.983, - "99.99924229015325" : 258.985, - "99.99924560254603" : 258.987, - "99.9992489149388" : 258.989, - "99.99925305542976" : 258.991, - "99.99925636782254" : 258.992, - "99.99926133641169" : 258.996, - "99.99926382070628" : 258.999, - "99.99926796119723" : 259.004, - "99.9992721016882" : 259.507, - "99.99927541408098" : 259.509, - "99.99928038267014" : 259.512, - "99.99928286696472" : 259.514, - "99.99928783555387" : 259.517, - "99.99929197604484" : 260.577, - "99.9992961165358" : 260.579, - "99.99929942892858" : 260.581, - "99.99930191322316" : 260.583, - "99.99930770991051" : 260.591, - "99.99931102230329" : 260.592, - "99.99931350659786" : 260.594, - "99.99931764708883" : 260.597, - "99.99932261567798" : 260.6, - "99.99932509997257" : 260.602, - "99.99933006856173" : 260.605, - "99.9993333809545" : 260.607, - "99.99933669334727" : 260.609, - "99.99934249003462" : 260.958, - "99.9993449743292" : 260.959, - "99.99934911482018" : 260.962, - "99.99935159911475" : 260.964, - "99.99935656770391" : 260.967, - "99.99935988009668" : 261.669, - "99.99936319248945" : 261.671, - "99.99936733298043" : 261.674, - "99.99937064537319" : 261.676, - "99.99937561396236" : 261.679, - "99.99937975445332" : 261.682, - "99.9993830668461" : 261.684, - "99.99938637923886" : 261.687, - "99.99938969163163" : 261.689, - "99.9993938321226" : 261.697, - "99.99939880071176" : 262.027, - "99.99940211310454" : 262.028, - "99.99940873789008" : 262.03, - "99.99941287838105" : 262.032, - "99.99941701887201" : 262.034, - "99.99942198746118" : 262.037, - "99.99942447175575" : 262.039, - "99.99942861224672" : 262.041, - "99.99943192463948" : 262.043, - "99.99943689322865" : 262.046, - "99.99943937752323" : 263.105, - "99.99944351801419" : 263.107, - "99.99944765850516" : 263.109, - "99.99945097089793" : 263.111, - "99.99945925187986" : 263.115, - "99.99946504856722" : 263.117, - "99.99947084525456" : 263.119, - "99.99947498574554" : 263.121, - "99.9994774700401" : 263.125, - "99.99948161053108" : 264.923, - "99.99948740721842" : 264.927, - "99.9994907196112" : 264.931, - "99.99949320390579" : 264.933, - "99.99949817249494" : 265.997, - "99.99950231298591" : 266.001, - "99.99950479728048" : 266.003, - "99.99950976586965" : 266.007, - "99.99951225016423" : 266.009, - "99.99951639065519" : 266.013, - "99.99951970304797" : 266.015, - "99.99952384353892" : 266.019, - "99.9995271559317" : 266.021, - "99.99953295261905" : 266.025, - "99.99953626501183" : 266.027, - "99.99953874930641" : 266.033, - "99.99954454599376" : 267.093, - "99.99954868648473" : 267.095, - "99.9995519988775" : 267.097, - "99.99955531127027" : 267.099, - "99.99955945176123" : 267.101, - "99.999562764154" : 267.103, - "99.99956690464498" : 267.107, - "99.99957021703774" : 267.109, - "99.99957435752872" : 267.111, - "99.9995768418233" : 267.113, - "99.99958181041245" : 267.117, - "99.99958595090342" : 281.313, - "99.99959174759077" : 281.315, - "99.99959837237631" : 281.317, - "99.99960499716185" : 281.319, - "99.99960913765283" : 281.321, - "99.99961327814378" : 281.323, - "99.99961576243837" : 281.325, - "99.99961907483114" : 281.327, - "99.99962073102753" : 281.329, - "99.9996232153221" : 282.387, - "99.99962569961669" : 282.389, - "99.99962984010766" : 282.391, - "99.99963315250042" : 282.393, - "99.99964060538416" : 282.395, - "99.99964971446428" : 282.397, - "99.99965633924984" : 282.399, - "99.99966379213357" : 282.401, - "99.99966876072273" : 282.403, - "99.9996729012137" : 283.463, - "99.99967538550828" : 283.465, - "99.99967704170466" : 283.467, - "99.99967869790105" : 283.469, - "99.99968035409744" : 283.471, - "99.99968201029382" : 283.473, - "99.99968449458841" : 283.475, - "99.9996853226866" : 283.477, - "99.99968863507937" : 286.537, - "99.99969111937395" : 286.539, - "99.99969443176673" : 287.599, - "99.99969940035588" : 287.601, - "99.99970271274866" : 287.603, - "99.99970519704323" : 287.605, - "99.999708509436" : 287.607, - "99.99971264992698" : 287.609, - "99.99971596231974" : 287.611, - "99.99971927471252" : 287.613, - "99.99972258710528" : 287.615, - "99.99972507139987" : 287.617, - "99.99972838379264" : 287.619, - "99.9997316961854" : 287.621, - "99.99973418047999" : 287.623, - "99.99973749287277" : 287.625, - "99.99973997716735" : 287.627, - "99.99974328956012" : 287.629, - "99.9997449457565" : 287.631, - "99.99974743005109" : 288.689, - "99.99975074244385" : 288.691, - "99.9997581953276" : 288.693, - "99.99976564821134" : 288.695, - "99.99977144489868" : 288.697, - "99.99977641348785" : 288.699, - "99.99978055397881" : 288.701, - "99.99978303827339" : 288.703, - "99.99978635066616" : 288.705, - "99.99978966305893" : 288.707, - "99.99979049115713" : 288.709, - "99.99979297545171" : 301.747, - "99.99979628784448" : 301.749, - "99.99979877213906" : 301.751, - "99.99980125643364" : 301.753, - "99.99980291263003" : 301.755, - "99.9998053969246" : 301.757, - "99.99980705312099" : 301.759, - "99.99980870931738" : 301.761, - "99.99980953741557" : 301.763, - "99.99981119361196" : 301.765, - "99.99981367790653" : 301.767, - "99.99981450600472" : 301.769, - "99.99981533410292" : 301.775, - "99.99981616220111" : 302.837, - "99.9998186464957" : 302.839, - "99.99982195888848" : 302.841, - "99.99982444318304" : 302.843, - "99.99982527128124" : 302.845, - "99.99982858367402" : 302.847, - "99.99983189606678" : 302.849, - "99.99983438036136" : 302.851, - "99.99983520845956" : 302.853, - "99.99983852085234" : 302.855, - "99.9998410051469" : 302.857, - "99.99984348944149" : 302.859, - "99.99984431753968" : 302.861, - "99.99984680183427" : 302.863, - "99.99985011422703" : 302.865, - "99.99985259852161" : 302.867, - "99.9998550828162" : 302.871, - "99.99985756711078" : 302.873, - "99.99985839520897" : 302.879, - "99.99986005140535" : 303.943, - "99.99986253569993" : 303.945, - "99.99986419189632" : 303.947, - "99.99986501999452" : 303.949, - "99.9998666761909" : 303.951, - "99.99986833238728" : 303.953, - "99.99986916048547" : 303.955, - "99.99987164478006" : 303.957, - "99.99987247287825" : 303.959, - "99.99987330097645" : 303.961, - "99.99987578527103" : 303.963, - "99.9998774414674" : 303.965, - "99.9998782695656" : 303.967, - "99.99987992576199" : 303.969, - "99.99988158195838" : 303.971, - "99.99988323815477" : 303.973, - "99.99988572244935" : 303.975, - "99.99988655054753" : 303.977, - "99.99988820674392" : 303.979, - "99.99988903484211" : 303.981, - "99.9998915191367" : 303.983, - "99.99989317533309" : 303.985, - "99.99989400343128" : 303.989, - "99.99989483152947" : 303.991, - "99.99989565962765" : 304.001, - "99.99989731582404" : 328.319, - "99.99989897202043" : 328.321, - "99.99990062821682" : 328.323, - "99.99990228441321" : 328.325, - "99.99990559680597" : 328.327, - "99.99990808110056" : 328.329, - "99.99991056539514" : 328.331, - "99.99991139349333" : 328.333, - "99.9999138777879" : 328.335, - "99.99991553398429" : 328.337, - "99.99991636208249" : 328.341, - "99.99991884637707" : 329.401, - "99.99992050257346" : 329.403, - "99.99992298686803" : 329.405, - "99.99992547116261" : 329.407, - "99.999927127359" : 329.409, - "99.99992961165358" : 329.411, - "99.99993126784997" : 329.413, - "99.99993375214454" : 329.415, - "99.99993623643913" : 329.417, - "99.99993789263551" : 329.419, - "99.9999403769301" : 329.421, - "99.99994286122467" : 329.423, - "99.99994534551925" : 329.425, - "99.99994700171564" : 329.427, - "99.99994865791203" : 329.429, - "99.9999511422066" : 329.431, - "99.99995528269757" : 329.433, - "99.99995776699215" : 329.435, - "99.99995859509035" : 329.437, - "99.99996190748311" : 329.439, - "99.99996521987589" : 329.441, - "99.99996604797408" : 329.445, - "99.99996853226865" : 330.505, - "99.99997184466143" : 330.507, - "99.99997515705421" : 330.509, - "99.99997846944697" : 330.511, - "99.99998095374156" : 330.513, - "99.99998260993794" : 330.515, - "99.99998592233072" : 330.517, - "99.99998840662529" : 330.519, - "99.99999171901807" : 330.521, - "99.99999585950903" : 330.523, - "99.99999834380361" : 330.525, - "99.9999991719018" : 330.527, - "100.0" : 330.533 - }, - "endToEndLatencyAvg" : [ 5.0786028901319, 4.839728673313052, 4.294905409742086, 4.869949728182607, 4.635338991974981, 4.225693342491648, 4.334551625697674, 4.353744541538951, 4.412346583168294, 4.766381124920166, 4.409206624593917, 4.458683787675239, 4.27330431042413, 6.867880094399159, 4.903492118654587, 4.326916996126035, 4.204177630581405, 4.24138075099461, 4.638317213546585, 4.498674105058172, 4.416967611271659, 4.357673303605807, 4.545810073908453, 4.730328197872557, 4.528989776261972, 5.5552990647285005, 4.604090891702309, 4.645329645199394, 4.924650034123008, 5.520403217075091, 4.890583141786424, 6.223050929589885, 4.195817677532066, 6.353140465320814, 4.724862814959574, 4.730027461975821, 4.5342481398079855, 4.811145896941967, 4.559534009748363, 4.574991484616202, 4.5272889603852855, 4.706419421999358, 5.387336593600279, 5.042845426620143, 4.6084760845273225, 4.428475261524296, 4.210760108888861, 4.3704724156912, 4.24343389565003, 4.5927531951455265, 4.324664957049981, 4.414200006761151, 4.240551607870541, 4.410724837184339, 4.281163917753923, 4.775858635740912, 4.600155388898922, 5.963976574363378, 4.489095838326491, 4.7351958837559485 ], - "endToEndLatency50pct" : [ 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0 ], - "endToEndLatency75pct" : [ 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, 4.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, 5.0, 5.0, 4.0, 4.0, 4.0, 5.0, 4.0, 4.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, 5.0, 4.0, 5.0, 4.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0 ], - "endToEndLatency95pct" : [ 12.0, 11.0, 9.0, 12.0, 10.0, 9.0, 9.0, 9.0, 9.0, 12.0, 9.0, 9.0, 9.0, 13.0, 12.0, 9.0, 9.0, 9.0, 11.0, 9.0, 10.0, 9.0, 10.0, 11.0, 10.0, 10.0, 11.0, 11.0, 12.0, 16.0, 12.0, 11.0, 8.0, 13.0, 11.0, 12.0, 10.0, 12.0, 10.0, 11.0, 10.0, 12.0, 15.0, 13.0, 11.0, 10.0, 9.0, 9.0, 9.0, 11.0, 9.0, 10.0, 9.0, 9.0, 9.0, 11.0, 10.0, 13.0, 10.0, 11.0 ], - "endToEndLatency99pct" : [ 23.0, 25.0, 15.0, 22.0, 21.0, 15.0, 17.0, 16.0, 17.0, 20.0, 18.0, 19.0, 16.0, 110.0, 23.0, 18.0, 15.0, 14.0, 21.0, 16.0, 18.0, 15.0, 17.0, 20.0, 18.0, 44.0, 19.0, 18.0, 25.0, 34.0, 27.0, 81.0, 14.0, 80.0, 19.0, 22.0, 20.0, 20.0, 19.0, 19.0, 19.0, 21.0, 26.0, 24.0, 19.0, 18.0, 14.0, 16.0, 15.0, 17.0, 16.0, 18.0, 14.0, 15.0, 15.0, 20.0, 19.0, 72.0, 19.0, 18.0 ], - "endToEndLatency999pct" : [ 113.0, 41.0, 24.0, 35.0, 80.0, 22.0, 29.0, 22.0, 25.0, 30.0, 32.0, 32.0, 25.0, 238.0, 38.0, 27.0, 23.0, 20.0, 31.0, 144.0, 38.0, 22.0, 28.0, 31.0, 29.0, 195.0, 29.0, 26.0, 52.0, 54.0, 44.0, 207.0, 22.0, 212.0, 28.0, 36.0, 34.0, 30.0, 32.0, 27.0, 28.0, 32.0, 37.0, 41.0, 29.0, 28.0, 23.0, 30.0, 22.0, 24.0, 30.0, 30.0, 20.0, 20.0, 23.0, 33.0, 33.0, 111.0, 30.0, 34.0 ], - "endToEndLatency9999pct" : [ 219.0, 50.0, 33.0, 44.0, 200.0, 29.0, 41.0, 25.0, 31.0, 39.0, 37.0, 38.0, 40.0, 302.001, 51.0, 33.0, 28.0, 26.0, 39.0, 210.0, 70.0, 27.0, 33.0, 38.0, 34.0, 261.0, 35.0, 31.0, 72.0, 63.0, 56.0, 249.0, 29.0, 254.0, 33.0, 44.0, 44.0, 36.0, 44.0, 34.0, 40.0, 41.0, 43.0, 50.0, 36.0, 37.0, 30.0, 37.0, 27.0, 31.0, 35.0, 38.0, 25.0, 26.0, 28.0, 43.0, 37.0, 130.0, 35.0, 40.0 ], - "endToEndLatencyMax" : [ 234.0, 55.0, 35.0, 45.0, 207.0, 36.0, 44.0, 31.0, 33.0, 43.0, 40.0, 41.0, 43.0, 330.001, 59.0, 36.0, 30.0, 28.0, 41.0, 215.0, 72.0, 29.0, 38.0, 40.0, 36.0, 287.001, 37.0, 32.0, 81.0, 66.0, 68.0, 253.0, 32.0, 263.001, 37.0, 45.0, 45.0, 38.0, 47.0, 37.0, 42.0, 42.0, 45.0, 60.0, 41.0, 39.0, 32.0, 39.0, 29.0, 33.0, 36.0, 40.0, 30.0, 28.0, 30.0, 45.0, 40.0, 135.0, 37.0, 42.0 ], - "aggregatedEndToEndLatencyQuantiles" : { - "0.18452169536268967" : 1.0, - "6.139047015390292" : 2.0, - "44.19998958229733" : 3.0, - "72.75901841391057" : 4.0, - "84.11671255396938" : 5.0, - "88.01910282048948" : 6.0, - "90.54330389738844" : 7.0, - "92.46359621580677" : 8.0, - "93.98535426689807" : 9.0, - "95.11257039919924" : 10.0, - "95.9364922601355" : 11.0, - "96.5784728360059" : 12.0, - "97.10742465032169" : 13.0, - "97.55737665684327" : 14.0, - "97.94261717369051" : 15.0, - "98.26475771512453" : 16.0, - "98.53307069901874" : 17.0, - "98.75413219667199" : 18.0, - "98.93683038000847" : 19.0, - "99.08594762048656" : 20.0, - "99.2121699304523" : 21.0, - "99.3150360491434" : 22.0, - "99.39955856434119" : 23.0, - "99.47032275583182" : 24.0, - "99.53170853056648" : 25.0, - "99.5828471945781" : 26.0, - "99.62537344938333" : 27.0, - "99.66193892327826" : 28.0, - "99.69211465203507" : 29.0, - "99.71884707334186" : 30.0, - "99.74042364275263" : 31.0, - "99.75979411042053" : 32.0, - "99.77611379775033" : 33.0, - "99.7900832911063" : 34.0, - "99.8020313526476" : 35.0, - "99.81282502010873" : 36.0, - "99.82200965765756" : 37.0, - "99.82900309955639" : 38.0, - "99.83506159818656" : 39.0, - "99.8410521912826" : 40.0, - "99.84632066699135" : 41.0, - "99.85136720753977" : 42.0, - "99.85614543841676" : 43.0, - "99.86041023720645" : 44.0, - "99.86374588954138" : 45.0, - "99.86725213382789" : 46.0, - "99.87043210030409" : 47.0, - "99.87314169673903" : 48.0, - "99.87533620485411" : 49.0, - "99.87747854164418" : 50.0, - "99.87975668950253" : 51.0, - "99.88163982590015" : 52.0, - "99.88340288543864" : 53.0, - "99.88526780327832" : 54.0, - "99.88681389635413" : 55.0, - "99.88799064957358" : 56.0, - "99.8895524768585" : 57.0, - "99.8911780690962" : 58.0, - "99.89250553947676" : 59.0, - "99.89379905709025" : 60.0, - "99.89477457805613" : 61.0, - "99.89593890953152" : 62.0, - "99.89670077649978" : 63.0, - "99.89757443916447" : 64.0, - "99.89876278601169" : 65.0, - "99.9001738961355" : 66.0, - "99.90099041877757" : 67.0, - "99.9019038310232" : 68.0, - "99.90300688189464" : 69.0, - "99.9044743039248" : 70.0, - "99.90583572707241" : 71.0, - "99.90710026061647" : 72.0, - "99.908228154976" : 73.0, - "99.90947943865973" : 74.0, - "99.91031997667362" : 75.0, - "99.91141060580101" : 76.0, - "99.91225776874505" : 77.0, - "99.91322169608316" : 78.0, - "99.91423199793236" : 79.0, - "99.91528453371133" : 80.0, - "99.91647784925617" : 81.0, - "99.91738132410657" : 82.0, - "99.91827817402681" : 83.0, - "99.9190748218784" : 84.0, - "99.9200553115419" : 85.0, - "99.9209008182534" : 86.0, - "99.9217082316165" : 87.0, - "99.92266304967563" : 88.0, - "99.92353339987524" : 89.0, - "99.92448987416691" : 90.0, - "99.92535028697127" : 91.0, - "99.92634733896016" : 92.0, - "99.92740153097168" : 93.0, - "99.92822716289271" : 94.0, - "99.92919357457961" : 95.0, - "99.93004984680263" : 96.0, - "99.93078769839906" : 97.0, - "99.93145681634509" : 98.0, - "99.93205885687327" : 99.0, - "99.93242239991574" : 100.0, - "99.9330906897455" : 101.0, - "99.93386000976018" : 102.0, - "99.93482724956336" : 103.0, - "99.93600234655027" : 104.0, - "99.93710870988677" : 105.0, - "99.93777699971653" : 106.0, - "99.93818277668876" : 107.0, - "99.93893636249432" : 108.0, - "99.93970402627646" : 109.0, - "99.94052965819749" : 110.0, - "99.94127827530544" : 111.0, - "99.94190847178679" : 112.0, - "99.94255274624471" : 113.0, - "99.94304630354155" : 114.0, - "99.94358623534949" : 115.0, - "99.94402596508877" : 116.0, - "99.94444830438638" : 117.0, - "99.94499237677567" : 118.0, - "99.94539070070147" : 119.0, - "99.94611778678639" : 121.0, - "99.94653432927012" : 122.0, - "99.94696163726536" : 123.0, - "99.947353336261" : 124.0, - "99.9477897535352" : 125.0, - "99.9483338259245" : 126.0, - "99.94897147545227" : 127.0, - "99.94932590921577" : 128.0, - "99.94973251430426" : 129.0, - "99.95039914790148" : 131.0, - "99.95080740922252" : 132.0, - "99.95123471721776" : 133.0, - "99.9519858186745" : 134.0, - "99.95280648189792" : 135.0, - "99.95353936479673" : 136.0, - "99.95407515602332" : 137.0, - "99.954687962063" : 138.0, - "99.95511112947689" : 139.0, - "99.95546390700784" : 140.0, - "99.95595166749078" : 141.0, - "99.95638560041618" : 142.0, - "99.95681953334157" : 143.0, - "99.95729487208047" : 144.0, - "99.95787538158562" : 145.0, - "99.95851799981102" : 146.0, - "99.95916641485032" : 147.0, - "99.95987776672611" : 148.0, - "99.96064543050825" : 149.0, - "99.96139736008126" : 150.0, - "99.96197207277254" : 151.0, - "99.96235963118683" : 152.0, - "99.96287886008801" : 153.0, - "99.96356536847571" : 154.0, - "99.96400012951739" : 155.0, - "99.96436450067611" : 156.0, - "99.9646394352777" : 157.0, - "99.96505680587771" : 158.0, - "99.96552055098881" : 159.0, - "99.9659246717285" : 160.0, - "99.96644058816462" : 161.0, - "99.96721156441184" : 162.0, - "99.9677481837547" : 163.0, - "99.96818874161025" : 164.0, - "99.9685854093035" : 165.0, - "99.96887773434676" : 166.0, - "99.96937543222494" : 167.0, - "99.96980605268526" : 168.0, - "99.97032445347017" : 169.0, - "99.97069130897772" : 170.0, - "99.97099688388128" : 171.0, - "99.97150369103844" : 172.0, - "99.97190035873169" : 173.0, - "99.97225562061145" : 174.0, - "99.97248749316701" : 175.0, - "99.97283778634915" : 176.0, - "99.97334873408764" : 177.0, - "99.9738770722678" : 178.0, - "99.97430934896066" : 179.0, - "99.97466047025907" : 180.0, - "99.97511510609122" : 181.0, - "99.97576683359559" : 182.0, - "99.97627281263645" : 183.0, - "99.97667693337614" : 184.0, - "99.97704130453488" : 185.0, - "99.97777004685233" : 186.0, - "99.97853025758805" : 187.0, - "99.97892195658369" : 188.0, - "99.97940143590392" : 189.0, - "99.97991900857258" : 190.0, - "99.98046970589202" : 191.0, - "99.98101874697893" : 192.0, - "99.98152638225234" : 193.0, - "99.98193050299203" : 194.0, - "99.98252509047377" : 195.0, - "99.98321988002417" : 196.0, - "99.98391301334203" : 197.0, - "99.98457467824163" : 198.0, - "99.98499122072536" : 199.0, - "99.9854408878599" : 200.0, - "99.9860503814345" : 201.0, - "99.98673357735711" : 202.0, - "99.98729338395553" : 203.0, - "99.98750869418569" : 204.0, - "99.98784159692616" : 205.0, - "99.98835006031585" : 206.0, - "99.98897611621585" : 207.0, - "99.98932226881665" : 208.0, - "99.98990443455435" : 209.0, - "99.99060253656982" : 210.0, - "99.99093047061268" : 211.0, - "99.99131968525951" : 212.0, - "99.99148613662975" : 213.0, - "99.99182980488173" : 214.0, - "99.99221901952855" : 215.0, - "99.99268442087221" : 216.0, - "99.99304133898451" : 217.0, - "99.9933079924234" : 218.0, - "99.99362598907102" : 219.0, - "99.99403010981071" : 220.0, - "99.99419904552975" : 221.0, - "99.99442677750396" : 222.0, - "99.99462966599006" : 223.0, - "99.99475802401189" : 224.0, - "99.99486236666189" : 225.0, - "99.99513067633332" : 226.0, - "99.99542631384166" : 227.0, - "99.99568137365277" : 228.0, - "99.9958701841623" : 229.0, - "99.99606893206706" : 230.0, - "99.9961774152984" : 231.0, - "99.99643827192341" : 232.0, - "99.99664778533968" : 233.0, - "99.9967405343619" : 234.0, - "99.99688297036032" : 235.0, - "99.99700387533571" : 236.0, - "99.99711153045078" : 237.0, - "99.99720262324047" : 238.0, - "99.99733180937857" : 239.0, - "99.99757444744563" : 240.0, - "99.99771108663015" : 241.0, - "99.99782371044286" : 242.0, - "99.99792225627897" : 243.0, - "99.99805475488213" : 244.0, - "99.99817897232262" : 245.0, - "99.99830318976309" : 246.0, - "99.99838682950634" : 247.0, - "99.99847212548214" : 248.0, - "99.9986104208992" : 249.0, - "99.9987478882" : 250.0, - "99.99882490301309" : 251.0, - "99.9989673390115" : 252.0, - "99.99916608691626" : 253.0, - "99.99932342900753" : 254.0, - "99.9993739441" : 255.0, - "99.9994095530996" : 260.0, - "99.99945841195952" : 261.0, - "99.99953873923769" : 262.0, - "99.9995826294" : 263.001, - "99.99962072274842" : 282.001, - "99.99966875349206" : 283.001, - "99.99968697205" : 284.001, - "99.99969111263135" : 285.001, - "99.99974494018889" : 286.001, - "99.9997913147" : 287.001, - "99.99981533007183" : 301.001, - "99.99985839211786" : 302.001, - "99.99989565735" : 303.001, - "99.99991636025675" : 328.001, - "99.99996604723293" : 329.001, - "100.0" : 330.001 - }, - "aggregatedEndToEndLatencyAvg" : 4.706997727872547, - "aggregatedEndToEndLatency50pct" : 4.0, - "aggregatedEndToEndLatency75pct" : 5.0, - "aggregatedEndToEndLatency95pct" : 10.0, - "aggregatedEndToEndLatency99pct" : 20.0, - "aggregatedEndToEndLatency999pct" : 66.0, - "aggregatedEndToEndLatency9999pct" : 210.0, - "aggregatedEndToEndLatencyMax" : 330.001 -} \ No newline at end of file diff --git a/blog/results/kafka/throughput/default-sync.json b/blog/results/kafka/throughput/default-sync.json deleted file mode 100644 index 9482cdb3..00000000 --- a/blog/results/kafka/throughput/default-sync.json +++ /dev/null @@ -1,3014 +0,0 @@ -{ - "workload" : "100-partitions-1000K-rate-4-producer", - "driver" : "Kafka", - "publishRate" : [ 679757.6833864928, 602508.4064504652, 586772.4101067219, 626631.6340380496, 650783.2586578485, 606217.310569607, 626538.7898183955, 611530.0139788432, 590647.9572794023, 638373.9603494273, 629004.5684366503, 628069.1725521265, 615283.1823172497, 636621.7323664458, 630977.5123478648, 625999.7678803268, 593526.1629748514, 623477.5225139958, 620365.5178437331, 619026.4450355052, 628659.3445879563, 620627.9801835498, 615011.1323617691, 588384.6561188201, 624264.8957971968, 595030.5813081352, 609082.0585213524, 641495.8102502094, 638298.4412862423, 608562.2574627209, 630926.1237281959, 611797.4015813535, 621353.8735549947, 609759.9779105327, 627379.5107503149, 601709.7852665693, 633938.4558721228, 625687.1478953452, 608348.4470546949, 635005.7195338557, 606060.2973293763, 609071.698000472, 600584.0233141086, 614870.2486205485, 617996.390357012, 628801.5575780439, 607605.2946079762, 619510.4591911162, 604177.679885008, 625911.4599850947, 617169.7762474422, 611364.5638063604, 602176.2730991957, 632276.8175457305, 607263.296198288, 636888.5527390525, 602304.5843465958, 619075.6420063708, 632186.4099184244, 626740.0805649599 ], - "consumeRate" : [ 676774.7451604343, 605663.3427332748, 587292.1602298593, 625477.000994367, 651675.780872774, 605176.0359564131, 626372.3616248218, 612698.6585969577, 590649.3387814027, 638873.6358021217, 628601.049410821, 625866.5239667506, 617931.8076752205, 635783.9445131883, 629970.624410737, 627702.0341171047, 592608.1632356268, 623493.504763631, 621092.9333628068, 616700.0451169792, 630461.5611009658, 621053.2049555843, 615586.1754351371, 587784.1583649289, 622755.685609052, 595237.2495925848, 610382.6537090753, 641094.04976929, 638583.913560739, 608676.7403773686, 630827.403297335, 609893.6202793192, 623831.4781117511, 609484.3740435624, 626867.6509955401, 601949.1160926509, 634512.739773407, 623285.3596122247, 610353.2309244974, 635005.7195338557, 605541.216025018, 608587.8046332456, 600832.7359815873, 614831.6727267071, 618863.5676984438, 628865.1965071668, 608365.0588905783, 618709.0674807212, 603476.4180942398, 625456.0709612586, 617362.5937955903, 612628.8345548795, 600752.1971521163, 632193.7185862436, 608069.2621459693, 636475.2986654249, 602314.3447427873, 619277.507066411, 632387.9336676704, 626559.8173872865 ], - "backlog" : [ 45350, 13362, 8098, 19803, 10758, 21308, 22997, 11157, 11145, 6084, 10169, 32488, 5661, 14138, 24340, 7102, 16403, 16241, 8871, 32458, 14196, 9884, 4056, 10140, 25438, 23339, 10140, 14207, 11319, 10154, 11154, 30428, 5342, 8134, 13320, 10897, 5078, 29434, 9126, 9126, 14384, 19289, 16770, 17159, 8341, 7695, 0, 8114, 15222, 19834, 17882, 5070, 19499, 20344, 12168, 16358, 16258, 14212, 12168, 14003 ], - "publishLatencyAvg" : [ 200.8307875735973, 212.2523988591798, 216.96226524310458, 209.89549701049256, 197.32040940160633, 212.88482208218255, 206.02719017992922, 211.3084060661007, 217.11350559175736, 204.27610391042163, 202.6283355443395, 209.2924530076925, 208.05961331008993, 203.68530206338528, 204.5008544037709, 204.36952582203105, 217.5246876652774, 205.53499770549155, 209.2690669233994, 210.0604806704236, 204.01512210383248, 208.5134704718982, 207.5219502280524, 218.1966503963, 209.4208208451401, 216.4719512574189, 213.2155369873975, 201.31145988833075, 202.06993740161872, 214.08000156710338, 201.19853895013472, 212.44159199106232, 206.2800881454427, 209.19719981634103, 207.69157924566196, 216.31067129899736, 201.25699752231822, 209.85305236584867, 209.1236036095171, 203.75118675553486, 213.40826254554733, 214.41380739437025, 211.2485461582808, 209.55328019358544, 210.58409676317189, 204.641971431705, 211.13815707968917, 209.52518748026418, 212.71595387478817, 207.4393901164941, 206.95455366215543, 212.0557541170544, 217.45741729556113, 204.84120434165993, 212.09686905755936, 202.05547406485184, 211.62161715988165, 208.91039497867519, 204.91198124436931, 207.53654489811552 ], - "publishLatency50pct" : [ 79.243, 87.369, 61.062, 60.338, 73.751, 67.575, 92.161, 65.861, 53.635, 61.815, 77.622, 61.916, 65.674, 65.923, 82.5, 98.904, 62.209, 97.771, 77.356, 86.164, 51.305, 66.196, 80.292, 74.748, 59.895, 83.842, 50.588, 87.325, 79.455, 95.768, 71.046, 78.505, 75.421, 59.305, 55.95, 55.753, 61.637, 63.806, 81.151, 70.7, 70.232, 55.529, 67.339, 59.977, 63.584, 83.545, 61.235, 71.095, 48.909, 57.761, 61.279, 54.334, 64.802, 59.153, 71.543, 78.41, 58.514, 56.596, 73.017, 72.927 ], - "publishLatency75pct" : [ 228.832, 257.338, 243.494, 233.007, 238.349, 248.058, 248.484, 241.718, 228.977, 235.731, 248.15, 224.468, 242.657, 230.43, 245.814, 262.005, 242.805, 261.309, 258.32, 269.427, 231.088, 234.559, 267.977, 271.859, 247.75, 270.661, 234.302, 255.437, 246.955, 278.241, 252.098, 252.501, 256.687, 244.799, 233.792, 243.145, 240.223, 235.673, 269.379, 246.971, 231.879, 253.254, 242.965, 240.488, 238.183, 243.171, 248.969, 263.891, 220.242, 223.881, 223.934, 247.78, 257.825, 222.353, 261.34, 252.558, 238.994, 225.751, 238.841, 241.557 ], - "publishLatency95pct" : [ 816.215, 865.243, 978.619, 951.079, 818.303, 896.371, 817.131, 936.371, 1013.999, 875.439, 836.811, 929.739, 882.587, 892.291, 811.139, 761.647, 928.175, 760.807, 831.987, 807.487, 912.259, 906.411, 822.163, 914.639, 911.723, 851.711, 972.611, 768.547, 810.603, 800.995, 820.675, 889.495, 858.395, 894.695, 921.303, 982.243, 876.627, 864.759, 816.739, 851.027, 932.219, 945.979, 892.739, 910.239, 917.439, 850.443, 940.263, 841.187, 947.655, 928.471, 924.211, 919.703, 966.871, 873.163, 858.275, 780.367, 938.543, 946.675, 846.707, 870.391 ], - "publishLatency99pct" : [ 1452.639, 1465.127, 1647.039, 1617.367, 1327.263, 1636.535, 1378.623, 1555.351, 1734.663, 1476.799, 1315.159, 1716.303, 1507.775, 1551.519, 1391.031, 1223.807, 1630.055, 1241.159, 1523.263, 1408.743, 1576.071, 1562.943, 1328.151, 1483.655, 1561.399, 1553.751, 1711.943, 1279.935, 1467.423, 1371.135, 1304.087, 1523.775, 1372.055, 1472.327, 1675.159, 1618.511, 1437.679, 1642.143, 1431.807, 1406.391, 1609.087, 1633.679, 1608.367, 1578.327, 1600.175, 1457.759, 1584.943, 1571.639, 1821.127, 1623.223, 1574.167, 1601.895, 1613.263, 1612.239, 1552.999, 1371.103, 1663.343, 1559.239, 1494.471, 1470.623 ], - "publishLatency999pct" : [ 2569.935, 2078.431, 2647.503, 2631.791, 1930.119, 2655.007, 2071.207, 2018.535, 2348.159, 2381.071, 2161.839, 2427.215, 2725.087, 2192.175, 2157.455, 1862.639, 2908.111, 1974.815, 2574.975, 2132.927, 2428.431, 2889.871, 1935.287, 2214.143, 2449.823, 2371.887, 2536.495, 1958.815, 2553.247, 2232.607, 2091.983, 2776.575, 2160.735, 2459.439, 2674.799, 3277.551, 2254.095, 4231.679, 2209.983, 2148.655, 2260.431, 2460.207, 2365.391, 2970.447, 2555.711, 2186.479, 2219.935, 2431.151, 3665.343, 2581.279, 3452.447, 2328.591, 2350.239, 3026.303, 2354.703, 2063.783, 2504.431, 2768.879, 2463.503, 2894.159 ], - "publishLatency9999pct" : [ 3287.759, 2453.391, 3069.871, 3531.231, 2650.767, 3147.087, 2607.599, 2247.055, 2572.911, 3128.111, 2648.207, 2850.671, 3144.207, 2671.247, 2892.687, 2043.727, 3803.951, 2644.015, 3799.167, 3823.983, 2930.591, 3037.199, 2302.783, 2831.631, 2931.343, 3351.951, 3899.535, 2260.031, 3663.903, 2452.735, 2287.183, 3696.415, 2621.471, 3745.855, 2989.423, 4347.359, 2981.103, 4854.463, 2962.559, 2948.751, 2553.823, 3093.343, 3304.239, 3984.207, 2969.999, 2555.647, 2875.023, 3803.535, 4743.871, 3096.111, 3791.247, 2902.015, 3010.127, 3872.511, 2747.679, 2698.319, 2973.711, 4252.159, 4570.367, 3422.319 ], - "publishLatencyMax" : [ 3300.095, 2461.695, 3070.303, 3534.911, 2661.359, 3151.103, 2607.775, 2247.615, 2573.087, 3131.935, 2652.527, 2852.207, 3145.423, 2674.127, 2896.255, 2049.087, 3814.927, 2652.975, 3801.871, 3828.959, 2930.895, 3038.463, 2303.855, 2832.095, 2939.951, 3364.223, 3899.983, 2260.079, 3670.751, 2456.719, 2287.423, 3697.743, 2626.111, 3756.287, 2990.559, 4348.191, 2983.119, 4855.903, 2974.159, 2950.431, 2563.903, 3096.703, 3304.495, 3989.727, 2972.591, 2560.959, 2881.823, 3814.271, 4747.135, 3105.727, 3791.583, 2903.535, 3014.847, 3884.255, 2747.855, 2699.631, 2980.191, 4254.463, 4572.543, 3431.215 ], - "aggregatedPublishLatencyAvg" : 208.69401181584394, - "aggregatedPublishLatency50pct" : 69.41, - "aggregatedPublishLatency75pct" : 246.057, - "aggregatedPublishLatency95pct" : 879.299, - "aggregatedPublishLatency99pct" : 1521.927, - "aggregatedPublishLatency999pct" : 2470.063, - "aggregatedPublishLatency9999pct" : 3698.575, - "aggregatedPublishLatencyMax" : 4855.903, - "aggregatedPublishLatencyQuantiles" : { - "5.315977262959225E-7" : 0.726, - "0.5013593844287578" : 12.817, - "1.002309970205994" : 13.085, - "1.502997415108714" : 13.268, - "2.0023314122002844" : 13.42, - "2.5009203750784508" : 13.554, - "3.001653005787906" : 13.677, - "3.5023728781519297" : 13.796, - "4.003046767312629" : 13.916, - "4.501087918733847" : 14.038, - "5.0020866141053135" : 14.165, - "5.5023192771531875" : 14.297, - "6.002338503713953" : 14.436, - "6.502495945683556" : 14.592, - "7.0002011273417555" : 14.777, - "7.501061341505522" : 14.993, - "8.001105021561697" : 15.253, - "8.50122365689728" : 15.565, - "9.00093748056429" : 15.968, - "9.500392947736318" : 16.482, - "10.000062914590908" : 17.063, - "10.500012767648391" : 17.737, - "11.000538606842317" : 18.453, - "11.500409783436309" : 19.166, - "12.000051309812543" : 19.854, - "12.500694100506253" : 20.525, - "13.000361675171074" : 21.131, - "13.5004821710987" : 21.58, - "14.00064280265466" : 21.913, - "14.500849151615082" : 22.19, - "15.000191920069136" : 22.44, - "15.500910463438844" : 22.671, - "16.00243942754229" : 22.879, - "16.50131917437674" : 23.076, - "17.001573898730257" : 23.272, - "17.50202185885728" : 23.458, - "18.00235818346178" : 23.64, - "18.50259297290056" : 23.823, - "19.001579570877997" : 24.009, - "19.50161049258874" : 24.2, - "20.001467847641848" : 24.396, - "20.5002566912651" : 24.597, - "21.00077748028063" : 24.804, - "21.50173364783399" : 25.025, - "22.00117662245945" : 25.261, - "22.501502049310563" : 25.516, - "23.00105187507901" : 25.79, - "23.500275565642376" : 26.079, - "24.001395465295435" : 26.378, - "24.500943962069567" : 26.688, - "25.000426274926774" : 27.016, - "25.501128604565828" : 27.369, - "26.001218002026466" : 27.73, - "26.500382153644484" : 28.108, - "27.000583984024235" : 28.509, - "27.50055510099077" : 28.929, - "28.000031300474124" : 29.352, - "28.500639537315624" : 29.793, - "29.000445593188147" : 30.259, - "29.50005575529853" : 30.729, - "30.000653625984366" : 31.218, - "30.500346185742323" : 31.726, - "31.00043212781774" : 32.235, - "31.5003208471367" : 32.765, - "32.00085439449766" : 33.308, - "32.50041751020926" : 33.857, - "33.00008402167863" : 34.394, - "33.50083127132556" : 34.934, - "34.00028540950327" : 35.454, - "34.50022223841646" : 35.991, - "35.00013248744334" : 36.545, - "35.50017590170065" : 37.122, - "36.000843677487495" : 37.714, - "36.50050115179552" : 38.36, - "37.0003356481464" : 39.08, - "37.50021506450514" : 39.848, - "38.00051311407335" : 40.628, - "38.50005044729523" : 41.503, - "39.00039129048041" : 42.422, - "39.50037197620602" : 43.387, - "40.000190790423964" : 44.388, - "40.500473423658114" : 45.393, - "41.00032705752714" : 46.365, - "41.500006061543075" : 47.324, - "42.000388103552034" : 48.289, - "42.50045543970703" : 49.284, - "43.000026795183395" : 50.306, - "43.500044692749846" : 51.362, - "44.000078006650355" : 52.434, - "44.50036462686745" : 53.68, - "45.00022012132852" : 54.932, - "45.500038138149876" : 56.262, - "46.00024847409325" : 57.582, - "46.50029720432782" : 58.938, - "47.00006844054927" : 60.3, - "47.500281966079" : 61.666, - "48.00001572466074" : 63.047, - "48.5002701832154" : 64.531, - "49.000195051179745" : 66.064, - "49.50031182592328" : 67.71, - "50.00017901553433" : 69.41, - "50.250135469042085" : 70.255, - "50.50008660657257" : 71.102, - "50.75011562316997" : 71.938, - "51.00013161562306" : 72.822, - "51.25022601874079" : 73.648, - "51.50016439792585" : 74.525, - "51.750151152504" : 75.446, - "52.00014455205373" : 76.342, - "52.25000584956848" : 77.193, - "52.50011646641686" : 78.131, - "52.750227614862965" : 79.023, - "53.00015828588099" : 80.008, - "53.25003074694799" : 80.95, - "53.50009591219077" : 81.979, - "53.75020121306189" : 82.993, - "54.00009095105499" : 84.02, - "54.250155850498906" : 85.041, - "54.500134631111166" : 86.075, - "54.75010703255071" : 87.081, - "55.00010521647998" : 88.185, - "55.250080541707014" : 89.208, - "55.50006676468744" : 90.31, - "55.75000195428614" : 91.394, - "56.000183805229845" : 92.571, - "56.25008656736724" : 93.769, - "56.50008315650333" : 94.899, - "56.75008160623146" : 96.047, - "57.0000922827073" : 97.19, - "57.25001338496625" : 98.391, - "57.50009449814082" : 99.6, - "57.750062646798554" : 100.872, - "58.000075449665296" : 102.061, - "58.250135564729675" : 103.346, - "58.50015660736117" : 104.733, - "58.750090202166696" : 105.992, - "59.000074830353945" : 107.377, - "59.250168701873946" : 108.733, - "59.50016688580321" : 110.214, - "59.75013343966776" : 111.572, - "60.00011248607888" : 112.973, - "60.2501550584183" : 114.419, - "60.5001053985522" : 115.849, - "60.75006796543381" : 117.333, - "61.0000486066381" : 118.814, - "61.25007044666619" : 120.302, - "61.50002716597281" : 121.711, - "61.75015665454047" : 123.228, - "62.00010938686414" : 124.832, - "62.25008152250482" : 126.472, - "62.50007306146251" : 128.063, - "62.75004227331569" : 129.793, - "63.00007049251649" : 131.428, - "63.25004581774353" : 133.206, - "63.50000546083764" : 134.921, - "63.75007275247133" : 136.592, - "64.00006987320515" : 138.273, - "64.25009729500935" : 140.034, - "64.500112224267" : 141.727, - "64.7500048860476" : 143.621, - "65.0000057279655" : 145.538, - "65.25015329085586" : 147.419, - "65.50007120352845" : 149.323, - "65.7500911829645" : 151.301, - "66.00001308262004" : 153.263, - "66.25002588548678" : 155.164, - "66.5001030116784" : 157.142, - "66.75001135559194" : 159.167, - "67.00000076815871" : 161.321, - "67.25006327541287" : 163.405, - "67.50008750763072" : 165.561, - "67.7500588458748" : 167.755, - "68.00004506885523" : 170.006, - "68.25003341822656" : 172.234, - "68.50001565422404" : 174.407, - "68.7500600871555" : 176.688, - "69.00001813545643" : 179.074, - "69.25010376721167" : 181.536, - "69.50004772817286" : 183.907, - "69.75010571684633" : 186.288, - "70.00007625769383" : 188.686, - "70.25005902528905" : 191.239, - "70.50003169252744" : 193.69, - "70.75001206793289" : 196.35, - "71.00007218299727" : 199.021, - "71.2500647851504" : 201.669, - "71.500083701391" : 204.381, - "71.75001862519083" : 206.988, - "72.00004551539733" : 209.698, - "72.25003226997548" : 212.511, - "72.5000639445615" : 215.381, - "72.75006319168622" : 218.115, - "73.00003213774055" : 221.133, - "73.25002500569255" : 224.099, - "73.50007794418762" : 227.179, - "73.75005061142603" : 230.139, - "74.00005783251665" : 233.172, - "74.25005787703795" : 236.358, - "74.50000555918322" : 239.446, - "74.75001384346929" : 242.707, - "75.00002558314058" : 246.057, - "75.1250738478949" : 247.75, - "75.25001871689145" : 249.563, - "75.3750162140629" : 251.48, - "75.5000386963275" : 253.315, - "75.62505506521823" : 255.092, - "75.75004910700446" : 256.777, - "75.87504607257819" : 258.523, - "76.00004383554851" : 260.377, - "76.12510220065963" : 262.183, - "76.25000693402784" : 263.955, - "76.3750065575902" : 265.737, - "76.50004870897067" : 267.565, - "76.62502308164103" : 269.541, - "76.75009420509757" : 271.295, - "76.87502604994984" : 272.935, - "77.00008175707231" : 274.965, - "77.12512922443004" : 276.839, - "77.25009987591632" : 278.623, - "77.37511172622638" : 280.435, - "77.50005500042975" : 282.233, - "77.62507828009093" : 284.215, - "77.75011803928163" : 286.253, - "77.87511952343604" : 288.259, - "78.00001043526336" : 290.123, - "78.1250701293688" : 291.889, - "78.25001552996308" : 293.799, - "78.3750457203947" : 295.723, - "78.50009425094788" : 297.861, - "78.6250882927341" : 299.987, - "78.75005788102493" : 302.091, - "78.87502800091349" : 304.113, - "79.00006669690873" : 306.179, - "79.12502538744617" : 308.363, - "79.25003989574486" : 310.539, - "79.37508443931509" : 312.905, - "79.50000963919577" : 315.353, - "79.62509484999207" : 317.633, - "79.75009553674988" : 319.793, - "79.87509383131793" : 322.027, - "80.0000674065917" : 324.113, - "80.12500217523144" : 326.495, - "80.2500653247221" : 328.851, - "80.37505325313448" : 331.289, - "80.50006457184682" : 333.705, - "80.62504612108648" : 336.191, - "80.75001384878527" : 338.599, - "80.87501745933058" : 341.211, - "81.00008114041896" : 343.459, - "81.12505790527908" : 346.129, - "81.25002297498924" : 348.673, - "81.37512094413096" : 351.101, - "81.50001664033783" : 353.603, - "81.62504869136148" : 356.169, - "81.75001801385345" : 358.661, - "81.87504102771577" : 361.181, - "82.00006271258377" : 363.727, - "82.12503974324277" : 366.203, - "82.2500056103495" : 368.809, - "82.37503340859136" : 371.333, - "82.50001761581966" : 373.991, - "82.62508927087393" : 376.743, - "82.75007613609085" : 379.427, - "82.87506592509529" : 382.011, - "83.00008255978489" : 384.599, - "83.12505772985183" : 387.315, - "83.25000153565293" : 390.353, - "83.37502853649819" : 393.225, - "83.50000902254241" : 395.873, - "83.6250293784161" : 398.719, - "83.750008535466" : 401.519, - "83.87509321466456" : 404.567, - "84.00003542567248" : 407.517, - "84.12505950273025" : 410.661, - "84.25002563563585" : 413.669, - "84.37507788737312" : 416.813, - "84.50004880465826" : 420.183, - "84.62504045425472" : 423.311, - "84.75000525816601" : 426.955, - "84.87502720883288" : 430.151, - "85.00006351263835" : 433.381, - "85.12502246897465" : 436.935, - "85.25005133041195" : 440.321, - "85.37501374213348" : 443.861, - "85.50009629494113" : 447.073, - "85.62502202641954" : 450.549, - "85.75000623364784" : 453.929, - "85.87504997982148" : 457.639, - "86.00002382089411" : 461.121, - "86.12501706528376" : 464.411, - "86.2500204100302" : 468.197, - "86.37501259122439" : 471.915, - "86.50004490804692" : 475.585, - "86.62505436616722" : 479.231, - "86.75000853812398" : 482.937, - "86.87503607056698" : 486.681, - "87.00002346738162" : 490.491, - "87.12500687721334" : 494.287, - "87.25003972563358" : 498.169, - "87.37502526185621" : 502.127, - "87.50005624968442" : 506.085, - "87.56250276879354" : 508.203, - "87.62504072271157" : 510.113, - "87.68754013579446" : 511.953, - "87.75000127384105" : 513.751, - "87.81257351581245" : 515.779, - "87.8750420962272" : 517.607, - "87.9375587862362" : 519.593, - "88.00000557114417" : 521.705, - "88.06251853996908" : 523.751, - "88.12508520016434" : 525.775, - "88.18754314862457" : 527.855, - "88.2501180485846" : 529.855, - "88.31250449715064" : 531.835, - "88.37506079119024" : 533.999, - "88.43750518390846" : 536.223, - "88.5001433439979" : 538.359, - "88.56261591139561" : 540.315, - "88.62511266648987" : 542.335, - "88.68761261117048" : 544.387, - "88.75005195371028" : 546.451, - "88.8126167533135" : 548.795, - "88.87509064970553" : 551.391, - "88.9376038843293" : 553.531, - "89.00006635137021" : 555.835, - "89.06258197818374" : 558.127, - "89.12501892853379" : 560.471, - "89.18755900884274" : 562.855, - "89.25005470074154" : 565.099, - "89.31253683689832" : 567.367, - "89.37502083364714" : 569.783, - "89.43752317051752" : 572.395, - "89.50006936420033" : 574.751, - "89.56259615456611" : 577.051, - "89.62508148030925" : 579.563, - "89.68759551232961" : 582.167, - "89.75005478978416" : 584.499, - "89.8126209183817" : 587.011, - "89.87504962896698" : 589.803, - "89.937574027143" : 592.451, - "90.0000423417589" : 595.079, - "90.06252926229521" : 597.495, - "90.12501724602699" : 599.891, - "90.18752197508714" : 602.315, - "90.25006152379835" : 605.147, - "90.31252026965518" : 607.731, - "90.37502632770965" : 610.503, - "90.43755923144928" : 612.999, - "90.50003738062311" : 615.891, - "90.56253652790714" : 618.723, - "90.62505295211727" : 621.583, - "90.68752817750361" : 624.459, - "90.75005868905347" : 627.259, - "90.8125535835557" : 630.099, - "90.87504395947722" : 632.831, - "90.93764490772584" : 635.827, - "91.00002816670553" : 638.639, - "91.06252890878272" : 641.527, - "91.12508600021891" : 644.307, - "91.18754208808711" : 647.547, - "91.25004681714726" : 650.287, - "91.31258583426076" : 653.483, - "91.37503766934714" : 656.147, - "91.43755249876408" : 659.143, - "91.50001895278794" : 662.131, - "91.5625574383037" : 665.083, - "91.625081304882" : 667.959, - "91.68750018090935" : 671.023, - "91.75003919802285" : 674.107, - "91.81250246246034" : 677.451, - "91.87501383649207" : 680.731, - "91.93757597810666" : 684.175, - "92.0001434356985" : 687.347, - "92.06257081728948" : 690.459, - "92.12506092741215" : 693.531, - "92.18752073646444" : 696.675, - "92.25003503428366" : 700.023, - "92.31250520949159" : 703.671, - "92.37502562068467" : 706.791, - "92.43751360441644" : 710.171, - "92.50000344874024" : 713.835, - "92.56253023910604" : 717.131, - "92.62504187893663" : 720.579, - "92.68754155781838" : 723.859, - "92.75001678320471" : 727.227, - "92.81253001782848" : 730.791, - "92.87500577481255" : 734.287, - "92.93755462648399" : 737.803, - "93.0000112459499" : 741.491, - "93.06250853264189" : 744.727, - "93.12503425981221" : 748.703, - "93.18752516733149" : 752.327, - "93.25008385356085" : 756.339, - "93.31257183729262" : 759.875, - "93.37501383782106" : 763.399, - "93.43750899812214" : 767.603, - "93.50002754872317" : 771.447, - "93.56253413837536" : 775.427, - "93.6250388674355" : 779.299, - "93.68750665045368" : 783.599, - "93.75005151514216" : 787.739, - "93.78126400984277" : 789.635, - "93.81251026099899" : 791.719, - "93.84379345819718" : 793.755, - "93.8750375829625" : 796.111, - "93.90628755530281" : 798.419, - "93.93755693096013" : 800.479, - "93.96877527323572" : 802.735, - "94.00003773812259" : 804.811, - "94.03127016773793" : 806.947, - "94.06256452848838" : 808.943, - "94.09379084472987" : 810.819, - "94.12501822416681" : 813.183, - "94.15625995674235" : 815.135, - "94.18758009998253" : 817.107, - "94.21876681219341" : 818.855, - "94.25004044063253" : 821.331, - "94.28126782006947" : 823.487, - "94.3125385247211" : 825.679, - "94.34377520711826" : 827.795, - "94.37501561069948" : 830.047, - "94.40628099937385" : 832.187, - "94.43751077100056" : 834.219, - "94.46879529719307" : 836.731, - "94.50006068586744" : 838.707, - "94.53130986081116" : 840.995, - "94.56254282202423" : 843.067, - "94.59378854158271" : 845.495, - "94.62500449166853" : 848.047, - "94.65626323537133" : 850.383, - "94.68750204415939" : 852.691, - "94.71876769863262" : 855.095, - "94.75008093110235" : 857.783, - "94.78126870650868" : 860.011, - "94.81253622157395" : 862.779, - "94.84376386680975" : 865.551, - "94.87504706400796" : 868.327, - "94.90628401220397" : 871.131, - "94.93751404962953" : 873.735, - "94.96875870599257" : 876.439, - "95.00001027312607" : 879.299, - "95.03126130866183" : 881.791, - "95.06250915461122" : 884.071, - "95.09380059157418" : 886.871, - "95.12501733905658" : 889.963, - "95.15627182997757" : 892.519, - "95.18751170196107" : 895.095, - "95.21877496424453" : 897.683, - "95.25002918936666" : 900.407, - "95.28127251673538" : 903.427, - "95.31251850209274" : 905.951, - "95.34379532011822" : 908.871, - "95.37503598949831" : 911.855, - "95.4062984543852" : 914.207, - "95.43752423902895" : 916.987, - "95.46876650320223" : 919.847, - "95.50006750892426" : 922.747, - "95.53125422113513" : 925.091, - "95.5625116358436" : 927.499, - "95.59377356913275" : 930.447, - "95.62500254336287" : 933.631, - "95.65628680375653" : 936.803, - "95.68755617941385" : 939.511, - "95.71876840831558" : 942.323, - "95.75002289923655" : 945.611, - "95.7812502786735" : 948.367, - "95.81253799445237" : 951.355, - "95.84378663779836" : 954.491, - "95.87501561202848" : 957.947, - "95.90628073490399" : 961.351, - "95.93750146936934" : 964.635, - "95.9687583524801" : 967.655, - "96.00004128387943" : 970.687, - "96.03126999231068" : 974.259, - "96.06252155944416" : 977.383, - "96.09377525296856" : 980.651, - "96.12501671974523" : 983.995, - "96.15626722368327" : 987.655, - "96.18752809377696" : 990.895, - "96.2187987984286" : 993.779, - "96.25003840461324" : 997.231, - "96.28130352748875" : 999.983, - "96.31253462810977" : 1003.507, - "96.34376147594898" : 1007.459, - "96.37504387575059" : 1010.811, - "96.40628906371136" : 1014.171, - "96.43752627770623" : 1017.635, - "96.46875073335568" : 1021.039, - "96.50004535990499" : 1024.739, - "96.53128602928508" : 1028.215, - "96.56254291239583" : 1031.971, - "96.59376178626916" : 1035.707, - "96.6250194667765" : 1039.503, - "96.65630239817582" : 1042.839, - "96.68751914565824" : 1046.311, - "96.71876911799855" : 1049.911, - "96.75004965720811" : 1052.775, - "96.78126321510416" : 1057.383, - "96.81250175809336" : 1061.943, - "96.84380382701084" : 1065.663, - "96.87505433094887" : 1069.471, - "96.89063200492139" : 1071.615, - "96.90625566209722" : 1073.639, - "96.92192317608547" : 1075.535, - "96.93751573479433" : 1077.567, - "96.9531593268849" : 1079.879, - "96.96877580749143" : 1081.935, - "96.98438298513776" : 1084.007, - "97.00004970172942" : 1086.351, - "97.01563109688601" : 1088.727, - "97.03125209607322" : 1090.991, - "97.04690632011832" : 1093.151, - "97.06250685279306" : 1096.159, - "97.07815735565408" : 1098.519, - "97.0937826076231" : 1100.551, - "97.10941104917848" : 1102.919, - "97.12502434019865" : 1105.255, - "97.14063497323019" : 1107.111, - "97.15627856532076" : 1109.527, - "97.17188733776027" : 1111.807, - "97.18752694286789" : 1113.895, - "97.2031349179108" : 1116.503, - "97.218787015565" : 1118.663, - "97.23441147013742" : 1120.471, - "97.25000323144968" : 1122.935, - "97.2656710112368" : 1125.511, - "97.28125320378999" : 1127.575, - "97.29690423824873" : 1130.167, - "97.31253879317795" : 1132.423, - "97.32814676822086" : 1134.487, - "97.34376112243649" : 1137.407, - "97.35940311973388" : 1139.159, - "97.3750392694563" : 1142.079, - "97.39064192852194" : 1144.535, - "97.40625282735235" : 1146.839, - "97.42188339529862" : 1149.479, - "97.43752379780284" : 1152.407, - "97.45313257024235" : 1155.063, - "97.46875224043524" : 1157.663, - "97.48445696626433" : 1160.759, - "97.50001124993689" : 1163.191, - "97.51562613575024" : 1165.591, - "97.53128913115782" : 1168.575, - "97.54688328465984" : 1171.143, - "97.5625032206516" : 1173.791, - "97.5781616974785" : 1176.511, - "97.59376754613052" : 1179.655, - "97.6094124672154" : 1182.287, - "97.62505393291508" : 1184.607, - "97.64064782061824" : 1187.255, - "97.65627440158157" : 1189.735, - "97.67187520005517" : 1192.463, - "97.68754271404343" : 1194.591, - "97.70313075417161" : 1196.879, - "97.71880411573486" : 1198.943, - "97.73437647373011" : 1201.967, - "97.75001102865933" : 1204.359, - "97.76562910405904" : 1207.455, - "97.78130060503024" : 1210.951, - "97.7968822659857" : 1213.895, - "97.81250858115017" : 1216.599, - "97.82814871785553" : 1219.823, - "97.8438651388346" : 1223.111, - "97.85941091694353" : 1226.391, - "97.87503351092391" : 1229.143, - "97.89063430939753" : 1231.623, - "97.90625823237222" : 1234.559, - "97.92188401593897" : 1237.359, - "97.93752601323636" : 1240.527, - "97.95313930425654" : 1243.887, - "97.9687634930301" : 1246.759, - "97.98439113718888" : 1250.047, - "98.00000150442156" : 1253.175, - "98.01568151095638" : 1256.263, - "98.031326963639" : 1259.511, - "98.0468932082604" : 1261.975, - "98.06250968886694" : 1265.687, - "98.07814424379616" : 1268.207, - "98.09376577458109" : 1271.215, - "98.10940405069441" : 1273.887, - "98.1250258472782" : 1277.535, - "98.14063887249951" : 1280.559, - "98.15625827689354" : 1284.399, - "98.171915690525" : 1287.855, - "98.18752605775768" : 1290.879, - "98.20313483019717" : 1293.943, - "98.21878320666728" : 1297.503, - "98.23438054975567" : 1300.879, - "98.25003211581213" : 1304.383, - "98.26564886221753" : 1307.655, - "98.2812882015263" : 1310.879, - "98.2969222248578" : 1314.623, - "98.31251212557801" : 1318.367, - "98.32815518607086" : 1321.383, - "98.34379346218417" : 1325.015, - "98.3594474204304" : 1328.263, - "98.37501260185635" : 1332.391, - "98.39062855086516" : 1336.311, - "98.40629340686478" : 1340.063, - "98.42188862356227" : 1344.639, - "98.43753460784261" : 1348.119, - "98.44541846792244" : 1349.447, - "98.4531383301037" : 1351.767, - "98.4609467033064" : 1354.063, - "98.46875135532501" : 1356.095, - "98.47657514486177" : 1358.295, - "98.48437660729404" : 1360.063, - "98.49219375185922" : 1362.399, - "98.50002657855732" : 1364.903, - "98.50784212832933" : 1367.263, - "98.51566485467063" : 1369.111, - "98.52345409035519" : 1371.207, - "98.53126458994879" : 1373.247, - "98.53907296315148" : 1375.223, - "98.54688426014168" : 1377.327, - "98.55468917795915" : 1379.735, - "98.56253742099132" : 1381.775, - "98.57035642614855" : 1383.447, - "98.57814326964333" : 1385.807, - "98.58593915029945" : 1387.935, - "98.59377995096347" : 1390.559, - "98.60156945244687" : 1392.447, - "98.60937995204047" : 1395.271, - "98.61719098323181" : 1397.775, - "98.62501105158448" : 1399.623, - "98.63283085413829" : 1401.983, - "98.64064932769779" : 1404.303, - "98.64846673806184" : 1406.135, - "98.65625065776912" : 1408.559, - "98.66410235618652" : 1410.959, - "98.67187936512336" : 1413.839, - "98.67970049667149" : 1415.807, - "98.68752986798438" : 1418.247, - "98.69532601443937" : 1420.167, - "98.70313943782047" : 1423.119, - "98.71094222924704" : 1425.759, - "98.71877904292809" : 1428.511, - "98.72661373021825" : 1430.831, - "98.73438409418351" : 1432.839, - "98.74219592277143" : 1435.383, - "98.7500037643764" : 1437.415, - "98.75781771935522" : 1439.695, - "98.76568058132487" : 1441.783, - "98.77343792114584" : 1444.223, - "98.78125320511897" : 1447.999, - "98.78907805785119" : 1450.503, - "98.79688244407095" : 1452.687, - "98.80469320946341" : 1455.695, - "98.8125196569888" : 1458.295, - "98.82031819563356" : 1461.543, - "98.8281356059976" : 1463.735, - "98.83595780074118" : 1465.679, - "98.8437919564336" : 1467.815, - "98.85157853412953" : 1469.687, - "98.85939036271745" : 1472.255, - "98.86723647935871" : 1474.719, - "98.87502225965804" : 1477.119, - "98.88283727783232" : 1479.279, - "98.89064325884524" : 1481.727, - "98.89845269524339" : 1484.047, - "98.90626186584268" : 1486.631, - "98.91406598626358" : 1489.823, - "98.92190519213439" : 1492.839, - "98.92970000959507" : 1494.791, - "98.93750040883188" : 1497.263, - "98.94532074298341" : 1500.335, - "98.95314612731336" : 1504.367, - "98.96095077933197" : 1507.239, - "98.96876845549488" : 1509.031, - "98.97657815769189" : 1511.999, - "98.98440699740705" : 1515.351, - "98.99219463829843" : 1518.343, - "99.00000061931135" : 1521.927, - "99.00782600364128" : 1524.575, - "99.01564660359169" : 1527.463, - "99.02345550839212" : 1531.319, - "99.0312545786346" : 1533.871, - "99.03909245551111" : 1537.199, - "99.0468792990059" : 1540.951, - "99.05468767220859" : 1544.303, - "99.06251916991238" : 1548.479, - "99.0703137215742" : 1551.535, - "99.0781351189212" : 1554.431, - "99.08595120029092" : 1557.839, - "99.09375797870044" : 1560.759, - "99.10157804705311" : 1563.335, - "99.10938243327287" : 1566.415, - "99.11722775251754" : 1568.871, - "99.12501991198958" : 1572.791, - "99.1328548650786" : 1576.271, - "99.14063692419384" : 1579.855, - "99.14844051301701" : 1583.663, - "99.15625526539242" : 1587.071, - "99.16406895457237" : 1590.591, - "99.17188237795348" : 1593.983, - "99.1796992567198" : 1597.895, - "99.18750071915206" : 1601.031, - "99.19533700123537" : 1603.759, - "99.20313633727673" : 1607.391, - "99.21093859710557" : 1610.935, - "99.2187583996594" : 1614.079, - "99.22267281951697" : 1615.719, - "99.22656757025867" : 1617.975, - "99.23048039532307" : 1620.023, - "99.23437567766251" : 1621.615, - "99.23830498225642" : 1623.583, - "99.24218989844019" : 1625.239, - "99.24609820492392" : 1627.663, - "99.25001608016672" : 1629.631, - "99.25393820819133" : 1632.319, - "99.25781275821944" : 1634.543, - "99.2617237226918" : 1637.047, - "99.265627244796" : 1639.151, - "99.26953262749223" : 1641.535, - "99.27347920901225" : 1642.887, - "99.27735535383353" : 1644.631, - "99.28126179972521" : 1646.759, - "99.28518073816348" : 1648.935, - "99.28906432535292" : 1651.231, - "99.2929744924287" : 1653.039, - "99.29687615394084" : 1654.647, - "99.30078180243594" : 1657.543, - "99.30469356430488" : 1659.583, - "99.30860027599545" : 1661.607, - "99.3125032665019" : 1664.679, - "99.31640811760042" : 1666.487, - "99.32031801887732" : 1669.855, - "99.32422605956218" : 1672.959, - "99.32814765598907" : 1675.311, - "99.33203257217284" : 1677.479, - "99.33595257380654" : 1679.727, - "99.33985317212324" : 1682.911, - "99.34375961801493" : 1685.695, - "99.34766553230888" : 1687.471, - "99.35157038340739" : 1689.679, - "99.35547071592522" : 1691.951, - "99.35939151495552" : 1693.847, - "99.36331231398582" : 1695.871, - "99.367190585198" : 1699.655, - "99.37110181546923" : 1703.263, - "99.37500400857911" : 1705.343, - "99.37892932619008" : 1707.159, - "99.38281876095452" : 1710.495, - "99.38672254885758" : 1712.719, - "99.39063829770947" : 1715.423, - "99.3945327826523" : 1717.831, - "99.39844002594059" : 1721.543, - "99.40235763538452" : 1723.791, - "99.40625344932168" : 1725.079, - "99.4101676033804" : 1729.823, - "99.41407378347323" : 1732.959, - "99.41796959741038" : 1735.447, - "99.4218866752566" : 1738.135, - "99.42578195759603" : 1740.311, - "99.42969106147635" : 1743.719, - "99.43359670997144" : 1747.055, - "99.43750607965062" : 1751.103, - "99.44141465193321" : 1754.127, - "99.44532428741125" : 1757.863, - "99.44922488572796" : 1760.015, - "99.45312920522873" : 1763.807, - "99.45703511952269" : 1767.695, - "99.46093837582802" : 1771.391, - "99.46484747970834" : 1776.479, - "99.46876030477274" : 1780.767, - "99.47265718190535" : 1784.495, - "99.47656734898112" : 1788.327, - "99.48047113688418" : 1790.871, - "99.4843945939031" : 1793.607, - "99.48829439482321" : 1795.663, - "99.49219419574331" : 1797.967, - "99.49609718624978" : 1800.759, - "99.50000682172782" : 1803.863, - "99.50391167282633" : 1806.999, - "99.5078138659362" : 1811.535, - "99.51173120958128" : 1814.367, - "99.51563287109343" : 1816.287, - "99.51953160881808" : 1818.767, - "99.52345187625065" : 1821.359, - "99.52735433515939" : 1825.375, - "99.53125360448178" : 1827.943, - "99.53517652990297" : 1831.687, - "99.53909148135828" : 1833.599, - "99.54298144772045" : 1836.199, - "99.5468751352667" : 1839.527, - "99.550790086722" : 1841.935, - "99.5546885586478" : 1845.631, - "99.55859925732129" : 1849.175, - "99.56250065303458" : 1852.343, - "99.56640656732854" : 1856.751, - "99.57032284777816" : 1860.551, - "99.57422371189372" : 1862.687, - "99.57812936038881" : 1867.311, - "99.58203208509642" : 1873.679, - "99.58595501051762" : 1875.975, - "99.58985614043205" : 1880.271, - "99.59376072573168" : 1884.791, - "99.59766796901997" : 1888.391, - "99.60160099479796" : 1892.071, - "99.6054811266022" : 1896.063, - "99.60939926764387" : 1898.231, - "99.61133242277553" : 1900.207, - "99.61328258903445" : 1902.935, - "99.61523647647745" : 1905.279, - "99.61719062971932" : 1906.879, - "99.61914345396687" : 1910.911, - "99.62110372058258" : 1913.703, - "99.62305229204831" : 1915.695, - "99.62500724268678" : 1918.167, - "99.6269616617275" : 1920.031, - "99.6289205993489" : 1920.879, - "99.63086013365329" : 1923.415, - "99.63281641328606" : 1924.943, - "99.63476737694157" : 1928.119, - "99.63672073278684" : 1930.775, - "99.63867594922415" : 1932.687, - "99.64065508755915" : 1935.359, - "99.64258638209878" : 1937.351, - "99.64454000374293" : 1939.007, - "99.64648591722003" : 1941.855, - "99.64843794407099" : 1945.079, - "99.65039209731286" : 1949.007, - "99.65234385836494" : 1951.607, - "99.65430864356134" : 1953.879, - "99.65625508863617" : 1955.543, - "99.65820764708486" : 1957.703, - "99.66016020553354" : 1960.415, - "99.6621244591322" : 1962.071, - "99.66406532243091" : 1964.039, - "99.66602133626482" : 1965.711, - "99.667970970926" : 1970.063, - "99.66992406097242" : 1972.119, - "99.67187821421429" : 1973.967, - "99.67383582284137" : 1975.871, - "99.67578306531279" : 1978.335, - "99.67773535796262" : 1979.863, - "99.67969881416468" : 1981.527, - "99.68165748598723" : 1983.135, - "99.68359888088365" : 1984.535, - "99.68555090773461" : 1988.111, - "99.68750240298785" : 1991.583, - "99.68945815102289" : 1993.967, - "99.6914069882875" : 1997.527, - "99.69337974744977" : 1999.407, - "99.69532220554166" : 2001.175, - "99.69726918221421" : 2004.759, - "99.6992238670538" : 2008.079, - "99.70117297011727" : 2011.735, - "99.7031425396932" : 2015.383, - "99.70507888441124" : 2017.551, - "99.70703729043491" : 2019.815, - "99.70899383586654" : 2022.727, - "99.71094506532091" : 2024.175, - "99.71289283939005" : 2028.095, - "99.71485629559213" : 2031.287, - "99.71679875368402" : 2032.799, - "99.71875609651224" : 2036.719, - "99.72071104715069" : 2040.087, - "99.72266546619142" : 2040.975, - "99.72461456925488" : 2043.999, - "99.72656314072061" : 2046.231, - "99.72851596496817" : 2048.191, - "99.73047782637707" : 2052.415, - "99.73242187926212" : 2054.103, - "99.73438055108467" : 2056.815, - "99.73633018574586" : 2060.399, - "99.73828354159113" : 2063.423, - "99.74024513720116" : 2064.855, - "99.74219424026462" : 2067.831, - "99.74414095113832" : 2071.567, - "99.74609563597791" : 2075.087, - "99.74804846022546" : 2076.383, - "99.75001191642754" : 2080.575, - "99.75196341168076" : 2087.159, - "99.75391251474423" : 2089.207, - "99.75586135200884" : 2092.815, - "99.75781284726206" : 2096.383, - "99.75977284807891" : 2099.487, - "99.76172141954466" : 2101.967, - "99.76368301515468" : 2104.799, - "99.76564381336813" : 2109.215, - "99.76758175287934" : 2112.671, - "99.76955770162797" : 2119.327, - "99.77149005936306" : 2127.487, - "99.77346335012308" : 2129.839, - "99.77540394762292" : 2132.463, - "99.77735411388184" : 2136.143, - "99.77930055895666" : 2137.551, - "99.78126374935988" : 2141.471, - "99.783203815262" : 2145.983, - "99.78517258744134" : 2150.223, - "99.78711717192412" : 2153.087, - "99.78906281960236" : 2156.159, - "99.79101989663172" : 2158.303, - "99.7929711260861" : 2161.039, - "99.79493351909272" : 2163.679, - "99.79688262215618" : 2166.783, - "99.79884129397871" : 2171.327, - "99.80079597881831" : 2175.087, - "99.80275544803743" : 2176.575, - "99.80469126115774" : 2180.463, - "99.8056688693764" : 2183.055, - "99.80668395523476" : 2188.575, - "99.80762169362394" : 2190.175, - "99.80860328882555" : 2191.583, - "99.80958754201579" : 2193.535, - "99.8105632896424" : 2199.039, - "99.81152494992928" : 2200.943, - "99.81250707672861" : 2203.023, - "99.81348122956204" : 2204.671, - "99.81446016677502" : 2206.511, - "99.81543538280391" : 2209.007, - "99.81640980143621" : 2209.887, - "99.81738847285033" : 2214.639, - "99.81836794166102" : 2217.823, - "99.81934262609218" : 2219.487, - "99.82031491833358" : 2221.983, - "99.82129119755793" : 2223.791, - "99.8222730585584" : 2224.767, - "99.82325545115658" : 2226.863, - "99.82421923783436" : 2228.623, - "99.8251955170587" : 2231.151, - "99.82617339107622" : 2233.807, - "99.82715418888124" : 2237.327, - "99.82815252941123" : 2238.159, - "99.82910249454811" : 2240.463, - "99.83008940572698" : 2243.167, - "99.83107286152062" : 2247.551, - "99.83203558500296" : 2249.471, - "99.83303897571133" : 2250.815, - "99.83399718061298" : 2252.223, - "99.83496415687712" : 2253.311, - "99.83594176509577" : 2257.295, - "99.83693080266555" : 2260.223, - "99.83790522129785" : 2264.223, - "99.83886874217676" : 2268.015, - "99.83984422400451" : 2269.391, - "99.84082050322885" : 2271.039, - "99.84180502221795" : 2273.295, - "99.8427762512639" : 2275.471, - "99.84376449143708" : 2277.871, - "99.84473412568984" : 2279.023, - "99.84570854432215" : 2284.415, - "99.84668296295445" : 2285.455, - "99.84765658419016" : 2288.079, - "99.84873998035634" : 2289.823, - "99.84961871139791" : 2294.703, - "99.85058648505864" : 2299.247, - "99.85157738322046" : 2302.767, - "99.85253984090392" : 2306.335, - "99.85353499184754" : 2309.087, - "99.85450117071508" : 2310.095, - "99.85547239976103" : 2311.263, - "99.8564484131865" : 2314.799, - "99.8574257556063" : 2319.071, - "99.85840150323291" : 2322.575, - "99.85937725085952" : 2325.663, - "99.86036389623953" : 2328.127, - "99.86132901191162" : 2332.383, - "99.86231087291209" : 2334.143, - "99.86329698669437" : 2336.751, - "99.86426662094713" : 2337.983, - "99.86523572360217" : 2339.519, - "99.86621466081515" : 2345.311, - "99.86719545862016" : 2347.039, - "99.8681927359547" : 2349.103, - "99.8691411062984" : 2350.911, - "99.87013758623635" : 2354.271, - "99.87109605693686" : 2355.567, - "99.87210875060545" : 2359.855, - "99.87306296852415" : 2363.839, - "99.87404881650757" : 2365.679, - "99.8750006422365" : 2368.127, - "99.87598489542674" : 2371.215, - "99.8769625036454" : 2375.551, - "99.87794356724928" : 2376.895, - "99.87893473120995" : 2379.215, - "99.8798886833298" : 2383.407, - "99.88086416515755" : 2384.927, - "99.88184017858303" : 2394.159, - "99.8828220395835" : 2401.487, - "99.8837906106408" : 2404.591, - "99.88476768726174" : 2410.751, - "99.88574715607244" : 2413.407, - "99.88673061186608" : 2415.695, - "99.88770051191771" : 2422.271, - "99.88867838593524" : 2427.311, - "99.88965360196413" : 2429.103, - "99.89062775479756" : 2434.527, - "99.8916090842003" : 2438.207, - "99.89258084484398" : 2443.855, - "99.8935579214649" : 2447.135, - "99.89453606128129" : 2450.591, - "99.89551074571246" : 2453.199, - "99.89651068103562" : 2457.967, - "99.8974728729202" : 2459.775, - "99.89844224137411" : 2462.511, - "99.89944456888705" : 2464.447, - "99.9003910786387" : 2472.223, - "99.90137400283463" : 2478.207, - "99.90234470028285" : 2484.879, - "99.90283589658195" : 2486.431, - "99.90332549808787" : 2489.423, - "99.90382679474376" : 2494.015, - "99.90429885352471" : 2496.015, - "99.90479403680676" : 2498.463, - "99.9052769933411" : 2501.855, - "99.90576845543906" : 2503.471, - "99.90625380416317" : 2505.471, - "99.90673915288727" : 2508.063, - "99.90723433616932" : 2510.303, - "99.90771755850253" : 2513.231, - "99.90820370462322" : 2516.943, - "99.90869676151436" : 2525.263, - "99.9091797180487" : 2527.823, - "99.90968792547504" : 2528.095, - "99.91016875561847" : 2530.719, - "99.91064453558351" : 2534.943, - "99.91113546608375" : 2535.439, - "99.9116269281817" : 2536.943, - "99.91211785868194" : 2539.071, - "99.9125992204231" : 2542.815, - "99.91308775873357" : 2546.351, - "99.91357549964744" : 2549.103, - "99.91407280932039" : 2553.167, - "99.91456560041267" : 2553.647, - "99.9150464305561" : 2555.551, - "99.9155347030677" : 2556.335, - "99.91601659640659" : 2559.775, - "99.91650805850455" : 2564.575, - "99.91704922498992" : 2569.935, - "99.91748460352775" : 2571.679, - "99.91800344290863" : 2572.831, - "99.91845875636119" : 2574.159, - "99.91895287644779" : 2574.783, - "99.91943795937303" : 2578.527, - "99.91992277649942" : 2581.407, - "99.92041397279851" : 2584.831, - "99.92090490329875" : 2588.607, - "99.92139849178761" : 2589.791, - "99.92187639814355" : 2593.551, - "99.92236546805174" : 2596.799, - "99.92291354530755" : 2598.319, - "99.92335025283971" : 2602.463, - "99.92384835990924" : 2607.743, - "99.92433158224244" : 2609.855, - "99.92481320978247" : 2613.535, - "99.92529749531113" : 2615.263, - "99.92578789421364" : 2618.639, - "99.92627244554116" : 2623.151, - "99.92676869201865" : 2624.063, - "99.92725324334617" : 2631.423, - "99.92773646567937" : 2632.959, - "99.92825663405455" : 2640.447, - "99.92872337685824" : 2642.351, - "99.92920128321418" : 2647.599, - "99.92969301111101" : 2648.815, - "99.93018367581237" : 2651.087, - "99.93066424015694" : 2654.383, - "99.93116048663444" : 2654.927, - "99.93164556955969" : 2671.247, - "99.93213862645084" : 2672.207, - "99.93261945659427" : 2674.911, - "99.93310586851382" : 2678.287, - "99.93359520422088" : 2688.159, - "99.93410580383699" : 2691.743, - "99.93457121764636" : 2695.679, - "99.93507012211249" : 2698.271, - "99.93555679983092" : 2704.847, - "99.9360408195607" : 2711.135, - "99.93653015526776" : 2724.703, - "99.93702002257254" : 2727.839, - "99.93750696608983" : 2736.303, - "99.9380005545787" : 2737.103, - "99.93848111892326" : 2741.871, - "99.93896593604966" : 2747.311, - "99.93945766394647" : 2753.167, - "99.93994301267058" : 2761.279, - "99.94043633536059" : 2766.079, - "99.94092912645286" : 2766.767, - "99.94140942499857" : 2768.495, - "99.94189557111926" : 2775.583, - "99.94238915960813" : 2778.143, - "99.9428747741311" : 2778.863, - "99.94337128640747" : 2779.231, - "99.94385052175772" : 2780.879, - "99.9443504894193" : 2784.655, - "99.94484062252295" : 2786.719, - "99.94531693408571" : 2790.719, - "99.94581185156889" : 2794.847, - "99.9462892263271" : 2803.471, - "99.9467825490171" : 2805.999, - "99.94727188472416" : 2817.743, - "99.94775430966078" : 2823.087, - "99.94824550595987" : 2826.319, - "99.94873298107488" : 2831.695, - "99.94923108814443" : 2832.959, - "99.949711652489" : 2835.359, - "99.9501977986097" : 2838.127, - "99.95069191869628" : 2851.487, - "99.95118231759879" : 2853.423, - "99.9514167521961" : 2856.271, - "99.95166660312745" : 2860.095, - "99.95190475890882" : 2862.191, - "99.95215354664474" : 2864.255, - "99.95240499236927" : 2874.959, - "99.95264314815066" : 2875.135, - "99.9528866199093" : 2877.375, - "99.95313088906452" : 2877.775, - "99.95336931064477" : 2878.271, - "99.95362208536363" : 2878.735, - "99.95386130434046" : 2882.591, - "99.95410371290365" : 2889.807, - "99.95435196904184" : 2892.063, - "99.95459331440956" : 2892.911, - "99.95484130474888" : 2893.263, - "99.95508078952459" : 2893.935, - "99.95533064045594" : 2895.919, - "99.95556666984642" : 2901.903, - "99.95581306539256" : 2905.871, - "99.95606451111709" : 2906.223, - "99.95630559068597" : 2908.447, - "99.95654959404234" : 2910.927, - "99.95679067361121" : 2920.735, - "99.95703680335849" : 2926.783, - "99.95729143866939" : 2930.639, - "99.95754926356663" : 2931.343, - "99.95776987662305" : 2932.463, - "99.95801627216919" : 2934.175, - "99.95825947812897" : 2938.351, - "99.95850427888193" : 2943.791, - "99.95875359821557" : 2944.111, - "99.95898670381854" : 2945.055, - "99.95923177037037" : 2949.023, - "99.95947763431877" : 2953.487, - "99.95974157258988" : 2962.335, - "99.95997334919855" : 2962.607, - "99.9602138971697" : 2968.015, - "99.96045391354312" : 2969.967, - "99.96069579050858" : 2970.111, - "99.96094192025586" : 2973.519, - "99.96118778420427" : 2974.159, - "99.96143763513562" : 2975.999, - "99.96167260133065" : 2977.119, - "99.96191660468702" : 2981.247, - "99.96216645561839" : 2984.655, - "99.96241418015883" : 2985.583, - "99.96265951250952" : 2985.743, - "99.96290351586589" : 2985.887, - "99.96313848206091" : 2989.359, - "99.96339205417635" : 2989.615, - "99.96362329918729" : 2996.367, - "99.9638678341414" : 2996.991, - "99.96411236909549" : 2998.767, - "99.96435982783709" : 3008.143, - "99.96460648918207" : 3008.703, - "99.96484889774527" : 3010.207, - "99.96511655720046" : 3013.503, - "99.96533849925119" : 3014.495, - "99.96557878142347" : 3016.783, - "99.9658259743662" : 3019.967, - "99.96607130671688" : 3023.247, - "99.96630919669941" : 3023.519, - "99.96656356621143" : 3026.415, - "99.96680810116554" : 3028.335, - "99.96704758594123" : 3037.375, - "99.96729531048169" : 3040.527, - "99.96755021159144" : 3044.831, - "99.96777667222284" : 3048.895, - "99.96802333356784" : 3054.591, - "99.96826414733786" : 3058.799, - "99.96850788489536" : 3065.679, - "99.96876836778125" : 3069.647, - "99.96899854959673" : 3070.271, - "99.96926169047126" : 3071.567, - "99.96948389832085" : 3072.911, - "99.96972816747608" : 3080.991, - "99.96997243663131" : 3087.935, - "99.9702169715854" : 3091.327, - "99.97046070914291" : 3093.343, - "99.97070976267769" : 3095.519, - "99.9709476526602" : 3096.063, - "99.97120840134495" : 3121.551, - "99.9714417727468" : 3125.727, - "99.97168418130998" : 3125.951, - "99.97192818466635" : 3128.383, - "99.97217059322955" : 3130.863, - "99.97241938096545" : 3137.007, - "99.97265727094796" : 3141.791, - "99.97291137466114" : 3144.239, - "99.97315511221865" : 3147.087, - "99.9733948627932" : 3153.519, - "99.97363806875299" : 3167.151, - "99.97388154051163" : 3168.223, - "99.97412527806914" : 3168.879, - "99.97437778698912" : 3169.743, - "99.97461355058074" : 3171.343, - "99.97486074352346" : 3173.471, - "99.9750978361094" : 3175.471, - "99.97534821863847" : 3202.207, - "99.97559487998348" : 3212.095, - "99.97571183148327" : 3212.367, - "99.97583835174213" : 3213.695, - "99.97596194821348" : 3213.839, - "99.9760815577019" : 3213.951, - "99.97619664860964" : 3214.143, - "99.97632290306964" : 3239.567, - "99.97644277835693" : 3239.999, - "99.97657833577713" : 3262.735, - "99.9766867817133" : 3262.879, - "99.97680692279944" : 3263.039, - "99.97693450625374" : 3275.951, - "99.9770610265126" : 3276.079, - "99.97720801328393" : 3277.311, - "99.9772983848974" : 3277.423, - "99.9774280947426" : 3287.103, - "99.9775442488458" : 3287.327, - "99.97766492152968" : 3287.663, - "99.97779037859308" : 3287.855, - "99.97791131707581" : 3290.703, - "99.97803677413923" : 3290.831, - "99.97816409179467" : 3290.991, - "99.97827811950695" : 3304.239, - "99.97840410816809" : 3304.415, - "99.97851866747811" : 3322.175, - "99.97864066915629" : 3322.399, - "99.97876692361629" : 3324.143, - "99.97888360931721" : 3324.399, - "99.97900507939767" : 3324.751, - "99.97913080225993" : 3324.975, - "99.97925306973698" : 3339.807, - "99.97937214762767" : 3339.983, - "99.97949973108199" : 3340.127, - "99.97961827737495" : 3341.023, - "99.97974878461676" : 3341.263, - "99.97986228073133" : 3351.903, - "99.97998534560496" : 3352.063, - "99.98010894207633" : 3353.551, - "99.98023253854768" : 3353.743, - "99.98034922424861" : 3393.103, - "99.98047946569154" : 3393.279, - "99.98059429080043" : 3393.391, - "99.98072532963997" : 3399.295, - "99.98084015474885" : 3399.471, - "99.98096428281794" : 3410.815, - "99.98108070271999" : 3411.071, - "99.98120562818568" : 3422.255, - "99.98132789566272" : 3422.463, - "99.98146106089315" : 3428.863, - "99.98157296221454" : 3429.039, - "99.98169310330069" : 3429.391, - "99.98181244699023" : 3429.615, - "99.98194135943886" : 3429.791, - "99.98206415851364" : 3452.287, - "99.98218616019183" : 3452.463, - "99.98230204849615" : 3453.471, - "99.98242591076638" : 3453.775, - "99.98255136782979" : 3458.815, - "99.98267336950798" : 3458.991, - "99.98279749757707" : 3467.311, - "99.98291524647344" : 3467.535, - "99.98303884294481" : 3477.535, - "99.98315659184118" : 3477.759, - "99.98328284630117" : 3477.983, - "99.98340830336458" : 3482.735, - "99.98352392587005" : 3483.055, - "99.983648319738" : 3485.103, - "99.98378706674457" : 3485.311, - "99.9839779103283" : 3487.055, - "99.98404382844636" : 3487.071, - "99.98413233946779" : 3492.191, - "99.98425354374939" : 3492.543, - "99.98437793761734" : 3495.167, - "99.9844972813069" : 3495.647, - "99.9846198145828" : 3496.175, - "99.98474181626099" : 3513.775, - "99.98486355214031" : 3514.095, - "99.98498661701394" : 3524.207, - "99.98511180827849" : 3524.559, - "99.98523673374417" : 3531.167, - "99.98535262204851" : 3531.375, - "99.98548286349144" : 3546.943, - "99.98561204173893" : 3547.087, - "99.98572287986487" : 3556.607, - "99.98584753953169" : 3556.751, - "99.98596395943375" : 3556.911, - "99.98608808750284" : 3586.207, - "99.98621062077875" : 3586.463, - "99.98632916707172" : 3606.031, - "99.9864511687499" : 3606.447, - "99.98657343622695" : 3613.967, - "99.98669889329035" : 3614.143, - "99.98683896929123" : 3616.927, - "99.9869444914399" : 3617.103, - "99.98706250613513" : 3617.263, - "99.98721215089509" : 3622.639, - "99.98730757268696" : 3622.735, - "99.98743063756059" : 3647.663, - "99.9875531708365" : 3647.871, - "99.98767384352038" : 3655.711, - "99.98780381916445" : 3655.919, - "99.98786787669047" : 3655.983, - "99.98793538960172" : 3660.815, - "99.9879765884255" : 3660.879, - "99.98804596192879" : 3660.991, - "99.98809885590255" : 3661.103, - "99.98816876100356" : 3663.775, - "99.98822484456369" : 3663.871, - "99.98829926824537" : 3663.983, - "99.98835163062141" : 3664.015, - "99.98842126992355" : 3664.095, - "99.98847894827685" : 3664.127, - "99.98852572887677" : 3664.207, - "99.98859563397778" : 3664.319, - "99.98865623611857" : 3664.415, - "99.98871577506392" : 3664.959, - "99.98877159282517" : 3665.071, - "99.98883751094324" : 3665.183, - "99.98889758148631" : 3665.279, - "99.98895765202938" : 3687.375, - "99.9890174567736" : 3687.487, - "99.98907619832235" : 3687.583, - "99.98913626886542" : 3687.711, - "99.98920085798916" : 3687.807, - "99.98926438391746" : 3689.183, - "99.9893209990753" : 3689.311, - "99.98938425920474" : 3689.487, - "99.98944167175917" : 3689.663, - "99.98950626088292" : 3696.271, - "99.98956978681122" : 3696.383, - "99.98963756552132" : 3696.431, - "99.98969311748371" : 3696.511, - "99.98975398542338" : 3696.639, - "99.98981644815622" : 3698.335, - "99.9898879480504" : 3698.431, - "99.98993419705259" : 3698.463, - "99.98999267280247" : 3698.543, - "99.99005407233987" : 3703.807, - "99.99011600347498" : 3703.999, - "99.9901750108226" : 3704.255, - "99.99023587876226" : 3704.559, - "99.99029701250079" : 3704.847, - "99.99035734884272" : 3716.383, - "99.9904317725244" : 3716.447, - "99.99048280590613" : 3716.527, - "99.99054075005829" : 3716.639, - "99.99060826296953" : 3731.471, - "99.9906640807308" : 3731.551, - "99.99072920145227" : 3731.615, - "99.99078475341466" : 3731.711, - "99.9908464187509" : 3745.679, - "99.99091419746101" : 3745.807, - "99.99097320480863" : 3745.919, - "99.99102981996649" : 3746.047, - "99.99108989050956" : 3746.127, - "99.99115075844921" : 3749.391, - "99.991217208165" : 3749.615, - "99.99127701290921" : 3749.775, - "99.99133602025682" : 3749.967, - "99.99141894950213" : 3754.255, - "99.99145509814753" : 3754.303, - "99.99151623188604" : 3754.383, - "99.99157922621661" : 3754.495, - "99.9916435495415" : 3754.575, - "99.99169936730276" : 3761.807, - "99.99176156423673" : 3761.935, - "99.9918274823548" : 3762.079, - "99.9918851607081" : 3762.191, - "99.99194602864776" : 3774.783, - "99.99203453966918" : 3774.927, - "99.99207068831457" : 3774.975, - "99.99212996146105" : 3775.023, - "99.99219667697571" : 3791.231, - "99.99229741474484" : 3791.247, - "99.99232372883229" : 3791.263, - "99.99238140718559" : 3791.343, - "99.99244546471161" : 3791.407, - "99.99249570069675" : 3799.119, - "99.99256401100457" : 3799.167, - "99.99262541054196" : 3799.247, - "99.99268388629186" : 3799.295, - "99.99274448843265" : 3803.391, - "99.99280269838368" : 3803.487, - "99.99286728750742" : 3803.583, - "99.9929252316596" : 3803.695, - "99.99298397320834" : 3803.727, - "99.99304617014232" : 3803.791, - "99.99310517748994" : 3803.951, - "99.99316843761937" : 3804.111, - "99.99322903976017" : 3804.271, - "99.99329070509641" : 3823.791, - "99.99335130723722" : 3823.935, - "99.99341084618256" : 3824.127, - "99.99347011932905" : 3824.367, - "99.99353125306757" : 3824.639, - "99.99359557639245" : 3844.479, - "99.99365617853324" : 3844.527, - "99.99372369144449" : 3844.591, - "99.99378216719438" : 3844.671, - "99.9938403771454" : 3872.415, - "99.99390363727484" : 3872.511, - "99.9939291539657" : 3872.559, - "99.99396450521449" : 3872.607, - "99.99398869291105" : 3872.671, - "99.99401872818258" : 3872.735, - "99.99406125600069" : 3872.783, - "99.9940835831052" : 3899.391, - "99.99411255518127" : 3899.439, - "99.99414524844144" : 3899.471, - "99.99417182832775" : 3899.519, - "99.99420664797883" : 3899.567, - "99.99423801224468" : 3899.647, - "99.99427123710257" : 3899.679, - "99.9942991459832" : 3899.711, - "99.99432599166838" : 3899.743, - "99.99436187451491" : 3984.159, - "99.99442540044319" : 3984.175, - "99.99444852494429" : 3984.207, - "99.994486002584" : 3984.255, - "99.99450726649304" : 3984.287, - "99.99454261774184" : 3984.319, - "99.9945761083986" : 3984.367, - "99.99460401727923" : 3984.415, - "99.99463484994736" : 4007.263, - "99.99466515101776" : 4007.311, - "99.9946943888927" : 4007.375, - "99.9947246899631" : 4007.439, - "99.99475339624033" : 4007.487, - "99.99478210251755" : 4007.551, - "99.99481639057089" : 4007.615, - "99.99484695744015" : 4007.679, - "99.99487460052192" : 4007.727, - "99.99490543319004" : 4035.759, - "99.99493972124338" : 4035.775, - "99.99499474160807" : 4035.807, - "99.99500298137282" : 4035.823, - "99.99502902966141" : 4035.871, - "99.99506570990452" : 4035.919, - "99.99509335298629" : 4035.967, - "99.9951199328726" : 4035.999, - "99.99514837335096" : 4036.047, - "99.99518585099067" : 4098.367, - "99.99520924129062" : 4098.415, - "99.99525309810303" : 4098.479, - "99.99527781739731" : 4098.511, - "99.99530811846772" : 4098.559, - "99.9953312429688" : 4098.607, - "99.99536925220623" : 4098.687, - "99.99541018523117" : 4098.735, - "99.99542560156523" : 4155.583, - "99.995453244647" : 4155.647, - "99.99549338027532" : 4155.727, - "99.99552155495482" : 4155.743, - "99.99555477981271" : 4155.791, - "99.99558481508424" : 4155.823, - "99.99560740798762" : 4155.855, - "99.99563824065574" : 4155.887, - "99.99567864208294" : 4155.935, - "99.99569884279654" : 4172.191, - "99.99573206765443" : 4172.223, - "99.9957706084896" : 4172.271, - "99.99580277015203" : 4172.303, - "99.99582961583721" : 4172.335, - "99.99585247453943" : 4172.351, - "99.99589048377688" : 4172.415, - "99.99595693349265" : 4172.431, - "99.99597314722331" : 4217.215, - "99.99601540924255" : 4217.279, - "99.99604544451408" : 4217.343, - "99.9960792009697" : 4217.407, - "99.99610019907989" : 4217.439, - "99.99612571577076" : 4217.471, - "99.99616106701956" : 4217.503, - "99.99619588667062" : 4217.567, - "99.99622007436717" : 4217.631, - "99.9962487806444" : 4231.359, - "99.99629423225" : 4231.423, - "99.99631682515336" : 4231.455, - "99.99634154444763" : 4231.487, - "99.99637795889188" : 4231.583, - "99.99641809452022" : 4231.647, - "99.9964428138145" : 4231.679, - "99.99647949405761" : 4231.711, - "99.99649597358712" : 4231.743, - "99.99652840104842" : 4251.999, - "99.9965632206995" : 4252.063, - "99.99658687679832" : 4252.127, - "99.99661505147782" : 4252.191, - "99.99664508674935" : 4252.255, - "99.99669213314813" : 4252.351, - "99.99670994167195" : 4252.383, - "99.99674316652985" : 4252.447, - "99.99676549363436" : 4252.511, - "99.99680297127405" : 4273.823, - "99.99683911991944" : 4273.887, - "99.99687792655347" : 4273.951, - "99.99690743022727" : 4274.015, - "99.99692231496361" : 4274.047, - "99.99695367922946" : 4274.111, - "99.99697228514988" : 4274.143, - "99.99698903047826" : 4274.175, - "99.99700497841005" : 4274.207, - "99.9970233185316" : 4274.239, - "99.99703501368158" : 4274.271, - "99.99705574599291" : 4274.687, - "99.9970738203156" : 4274.719, - "99.99708817345422" : 4274.751, - "99.99711741132916" : 4274.815, - "99.99714000423253" : 4274.847, - "99.99717057110179" : 4274.879, - "99.99718519003926" : 4274.911, - "99.99720539075287" : 4274.943, - "99.99722319927669" : 4274.975, - "99.99724552638119" : 4275.007, - "99.99726599289366" : 4275.039, - "99.99728619360727" : 4275.071, - "99.99730134414246" : 4275.103, - "99.99731888686743" : 4312.607, - "99.99733377160376" : 4312.639, - "99.99734971953555" : 4312.671, - "99.99736487007075" : 4312.703, - "99.99738507078435" : 4312.735, - "99.99740287930818" : 4312.767, - "99.99744647032173" : 4312.799, - "99.99747305020806" : 4312.831, - "99.99749830110005" : 4312.863, - "99.99751983080796" : 4312.895, - "99.99754960028064" : 4312.927, - "99.99757405377605" : 4312.959, - "99.99759717827715" : 4313.695, - "99.9976205685771" : 4313.727, - "99.99764475627364" : 4313.791, - "99.99765937521111" : 4313.855, - "99.99766655178043" : 4313.887, - "99.99768595509744" : 4313.919, - "99.99771253498375" : 4313.951, - "99.99772688812236" : 4314.015, - "99.9977497468246" : 4314.079, - "99.99776835274501" : 4314.111, - "99.99777579511318" : 4314.143, - "99.99779254044155" : 4314.207, - "99.99781619654037" : 4314.239, - "99.99784304222555" : 4314.271, - "99.99785367418008" : 4347.103, - "99.99786483773234" : 4347.135, - "99.99788078566412" : 4347.167, - "99.99790337856749" : 4347.231, - "99.99791640271178" : 4347.263, - "99.99793128744813" : 4347.295, - "99.9979459063856" : 4347.327, - "99.99796105692079" : 4347.359, - "99.99797487846168" : 4347.391, - "99.99798843420369" : 4347.423, - "99.9980027873423" : 4347.455, - "99.99801900107296" : 4347.487, - "99.99803707539566" : 4347.519, - "99.99805249172971" : 4347.551, - "99.99807189504672" : 4347.583, - "99.99810113292168" : 4347.615, - "99.99811309387051" : 4347.647, - "99.99813967375682" : 4444.863, - "99.99815827967724" : 4444.895, - "99.99817475920676" : 4444.927, - "99.99819044133969" : 4444.959, - "99.99820665507033" : 4444.991, - "99.99822579258849" : 4445.023, - "99.99823695614074" : 4445.055, - "99.99827097839523" : 4445.087, - "99.99828506573498" : 4445.119, - "99.99830048206903" : 4445.151, - "99.99831616420195" : 4445.183, - "99.99833184633488" : 4445.215, - "99.99836188160641" : 4445.247, - "99.99838261391774" : 4445.279, - "99.99840653581543" : 4476.639, - "99.99841716776996" : 4476.671, - "99.99843391309834" : 4476.703, - "99.99845039262784" : 4476.735, - "99.99847803570961" : 4476.767, - "99.9985099315732" : 4476.799, - "99.99852561370612" : 4476.831, - "99.99854023264359" : 4476.863, - "99.9985537883856" : 4476.895, - "99.99857159690944" : 4476.927, - "99.99859339241623" : 4476.959, - "99.99861678271618" : 4476.991, - "99.99863299644683" : 4477.023, - "99.99864947597635" : 4477.055, - "99.99865213396498" : 4477.087, - "99.99866701870131" : 4570.143, - "99.99868110604106" : 4570.175, - "99.9986938643865" : 4570.207, - "99.9987060911342" : 4570.239, - "99.99872150746826" : 4570.271, - "99.99872894983643" : 4570.303, - "99.99873931599208" : 4570.335, - "99.99875446652729" : 4570.367, - "99.99877333824658" : 4570.399, - "99.9987911467704" : 4570.431, - "99.9988012471272" : 4570.463, - "99.9988163976624" : 4570.495, - "99.99883021920328" : 4570.527, - "99.99884138275554" : 4570.559, - "99.99885919127937" : 4570.591, - "99.99887434181457" : 4570.623, - "99.99889985850542" : 4570.655, - "99.99892165401221" : 4570.687, - "99.99893095697242" : 4588.735, - "99.99894212052467" : 4588.767, - "99.99894876549625" : 4588.799, - "99.99895833425532" : 4588.831, - "99.99896949780758" : 4588.863, - "99.99897747177347" : 4588.895, - "99.99898624313596" : 4588.927, - "99.99899607769389" : 4588.991, - "99.99900272266547" : 4589.023, - "99.99901494941318" : 4589.055, - "99.99903036574723" : 4589.087, - "99.99904152929949" : 4589.119, - "99.99905428764492" : 4589.151, - "99.99906731178922" : 4589.183, - "99.99908538611191" : 4589.215, - "99.99910213144028" : 4589.247, - "99.99911302919368" : 4589.279, - "99.99913535629818" : 4589.311, - "99.99915529121292" : 4589.343, - "99.99918187109922" : 4589.375, - "99.99919117405945" : 4589.407, - "99.99919143985831" : 4597.791, - "99.99920685619237" : 4639.551, - "99.9992246647162" : 4639.583, - "99.99923848625708" : 4639.615, - "99.99925018140706" : 4639.647, - "99.99925656057978" : 4639.679, - "99.99926612933885" : 4639.711, - "99.9992751665002" : 4639.743, - "99.99928420366155" : 4639.775, - "99.99929536721379" : 4639.807, - "99.99930599916831" : 4639.839, - "99.99931131514559" : 4639.871, - "99.9993198207092" : 4639.903, - "99.99933311065236" : 4639.935, - "99.99934826118756" : 4639.967, - "99.99936394332049" : 4639.999, - "99.99937537267161" : 4640.031, - "99.99939876297157" : 4640.063, - "99.99941896368516" : 4640.095, - "99.99945085954873" : 4640.127, - "99.99946069410667" : 4640.159, - "99.99946680748053" : 4743.775, - "99.9995340545929" : 4743.807, - "99.99954893932924" : 4743.839, - "99.99958402477917" : 4743.871, - "99.99960874407344" : 4743.903, - "99.9996544614779" : 4743.935, - "99.99966562503016" : 4743.967, - "99.9997302141539" : 4743.999, - "99.9997411119073" : 4854.303, - "99.99975892043112" : 4854.335, - "99.99977885534587" : 4854.367, - "99.99979825866286" : 4854.399, - "99.99982855973327" : 4854.431, - "99.99984716565369" : 4854.463, - "99.99986125299344" : 4854.495, - "99.99987799832182" : 4854.527, - "99.99989341465587" : 4854.559, - "99.99991228637516" : 4854.591, - "99.99993248708876" : 4854.623, - "99.999949498216" : 4854.655, - "99.99998936804548" : 4854.687, - "99.99999973420114" : 4854.719, - "100.0" : 4855.903 - }, - "endToEndLatencyAvg" : [ 240.63995709609793, 241.57261763197081, 241.9287416364989, 232.92397064222789, 227.19955824000044, 238.97055635020493, 229.49854146080793, 235.8991420834069, 279.5131191077835, 226.59886164808108, 222.8290176083101, 235.77201969023426, 231.17453820771303, 227.14368178952282, 225.99301587260288, 226.6129185801007, 240.45584299944898, 227.92704287322266, 234.03306393897932, 237.77192055808965, 241.39508091130944, 231.02007799612744, 230.9017263186139, 241.43324662335314, 235.4717217218658, 245.49517748186497, 235.7162020305753, 226.18307016729608, 226.18505196960987, 240.48593258906027, 226.35220061639893, 243.24918629146686, 235.5817894722915, 230.81594212838885, 230.74065465282305, 238.3062969009266, 222.56638249382655, 232.31879087351174, 234.1536286227114, 229.86025119847235, 237.59129802615217, 237.7296147525543, 233.9854727084998, 231.76861161172863, 233.85074642944207, 243.83157716627943, 234.5647261889282, 232.66488587096046, 234.91677250400986, 229.79775566330193, 227.81829453288586, 239.53919969334183, 241.72792332745675, 229.85187606453508, 238.95859690314106, 227.79313028595257, 233.57887055963238, 231.692822072578, 228.33265157357724, 230.96862133941443 ], - "endToEndLatency50pct" : [ 121.0, 125.0, 94.0, 90.0, 106.0, 101.0, 120.0, 94.0, 104.0, 90.0, 103.0, 91.0, 94.0, 95.0, 108.0, 124.0, 92.0, 128.0, 106.0, 121.0, 87.0, 95.0, 110.0, 104.0, 92.0, 116.0, 78.0, 119.0, 108.0, 128.0, 102.0, 115.0, 110.0, 87.0, 86.0, 85.0, 92.0, 94.0, 112.0, 101.0, 102.0, 85.0, 100.0, 89.0, 95.0, 117.0, 94.0, 101.0, 75.0, 88.0, 88.0, 86.0, 98.0, 90.0, 105.0, 111.0, 89.0, 85.0, 103.0, 101.0 ], - "endToEndLatency75pct" : [ 294.001, 297.001, 281.001, 262.0, 279.001, 284.001, 275.001, 279.001, 374.001, 264.001, 272.001, 267.001, 278.001, 268.001, 276.001, 291.001, 279.001, 291.001, 295.001, 303.001, 298.001, 269.001, 296.001, 307.001, 286.001, 313.001, 271.001, 291.001, 280.001, 311.001, 288.001, 290.001, 298.001, 285.001, 268.001, 277.001, 265.001, 266.001, 298.001, 285.001, 272.001, 283.001, 280.001, 272.001, 271.001, 293.001, 287.001, 298.001, 253.0, 262.0, 258.0, 297.001, 290.001, 259.0, 298.001, 293.001, 266.001, 260.0, 274.001, 275.001 ], - "endToEndLatency95pct" : [ 871.003, 899.003, 1005.003, 971.003, 857.003, 922.003, 845.003, 965.003, 1115.007, 903.003, 862.003, 972.003, 913.003, 924.003, 832.003, 787.003, 954.003, 779.003, 863.003, 852.003, 962.003, 933.003, 844.003, 935.003, 934.003, 901.003, 994.003, 789.003, 853.003, 830.003, 868.003, 930.003, 888.003, 923.003, 937.003, 1004.003, 899.003, 901.003, 838.003, 893.003, 954.003, 977.003, 919.003, 943.003, 947.003, 948.003, 960.003, 864.003, 977.003, 945.003, 957.003, 974.003, 1000.003, 920.003, 906.003, 820.003, 970.003, 972.003, 864.003, 891.003 ], - "endToEndLatency99pct" : [ 1505.007, 1485.007, 1663.007, 1665.007, 1363.007, 1703.007, 1411.007, 1577.007, 1838.007, 1499.007, 1342.007, 1742.007, 1556.007, 1583.007, 1409.007, 1250.007, 1669.007, 1260.007, 1542.007, 1424.007, 1631.007, 1595.007, 1367.007, 1489.007, 1585.007, 1574.007, 1719.007, 1306.007, 1497.007, 1387.007, 1335.007, 1545.007, 1382.007, 1498.007, 1695.007, 1646.007, 1463.007, 1657.007, 1448.007, 1426.007, 1663.007, 1656.007, 1629.007, 1606.007, 1616.007, 1536.007, 1605.007, 1596.007, 1899.007, 1639.007, 1597.007, 1633.007, 1632.007, 1630.007, 1589.007, 1378.007, 1698.007, 1576.007, 1508.007, 1502.007 ], - "endToEndLatency999pct" : [ 2576.015, 2134.015, 2666.015, 2665.007, 1935.007, 2671.007, 2081.007, 2063.007, 2499.007, 2405.007, 2179.007, 2450.015, 2730.015, 2313.007, 2162.015, 1867.007, 2913.007, 1985.007, 2647.007, 2143.007, 2469.007, 2992.015, 2010.007, 2280.015, 2470.015, 2396.015, 2546.015, 1981.007, 2564.015, 2256.015, 2096.007, 2786.015, 2167.007, 2496.015, 2681.007, 3285.007, 2370.015, 4237.023, 2240.015, 2188.015, 2255.007, 2490.015, 2429.007, 2975.007, 2576.015, 2193.007, 2225.007, 2437.007, 3671.007, 2617.007, 3461.007, 2390.015, 2356.015, 3050.015, 2382.015, 2067.007, 2534.015, 2775.007, 2472.015, 2900.015 ], - "endToEndLatency9999pct" : [ 3394.015, 2615.007, 3084.015, 3540.015, 2665.007, 3236.015, 2621.007, 2251.007, 2926.015, 3136.015, 2654.015, 2855.007, 3153.007, 2705.007, 2898.015, 2049.007, 3830.015, 2680.015, 3804.015, 3829.007, 2935.007, 3094.015, 2320.015, 2836.015, 2937.007, 3430.015, 4012.015, 2299.007, 3669.007, 2464.015, 2337.007, 3702.015, 2891.007, 3751.007, 3010.015, 4353.023, 3133.007, 4859.007, 3073.007, 2960.015, 2559.007, 3146.015, 3328.015, 3989.007, 2975.007, 2566.015, 2899.007, 3812.015, 4749.023, 3101.007, 3797.007, 2937.007, 3018.015, 3878.015, 2753.007, 2753.007, 2978.015, 4257.023, 4580.031, 3428.015 ], - "endToEndLatencyMax" : [ 3407.007, 2623.007, 3085.007, 3543.007, 2675.007, 3243.007, 2622.015, 2251.007, 2955.007, 3140.015, 2658.015, 2856.015, 3155.007, 2717.007, 2901.007, 2054.007, 3841.007, 2690.015, 3806.015, 3834.015, 2936.015, 3095.007, 2321.007, 2837.007, 2945.007, 3442.015, 4013.007, 2306.015, 3676.015, 2468.015, 2338.015, 3703.007, 2895.007, 3761.007, 3012.015, 4354.015, 3135.007, 4860.031, 3074.015, 2962.015, 2569.007, 3150.015, 3329.007, 3995.007, 2977.007, 2572.015, 2906.015, 3823.007, 4752.031, 3111.007, 3797.007, 2938.015, 3023.007, 3890.015, 2753.007, 2754.015, 2984.015, 4259.007, 4582.015, 3437.007 ], - "aggregatedEndToEndLatencyQuantiles" : { - "0.015512073010195951" : 1.0, - "1.5497746649522735" : 18.0, - "3.3655935687388117" : 19.0, - "4.834906448359793" : 20.0, - "5.790250905714382" : 21.0, - "6.482943468228626" : 22.0, - "7.106217769708637" : 23.0, - "7.710071745723184" : 24.0, - "8.337412447795765" : 25.0, - "9.140121891653514" : 26.0, - "10.28719425306999" : 27.0, - "11.750938989282005" : 28.0, - "13.339720427158172" : 29.0, - "14.796840484085973" : 30.0, - "16.081293607322174" : 31.0, - "17.21995966430429" : 32.0, - "18.26876727864751" : 33.0, - "19.258041023435442" : 34.0, - "20.179384428655727" : 35.0, - "21.053709196577852" : 36.0, - "21.895678981969557" : 37.0, - "22.727615530576607" : 38.0, - "23.55174062438171" : 39.0, - "24.361203658190217" : 40.0, - "25.162328696927872" : 41.0, - "25.92866380341103" : 42.0, - "26.64307847772525" : 43.0, - "27.332391188619447" : 44.0, - "27.982103871728476" : 45.0, - "28.606282674235775" : 46.0, - "29.198814572595463" : 47.0, - "29.77842563524" : 48.0, - "30.333135941422398" : 49.0, - "30.91108897367956" : 50.0, - "31.467385013957994" : 51.0, - "32.0188815905133" : 52.0, - "32.57296993595404" : 53.0, - "33.10468018706899" : 54.0, - "33.624981445502364" : 55.0, - "34.15067967524315" : 56.0, - "34.66097879492895" : 57.0, - "35.14478584235761" : 58.0, - "35.61757222387544" : 59.0, - "36.07950299829465" : 60.0, - "36.53963566826202" : 61.0, - "37.44055377640821" : 63.0, - "37.886928621611084" : 64.0, - "38.33187588085522" : 65.0, - "38.7531386624209" : 66.0, - "39.173025422294465" : 67.0, - "39.59274021268091" : 68.0, - "40.37827902155071" : 70.0, - "40.758295971522536" : 71.0, - "41.140249771034725" : 72.0, - "41.50458533646112" : 73.0, - "42.24517605255307" : 75.0, - "42.60973674650433" : 76.0, - "43.33508437431709" : 78.0, - "43.68486977952135" : 79.0, - "44.03227100188259" : 80.0, - "44.69953759664173" : 82.0, - "45.0253442888936" : 83.0, - "45.658907256334636" : 85.0, - "46.28585378414232" : 87.0, - "46.59158523158365" : 88.0, - "47.20207956879855" : 90.0, - "47.51195609220833" : 91.0, - "48.1139016587677" : 93.0, - "48.69830394548451" : 95.0, - "49.23995865779107" : 97.0, - "49.50233518881588" : 98.0, - "50.04254663324756" : 100.0, - "50.30168391830717" : 101.0, - "50.57104102837392" : 102.0, - "50.8368984131905" : 103.0, - "51.09478539768226" : 104.0, - "51.34251608221698" : 105.0, - "51.59629201252446" : 106.0, - "51.84319687140776" : 107.0, - "52.093586305215474" : 108.0, - "52.34241445808452" : 109.0, - "52.58281397972335" : 110.0, - "52.818271837213075" : 111.0, - "53.04687536837552" : 112.0, - "53.280907500472836" : 113.0, - "53.51361012503607" : 114.0, - "53.955690783169615" : 116.0, - "54.180182728557405" : 117.0, - "54.399091380210464" : 118.0, - "54.6193983803515" : 119.0, - "54.824062004659105" : 120.0, - "55.0380494583926" : 121.0, - "55.459172431689005" : 123.0, - "55.67367738865498" : 124.0, - "55.88278617169911" : 125.0, - "56.086848833084964" : 126.0, - "56.285784305279975" : 127.0, - "56.700143322613265" : 129.0, - "56.899053810060536" : 130.0, - "57.0905462195852" : 131.0, - "57.28463624548944" : 132.0, - "57.657985723151654" : 134.0, - "57.839460046217425" : 135.0, - "58.03705165793816" : 136.0, - "58.391453659775685" : 138.0, - "58.56310100312327" : 139.0, - "58.912259397477285" : 141.0, - "59.09302218682279" : 142.0, - "59.27285655357402" : 143.0, - "59.63485657667694" : 145.0, - "59.80857526193039" : 146.0, - "60.153260323257875" : 148.0, - "60.32666643336937" : 149.0, - "60.64497371437086" : 151.0, - "60.81408510582266" : 152.0, - "61.14166598095938" : 154.0, - "61.29743790927376" : 155.0, - "61.61108792697811" : 157.0, - "61.77324266095495" : 158.0, - "62.083871650544054" : 160.0, - "62.37714155635639" : 162.0, - "62.52232287537533" : 163.0, - "62.80876025006585" : 165.0, - "63.094148531146416" : 167.0, - "63.39680977836259" : 169.0, - "63.53600618711661" : 170.0, - "63.8026968398499" : 172.0, - "64.07213209370214" : 174.0, - "64.3396427245927" : 176.0, - "64.60478246239967" : 178.0, - "64.86259396105783" : 180.0, - "65.12534925022659" : 182.0, - "65.37659720249394" : 184.0, - "65.50958171189187" : 185.0, - "65.76266551152787" : 187.0, - "66.0002127849963" : 189.0, - "66.3634859670533" : 192.0, - "66.61450241171126" : 194.0, - "66.85262167642585" : 196.0, - "67.08168210951774" : 198.0, - "67.30491737525315" : 200.0, - "67.53822229171408" : 202.0, - "67.77180522994242" : 204.0, - "68.00795123117581" : 206.0, - "68.33757660290433" : 209.0, - "68.56074276189067" : 211.0, - "68.76951956674407" : 213.0, - "69.08363552341427" : 216.0, - "69.29653959595846" : 218.0, - "69.50240727247106" : 220.0, - "69.81930849692411" : 223.0, - "70.01969069233145" : 225.0, - "70.31748602702731" : 228.0, - "70.51455694597331" : 230.0, - "70.80512982800548" : 233.0, - "71.09032381280306" : 236.0, - "71.28493426568686" : 238.0, - "71.56028718362126" : 241.0, - "71.84024872433326" : 244.0, - "72.01678988869598" : 246.0, - "72.28621238437916" : 249.0, - "72.54795339910768" : 252.0, - "72.7942110467064" : 255.0, - "73.01866312281587" : 258.0, - "73.25762043976059" : 261.0, - "73.51337893638089" : 264.001, - "73.8265651414809" : 268.001, - "74.0742772203524" : 271.001, - "74.30686767934598" : 274.001, - "74.53599775077733" : 277.001, - "74.75477430222158" : 280.001, - "75.06478877333431" : 284.001, - "75.14056113415062" : 285.001, - "75.29374714107372" : 287.001, - "75.43861030325174" : 289.001, - "75.51837862893561" : 290.001, - "75.66718459694341" : 292.001, - "75.8185719678243" : 294.001, - "75.89584421089069" : 295.001, - "76.03476817957625" : 297.001, - "76.18287882737032" : 299.001, - "76.25603629511977" : 300.001, - "76.38924885678965" : 302.001, - "76.51982526177756" : 304.001, - "76.65809696906994" : 306.001, - "76.79228818862477" : 308.001, - "76.93172328145828" : 310.001, - "77.0601512639356" : 312.001, - "77.1258659348099" : 313.001, - "77.25652393892075" : 315.001, - "77.38344539426828" : 317.001, - "77.50651149040308" : 319.001, - "77.63222703297929" : 321.001, - "77.75540051037035" : 323.001, - "77.88730403073566" : 325.001, - "78.01074702444811" : 327.001, - "78.14037985651599" : 329.001, - "78.25747406635014" : 331.001, - "78.37820541754705" : 333.001, - "78.55350053406494" : 336.001, - "78.67513851265063" : 338.001, - "78.78986023463007" : 340.001, - "78.9120781783176" : 342.001, - "79.02016724715716" : 344.001, - "79.13770692972764" : 346.001, - "79.25556264277753" : 348.001, - "79.425607241137" : 351.001, - "79.53362640584191" : 353.001, - "79.63914045089294" : 355.001, - "79.757577989611" : 357.001, - "79.91911049705098" : 360.001, - "80.02522151809592" : 362.001, - "80.13116827771421" : 364.001, - "80.29320898555508" : 367.001, - "80.4068024069583" : 369.001, - "80.5207102640698" : 371.001, - "80.67671077624651" : 374.001, - "80.79306262011849" : 376.001, - "80.90128564973318" : 378.001, - "81.00408539431676" : 380.001, - "81.15847731401118" : 383.001, - "81.26089962942676" : 385.001, - "81.42112176658624" : 388.001, - "81.52503811675773" : 390.001, - "81.66990287370687" : 393.001, - "81.7701281260923" : 395.001, - "81.91913423787724" : 398.001, - "82.01791701977336" : 400.001, - "82.16445761538752" : 403.001, - "82.26407951269451" : 405.001, - "82.41108312352746" : 408.001, - "82.50829824540037" : 410.001, - "82.6386527114057" : 413.001, - "82.77698900692894" : 416.001, - "82.9111180304096" : 419.001, - "83.04345001261916" : 422.001, - "83.13295733981373" : 424.001, - "83.27315792279083" : 427.001, - "83.39589336971085" : 430.001, - "83.53744419224675" : 433.001, - "83.62868184612003" : 435.001, - "83.76266601122282" : 438.001, - "83.91418521651732" : 442.001, - "84.04091662830488" : 445.001, - "84.16576647595136" : 448.001, - "84.2878424850081" : 451.001, - "84.40208072553921" : 454.001, - "84.53148577113035" : 457.001, - "84.6505463337708" : 460.001, - "84.76697951097056" : 463.001, - "84.87719892824788" : 466.001, - "85.0327220722656" : 470.001, - "85.14174806914546" : 473.001, - "85.26108612196298" : 476.001, - "85.3771987501651" : 479.001, - "85.51916128944838" : 483.001, - "85.63091461075993" : 486.001, - "85.77962755045169" : 490.001, - "85.89410606983343" : 493.001, - "86.00041484249878" : 496.001, - "86.13356627127524" : 500.001, - "86.27643145101948" : 504.001, - "86.37850690371373" : 507.001, - "86.51010103847935" : 511.001, - "86.65369742078781" : 515.001, - "86.76061858556804" : 518.001, - "86.8906814742513" : 522.001, - "87.00192925311387" : 525.003, - "87.13403557520819" : 529.003, - "87.25353602888603" : 533.003, - "87.39091599332018" : 537.003, - "87.51505058611374" : 541.003, - "87.58035407183105" : 543.003, - "87.64229524841078" : 545.003, - "87.70317537059704" : 547.003, - "87.76385853854843" : 549.003, - "87.83379191065845" : 551.003, - "87.89593482578643" : 553.003, - "87.95101396797838" : 555.003, - "88.01040244756543" : 557.003, - "88.07348069596259" : 559.003, - "88.13333883564813" : 561.003, - "88.19038991234537" : 563.003, - "88.2515966968186" : 565.003, - "88.34106814166269" : 568.003, - "88.40043774979132" : 570.003, - "88.45784392886073" : 572.003, - "88.51811378529364" : 574.003, - "88.57296806475591" : 576.003, - "88.62754166449889" : 578.003, - "88.69465920237937" : 580.003, - "88.77753148427736" : 583.003, - "88.8400954189843" : 585.003, - "88.88758185581464" : 587.003, - "88.94629760777897" : 589.003, - "89.00357966049523" : 591.003, - "89.08238554180066" : 594.003, - "89.13559587802057" : 596.003, - "89.19049188732748" : 598.003, - "89.26829704974729" : 601.003, - "89.32203020510346" : 603.003, - "89.38183518575126" : 605.003, - "89.45577116760855" : 608.003, - "89.50011563951277" : 610.003, - "89.58453511520443" : 613.003, - "89.63295954325585" : 615.003, - "89.71009995190862" : 618.003, - "89.76362126849935" : 620.003, - "89.81538913422996" : 622.003, - "89.8875623623955" : 625.003, - "89.94182551335803" : 627.003, - "90.01240317300555" : 630.003, - "90.08428296328273" : 633.003, - "90.13064987077809" : 635.003, - "90.20319069368966" : 638.003, - "90.25067447256812" : 640.003, - "90.32407966143349" : 643.003, - "90.39290200965456" : 646.003, - "90.44125812834247" : 648.003, - "90.5090212827364" : 651.003, - "90.57497011917198" : 654.003, - "90.64242495114698" : 657.003, - "90.70706182253092" : 660.003, - "90.75110408530554" : 662.003, - "90.8156790264105" : 665.003, - "90.88479428092958" : 668.003, - "90.95288675556236" : 671.003, - "91.00032003335495" : 673.003, - "91.0659416759132" : 676.003, - "91.13234262996482" : 679.003, - "91.1984211744525" : 682.003, - "91.25852225094057" : 685.003, - "91.31767390701444" : 688.003, - "91.37580012525014" : 691.003, - "91.44223270892923" : 694.003, - "91.50851139719403" : 697.003, - "91.57552102222789" : 700.003, - "91.63820934908316" : 703.003, - "91.70022760626762" : 706.003, - "91.76346692654916" : 709.003, - "91.82905906584143" : 712.003, - "91.89032910956959" : 715.003, - "91.95456622498966" : 718.003, - "92.01316582445651" : 721.003, - "92.07132420391005" : 724.003, - "92.13650143691271" : 727.003, - "92.19592048294646" : 730.003, - "92.25160404339762" : 733.003, - "92.32533297080288" : 737.003, - "92.37530326367201" : 740.003, - "92.45420004693199" : 744.003, - "92.51141299289917" : 747.003, - "92.56631910242325" : 750.003, - "92.63811490142079" : 754.003, - "92.69174439665335" : 757.003, - "92.76308568587814" : 761.003, - "92.8202917211704" : 764.003, - "92.89037500176687" : 768.003, - "92.94887439644756" : 771.003, - "93.00475730329029" : 774.003, - "93.07357832253541" : 778.003, - "93.12615553461573" : 781.003, - "93.1914247327537" : 785.003, - "93.25500373928645" : 789.003, - "93.3156975390454" : 793.003, - "93.37904477217357" : 797.003, - "93.43884071578495" : 801.003, - "93.50363546951101" : 805.003, - "93.56351035429346" : 809.003, - "93.63252061971296" : 813.003, - "93.69887532540176" : 817.003, - "93.76134835815415" : 821.003, - "93.79412409446836" : 823.003, - "93.82626404869109" : 825.003, - "93.84498054849676" : 826.003, - "93.89134373485948" : 829.003, - "93.9080144090974" : 830.003, - "93.9409886944176" : 832.003, - "93.97291973362198" : 834.003, - "94.00240306493323" : 836.003, - "94.04633927542754" : 839.003, - "94.07424670706473" : 841.003, - "94.10489820823051" : 843.003, - "94.13680931279573" : 845.003, - "94.16650820400505" : 847.003, - "94.19693457664597" : 849.003, - "94.2250772370252" : 851.003, - "94.25139946615674" : 853.003, - "94.29120707998432" : 856.003, - "94.31949805407886" : 858.003, - "94.34690339860454" : 860.003, - "94.38753657228834" : 863.003, - "94.41537091024864" : 865.003, - "94.44184730058964" : 867.003, - "94.48090351141865" : 870.003, - "94.50539813283238" : 872.003, - "94.53250286299959" : 874.003, - "94.5693580238706" : 877.003, - "94.59487781732733" : 879.003, - "94.63711665974634" : 882.003, - "94.66263379525117" : 884.003, - "94.6879175625803" : 886.003, - "94.73069437446131" : 889.003, - "94.75610598927622" : 891.003, - "94.79119520691323" : 894.003, - "94.81377822932954" : 896.003, - "94.8493458783063" : 899.003, - "94.8900122763887" : 902.003, - "94.91721933770356" : 904.003, - "94.93870754973744" : 906.003, - "94.97259112039832" : 909.003, - "95.0009453537478" : 911.003, - "95.03598220973264" : 914.003, - "95.07001303092808" : 917.003, - "95.09730541249853" : 919.003, - "95.12813207269369" : 922.003, - "95.16355353431663" : 925.003, - "95.2016071656937" : 928.003, - "95.22859042745964" : 930.003, - "95.25495438643581" : 932.003, - "95.28207453272395" : 934.003, - "95.31660292251273" : 937.003, - "95.34536648045287" : 940.003, - "95.37864244331227" : 943.003, - "95.40916237585962" : 946.003, - "95.44570549317906" : 949.003, - "95.4790210595216" : 952.003, - "95.50755762837056" : 954.003, - "95.53810148248489" : 957.003, - "95.56833355884284" : 960.003, - "95.59969712531925" : 963.003, - "95.63381379836066" : 966.003, - "95.6661966893859" : 969.003, - "95.6913845046519" : 972.003, - "95.72546848488508" : 975.003, - "95.75319065727572" : 978.003, - "95.78398489045786" : 981.003, - "95.81261528500843" : 984.003, - "95.84947310383134" : 988.003, - "95.87520526764388" : 991.003, - "95.91455411897567" : 995.003, - "95.93781332435215" : 997.003, - "95.97226835466883" : 1000.003, - "96.0000394333742" : 1003.003, - "96.03453220660768" : 1006.003, - "96.07122416923282" : 1010.003, - "96.09797087328077" : 1013.003, - "96.13038884927093" : 1016.003, - "96.1576501328043" : 1019.003, - "96.18768153379474" : 1022.003, - "96.2256572871815" : 1026.003, - "96.25730791246175" : 1030.003, - "96.28570493883662" : 1033.003, - "96.31954704544806" : 1037.003, - "96.3453002070805" : 1040.003, - "96.37964440080347" : 1044.003, - "96.40709758846312" : 1047.003, - "96.44625400407827" : 1051.007, - "96.46952756239493" : 1054.007, - "96.50358762106114" : 1057.007, - "96.53343535757615" : 1061.007, - "96.5684626449342" : 1065.007, - "96.59430511375005" : 1068.007, - "96.63172987371055" : 1073.007, - "96.66357213732189" : 1077.007, - "96.68927081094064" : 1080.007, - "96.72103998087508" : 1084.007, - "96.75887566019738" : 1088.007, - "96.78678282603938" : 1092.007, - "96.81653806582872" : 1096.007, - "96.84427778070182" : 1100.007, - "96.88084189584117" : 1105.007, - "96.89659424770198" : 1107.007, - "96.90949807252505" : 1109.007, - "96.92547714768187" : 1111.007, - "96.9395956565175" : 1113.007, - "96.95636228281855" : 1115.007, - "96.97012329712531" : 1117.007, - "96.98689417614939" : 1119.007, - "97.00268054979438" : 1121.007, - "97.01855809118909" : 1123.007, - "97.03443164565597" : 1125.007, - "97.05053272080443" : 1127.007, - "97.06538349538502" : 1129.007, - "97.08441150715191" : 1132.007, - "97.09658572418188" : 1134.007, - "97.11202576669592" : 1136.007, - "97.12708359572856" : 1138.007, - "97.14332713709817" : 1140.007, - "97.1563758202991" : 1142.007, - "97.17198889548102" : 1144.007, - "97.18859631046402" : 1147.007, - "97.21021901486341" : 1150.007, - "97.22203042146074" : 1152.007, - "97.24058770994836" : 1155.007, - "97.2519717178822" : 1157.007, - "97.27049259242897" : 1160.007, - "97.28342166779495" : 1162.007, - "97.3011262853171" : 1165.007, - "97.31827831464183" : 1167.007, - "97.3296216559118" : 1169.007, - "97.34836101410369" : 1172.007, - "97.36071544027163" : 1174.007, - "97.37835865910516" : 1177.007, - "97.39164469740965" : 1179.007, - "97.40957258289032" : 1182.007, - "97.4268604335565" : 1185.007, - "97.4406320796708" : 1187.007, - "97.45495498500658" : 1189.007, - "97.468752147459" : 1191.007, - "97.48478943176215" : 1193.007, - "97.50085223240342" : 1196.007, - "97.52202627452421" : 1199.007, - "97.53680209486159" : 1201.007, - "97.55220200230214" : 1203.007, - "97.5662888815103" : 1205.007, - "97.58009428361358" : 1207.007, - "97.59465268348657" : 1209.007, - "97.61217842084667" : 1212.007, - "97.62621533055935" : 1215.007, - "97.64487468439944" : 1219.007, - "97.65631211716622" : 1221.007, - "97.6742376104902" : 1224.007, - "97.68969306912518" : 1227.007, - "97.70444789164266" : 1230.007, - "97.72091709312751" : 1233.007, - "97.73698520967257" : 1236.007, - "97.75504519536204" : 1239.007, - "97.76639438412616" : 1241.007, - "97.78326148100857" : 1244.007, - "97.80077153645253" : 1247.007, - "97.81871909077718" : 1250.007, - "97.83074393091107" : 1253.007, - "97.84472475783892" : 1256.007, - "97.86519497429991" : 1260.007, - "97.87677407590229" : 1262.007, - "97.89353831004665" : 1265.007, - "97.90968616514832" : 1268.007, - "97.9241789136097" : 1271.007, - "97.94210281216253" : 1275.007, - "97.95377733423767" : 1277.007, - "97.97084616966833" : 1280.007, - "97.98603237777712" : 1283.007, - "98.0008839497433" : 1286.007, - "98.01564594873086" : 1289.007, - "98.03386541153358" : 1292.007, - "98.04691037360188" : 1295.007, - "98.0668747818187" : 1299.007, - "98.08178403134083" : 1302.007, - "98.09541826134256" : 1305.007, - "98.11030863940628" : 1308.007, - "98.12684242912201" : 1311.007, - "98.14590526005861" : 1314.007, - "98.1612759300284" : 1317.007, - "98.17411330605428" : 1320.007, - "98.19224957496293" : 1324.007, - "98.20504017103559" : 1326.007, - "98.22435736796783" : 1330.007, - "98.23824649555556" : 1333.007, - "98.25422477332681" : 1336.007, - "98.26594793592147" : 1339.007, - "98.28284639663616" : 1343.007, - "98.2976891973611" : 1347.007, - "98.3172363071316" : 1351.007, - "98.3315251906832" : 1354.007, - "98.34593102411785" : 1358.007, - "98.36359045645789" : 1362.007, - "98.37816214609032" : 1365.007, - "98.3913487769942" : 1368.007, - "98.40726113755865" : 1372.007, - "98.42233571168818" : 1376.007, - "98.43852423345372" : 1380.007, - "98.44782865983083" : 1382.007, - "98.45531611029772" : 1384.007, - "98.46259384836067" : 1386.007, - "98.47339337267447" : 1388.007, - "98.47786856626732" : 1389.007, - "98.4871006963531" : 1392.007, - "98.49366530592465" : 1394.007, - "98.50052866928836" : 1396.007, - "98.51044442459958" : 1399.007, - "98.51923001876828" : 1401.007, - "98.52825482860683" : 1403.007, - "98.53159560833414" : 1404.007, - "98.54327225677078" : 1407.007, - "98.54708136762065" : 1408.007, - "98.55671591162219" : 1411.007, - "98.56432669105664" : 1413.007, - "98.57169798902603" : 1415.007, - "98.58094713000389" : 1418.007, - "98.58877081138452" : 1420.007, - "98.59647647970135" : 1422.007, - "98.60358889315691" : 1424.007, - "98.6098906312868" : 1426.007, - "98.61989542798625" : 1429.007, - "98.62633697438542" : 1431.007, - "98.63448306533" : 1434.007, - "98.64079304311075" : 1436.007, - "98.65066148687838" : 1439.007, - "98.65810561272949" : 1441.007, - "98.66534294992375" : 1443.007, - "98.67545486208427" : 1446.007, - "98.68194318843666" : 1448.007, - "98.6895898502216" : 1450.007, - "98.69628496523083" : 1452.007, - "98.70450388405712" : 1455.007, - "98.71210031055138" : 1457.007, - "98.7216641530327" : 1460.007, - "98.72793851425816" : 1462.007, - "98.73596925009082" : 1465.007, - "98.74354334978922" : 1467.007, - "98.75034398548839" : 1469.007, - "98.76141515248509" : 1472.007, - "98.76588503017416" : 1473.007, - "98.77555465914061" : 1476.007, - "98.78200896370885" : 1478.007, - "98.79259133335343" : 1481.007, - "98.80022603435486" : 1483.007, - "98.80568918866427" : 1485.007, - "98.81640817703588" : 1488.007, - "98.82093307432903" : 1489.007, - "98.83036056387854" : 1492.007, - "98.83780070280181" : 1495.007, - "98.84393791370988" : 1497.007, - "98.85267486735903" : 1499.007, - "98.86030903677009" : 1502.007, - "98.86955419082011" : 1506.007, - "98.87729839943931" : 1509.007, - "98.88463062551597" : 1511.007, - "98.89179646380445" : 1513.007, - "98.90158543481066" : 1516.007, - "98.90849797028427" : 1518.007, - "98.91564493711438" : 1521.007, - "98.92425803020556" : 1524.007, - "98.93050395134583" : 1526.007, - "98.9378614279654" : 1529.007, - "98.94804085210386" : 1532.007, - "98.9539141283895" : 1534.007, - "98.96222341757998" : 1537.007, - "98.97018478086838" : 1540.007, - "98.9776331594425" : 1543.007, - "98.98461506746038" : 1546.007, - "98.99417093608605" : 1550.007, - "99.00163924929934" : 1553.007, - "99.0085507215922" : 1556.007, - "99.01674199771887" : 1559.007, - "99.02715239787635" : 1563.007, - "99.03135887253339" : 1564.007, - "99.04080549933647" : 1567.007, - "99.04892182121992" : 1571.007, - "99.05468904522525" : 1573.007, - "99.06333695748617" : 1577.007, - "99.07123771947154" : 1580.007, - "99.07978675592226" : 1584.007, - "99.08626019774407" : 1587.007, - "99.09417212312736" : 1591.007, - "99.10156681107337" : 1594.007, - "99.11065727232355" : 1598.007, - "99.11795042650745" : 1601.007, - "99.1273058855608" : 1606.007, - "99.1331047391936" : 1608.007, - "99.14198601963024" : 1611.007, - "99.14902374463776" : 1614.007, - "99.1589838877455" : 1618.007, - "99.16637139922142" : 1621.007, - "99.17316033993227" : 1624.007, - "99.18124210844117" : 1628.007, - "99.18871095324484" : 1631.007, - "99.1955612926443" : 1635.007, - "99.2040869391184" : 1641.007, - "99.21140640702599" : 1644.007, - "99.21901080737591" : 1647.007, - "99.22365690727513" : 1649.007, - "99.22812253224119" : 1652.007, - "99.23071270635548" : 1654.007, - "99.23605412646845" : 1657.007, - "99.2387702875022" : 1658.007, - "99.24230855305474" : 1660.007, - "99.24752398624824" : 1662.007, - "99.25173285306198" : 1664.007, - "99.2541191622665" : 1665.007, - "99.25844524475848" : 1668.007, - "99.26398893501009" : 1670.007, - "99.26571740112247" : 1671.007, - "99.26994859473207" : 1674.007, - "99.27352354002065" : 1676.007, - "99.27884210174739" : 1679.007, - "99.28190804924954" : 1681.007, - "99.28715218832342" : 1684.007, - "99.28970515111129" : 1687.007, - "99.29315543845635" : 1689.007, - "99.29699431836737" : 1691.007, - "99.30130950325659" : 1694.007, - "99.30610843538933" : 1697.007, - "99.30886552888217" : 1699.007, - "99.31449719734124" : 1701.007, - "99.31666130176798" : 1703.007, - "99.32039997689283" : 1705.007, - "99.32460113564609" : 1708.007, - "99.32878528350727" : 1710.007, - "99.33334579735572" : 1712.007, - "99.33629373179406" : 1714.007, - "99.34200301244825" : 1717.007, - "99.34548386624002" : 1719.007, - "99.34989606637315" : 1721.007, - "99.35184992680558" : 1722.007, - "99.35606942542687" : 1725.007, - "99.35957845350865" : 1727.007, - "99.36525610453538" : 1730.007, - "99.36729767738011" : 1732.007, - "99.37165087098133" : 1735.007, - "99.37592166807404" : 1738.007, - "99.3793156068391" : 1740.007, - "99.38325495733145" : 1743.007, - "99.38696200282884" : 1746.007, - "99.39149886090549" : 1751.007, - "99.39567689547732" : 1754.007, - "99.39902086474689" : 1756.007, - "99.40238902137864" : 1759.007, - "99.40686926508008" : 1763.007, - "99.41160759590979" : 1766.007, - "99.41441519048847" : 1769.007, - "99.4193587152039" : 1772.007, - "99.42219156032552" : 1774.007, - "99.42620506767553" : 1779.007, - "99.43114008694491" : 1783.007, - "99.43412124578184" : 1786.007, - "99.4380675069491" : 1792.007, - "99.44264875282227" : 1795.007, - "99.4468881860827" : 1798.007, - "99.45077065640466" : 1800.007, - "99.45361679128571" : 1802.007, - "99.45775150124179" : 1805.007, - "99.46100855548464" : 1807.007, - "99.46490484715642" : 1810.007, - "99.46978883374956" : 1814.007, - "99.47342464613637" : 1816.007, - "99.47690363936182" : 1819.007, - "99.48184424033016" : 1822.007, - "99.48469010941602" : 1825.007, - "99.48875278887596" : 1829.007, - "99.49260336377526" : 1831.007, - "99.49664371643934" : 1834.007, - "99.50221292302906" : 1838.007, - "99.50499606445038" : 1840.007, - "99.50817816445" : 1843.007, - "99.51394645163609" : 1847.007, - "99.51768406358019" : 1849.007, - "99.5207409740459" : 1852.007, - "99.52452749230474" : 1854.007, - "99.5276590912185" : 1857.007, - "99.53143311710346" : 1861.007, - "99.5353419011491" : 1864.007, - "99.54025007510442" : 1867.007, - "99.5442739484668" : 1870.007, - "99.54738375217508" : 1873.007, - "99.55156763424107" : 1875.007, - "99.55504662746652" : 1879.007, - "99.55886397796723" : 1883.007, - "99.5629423393433" : 1888.007, - "99.56836695335035" : 1892.007, - "99.57130106643888" : 1896.007, - "99.57485421652198" : 1900.007, - "99.57859475221315" : 1904.007, - "99.58224598072091" : 1908.007, - "99.58613350115145" : 1912.007, - "99.59071607600056" : 1918.007, - "99.59411772282608" : 1921.007, - "99.59796882931577" : 1924.007, - "99.60271088127813" : 1929.007, - "99.60649128624762" : 1932.007, - "99.61060818792605" : 1936.007, - "99.6119055342423" : 1937.007, - "99.6142525057589" : 1939.007, - "99.61588927253116" : 1941.007, - "99.61771262752595" : 1943.007, - "99.62028818290486" : 1947.007, - "99.62190049651977" : 1948.007, - "99.62398991249847" : 1950.007, - "99.62615454851559" : 1954.007, - "99.62728205170623" : 1955.007, - "99.63082483577698" : 1958.007, - "99.63291079641823" : 1959.007, - "99.63599960230661" : 1963.007, - "99.63708510985744" : 1964.007, - "99.64011570659947" : 1967.007, - "99.64107708779716" : 1968.007, - "99.64266574564027" : 1970.007, - "99.64484553198314" : 1972.007, - "99.64739238148167" : 1975.007, - "99.64884521798334" : 1976.007, - "99.65046258170683" : 1978.007, - "99.65299374928924" : 1982.007, - "99.65450213698534" : 1984.007, - "99.65693682091423" : 1986.007, - "99.65874662035436" : 1988.007, - "99.66121107334439" : 1990.007, - "99.6632316483692" : 1992.007, - "99.66476475501787" : 1993.007, - "99.66648391829867" : 1995.007, - "99.66861479832681" : 1999.007, - "99.67071378293231" : 2002.007, - "99.6727136259324" : 2004.007, - "99.67466110728033" : 2006.007, - "99.67657270627775" : 2008.007, - "99.67845666257557" : 2011.007, - "99.67994989994592" : 2014.007, - "99.68188063619695" : 2016.007, - "99.68382625697853" : 2018.007, - "99.68570542896295" : 2020.007, - "99.68814277084371" : 2023.007, - "99.68993396462065" : 2025.007, - "99.69171027386702" : 2027.007, - "99.69458617780921" : 2030.007, - "99.69564590322672" : 2031.007, - "99.69742752837686" : 2035.007, - "99.69961927550324" : 2038.007, - "99.70118454336973" : 2041.007, - "99.70321282645503" : 2043.007, - "99.7057115670244" : 2046.007, - "99.70793494377823" : 2048.007, - "99.7092437192876" : 2049.007, - "99.71151042065719" : 2051.007, - "99.7139065642837" : 2053.007, - "99.71502024612454" : 2057.007, - "99.7173751914968" : 2060.007, - "99.71904252471577" : 2062.007, - "99.72093099953179" : 2065.007, - "99.72316846343062" : 2068.007, - "99.72504072474013" : 2072.007, - "99.72676148279204" : 2074.007, - "99.72923656758961" : 2076.007, - "99.73113434523724" : 2079.007, - "99.73305338649996" : 2081.007, - "99.73488072842255" : 2083.007, - "99.73694728601504" : 2085.007, - "99.73837487197376" : 2093.007, - "99.7403502618165" : 2097.007, - "99.74257496754628" : 2100.015, - "99.74471701097235" : 2103.007, - "99.74707355111573" : 2106.015, - "99.74835946823887" : 2107.007, - "99.7501533199677" : 2109.007, - "99.75201415208409" : 2113.007, - "99.75411313668958" : 2118.015, - "99.75674610382927" : 2121.007, - "99.75822897518727" : 2125.007, - "99.76026576371859" : 2132.015, - "99.76212951958206" : 2135.007, - "99.7639063604188" : 2138.015, - "99.765752839595" : 2141.007, - "99.76767294403847" : 2145.007, - "99.77026311815276" : 2148.015, - "99.77176672153547" : 2151.007, - "99.77350156673239" : 2155.007, - "99.77549343587684" : 2160.015, - "99.77749274728656" : 2162.015, - "99.77933683430605" : 2165.007, - "99.78225553127363" : 2169.007, - "99.78330515647397" : 2171.007, - "99.78537197986164" : 2174.015, - "99.78785264635816" : 2178.015, - "99.78919703842283" : 2180.015, - "99.79124844568955" : 2185.007, - "99.79377190521146" : 2188.015, - "99.79507403584111" : 2191.007, - "99.79688702482352" : 2194.015, - "99.79913671530103" : 2199.007, - "99.80098027073015" : 2206.015, - "99.80322065837606" : 2209.007, - "99.80503444474404" : 2213.007, - "99.80594107213284" : 2215.007, - "99.8071698432904" : 2219.007, - "99.80773917658469" : 2222.015, - "99.80864234863603" : 2224.015, - "99.80961436164127" : 2225.007, - "99.81055952933244" : 2227.007, - "99.81204718500382" : 2229.007, - "99.81262050522594" : 2232.015, - "99.81376156397121" : 2235.007, - "99.81451137219865" : 2238.015, - "99.81580526317745" : 2241.007, - "99.81699363346632" : 2242.015, - "99.81756429573655" : 2243.007, - "99.81847863118583" : 2247.007, - "99.8195628097607" : 2249.007, - "99.8207551669774" : 2252.015, - "99.82153261790447" : 2253.007, - "99.82233611676004" : 2255.007, - "99.82350402081937" : 2258.015, - "99.82427482686673" : 2263.007, - "99.82548499236107" : 2265.007, - "99.82638364589421" : 2267.007, - "99.82768790288537" : 2270.015, - "99.82820832986492" : 2272.015, - "99.82932148011538" : 2274.015, - "99.8301263079469" : 2276.015, - "99.83156266514686" : 2278.015, - "99.83215724898407" : 2279.007, - "99.8331670049061" : 2281.007, - "99.83461638607032" : 2285.007, - "99.8357973140939" : 2286.015, - "99.83627547963845" : 2287.007, - "99.83736577150268" : 2290.015, - "99.83797789782234" : 2293.007, - "99.83903363631202" : 2295.007, - "99.84002771031793" : 2299.007, - "99.84098005447919" : 2302.015, - "99.84206210669257" : 2305.007, - "99.84309206304894" : 2310.015, - "99.84394872094225" : 2313.007, - "99.84566123934331" : 2315.007, - "99.84588769684413" : 2316.015, - "99.84680841137794" : 2319.007, - "99.84767995380182" : 2321.007, - "99.8487901803052" : 2326.015, - "99.84987808001272" : 2329.007, - "99.85068716056725" : 2333.007, - "99.85201427594464" : 2337.007, - "99.85255942187675" : 2338.015, - "99.85365104271692" : 2342.015, - "99.85451195333326" : 2346.015, - "99.8557125502008" : 2350.015, - "99.85660854578205" : 2351.007, - "99.85764594440371" : 2355.007, - "99.85877185282322" : 2358.015, - "99.85996421003993" : 2360.015, - "99.86092293328572" : 2361.007, - "99.86154356505143" : 2363.007, - "99.86254401814186" : 2365.007, - "99.86331588736996" : 2369.007, - "99.86459675438452" : 2373.007, - "99.86533407023809" : 2376.015, - "99.86641691983702" : 2379.007, - "99.86739717249311" : 2382.015, - "99.8683558957389" : 2385.007, - "99.86953150785871" : 2389.007, - "99.87027227904973" : 2393.007, - "99.87114382147362" : 2396.015, - "99.8721243399249" : 2399.007, - "99.87338793025218" : 2406.015, - "99.8746884661107" : 2409.007, - "99.87522430921119" : 2410.015, - "99.8762537339772" : 2413.007, - "99.87775148986576" : 2418.015, - "99.87844601269394" : 2419.007, - "99.87896218695047" : 2421.007, - "99.8802675071224" : 2424.015, - "99.88087298856234" : 2429.007, - "99.88199916277705" : 2432.015, - "99.88290499278028" : 2436.015, - "99.88404179880254" : 2440.015, - "99.88514644360696" : 2448.015, - "99.88581677907295" : 2449.007, - "99.88690919729869" : 2454.015, - "99.88779323209644" : 2458.015, - "99.88880431699442" : 2460.015, - "99.89047935827388" : 2462.015, - "99.8911374671612" : 2464.015, - "99.89186122746015" : 2465.007, - "99.89264452588138" : 2467.007, - "99.89399689180169" : 2470.015, - "99.894570477819" : 2478.015, - "99.89554727513763" : 2483.007, - "99.89672076089593" : 2489.007, - "99.89779191550656" : 2491.007, - "99.89851913114296" : 2494.015, - "99.89966151886418" : 2499.007, - "99.9005933967959" : 2505.007, - "99.90137217669891" : 2507.007, - "99.90235136617424" : 2510.015, - "99.90303977571308" : 2512.015, - "99.90355276042736" : 2515.007, - "99.90403411551418" : 2524.015, - "99.90432170590839" : 2526.015, - "99.90500479954346" : 2533.007, - "99.90541837685714" : 2534.015, - "99.905813880098" : 2536.015, - "99.90625908703913" : 2540.015, - "99.90674708700567" : 2542.015, - "99.90728665123882" : 2549.007, - "99.90809466861259" : 2558.015, - "99.90848299538335" : 2559.007, - "99.90890348337193" : 2561.007, - "99.90936756177148" : 2563.007, - "99.90988825454623" : 2564.015, - "99.91019790594112" : 2565.007, - "99.91077149195841" : 2567.007, - "99.91124832852702" : 2569.007, - "99.91178364003714" : 2575.007, - "99.91240666395956" : 2576.015, - "99.91282635456258" : 2577.007, - "99.91340791443555" : 2578.015, - "99.91370294709506" : 2579.007, - "99.91427759629312" : 2581.007, - "99.91456252873544" : 2585.007, - "99.91510129558303" : 2589.007, - "99.91576179662705" : 2592.015, - "99.9161219491078" : 2596.015, - "99.9168919577696" : 2601.007, - "99.91749052853464" : 2602.015, - "99.91833575723484" : 2604.015, - "99.9185489249762" : 2611.007, - "99.9189858922665" : 2614.015, - "99.91966393579298" : 2616.015, - "99.92006209698572" : 2617.007, - "99.92073190086136" : 2621.007, - "99.92129644984225" : 2625.007, - "99.9215407156207" : 2628.015, - "99.92199788334533" : 2633.007, - "99.92261240182171" : 2636.015, - "99.92318705101977" : 2638.015, - "99.92344806189512" : 2640.015, - "99.92399559998393" : 2645.007, - "99.92432093329494" : 2646.015, - "99.92491923826479" : 2648.015, - "99.92534291579565" : 2650.015, - "99.92626363032946" : 2662.015, - "99.92642177846676" : 2663.007, - "99.9269166891082" : 2665.007, - "99.92746555617295" : 2668.015, - "99.92781427946058" : 2670.015, - "99.92830839271646" : 2674.015, - "99.92933170419312" : 2680.015, - "99.92983990459399" : 2682.015, - "99.93019447537577" : 2686.015, - "99.93077151673053" : 2696.015, - "99.93127280645649" : 2701.007, - "99.93166777810697" : 2705.007, - "99.93224375628097" : 2707.007, - "99.93262012226823" : 2713.007, - "99.933225337913" : 2725.007, - "99.93369845334897" : 2727.007, - "99.93423748599173" : 2732.015, - "99.93467392169164" : 2737.007, - "99.93511700227128" : 2745.007, - "99.93574986061567" : 2747.007, - "99.93616450111011" : 2750.015, - "99.93672718952467" : 2752.015, - "99.93719817859913" : 2753.007, - "99.93764976462481" : 2766.015, - "99.93801098028631" : 2769.007, - "99.9385069541085" : 2771.007, - "99.93910871441581" : 2773.007, - "99.93957677974319" : 2774.015, - "99.94007886685472" : 2783.007, - "99.94043662717877" : 2785.007, - "99.94120716743093" : 2788.015, - "99.94164838744425" : 2790.015, - "99.94204708022735" : 2791.007, - "99.9428867272286" : 2795.007, - "99.94340024353325" : 2796.015, - "99.94393263129629" : 2802.015, - "99.94447910620435" : 2816.015, - "99.94501787305194" : 2823.007, - "99.94552740242875" : 2829.007, - "99.9458851627528" : 2831.007, - "99.94642020846774" : 2837.007, - "99.94691671388031" : 2840.015, - "99.94744378573958" : 2844.015, - "99.9478023434492" : 2850.015, - "99.94844025190218" : 2855.007, - "99.94904334118544" : 2858.015, - "99.94929292286767" : 2862.015, - "99.94980404701562" : 2866.015, - "99.95049484871116" : 2873.007, - "99.950753733225" : 2881.007, - "99.95120080073247" : 2883.007, - "99.95144985082432" : 2887.007, - "99.95167258719248" : 2889.007, - "99.95201067867255" : 2891.007, - "99.95215420807448" : 2897.007, - "99.9525645958459" : 2898.015, - "99.95286042589096" : 2899.007, - "99.95310309689829" : 2900.015, - "99.95321419928719" : 2907.007, - "99.95337314481004" : 2908.015, - "99.95377130600279" : 2911.007, - "99.95392413823632" : 2912.015, - "99.9541819595694" : 2913.007, - "99.95445147589078" : 2920.015, - "99.95460510550987" : 2926.015, - "99.95487010331304" : 2929.007, - "99.95512898782688" : 2932.015, - "99.9554354496795" : 2935.007, - "99.95596969800887" : 2937.007, - "99.95606804222871" : 2938.015, - "99.95633729275491" : 2940.015, - "99.9566065432811" : 2942.015, - "99.95686542779494" : 2944.015, - "99.95746213799366" : 2954.015, - "99.95768487436183" : 2955.007, - "99.9579546564784" : 2958.015, - "99.95810190701297" : 2960.015, - "99.9583865736601" : 2967.007, - "99.95852877408609" : 2972.015, - "99.95902527949866" : 2973.007, - "99.95954251693595" : 2975.007, - "99.95975010297836" : 2978.015, - "99.96011105284467" : 2982.015, - "99.96025165849952" : 2984.015, - "99.96065008548744" : 2991.007, - "99.96089169331401" : 2992.015, - "99.96106366280112" : 2998.015, - "99.9611893839254" : 2999.007, - "99.96145890024678" : 3004.015, - "99.96172841656816" : 3007.007, - "99.96199421175692" : 3008.015, - "99.96215873897874" : 3010.015, - "99.96273471715274" : 3013.007, - "99.96293459513468" : 3018.015, - "99.96334524870129" : 3020.015, - "99.96347841209085" : 3024.015, - "99.96378487394347" : 3026.015, - "99.96388428134406" : 3027.007, - "99.96415432925582" : 3033.007, - "99.96437307869616" : 3042.015, - "99.96480552746824" : 3045.007, - "99.96496234662959" : 3046.015, - "99.96509577581435" : 3049.007, - "99.96548383678991" : 3051.007, - "99.9656212529025" : 3057.007, - "99.96603961452958" : 3062.015, - "99.96620573652254" : 3065.007, - "99.96630992823653" : 3066.015, - "99.96684816349372" : 3074.015, - "99.96711900879106" : 3078.015, - "99.96738852511244" : 3082.015, - "99.96765777563863" : 3083.007, - "99.96806523966298" : 3084.015, - "99.96838419388946" : 3085.007, - "99.96873584092417" : 3094.015, - "99.96899791498028" : 3096.015, - "99.96927460777175" : 3098.015, - "99.96975357070187" : 3101.007, - "99.97008289094072" : 3105.007, - "99.97035240726211" : 3108.015, - "99.9705342111712" : 3127.007, - "99.97075535276824" : 3131.007, - "99.97114022420153" : 3133.007, - "99.97120560981797" : 3135.007, - "99.97155699105748" : 3137.007, - "99.97169998886903" : 3138.015, - "99.97196977098561" : 3147.007, - "99.97219729166717" : 3153.007, - "99.972494184893" : 3157.007, - "99.97267200187426" : 3172.015, - "99.9729330127496" : 3174.015, - "99.97328147024204" : 3175.007, - "99.9734148994268" : 3178.015, - "99.97385585364492" : 3179.007, - "99.97392682096032" : 3190.015, - "99.97412616735187" : 3191.007, - "99.97439594946844" : 3198.015, - "99.97465323921115" : 3229.007, - "99.97493445052083" : 3230.015, - "99.97520396684222" : 3236.015, - "99.97547002782615" : 3252.015, - "99.97567495591667" : 3269.007, - "99.97574326528017" : 3270.015, - "99.97614116067773" : 3281.007, - "99.97628229792295" : 3282.015, - "99.97655181424433" : 3285.007, - "99.9765783937632" : 3288.015, - "99.97681654625232" : 3289.007, - "99.97695369656971" : 3296.015, - "99.97709031529672" : 3297.007, - "99.97732820199064" : 3317.007, - "99.97762987952987" : 3320.015, - "99.9778204546802" : 3328.015, - "99.97816891217265" : 3329.007, - "99.97843470736139" : 3330.015, - "99.97867179666974" : 3331.007, - "99.97893652867774" : 3345.007, - "99.97924697745817" : 3359.007, - "99.97940778354737" : 3362.015, - "99.97951649377957" : 3363.007, - "99.97974029332849" : 3369.007, - "99.97991518656268" : 3394.015, - "99.98005552642233" : 3395.007, - "99.98023068545172" : 3404.015, - "99.98038617563714" : 3421.007, - "99.98059455906511" : 3422.015, - "99.98073888585259" : 3423.007, - "99.98086434118167" : 3424.015, - "99.98110010151409" : 3428.015, - "99.98140284223408" : 3430.015, - "99.98160085964969" : 3444.015, - "99.98182838033125" : 3460.015, - "99.98194214067203" : 3461.007, - "99.98216275067868" : 3471.007, - "99.98221165699341" : 3472.015, - "99.98248090751962" : 3476.015, - "99.98270763081561" : 3477.007, - "99.98288571359207" : 3488.015, - "99.98302020595757" : 3489.007, - "99.98305050660909" : 3490.015, - "99.98328945648376" : 3491.007, - "99.98355923860034" : 3492.015, - "99.98364721680781" : 3493.007, - "99.98382848912654" : 3494.015, - "99.9840961448816" : 3502.015, - "99.9843677875645" : 3519.007, - "99.98463730388588" : 3528.015, - "99.98490682020726" : 3540.015, - "99.98517633652865" : 3552.015, - "99.98544585285003" : 3562.015, - "99.98571536917142" : 3585.007, - "99.98577410990814" : 3611.007, - "99.9859848854928" : 3612.015, - "99.9862544018142" : 3620.015, - "99.98652365234038" : 3628.015, - "99.98679290286658" : 3629.007, - "99.98696779610077" : 3646.015, - "99.98706295077834" : 3647.007, - "99.98718495076997" : 3653.007, - "99.98733273289491" : 3654.015, - "99.98748210979099" : 3660.015, - "99.98760198342111" : 3661.007, - "99.98805941694094" : 3669.007, - "99.98820773065626" : 3670.015, - "99.98841026659008" : 3671.007, - "99.98864788748881" : 3673.007, - "99.98891394847274" : 3702.015, - "99.98911993974401" : 3703.007, - "99.98921934714461" : 3704.015, - "99.98942640159663" : 3706.015, - "99.9894885976708" : 3707.007, - "99.98952846694911" : 3722.015, - "99.99002763031358" : 3723.007, - "99.9901520224619" : 3728.015, - "99.99029714663496" : 3729.007, - "99.99056666295634" : 3737.007, - "99.99063231436796" : 3750.015, - "99.99083617927772" : 3751.007, - "99.99100894615042" : 3754.015, - "99.99110542980392" : 3755.007, - "99.99124630125395" : 3758.015, - "99.9913749461253" : 3759.007, - "99.99149747770731" : 3779.007, - "99.99164472824188" : 3780.015, - "99.99191451035846" : 3797.007, - "99.99218376088466" : 3802.015, - "99.99223186981382" : 3803.007, - "99.99245327720604" : 3804.015, - "99.99272279352742" : 3812.015, - "99.99281342968678" : 3828.015, - "99.9929923098488" : 3829.007, - "99.99321105928914" : 3830.015, - "99.993261560375" : 3831.007, - "99.99339552115013" : 3849.007, - "99.99353134249158" : 3850.015, - "99.99378278474012" : 3873.007, - "99.99403927709726" : 3878.015, - "99.99407037513434" : 3879.007, - "99.99420008318646" : 3989.007, - "99.99433989145572" : 3990.015, - "99.99447651018275" : 4012.015, - "99.9946096735723" : 4013.007, - "99.99481938597623" : 4014.015, - "99.9948789240985" : 4015.007, - "99.99508624434571" : 4071.007, - "99.99514844041988" : 4072.015, - "99.995348584197" : 4107.007, - "99.99541795674126" : 4108.015, - "99.99563564300085" : 4161.007, - "99.99568773885784" : 4162.015, - "99.99595698938404" : 4177.007, - "99.99610796105125" : 4221.023, - "99.99622650570542" : 4222.015, - "99.99636897192659" : 4236.031, - "99.9964960220268" : 4237.023, - "99.9965459915223" : 4256.031, - "99.9967655383482" : 4257.023, - "99.99686893267662" : 4298.015, - "99.99703505466958" : 4299.007, - "99.99718602633678" : 4300.031, - "99.99730457099096" : 4301.023, - "99.99735241412493" : 4317.023, - "99.99757435310754" : 4318.015, - "99.99777290211352" : 4322.015, - "99.99784360363373" : 4323.007, - "99.99809371690634" : 4353.023, - "99.9981133857503" : 4354.015, - "99.99831379532262" : 4502.015, - "99.9983826362765" : 4503.007, - "99.99846024847162" : 4525.023, - "99.99865215259788" : 4526.015, - "99.99878505019225" : 4580.031, - "99.99892166891927" : 4581.023, - "99.99895356434192" : 4615.007, - "99.99919118524066" : 4616.031, - "99.99919145103584" : 4624.031, - "99.99930680614776" : 4671.007, - "99.99946070156204" : 4672.031, - "99.99967759043605" : 4749.023, - "99.99973021788342" : 4750.015, - "99.99999096296358" : 4859.007, - "100.0" : 4860.031 - }, - "aggregatedEndToEndLatencyAvg" : 234.26833819498606, - "aggregatedEndToEndLatency50pct" : 100.0, - "aggregatedEndToEndLatency75pct" : 284.001, - "aggregatedEndToEndLatency95pct" : 911.003, - "aggregatedEndToEndLatency99pct" : 1553.007, - "aggregatedEndToEndLatency999pct" : 2500.015, - "aggregatedEndToEndLatency9999pct" : 3723.007, - "aggregatedEndToEndLatencyMax" : 4860.031 -} \ No newline at end of file diff --git a/blog/results/kafka/throughput/sync.json b/blog/results/kafka/throughput/sync.json deleted file mode 100644 index baa9a540..00000000 --- a/blog/results/kafka/throughput/sync.json +++ /dev/null @@ -1,3041 +0,0 @@ -{ - "workload" : "100-partitions-1000K-rate-4-producer", - "driver" : "Kafka", - "publishRate" : [ 599590.2471351388, 601174.6268855081, 536367.3273553957, 597058.4911254985, 618150.0246190743, 567436.9159989435, 562177.8667838611, 553867.4694451087, 578490.1761022257, 588345.7775994382, 621042.851003223, 526708.7456504045, 613906.5352691645, 622346.0188841533, 613008.5465021562, 633093.5399946645, 577415.95394357, 613751.59923315, 573462.9864980706, 617778.5683869056, 579211.1541577312, 592415.9110518487, 603584.8543145321, 606676.0486677226, 595552.0461178117, 602896.274858412, 589935.8827496587, 582786.3406876931, 573500.9110676995, 614629.7024771104, 557234.378071359, 618482.7542612578, 581529.3408626128, 611790.6013163315, 579329.9733287552, 599620.9179811089, 589425.2440782933, 603134.5543109551, 565223.6959016058, 606764.1629020413, 640329.58272088, 559630.2220154932, 641920.4887966333, 565825.3728307928, 653816.0038424243, 574997.2823295947, 603691.1963385361, 590410.9364461305, 519556.03344868164, 581611.2454289275, 606356.6519721786, 597810.9969921105, 574837.1874527903, 587297.4790789413, 579801.3698521937, 613404.4796091211, 570572.3033689467, 570195.9032795515, 539070.0349611666, 592941.8281447807 ], - "consumeRate" : [ 600894.8563222273, 600940.3084218149, 536224.0235144596, 596436.1679903832, 617650.4853040716, 568586.0417923221, 561528.1976750321, 553667.5062908835, 579075.390326671, 587857.9205088492, 621744.8301680146, 526774.5366634909, 613229.7611580681, 622849.1356047044, 609417.5778413884, 636546.0523339566, 576874.3923089285, 614337.4883733299, 573712.5655441636, 617050.8722672719, 578816.8527077105, 593788.0376061107, 602561.7286458858, 606152.4498677083, 596498.425702986, 602896.274858412, 590235.3544820542, 582529.4740874574, 573558.4070981302, 614529.6011255581, 556382.800705607, 619081.5973324834, 581181.1043416478, 612888.3926567171, 579730.7953909251, 598118.6822006338, 589962.4357236382, 603226.177969816, 564989.8002470233, 606081.7720530166, 640312.7226457347, 559583.9217258289, 642882.2402557395, 564815.4149538999, 654113.0431692356, 575188.9501608572, 603948.6647536953, 589763.7142786535, 520755.9788253694, 581565.8888816626, 605621.2663874407, 598090.310620619, 574145.7320670148, 587758.5603053691, 579180.1679692947, 613855.1319372361, 571868.8518611527, 569104.0970005243, 539365.7370480166, 593042.0920599522 ], - "backlog" : [ 4056, 6433, 7887, 14200, 19266, 7617, 14196, 16224, 10288, 15229, 8112, 7447, 14315, 9210, 45600, 10592, 16083, 10149, 7616, 14987, 18984, 5070, 15440, 20748, 11154, 11154, 8112, 10722, 10140, 11154, 19780, 13715, 17246, 6090, 2028, 17238, 11795, 10866, 13237, 20152, 20324, 20794, 11041, 21275, 18263, 16318, 13710, 20280, 8112, 8572, 16024, 13182, 20182, 15506, 21808, 17238, 4111, 15170, 12171, 11156 ], - "publishLatencyAvg" : [ 216.62008511714458, 219.15407764481466, 238.72590318372642, 217.91959028683212, 209.7238845717675, 224.78613325140614, 230.27096747972905, 232.6682351180175, 223.05302827644107, 218.05222894246924, 210.3160808084113, 245.98586831185474, 208.81982980813243, 208.2837221694863, 209.71713517822076, 205.42876044592415, 221.09183694453594, 210.92378277504437, 223.85621192445342, 209.72467555244103, 223.91876263471502, 218.78917638138014, 211.04092287955015, 215.1610532927658, 215.10285166355055, 215.48875926756654, 216.24025620624136, 223.27151600928394, 226.66411291903813, 206.04451628944253, 233.39287723430448, 206.9300093280425, 224.2920469814364, 211.01272604564193, 222.55674880362966, 216.9308771813773, 216.94722466952092, 215.89481356947877, 227.01918944681154, 210.0089195597037, 204.61749561167176, 231.1869095678463, 200.789351825807, 227.10038613290843, 200.01981764115524, 221.37252524242066, 215.53787975039435, 214.6479884687909, 248.56011216614328, 223.04525782959377, 215.29587570205044, 216.72262915774837, 220.4038949154215, 222.1057533286814, 222.03084314621958, 211.82323101675522, 225.65149194141483, 224.91715934752443, 241.21723258312207, 215.96832788961134 ], - "publishLatency50pct" : [ 94.142, 82.951, 83.579, 90.694, 90.325, 92.724, 79.199, 75.275, 85.152, 81.972, 96.79, 98.549, 98.307, 89.928, 90.291, 83.763, 97.658, 84.056, 80.774, 81.503, 99.662, 95.323, 98.727, 79.518, 85.318, 87.993, 91.253, 90.468, 89.237, 75.498, 70.36, 88.685, 94.3, 86.597, 90.827, 101.358, 91.154, 89.656, 92.001, 79.698, 96.481, 91.327, 102.267, 92.818, 90.858, 96.384, 82.635, 80.642, 84.441, 81.385, 84.671, 89.298, 89.662, 84.298, 76.797, 94.463, 81.902, 91.335, 85.95, 92.427 ], - "publishLatency75pct" : [ 258.908, 248.67, 279.159, 270.105, 257.496, 270.883, 254.017, 266.509, 262.437, 254.965, 261.689, 297.961, 262.553, 249.799, 252.556, 244.632, 279.879, 241.506, 269.985, 238.632, 268.299, 275.757, 253.248, 256.882, 245.848, 264.329, 274.775, 265.667, 273.039, 233.736, 280.517, 236.871, 258.177, 254.812, 255.436, 274.317, 261.12, 257.984, 257.261, 244.642, 247.163, 271.035, 250.42, 280.531, 248.495, 269.677, 262.321, 229.431, 294.265, 262.805, 265.263, 263.863, 254.301, 269.081, 260.109, 253.045, 261.645, 276.387, 289.025, 259.178 ], - "publishLatency95pct" : [ 823.171, 893.691, 982.791, 827.775, 808.195, 901.443, 1005.515, 1025.943, 949.899, 902.907, 784.007, 996.611, 760.291, 813.819, 817.831, 823.819, 830.167, 839.819, 917.851, 868.411, 868.723, 849.463, 781.575, 864.215, 882.951, 854.471, 844.303, 895.459, 886.859, 850.295, 999.211, 825.543, 848.455, 846.211, 892.623, 792.607, 879.387, 841.167, 895.243, 842.707, 740.167, 891.315, 705.391, 886.183, 742.491, 852.967, 871.723, 908.879, 1008.847, 888.847, 870.435, 836.583, 899.827, 880.663, 907.155, 810.919, 921.311, 872.739, 1003.963, 846.931 ], - "publishLatency99pct" : [ 1370.791, 1507.719, 1700.575, 1413.119, 1276.071, 1408.471, 1718.511, 1676.823, 1504.247, 1498.167, 1340.111, 1630.999, 1235.447, 1365.423, 1284.167, 1297.167, 1348.911, 1494.783, 1475.575, 1467.063, 1472.439, 1358.455, 1396.271, 1462.199, 1410.711, 1423.311, 1276.327, 1522.327, 1503.015, 1470.799, 1639.735, 1455.583, 1653.255, 1436.663, 1555.111, 1382.615, 1277.623, 1327.215, 1610.231, 1533.815, 1311.647, 1627.959, 1233.103, 1537.839, 1170.311, 1457.575, 1333.623, 1663.055, 1736.559, 1513.535, 1382.223, 1446.639, 1477.847, 1440.471, 1611.599, 1398.887, 1567.183, 1429.383, 1643.191, 1400.703 ], - "publishLatency999pct" : [ 2656.239, 2440.463, 2749.887, 2445.855, 2092.839, 2118.063, 2478.559, 2855.791, 2330.591, 2408.879, 2173.327, 2200.575, 1876.047, 2123.679, 2096.951, 2041.119, 2133.295, 2108.479, 2058.799, 2206.655, 2309.151, 2069.447, 2252.079, 2179.503, 2542.159, 1956.439, 2133.231, 2150.591, 2552.879, 2458.831, 2319.695, 2083.831, 3052.927, 2072.367, 2537.823, 2061.167, 1863.583, 2205.407, 2939.519, 2674.799, 2713.215, 2856.303, 1812.655, 2368.655, 1830.423, 2341.407, 2008.759, 2692.895, 2524.943, 2678.591, 1931.255, 2403.183, 2622.031, 2265.215, 2354.527, 2153.103, 2765.487, 2051.095, 2426.431, 2035.975 ], - "publishLatency9999pct" : [ 3318.559, 4057.295, 4130.607, 3114.351, 2517.087, 3809.743, 3358.207, 3646.703, 2744.319, 2744.863, 2621.215, 3108.719, 2474.159, 2835.903, 3067.983, 2761.343, 3160.719, 3108.783, 2583.903, 2499.807, 3477.183, 2873.679, 2526.431, 3029.679, 3748.735, 2585.887, 2486.239, 2390.559, 2932.255, 3337.647, 2792.047, 3752.255, 3631.679, 3091.951, 3383.823, 2864.271, 3326.559, 2755.375, 3579.775, 2881.167, 3967.487, 5064.863, 2580.575, 2906.031, 2335.375, 2631.791, 2947.695, 3080.607, 3222.047, 2961.711, 2446.767, 2874.767, 3049.391, 2583.455, 2873.823, 2608.975, 3209.839, 2438.063, 3107.199, 2350.031 ], - "publishLatencyMax" : [ 3322.623, 4059.087, 4131.551, 3116.847, 2520.767, 3813.759, 3365.679, 3653.023, 2752.591, 2750.543, 2634.879, 3113.023, 2497.663, 2842.495, 3078.303, 2764.127, 3171.023, 3114.239, 2584.047, 2512.239, 3488.143, 2881.807, 2527.039, 3030.975, 3749.647, 2600.303, 2495.359, 2393.503, 2935.871, 3341.087, 2792.607, 3753.727, 3641.935, 3099.759, 3386.879, 2864.447, 3343.679, 2756.319, 3582.079, 2884.031, 3970.751, 5065.055, 2584.239, 2914.223, 2336.879, 2638.127, 2950.175, 3091.775, 3223.919, 2970.447, 2451.119, 2875.423, 3049.583, 2586.607, 2879.151, 2621.791, 3209.983, 2438.223, 3112.623, 2350.623 ], - "aggregatedPublishLatencyAvg" : 218.63026293668852, - "aggregatedPublishLatency50pct" : 88.445, - "aggregatedPublishLatency75pct" : 260.227, - "aggregatedPublishLatency95pct" : 865.551, - "aggregatedPublishLatency99pct" : 1463.207, - "aggregatedPublishLatency999pct" : 2341.407, - "aggregatedPublishLatency9999pct" : 3243.119, - "aggregatedPublishLatencyMax" : 5065.055, - "aggregatedPublishLatencyQuantiles" : { - "2.7852487045355673E-7" : 1.008, - "0.5005607193060754" : 15.178, - "1.0004457372764304" : 15.632, - "1.5001176837208885" : 16.025, - "2.0008151587383565" : 16.414, - "2.500353413244997" : 16.844, - "3.0007896319339795" : 17.384, - "3.5005058638328395" : 18.077, - "4.000361358166926" : 18.974, - "4.500133573564748" : 19.974, - "5.000470358874979" : 20.978, - "5.500269034135493" : 21.983, - "6.000477419480444" : 23.039, - "6.500167748566352" : 24.074, - "7.000193978646028" : 25.048, - "7.500398464642792" : 25.979, - "8.00008767962922" : 26.669, - "8.500182426827026" : 27.219, - "9.00013401224142" : 27.682, - "9.500614237859933" : 28.092, - "10.00116325912145" : 28.482, - "10.501191717400088" : 28.862, - "11.000123901788621" : 29.245, - "11.500363203394194" : 29.635, - "12.000689126234477" : 30.041, - "12.500559660911568" : 30.462, - "13.000566394250312" : 30.901, - "13.5000862661155" : 31.361, - "14.000707982368207" : 31.822, - "14.500562084077941" : 32.28, - "15.000576337588186" : 32.739, - "15.50004328972799" : 33.197, - "16.000127174455848" : 33.656, - "16.50099761341787" : 34.134, - "17.000829990187707" : 34.592, - "17.500562376529054" : 35.056, - "18.00024017199579" : 35.52, - "18.500549104818976" : 35.985, - "19.000928782959257" : 36.433, - "19.500997348819244" : 36.889, - "20.000568747785465" : 37.334, - "20.50092029491383" : 37.794, - "21.000515647018915" : 38.253, - "21.501011470030175" : 38.717, - "22.000991464981354" : 39.198, - "22.500688200139283" : 39.671, - "23.000302491935557" : 40.156, - "23.50040754455357" : 40.634, - "24.000759370206804" : 41.13, - "24.500445799944526" : 41.606, - "25.00098173053713" : 42.07, - "25.50039548442668" : 42.559, - "26.000919716974725" : 43.051, - "26.500327900366862" : 43.522, - "27.000297032848096" : 44.019, - "27.50094381633914" : 44.553, - "28.000016377262384" : 45.079, - "28.500624445796436" : 45.619, - "29.000063545449194" : 46.186, - "29.500216225820054" : 46.763, - "30.000546883583137" : 47.351, - "30.500776993867984" : 47.926, - "31.00077509293574" : 48.553, - "31.50071692997967" : 49.199, - "32.00020699968372" : 49.873, - "32.500224038442674" : 50.534, - "33.00073211654823" : 51.219, - "33.50046700961341" : 51.925, - "34.00053139760034" : 52.649, - "34.50035959649712" : 53.372, - "35.00054904215088" : 54.158, - "35.50016946149431" : 54.937, - "36.000055872089014" : 55.754, - "36.50034280144743" : 56.559, - "37.00018548363748" : 57.39, - "37.500396375706266" : 58.261, - "38.000415921189045" : 59.101, - "38.50003383380864" : 59.997, - "39.00031881349297" : 60.955, - "39.50004925016022" : 61.887, - "40.0001423262088" : 62.861, - "40.50006243831283" : 63.855, - "41.000210383760894" : 64.86, - "41.500485336549886" : 65.933, - "42.00008848735134" : 67.039, - "42.50005204933517" : 68.135, - "43.0000899774594" : 69.282, - "43.50017887563493" : 70.451, - "44.000051917035854" : 71.604, - "44.500187050339875" : 72.797, - "45.00023667650867" : 74.053, - "45.50028073218005" : 75.333, - "46.00011060222606" : 76.677, - "46.50004018417568" : 77.988, - "47.0002432775481" : 79.389, - "47.50015029898322" : 80.825, - "48.000124166387245" : 82.29, - "48.50025567886795" : 83.767, - "49.000174676872504" : 85.315, - "49.50014910132627" : 86.902, - "50.00024941902149" : 88.445, - "50.25015223821263" : 89.252, - "50.5002168803535" : 90.088, - "50.75028180101924" : 90.951, - "51.000254808477735" : 91.766, - "51.25006097953882" : 92.668, - "51.500250400821656" : 93.549, - "51.7501560052615" : 94.41, - "52.00007581446974" : 95.337, - "52.25008224491268" : 96.317, - "52.500144658854595" : 97.233, - "52.75014969667318" : 98.157, - "53.00003942519541" : 99.105, - "53.25010434586115" : 100.089, - "53.50020965263311" : 101.105, - "53.75023335161803" : 102.057, - "54.00018825495994" : 103.06, - "54.25025401120029" : 104.075, - "54.50015098136915" : 105.098, - "54.75007051205252" : 106.18, - "55.00009866743536" : 107.226, - "55.25018587009074" : 108.298, - "55.50004050447929" : 109.425, - "55.75003300867871" : 110.508, - "56.00015335579367" : 111.656, - "56.25013026260035" : 112.775, - "56.50015145486143" : 113.881, - "56.750120284446865" : 115.052, - "57.00003424463282" : 116.222, - "57.25015319912343" : 117.408, - "57.500118686410424" : 118.623, - "57.750085566321765" : 119.871, - "58.00014992993776" : 121.062, - "58.25018198466879" : 122.326, - "58.500023806913305" : 123.59, - "58.75010543907127" : 124.882, - "59.00016256104064" : 126.203, - "59.25005841711002" : 127.592, - "59.50015508961099" : 128.962, - "59.750103865405755" : 130.3, - "60.000093305831605" : 131.67, - "60.25017995143724" : 133.025, - "60.50010755934185" : 134.454, - "60.750009542958374" : 135.815, - "61.00003491309251" : 137.204, - "61.250115431151" : 138.665, - "61.50010292190275" : 140.135, - "61.750025237834826" : 141.624, - "62.00010909819176" : 143.155, - "62.25002500805181" : 144.662, - "62.50008519379475" : 146.18, - "62.75006015092733" : 147.775, - "63.00007354449205" : 149.425, - "63.25005212244795" : 151.053, - "63.50003989172457" : 152.675, - "63.75014965489446" : 154.374, - "64.00007085672705" : 156.133, - "64.25008230061766" : 157.773, - "64.50005224430258" : 159.48, - "64.7501154938191" : 161.156, - "65.00006928306152" : 162.919, - "65.25013225405317" : 164.749, - "65.50014007712048" : 166.616, - "65.75009553751212" : 168.507, - "66.00011784387269" : 170.344, - "66.25012705956433" : 172.309, - "66.50000926791506" : 174.341, - "66.75002015475594" : 176.212, - "67.00005610883515" : 178.151, - "67.25006643862629" : 180.188, - "67.50013637273969" : 182.34, - "67.75008403443498" : 184.343, - "68.00000941414062" : 186.526, - "68.25011054303953" : 188.627, - "68.50010861773636" : 190.737, - "68.75005265860833" : 192.933, - "69.00006187429997" : 195.164, - "69.25008473771028" : 197.386, - "69.50009172520296" : 199.741, - "69.75007754480549" : 202.199, - "70.00000682385932" : 204.599, - "70.25003163694372" : 207.1, - "70.50005227215506" : 209.554, - "70.75010438067676" : 212.039, - "71.00007961633422" : 214.526, - "71.25003981164868" : 217.054, - "71.50006044686" : 219.711, - "71.7500579645071" : 222.321, - "72.00004434115938" : 224.852, - "72.25003294601062" : 227.546, - "72.50009034650485" : 230.323, - "72.75008340775402" : 233.141, - "73.00007396227934" : 235.918, - "73.25001104002955" : 238.939, - "73.50006175592691" : 241.916, - "73.7500422835569" : 245.043, - "74.00001389839103" : 248.011, - "74.25008717480289" : 251.11, - "74.50005489028885" : 254.134, - "74.750017870852" : 257.126, - "75.0000577242794" : 260.227, - "75.12503211217678" : 261.867, - "75.25000594302442" : 263.543, - "75.37510678121299" : 265.287, - "75.50006473614302" : 266.891, - "75.62505499995801" : 268.693, - "75.75014664682585" : 270.239, - "75.87503246381443" : 271.949, - "76.00015976186569" : 273.647, - "76.12508317971178" : 275.271, - "76.25010129601382" : 276.839, - "76.37514531512882" : 278.733, - "76.50011608220288" : 280.469, - "76.62507905058058" : 282.111, - "76.75013226101629" : 283.839, - "76.87506988363077" : 285.539, - "77.00002588888671" : 287.317, - "77.1250473474872" : 288.981, - "77.25000001044468" : 290.787, - "77.37509304993688" : 292.623, - "77.5000189745068" : 294.393, - "77.6250930743078" : 296.309, - "77.75012428127876" : 298.187, - "77.8750783368606" : 299.905, - "78.00001651652482" : 301.805, - "78.12500009574292" : 303.669, - "78.25001403417191" : 305.737, - "78.37507337215477" : 307.675, - "78.50012769668999" : 309.419, - "78.6250046008827" : 311.375, - "78.75004416359977" : 313.417, - "78.87503721266347" : 315.453, - "79.00009989294479" : 317.527, - "79.12505924049917" : 319.687, - "79.250090725995" : 321.781, - "79.3750667850416" : 323.925, - "79.5001069048084" : 325.939, - "79.62512307143635" : 328.159, - "79.7500119521985" : 330.247, - "79.87500527978708" : 332.231, - "80.00009581255543" : 334.575, - "80.1251033449124" : 336.705, - "80.25004096752689" : 338.857, - "80.37504125823722" : 341.015, - "80.50003430730092" : 343.291, - "80.6250813901895" : 345.565, - "80.75003823102003" : 347.887, - "80.87500454169617" : 350.119, - "81.00009980938732" : 352.243, - "81.12503019035518" : 354.327, - "81.25002908844115" : 356.821, - "81.37509009757325" : 359.297, - "81.50003830413281" : 361.673, - "81.62501492022915" : 364.079, - "81.75000574109389" : 366.649, - "81.87502831379386" : 369.211, - "82.00002219843218" : 371.831, - "82.12506761017153" : 374.195, - "82.25004868266579" : 376.881, - "82.37503838943105" : 379.349, - "82.5000280961963" : 382.245, - "82.6250269942823" : 384.851, - "82.7500718489719" : 387.587, - "82.87502256225528" : 390.205, - "83.00003705773402" : 392.993, - "83.12505378141171" : 395.661, - "83.25007384738784" : 398.415, - "83.3750398795391" : 401.187, - "83.50005103271938" : 404.047, - "83.62502959848983" : 406.983, - "83.75001373475767" : 409.969, - "83.87500817644573" : 412.993, - "84.00005581638403" : 415.979, - "84.12503438215448" : 418.671, - "84.2500282667928" : 421.363, - "84.37504638309483" : 424.585, - "84.50003915363367" : 427.633, - "84.62502858187405" : 430.521, - "84.75001717453982" : 433.741, - "84.8750386331403" : 437.065, - "85.00007680323303" : 440.131, - "85.12501943929517" : 443.529, - "85.25009186794696" : 446.457, - "85.37500887972102" : 449.573, - "85.50001891880183" : 452.725, - "85.62501196786553" : 456.145, - "85.75007158437327" : 459.915, - "85.87507800263074" : 463.279, - "86.00001673934472" : 466.635, - "86.1250476677908" : 469.953, - "86.25005937802082" : 473.415, - "86.37503042361976" : 476.921, - "86.50006023796635" : 480.395, - "86.62500928010053" : 484.129, - "86.75003213132537" : 487.839, - "86.87507113699269" : 491.207, - "87.00004134701702" : 494.897, - "87.12500041604653" : 498.753, - "87.25002995186826" : 502.235, - "87.37505336014284" : 505.835, - "87.50000407342623" : 509.345, - "87.56255379620833" : 511.349, - "87.62502998842464" : 513.211, - "87.68750339539226" : 514.911, - "87.75001941666503" : 516.853, - "87.8125128774233" : 518.657, - "87.87503948264117" : 520.655, - "87.93751288960877" : 522.793, - "88.00003113908052" : 524.571, - "88.06250092522481" : 526.863, - "88.12503532913904" : 528.887, - "88.18760009226415" : 530.955, - "88.25016429833951" : 532.899, - "88.31259007755428" : 534.823, - "88.37506738387006" : 537.091, - "88.43761989190088" : 539.279, - "88.5000855001721" : 541.547, - "88.56254609499567" : 543.359, - "88.62510946549644" : 545.339, - "88.6875416507832" : 547.443, - "88.75001171545236" : 549.291, - "88.81258260612462" : 551.503, - "88.87506938228601" : 553.747, - "88.93759208815568" : 555.723, - "89.00005769642692" : 557.959, - "89.06253082486965" : 560.239, - "89.12509948734295" : 562.431, - "89.18754643444785" : 564.623, - "89.25005967047193" : 566.831, - "89.3125400405613" : 568.947, - "89.37510953860921" : 571.159, - "89.43751080763536" : 573.455, - "89.5000630371413" : 575.703, - "89.56260691090114" : 577.891, - "89.62500957255165" : 579.919, - "89.68759856734049" : 582.071, - "89.75005554134073" : 584.383, - "89.81257518343683" : 586.927, - "89.87501126807179" : 589.223, - "89.93750277915598" : 591.651, - "90.00010012969094" : 594.171, - "90.06250306986631" : 596.283, - "90.12504137312872" : 598.651, - "90.1875518239041" : 601.247, - "90.25008734191782" : 603.899, - "90.31251339965743" : 606.271, - "90.37500156844318" : 609.027, - "90.43756271074497" : 611.503, - "90.50007371857009" : 614.131, - "90.5625329207693" : 616.855, - "90.62504197892032" : 619.571, - "90.68755326527031" : 622.255, - "90.7500314071607" : 624.655, - "90.81257388829619" : 627.263, - "90.8750687416788" : 629.971, - "90.93752961502724" : 632.439, - "91.0000514853223" : 634.803, - "91.06251625801892" : 637.319, - "91.12507712179585" : 640.087, - "91.18757977387484" : 643.387, - "91.25007407020773" : 646.227, - "91.31250820516861" : 648.919, - "91.37511112620096" : 651.975, - "91.43759511711364" : 654.947, - "91.50006796703151" : 657.759, - "91.56257117616025" : 660.555, - "91.62501812326516" : 663.651, - "91.68751687599598" : 666.431, - "91.75004849466151" : 669.475, - "91.81257147905605" : 672.315, - "91.87506299014024" : 675.339, - "91.93756703484358" : 678.227, - "92.00004239148528" : 681.307, - "92.06251245615444" : 684.579, - "92.12507081320753" : 687.843, - "92.18750244144456" : 691.211, - "92.25005745619922" : 694.035, - "92.31254451088547" : 696.819, - "92.37504521329038" : 700.167, - "92.43751945583259" : 703.723, - "92.50001486626496" : 707.103, - "92.5625398003336" : 710.559, - "92.6250104220525" : 714.295, - "92.6875375843201" : 717.611, - "92.75005722641619" : 720.871, - "92.8125136433667" : 724.623, - "92.8750775709172" : 728.179, - "92.93755571280761" : 731.283, - "93.00003051239956" : 734.987, - "93.06255099007026" : 738.323, - "93.12505865559693" : 741.899, - "93.18755462307905" : 745.119, - "93.25008457059535" : 748.523, - "93.31253653114793" : 752.635, - "93.37506731423885" : 756.071, - "93.43750841232148" : 760.203, - "93.50004309476058" : 764.031, - "93.56252680714839" : 767.787, - "93.62506121106263" : 771.835, - "93.68755495034577" : 775.559, - "93.75001275992062" : 778.987, - "93.7812766195793" : 780.903, - "93.81251234822605" : 782.951, - "93.8437547614697" : 784.607, - "93.87501611440453" : 786.219, - "93.90628610161036" : 788.175, - "93.93753993437369" : 790.191, - "93.96878736106501" : 792.275, - "94.00002810315942" : 794.147, - "94.0312579827839" : 796.179, - "94.06253019818868" : 798.623, - "94.09376620536031" : 800.639, - "94.12504287716303" : 802.623, - "94.15626078021808" : 804.971, - "94.18750068673788" : 807.103, - "94.21876231819759" : 809.255, - "94.25003202687854" : 811.243, - "94.28125939977919" : 813.515, - "94.3125491622508" : 815.587, - "94.34377569957684" : 817.687, - "94.37502061954432" : 819.863, - "94.40629394904859" : 822.079, - "94.43751797965078" : 824.507, - "94.46880161457526" : 826.551, - "94.50000308466294" : 828.807, - "94.53126360202316" : 831.039, - "94.56253386775386" : 833.855, - "94.59378240854466" : 836.111, - "94.62505100312612" : 838.167, - "94.65625804371122" : 840.539, - "94.68751967517093" : 842.759, - "94.718774064984" : 845.039, - "94.75000589428257" : 847.115, - "94.78131598906974" : 849.275, - "94.81252748605276" : 851.083, - "94.8437710133959" : 853.079, - "94.87504378585042" : 855.503, - "94.90627450104951" : 857.835, - "94.93751942101699" : 860.439, - "94.96878912969794" : 863.035, - "95.0000577242794" : 865.551, - "95.03126532191425" : 867.855, - "95.06254199371695" : 870.047, - "95.09375265512537" : 872.507, - "95.12502180675658" : 874.891, - "95.15631324037741" : 876.995, - "95.18756345231743" : 879.575, - "95.2188094863844" : 882.431, - "95.25003936600888" : 885.203, - "95.2813121384634" : 887.931, - "95.3125681994257" : 890.235, - "95.34378164608282" : 893.167, - "95.3750906267705" : 895.247, - "95.40627900618928" : 897.907, - "95.43754704372101" : 900.087, - "95.46876578235067" : 902.799, - "95.50001181641763" : 905.379, - "95.53126481360636" : 908.011, - "95.56250109930285" : 910.603, - "95.59376105961333" : 913.375, - "95.6250079292549" : 916.531, - "95.65628014465969" : 919.283, - "95.68753592709712" : 921.927, - "95.71878251821381" : 924.515, - "95.75002103210927" : 927.343, - "95.78128656291717" : 930.175, - "95.81254819437689" : 932.955, - "95.84376943973037" : 935.875, - "95.87502299396884" : 939.059, - "95.9062567729415" : 942.411, - "95.93750865603074" : 945.803, - "95.9687594250205" : 948.787, - "96.00001854975638" : 951.535, - "96.03125010053007" : 954.511, - "96.0625161883877" : 957.555, - "96.0937675144272" : 960.947, - "96.12502691768795" : 963.855, - "96.15626849535698" : 967.139, - "96.18751982139648" : 970.323, - "96.21875443594375" : 973.459, - "96.25000576198326" : 976.627, - "96.28125430277406" : 979.479, - "96.31254378672081" : 982.755, - "96.34378230061627" : 985.799, - "96.37503724747909" : 989.327, - "96.40627353317558" : 992.503, - "96.4375020201757" : 995.543, - "96.46877172885665" : 998.935, - "96.50004867918423" : 1001.963, - "96.53125627681908" : 1005.647, - "96.56251178073163" : 1009.083, - "96.59375614364937" : 1012.303, - "96.62502947315363" : 1015.935, - "96.65626158097707" : 1019.715, - "96.68751429964092" : 1023.447, - "96.71877927339908" : 1026.319, - "96.75001528057071" : 1029.823, - "96.78126688513508" : 1033.503, - "96.81250567755541" : 1037.091, - "96.84375533244568" : 1040.351, - "96.87504342376809" : 1043.535, - "96.89065446423214" : 1045.363, - "96.90627720274074" : 1047.583, - "96.92187933040894" : 1049.159, - "96.93750179039269" : 1050.871, - "96.95315962303496" : 1053.063, - "96.96879600926223" : 1055.455, - "96.98448810046358" : 1057.007, - "97.00003480168256" : 1059.127, - "97.01563135885335" : 1061.231, - "97.0313150943086" : 1063.431, - "97.04689772523585" : 1065.631, - "97.06252269194343" : 1068.063, - "97.07812621223597" : 1069.727, - "97.0937770817565" : 1071.183, - "97.10950900201433" : 1073.447, - "97.12500083383384" : 1075.471, - "97.1406277502155" : 1077.103, - "97.15629366007903" : 1079.583, - "97.17191222071459" : 1081.695, - "97.18757228155583" : 1084.231, - "97.20317440922403" : 1086.583, - "97.21877347311866" : 1089.583, - "97.23439454047804" : 1091.791, - "97.25001337963846" : 1093.663, - "97.26568987344707" : 1095.967, - "97.28126860502616" : 1098.015, - "97.29690805502699" : 1099.975, - "97.31250210547394" : 1101.911, - "97.32818305568048" : 1104.135, - "97.3437745994036" : 1106.159, - "97.35939121036506" : 1108.367, - "97.37504263693532" : 1110.679, - "97.3906731741403" : 1112.807, - "97.40627697295773" : 1114.655, - "97.42193369150053" : 1116.791, - "97.43757731937443" : 1118.735, - "97.4531437958592" : 1120.439, - "97.46876347059424" : 1123.087, - "97.48438342385415" : 1125.167, - "97.50000031334048" : 1127.127, - "97.51566399500504" : 1129.463, - "97.53125247495458" : 1131.975, - "97.54693537483521" : 1134.143, - "97.56252385478476" : 1136.663, - "97.57815856986281" : 1138.807, - "97.59377072442634" : 1140.623, - "97.6094344060909" : 1142.543, - "97.62505185262698" : 1144.767, - "97.64070884969465" : 1146.647, - "97.65626975568202" : 1149.231, - "97.67188079614607" : 1151.647, - "97.68751161187593" : 1154.231, - "97.70313574300889" : 1156.759, - "97.71879079040248" : 1159.199, - "97.73445670026601" : 1161.791, - "97.75001816330311" : 1163.911, - "97.76569493563659" : 1166.407, - "97.78130346937681" : 1168.647, - "97.79688359358025" : 1171.287, - "97.81256537936139" : 1173.463, - "97.82813770486845" : 1176.055, - "97.84377241994649" : 1178.967, - "97.85939209468152" : 1181.639, - "97.87501176941656" : 1183.783, - "97.89065456171583" : 1186.343, - "97.90626448808041" : 1188.679, - "97.92189363266104" : 1191.743, - "97.93755230087794" : 1194.031, - "97.95313381770572" : 1197.007, - "97.96877131803247" : 1200.471, - "97.9844127177074" : 1203.983, - "98.0000243152212" : 1207.023, - "98.01564176175727" : 1210.095, - "98.03131547031717" : 1212.519, - "98.04697107476049" : 1215.423, - "98.06251916860381" : 1218.111, - "98.07814831318446" : 1221.247, - "98.09375099790239" : 1224.479, - "98.10939963922395" : 1227.279, - "98.1250616497393" : 1230.799, - "98.14063481082097" : 1233.735, - "98.15632550939796" : 1236.879, - "98.17187750258948" : 1240.159, - "98.18750803979447" : 1243.751, - "98.20313969109893" : 1247.423, - "98.21877579880132" : 1250.479, - "98.23438823188972" : 1253.111, - "98.25000957777398" : 1256.479, - "98.2656454069515" : 1259.951, - "98.28126703136063" : 1262.671, - "98.29689784709049" : 1266.063, - "98.31253228364366" : 1269.215, - "98.32813691803568" : 1272.767, - "98.34379335805362" : 1277.231, - "98.35941331131353" : 1280.503, - "98.37502073095426" : 1283.423, - "98.39063845601521" : 1286.543, - "98.40625061057874" : 1290.679, - "98.42188281893294" : 1294.423, - "98.43756655438818" : 1298.919, - "98.44532040825675" : 1300.615, - "98.45313414497245" : 1303.071, - "98.46096570727985" : 1305.159, - "98.46877359497329" : 1306.639, - "98.47657535511956" : 1308.959, - "98.48438797773578" : 1310.639, - "98.49219057345667" : 1312.495, - "98.50003160560968" : 1314.535, - "98.50782222476113" : 1316.191, - "98.51567579053331" : 1318.191, - "98.52348005740342" : 1319.631, - "98.5312676127813" : 1322.119, - "98.53906658767887" : 1324.199, - "98.5468819955438" : 1326.591, - "98.55471467195069" : 1328.007, - "98.5625019488037" : 1330.087, - "98.57034353800645" : 1332.239, - "98.57813165043407" : 1333.975, - "98.58599217932802" : 1336.207, - "98.59376636551211" : 1338.415, - "98.60157425320554" : 1340.671, - "98.60940135911503" : 1342.871, - "98.61723849191985" : 1344.695, - "98.62500125858426" : 1347.047, - "98.63286819355022" : 1349.439, - "98.64066939664676" : 1350.959, - "98.6484611298977" : 1353.399, - "98.65627932301132" : 1355.743, - "98.66408358988143" : 1358.303, - "98.67190484676864" : 1360.663, - "98.67968905984807" : 1362.799, - "98.68751839395652" : 1364.695, - "98.69531792590384" : 1366.719, - "98.70312999147032" : 1368.951, - "98.71096350345182" : 1371.295, - "98.71875050177997" : 1374.303, - "98.72656340292106" : 1376.743, - "98.73438271013417" : 1379.319, - "98.74220898046904" : 1381.743, - "98.75000851241636" : 1383.999, - "98.75782698405486" : 1385.919, - "98.76564629126797" : 1387.847, - "98.77344498764067" : 1390.351, - "98.78125788878177" : 1392.831, - "98.78906521942544" : 1394.783, - "98.79689483205877" : 1397.103, - "98.8046893505584" : 1399.935, - "98.81250865777152" : 1402.231, - "98.82033353548204" : 1404.519, - "98.82813418152884" : 1407.063, - "98.83595627399065" : 1409.927, - "98.84375162806491" : 1412.223, - "98.85156815002931" : 1415.239, - "98.85938912839165" : 1418.463, - "98.86721456315192" : 1421.551, - "98.87502885691735" : 1423.671, - "98.88282476804136" : 1426.063, - "98.8906588370726" : 1428.807, - "98.89848761413131" : 1430.415, - "98.90627294131023" : 1432.239, - "98.91406578866065" : 1435.087, - "98.92188788112247" : 1437.407, - "98.92970050373869" : 1439.919, - "98.93750365650932" : 1442.223, - "98.94532073552347" : 1444.719, - "98.95317012342258" : 1447.047, - "98.96095433650203" : 1450.247, - "98.96878088536177" : 1452.543, - "98.97657568238628" : 1455.023, - "98.98439554664914" : 1457.687, - "98.99218839399956" : 1460.247, - "99.00002524827951" : 1463.207, - "99.00782366612734" : 1465.183, - "99.01562793299745" : 1467.351, - "99.02344863283491" : 1470.895, - "99.03128687973921" : 1473.679, - "99.03909142513419" : 1476.431, - "99.04688956445715" : 1479.007, - "99.05468937492934" : 1481.799, - "99.06252149428649" : 1484.879, - "99.07032186180841" : 1489.287, - "99.0781328132754" : 1491.903, - "99.08594682851599" : 1494.623, - "99.09375638735862" : 1497.719, - "99.10158822819092" : 1500.231, - "99.10938023996673" : 1502.431, - "99.11719592635652" : 1504.799, - "99.12501996849242" : 1508.311, - "99.13286573556823" : 1511.871, - "99.14062571698395" : 1516.015, - "99.1484380610753" : 1518.319, - "99.15625319041536" : 1520.911, - "99.164062749258" : 1524.959, - "99.17188289204573" : 1528.255, - "99.17969579318682" : 1532.791, - "99.18750813727817" : 1535.183, - "99.19532688744154" : 1538.607, - "99.20314563760492" : 1540.935, - "99.21093792790559" : 1545.279, - "99.21877116136223" : 1548.871, - "99.22265769740454" : 1551.367, - "99.22657264298363" : 1552.815, - "99.23049120938605" : 1554.271, - "99.23438610117447" : 1556.287, - "99.23829129838309" : 1558.047, - "99.24218953246996" : 1560.471, - "99.24609640082781" : 1562.599, - "99.25000995378255" : 1565.847, - "99.25391180869275" : 1567.423, - "99.2578337173936" : 1569.415, - "99.26172610245818" : 1571.607, - "99.26563102114194" : 1572.695, - "99.26953259752726" : 1574.599, - "99.27344698605661" : 1576.687, - "99.27734438456886" : 1578.551, - "99.28125375965055" : 1581.207, - "99.28516369178199" : 1583.815, - "99.28910064082585" : 1585.223, - "99.29299915343758" : 1587.015, - "99.2968809545571" : 1588.151, - "99.30078810143982" : 1590.343, - "99.30469329864844" : 1592.743, - "99.3085973817576" : 1594.815, - "99.31251371996105" : 1596.263, - "99.31641223257277" : 1597.615, - "99.3203213291296" : 1599.335, - "99.32422513371387" : 1601.239, - "99.32814425716603" : 1604.271, - "99.332035806656" : 1606.599, - "99.33595186633458" : 1608.743, - "99.33988268783129" : 1610.519, - "99.34375334795598" : 1612.535, - "99.34766105188845" : 1614.055, - "99.35158184648982" : 1617.255, - "99.3554761812285" : 1619.063, - "99.35937942876303" : 1622.503, - "99.36328128367322" : 1625.255, - "99.36719678630206" : 1626.703, - "99.37110086941121" : 1629.423, - "99.37501163711724" : 1632.247, - "99.37891683432588" : 1634.423, - "99.3828362363029" : 1637.159, - "99.38674895368302" : 1640.119, - "99.39063827497404" : 1641.735, - "99.39454124398371" : 1643.455, - "99.39844449151825" : 1647.207, - "99.40234996725174" : 1650.559, - "99.4062793961241" : 1652.175, - "99.41016426101719" : 1653.999, - "99.41406444477815" : 1656.839, - "99.4179732628101" : 1658.711, - "99.42189322183685" : 1662.311, - "99.42578282165275" : 1664.439, - "99.4296924752593" : 1667.047, - "99.43359906509228" : 1669.415, - "99.43751735296982" : 1672.879, - "99.44140639573597" : 1675.135, - "99.44531688491713" : 1678.623, - "99.44922514589933" : 1681.591, - "99.45313257130692" : 1684.183, - "99.45703275506789" : 1686.391, - "99.46095995574129" : 1689.351, - "99.46484649178359" : 1692.543, - "99.46875113194248" : 1694.743, - "99.47267192654385" : 1698.439, - "99.47658380834937" : 1700.399, - "99.48047480078961" : 1702.671, - "99.48441509213193" : 1705.007, - "99.4882924368535" : 1707.087, - "99.49218983536576" : 1709.135, - "99.49610394537024" : 1713.615, - "99.5000060788053" : 1717.399, - "99.50390988338957" : 1720.999, - "99.50781730879717" : 1724.287, - "99.51172501272963" : 1728.407, - "99.51562881731391" : 1732.423, - "99.51953679977125" : 1735.975, - "99.52345230240007" : 1739.343, - "99.52734691566363" : 1742.015, - "99.53125378402149" : 1744.223, - "99.53516817255084" : 1747.487, - "99.53906947041128" : 1751.031, - "99.54299499993544" : 1752.463, - "99.5468868279503" : 1756.455, - "99.55078339088794" : 1758.647, - "99.55469694384269" : 1761.471, - "99.5585965705539" : 1765.191, - "99.56251095908326" : 1767.143, - "99.56640807907065" : 1769.287, - "99.5703394576171" : 1774.311, - "99.57421930906251" : 1776.615, - "99.5781258988955" : 1778.847, - "99.58203388135283" : 1782.327, - "99.58594102823555" : 1785.887, - "99.58986405103589" : 1789.967, - "99.59378122481395" : 1791.607, - "99.59765745543605" : 1795.335, - "99.60157240101515" : 1798.607, - "99.60547091362689" : 1803.127, - "99.60938223838266" : 1805.111, - "99.61132884870227" : 1808.479, - "99.61328381476798" : 1810.095, - "99.6152368311596" : 1811.719, - "99.61719263279993" : 1813.991, - "99.61914648476616" : 1816.119, - "99.62111871937384" : 1817.663, - "99.62306170887013" : 1820.799, - "99.62502113133377" : 1822.991, - "99.62696523492953" : 1825.591, - "99.62891240229887" : 1827.335, - "99.63086291196666" : 1828.887, - "99.6328223344303" : 1831.943, - "99.63477674344627" : 1834.183, - "99.63674145788245" : 1835.119, - "99.63868054803055" : 1836.215, - "99.64062771539989" : 1839.039, - "99.64258184589099" : 1841.359, - "99.64456215771992" : 1844.615, - "99.64649818409444" : 1845.567, - "99.64843922391663" : 1848.543, - "99.65039781080566" : 1850.623, - "99.65236419639106" : 1853.351, - "99.6543085785117" : 1855.743, - "99.65625574588104" : 1857.991, - "99.65822491671514" : 1860.599, - "99.66015927194044" : 1862.567, - "99.66212120112792" : 1863.143, - "99.66407310342005" : 1863.855, - "99.66601637144122" : 1867.543, - "99.66797050193232" : 1869.879, - "99.66992463242342" : 1870.919, - "99.67188321931245" : 1873.375, - "99.67383846390302" : 1875.799, - "99.67578368159828" : 1877.871, - "99.67773502684068" : 1879.639, - "99.67969110700587" : 1881.671, - "99.68164412339749" : 1883.031, - "99.68359407601554" : 1887.423, - "99.68556686767296" : 1889.583, - "99.68750735044541" : 1892.687, - "99.68945479633962" : 1897.143, - "99.69141087650482" : 1899.303, - "99.6933613861726" : 1901.319, - "99.69531356698961" : 1903.527, - "99.69727410355273" : 1905.671, - "99.69922266354642" : 1908.151, - "99.70117762961215" : 1910.199, - "99.70313733060065" : 1913.103, - "99.7050900684674" : 1914.431, - "99.70703361501343" : 1915.671, - "99.70899025222836" : 1918.055, - "99.71093992632154" : 1919.903, - "99.71289266418829" : 1923.439, - "99.71484930140322" : 1925.583, - "99.71680287484459" : 1926.975, - "99.71876313288284" : 1928.407, - "99.72071224992627" : 1931.239, - "99.72265913877074" : 1934.183, - "99.724610762538" : 1935.207, - "99.72656266483015" : 1936.455, - "99.7285276577912" : 1939.167, - "99.73047064728748" : 1942.351, - "99.73242533482832" : 1946.543, - "99.73437751564533" : 1949.383, - "99.73633610253437" : 1953.543, - "99.73828299137884" : 1957.927, - "99.7402385144943" : 1961.631, - "99.74219570875897" : 1965.911, - "99.74414343317805" : 1968.159, - "99.74609533547019" : 1972.159, - "99.74805169416025" : 1976.839, - "99.7500016467783" : 1979.447, - "99.75195438464505" : 1981.631, - "99.75390684398693" : 1985.543, - "99.75586041742828" : 1987.415, - "99.75781983989192" : 1988.511, - "99.75977313480841" : 1991.271, - "99.76172030217776" : 1994.751, - "99.76367304004451" : 1998.423, - "99.76562912020971" : 2002.239, - "99.76758687152412" : 2004.991, - "99.76953292479398" : 2008.047, - "99.77148705528508" : 2012.759, - "99.77344452807463" : 2015.199, - "99.77539392364294" : 2017.823, - "99.77735947365373" : 2021.111, - "99.77929744970234" : 2025.039, - "99.78125158019344" : 2027.503, - "99.78321044560734" : 2031.303, - "99.78516039822539" : 2033.375, - "99.78711703544033" : 2035.991, - "99.78906420280967" : 2040.831, - "99.7910172192013" : 2043.623, - "99.79296884296855" : 2045.039, - "99.79493160773065" : 2049.471, - "99.79687571132641" : 2053.143, - "99.79883039886725" : 2058.423, - "99.80078731460706" : 2061.007, - "99.80273754574998" : 2063.991, - "99.80469000509186" : 2068.615, - "99.80567013411098" : 2069.711, - "99.80664831345601" : 2071.895, - "99.80761785853007" : 2072.911, - "99.80859575935023" : 2074.031, - "99.80957672394396" : 2075.079, - "99.81054933279158" : 2078.615, - "99.81152611951227" : 2080.591, - "99.81251711100134" : 2081.783, - "99.81348052852823" : 2083.023, - "99.81445954344788" : 2084.119, - "99.81543577311882" : 2085.751, - "99.81640838196644" : 2087.943, - "99.81738572573687" : 2089.767, - "99.81836167688293" : 2092.375, - "99.81933846360361" : 2094.039, - "99.82031719999839" : 2095.159, - "99.82129593639317" : 2097.695, - "99.82227745803664" : 2100.783, - "99.82324756016042" : 2102.143, - "99.82422211868214" : 2104.415, - "99.82519890540283" : 2108.783, - "99.8261729068748" : 2110.143, - "99.82716167016491" : 2112.767, - "99.82813483606228" : 2113.839, - "99.82914198199384" : 2117.215, - "99.83009230885183" : 2118.079, - "99.83105906867718" : 2123.167, - "99.83203418424863" : 2126.479, - "99.83302322606362" : 2127.279, - "99.83398970736408" : 2129.311, - "99.83496983638321" : 2130.879, - "99.8359455090044" : 2132.527, - "99.83692257424995" : 2135.631, - "99.83789351194837" : 2139.967, - "99.83887893294002" : 2141.631, - "99.83984430014102" : 2142.463, - "99.84082136538657" : 2145.679, - "99.84181152130103" : 2150.911, - "99.84277354620357" : 2152.639, - "99.84376760146623" : 2155.711, - "99.84473185456774" : 2160.751, - "99.84576657446148" : 2163.615, - "99.84668682063345" : 2169.695, - "99.84766277177953" : 2172.943, - "99.84864958539553" : 2174.207, - "99.84961216734783" : 2178.175, - "99.85059452456592" : 2181.503, - "99.85156769046328" : 2182.495, - "99.85256648064873" : 2184.319, - "99.85352516325283" : 2186.815, - "99.8545086345704" : 2187.759, - "99.85547901521906" : 2189.903, - "99.85645413079051" : 2191.775, - "99.85742284028996" : 2193.535, - "99.85840826128162" : 2196.671, - "99.8593869976764" : 2197.759, - "99.86035236487739" : 2200.159, - "99.86133332947112" : 2204.095, - "99.86232014308713" : 2204.943, - "99.86329219488502" : 2205.583, - "99.8642737165285" : 2207.439, - "99.86525356702276" : 2211.247, - "99.8662128066766" : 2213.647, - "99.86719572094442" : 2219.487, - "99.86816777274231" : 2227.967, - "99.86914233126403" : 2231.631, - "99.87012524553185" : 2233.567, - "99.87110565307586" : 2236.111, - "99.87207074175198" : 2238.271, - "99.87306869636281" : 2241.039, - "99.87403434208868" : 2243.279, - "99.87500862208552" : 2251.727, - "99.8759854088062" : 2255.183, - "99.87695662502948" : 2261.135, - "99.87794260307088" : 2262.511, - "99.87891744011746" : 2265.279, - "99.87990007586042" : 2268.607, - "99.88087463438214" : 2272.047, - "99.88184278683184" : 2275.007, - "99.88281650977895" : 2278.031, - "99.88380304487009" : 2279.743, - "99.88478094569025" : 2282.783, - "99.88574575584151" : 2285.087, - "99.88672672043525" : 2288.031, - "99.88769960780773" : 2291.295, - "99.88868363617505" : 2298.447, - "99.88971222852163" : 2305.727, - "99.89063136059413" : 2308.239, - "99.89161622453605" : 2311.935, - "99.89259858175414" : 2314.095, - "99.89355559320903" : 2318.575, - "99.8945390645266" : 2320.735, - "99.89551390157318" : 2322.815, - "99.89649681584102" : 2325.071, - "99.89747388108657" : 2329.007, - "99.89846598667512" : 2334.911, - "99.89942132698077" : 2338.671, - "99.90039142910456" : 2342.751, - "99.9013723936983" : 2345.471, - "99.90234416697132" : 2349.583, - "99.90284356206404" : 2350.239, - "99.90333432288578" : 2351.839, - "99.90381366418782" : 2355.487, - "99.90430526058418" : 2356.463, - "99.90479184353286" : 2359.999, - "99.9052901245261" : 2365.791, - "99.90576500943023" : 2366.991, - "99.90625911255042" : 2368.607, - "99.90677995405815" : 2370.287, - "99.90723339254725" : 2370.863, - "99.90773780108765" : 2371.087, - "99.90820544434514" : 2372.111, - "99.90877558475496" : 2375.807, - "99.90921370437619" : 2378.415, - "99.90967689123575" : 2379.407, - "99.91015678958753" : 2379.855, - "99.91064810745901" : 2384.031, - "99.91113329778335" : 2385.439, - "99.91162238745586" : 2385.839, - "99.91211147712838" : 2389.295, - "99.91260112385064" : 2392.591, - "99.91309411287133" : 2393.807, - "99.91357568237235" : 2394.687, - "99.91406560761948" : 2396.319, - "99.9145594322148" : 2399.455, - "99.915044901064" : 2401.071, - "99.91553928270905" : 2404.767, - "99.91601667433702" : 2407.951, - "99.91651189155668" : 2408.959, - "99.9169990315551" : 2410.335, - "99.91748533597891" : 2412.255, - "99.9179727545022" : 2413.903, - "99.9184601730255" : 2415.871, - "99.91895344057107" : 2421.071, - "99.91944085909437" : 2421.663, - "99.91992604941869" : 2424.031, - "99.92041179679276" : 2425.455, - "99.92090589991295" : 2426.591, - "99.92139081171241" : 2428.015, - "99.92188797860616" : 2432.143, - "99.92237344745537" : 2435.151, - "99.92285947335431" : 2435.855, - "99.9233733517403" : 2437.439, - "99.92383514597552" : 2440.207, - "99.92431866515062" : 2445.759, - "99.92482418779049" : 2446.063, - "99.92530213646819" : 2446.783, - "99.92582409207542" : 2453.167, - "99.92627697351477" : 2453.695, - "99.9267585430158" : 2456.207, - "99.92725765958365" : 2457.391, - "99.92773755793543" : 2464.815, - "99.92822609055821" : 2467.887, - "99.92871490170586" : 2468.351, - "99.92920594105247" : 2473.663, - "99.9296939166255" : 2475.039, - "99.93017966399957" : 2475.535, - "99.93067209597054" : 2478.639, - "99.93115477957103" : 2480.559, - "99.93164247661919" : 2484.303, - "99.93213295891606" : 2486.367, - "99.93263040433469" : 2493.775, - "99.93310751743778" : 2494.767, - "99.93360468433154" : 2496.335, - "99.93410045860095" : 2499.023, - "99.93457283678124" : 2499.791, - "99.93506164792888" : 2501.087, - "99.93556744909363" : 2506.591, - "99.93605124679361" : 2507.807, - "99.93653003104592" : 2509.599, - "99.93702107039252" : 2509.999, - "99.9375558381438" : 2511.727, - "99.93799117251632" : 2514.223, - "99.93848193333805" : 2517.487, - "99.93896823776187" : 2518.255, - "99.93945621333489" : 2523.791, - "99.93994474595767" : 2524.735, - "99.94043522825454" : 2526.335, - "99.940920140054" : 2531.807, - "99.94142064924621" : 2537.903, - "99.94189720529955" : 2540.143, - "99.94238629497207" : 2542.127, - "99.94287399202024" : 2543.551, - "99.94336029644404" : 2545.199, - "99.94386108416113" : 2552.943, - "99.94433958988856" : 2554.399, - "99.94483592120771" : 2559.871, - "99.94532473235536" : 2561.439, - "99.9458115938289" : 2570.799, - "99.94630124055116" : 2571.247, - "99.94677807512939" : 2574.367, - "99.94727078562522" : 2580.735, - "99.94775876119824" : 2583.711, - "99.94825815629098" : 2584.767, - "99.9487330411951" : 2589.359, - "99.94921878856917" : 2595.631, - "99.94971456283858" : 2601.407, - "99.95019808201369" : 2606.111, - "99.95069302070847" : 2612.431, - "99.95119854334835" : 2621.151, - "99.95142219881933" : 2621.391, - "99.95166061610843" : 2622.447, - "99.95190738914366" : 2628.447, - "99.95214887020634" : 2631.503, - "99.95240650571151" : 2631.743, - "99.95265940629388" : 2631.919, - "99.9528911389861" : 2632.415, - "99.95312788512598" : 2643.055, - "99.95337103733789" : 2643.487, - "99.95361920299746" : 2650.719, - "99.95386179815962" : 2654.015, - "99.95410522889641" : 2656.335, - "99.95434726700883" : 2658.255, - "99.95459320446943" : 2665.903, - "99.95483802783056" : 2667.087, - "99.95508201561708" : 2667.519, - "99.95533575177407" : 2669.487, - "99.95557528316266" : 2669.887, - "99.95581258635228" : 2670.111, - "99.9560585238129" : 2672.415, - "99.95632841441237" : 2672.639, - "99.95655179135846" : 2674.511, - "99.95678825897349" : 2674.815, - "99.95703280380974" : 2675.711, - "99.95728152651905" : 2676.063, - "99.95752133643252" : 2677.311, - "99.95776671684338" : 2678.719, - "99.95801766775166" : 2680.223, - "99.95825719914025" : 2680.895, - "99.95849812315319" : 2681.871, - "99.95874155388998" : 2682.399, - "99.95899334037287" : 2683.903, - "99.95923537848529" : 2684.175, - "99.95947880922206" : 2691.439, - "99.95972056880962" : 2693.167, - "99.959964835121" : 2696.399, - "99.96020520208421" : 2697.615, - "99.96045476036814" : 2698.175, - "99.9607076609505" : 2700.143, - "99.9609641823562" : 2700.655, - "99.96118811635203" : 2705.983, - "99.9614307115142" : 2708.367, - "99.96167609192507" : 2708.751, - "99.96195043892247" : 2713.167, - "99.96221364492504" : 2716.463, - "99.96240471298619" : 2716.623, - "99.96265092897166" : 2730.399, - "99.96289547380792" : 2731.551, - "99.96313890454469" : 2739.711, - "99.96338623462965" : 2740.047, - "99.96363050094105" : 2744.239, - "99.96387198200372" : 2744.495, - "99.96411429864102" : 2744.991, - "99.96435577970371" : 2745.311, - "99.96460227421406" : 2747.199, - "99.96484904724927" : 2749.839, - "99.96510723980418" : 2750.063, - "99.96533479462335" : 2754.319, - "99.96557906093474" : 2755.295, - "99.96582583396996" : 2755.551, - "99.96606954323161" : 2756.623, - "99.966313809543" : 2759.679, - "99.9665569617549" : 2761.455, - "99.9667992783922" : 2765.519, - "99.96704382322845" : 2766.815, - "99.96729282446263" : 2776.911, - "99.96753207732635" : 2777.839, - "99.9677749510134" : 2778.367, - "99.96802395224758" : 2792.191, - "99.96826543331026" : 2793.695, - "99.96852279029056" : 2797.023, - "99.96875452298278" : 2799.935, - "99.96900686651541" : 2800.655, - "99.9692416629812" : 2801.295, - "99.96948509371798" : 2801.839, - "99.96972852445475" : 2803.983, - "99.96997195519153" : 2806.175, - "99.97021844970189" : 2809.551, - "99.97046383011275" : 2817.791, - "99.97070809642415" : 2818.639, - "99.97095960438216" : 2831.039, - "99.97119245117386" : 2831.375, - "99.97146540554691" : 2831.823, - "99.97168460461995" : 2834.415, - "99.97192998503083" : 2836.063, - "99.97217258019299" : 2839.023, - "99.97242492372561" : 2855.743, - "99.97266306248986" : 2856.191, - "99.97291596307223" : 2856.463, - "99.97315354478673" : 2856.703, - "99.97344961672401" : 2864.303, - "99.97363957068566" : 2867.279, - "99.97387770944991" : 2872.511, - "99.97412364691051" : 2873.647, - "99.97439075226127" : 2873.807, - "99.9746102298592" : 2874.639, - "99.97485700289441" : 2875.023, - "99.97509931953171" : 2877.695, - "99.97534609256694" : 2878.047, - "99.9755886877291" : 2881.215, - "99.97571012457261" : 2881.407, - "99.9758393601125" : 2881.791, - "99.97595968285654" : 2881.983, - "99.9760788915011" : 2901.231, - "99.97620367064306" : 2901.455, - "99.97632455043684" : 2903.551, - "99.97644515170575" : 2903.663, - "99.97656324625082" : 2905.791, - "99.976689696542" : 2906.047, - "99.97681670388293" : 2906.239, - "99.97693312727878" : 2906.959, - "99.97705679232126" : 2907.167, - "99.97717850768964" : 2910.863, - "99.97729660223472" : 2911.103, - "99.97743168679689" : 2917.263, - "99.97754532494403" : 2917.471, - "99.97766119129014" : 2917.679, - "99.97778959125542" : 2932.207, - "99.97790907842484" : 2932.479, - "99.97803190789271" : 2939.471, - "99.97816253605696" : 2939.583, - "99.97827199633105" : 2946.255, - "99.97840262449529" : 2946.367, - "99.97851765526678" : 2946.463, - "99.9786438270331" : 2947.407, - "99.97876860617507" : 2947.551, - "99.9789039692621" : 2947.647, - "99.97900841608853" : 2947.855, - "99.97912706768334" : 2948.719, - "99.9792510112507" : 2948.911, - "99.97937244809421" : 2949.103, - "99.97950084805949" : 2953.919, - "99.97961699293047" : 2954.111, - "99.97974093649782" : 2961.023, - "99.97986989351284" : 2961.167, - "99.97998381018486" : 2961.551, - "99.98011499539884" : 2961.759, - "99.98022974764547" : 2961.983, - "99.98034951333976" : 2962.767, - "99.98047484953146" : 2963.055, - "99.98059823604908" : 2974.767, - "99.98072329371591" : 2974.879, - "99.98084361645995" : 2986.959, - "99.98096588887807" : 2987.151, - "99.98108231227393" : 3001.711, - "99.98120152091848" : 3001.887, - "99.98133075645836" : 3002.159, - "99.98144996510293" : 3007.135, - "99.98156917374747" : 3007.295, - "99.98169116764073" : 3023.759, - "99.98182040318062" : 3024.031, - "99.98193599100186" : 3024.175, - "99.98207051851429" : 3024.335, - "99.98218025731325" : 3024.575, - "99.9823117210521" : 3026.639, - "99.98243872839303" : 3026.767, - "99.98256601425884" : 3026.831, - "99.98266823288628" : 3026.927, - "99.98279496170234" : 3027.839, - "99.98292837511529" : 3027.903, - "99.983053711307" : 3027.935, - "99.9831592722329" : 3029.663, - "99.98327848087744" : 3029.871, - "99.98339936067123" : 3049.295, - "99.98353082441008" : 3049.503, - "99.98365031157951" : 3052.879, - "99.98377119137328" : 3053.087, - "99.983887893294" : 3053.247, - "99.9840226993313" : 3056.895, - "99.98413856567741" : 3057.039, - "99.9842678012173" : 3067.967, - "99.9843884024862" : 3068.063, - "99.98450454735719" : 3080.431, - "99.9846192996038" : 3080.655, - "99.98474324317117" : 3080.927, - "99.98486746526339" : 3089.375, - "99.9849983719525" : 3089.487, - "99.98511395977374" : 3090.159, - "99.985235953667" : 3090.319, - "99.98535906165974" : 3091.711, - "99.98549219654781" : 3091.887, - "99.98561446896595" : 3091.983, - "99.98573284203589" : 3092.079, - "99.98584648018303" : 3092.287, - "99.98596485325298" : 3103.615, - "99.98609130354416" : 3103.855, - "99.98627429438405" : 3107.167, - "99.98633751952964" : 3107.263, - "99.98645087915192" : 3108.511, - "99.98660211815657" : 3108.703, - "99.98671046433118" : 3108.767, - "99.9868176964063" : 3108.847, - "99.98693941177469" : 3108.927, - "99.98706057009333" : 3110.527, - "99.98718507071044" : 3110.767, - "99.98731040690214" : 3114.207, - "99.98742905849694" : 3114.383, - "99.9875530020643" : 3114.623, - "99.98767304628346" : 3115.103, - "99.9878000536244" : 3115.279, - "99.98785520154874" : 3115.375, - "99.98791898374408" : 3142.159, - "99.98797663839225" : 3142.271, - "99.98803986353785" : 3142.351, - "99.98810058195961" : 3142.479, - "99.98817522662489" : 3153.871, - "99.98822675372593" : 3153.951, - "99.98828691509794" : 3154.031, - "99.98834568384561" : 3154.127, - "99.98841197276478" : 3154.239, - "99.98847380528602" : 3160.639, - "99.98853452370778" : 3160.703, - "99.98859635622902" : 3160.767, - "99.98865345382747" : 3160.847, - "99.98872197094559" : 3209.695, - "99.98877294099688" : 3209.759, - "99.98884619303782" : 3209.855, - "99.98890134096217" : 3209.919, - "99.98895342511294" : 3209.935, - "99.98901720730828" : 3220.047, - "99.98907959687925" : 3220.191, - "99.98913697300257" : 3220.319, - "99.98919852699895" : 3220.463, - "99.98926230919427" : 3220.575, - "99.98933054778753" : 3221.967, - "99.98939822933106" : 3222.031, - "99.98944919938235" : 3222.127, - "99.9895071325554" : 3222.239, - "99.98956896507664" : 3239.743, - "99.9896335828466" : 3239.855, - "99.98969040192016" : 3239.967, - "99.98974805656835" : 3240.079, - "99.98980738236575" : 3240.191, - "99.98987367128493" : 3242.975, - "99.98993661790564" : 3243.055, - "99.99000262829993" : 3243.119, - "99.99005944737351" : 3243.183, - "99.99011459529787" : 3243.279, - "99.99017475666989" : 3258.127, - "99.99024383083776" : 3258.223, - "99.99029647203827" : 3258.271, - "99.990359418659" : 3258.351, - "99.990419580031" : 3265.455, - "99.99048224812687" : 3265.599, - "99.99054296654862" : 3265.775, - "99.99060479906986" : 3265.983, - "99.99066969536467" : 3266.143, - "99.990727071488" : 3269.615, - "99.99081675649627" : 3269.695, - "99.99084655865741" : 3269.743, - "99.99091006232788" : 3269.807, - "99.99096799550094" : 3273.791, - "99.99103038507191" : 3273.919, - "99.99109221759315" : 3274.079, - "99.99115460716413" : 3274.239, - "99.9912153255859" : 3274.415, - "99.99127799368175" : 3304.207, - "99.99133926915324" : 3304.319, - "99.99139580970194" : 3304.399, - "99.99145736369832" : 3304.511, - "99.99152114589366" : 3304.623, - "99.99158464956412" : 3318.367, - "99.99163924043873" : 3318.511, - "99.99170330115894" : 3318.639, - "99.99176374105582" : 3318.751, - "99.99182752325115" : 3326.351, - "99.99189019134701" : 3326.495, - "99.99194923861954" : 3326.607, - "99.99200745031746" : 3326.751, - "99.99207318218689" : 3326.879, - "99.99213473618326" : 3337.567, - "99.99219099820709" : 3337.631, - "99.99225255220347" : 3337.727, - "99.992311599476" : 3337.839, - "99.99237259642263" : 3337.919, - "99.99243637861797" : 3358.063, - "99.99249960376356" : 3358.207, - "99.99256060071019" : 3358.319, - "99.99261630568428" : 3358.447, - "99.9926800878796" : 3364.191, - "99.99274303450034" : 3364.287, - "99.99280013209878" : 3364.383, - "99.9928658639682" : 3364.527, - "99.99292936763867" : 3364.607, - "99.99298590818736" : 3383.727, - "99.99304634808426" : 3383.807, - "99.993115700777" : 3383.839, - "99.99317586214902" : 3383.919, - "99.99322738925005" : 3407.119, - "99.99329033587077" : 3407.199, - "99.99335049724279" : 3407.279, - "99.99341093713969" : 3407.375, - "99.9934805683573" : 3407.455, - "99.99353543775678" : 3409.375, - "99.9935964347034" : 3409.503, - "99.99365603902568" : 3409.615, - "99.993719821221" : 3409.775, - "99.99378165374226" : 3409.887, - "99.99384376478837" : 3439.935, - "99.99390392616039" : 3440.047, - "99.9939415270179" : 3440.079, - "99.99397105065417" : 3440.111, - "99.99398887624587" : 3440.127, - "99.99402814825261" : 3440.159, - "99.99405043024224" : 3440.175, - "99.99408775257488" : 3440.207, - "99.99411254128836" : 3440.223, - "99.99415961199146" : 3440.255, - "99.99418440070492" : 3440.271, - "99.99420779679404" : 3440.287, - "99.99423537075623" : 3440.319, - "99.99426879374067" : 3440.367, - "99.99429831737694" : 3440.447, - "99.99433034773705" : 3440.479, - "99.9943582002241" : 3476.895, - "99.99439468698212" : 3476.991, - "99.99441780454637" : 3477.039, - "99.99444927785673" : 3477.135, - "99.99448214379144" : 3477.199, - "99.99451194595258" : 3477.263, - "99.99454453336243" : 3477.327, - "99.99457071470025" : 3477.375, - "99.99460775850802" : 3477.439, - "99.99463310427123" : 3477.471, - "99.99466569168108" : 3562.911, - "99.9946927085935" : 3562.991, - "99.99472613157796" : 3563.071, - "99.99475509816449" : 3563.135, - "99.99478378622615" : 3563.215, - "99.99481553806137" : 3563.295, - "99.99484478317278" : 3563.375, - "99.99487876320697" : 3563.439, - "99.99491162914168" : 3563.487, - "99.99494087425307" : 3570.063, - "99.99500772022199" : 3570.095, - "99.99502860958728" : 3570.111, - "99.99507707291474" : 3570.143, - "99.995091556208" : 3570.159, - "99.99512135836913" : 3570.207, - "99.99515478135359" : 3570.271, - "99.99517957006707" : 3570.319, - "99.9952093722282" : 3579.503, - "99.99524335226239" : 3579.599, - "99.9952781678712" : 3579.711, - "99.99531131233078" : 3579.743, - "99.99533108759658" : 3579.791, - "99.99536256090695" : 3579.903, - "99.99539932618985" : 3579.983, - "99.99542355785358" : 3580.047, - "99.99546979298208" : 3580.095, - "99.99548483332508" : 3587.535, - "99.99551742073493" : 3587.599, - "99.99555641421678" : 3587.679, - "99.99559317949968" : 3587.711, - "99.9956071057432" : 3587.727, - "99.9956438710261" : 3587.775, - "99.99567729401056" : 3587.839, - "99.99570013304994" : 3587.871, - "99.99574107620589" : 3587.919, - "99.99575862327274" : 3587.935, - "99.99578953953335" : 3631.487, - "99.99582324104267" : 3631.551, - "99.99585582845252" : 3631.615, - "99.99588228831522" : 3631.679, - "99.99591348310071" : 3631.743, - "99.99594328526184" : 3631.807, - "99.99597503709708" : 3631.887, - "99.99601180237998" : 3631.951, - "99.99603770519293" : 3631.983, - "99.99607279932661" : 3646.527, - "99.99609424574163" : 3646.559, - "99.99613184659914" : 3646.623, - "99.99615802793696" : 3646.671, - "99.99619033682194" : 3646.719, - "99.99621735373437" : 3646.767, - "99.9962538404924" : 3646.847, - "99.9962811359297" : 3646.895, - "99.99631065956598" : 3646.975, - "99.99633906910276" : 3702.031, - "99.99636942831364" : 3702.095, - "99.99641176409395" : 3702.159, - "99.99642958968566" : 3702.191, - "99.99646746906804" : 3702.255, - "99.99649365040587" : 3702.303, - "99.9965226169924" : 3702.367, - "99.9965593822753" : 3702.431, - "99.99658918443643" : 3702.479, - "99.99661564429911" : 3725.215, - "99.99665575188047" : 3725.263, - "99.99668443994211" : 3725.295, - "99.99673067507062" : 3725.327, - "99.99676103428149" : 3725.343, - "99.99677468200015" : 3725.359, - "99.99680309153693" : 3725.391, - "99.99682871582502" : 3725.423, - "99.9968590750359" : 3725.455, - "99.99688943424677" : 3725.487, - "99.99692675657941" : 3737.679, - "99.9969504311934" : 3737.711, - "99.99696380038719" : 3737.727, - "99.99698747500118" : 3737.743, - "99.99700474354314" : 3737.759, - "99.9970156060131" : 3737.775, - "99.99702674700791" : 3737.791, - "99.99710334134728" : 3737.807, - "99.99712896563537" : 3737.823, - "99.99713370055817" : 3737.839, - "99.99714929795091" : 3737.951, - "99.99716545239339" : 3738.015, - "99.99718884848251" : 3748.607, - "99.99719943242759" : 3748.623, - "99.9972097378478" : 3748.639, - "99.99722923458873" : 3748.671, - "99.9972398185338" : 3748.687, - "99.99726934217007" : 3748.719, - "99.99729496645816" : 3748.735, - "99.99731864107214" : 3748.751, - "99.99734092306178" : 3748.767, - "99.99736069832758" : 3748.783, - "99.9973935642623" : 3748.799, - "99.99741974560011" : 3748.815, - "99.99743200069442" : 3748.831, - "99.99744871218664" : 3748.847, - "99.99745790350737" : 3748.863, - "99.9974726653255" : 3751.983, - "99.99749021239235" : 3752.015, - "99.99749856813845" : 3752.031, - "99.99751778635452" : 3752.095, - "99.9975292058742" : 3752.127, - "99.99754786704052" : 3752.191, - "99.99756207180891" : 3752.223, - "99.99757432690322" : 3752.287, - "99.99759159544519" : 3752.351, - "99.99760524316385" : 3752.383, - "99.99762000498197" : 3752.495, - "99.99763978024778" : 3752.559, - "99.99765231386695" : 3752.607, - "99.99766568306073" : 3752.671, - "99.99768128045348" : 3752.719, - "99.99769715637109" : 3752.767, - "99.99771331081358" : 3752.831, - "99.99772695853223" : 3752.879, - "99.99774589822341" : 3809.567, - "99.99776539496435" : 3809.599, - "99.99777792858352" : 3809.615, - "99.99779658974984" : 3809.631, - "99.9978082877944" : 3809.647, - "99.99781998583896" : 3809.663, - "99.99783781143067" : 3809.695, - "99.997856472597" : 3809.727, - "99.99786566391771" : 3809.743, - "99.99788265393481" : 3809.759, - "99.99789741575294" : 3809.791, - "99.99791663396901" : 3809.823, - "99.99793223136176" : 3809.839, - "99.99794699317988" : 3809.871, - "99.997955348926" : 3809.887, - "99.99797902353998" : 3809.919, - "99.99799740618144" : 3809.935, - "99.99801077537522" : 3809.951, - "99.99802080227056" : 3809.967, - "99.99803723523792" : 3925.935, - "99.99806063132704" : 3925.967, - "99.99806258100112" : 3925.983, - "99.99808402741616" : 3926.031, - "99.99810101743324" : 3926.063, - "99.9981099302291" : 3926.079, - "99.99813471894257" : 3926.111, - "99.99814892371097" : 3926.127, - "99.99816229290475" : 3926.143, - "99.99817426947418" : 3926.159, - "99.99818568899387" : 3926.175, - "99.99820435016018" : 3926.207, - "99.9982202260778" : 3926.239, - "99.99823498789594" : 3926.271, - "99.9982514208633" : 3926.303, - "99.99827036055449" : 3926.335, - "99.99828205859905" : 3926.351, - "99.99829570631769" : 3926.367, - "99.99830991108608" : 3967.119, - "99.99832801520267" : 3967.167, - "99.99833887767261" : 3967.199, - "99.99835336096588" : 3967.295, - "99.99836895835863" : 3967.359, - "99.99838344165188" : 3967.407, - "99.99839876051976" : 3967.455, - "99.99842354923324" : 3967.519, - "99.99842911973064" : 3967.535, - "99.99844471712339" : 3967.583, - "99.99846003599126" : 3967.631, - "99.99847646895861" : 3967.695, - "99.99848426765499" : 3967.743, - "99.99849123077675" : 3967.791, - "99.9985020932467" : 3967.823, - "99.99851044899282" : 3967.839, - "99.99851796916431" : 3967.855, - "99.99852576786068" : 3967.871, - "99.99853663033063" : 3967.887, - "99.9985435934524" : 3967.903, - "99.9985511136239" : 3967.919, - "99.99855891232028" : 3967.935, - "99.99856671101665" : 3967.951, - "99.99858202988452" : 3967.967, - "99.99859818432701" : 4027.887, - "99.99862436566482" : 4027.903, - "99.99864024158245" : 4027.919, - "99.99865249667674" : 4027.935, - "99.99866530882079" : 4027.951, - "99.99867700686535" : 4027.967, - "99.99868675523581" : 4027.983, - "99.99870346672805" : 4027.999, - "99.99873633266276" : 4028.015, - "99.99876334957519" : 4028.031, - "99.99878145369176" : 4028.047, - "99.99879649403476" : 4028.063, - "99.99881042027829" : 4028.079, - "99.99882378947207" : 4028.095, - "99.99884245063839" : 4028.111, - "99.99885526278244" : 4028.127, - "99.998866960827" : 4028.143, - "99.99887615214772" : 4057.135, - "99.99888617904305" : 4057.151, - "99.99890066233633" : 4057.167, - "99.9989131959555" : 4057.183, - "99.99892656514928" : 4057.199, - "99.99894411221611" : 4057.215, - "99.99895636731041" : 4057.231, - "99.99896917945445" : 4057.247, - "99.99897335732751" : 4057.263, - "99.99897781372543" : 4057.279, - "99.99899090439435" : 4057.295, - "99.9989998171902" : 4057.311, - "99.99901179375964" : 4057.327, - "99.99903156902543" : 4057.343, - "99.99904048182128" : 4057.359, - "99.99904967314201" : 4057.375, - "99.99905858593787" : 4057.391, - "99.99906722020886" : 4057.407, - "99.99907501890523" : 4057.423, - "99.99908643842491" : 4057.439, - "99.99909451564615" : 4057.455, - "99.99910314991713" : 4057.471, - "99.999112062713" : 4057.487, - "99.99912069698398" : 4057.503, - "99.99912933125496" : 4057.519, - "99.99913963667517" : 4057.535, - "99.99914938504564" : 4057.551, - "99.99915774079174" : 4130.527, - "99.99916888178657" : 4130.543, - "99.99918197245547" : 4130.559, - "99.99924464055132" : 4130.575, - "99.99928363403319" : 4130.591, - "99.99929449650314" : 4130.607, - "99.9993081442218" : 4130.623, - "99.99933683228345" : 4130.639, - "99.99936997674304" : 4130.655, - "99.99937749691453" : 4130.671, - "99.99939504398138" : 4130.687, - "99.9994231749933" : 4130.703, - "99.9994267958166" : 4130.719, - "99.99943487303786" : 4130.735, - "99.99943737976169" : 5019.999, - "99.99944462140832" : 5020.031, - "99.99945715502749" : 5020.063, - "99.99946662487308" : 5020.095, - "99.99947665176842" : 5020.127, - "99.99948612161401" : 5020.159, - "99.99949531293474" : 5020.191, - "99.99950533983008" : 5020.223, - "99.99951843049898" : 5020.255, - "99.99952511509588" : 5020.287, - "99.9995315211679" : 5020.319, - "99.99954238363784" : 5020.351, - "99.99955937365495" : 5020.383, - "99.99957747777152" : 5020.415, - "99.99959196106478" : 5020.447, - "99.99959613893785" : 5020.479, - "99.99961786387773" : 5020.511, - "99.99963290422075" : 5020.543, - "99.99965379358602" : 5020.575, - "99.99967691115027" : 5020.607, - "99.9996955723166" : 5020.639, - "99.9997172972565" : 5020.671, - "99.9997181328311" : 5064.575, - "99.99972927382592" : 5064.607, - "99.99973846514665" : 5064.639, - "99.99974765646736" : 5064.671, - "99.99976603910882" : 5064.703, - "99.99978748552384" : 5064.735, - "99.99980419701608" : 5064.767, - "99.99981700916011" : 5064.799, - "99.99984012672437" : 5064.831, - "99.99986296576374" : 5064.863, - "99.99988942562644" : 5064.895, - "99.99990613711866" : 5064.927, - "99.99992981173264" : 5064.959, - "99.9999537648715" : 5064.991, - "99.99998551670673" : 5065.023, - "100.0" : 5065.055 - }, - "endToEndLatencyAvg" : [ 241.66791345754874, 241.73957102589085, 264.40887868431696, 241.29297505319036, 232.01227803548326, 251.69875972782924, 253.11528261394034, 257.987950175439, 248.15702181470039, 240.6798601930962, 232.61320050479534, 273.78679355602424, 235.0522429330484, 230.05739472210507, 234.67155140943572, 236.23939896970796, 244.77028312799473, 232.13662390963066, 245.90852342471925, 246.69210307711106, 246.23867015093214, 256.29014253393063, 233.76428252855587, 237.4250544345617, 241.49635286560053, 242.1618258621254, 241.44953434119807, 247.77391998881322, 250.4046275031247, 230.85577114055778, 255.653474700844, 234.6365613762811, 248.70920163868357, 232.59471653355644, 244.70516921066397, 240.61961499504253, 240.7766600947148, 238.76196780760418, 256.68156508554046, 229.77430131626173, 230.266756808853, 256.7171326691087, 224.71322644238342, 249.59271824265863, 223.45851211512547, 246.51487926038777, 240.3690278370535, 237.5625104048694, 273.41688787276996, 246.0496403385728, 237.4764053477107, 240.74387829515393, 244.28367678345086, 245.95764231921115, 253.17277867423667, 235.61262208965945, 251.33171533805802, 247.88703552551078, 266.0044929431198, 244.02293162873178 ], - "endToEndLatency50pct" : [ 124.0, 109.0, 116.0, 120.0, 118.0, 125.0, 108.0, 105.0, 118.0, 108.0, 127.0, 134.0, 131.0, 117.0, 121.0, 112.0, 128.0, 111.0, 106.0, 114.0, 130.0, 126.0, 126.0, 108.0, 116.0, 119.0, 124.0, 122.0, 119.0, 104.0, 97.0, 119.0, 127.0, 116.0, 119.0, 131.0, 121.0, 118.0, 127.0, 106.0, 127.0, 123.0, 132.0, 122.0, 122.0, 127.0, 112.0, 108.0, 118.0, 113.0, 114.0, 118.0, 118.0, 110.0, 111.0, 123.0, 113.0, 121.0, 118.0, 125.0 ], - "endToEndLatency75pct" : [ 295.001, 283.001, 315.001, 303.001, 289.001, 308.001, 283.001, 302.001, 296.001, 281.001, 288.001, 336.001, 299.001, 278.001, 282.001, 284.001, 313.001, 269.001, 304.001, 290.001, 296.001, 319.001, 283.001, 284.001, 284.001, 297.001, 305.001, 297.001, 306.001, 271.001, 314.001, 273.001, 293.001, 278.001, 283.001, 301.001, 298.001, 292.001, 299.001, 267.001, 279.001, 312.001, 282.001, 306.001, 282.001, 301.001, 298.001, 259.0, 334.001, 294.001, 290.001, 297.001, 287.001, 306.001, 308.001, 285.001, 303.001, 309.001, 324.001, 298.001 ], - "endToEndLatency95pct" : [ 859.003, 929.003, 1008.003, 859.003, 842.003, 933.003, 1037.003, 1055.007, 974.003, 934.003, 809.003, 1029.003, 789.003, 842.003, 849.003, 891.003, 857.003, 865.003, 939.003, 950.003, 877.003, 984.003, 809.003, 884.003, 917.003, 896.003, 863.003, 932.003, 915.003, 877.003, 1030.003, 874.003, 872.003, 872.003, 921.003, 815.003, 904.003, 860.003, 921.003, 860.003, 775.003, 918.003, 731.003, 925.003, 772.003, 878.003, 908.003, 943.003, 1044.003, 917.003, 896.003, 861.003, 929.003, 915.003, 961.003, 845.003, 950.003, 909.003, 1029.003, 885.003 ], - "endToEndLatency99pct" : [ 1401.007, 1551.007, 1710.007, 1445.007, 1316.007, 1434.007, 1728.007, 1693.007, 1509.007, 1526.007, 1410.007, 1670.007, 1269.007, 1392.007, 1317.007, 1481.007, 1370.007, 1509.007, 1496.007, 1489.007, 1496.007, 1460.007, 1445.007, 1480.007, 1443.007, 1486.007, 1310.007, 1543.007, 1535.007, 1482.007, 1645.007, 1521.007, 1702.007, 1466.007, 1581.007, 1413.007, 1324.007, 1349.007, 1618.007, 1553.007, 1329.007, 1647.007, 1253.007, 1544.007, 1191.007, 1484.007, 1386.007, 1679.007, 1752.007, 1531.007, 1423.007, 1512.007, 1505.007, 1495.007, 1653.007, 1435.007, 1579.007, 1453.007, 1679.007, 1425.007 ], - "endToEndLatency999pct" : [ 2703.007, 2502.015, 2799.007, 2452.015, 2099.007, 2196.015, 2528.015, 2867.007, 2336.015, 2413.007, 2178.015, 2206.015, 1881.007, 2189.007, 2157.007, 2269.007, 2138.015, 2097.007, 2078.007, 2212.015, 2314.015, 2168.015, 2271.007, 2237.007, 2809.007, 2009.007, 2239.007, 2161.007, 2557.007, 2463.007, 2372.015, 2263.007, 3107.007, 2098.015, 2572.015, 2116.015, 1875.007, 2220.015, 2944.015, 2704.015, 2719.007, 2866.015, 1819.007, 2373.007, 1964.007, 2350.015, 2033.007, 2714.015, 2557.007, 2689.007, 1941.007, 2412.015, 2630.015, 2270.015, 2359.007, 2234.015, 2804.015, 2061.007, 2458.015, 2110.015 ], - "endToEndLatency9999pct" : [ 3323.007, 4071.007, 4182.015, 3120.015, 2525.007, 3814.015, 3363.007, 3651.007, 2749.007, 2750.015, 2651.007, 3121.007, 2479.007, 2871.007, 3072.015, 2808.015, 3166.015, 3114.015, 2588.015, 2505.007, 3610.015, 2878.015, 2540.015, 3035.007, 3854.015, 2590.015, 2534.015, 2416.015, 2938.015, 3373.007, 2796.015, 3765.007, 3636.015, 3165.007, 3388.015, 2869.007, 3335.007, 2760.015, 3585.007, 2915.007, 3972.015, 5079.007, 2589.007, 2912.015, 2340.015, 2646.015, 3024.015, 3104.015, 3228.015, 2999.007, 2451.007, 2880.015, 3054.015, 2588.015, 2880.015, 2632.015, 3250.015, 2442.015, 3193.007, 2410.015 ], - "endToEndLatencyMax" : [ 3327.007, 4072.015, 4183.007, 3122.015, 2529.007, 3818.015, 3371.007, 3657.007, 2757.007, 2756.015, 2664.015, 3126.015, 2503.007, 2878.015, 3083.007, 2811.007, 3176.015, 3118.015, 2589.007, 2517.007, 3622.015, 2886.015, 2541.007, 3036.015, 3855.007, 2605.007, 2543.007, 2419.007, 2941.007, 3376.015, 2797.007, 3766.015, 3646.015, 3170.015, 3391.007, 2870.015, 3352.015, 2761.007, 3588.015, 2918.015, 3975.007, 5080.031, 2593.007, 2920.015, 2346.015, 2652.015, 3025.007, 3105.007, 3229.007, 3003.007, 2456.015, 2881.007, 3054.015, 2591.007, 2886.015, 2632.015, 3250.015, 2443.007, 3198.015, 2411.007 ], - "aggregatedEndToEndLatencyQuantiles" : { - "0.00160657014100987" : 1.0, - "0.600236385850675" : 20.0, - "1.296308524348363" : 21.0, - "1.9016829822155443" : 22.0, - "2.3677504284867124" : 23.0, - "2.7532476022978174" : 24.0, - "3.143965572004049" : 25.0, - "3.527654240280207" : 26.0, - "4.2659314331740115" : 28.0, - "4.647297983685676" : 29.0, - "5.051253166628991" : 30.0, - "5.532453790587632" : 31.0, - "6.158494734467755" : 32.0, - "6.961545281384145" : 33.0, - "7.811858180555583" : 34.0, - "8.624670702212283" : 35.0, - "9.40723720129922" : 36.0, - "10.168818852779737" : 37.0, - "10.959724030244196" : 38.0, - "11.755379006705645" : 39.0, - "12.559889894684677" : 40.0, - "13.332051568149634" : 41.0, - "14.162473134689273" : 42.0, - "14.990977568378604" : 43.0, - "15.779333346311049" : 44.0, - "16.582521209295315" : 45.0, - "17.418302001924268" : 46.0, - "18.221136965399406" : 47.0, - "19.022111059402963" : 48.0, - "19.824481432206255" : 49.0, - "20.597607660525288" : 50.0, - "21.345686658175037" : 51.0, - "22.073092763585553" : 52.0, - "22.77749021094503" : 53.0, - "23.45657721529415" : 54.0, - "24.128527683555728" : 55.0, - "24.765338329424807" : 56.0, - "25.40372992052973" : 57.0, - "26.035160171909578" : 58.0, - "26.64251749607944" : 59.0, - "27.231133265970843" : 60.0, - "27.810729069245316" : 61.0, - "28.391361845584104" : 62.0, - "28.968097965148843" : 63.0, - "29.540885899597626" : 64.0, - "30.082178318818436" : 65.0, - "30.636992610548884" : 66.0, - "31.152104175578575" : 67.0, - "31.674532208095098" : 68.0, - "32.184467542282114" : 69.0, - "32.68477988898617" : 70.0, - "33.15440975413797" : 71.0, - "33.626641104226856" : 72.0, - "34.1075336722604" : 73.0, - "34.5656275950526" : 74.0, - "35.00494319739807" : 75.0, - "35.90676549832354" : 77.0, - "36.360171177597444" : 78.0, - "36.79174666592618" : 79.0, - "37.205356867483914" : 80.0, - "37.63152940026561" : 81.0, - "38.05878458529039" : 82.0, - "38.86103351832575" : 84.0, - "39.254147973727754" : 85.0, - "39.645533862157656" : 86.0, - "40.027478087161775" : 87.0, - "40.792593747301986" : 89.0, - "41.16480301512884" : 90.0, - "41.524952979761316" : 91.0, - "42.28201879877024" : 93.0, - "42.64608352472933" : 94.0, - "43.35248807063875" : 96.0, - "43.70006567691046" : 97.0, - "44.05193796158096" : 98.0, - "44.70837060004607" : 100.0, - "45.0070065871799" : 101.0, - "45.64000162896408" : 103.0, - "46.256715942960064" : 105.0, - "46.56300291400572" : 106.0, - "47.15830873386539" : 108.0, - "47.748997335759114" : 110.0, - "48.036811535498934" : 111.0, - "48.60103156008163" : 113.0, - "49.15965477113911" : 115.0, - "49.694336800422924" : 117.0, - "50.23303776184346" : 119.0, - "50.508205235291236" : 120.0, - "50.773123582269044" : 121.0, - "51.03674313649937" : 122.0, - "51.298402942547966" : 123.0, - "51.56129023726013" : 124.0, - "51.807581506437984" : 125.0, - "52.06831909443234" : 126.0, - "52.318175567806605" : 127.0, - "52.564973764456134" : 128.0, - "52.80201778524953" : 129.0, - "53.04202593909435" : 130.0, - "53.28194941933951" : 131.0, - "53.523680012461725" : 132.0, - "53.75747022736274" : 133.0, - "54.20602695039795" : 135.0, - "54.430406697409886" : 136.0, - "54.66089603458186" : 137.0, - "54.887605141179314" : 138.0, - "55.10919372324967" : 139.0, - "55.32492422917479" : 140.0, - "55.545778323474366" : 141.0, - "55.76382621212716" : 142.0, - "56.20010916265305" : 144.0, - "56.39643493061287" : 145.0, - "56.604726415156904" : 146.0, - "56.802708888941744" : 147.0, - "57.202035712656006" : 149.0, - "57.400002310140906" : 150.0, - "57.59754164018539" : 151.0, - "57.79750920852553" : 152.0, - "58.196971955649786" : 154.0, - "58.37884360590891" : 155.0, - "58.56480799917289" : 156.0, - "58.75617701917338" : 157.0, - "59.125013269592536" : 159.0, - "59.29034404356976" : 160.0, - "59.651038815968505" : 162.0, - "59.82509821253223" : 163.0, - "60.17333816689606" : 165.0, - "60.341263183989334" : 166.0, - "60.51567520153062" : 167.0, - "60.84914546191606" : 169.0, - "61.02020200953904" : 170.0, - "61.33956687375926" : 172.0, - "61.505843819506424" : 173.0, - "61.8243630618563" : 175.0, - "62.142477876355144" : 177.0, - "62.2958348563324" : 178.0, - "62.612044236307206" : 180.0, - "62.78351579598118" : 181.0, - "63.08331047447885" : 183.0, - "63.377873772881436" : 185.0, - "63.519731855198934" : 186.0, - "63.8122913974305" : 188.0, - "64.09910455467956" : 190.0, - "64.3920025127782" : 192.0, - "64.5341611306682" : 193.0, - "64.81006504160779" : 195.0, - "65.090851611107" : 197.0, - "65.37324363662091" : 199.0, - "65.50857906644843" : 200.0, - "65.77513657176186" : 202.0, - "66.03446590409864" : 204.0, - "66.28461817800859" : 206.0, - "66.54119533982467" : 208.0, - "66.78066927010317" : 210.0, - "67.02572330201224" : 212.0, - "67.26620607366571" : 214.0, - "67.51141385500574" : 216.0, - "67.86794987241569" : 219.0, - "68.10720710512663" : 221.0, - "68.33893785754107" : 223.0, - "68.57668210672117" : 225.0, - "68.80266034645835" : 227.0, - "69.03306027499384" : 229.0, - "69.35180791323755" : 232.0, - "69.55525489804812" : 234.0, - "69.78545818328965" : 236.0, - "70.09599220383429" : 239.0, - "70.29621713535235" : 241.0, - "70.59521994857421" : 244.0, - "70.79666011336641" : 246.0, - "71.08604940917895" : 249.0, - "71.29637835221493" : 251.0, - "71.57736017235021" : 254.0, - "71.77291886434465" : 256.0, - "72.0455544857498" : 259.0, - "72.33858948138476" : 262.0, - "72.52158472802891" : 264.001, - "72.79568431140723" : 267.001, - "73.06799739324525" : 270.001, - "73.32713927383013" : 273.001, - "73.57452433651417" : 276.001, - "73.83592872910589" : 279.001, - "74.08009480234479" : 282.001, - "74.25053078161234" : 284.001, - "74.57807667533702" : 288.001, - "74.8186886856426" : 291.001, - "75.05276244568986" : 294.001, - "75.13072482698657" : 295.001, - "75.29249178942526" : 297.001, - "75.45029023394282" : 299.001, - "75.5257410960021" : 300.001, - "75.68042165803726" : 302.001, - "75.75469850949592" : 303.001, - "75.91483912605158" : 305.001, - "76.07023077920499" : 307.001, - "76.14666513626563" : 308.001, - "76.2919330021591" : 310.001, - "76.4413429111467" : 312.001, - "76.51527299079095" : 313.001, - "76.65779592798476" : 315.001, - "76.79497133741552" : 317.001, - "76.93711575019505" : 319.001, - "77.00742575492202" : 320.001, - "77.1491999992346" : 322.001, - "77.28497829427089" : 324.001, - "77.42164956154576" : 326.001, - "77.55413227095299" : 328.001, - "77.68891760091427" : 330.001, - "77.75318402746518" : 331.001, - "77.88366520895401" : 333.001, - "78.01169447696309" : 335.001, - "78.15265067403152" : 337.001, - "78.27398599263024" : 339.001, - "78.40598210737097" : 341.001, - "78.53103164456026" : 343.001, - "78.65792561785804" : 345.001, - "78.7842867602474" : 347.001, - "78.9090129222748" : 349.001, - "79.02820159800306" : 351.001, - "79.15646873197961" : 353.001, - "79.28457041819892" : 355.001, - "79.40931941981572" : 357.001, - "79.53568084073665" : 359.001, - "79.65636940901162" : 361.001, - "79.77414147313496" : 363.001, - "79.8871754365876" : 365.001, - "80.00620200693756" : 367.001, - "80.17356049080149" : 370.001, - "80.28264236969608" : 372.001, - "80.39460955720557" : 374.001, - "80.50524313552033" : 376.001, - "80.66638785841413" : 379.001, - "80.78322990559904" : 381.001, - "80.88743831747608" : 383.001, - "81.04894485288949" : 386.001, - "81.15778413077977" : 388.001, - "81.26190954024662" : 390.001, - "81.42192453906067" : 393.001, - "81.52523273687811" : 395.001, - "81.62638092230935" : 397.001, - "81.78371282643403" : 400.001, - "81.88669737055801" : 402.001, - "82.02154926956639" : 405.001, - "82.16890890760949" : 408.001, - "82.26417701290084" : 410.001, - "82.40813828716266" : 413.001, - "82.54500619773148" : 416.001, - "82.63937074658432" : 418.001, - "82.78142547219576" : 421.001, - "82.92438737515626" : 424.001, - "83.02168207620802" : 426.001, - "83.16415153533889" : 429.001, - "83.25570096553444" : 431.001, - "83.38877555454461" : 434.001, - "83.51793956020181" : 437.001, - "83.66079896354167" : 440.001, - "83.75043237501322" : 442.001, - "83.8791429312617" : 445.001, - "84.00368414832141" : 448.001, - "84.13698629763067" : 451.001, - "84.28530408430154" : 455.001, - "84.41105468547227" : 458.001, - "84.53557529119523" : 461.001, - "84.6561179089234" : 464.001, - "84.76228606898215" : 467.001, - "84.87956123277063" : 470.001, - "85.03407857530118" : 474.001, - "85.15634864587514" : 477.001, - "85.2769731518872" : 480.001, - "85.3877281699699" : 483.001, - "85.53719322820993" : 487.001, - "85.65386258581658" : 490.001, - "85.76679572083803" : 493.001, - "85.88999552981885" : 496.001, - "86.03284936252714" : 500.001, - "86.13828024949935" : 503.001, - "86.25267762502553" : 506.001, - "86.39908830598289" : 510.001, - "86.51767145406093" : 513.001, - "86.65017059683126" : 517.001, - "86.76409363308036" : 520.001, - "86.89592652831648" : 524.001, - "87.00894879344284" : 527.003, - "87.14588995781665" : 531.003, - "87.28237182361858" : 535.003, - "87.38262453002706" : 538.003, - "87.51391038924429" : 542.003, - "87.57993741389875" : 544.003, - "87.64363034393088" : 546.003, - "87.70911757438748" : 548.003, - "87.7719517915651" : 550.003, - "87.83632795955768" : 552.003, - "87.9018639330404" : 554.003, - "87.96054050935554" : 556.003, - "88.02232995458468" : 558.003, - "88.08495388042103" : 560.003, - "88.14975787291718" : 562.003, - "88.21114316882685" : 564.003, - "88.26974871958964" : 566.003, - "88.33199857751696" : 568.003, - "88.38911760524877" : 570.003, - "88.45014777339671" : 572.003, - "88.51402035629654" : 574.003, - "88.57530705202765" : 576.003, - "88.63728562019814" : 578.003, - "88.69581346065071" : 580.003, - "88.7556534633665" : 582.003, - "88.81617391872697" : 584.003, - "88.88298111033099" : 586.003, - "88.93819832444929" : 588.003, - "89.0163239252506" : 591.003, - "89.07244413874427" : 593.003, - "89.13105191775969" : 595.003, - "89.18786066131379" : 597.003, - "89.27382971134722" : 600.003, - "89.32981400143092" : 602.003, - "89.38579411354092" : 604.003, - "89.46559703150403" : 607.003, - "89.52194814767574" : 609.003, - "89.5812040696728" : 611.003, - "89.63618676020255" : 613.003, - "89.6890058174356" : 615.003, - "89.77013900221449" : 618.003, - "89.8173590176697" : 620.003, - "89.88810241753183" : 623.003, - "89.93949455749157" : 625.003, - "90.020638605002" : 628.003, - "90.07302733094728" : 630.003, - "90.14883861286829" : 633.003, - "90.19963580937777" : 635.003, - "90.27430344064014" : 638.003, - "90.33157315395557" : 640.003, - "90.3844468033779" : 642.003, - "90.45458578971609" : 645.003, - "90.50258374386821" : 647.003, - "90.57339092746166" : 650.003, - "90.62764887882587" : 652.003, - "90.69599857830798" : 655.003, - "90.77066955194928" : 658.003, - "90.82130325042257" : 660.003, - "90.8866957801427" : 663.003, - "90.95527526817654" : 666.003, - "91.00036563118755" : 668.003, - "91.06802930739343" : 671.003, - "91.13519301941709" : 674.003, - "91.2041574380915" : 677.003, - "91.25236679771122" : 679.003, - "91.31374902977355" : 682.003, - "91.38227476121286" : 685.003, - "91.45397993061327" : 688.003, - "91.5206147111706" : 691.003, - "91.56299663311864" : 693.003, - "91.64612271133701" : 697.003, - "91.69021593129933" : 699.003, - "91.75174494950319" : 702.003, - "91.82844864659961" : 706.003, - "91.88679293474237" : 709.003, - "91.94762339574898" : 712.003, - "92.0193296792757" : 716.003, - "92.07736897534073" : 719.003, - "92.14041905449119" : 722.003, - "92.20559962168059" : 725.003, - "92.26364393131401" : 728.003, - "92.32140915230644" : 731.003, - "92.37931642440357" : 734.003, - "92.45755817287285" : 738.003, - "92.51949551836981" : 741.003, - "92.57792336598594" : 744.003, - "92.64142856573459" : 747.003, - "92.70320129906905" : 750.003, - "92.76187592566315" : 753.003, - "92.82418204696917" : 757.003, - "92.87795173247741" : 760.003, - "92.94947307103645" : 764.003, - "93.00180107709777" : 767.003, - "93.06538983631978" : 771.003, - "93.13998699909295" : 775.003, - "93.18935727832913" : 778.003, - "93.25691399840912" : 782.003, - "93.32665106368049" : 786.003, - "93.38331302109306" : 789.003, - "93.44039388999873" : 792.003, - "93.50287910710932" : 796.003, - "93.57079429733" : 800.003, - "93.63087578692378" : 804.003, - "93.69809158435248" : 808.003, - "93.75963536472996" : 812.003, - "93.7886444285625" : 814.003, - "93.82059172200975" : 816.003, - "93.85233513034201" : 818.003, - "93.88323876596706" : 820.003, - "93.91106407059378" : 822.003, - "93.93999848796348" : 824.003, - "93.98396191221053" : 827.003, - "94.01479062284115" : 829.003, - "94.04686436962473" : 831.003, - "94.06327934963345" : 832.003, - "94.10594565232248" : 835.003, - "94.1374681851135" : 837.003, - "94.16548651212366" : 839.003, - "94.18936001072392" : 841.003, - "94.22147108073892" : 843.003, - "94.25376263921639" : 845.003, - "94.28434373527429" : 847.003, - "94.31712411667087" : 849.003, - "94.34941595367991" : 851.003, - "94.38634199908113" : 853.003, - "94.41339799948983" : 855.003, - "94.44498905104902" : 857.003, - "94.47576762599562" : 859.003, - "94.50313251792416" : 861.003, - "94.532681097423" : 863.003, - "94.57610639866165" : 866.003, - "94.60232290489473" : 868.003, - "94.62870987245346" : 870.003, - "94.65779274715413" : 872.003, - "94.68835880250685" : 874.003, - "94.72017713583355" : 876.003, - "94.7579387759683" : 879.003, - "94.78765614560332" : 881.003, - "94.81475420428028" : 883.003, - "94.84967398672629" : 886.003, - "94.8788808079791" : 888.003, - "94.91698197810726" : 891.003, - "94.94762992174385" : 893.003, - "94.97456643210566" : 895.003, - "95.01072623713623" : 898.003, - "95.0410978774476" : 900.003, - "95.06440874226061" : 902.003, - "95.10073260239052" : 905.003, - "95.13770766934945" : 908.003, - "95.16168227491245" : 910.003, - "95.18815447313399" : 912.003, - "95.22551864870717" : 915.003, - "95.25889870859085" : 918.003, - "95.28674852399641" : 920.003, - "95.32060431581505" : 923.003, - "95.34476581606678" : 925.003, - "95.376655732009" : 928.003, - "95.41456025884318" : 931.003, - "95.43876465295791" : 933.003, - "95.47409721920228" : 936.003, - "95.50755136848566" : 939.003, - "95.5333183247521" : 941.003, - "95.56512523828411" : 944.003, - "95.59778919348115" : 947.003, - "95.63195749773013" : 950.003, - "95.66450502672762" : 953.003, - "95.68772341905678" : 955.003, - "95.73089469949645" : 959.003, - "95.75243995263749" : 961.003, - "95.7814130858965" : 964.003, - "95.81670053002526" : 967.003, - "95.85076020695888" : 970.003, - "95.88125551529082" : 973.003, - "95.91172157780707" : 976.003, - "95.94367472041745" : 979.003, - "95.97362772776732" : 982.003, - "96.0088421966227" : 985.003, - "96.03564696154818" : 988.003, - "96.06596178141767" : 991.003, - "96.09449037827844" : 994.003, - "96.1347816422032" : 998.003, - "96.15687058898418" : 1000.003, - "96.18897135333081" : 1003.003, - "96.22253942202954" : 1006.003, - "96.25208243089682" : 1009.003, - "96.28474582903071" : 1012.003, - "96.32158218726386" : 1016.003, - "96.34541836263269" : 1018.003, - "96.38188566652519" : 1022.003, - "96.40972963276762" : 1025.003, - "96.44664704368992" : 1029.003, - "96.47582740444285" : 1032.003, - "96.5071900601082" : 1035.003, - "96.53661692130753" : 1038.003, - "96.57010310172235" : 1042.003, - "96.60016195107181" : 1045.003, - "96.63228388381836" : 1048.003, - "96.66366130165733" : 1051.007, - "96.69135430378456" : 1054.007, - "96.72399541939222" : 1058.007, - "96.75493498559082" : 1062.007, - "96.78390811884984" : 1066.007, - "96.81708373655538" : 1070.007, - "96.84898312257123" : 1074.007, - "96.87640204962587" : 1077.007, - "96.89355959482111" : 1079.007, - "96.90993140243526" : 1081.007, - "96.92421589440505" : 1083.007, - "96.9407687475448" : 1085.007, - "96.95777170771434" : 1087.007, - "96.9747203542262" : 1089.007, - "96.99072143631025" : 1091.007, - "97.0038622776214" : 1093.007, - "97.01825066186971" : 1095.007, - "97.03843445265825" : 1098.007, - "97.05157835781675" : 1100.007, - "97.0681727121616" : 1102.007, - "97.08441472406048" : 1104.007, - "97.10386096323089" : 1106.007, - "97.11355079829254" : 1107.007, - "97.12693507620271" : 1109.007, - "97.14602005991665" : 1112.007, - "97.15828408382075" : 1114.007, - "97.17865393370329" : 1117.007, - "97.18765440310976" : 1118.007, - "97.20550939137594" : 1120.007, - "97.22526312940829" : 1122.007, - "97.23979885686128" : 1124.007, - "97.25675892316784" : 1126.007, - "97.27381981790558" : 1128.007, - "97.28140618249134" : 1129.007, - "97.3023729255452" : 1132.007, - "97.316639591494" : 1134.007, - "97.3317435233658" : 1136.007, - "97.3508981399742" : 1139.007, - "97.36600290744073" : 1141.007, - "97.38004981197462" : 1143.007, - "97.39655893565664" : 1145.007, - "97.41398442822978" : 1147.007, - "97.42254676746431" : 1148.007, - "97.43810665552904" : 1150.007, - "97.4538297630984" : 1152.007, - "97.4687727037182" : 1154.007, - "97.48989765270828" : 1157.007, - "97.50345768404408" : 1159.007, - "97.51994842464197" : 1162.007, - "97.53337671054145" : 1164.007, - "97.55229958887709" : 1167.007, - "97.56483518106958" : 1169.007, - "97.5840560881935" : 1172.007, - "97.59869152995137" : 1174.007, - "97.61184991875191" : 1176.007, - "97.63109561518628" : 1179.007, - "97.64558232108158" : 1181.007, - "97.65797586216937" : 1183.007, - "97.67721348118796" : 1186.007, - "97.69164336664137" : 1188.007, - "97.70470315526337" : 1190.007, - "97.7246293043424" : 1193.007, - "97.73688497229915" : 1195.007, - "97.75094357515931" : 1197.007, - "97.76974222841122" : 1200.007, - "97.78166310141141" : 1202.007, - "97.80331893158885" : 1206.007, - "97.81313299173422" : 1208.007, - "97.828285109569" : 1211.007, - "97.84445776710498" : 1214.007, - "97.85969845798151" : 1217.007, - "97.8801669080426" : 1220.007, - "97.89143100358223" : 1222.007, - "97.90861361661948" : 1225.007, - "97.92456901952475" : 1228.007, - "97.94072273691346" : 1231.007, - "97.95408055432374" : 1233.007, - "97.97230153308321" : 1236.007, - "97.98610834339698" : 1238.007, - "98.00301632429849" : 1241.007, - "98.0193457951128" : 1244.007, - "98.0329423140853" : 1247.007, - "98.04706414361362" : 1250.007, - "98.06355850512202" : 1253.007, - "98.07889640351921" : 1256.007, - "98.09640350584466" : 1259.007, - "98.11431392189483" : 1263.007, - "98.12717456043866" : 1265.007, - "98.14175652413358" : 1268.007, - "98.15737156145073" : 1271.007, - "98.17234151963359" : 1274.007, - "98.19092180412846" : 1278.007, - "98.20543469199208" : 1282.007, - "98.22151431998107" : 1285.007, - "98.23657312973727" : 1288.007, - "98.25104563052209" : 1291.007, - "98.26705562561662" : 1295.007, - "98.28582837543179" : 1299.007, - "98.29877925820685" : 1302.007, - "98.31555298688782" : 1305.007, - "98.3292606399599" : 1309.007, - "98.34682846216931" : 1313.007, - "98.36143410104835" : 1316.007, - "98.37604141111684" : 1319.007, - "98.39342094597964" : 1323.007, - "98.41023450467625" : 1327.007, - "98.42338481606104" : 1330.007, - "98.44163086266252" : 1334.007, - "98.44934758002671" : 1336.007, - "98.45405532075544" : 1337.007, - "98.46106791029085" : 1339.007, - "98.46951243066795" : 1341.007, - "98.4806367033555" : 1344.007, - "98.48524166593202" : 1345.007, - "98.49357170983063" : 1347.007, - "98.50294206917249" : 1349.007, - "98.51070780809438" : 1351.007, - "98.51964644349059" : 1354.007, - "98.52441072612962" : 1355.007, - "98.53142693657554" : 1357.007, - "98.54264117496274" : 1360.007, - "98.54886635572757" : 1362.007, - "98.55567923812166" : 1364.007, - "98.56639295526347" : 1367.007, - "98.57079124740922" : 1368.007, - "98.57869625212004" : 1370.007, - "98.58776551882625" : 1372.007, - "98.59504605573953" : 1374.007, - "98.60537261398814" : 1377.007, - "98.6127403312853" : 1379.007, - "98.61994984264624" : 1381.007, - "98.62815872530848" : 1383.007, - "98.63465073932488" : 1385.007, - "98.64293064753949" : 1387.007, - "98.65098828755497" : 1389.007, - "98.65990157657758" : 1391.007, - "98.66423859177621" : 1392.007, - "98.67225278086553" : 1394.007, - "98.6805909021799" : 1397.007, - "98.68780793389345" : 1399.007, - "98.69578619240924" : 1401.007, - "98.70556125813371" : 1404.007, - "98.71239335920667" : 1406.007, - "98.71938589446847" : 1408.007, - "98.73046588063514" : 1411.007, - "98.73696959297783" : 1414.007, - "98.74388079701889" : 1416.007, - "98.75347788106512" : 1419.007, - "98.75865689722356" : 1421.007, - "98.76656245899754" : 1424.007, - "98.77657650481581" : 1426.007, - "98.78301921874294" : 1428.007, - "98.79267785826787" : 1431.007, - "98.79692518629842" : 1432.007, - "98.80530787266524" : 1435.007, - "98.81295746391918" : 1437.007, - "98.82263615771771" : 1440.007, - "98.82908917731322" : 1442.007, - "98.8376523521425" : 1445.007, - "98.84480253627736" : 1447.007, - "98.85401858912509" : 1449.007, - "98.8621876417717" : 1451.007, - "98.86933531912236" : 1454.007, - "98.87582733313877" : 1456.007, - "98.88450219913075" : 1459.007, - "98.89116411740964" : 1461.007, - "98.8985518889804" : 1463.007, - "98.90815482218977" : 1466.007, - "98.91665087090878" : 1469.007, - "98.92421578856305" : 1471.007, - "98.93167347155985" : 1474.007, - "98.93904536683067" : 1477.007, - "98.9474102271765" : 1480.007, - "98.95558457192311" : 1483.007, - "98.96231528750172" : 1485.007, - "98.97147619109705" : 1488.007, - "98.97785567835601" : 1491.007, - "98.98624226416493" : 1494.007, - "98.9925863779135" : 1496.007, - "99.00314383884013" : 1500.007, - "99.00885930681751" : 1502.007, - "99.01923460809225" : 1505.007, - "99.02454843353436" : 1507.007, - "99.03365307375097" : 1510.007, - "99.04074755157025" : 1513.007, - "99.04785094240003" : 1516.007, - "99.05641328163456" : 1519.007, - "99.06515220988945" : 1522.007, - "99.07121639940229" : 1524.007, - "99.07859080145732" : 1527.007, - "99.08787704426267" : 1531.007, - "99.09488434169809" : 1534.007, - "99.10328680380694" : 1538.007, - "99.11135279976976" : 1541.007, - "99.11769245701309" : 1544.007, - "99.12508524215225" : 1547.007, - "99.1347135217352" : 1551.007, - "99.143244665433" : 1554.007, - "99.14859525704341" : 1556.007, - "99.15648884195954" : 1559.007, - "99.16649508889361" : 1563.007, - "99.17230442201273" : 1566.007, - "99.1801244745923" : 1571.007, - "99.18793338590876" : 1574.007, - "99.19792849157973" : 1578.007, - "99.20390912161922" : 1581.007, - "99.21251714003252" : 1585.007, - "99.21952165215217" : 1588.007, - "99.2230063607226" : 1590.007, - "99.22738376299999" : 1592.007, - "99.2320806409972" : 1594.007, - "99.23539265998936" : 1596.007, - "99.23977368317728" : 1598.007, - "99.24282165423364" : 1600.007, - "99.24746310444684" : 1602.007, - "99.25043030134563" : 1604.007, - "99.25464420558684" : 1606.007, - "99.25823057818317" : 1608.007, - "99.2641050876915" : 1611.007, - "99.26583560438465" : 1612.007, - "99.27031717747218" : 1614.007, - "99.27477423978085" : 1616.007, - "99.27836841126137" : 1617.007, - "99.28230796189841" : 1619.007, - "99.28675833944921" : 1622.007, - "99.29004334087831" : 1623.007, - "99.29412884206215" : 1626.007, - "99.29724756013928" : 1628.007, - "99.30106344275575" : 1630.007, - "99.30665635683889" : 1633.007, - "99.30983161682632" : 1635.007, - "99.31334390002294" : 1637.007, - "99.31763105806913" : 1639.007, - "99.32177087291063" : 1642.007, - "99.325419915112" : 1645.007, - "99.33005579469364" : 1647.007, - "99.33316977773394" : 1649.007, - "99.33732296209119" : 1652.007, - "99.34137559654884" : 1654.007, - "99.34454612149945" : 1656.007, - "99.34908507209201" : 1658.007, - "99.35296418137665" : 1660.007, - "99.35646588037332" : 1662.007, - "99.35958320579256" : 1664.007, - "99.36367706292373" : 1667.007, - "99.36737429108804" : 1669.007, - "99.37292124746082" : 1671.007, - "99.37609929276404" : 1673.007, - "99.37904337154185" : 1675.007, - "99.38376726710212" : 1678.007, - "99.38816165980577" : 1680.007, - "99.39200511704846" : 1683.007, - "99.39479238254795" : 1685.007, - "99.39857651256455" : 1687.007, - "99.40287119096334" : 1689.007, - "99.40767753187063" : 1691.007, - "99.41071046222179" : 1693.007, - "99.41491238960516" : 1695.007, - "99.4199393275221" : 1698.007, - "99.4235513250236" : 1700.007, - "99.42580018898312" : 1702.007, - "99.43037590574396" : 1705.007, - "99.43430849309155" : 1707.007, - "99.43875441413711" : 1709.007, - "99.44225026397065" : 1711.007, - "99.44662126002177" : 1713.007, - "99.44995249769279" : 1715.007, - "99.45321995163249" : 1718.007, - "99.45732327883731" : 1722.007, - "99.46281898539976" : 1725.007, - "99.46485226591803" : 1727.007, - "99.46890183652832" : 1730.007, - "99.47267009024499" : 1733.007, - "99.477439664984" : 1737.007, - "99.48181261075617" : 1740.007, - "99.48475446128137" : 1743.007, - "99.48972012225119" : 1746.007, - "99.4934903256889" : 1748.007, - "99.49767247733024" : 1750.007, - "99.5012897669317" : 1752.007, - "99.50410794943635" : 1755.007, - "99.5091435218322" : 1758.007, - "99.51210264131524" : 1761.007, - "99.5165950771343" : 1764.007, - "99.51962717189072" : 1767.007, - "99.52554568938834" : 1770.007, - "99.52873014091784" : 1772.007, - "99.53241901313483" : 1775.007, - "99.53608086778875" : 1779.007, - "99.53998783023118" : 1782.007, - "99.54464376408644" : 1785.007, - "99.54915179767386" : 1788.007, - "99.5524061606294" : 1790.007, - "99.55524049796556" : 1793.007, - "99.55944075415945" : 1795.007, - "99.56341400711742" : 1797.007, - "99.56664190957306" : 1800.007, - "99.57117055449724" : 1804.007, - "99.57451599727874" : 1808.007, - "99.57847337393676" : 1812.007, - "99.58218592133785" : 1815.007, - "99.58757383617969" : 1819.007, - "99.59051150873121" : 1822.007, - "99.59522287037046" : 1825.007, - "99.59822321252702" : 1828.007, - "99.60244380152609" : 1832.007, - "99.60552073986655" : 1837.007, - "99.60941906783007" : 1840.007, - "99.61242219530239" : 1842.007, - "99.61384131369151" : 1843.007, - "99.616404918334" : 1845.007, - "99.61783601358097" : 1847.007, - "99.61996594455675" : 1849.007, - "99.6212739288463" : 1850.007, - "99.62404698923532" : 1854.007, - "99.62615213090068" : 1855.007, - "99.62699468892366" : 1856.007, - "99.6290611146997" : 1859.007, - "99.6313213984539" : 1864.007, - "99.6340810893272" : 1866.007, - "99.63554115185826" : 1867.007, - "99.63786911878589" : 1869.007, - "99.63876431927709" : 1870.007, - "99.6412407435357" : 1874.007, - "99.64392550941454" : 1876.007, - "99.6453429566142" : 1877.007, - "99.6472364142804" : 1878.007, - "99.64874048480075" : 1881.007, - "99.6509915770129" : 1883.007, - "99.65254021258572" : 1884.007, - "99.6549227717026" : 1886.007, - "99.65718611930417" : 1888.007, - "99.65844452497288" : 1889.007, - "99.66052459879621" : 1892.007, - "99.66279853059775" : 1894.007, - "99.66453433939088" : 1896.007, - "99.66658767418275" : 1898.007, - "99.66846107757533" : 1902.007, - "99.67020357112634" : 1905.007, - "99.67224604318668" : 1908.007, - "99.67414813533178" : 1910.007, - "99.67618030172373" : 1912.007, - "99.67876591036087" : 1914.007, - "99.68018447168683" : 1915.007, - "99.6823773507992" : 1917.007, - "99.6846214797219" : 1919.007, - "99.68716280183816" : 1921.007, - "99.68925791636671" : 1922.007, - "99.69016481518418" : 1923.007, - "99.69157864147331" : 1926.007, - "99.69340274477662" : 1929.007, - "99.69624209568117" : 1931.007, - "99.69845586466188" : 1933.007, - "99.69942264776859" : 1935.007, - "99.70212078316317" : 1938.007, - "99.70317725343793" : 1939.007, - "99.70581216216435" : 1941.007, - "99.70724827097972" : 1942.007, - "99.70963528660185" : 1945.007, - "99.71120007700618" : 1948.007, - "99.71304200633047" : 1952.007, - "99.71492933630195" : 1954.007, - "99.71691164554147" : 1959.007, - "99.71877780711303" : 1961.007, - "99.72208007749997" : 1966.007, - "99.72306301543817" : 1967.007, - "99.72494338212022" : 1970.007, - "99.72738136902109" : 1973.007, - "99.72950795761793" : 1976.007, - "99.73064910149236" : 1978.007, - "99.732667619837" : 1982.007, - "99.73522816063213" : 1985.007, - "99.73665452084228" : 1987.007, - "99.73846302637723" : 1990.007, - "99.7406369653423" : 1993.007, - "99.74274433526028" : 1999.007, - "99.74440438346424" : 2002.007, - "99.74639783396688" : 2006.007, - "99.74908928460358" : 2009.007, - "99.7500156806315" : 2010.007, - "99.75198879832895" : 2013.007, - "99.75464069748162" : 2017.007, - "99.75588740482405" : 2018.007, - "99.75830867983026" : 2024.007, - "99.76008933220743" : 2027.007, - "99.7620396103155" : 2030.007, - "99.76418708878067" : 2032.007, - "99.76628081065134" : 2035.007, - "99.76832606802745" : 2038.007, - "99.77058440206062" : 2041.007, - "99.77162165365651" : 2043.007, - "99.77416993906222" : 2046.007, - "99.77568459378254" : 2047.007, - "99.77747750154913" : 2051.007, - "99.77989654830272" : 2054.007, - "99.78134268425488" : 2056.007, - "99.78351328084103" : 2059.007, - "99.78570894526918" : 2061.007, - "99.78801964323898" : 2065.007, - "99.78918752614489" : 2067.007, - "99.79162077800895" : 2071.007, - "99.79327971208659" : 2075.007, - "99.79521160711052" : 2078.007, - "99.79733708158105" : 2081.007, - "99.79944194471483" : 2087.007, - "99.80121173436045" : 2089.007, - "99.80319850010522" : 2093.007, - "99.80525183489709" : 2097.007, - "99.80586878234203" : 2098.015, - "99.8066712318178" : 2102.015, - "99.80827223132725" : 2104.015, - "99.80884544931446" : 2106.015, - "99.81010385498315" : 2109.007, - "99.81074336348588" : 2110.015, - "99.81189759834447" : 2112.015, - "99.81348244302242" : 2114.015, - "99.8149271863167" : 2116.015, - "99.8156263005771" : 2117.007, - "99.81665157531513" : 2119.007, - "99.81778742708958" : 2122.015, - "99.81849239051311" : 2126.015, - "99.81938202037276" : 2128.015, - "99.82057413552593" : 2131.007, - "99.82192835605741" : 2135.007, - "99.82273637616474" : 2136.015, - "99.8233505382939" : 2137.007, - "99.8242894682428" : 2141.007, - "99.82575537993701" : 2146.015, - "99.82630325155063" : 2147.007, - "99.82724329562585" : 2150.015, - "99.82827052008494" : 2156.015, - "99.8291648849814" : 2157.007, - "99.83033722439255" : 2161.007, - "99.8310619635581" : 2162.015, - "99.83251617692603" : 2166.015, - "99.8333236399702" : 2168.015, - "99.83424084445605" : 2172.015, - "99.83503382385817" : 2173.007, - "99.83605519915413" : 2177.007, - "99.83771580442124" : 2179.007, - "99.83811494017229" : 2180.015, - "99.83886976074825" : 2183.007, - "99.84043037317892" : 2187.007, - "99.84082978746154" : 2188.015, - "99.84243412934994" : 2194.015, - "99.84283883573255" : 2195.007, - "99.84398833555431" : 2196.015, - "99.84550828237461" : 2198.015, - "99.84572303022114" : 2199.007, - "99.84684439835354" : 2202.015, - "99.84776717347093" : 2204.015, - "99.84878659904585" : 2208.015, - "99.84968764870018" : 2210.015, - "99.8506717007647" : 2212.015, - "99.85210836664322" : 2213.007, - "99.8527108304461" : 2214.015, - "99.85363722647402" : 2216.015, - "99.85465665204893" : 2218.015, - "99.85548946146669" : 2219.007, - "99.85652169949418" : 2224.015, - "99.85790627996765" : 2228.015, - "99.85878226177996" : 2231.007, - "99.85939670244069" : 2235.007, - "99.86041389976299" : 2236.015, - "99.86173943154195" : 2239.007, - "99.86241904859189" : 2241.007, - "99.86330115809892" : 2244.015, - "99.86443199630497" : 2248.015, - "99.86530463573837" : 2251.007, - "99.8665524572071" : 2257.007, - "99.8673120128199" : 2259.007, - "99.86824955011092" : 2260.015, - "99.86923220951756" : 2263.007, - "99.87013966539817" : 2267.007, - "99.87141227617735" : 2270.015, - "99.8723746027788" : 2275.007, - "99.87307037466026" : 2276.015, - "99.87408283694573" : 2279.007, - "99.87528860014622" : 2283.007, - "99.87600971840126" : 2285.007, - "99.87737424460113" : 2288.015, - "99.87824437725031" : 2292.015, - "99.87906493127865" : 2293.007, - "99.87994509106463" : 2296.015, - "99.8815697657582" : 2303.007, - "99.88194216247778" : 2304.015, - "99.88299389771572" : 2313.007, - "99.8839194581489" : 2316.015, - "99.88489069776085" : 2322.015, - "99.88604159024051" : 2323.007, - "99.88683568376894" : 2325.007, - "99.88783644772813" : 2326.015, - "99.8887344335351" : 2328.015, - "99.88995969394605" : 2331.007, - "99.89084013226362" : 2333.007, - "99.89227262016847" : 2340.015, - "99.89272969048771" : 2341.007, - "99.89357865473698" : 2344.015, - "99.89461590633289" : 2348.015, - "99.89599045966955" : 2354.015, - "99.89658651724613" : 2356.015, - "99.8977510577731" : 2361.007, - "99.89850002918593" : 2363.007, - "99.90006342693238" : 2372.015, - "99.90056784761985" : 2373.007, - "99.90170174967326" : 2376.015, - "99.90247049682812" : 2381.007, - "99.9029044490264" : 2383.007, - "99.90340691999283" : 2385.007, - "99.90474052918755" : 2390.015, - "99.90514802088593" : 2391.007, - "99.90537808796924" : 2392.015, - "99.90622538102905" : 2394.015, - "99.90628136587618" : 2399.007, - "99.90707852325198" : 2401.007, - "99.90733505083517" : 2403.007, - "99.90779379234388" : 2405.007, - "99.90842243811508" : 2406.015, - "99.90903604318108" : 2409.007, - "99.90953962827382" : 2410.015, - "99.90981760278851" : 2412.015, - "99.91030503304974" : 2413.007, - "99.91068884956401" : 2415.007, - "99.91117739395155" : 2416.015, - "99.91207621535325" : 2418.015, - "99.9126814644719" : 2419.007, - "99.91319424110672" : 2421.007, - "99.91357499377364" : 2423.007, - "99.91407467942429" : 2427.007, - "99.91465681042199" : 2429.007, - "99.91515092544108" : 2430.015, - "99.91555145385003" : 2431.007, - "99.91602690725341" : 2434.015, - "99.91658536306699" : 2437.007, - "99.9175078596528" : 2442.015, - "99.91805879511378" : 2445.007, - "99.91862867072206" : 2451.007, - "99.91922361417234" : 2453.007, - "99.91949016889232" : 2455.007, - "99.91993108438005" : 2458.015, - "99.92062518507205" : 2463.007, - "99.92092683477085" : 2464.015, - "99.92163430497858" : 2465.007, - "99.92200503050869" : 2470.015, - "99.92243396913857" : 2471.007, - "99.92289103945782" : 2472.015, - "99.92346007947135" : 2475.007, - "99.92455944360911" : 2479.007, - "99.9248713989763" : 2480.015, - "99.92543653954775" : 2484.015, - "99.92595934331936" : 2488.015, - "99.92656654215907" : 2491.007, - "99.927351722677" : 2494.015, - "99.92811267094768" : 2498.015, - "99.92872599748209" : 2499.007, - "99.92955936396301" : 2502.015, - "99.92984959386712" : 2504.015, - "99.93023786688663" : 2505.007, - "99.9309587066101" : 2507.007, - "99.93136703390321" : 2510.015, - "99.93175307867011" : 2514.015, - "99.93231933336787" : 2517.007, - "99.9329978362915" : 2518.015, - "99.93328583794299" : 2521.007, - "99.93362787472059" : 2523.007, - "99.9342261605498" : 2526.015, - "99.93471080549524" : 2528.015, - "99.93522664597741" : 2532.015, - "99.93577535318578" : 2534.015, - "99.93616947536842" : 2536.015, - "99.93676386175554" : 2540.015, - "99.93728777965347" : 2541.007, - "99.93758051634178" : 2542.015, - "99.93814593544481" : 2544.015, - "99.93898292283623" : 2549.007, - "99.93959624937065" : 2552.015, - "99.94028589355739" : 2557.007, - "99.9406880931558" : 2558.015, - "99.94094879871267" : 2559.007, - "99.94143260806338" : 2561.007, - "99.94202253794525" : 2565.007, - "99.94238295780698" : 2568.015, - "99.94294754131528" : 2572.015, - "99.94376029645943" : 2574.015, - "99.94420121194716" : 2575.007, - "99.94435997494654" : 2576.015, - "99.94492427992324" : 2578.015, - "99.94576962326201" : 2589.007, - "99.946048711903" : 2590.015, - "99.94633782768081" : 2595.007, - "99.94689516936808" : 2600.015, - "99.94743858447644" : 2607.007, - "99.94777031558566" : 2613.007, - "99.94831038831511" : 2614.015, - "99.94887942832864" : 2620.015, - "99.94944401183693" : 2624.015, - "99.94977323616195" : 2631.007, - "99.9502918619599" : 2633.007, - "99.95070715254246" : 2643.007, - "99.95142102897648" : 2646.015, - "99.95170345999641" : 2649.007, - "99.95198589101635" : 2651.007, - "99.95223684796798" : 2656.015, - "99.95245605231975" : 2658.015, - "99.95283346260773" : 2663.007, - "99.95308609074884" : 2668.015, - "99.95319248981157" : 2672.015, - "99.9533983246476" : 2673.007, - "99.95369050427276" : 2674.015, - "99.95413726892362" : 2675.007, - "99.95447707744859" : 2677.007, - "99.95462609184274" : 2680.015, - "99.95509235370405" : 2681.007, - "99.95535110953988" : 2683.007, - "99.95573353339626" : 2685.007, - "99.95635716559904" : 2686.015, - "99.95659614569284" : 2687.007, - "99.9571144929592" : 2688.015, - "99.95735040920565" : 2689.007, - "99.95763423288346" : 2697.007, - "99.95797153462424" : 2701.007, - "99.95819937345492" : 2702.015, - "99.95840242297517" : 2703.007, - "99.95876423549478" : 2704.015, - "99.9590469450463" : 2709.007, - "99.9594842396235" : 2713.007, - "99.95989368104294" : 2714.015, - "99.960026262074" : 2716.015, - "99.96032707617807" : 2717.007, - "99.96050756464051" : 2718.015, - "99.96074069557118" : 2719.007, - "99.9609741050334" : 2721.007, - "99.96120222239566" : 2733.007, - "99.96144008836313" : 2736.015, - "99.96187125524564" : 2739.007, - "99.96214978682349" : 2744.015, - "99.96243583875393" : 2746.015, - "99.96328257475058" : 2750.015, - "99.96356584136525" : 2756.015, - "99.96384827238519" : 2758.015, - "99.96405271456332" : 2759.007, - "99.96426969066246" : 2760.015, - "99.96449000914055" : 2761.007, - "99.96469528691341" : 2762.015, - "99.96497771793335" : 2765.007, - "99.96523647376917" : 2769.007, - "99.9654473221736" : 2782.015, - "99.9656824028253" : 2796.015, - "99.96582584658789" : 2797.007, - "99.96627734627558" : 2799.007, - "99.96639043009618" : 2800.015, - "99.96657342534283" : 2801.007, - "99.96691406946253" : 2804.015, - "99.96708480931974" : 2805.007, - "99.96751931858118" : 2806.015, - "99.96776414783811" : 2808.015, - "99.96799755730035" : 2809.007, - "99.96819141527853" : 2810.015, - "99.96836689017256" : 2811.007, - "99.96864959972407" : 2815.007, - "99.96893230927559" : 2819.007, - "99.96901419755947" : 2820.015, - "99.9692654330427" : 2822.015, - "99.96949744984704" : 2823.007, - "99.96973169490401" : 2824.015, - "99.9700623118869" : 2836.015, - "99.97034446437527" : 2839.007, - "99.97048373016419" : 2843.007, - "99.9708079409208" : 2847.007, - "99.97145886921822" : 2854.015, - "99.97177667374855" : 2866.015, - "99.97224210001512" : 2867.007, - "99.9725755023138" : 2869.007, - "99.97288634355468" : 2871.007, - "99.97316849604303" : 2872.015, - "99.97341248970523" : 2878.015, - "99.97375201969862" : 2879.007, - "99.97429766305962" : 2880.015, - "99.97446283228528" : 2882.015, - "99.97462243087939" : 2883.007, - "99.97486224656791" : 2884.015, - "99.97514523465101" : 2887.007, - "99.9754282227341" : 2906.015, - "99.97569199213831" : 2909.007, - "99.97571037522245" : 2910.015, - "99.9759925277108" : 2912.015, - "99.97620671849417" : 2913.007, - "99.97642731550383" : 2915.007, - "99.97655683268752" : 2916.015, - "99.97666935944497" : 2923.007, - "99.9768387066443" : 2924.015, - "99.97702866518038" : 2925.007, - "99.97712225179055" : 2926.015, - "99.97718965643239" : 2937.007, - "99.97740523987363" : 2938.015, - "99.9776709589989" : 2944.015, - "99.97780131177733" : 2951.007, - "99.97797010191351" : 2952.015, - "99.97810908917086" : 2959.007, - "99.97825225440187" : 2960.015, - "99.97835531108566" : 2962.015, - "99.97853524248495" : 2963.007, - "99.97879817629445" : 2966.015, - "99.97897782916215" : 2973.007, - "99.97909982599325" : 2974.015, - "99.97926555228206" : 2976.015, - "99.97938253554476" : 2977.007, - "99.9795440838599" : 2989.007, - "99.97966468803311" : 2990.015, - "99.97994684052148" : 2992.015, - "99.98014487647332" : 2993.007, - "99.9802292715414" : 2994.015, - "99.98034987571461" : 2998.015, - "99.98069497633956" : 2999.007, - "99.98079413358127" : 3000.015, - "99.98092142251235" : 3006.015, - "99.98107712166437" : 3007.007, - "99.98111834433789" : 3011.007, - "99.98135927415272" : 3012.015, - "99.98144534041027" : 3023.007, - "99.98164170517266" : 3024.015, - "99.9820032391607" : 3035.007, - "99.9822068457441" : 3036.015, - "99.98248899823247" : 3047.007, - "99.98278591289444" : 3053.007, - "99.98305386027234" : 3054.015, - "99.98315468870351" : 3060.015, - "99.98333656982385" : 3061.007, - "99.98347527854962" : 3072.015, - "99.9836187223122" : 3073.007, - "99.98373626263805" : 3088.015, - "99.98406604402622" : 3089.007, - "99.9841833058205" : 3090.015, - "99.98446545830885" : 3094.015, - "99.98465012474496" : 3095.007, - "99.98474761079721" : 3096.015, - "99.98503004181714" : 3099.007, - "99.98524228287945" : 3104.015, - "99.98555674503085" : 3107.007, - "99.98559573945175" : 3108.015, - "99.9858778919401" : 3114.015, - "99.98598568366073" : 3115.007, - "99.98642047145374" : 3116.015, - "99.98658174123732" : 3119.007, - "99.98700761601984" : 3120.015, - "99.98717863440864" : 3121.007, - "99.98729004703978" : 3122.015, - "99.98753961133353" : 3159.007, - "99.98757275659129" : 3160.015, - "99.98770812293812" : 3162.015, - "99.98785518761123" : 3163.007, - "99.98799918843697" : 3165.007, - "99.98841949258794" : 3166.015, - "99.98868604730794" : 3193.007, - "99.98876932824972" : 3225.007, - "99.98898491169096" : 3226.015, - "99.98908768984319" : 3227.007, - "99.98926706417932" : 3228.015, - "99.98955005226242" : 3250.015, - "99.98971466442492" : 3263.007, - "99.98983220475077" : 3264.015, - "99.99011435723912" : 3273.007, - "99.99039678825906" : 3275.007, - "99.99047644829032" : 3279.007, - "99.990679219279" : 3280.015, - "99.99085552976777" : 3315.007, - "99.99096192883052" : 3316.015, - "99.99107445558796" : 3320.015, - "99.99124435985044" : 3321.007, - "99.9915265123388" : 3323.007, - "99.99180894335873" : 3335.007, - "99.9919716058002" : 3363.007, - "99.99209165291025" : 3364.015, - "99.99237408393019" : 3373.007, - "99.99265651495011" : 3388.015, - "99.99274258120766" : 3404.015, - "99.99293894597005" : 3405.007, - "99.99338682474723" : 3414.015, - "99.99350352947835" : 3415.007, - "99.9936121567937" : 3436.015, - "99.99378623902986" : 3437.007, - "99.99406867004978" : 3448.015, - "99.99412298370747" : 3523.007, - "99.99435110106973" : 3524.015, - "99.99437644744332" : 3567.007, - "99.99463353208967" : 3568.015, - "99.99482961832047" : 3585.007, - "99.99491596310959" : 3586.015, - "99.99519839412953" : 3588.015, - "99.99534323055" : 3610.015, - "99.99548082514947" : 3611.007, - "99.99559864400689" : 3625.007, - "99.99576353470098" : 3626.015, - "99.99589138069521" : 3636.015, - "99.99604568718934" : 3637.007, - "99.99623675985174" : 3651.007, - "99.99632811820926" : 3652.015, - "99.99634120919343" : 3708.015, - "99.9966105492292" : 3709.007, - "99.99683894512303" : 3730.015, - "99.99689298024914" : 3731.007, - "99.99717541126907" : 3765.007, - "99.99742748234702" : 3804.015, - "99.99745784228901" : 3805.007, - "99.99774027330895" : 3814.015, - "99.99784973621904" : 3853.007, - "99.99802270432887" : 3854.015, - "99.99822046174914" : 3931.007, - "99.99830513534882" : 3932.015, - "99.99838117446957" : 3971.007, - "99.99858756636876" : 3972.015, - "99.99870538522617" : 4032.015, - "99.99886999738868" : 4033.007, - "99.99898224561456" : 4070.015, - "99.99915242840862" : 4071.007, - "99.9993827740235" : 4182.015, - "99.99943513796013" : 4183.007, - "99.99970280680644" : 5025.023, - "99.99971729044849" : 5026.015, - "99.99984235112694" : 5079.007, - "100.0" : 5080.031 - }, - "aggregatedEndToEndLatencyAvg" : 243.39480092467136, - "aggregatedEndToEndLatency50pct" : 119.0, - "aggregatedEndToEndLatency75pct" : 294.001, - "aggregatedEndToEndLatency95pct" : 898.003, - "aggregatedEndToEndLatency99pct" : 1500.007, - "aggregatedEndToEndLatency999pct" : 2372.015, - "aggregatedEndToEndLatency9999pct" : 3273.007, - "aggregatedEndToEndLatencyMax" : 5080.031 -} \ No newline at end of file diff --git a/blog/results/pulsar/latency/default-sync-200k.json b/blog/results/pulsar/latency/default-sync-200k.json deleted file mode 100644 index e6e88217..00000000 --- a/blog/results/pulsar/latency/default-sync-200k.json +++ /dev/null @@ -1,2230 +0,0 @@ -{ - "workload" : "100-partitions-200K-rate-4-producer", - "driver" : "Pulsar", - "publishRate" : [ 203434.37889087608, 199868.4088082702, 200000.5958810861, 200113.52154762833, 199904.46971277593, 200031.32113760946, 199893.65652549264, 200192.21244666286, 200077.97407390235, 199996.5124489606, 199991.1342100833, 200033.69202220277, 199959.16816737235, 199963.99367359452, 199903.2557836127, 199998.97045618412, 200145.01526069085, 200039.37204024842, 199996.08315320956, 200010.23303502382, 199867.15822005805, 200116.24638311905, 199986.64063987823, 200002.36226281544, 200014.6109897825, 200012.23540050178, 200003.2093744593, 199965.30154961284, 200003.73193080892, 200042.12744119792, 200030.1419690063, 199860.45337746825, 200090.4437736812, 199986.01671941133, 200058.99075758664, 200075.12814046766, 199702.73464573652, 200220.5096198005, 200067.28011846237, 199906.12722768213, 199993.49873528804, 200013.00155309297, 200083.07068831776, 199954.2309603092, 200086.2367797373, 199929.25939884575, 200061.6251006592, 199740.82073420406, 200235.4378004144, 199957.40338160543, 199982.8294559432, 200022.4352869315, 200092.41330926854, 200051.11061408382, 200001.36226692967, 199863.58309502323, 200143.4159996389, 199968.80727785823, 200012.63022609337, 199904.60756807638 ], - "consumeRate" : [ 203333.61060280993, 199937.1217967668, 199936.54506940919, 200131.79744445827, 199898.8093719432, 200053.66009017391, 199797.0709353271, 200269.6872509457, 200089.20449901212, 200002.57436770032, 199968.97470379074, 200023.75384750706, 199972.681600764, 199944.22403889135, 199921.72101967773, 199971.6755551582, 200202.53470477258, 200072.05993301014, 199943.01985092624, 200032.1870082914, 199854.74450562336, 200126.97434096748, 199942.93709196523, 200018.55316673836, 200042.82555057204, 200014.32169475628, 199953.82765689775, 199999.46365494624, 200026.97071843807, 200029.90991488725, 200017.32332042776, 199865.7168982752, 200115.46986391157, 199918.89185679736, 200095.643405153, 200020.8768646684, 199910.7628809674, 200070.31674692588, 200082.3866990793, 199893.81029956715, 199948.915797439, 200054.90514666613, 200096.58225607825, 199992.07795786145, 199934.01103311643, 199985.9693119956, 200095.6037343763, 199760.3728673493, 200208.61406123242, 199992.37220651208, 200043.10736268008, 199958.4697766007, 200096.68523461602, 200023.08112844094, 200006.82747190807, 199900.9322147784, 200081.11811946012, 199972.682522948, 200029.72167916707, 199910.66568071052 ], - "backlog" : [ 2146, 1455, 2102, 1918, 1975, 1750, 2721, 1943, 1830, 1768, 1992, 2092, 1956, 2155, 1969, 2244, 1665, 1336, 1870, 1647, 1776, 1666, 2106, 1943, 1659, 1638, 2134, 1791, 1557, 1678, 1809, 1756, 1504, 2180, 1811, 2356, 260, 1775, 1623, 1747, 2194, 1774, 1645, 1257, 2789, 2218, 1876, 1679, 1949, 1597, 996, 1634, 1591, 1873, 1817, 1442, 2069, 2030, 1858, 1797 ], - "publishLatencyAvg" : [ 3.3313874399379126, 3.2812481245923433, 3.3351622097474607, 3.398003391174904, 3.312343926612248, 3.2950374530124646, 3.3335996470359164, 3.410670195530227, 3.305117361778894, 3.292296926509803, 3.385438998805428, 3.404347610121418, 3.341624759761103, 3.33509873087696, 3.4288416471572156, 3.3876819122815465, 3.4090006372765065, 3.3499494941517507, 3.372072120328211, 3.308167058408627, 3.4358545405219547, 3.4021740700676686, 3.645291331731538, 3.448487739015078, 3.4270354078340373, 3.4863229096190853, 3.4491617110694928, 3.5523277109678344, 3.526528753877809, 3.4851512383212957, 3.3601602106895543, 3.6093293957529187, 3.49797202766656, 3.694222870647581, 3.4021728332659724, 3.5160346502373567, 3.3013227468639084, 3.3305646662613078, 3.390799064006887, 3.5975093446960753, 3.5718241899564784, 3.6250777946759003, 3.420594090450864, 3.624692781421617, 3.5384162335592144, 3.369429365863256, 3.3172529983317776, 3.442013048410652, 3.4674945692300363, 3.5152400991586616, 3.5948581003295805, 3.4949090734352044, 3.431038907827455, 3.410030778364575, 3.3716560707428473, 3.4551527803177278, 3.3948181526613257, 3.675790190745172, 3.611940402602533, 3.448043490959811 ], - "publishLatency50pct" : [ 3.156, 3.14, 3.141, 3.157, 3.15, 3.145, 3.149, 3.165, 3.154, 3.157, 3.161, 3.173, 3.165, 3.167, 3.162, 3.182, 3.162, 3.152, 3.16, 3.169, 3.194, 3.176, 3.192, 3.168, 3.141, 3.152, 3.145, 3.166, 3.18, 3.176, 3.163, 3.198, 3.187, 3.174, 3.158, 3.191, 3.146, 3.16, 3.147, 3.168, 3.178, 3.204, 3.183, 3.219, 3.224, 3.19, 3.181, 3.196, 3.186, 3.198, 3.203, 3.19, 3.217, 3.201, 3.181, 3.216, 3.226, 3.226, 3.204, 3.216 ], - "publishLatency75pct" : [ 3.805, 3.784, 3.772, 3.786, 3.789, 3.777, 3.789, 3.809, 3.797, 3.816, 3.824, 3.835, 3.826, 3.845, 3.807, 3.832, 3.805, 3.793, 3.794, 3.815, 3.87, 3.831, 3.864, 3.825, 3.795, 3.805, 3.783, 3.818, 3.837, 3.851, 3.826, 3.874, 3.847, 3.843, 3.811, 3.858, 3.797, 3.807, 3.792, 3.823, 3.864, 3.918, 3.882, 3.93, 3.937, 3.891, 3.879, 3.907, 3.877, 3.888, 3.908, 3.891, 3.926, 3.898, 3.889, 3.909, 3.928, 3.943, 3.911, 3.909 ], - "publishLatency95pct" : [ 4.36, 4.338, 4.345, 4.375, 4.361, 4.348, 4.372, 4.413, 4.371, 4.351, 4.394, 4.409, 4.38, 4.382, 4.437, 4.45, 4.379, 4.376, 4.361, 4.386, 4.452, 4.387, 4.488, 4.421, 4.343, 4.397, 4.366, 4.428, 4.49, 4.433, 4.378, 4.478, 4.452, 4.437, 4.38, 4.542, 4.347, 4.381, 4.36, 4.474, 4.44, 4.463, 4.393, 4.555, 4.52, 4.415, 4.374, 4.42, 4.407, 4.458, 4.528, 4.422, 4.461, 4.433, 4.392, 4.468, 4.435, 4.613, 4.494, 4.468 ], - "publishLatency99pct" : [ 8.49, 7.09, 7.95, 10.848, 7.808, 7.732, 10.086, 12.097, 8.203, 7.0, 10.168, 9.972, 8.634, 8.331, 13.585, 9.909, 9.445, 9.713, 8.106, 7.297, 10.575, 8.783, 16.866, 11.322, 10.366, 12.803, 12.956, 14.645, 15.653, 12.991, 8.414, 16.402, 13.0, 26.216, 10.574, 14.012, 7.455, 8.934, 9.148, 19.046, 16.983, 16.812, 8.087, 15.621, 13.112, 7.992, 6.073, 10.73, 12.084, 14.892, 14.978, 11.943, 8.245, 9.255, 7.272, 10.784, 6.703, 18.105, 16.885, 10.512 ], - "publishLatency999pct" : [ 23.992, 20.503, 30.015, 32.946, 23.57, 19.486, 21.041, 25.538, 15.82, 17.509, 24.194, 27.237, 21.117, 18.86, 23.628, 20.552, 43.32, 23.578, 38.873, 18.796, 24.574, 34.281, 54.912, 35.736, 49.299, 47.663, 44.239, 51.883, 30.046, 34.147, 26.644, 53.56, 42.566, 47.467, 30.496, 27.749, 23.652, 20.961, 39.581, 35.596, 37.957, 43.219, 38.72, 40.309, 28.489, 18.131, 15.533, 26.131, 33.519, 30.13, 36.857, 40.896, 28.459, 26.762, 26.158, 22.633, 23.879, 32.887, 39.289, 22.902 ], - "publishLatency9999pct" : [ 30.829, 24.272, 49.675, 37.247, 31.035, 58.6, 23.651, 30.587, 58.107, 21.214, 27.589, 58.434, 24.847, 22.945, 52.929, 25.084, 81.208, 60.256, 65.287, 23.531, 46.536, 57.043, 60.879, 58.796, 57.873, 58.698, 52.633, 57.841, 51.091, 43.162, 32.069, 71.362, 53.357, 51.296, 54.092, 33.647, 27.354, 33.038, 46.636, 43.435, 42.633, 51.1, 47.397, 46.617, 35.591, 28.778, 36.297, 37.86, 39.317, 37.11, 43.548, 48.002, 34.029, 36.035, 35.375, 28.372, 28.577, 37.515, 48.624, 27.045 ], - "publishLatencyMax" : [ 32.216, 25.409, 50.818, 37.52, 32.83, 59.838, 24.846, 31.819, 58.257, 22.881, 28.079, 59.606, 26.526, 23.311, 53.465, 27.448, 83.576, 60.38, 68.707, 24.693, 47.856, 58.203, 62.247, 59.896, 59.087, 59.823, 52.964, 58.278, 51.403, 44.925, 33.209, 72.479, 55.461, 54.335, 55.518, 35.329, 28.518, 33.392, 49.473, 44.807, 44.901, 52.368, 49.629, 47.47, 36.765, 30.711, 39.736, 39.312, 40.479, 38.23, 45.647, 48.98, 36.149, 38.322, 37.114, 29.508, 29.642, 39.413, 51.264, 28.661 ], - "aggregatedPublishLatencyAvg" : 3.4392448633780863, - "aggregatedPublishLatency50pct" : 3.177, - "aggregatedPublishLatency75pct" : 3.847, - "aggregatedPublishLatency95pct" : 4.414, - "aggregatedPublishLatency99pct" : 10.962, - "aggregatedPublishLatency999pct" : 33.313, - "aggregatedPublishLatency9999pct" : 54.127, - "aggregatedPublishLatencyMax" : 83.576, - "aggregatedPublishLatencyQuantiles" : { - "8.277030899894526E-7" : 0.714, - "0.5008092039259282" : 1.51, - "1.002182073656139" : 1.642, - "1.5049454845775325" : 1.74, - "2.006055144725127" : 1.821, - "2.5000258657215624" : 1.889, - "3.00399192923271" : 1.948, - "3.501205590935724" : 1.998, - "4.004062532306286" : 2.042, - "4.510907347164418" : 2.081, - "5.0046396896709355" : 2.115, - "5.509860551066508" : 2.146, - "6.009713757923498" : 2.173, - "6.510888806615202" : 2.197, - "7.0005885796672915" : 2.218, - "7.51073013593285" : 2.238, - "8.00210683544526" : 2.256, - "8.5214607271024" : 2.274, - "9.004810362048092" : 2.29, - "9.514427982257688" : 2.306, - "10.013133992631953" : 2.321, - "10.531741296101924" : 2.336, - "11.000848643978166" : 2.349, - "11.52315081404185" : 2.363, - "12.025753650563786" : 2.376, - "12.503915242541423" : 2.388, - "13.034165017675186" : 2.401, - "13.53521342779412" : 2.413, - "14.000814625381167" : 2.424, - "14.517346049501445" : 2.436, - "15.037698151085115" : 2.448, - "15.515585773339964" : 2.459, - "16.041211999013047" : 2.471, - "16.522138947014337" : 2.482, - "17.00536442649653" : 2.493, - "17.528998370832007" : 2.505, - "18.008679625682866" : 2.516, - "18.529466271388777" : 2.528, - "19.006898656944134" : 2.539, - "19.528582532799597" : 2.551, - "20.00539165792819" : 2.562, - "20.5255252458961" : 2.574, - "21.001802985640925" : 2.585, - "21.52467709853979" : 2.597, - "22.004209366834452" : 2.608, - "22.531908988747954" : 2.62, - "23.016207171434775" : 2.631, - "23.502780709915974" : 2.642, - "24.03854960925379" : 2.654, - "24.532776090505028" : 2.665, - "25.0333998889388" : 2.676, - "25.537671374890152" : 2.687, - "26.000734007100203" : 2.697, - "26.518353860783815" : 2.708, - "27.042499325628906" : 2.719, - "27.52490786216128" : 2.729, - "28.014271587758834" : 2.739, - "28.510785012647716" : 2.749, - "29.01043543224766" : 2.759, - "29.51413994158237" : 2.769, - "30.0196703639336" : 2.779, - "30.529375720670735" : 2.789, - "31.03729572184276" : 2.799, - "31.544796077548163" : 2.809, - "32.001367034423424" : 2.818, - "32.51098713774229" : 2.828, - "33.01960985883772" : 2.838, - "33.52739494440608" : 2.848, - "34.03440695528839" : 2.858, - "34.543172041315295" : 2.868, - "35.04935965991998" : 2.878, - "35.50326706825165" : 2.887, - "36.00706428033244" : 2.897, - "36.51008096839937" : 2.907, - "37.01424236983976" : 2.917, - "37.51621946282566" : 2.927, - "38.018702282399545" : 2.937, - "38.52230498425419" : 2.947, - "39.02764834570708" : 2.957, - "39.531939696532596" : 2.967, - "40.03678643613149" : 2.977, - "40.54124415527809" : 2.987, - "41.051145677647554" : 2.997, - "41.511752514789606" : 3.006, - "42.02204140220518" : 3.016, - "42.53357763817738" : 3.026, - "43.04752249014143" : 3.036, - "43.510478348652875" : 3.045, - "44.02336870688029" : 3.055, - "44.53395391200208" : 3.065, - "45.0443967521924" : 3.075, - "45.503026206652464" : 3.084, - "46.01051994073315" : 3.094, - "46.51403656146643" : 3.104, - "47.01425892390156" : 3.114, - "47.51075248391628" : 3.124, - "48.00136935199208" : 3.134, - "48.53461789542087" : 3.145, - "49.013042696981124" : 3.155, - "49.53162434165531" : 3.166, - "50.038302788192354" : 3.177, - "50.26613302993049" : 3.182, - "50.534887395546974" : 3.188, - "50.75513753238699" : 3.193, - "51.016767029804846" : 3.199, - "51.27465199844359" : 3.205, - "51.52567034224778" : 3.211, - "51.77488429331579" : 3.217, - "52.02099435779635" : 3.223, - "52.26372573826357" : 3.229, - "52.50120782573407" : 3.235, - "52.77484563958149" : 3.242, - "53.00514988585561" : 3.248, - "53.268677306458805" : 3.255, - "53.52752654919739" : 3.262, - "53.781523796422455" : 3.269, - "54.03139080522847" : 3.276, - "54.27646541314345" : 3.283, - "54.51994752031328" : 3.29, - "54.759966517754606" : 3.297, - "55.030390360503596" : 3.305, - "55.26627580871351" : 3.312, - "55.53319681198567" : 3.32, - "55.76697410042538" : 3.327, - "56.00015047642176" : 3.334, - "56.26641345573738" : 3.342, - "56.500494511211116" : 3.349, - "56.768247356088715" : 3.357, - "57.002085066853994" : 3.364, - "57.27148835169303" : 3.372, - "57.50625971154382" : 3.379, - "57.77727536200216" : 3.387, - "58.01548913900421" : 3.394, - "58.25502806865334" : 3.401, - "58.52758076374978" : 3.409, - "58.76651547014322" : 3.416, - "59.005198554797296" : 3.423, - "59.2781601352202" : 3.431, - "59.517006277383004" : 3.438, - "59.75729593373475" : 3.445, - "60.03274807275543" : 3.453, - "60.2754256525218" : 3.46, - "60.51902612123351" : 3.467, - "60.76584552726218" : 3.474, - "61.014814478215555" : 3.481, - "61.26529233190199" : 3.488, - "61.51834185908901" : 3.495, - "61.774569766141596" : 3.502, - "62.033361069663876" : 3.509, - "62.255484298596535" : 3.515, - "62.51784051932741" : 3.522, - "62.78283545750916" : 3.529, - "63.01189235522666" : 3.535, - "63.28022128145489" : 3.542, - "63.5111711361392" : 3.548, - "63.78147330653396" : 3.555, - "64.01473328054243" : 3.561, - "64.28737702297877" : 3.568, - "64.52146966629577" : 3.574, - "64.75591822194147" : 3.58, - "65.02780130523811" : 3.587, - "65.26195685398994" : 3.593, - "65.53560791108681" : 3.6, - "65.76974690577684" : 3.606, - "66.00349936312385" : 3.612, - "66.2742335945316" : 3.619, - "66.50650280794135" : 3.625, - "66.7760294205408" : 3.632, - "67.00688408936975" : 3.638, - "67.27486786340945" : 3.645, - "67.50282805453273" : 3.651, - "67.76940390561636" : 3.658, - "68.03542271252043" : 3.665, - "68.26316025151249" : 3.671, - "68.52800537543494" : 3.678, - "68.75481257615385" : 3.684, - "69.01872901720935" : 3.691, - "69.28497544246318" : 3.698, - "69.5118472040231" : 3.704, - "69.77589028365136" : 3.711, - "70.00276038980512" : 3.717, - "70.26845639250409" : 3.724, - "70.53255492823938" : 3.731, - "70.76077087961745" : 3.737, - "71.02730782865586" : 3.744, - "71.25696977733215" : 3.75, - "71.52460426066787" : 3.757, - "71.75271178294116" : 3.763, - "72.02090827667499" : 3.77, - "72.2525848546723" : 3.776, - "72.52328763336263" : 3.783, - "72.75553284338277" : 3.789, - "73.02558339203817" : 3.796, - "73.25777976757601" : 3.802, - "73.53091930416326" : 3.809, - "73.76585537692895" : 3.815, - "74.00158438925486" : 3.821, - "74.27759771097055" : 3.828, - "74.51502103152167" : 3.834, - "74.7558577996159" : 3.84, - "75.03845798252172" : 3.847, - "75.15946651887201" : 3.85, - "75.28293085029028" : 3.853, - "75.40454857611479" : 3.856, - "75.52664885284076" : 3.859, - "75.6513398402384" : 3.862, - "75.77500695891374" : 3.865, - "75.90064152783395" : 3.868, - "76.02535982943357" : 3.871, - "76.14956743822665" : 3.874, - "76.2765147442476" : 3.877, - "76.40191921170882" : 3.88, - "76.52762165228243" : 3.883, - "76.65597025963473" : 3.886, - "76.78235721066376" : 3.889, - "76.91037308137389" : 3.892, - "77.03806863098819" : 3.895, - "77.16516988978388" : 3.898, - "77.2514571092122" : 3.9, - "77.37914603720178" : 3.903, - "77.50614714392358" : 3.906, - "77.63530772800716" : 3.909, - "77.76208535489467" : 3.912, - "77.88884808312655" : 3.915, - "78.0177967752191" : 3.918, - "78.14432609117961" : 3.921, - "78.27226415779927" : 3.924, - "78.39929588953541" : 3.927, - "78.52583762104227" : 3.93, - "78.65491046859832" : 3.933, - "78.78119147363182" : 3.936, - "78.90767029970384" : 3.939, - "79.03608926181879" : 3.942, - "79.16219976001577" : 3.945, - "79.28979019133764" : 3.948, - "79.41623590928606" : 3.951, - "79.50025687765398" : 3.953, - "79.6273730351053" : 3.956, - "79.7535629927989" : 3.959, - "79.87870259527132" : 3.962, - "80.00535110047679" : 3.965, - "80.13004374328061" : 3.968, - "80.25494165645074" : 3.971, - "80.38152973933065" : 3.974, - "80.50616195980889" : 3.977, - "80.63205973831174" : 3.98, - "80.75718195901926" : 3.983, - "80.88146571649662" : 3.986, - "81.00754558967927" : 3.989, - "81.13153882337205" : 3.992, - "81.25572905040025" : 3.995, - "81.38236514005936" : 3.998, - "81.50693031658733" : 4.001, - "81.63227850023841" : 4.004, - "81.75628911569609" : 4.007, - "81.8787006087839" : 4.01, - "82.0029570520593" : 4.013, - "82.16519761783739" : 4.017, - "82.2883292126135" : 4.02, - "82.41013731014871" : 4.023, - "82.5315332115451" : 4.026, - "82.65462673197906" : 4.029, - "82.77550118042876" : 4.032, - "82.89585914215031" : 4.035, - "83.01837492582746" : 4.038, - "83.1381294919964" : 4.041, - "83.25937144061805" : 4.044, - "83.37990156458233" : 4.047, - "83.53976745019524" : 4.051, - "83.66119563201215" : 4.054, - "83.78000082273687" : 4.057, - "83.9002280073702" : 4.06, - "84.01921943129017" : 4.063, - "84.13738563522942" : 4.066, - "84.25722628251972" : 4.069, - "84.41419603502078" : 4.073, - "84.53258820190361" : 4.076, - "84.65016839205515" : 4.079, - "84.76662621681666" : 4.082, - "84.88478745453737" : 4.085, - "85.00049455259627" : 4.088, - "85.1558858753047" : 4.092, - "85.27172126734256" : 4.095, - "85.38686966581571" : 4.098, - "85.50328941623508" : 4.101, - "85.65551808543667" : 4.105, - "85.77113413615567" : 4.108, - "85.88536212879275" : 4.111, - "86.03609182769837" : 4.115, - "86.15088017532737" : 4.118, - "86.26380784641009" : 4.121, - "86.37793072075475" : 4.124, - "86.5286322777553" : 4.128, - "86.64076369846545" : 4.131, - "86.75466226527271" : 4.134, - "86.90395672702029" : 4.138, - "87.01765912819523" : 4.141, - "87.12937421425111" : 4.144, - "87.27902293292121" : 4.148, - "87.39054764726639" : 4.151, - "87.50095413473699" : 4.154, - "87.57599204146925" : 4.156, - "87.65043731278908" : 4.158, - "87.72391748230598" : 4.16, - "87.76081400294845" : 4.161, - "87.83415346294005" : 4.163, - "87.90905562636556" : 4.165, - "87.94573197798607" : 4.166, - "88.01870062699336" : 4.168, - "88.09155339756806" : 4.17, - "88.12801123557283" : 4.171, - "88.20228268924376" : 4.173, - "88.27453206426584" : 4.175, - "88.34655961485981" : 4.177, - "88.38257463171144" : 4.178, - "88.4557278585078" : 4.18, - "88.52794991932792" : 4.182, - "88.56397569631972" : 4.183, - "88.63547186152991" : 4.185, - "88.70714515520136" : 4.187, - "88.78040846650869" : 4.189, - "88.81619503730748" : 4.19, - "88.88728811111285" : 4.192, - "88.95800292460609" : 4.194, - "89.03022912394167" : 4.196, - "89.06616468129666" : 4.197, - "89.13662207912891" : 4.199, - "89.20703395329123" : 4.201, - "89.2773249828024" : 4.203, - "89.31357258422231" : 4.204, - "89.38407053950598" : 4.206, - "89.45385667013225" : 4.208, - "89.5234400135015" : 4.21, - "89.59418131349362" : 4.212, - "89.62946133000133" : 4.213, - "89.6985364636733" : 4.215, - "89.76754124258264" : 4.217, - "89.83625632541047" : 4.219, - "89.90634125685224" : 4.221, - "89.94016617132775" : 4.222, - "90.00824143966703" : 4.224, - "90.07587305915007" : 4.226, - "90.14465849674055" : 4.228, - "90.21270727858094" : 4.23, - "90.27982158363274" : 4.232, - "90.31316891342532" : 4.233, - "90.38028570158639" : 4.235, - "90.44875164578413" : 4.237, - "90.51532297760889" : 4.239, - "90.58171138705077" : 4.241, - "90.64801371537128" : 4.243, - "90.71558656793493" : 4.245, - "90.78149987580315" : 4.247, - "90.8141800769052" : 4.248, - "90.87934017496154" : 4.25, - "90.94577990199498" : 4.252, - "91.01084729730523" : 4.254, - "91.07552649986629" : 4.256, - "91.14002526315372" : 4.258, - "91.20540139171653" : 4.26, - "91.26979503671153" : 4.262, - "91.33324261707467" : 4.264, - "91.39622171748888" : 4.266, - "91.46039105494648" : 4.268, - "91.5236267433186" : 4.27, - "91.5857210291296" : 4.272, - "91.64760259524648" : 4.274, - "91.71052210103821" : 4.276, - "91.77208748457471" : 4.278, - "91.83284171908304" : 4.28, - "91.89319700070197" : 4.282, - "91.95402572848839" : 4.284, - "92.01379085780417" : 4.286, - "92.0727994664957" : 4.288, - "92.1313304905043" : 4.29, - "92.1907223257265" : 4.292, - "92.27793822802177" : 4.295, - "92.3352103156305" : 4.297, - "92.39214138956616" : 4.299, - "92.450288359341" : 4.301, - "92.50673771007828" : 4.303, - "92.56286673971974" : 4.305, - "92.64701103584807" : 4.308, - "92.70266413621277" : 4.31, - "92.75748456726896" : 4.312, - "92.83926659877847" : 4.315, - "92.8944710840684" : 4.317, - "92.94797546721149" : 4.319, - "93.00094101564301" : 4.321, - "93.08063557995955" : 4.324, - "93.13321541875113" : 4.326, - "93.21060979618059" : 4.329, - "93.261633553163" : 4.331, - "93.31357357746602" : 4.333, - "93.38873646736486" : 4.336, - "93.43858736906876" : 4.338, - "93.51360292781759" : 4.341, - "93.58622145841781" : 4.344, - "93.63394350777425" : 4.346, - "93.70658190324863" : 4.349, - "93.7530028033476" : 4.351, - "93.7992300209235" : 4.353, - "93.82209118026901" : 4.354, - "93.84489026188278" : 4.355, - "93.89132606063737" : 4.357, - "93.91401009152162" : 4.358, - "93.95852892991978" : 4.36, - "93.98079000452505" : 4.361, - "94.00280276820332" : 4.362, - "94.04734312688184" : 4.364, - "94.0694229345104" : 4.365, - "94.11226898496369" : 4.367, - "94.13371394432224" : 4.368, - "94.17620408244684" : 4.37, - "94.19727243689944" : 4.371, - "94.21894667001389" : 4.372, - "94.26104530457694" : 4.374, - "94.2817271216865" : 4.375, - "94.32245342452634" : 4.377, - "94.36317227803838" : 4.379, - "94.38390624044261" : 4.38, - "94.42394886053013" : 4.382, - "94.44362750149463" : 4.383, - "94.48270170896684" : 4.385, - "94.50204016396135" : 4.386, - "94.5411954863364" : 4.388, - "94.5793294230984" : 4.39, - "94.59807938119593" : 4.391, - "94.63522172965611" : 4.393, - "94.67197588536709" : 4.395, - "94.69082930635088" : 4.396, - "94.72730618152671" : 4.398, - "94.76299673876706" : 4.4, - "94.79853499863884" : 4.402, - "94.81611292916095" : 4.403, - "94.85194916214513" : 4.405, - "94.88616475247912" : 4.407, - "94.91991269056726" : 4.409, - "94.95348267249105" : 4.411, - "94.97077090693166" : 4.412, - "95.00407436846048" : 4.414, - "95.03638706939057" : 4.416, - "95.06852843578105" : 4.418, - "95.10075836640215" : 4.42, - "95.13243208054676" : 4.422, - "95.16318621655842" : 4.424, - "95.19361009903716" : 4.426, - "95.2242988465047" : 4.428, - "95.25433950245278" : 4.43, - "95.28337284374034" : 4.432, - "95.32638360710854" : 4.435, - "95.35543598556717" : 4.437, - "95.38331219793493" : 4.439, - "95.41071993035375" : 4.441, - "95.43792239240625" : 4.443, - "95.47886141494023" : 4.446, - "95.50521299821622" : 4.448, - "95.5440587596356" : 4.451, - "95.5702861874481" : 4.453, - "95.59530847956157" : 4.455, - "95.63258077740689" : 4.458, - "95.65771398173442" : 4.46, - "95.69429597520268" : 4.463, - "95.72978457288906" : 4.466, - "95.75359841849115" : 4.468, - "95.78845299561061" : 4.471, - "95.82234909255186" : 4.474, - "95.84504884979482" : 4.476, - "95.87829271670115" : 4.479, - "95.91080158326358" : 4.482, - "95.9429967503549" : 4.485, - "95.9738957344073" : 4.488, - "96.00416235329894" : 4.491, - "96.03457713104369" : 4.494, - "96.06362537098687" : 4.497, - "96.1021532944197" : 4.501, - "96.12961565524246" : 4.504, - "96.15661036381938" : 4.507, - "96.19215193450353" : 4.511, - "96.22615149433102" : 4.515, - "96.25143534062093" : 4.518, - "96.28355518673106" : 4.522, - "96.31523303939113" : 4.526, - "96.34499144858553" : 4.53, - "96.38157013124143" : 4.535, - "96.40927500906956" : 4.539, - "96.44315620735519" : 4.544, - "96.46887542547043" : 4.548, - "96.50545079731397" : 4.554, - "96.53464057448554" : 4.559, - "96.56772303928933" : 4.565, - "96.59878342544427" : 4.571, - "96.6285799089808" : 4.577, - "96.6568335539576" : 4.583, - "96.68760507173413" : 4.59, - "96.71986976588501" : 4.598, - "96.75347202822931" : 4.607, - "96.78454979614915" : 4.616, - "96.81334144813442" : 4.625, - "96.84618718985448" : 4.636, - "96.8762816465034" : 4.647, - "96.89190288692078" : 4.653, - "96.90675850197991" : 4.659, - "96.92382656739858" : 4.666, - "96.93775018877838" : 4.672, - "96.95346247653565" : 4.679, - "96.97063731565294" : 4.687, - "96.98498885953026" : 4.694, - "97.00039572484732" : 4.702, - "97.0170168305974" : 4.711, - "97.03126656699466" : 4.719, - "97.0479977572557" : 4.729, - "97.0625587100148" : 4.738, - "97.0795837348728" : 4.749, - "97.09392534631304" : 4.759, - "97.1101019755038" : 4.771, - "97.12530522586073" : 4.783, - "97.14166726054363" : 4.797, - "97.15720076443347" : 4.811, - "97.17221281537661" : 4.825, - "97.188395238489" : 4.841, - "97.2033518333251" : 4.857, - "97.21930001646301" : 4.875, - "97.23484676360229" : 4.893, - "97.25077922038149" : 4.912, - "97.26564062936225" : 4.93, - "97.28127345762289" : 4.95, - "97.29706272176752" : 4.971, - "97.31303573599814" : 4.993, - "97.32834493235059" : 5.014, - "97.34387512542806" : 5.036, - "97.35949636584543" : 5.059, - "97.37515568060493" : 5.081, - "97.39097391435773" : 5.103, - "97.40661667505543" : 5.125, - "97.42222715533264" : 5.148, - "97.43817699387674" : 5.172, - "97.45340673073254" : 5.195, - "97.46911405227127" : 5.219, - "97.48441083307736" : 5.243, - "97.50061063795464" : 5.269, - "97.51599101677283" : 5.294, - "97.53141857466714" : 5.319, - "97.54726163951263" : 5.347, - "97.56277279541902" : 5.375, - "97.57827484659144" : 5.403, - "97.594054178299" : 5.431, - "97.60971266535542" : 5.459, - "97.62529252061829" : 5.487, - "97.64099984215702" : 5.515, - "97.65628751822912" : 5.543, - "97.67193607284847" : 5.573, - "97.68765829304282" : 5.603, - "97.70314958407506" : 5.633, - "97.71904562191831" : 5.663, - "97.73447400751571" : 5.692, - "97.75019622771006" : 5.722, - "97.76569993428865" : 5.754, - "97.78170936745522" : 5.788, - "97.79721141862764" : 5.823, - "97.81256200013459" : 5.857, - "97.82829663587529" : 5.891, - "97.84386738640417" : 5.924, - "97.85941827205889" : 5.958, - "97.87535403965046" : 5.995, - "97.89077580362314" : 6.03, - "97.90641939202393" : 6.065, - "97.92209360543907" : 6.101, - "97.93750129845922" : 6.138, - "97.95324752204318" : 6.175, - "97.9689639483159" : 6.211, - "97.98443289136472" : 6.247, - "98.0000119189245" : 6.284, - "98.01591043987702" : 6.322, - "98.03141083564324" : 6.359, - "98.04715292071175" : 6.399, - "98.06264752255636" : 6.438, - "98.0782464149903" : 6.477, - "98.0939984324959" : 6.52, - "98.10972975742423" : 6.56, - "98.12514324436601" : 6.6, - "98.14091016052723" : 6.644, - "98.1563898637162" : 6.69, - "98.172116222426" : 6.737, - "98.18752391544615" : 6.783, - "98.20344726749137" : 6.827, - "98.21902050112952" : 6.87, - "98.23460449490784" : 6.914, - "98.25028119143225" : 6.96, - "98.26588091156928" : 7.008, - "98.281505462799" : 7.058, - "98.29715567282453" : 7.109, - "98.31263620371661" : 7.163, - "98.32817550152807" : 7.215, - "98.34382985006903" : 7.271, - "98.3594179823628" : 7.326, - "98.3751120606521" : 7.379, - "98.3907879294734" : 7.438, - "98.40646710910707" : 7.497, - "98.4220585522132" : 7.557, - "98.4376615831626" : 7.619, - "98.44541467800653" : 7.65, - "98.4531892931308" : 7.68, - "98.46115759077813" : 7.71, - "98.46885026329649" : 7.739, - "98.47662322301458" : 7.771, - "98.4844764699324" : 7.805, - "98.49221301071454" : 7.839, - "98.50015978808152" : 7.877, - "98.50792860928416" : 7.914, - "98.51567673790956" : 7.949, - "98.52363179230744" : 7.983, - "98.53132777563816" : 8.016, - "98.53918598877452" : 8.051, - "98.54707979314375" : 8.087, - "98.55487427314219" : 8.126, - "98.56267620246842" : 8.164, - "98.57033824997245" : 8.204, - "98.57830489221361" : 8.251, - "98.58608033504096" : 8.289, - "98.59378045688715" : 8.328, - "98.60174130520666" : 8.367, - "98.6093859709458" : 8.404, - "98.61730874492318" : 8.443, - "98.62503866408059" : 8.481, - "98.6329092927633" : 8.524, - "98.6408395160685" : 8.565, - "98.64857605685062" : 8.607, - "98.65627866180607" : 8.651, - "98.66413190872389" : 8.692, - "98.67188252045854" : 8.73, - "98.67971838561148" : 8.77, - "98.68765771365065" : 8.813, - "98.6953263827794" : 8.854, - "98.70329219731747" : 8.895, - "98.71097410969566" : 8.936, - "98.71889108975141" : 8.98, - "98.72664501229842" : 9.026, - "98.73440638417325" : 9.073, - "98.74231343179193" : 9.117, - "98.75008308069766" : 9.162, - "98.75795867559891" : 9.21, - "98.765722530583" : 9.258, - "98.77358322682863" : 9.305, - "98.7813917777796" : 9.359, - "98.78917798074713" : 9.406, - "98.79693769721578" : 9.454, - "98.80475121438528" : 9.5, - "98.81258211331968" : 9.55, - "98.82042294469115" : 9.6, - "98.82821163076794" : 9.652, - "98.83607481012284" : 9.704, - "98.84378486440609" : 9.765, - "98.85159920927869" : 9.822, - "98.85943424672853" : 9.869, - "98.86728418283398" : 9.921, - "98.87505879795826" : 9.978, - "98.88282016983308" : 10.037, - "98.89070486946832" : 10.093, - "98.89844306565664" : 10.153, - "98.906292174059" : 10.207, - "98.91410982974396" : 10.263, - "98.92196638747414" : 10.327, - "98.92972362083351" : 10.386, - "98.93758266167296" : 10.45, - "98.94533244570454" : 10.513, - "98.95323949332321" : 10.571, - "98.9609379597632" : 10.629, - "98.96877299721304" : 10.694, - "98.97659230830418" : 10.758, - "98.98440085925513" : 10.816, - "98.99218871762885" : 10.888, - "99.00011231930931" : 10.962, - "99.00791755944792" : 11.024, - "99.01572197188342" : 11.092, - "99.0235288674282" : 11.168, - "99.03127451294432" : 11.241, - "99.03916169568883" : 11.313, - "99.0469371385162" : 11.385, - "99.05471837526518" : 11.459, - "99.0625062336389" : 11.534, - "99.07038927786796" : 11.615, - "99.07822348761471" : 11.691, - "99.08603783248729" : 11.764, - "99.09382072464247" : 11.835, - "99.10157050867404" : 11.908, - "99.10938071503118" : 11.98, - "99.11727451940041" : 12.068, - "99.12505327304012" : 12.144, - "99.132860996288" : 12.233, - "99.14062898978754" : 12.336, - "99.14847478737757" : 12.428, - "99.15625767953273" : 12.505, - "99.16410513252892" : 12.59, - "99.171896301715" : 12.68, - "99.17968995401033" : 12.779, - "99.1875390624127" : 12.868, - "99.19540472487687" : 12.954, - "99.2032000325784" : 13.044, - "99.21101437745098" : 13.13, - "99.2188022358247" : 13.22, - "99.22269492345691" : 13.266, - "99.2265983712293" : 13.317, - "99.23052665009439" : 13.37, - "99.23443258097606" : 13.426, - "99.2383153361712" : 13.477, - "99.242259341395" : 13.527, - "99.24617603241683" : 13.572, - "99.25007368626758" : 13.617, - "99.25395313065037" : 13.665, - "99.2578367135486" : 13.714, - "99.2617385059148" : 13.766, - "99.2656411259841" : 13.819, - "99.26953464131942" : 13.875, - "99.27349520060501" : 13.929, - "99.27739450986196" : 13.986, - "99.28127229883856" : 14.03, - "99.28521299325" : 14.076, - "99.28909740385131" : 14.131, - "99.29299257459282" : 14.182, - "99.29690761020846" : 14.231, - "99.30080609176231" : 14.287, - "99.3046929854729" : 14.348, - "99.30860057176073" : 14.403, - "99.31254209387527" : 14.463, - "99.31640663960243" : 14.524, - "99.32036057726332" : 14.58, - "99.32427644058205" : 14.63, - "99.32817823294826" : 14.685, - "99.33207919761138" : 14.742, - "99.33600416566411" : 14.793, - "99.33984470800166" : 14.847, - "99.34375808821113" : 14.907, - "99.34768388396695" : 14.963, - "99.35156829456827" : 15.016, - "99.35548333018393" : 15.079, - "99.35938926106559" : 15.134, - "99.36332912777394" : 15.183, - "99.36719863971963" : 15.239, - "99.37113850642798" : 15.299, - "99.37500553526442" : 15.35, - "99.37891560466153" : 15.407, - "99.38281408621538" : 15.468, - "99.38676802387626" : 15.535, - "99.39067147164864" : 15.606, - "99.39455422684378" : 15.673, - "99.39847091786561" : 15.729, - "99.40234787913913" : 15.792, - "99.40625546542697" : 15.856, - "99.41021602471257" : 15.915, - "99.41410457382933" : 15.97, - "99.41797408577504" : 16.031, - "99.42192636802973" : 16.086, - "99.42583395431758" : 16.149, - "99.42972581424671" : 16.214, - "99.43363753905" : 16.285, - "99.43750291248024" : 16.351, - "99.44143946837623" : 16.426, - "99.4453453992579" : 16.494, - "99.44922649904686" : 16.567, - "99.45315808872431" : 16.646, - "99.45705988109052" : 16.721, - "99.46097822751852" : 16.793, - "99.46489491854035" : 16.861, - "99.46875367034589" : 16.934, - "99.47270678030368" : 16.999, - "99.47660360645135" : 17.062, - "99.4804855339434" : 17.13, - "99.48439891415288" : 17.199, - "99.48830236192526" : 17.274, - "99.49224636714906" : 17.345, - "99.49610346354841" : 17.423, - "99.50002925930423" : 17.511, - "99.50390870368702" : 17.587, - "99.5078460872861" : 17.672, - "99.5117569843863" : 17.762, - "99.51563891187834" : 17.846, - "99.51956056911871" : 17.934, - "99.52346236148492" : 18.025, - "99.52735835992951" : 18.102, - "99.53130236515331" : 18.16, - "99.53517353250518" : 18.236, - "99.5390662201374" : 18.315, - "99.54297794494069" : 18.392, - "99.54688635893163" : 18.469, - "99.55079394521947" : 18.572, - "99.55474291666181" : 18.654, - "99.5586041515766" : 18.747, - "99.56251587637989" : 18.832, - "99.56641270252757" : 18.93, - "99.57033270436176" : 19.045, - "99.57421877036926" : 19.145, - "99.57813546139108" : 19.232, - "99.58204387538201" : 19.3, - "99.58597960357491" : 19.39, - "99.58984828781753" : 19.478, - "99.59375752951155" : 19.573, - "99.59767008201793" : 19.682, - "99.60160084399229" : 19.765, - "99.60547118364107" : 19.855, - "99.60939532399071" : 19.945, - "99.6113404262522" : 19.996, - "99.61328635621676" : 20.046, - "99.61526291119566" : 20.097, - "99.61718897628606" : 20.153, - "99.61914732179697" : 20.209, - "99.6210957348708" : 20.262, - "99.62304994186627" : 20.315, - "99.62501242589263" : 20.36, - "99.62695338963866" : 20.399, - "99.62892166758665" : 20.441, - "99.63087421917595" : 20.499, - "99.6328209768436" : 20.557, - "99.63478263316688" : 20.615, - "99.63673104624071" : 20.681, - "99.63867780390837" : 20.731, - "99.64065353118417" : 20.803, - "99.64258290708693" : 20.857, - "99.64457104990909" : 20.893, - "99.64650539203039" : 20.939, - "99.64844635577641" : 20.992, - "99.65041132291205" : 21.044, - "99.6523754623446" : 21.096, - "99.65432966934007" : 21.159, - "99.65627394389846" : 21.217, - "99.65822235697229" : 21.275, - "99.66017077004612" : 21.338, - "99.6621233216354" : 21.407, - "99.66407752863087" : 21.465, - "99.6660259417047" : 21.511, - "99.66799090884034" : 21.559, - "99.66993435569563" : 21.614, - "99.67191173837762" : 21.679, - "99.67385104671746" : 21.743, - "99.67581270304075" : 21.813, - "99.67774621745896" : 21.864, - "99.67968800890807" : 21.929, - "99.68165628685607" : 21.991, - "99.68362870331951" : 22.045, - "99.68556139003464" : 22.098, - "99.68751145851465" : 22.153, - "99.68946069929157" : 22.214, - "99.69142566642721" : 22.281, - "99.6933773903134" : 22.355, - "99.69533573582432" : 22.413, - "99.6972891151167" : 22.479, - "99.699223457238" : 22.543, - "99.70118428585819" : 22.596, - "99.7031591854309" : 22.652, - "99.70509932147384" : 22.726, - "99.70705435617239" : 22.786, - "99.70899283680914" : 22.849, - "99.71095780394478" : 22.917, - "99.71291780486187" : 22.98, - "99.7148579409048" : 23.049, - "99.71680552627556" : 23.13, - "99.71878787517609" : 23.185, - "99.72073214973447" : 23.251, - "99.72266897496505" : 23.318, - "99.72461324952343" : 23.392, - "99.72656993962816" : 23.462, - "99.72855311623178" : 23.533, - "99.73049242457162" : 23.598, - "99.73244414845782" : 23.661, - "99.73438593990693" : 23.723, - "99.7363475962302" : 23.808, - "99.7383001478195" : 23.875, - "99.74024442237788" : 23.947, - "99.74218869693627" : 24.016, - "99.74415118096263" : 24.083, - "99.74610621566119" : 24.138, - "99.74804966251648" : 24.236, - "99.75001462965211" : 24.306, - "99.75195476569505" : 24.384, - "99.75391642201832" : 24.471, - "99.75587890604469" : 24.547, - "99.7578215251969" : 24.624, - "99.75978400922327" : 24.705, - "99.76174649324963" : 24.784, - "99.76368745699565" : 24.871, - "99.76563752547567" : 24.954, - "99.76759587098658" : 25.034, - "99.76953352392024" : 25.11, - "99.77150428497751" : 25.19, - "99.77345021494207" : 25.261, - "99.77540359423445" : 25.353, - "99.77734621338665" : 25.44, - "99.77930124808522" : 25.55, - "99.78126455981467" : 25.663, - "99.78321711140396" : 25.762, - "99.78517214610251" : 25.859, - "99.78712552539488" : 25.935, - "99.78906317832855" : 26.03, - "99.79102980087036" : 26.114, - "99.7929691092102" : 26.184, - "99.79493407634584" : 26.28, - "99.7968882833413" : 26.364, - "99.79883255789969" : 26.472, - "99.8007842817859" : 26.599, - "99.802735177969" : 26.724, - "99.80469104037064" : 26.829, - "99.80566524690755" : 26.892, - "99.80666097372482" : 26.965, - "99.80762773093392" : 27.007, - "99.8086052482832" : 27.044, - "99.8095728331954" : 27.091, - "99.8105652492003" : 27.136, - "99.81153945573722" : 27.175, - "99.81252193930503" : 27.217, - "99.81348041948324" : 27.257, - "99.81446041994178" : 27.3, - "99.81543297107252" : 27.339, - "99.81640800531252" : 27.387, - "99.81739628280198" : 27.437, - "99.81837545555743" : 27.475, - "99.81934055736036" : 27.528, - "99.8203205578189" : 27.593, - "99.82129807516819" : 27.658, - "99.82227145400202" : 27.733, - "99.82325228216365" : 27.801, - "99.82422069477894" : 27.866, - "99.82520648915911" : 27.911, - "99.82618152339913" : 27.963, - "99.82716235156076" : 28.015, - "99.82813407498841" : 28.077, - "99.82911242004077" : 28.132, - "99.83009076509315" : 28.192, - "99.83106414392697" : 28.258, - "99.83204911060406" : 28.312, - "99.83302497254716" : 28.357, - "99.83401159463043" : 28.4, - "99.83497586873027" : 28.44, - "99.83594676445482" : 28.494, - "99.83692842031955" : 28.559, - "99.83790014374719" : 28.603, - "99.83887931650266" : 28.66, - "99.8398510399303" : 28.728, - "99.84082110795177" : 28.799, - "99.84180110841032" : 28.885, - "99.84277531494723" : 28.959, - "99.8437627647336" : 29.033, - "99.84473117734888" : 29.096, - "99.8457136609167" : 29.16, - "99.84669531678142" : 29.223, - "99.8476645570998" : 29.273, - "99.84864704066761" : 29.326, - "99.84961131476746" : 29.384, - "99.85059876455381" : 29.434, - "99.85157048798146" : 29.485, - "99.85254469451839" : 29.531, - "99.85351972875839" : 29.592, - "99.854518766388" : 29.671, - "99.85547559116003" : 29.724, - "99.85645145310313" : 29.79, - "99.85742565964004" : 29.873, - "99.8584056600986" : 29.958, - "99.85938152204169" : 30.048, - "99.86035821168788" : 30.128, - "99.86133407363097" : 30.196, - "99.86231159098026" : 30.277, - "99.86328662522027" : 30.34, - "99.86427076419426" : 30.398, - "99.865243315325" : 30.466, - "99.86623324822062" : 30.527, - "99.86720000542974" : 30.592, - "99.86818166129446" : 30.638, - "99.86914179687885" : 30.697, - "99.87012428044666" : 30.776, - "99.87109848698358" : 30.855, - "99.87207931514521" : 30.924, - "99.87305434938523" : 30.996, - "99.87402772821906" : 31.076, - "99.87500524556833" : 31.176, - "99.87598524602689" : 31.26, - "99.87695365864217" : 31.341, - "99.87793200369454" : 31.42, - "99.87890703793454" : 31.494, - "99.87988455528382" : 31.556, - "99.880870349664" : 31.636, - "99.8818462116071" : 31.709, - "99.88282290125328" : 31.772, - "99.88378965846239" : 31.847, - "99.88476965892094" : 31.936, - "99.8857488316764" : 32.015, - "99.88671889969787" : 32.1, - "99.88770138326568" : 32.189, - "99.88867476209951" : 32.288, - "99.88965641796423" : 32.394, - "99.89062814139189" : 32.482, - "99.89160483103807" : 32.567, - "99.89258400379353" : 32.646, - "99.89355903803353" : 32.736, - "99.89453903849208" : 32.813, - "99.89550993421665" : 32.881, - "99.89649407319064" : 32.942, - "99.89746165810284" : 33.038, - "99.89845159099846" : 33.141, - "99.89941420969213" : 33.256, - "99.90040165947848" : 33.357, - "99.90137255520304" : 33.484, - "99.90235007255231" : 33.568, - "99.90283427885996" : 33.618, - "99.90332262368305" : 33.667, - "99.90381262391233" : 33.709, - "99.90430510725086" : 33.748, - "99.90478848585542" : 33.807, - "99.90528262460015" : 33.856, - "99.90576765861088" : 33.897, - "99.90626014194943" : 33.952, - "99.9067418651478" : 33.984, - "99.90723931470488" : 34.021, - "99.90771607168472" : 34.055, - "99.908206071914" : 34.104, - "99.90869524444017" : 34.185, - "99.9091885554818" : 34.247, - "99.90967110638327" : 34.3, - "99.910165245128" : 34.36, - "99.9106453129202" : 34.416, - "99.91113696855564" : 34.466, - "99.91162448567565" : 34.524, - "99.91211034738947" : 34.57, - "99.91260614154038" : 34.609, - "99.91308869244183" : 34.658, - "99.91357455415566" : 34.7, - "99.91406372668185" : 34.775, - "99.91455952083275" : 34.819, - "99.91504538254657" : 34.881, - "99.91552958885421" : 34.943, - "99.91603117692675" : 35.004, - "99.91650876160968" : 35.064, - "99.91699876183895" : 35.121, - "99.91748793436513" : 35.182, - "99.91797296837586" : 35.236, - "99.9184580023866" : 35.297, - "99.91895048572515" : 35.34, - "99.91943800284514" : 35.395, - "99.91992551996515" : 35.447, - "99.92041303708515" : 35.521, - "99.92090220961134" : 35.565, - "99.92139055443444" : 35.634, - "99.92187807155443" : 35.7, - "99.92237221029916" : 35.771, - "99.92285310579445" : 35.828, - "99.92334310602372" : 35.91, - "99.92383807247153" : 35.968, - "99.92432145107608" : 36.011, - "99.92481558982081" : 36.067, - "99.92529731301919" : 36.123, - "99.92578648554536" : 36.172, - "99.92627234725919" : 36.267, - "99.92676317519155" : 36.321, - "99.92724986460847" : 36.374, - "99.92774317565011" : 36.423, - "99.92822407114538" : 36.469, - "99.92871407137466" : 36.533, - "99.92920241619775" : 36.605, - "99.92968827791158" : 36.688, - "99.93018076125011" : 36.777, - "99.93066413985467" : 36.861, - "99.93115496778704" : 36.967, - "99.93164248490704" : 37.084, - "99.9321341405425" : 37.164, - "99.93262000225631" : 37.205, - "99.93310669167323" : 37.261, - "99.93359420879324" : 37.342, - "99.9340858644287" : 37.441, - "99.93457172614251" : 37.51, - "99.93506503718415" : 37.57, - "99.93555420971033" : 37.636, - "99.93603841601798" : 37.709, - "99.93652510543488" : 37.79, - "99.93701427796107" : 37.87, - "99.93750427819035" : 37.971, - "99.93798848449799" : 38.111, - "99.93847931243036" : 38.23, - "99.93896600184726" : 38.309, - "99.93945682977963" : 38.405, - "99.93994600230582" : 38.499, - "99.94043434712891" : 38.582, - "99.940922691952" : 38.641, - "99.94140772596273" : 38.725, - "99.94189607078583" : 38.802, - "99.94238524331202" : 38.903, - "99.94287276043202" : 39.013, - "99.94336276066129" : 39.132, - "99.94385276089056" : 39.271, - "99.94433613949512" : 39.382, - "99.94482779513058" : 39.48, - "99.94531365684439" : 39.57, - "99.94580282937058" : 39.662, - "99.9462895187875" : 39.765, - "99.94677786361059" : 39.839, - "99.94726703613678" : 39.946, - "99.94775538095986" : 40.055, - "99.94824538118914" : 40.127, - "99.94873207060606" : 40.24, - "99.9492245539446" : 40.391, - "99.94970710484606" : 40.51, - "99.95019876048151" : 40.595, - "99.95068627760152" : 40.689, - "99.95117213931535" : 40.796, - "99.95141631172689" : 40.836, - "99.95166379495079" : 40.88, - "99.95190548425307" : 40.939, - "99.95214882896153" : 40.989, - "99.95239465677926" : 41.066, - "99.95264214000316" : 41.135, - "99.95288300160234" : 41.196, - "99.95312551860772" : 41.244, - "99.9533746572378" : 41.291, - "99.95361469113391" : 41.341, - "99.95386051895163" : 41.38, - "99.95410303595699" : 41.422, - "99.95434638066546" : 41.458, - "99.95459138078009" : 41.515, - "99.95484051941017" : 41.646, - "99.9550863472279" : 41.706, - "99.955326381124" : 41.744, - "99.95556807042628" : 41.81, - "99.95581058743164" : 41.882, - "99.95605724295245" : 41.93, - "99.9563022430671" : 41.964, - "99.95654393236937" : 42.02, - "99.95679307099947" : 42.063, - "99.95703310489556" : 42.115, - "99.95728058811946" : 42.151, - "99.95752227742175" : 42.183, - "99.9577656221302" : 42.273, - "99.95800896683866" : 42.375, - "99.9582539669533" : 42.442, - "99.95849731166174" : 42.525, - "99.95874396718257" : 42.563, - "99.95898482878175" : 42.603, - "99.95923313970874" : 42.693, - "99.9594773121203" : 42.81, - "99.95972148453184" : 42.875, - "99.95996234613104" : 42.961, - "99.96020900165185" : 43.031, - "99.96045151865721" : 43.083, - "99.96069569106876" : 43.137, - "99.96093903577722" : 43.194, - "99.96118486359495" : 43.227, - "99.96142903600649" : 43.267, - "99.96167155301185" : 43.37, - "99.96191489772032" : 43.447, - "99.96216072553804" : 43.504, - "99.9624032425434" : 43.586, - "99.96264741495496" : 43.631, - "99.96289820899122" : 43.672, - "99.96313493207496" : 43.71, - "99.96338241529887" : 43.768, - "99.96362410460114" : 43.904, - "99.96387158782505" : 43.998, - "99.96412238186132" : 44.066, - "99.96435827724197" : 44.106, - "99.96460410505969" : 44.159, - "99.96484744976814" : 44.19, - "99.96509327758588" : 44.228, - "99.96533248377888" : 44.286, - "99.96557748389351" : 44.314, - "99.96582248400816" : 44.356, - "99.96606582871661" : 44.423, - "99.96630917342507" : 44.471, - "99.96655748435207" : 44.548, - "99.96679751824816" : 44.642, - "99.96704169065971" : 44.739, - "99.96728751847743" : 44.778, - "99.96753417399826" : 44.825, - "99.9677783464098" : 44.88, - "99.9680258296337" : 44.978, - "99.96826172501436" : 45.087, - "99.96850672512899" : 45.183, - "99.96875172524364" : 45.247, - "99.96899755306136" : 45.291, - "99.96924007006672" : 45.328, - "99.96948341477518" : 45.361, - "99.9697292425929" : 45.4, - "99.96997341500445" : 45.437, - "99.97022089822836" : 45.485, - "99.97046175982754" : 45.53, - "99.97070344912983" : 45.622, - "99.97094762154137" : 45.691, - "99.971192621656" : 45.775, - "99.97143679406756" : 45.896, - "99.9716809664791" : 46.005, - "99.97192431118756" : 46.142, - "99.97217013900529" : 46.261, - "99.97241596682301" : 46.324, - "99.97265765612529" : 46.394, - "99.97290596705228" : 46.443, - "99.97314931176074" : 46.516, - "99.97339348417229" : 46.569, - "99.97363600117765" : 46.63, - "99.97387934588612" : 46.722, - "99.97412517370384" : 46.777, - "99.97436603530302" : 46.879, - "99.97461103541767" : 46.972, - "99.97485438012612" : 47.085, - "99.97509855253767" : 47.155, - "99.97534686346467" : 47.26, - "99.97558606965767" : 47.387, - "99.97571022512118" : 47.43, - "99.97583520828776" : 47.461, - "99.9759560529389" : 47.484, - "99.9760802084024" : 47.505, - "99.97620105305353" : 47.519, - "99.97631941459541" : 47.552, - "99.97644191465272" : 47.603, - "99.97656441471004" : 47.646, - "99.97668774247045" : 47.663, - "99.97681603644939" : 47.682, - "99.97693439799126" : 47.697, - "99.97705193183005" : 47.762, - "99.97717608729354" : 47.827, - "99.9772952765385" : 47.874, - "99.97741777659581" : 47.976, - "99.97754358746549" : 48.014, - "99.97766525981973" : 48.044, - "99.9777836213616" : 48.107, - "99.97790777682509" : 48.155, - "99.97802779377314" : 48.224, - "99.97815029383045" : 48.265, - "99.97827196618469" : 48.334, - "99.97839363853892" : 48.413, - "99.97851613859623" : 48.495, - "99.97863863865355" : 48.528, - "99.97876031100778" : 48.564, - "99.97888446647129" : 48.592, - "99.97900944963787" : 48.612, - "99.97912781117974" : 48.628, - "99.97924948353396" : 48.643, - "99.97937363899746" : 48.66, - "99.97949365594552" : 48.7, - "99.97961615600283" : 48.734, - "99.97974196687251" : 48.775, - "99.97985950071129" : 48.789, - "99.9799820007686" : 48.824, - "99.98010284541974" : 48.881, - "99.98022700088325" : 48.954, - "99.98034784553438" : 48.986, - "99.98046951788861" : 49.026, - "99.98059201794592" : 49.12, - "99.98071534570633" : 49.168, - "99.98083784576366" : 49.222, - "99.9809586904148" : 49.321, - "99.98107953506593" : 49.377, - "99.98120782904488" : 49.401, - "99.98132536288365" : 49.428, - "99.98144537983171" : 49.459, - "99.98156870759212" : 49.489, - "99.98168955224325" : 49.558, - "99.98181205230057" : 49.604, - "99.9819337246548" : 49.661, - "99.98205622471212" : 49.704, - "99.98218038017562" : 49.738, - "99.98230039712367" : 49.772, - "99.98242289718098" : 49.836, - "99.98254622494139" : 49.891, - "99.98266624188945" : 49.924, - "99.98278874194676" : 49.958, - "99.98291206970717" : 50.001, - "99.98303622517066" : 50.038, - "99.98315789752489" : 50.064, - "99.98327956987913" : 50.097, - "99.98340041453027" : 50.193, - "99.98352208688449" : 50.262, - "99.98364293153563" : 50.384, - "99.98376708699912" : 50.476, - "99.98388875935335" : 50.514, - "99.98401043170759" : 50.544, - "99.984133759468" : 50.577, - "99.98425543182222" : 50.631, - "99.98437544877027" : 50.68, - "99.98449877653067" : 50.766, - "99.98462210429109" : 50.822, - "99.9847446043484" : 50.865, - "99.98486544899954" : 50.92, - "99.98498794905686" : 50.999, - "99.9851079660049" : 51.038, - "99.98523129376532" : 51.095, - "99.98535379382264" : 51.127, - "99.98547381077069" : 51.189, - "99.98560376015581" : 51.214, - "99.98571881088532" : 51.242, - "99.98584131094265" : 51.271, - "99.98596215559378" : 51.354, - "99.9860846556511" : 51.392, - "99.98620715570841" : 51.455, - "99.986332138875" : 51.544, - "99.98645050041688" : 51.609, - "99.98657548358347" : 51.65, - "99.98669467282842" : 51.749, - "99.98681717288574" : 51.788, - "99.98693884523996" : 51.88, - "99.98706134529729" : 52.011, - "99.98718384535461" : 52.087, - "99.98730551770883" : 52.14, - "99.98742719006306" : 52.214, - "99.98755051782346" : 52.298, - "99.98767219017769" : 52.331, - "99.98779469023502" : 52.391, - "99.98785428485749" : 52.433, - "99.98791553488616" : 52.481, - "99.98797844032099" : 52.518, - "99.98803803494347" : 52.538, - "99.98809928497214" : 52.596, - "99.98816053500079" : 52.627, - "99.98822178502945" : 52.65, - "99.98828137965192" : 52.714, - "99.98834594049295" : 52.737, - "99.98840470741234" : 52.759, - "99.9884651297379" : 52.788, - "99.98852555206348" : 52.829, - "99.98858680209213" : 52.923, - "99.98864970752697" : 52.939, - "99.98871012985255" : 52.968, - "99.9887713798812" : 52.999, - "99.98883594072223" : 53.048, - "99.98889222453234" : 53.142, - "99.988953474561" : 53.169, - "99.98901389688658" : 53.206, - "99.98907597461832" : 53.356, - "99.98913639694389" : 53.4, - "99.98919930237872" : 53.438, - "99.98925806929812" : 53.462, - "99.98931931932678" : 53.502, - "99.98938222476161" : 53.548, - "99.98944347479028" : 53.576, - "99.98950389711584" : 53.605, - "99.98956431944141" : 53.63, - "99.98962474176699" : 53.66, - "99.98968516409255" : 53.689, - "99.9897472418243" : 53.759, - "99.98980766414986" : 53.905, - "99.98986891417853" : 53.958, - "99.9899301642072" : 54.09, - "99.98999058653276" : 54.118, - "99.99005266426451" : 54.217, - "99.99011308659007" : 54.255, - "99.99017516432183" : 54.29, - "99.99023475894431" : 54.312, - "99.99029600897296" : 54.545, - "99.99035808670472" : 54.593, - "99.99042016443646" : 54.659, - "99.99047893135585" : 54.706, - "99.99054100908761" : 54.741, - "99.99060060371008" : 54.762, - "99.99066350914492" : 54.784, - "99.9907231037674" : 54.851, - "99.99078435379606" : 54.924, - "99.99084560382472" : 54.981, - "99.99090768155646" : 55.112, - "99.99096810388204" : 55.131, - "99.99103597553541" : 55.152, - "99.99108894853318" : 55.29, - "99.991151853968" : 55.344, - "99.99121144859049" : 55.37, - "99.99127269861916" : 55.415, - "99.99133312094472" : 55.451, - "99.99139602637956" : 55.469, - "99.99145562100203" : 55.58, - "99.99151769873379" : 55.673, - "99.99157812105936" : 55.692, - "99.9916410264942" : 55.714, - "99.99170062111668" : 55.742, - "99.99176104344224" : 55.787, - "99.991823121174" : 55.85, - "99.99188437120266" : 55.873, - "99.99194396582513" : 55.903, - "99.99200769896306" : 56.006, - "99.99206563817935" : 56.21, - "99.99212771591111" : 56.251, - "99.99218979364286" : 56.29, - "99.99224856056225" : 56.39, - "99.99231394910636" : 56.437, - "99.99237188832265" : 56.586, - "99.99243231064823" : 56.691, - "99.9924927329738" : 56.759, - "99.99255398300245" : 56.789, - "99.99261854384348" : 56.808, - "99.99267648305977" : 56.843, - "99.99273690538534" : 56.948, - "99.99280063852328" : 56.972, - "99.99286188855193" : 56.989, - "99.99292148317441" : 57.005, - "99.99298107779688" : 57.029, - "99.99304315552864" : 57.046, - "99.99310771636966" : 57.063, - "99.99316648328904" : 57.08, - "99.99322773331771" : 57.1, - "99.99328732794018" : 57.117, - "99.99334940567194" : 57.137, - "99.99340900029442" : 57.321, - "99.99347025032307" : 57.358, - "99.99353150035174" : 57.381, - "99.9935919226773" : 57.462, - "99.99365565581523" : 57.516, - "99.99371525043772" : 57.521, - "99.99377484506019" : 57.573, - "99.99383692279194" : 57.612, - "99.99389651741441" : 57.692, - "99.99392714242875" : 57.797, - "99.99395942284926" : 57.824, - "99.9939892201605" : 57.842, - "99.99402067287792" : 57.858, - "99.99404964248606" : 57.872, - "99.99408109520348" : 57.892, - "99.9941125479209" : 57.961, - "99.99414234523215" : 58.011, - "99.99417297024648" : 58.023, - "99.99420525066698" : 58.034, - "99.99423422027513" : 58.044, - "99.99426484528946" : 58.061, - "99.9942946426007" : 58.079, - "99.9943269230212" : 58.097, - "99.99435506492627" : 58.109, - "99.99438734534678" : 58.116, - "99.99441962576729" : 58.12, - "99.99444776767236" : 58.127, - "99.99447756498358" : 58.148, - "99.994509017701" : 58.16, - "99.99453964271534" : 58.169, - "99.99456944002658" : 58.183, - "99.99460006504091" : 58.196, - "99.99462986235214" : 58.21, - "99.99466131506956" : 58.216, - "99.9946919400839" : 58.221, - "99.99472256509823" : 58.228, - "99.99475153470638" : 58.236, - "99.99478547053306" : 58.244, - "99.99481444014121" : 58.255, - "99.99484258204627" : 58.376, - "99.9948740347637" : 58.396, - "99.99490465977803" : 58.434, - "99.99493611249544" : 58.453, - "99.99496508210359" : 58.486, - "99.99499570711792" : 58.574, - "99.99502633213226" : 58.606, - "99.99505695714659" : 58.629, - "99.9950875821609" : 58.647, - "99.99511737947215" : 58.672, - "99.99514883218957" : 58.681, - "99.9951794572039" : 58.692, - "99.99521173762442" : 58.701, - "99.99523987952946" : 58.714, - "99.9952705045438" : 58.732, - "99.99530030185504" : 58.788, - "99.99533092686937" : 58.805, - "99.9953623795868" : 58.815, - "99.99539548771038" : 58.828, - "99.99542280191235" : 58.839, - "99.99545425462978" : 58.907, - "99.9954857073472" : 58.939, - "99.99551467695535" : 58.957, - "99.99554447426658" : 58.991, - "99.99557758239018" : 59.004, - "99.99560572429525" : 59.014, - "99.99563717701267" : 59.033, - "99.99566697432391" : 59.051, - "99.99569842704132" : 59.068, - "99.99572822435256" : 59.08, - "99.99575967706998" : 59.091, - "99.99578864667814" : 59.116, - "99.99582092709865" : 59.126, - "99.99585072440988" : 59.133, - "99.9958821771273" : 59.144, - "99.99591362984472" : 59.152, - "99.99594177174978" : 59.162, - "99.9959732244672" : 59.184, - "99.99600467718462" : 59.194, - "99.99603612990204" : 59.202, - "99.99606344410401" : 59.209, - "99.99609655222761" : 59.221, - "99.99612552183576" : 59.234, - "99.996155319147" : 59.25, - "99.99618594416133" : 59.3, - "99.99621739687875" : 59.34, - "99.99624719418999" : 59.476, - "99.99627699150123" : 59.494, - "99.99631092732791" : 59.503, - "99.99634155234224" : 59.509, - "99.99637383276276" : 59.514, - "99.99639949155855" : 59.52, - "99.99643177197906" : 59.528, - "99.99646156929029" : 59.537, - "99.99649053889844" : 59.55, - "99.99652116391277" : 59.57, - "99.99655344433329" : 59.601, - "99.99658241394144" : 59.631, - "99.99661303895576" : 59.726, - "99.99664366397009" : 59.749, - "99.99667428898442" : 59.772, - "99.99670574170185" : 59.795, - "99.99673471131" : 59.808, - "99.99676533632432" : 59.957, - "99.99679596133865" : 59.999, - "99.99682658635298" : 60.059, - "99.99685721136731" : 60.143, - "99.99688783638165" : 60.192, - "99.99691928909905" : 60.22, - "99.9969490864103" : 60.232, - "99.99696481276901" : 60.237, - "99.99698053912772" : 60.243, - "99.99699461008025" : 60.249, - "99.99701199184514" : 60.254, - "99.99702523509458" : 60.258, - "99.99704261685947" : 60.264, - "99.9970558601089" : 60.272, - "99.9970724141707" : 60.28, - "99.99708565742014" : 60.285, - "99.99710221148194" : 60.289, - "99.99712373176229" : 60.291, - "99.99714194123027" : 60.292, - "99.99715021826117" : 60.293, - "99.99716346151061" : 60.297, - "99.99717753246314" : 60.304, - "99.99719243111876" : 60.317, - "99.99720898518055" : 60.33, - "99.99722305613308" : 60.338, - "99.99723878249179" : 60.349, - "99.9972545088505" : 60.361, - "99.99727023520921" : 60.374, - "99.99728430616175" : 60.395, - "99.99729920481737" : 60.405, - "99.99731493117608" : 60.578, - "99.99733065753479" : 60.603, - "99.9973463838935" : 60.611, - "99.99736045484602" : 60.619, - "99.99737618120473" : 60.632, - "99.99739107986035" : 60.648, - "99.99740680621906" : 60.858, - "99.99742170487468" : 60.878, - "99.9974366035303" : 60.896, - "99.99745232988901" : 61.03, - "99.99746722854464" : 61.049, - "99.99748295490335" : 61.063, - "99.99749950896515" : 61.074, - "99.99751357991767" : 61.082, - "99.99752847857329" : 61.104, - "99.997544204932" : 61.246, - "99.99755910358762" : 61.264, - "99.99757400224324" : 61.276, - "99.99759055630504" : 61.289, - "99.99760628266375" : 61.302, - "99.99762035361628" : 61.311, - "99.99763690767809" : 61.318, - "99.99765015092753" : 61.323, - "99.99766587728622" : 61.329, - "99.99768077594184" : 61.334, - "99.99769650230056" : 61.339, - "99.99771222865927" : 61.344, - "99.99772795501798" : 61.347, - "99.99774202597051" : 61.361, - "99.99775775232922" : 61.902, - "99.99777265098484" : 61.915, - "99.99778754964046" : 61.939, - "99.99780327599917" : 61.982, - "99.99781817465478" : 62.0, - "99.9978339010135" : 62.02, - "99.99784879966911" : 62.197, - "99.99786452602783" : 62.218, - "99.99787942468345" : 62.238, - "99.99789432333907" : 62.383, - "99.99791501591632" : 62.396, - "99.99792577605649" : 62.397, - "99.99794398552447" : 62.398, - "99.99795640107082" : 62.401, - "99.99797129972643" : 62.425, - "99.99798619838205" : 62.439, - "99.99800854636548" : 62.443, - "99.99802758353655" : 62.444, - "99.99803751597364" : 62.445, - "99.99804744841072" : 62.456, - "99.99806234706634" : 62.478, - "99.99807807342505" : 63.009, - "99.99809297208067" : 63.03, - "99.99810869843937" : 63.053, - "99.99812359709499" : 63.31, - "99.99813849575061" : 63.32, - "99.99815422210932" : 63.34, - "99.99816912076494" : 63.368, - "99.99818484712365" : 63.457, - "99.99820140118545" : 63.463, - "99.99822126605962" : 63.499, - "99.99823202619979" : 63.501, - "99.99824692485541" : 63.507, - "99.99826513432338" : 63.509, - "99.99827589446355" : 63.555, - "99.99829162082226" : 64.136, - "99.99830651947788" : 64.16, - "99.99832224583659" : 64.185, - "99.99833714449221" : 64.462, - "99.99835287085092" : 64.488, - "99.99836776950654" : 64.515, - "99.99838266816217" : 64.541, - "99.99840584384869" : 64.545, - "99.99841329317648" : 64.548, - "99.9984530229248" : 64.56, - "99.99846295536189" : 64.561, - "99.99847454320515" : 65.252, - "99.99848199253296" : 65.264, - "99.99848944186077" : 65.275, - "99.99849771889167" : 65.288, - "99.99850516821948" : 65.301, - "99.99851261754729" : 65.311, - "99.9985200668751" : 65.569, - "99.99854820878016" : 65.571, - "99.99856476284195" : 65.572, - "99.99856724595122" : 65.573, - "99.99857800609139" : 65.6, - "99.99859042163774" : 65.601, - "99.998611114215" : 65.602, - "99.99861276962118" : 65.603, - "99.9986193912459" : 65.949, - "99.9986268405737" : 65.963, - "99.9986351176046" : 66.378, - "99.99864256693242" : 66.389, - "99.99865001626023" : 66.407, - "99.99865746558804" : 66.418, - "99.99866491491585" : 66.429, - "99.99867319194675" : 66.438, - "99.99868064127456" : 66.45, - "99.99869057371164" : 66.617, - "99.99869719533636" : 66.621, - "99.99870381696108" : 66.628, - "99.99871623250742" : 66.649, - "99.99872119872596" : 66.65, - "99.99872699264759" : 66.652, - "99.99873361427231" : 66.657, - "99.99874189130321" : 67.036, - "99.99874934063102" : 67.049, - "99.99875678995883" : 67.062, - "99.99876423928664" : 67.068, - "99.99877251631754" : 67.075, - "99.99878244875462" : 67.077, - "99.99878741497317" : 67.078, - "99.99879734741025" : 67.08, - "99.99880396903497" : 67.082, - "99.99881059065969" : 67.085, - "99.9988180399875" : 67.096, - "99.99882548931531" : 67.11, - "99.99883293864312" : 67.511, - "99.99884038797093" : 67.522, - "99.99884866500183" : 67.534, - "99.99885611432964" : 67.549, - "99.99886356365745" : 67.562, - "99.99887101298525" : 67.58, - "99.99888260082851" : 68.14, - "99.99889336096868" : 68.141, - "99.99889418867177" : 68.142, - "99.99890329340576" : 68.144, - "99.99891074273357" : 68.145, - "99.99892150287374" : 68.147, - "99.9989248136861" : 68.148, - "99.99893640152936" : 68.15, - "99.9989413677479" : 68.151, - "99.99895130018498" : 68.154, - "99.99895543870043" : 68.155, - "99.99896288802825" : 68.158, - "99.99897033735606" : 68.643, - "99.99897778668387" : 68.655, - "99.99898606371477" : 68.667, - "99.99899351304258" : 68.678, - "99.99900096237039" : 68.687, - "99.9990084116982" : 68.695, - "99.99901586102601" : 68.707, - "99.9990241380569" : 69.206, - "99.99903407049398" : 69.21, - "99.99904400293106" : 69.212, - "99.99905227996196" : 69.213, - "99.99906221239904" : 69.214, - "99.99907131713303" : 69.216, - "99.99907711105466" : 69.217, - "99.99908621578865" : 69.219, - "99.99909449281955" : 69.222, - "99.99910111444427" : 69.223, - "99.99910773606899" : 69.226, - "99.9991151853968" : 70.149, - "99.99912263472461" : 70.284, - "99.99913091175551" : 70.288, - "99.99913836108333" : 70.292, - "99.99914663811423" : 70.294, - "99.99915325973895" : 70.296, - "99.99916815839455" : 70.298, - "99.99917643542545" : 70.299, - "99.99918388475326" : 70.3, - "99.99919216178417" : 70.303, - "99.99919961111198" : 70.305, - "99.99920706043979" : 70.309, - "99.9992145097676" : 70.315, - "99.99922195909541" : 71.219, - "99.99923023612631" : 71.23, - "99.99923851315721" : 71.24, - "99.99924099626648" : 71.243, - "99.99924513478193" : 71.249, - "99.99924927329738" : 71.257, - "99.99925258410974" : 71.263, - "99.99925755032828" : 71.268, - "99.99926168884373" : 71.272, - "99.999264171953" : 71.356, - "99.99926913817154" : 71.358, - "99.9992724489839" : 71.36, - "99.99928238142098" : 71.361, - "99.99929314156115" : 71.362, - "99.9993055571075" : 71.363, - "99.99931548954459" : 71.364, - "99.99932045576311" : 71.365, - "99.99932542198165" : 71.366, - "99.99933287130946" : 71.367, - "99.9993386652311" : 71.368, - "99.99934114834036" : 71.37, - "99.99934445915272" : 71.378, - "99.99934942537126" : 71.381, - "99.99935273618362" : 71.382, - "99.99935604699598" : 71.384, - "99.99935935780834" : 71.387, - "99.9993634963238" : 72.333, - "99.99936680713616" : 72.338, - "99.9993709456516" : 72.344, - "99.99937508416706" : 72.349, - "99.9993792226825" : 72.353, - "99.99938253349487" : 72.356, - "99.99938584430723" : 72.36, - "99.99938998282268" : 72.364, - "99.99939412133813" : 72.375, - "99.99939825985358" : 72.38, - "99.99940157066594" : 72.386, - "99.99940653688448" : 72.431, - "99.99941150310302" : 72.432, - "99.9994131585092" : 72.433, - "99.99941646932156" : 72.434, - "99.99942309094628" : 72.436, - "99.99942474635246" : 72.437, - "99.99942888486791" : 72.44, - "99.99943302338336" : 72.443, - "99.9994379896019" : 72.445, - "99.99944212811735" : 72.446, - "99.99944378352353" : 72.447, - "99.99944792203898" : 72.448, - "99.99945123285134" : 72.451, - "99.99945702677297" : 72.453, - "99.99945950988224" : 72.454, - "99.9994636483977" : 72.456, - "99.99946778691314" : 72.457, - "99.99947275313167" : 72.458, - "99.99947771935021" : 72.459, - "99.99948516867802" : 72.46, - "99.99948930719347" : 72.463, - "99.99949344570892" : 72.473, - "99.99949923963055" : 72.477, - "99.99950089503673" : 73.45, - "99.99950420584909" : 73.452, - "99.99950834436454" : 73.455, - "99.99951248288" : 73.459, - "99.99951662139544" : 73.464, - "99.9995199322078" : 73.469, - "99.99952324302016" : 73.473, - "99.99952738153561" : 73.479, - "99.99953152005106" : 73.485, - "99.99953483086342" : 73.489, - "99.99953896937888" : 73.496, - "99.99954228019124" : 73.501, - "99.99954641870669" : 73.509, - "99.99955055722214" : 74.569, - "99.9995538680345" : 74.574, - "99.99955883425304" : 74.58, - "99.9995613173623" : 74.584, - "99.99956545587776" : 74.591, - "99.99956959439321" : 74.597, - "99.99957290520557" : 74.602, - "99.99957704372102" : 74.608, - "99.99958118223647" : 74.613, - "99.99958532075192" : 74.619, - "99.99958863156428" : 74.625, - "99.99959277007973" : 74.633, - "99.99959608089209" : 75.603, - "99.99960021940754" : 75.618, - "99.99960435792299" : 75.661, - "99.99960766873535" : 75.667, - "99.99961097954771" : 75.673, - "99.99961594576625" : 75.679, - "99.9996200842817" : 75.682, - "99.99962091198479" : 75.683, - "99.99962256739096" : 75.684, - "99.99962505050023" : 75.688, - "99.99962670590641" : 75.691, - "99.99962918901568" : 75.694, - "99.99963001671877" : 75.695, - "99.99963249982804" : 75.698, - "99.99963415523422" : 75.699, - "99.9996358106404" : 75.7, - "99.99963994915585" : 75.703, - "99.99964160456203" : 75.704, - "99.9996440876713" : 75.706, - "99.99964657078057" : 75.707, - "99.99964822618675" : 75.708, - "99.99965070929602" : 75.709, - "99.9996523647022" : 75.71, - "99.99965319240529" : 75.711, - "99.99965567551456" : 75.713, - "99.99965733092074" : 75.715, - "99.99965898632692" : 75.718, - "99.9996606417331" : 75.72, - "99.99966312484237" : 75.724, - "99.99966478024855" : 75.727, - "99.99966643565473" : 75.729, - "99.999668918764" : 75.732, - "99.99967057417018" : 75.735, - "99.99967222957636" : 75.737, - "99.99967388498254" : 75.74, - "99.99967636809181" : 75.744, - "99.99967802349799" : 75.748, - "99.99967967890417" : 75.75, - "99.99968216201344" : 75.754, - "99.99968381741962" : 75.757, - "99.9996854728258" : 75.759, - "99.99968878363816" : 75.761, - "99.99968961134125" : 75.762, - "99.99969126674743" : 75.764, - "99.99969292215361" : 76.773, - "99.99969540526288" : 76.776, - "99.99969706066906" : 76.777, - "99.99969871607524" : 76.78, - "99.9997020268876" : 76.784, - "99.9997028545907" : 76.785, - "99.99970450999687" : 76.787, - "99.99970699310614" : 76.791, - "99.99970864851232" : 76.793, - "99.9997111316216" : 76.796, - "99.99971278702778" : 76.799, - "99.99971444243396" : 76.8, - "99.99971609784014" : 76.803, - "99.99971775324632" : 76.805, - "99.99972023635559" : 76.808, - "99.99972189176177" : 76.81, - "99.99972354716795" : 76.813, - "99.99972603027722" : 76.816, - "99.9997276856834" : 76.818, - "99.99973016879267" : 76.821, - "99.99973182419885" : 76.823, - "99.99973347960503" : 76.826, - "99.9997359627143" : 76.828, - "99.99973679041739" : 76.83, - "99.99973927352666" : 76.833, - "99.99974092893284" : 76.835, - "99.99974258433902" : 76.837, - "99.99974506744829" : 76.84, - "99.99974672285447" : 76.841, - "99.99974837826065" : 76.844, - "99.99975086136992" : 76.847, - "99.9997525167761" : 77.229, - "99.99975417218228" : 77.231, - "99.99975665529155" : 77.235, - "99.99975831069773" : 80.584, - "99.99975996610391" : 80.587, - "99.99976162151009" : 80.59, - "99.99976410461936" : 80.595, - "99.99976576002554" : 80.598, - "99.99976741543172" : 80.607, - "99.99976989854099" : 80.611, - "99.99977155394717" : 80.614, - "99.99977320935334" : 80.617, - "99.9997756924626" : 80.622, - "99.99977734786879" : 80.626, - "99.99977900327497" : 80.63, - "99.99978065868115" : 80.635, - "99.99978314179042" : 80.64, - "99.9997847971966" : 80.643, - "99.99978645260278" : 80.647, - "99.99978893571205" : 80.652, - "99.99979059111823" : 80.656, - "99.99979224652441" : 80.659, - "99.99979472963368" : 80.662, - "99.99979638503986" : 80.664, - "99.99979804044604" : 80.671, - "99.99980052355531" : 80.675, - "99.99980217896149" : 80.683, - "99.99980383436767" : 80.784, - "99.99980548977385" : 80.85, - "99.99980797288312" : 81.168, - "99.9998096282893" : 81.171, - "99.99981045599239" : 81.172, - "99.99981128369548" : 81.173, - "99.99981293910166" : 81.175, - "99.99981376680475" : 81.177, - "99.99981459450784" : 81.178, - "99.99981624991402" : 81.18, - "99.99981707761711" : 81.182, - "99.9998179053202" : 81.183, - "99.99981956072638" : 81.186, - "99.99982038842947" : 81.187, - "99.99982121613256" : 81.188, - "99.99982204383565" : 81.189, - "99.99982287153874" : 81.191, - "99.99982369924183" : 81.193, - "99.99982452694492" : 81.194, - "99.9998261823511" : 81.196, - "99.99982701005419" : 81.198, - "99.99982783775728" : 81.199, - "99.99982866546037" : 81.2, - "99.99982949316346" : 81.201, - "99.99983032086655" : 81.202, - "99.99983197627273" : 81.205, - "99.99983280397582" : 81.207, - "99.99983363167891" : 81.208, - "99.999834459382" : 81.209, - "99.99983528708509" : 81.21, - "99.99983611478818" : 81.212, - "99.99983694249127" : 81.213, - "99.99983859789745" : 81.216, - "99.99983942560054" : 81.217, - "99.99984025330363" : 81.218, - "99.99984108100672" : 81.219, - "99.99984190870981" : 81.22, - "99.9998427364129" : 81.221, - "99.99984439181908" : 81.224, - "99.99984521952217" : 81.225, - "99.99984604722526" : 81.226, - "99.99984687492835" : 81.228, - "99.99984770263144" : 81.229, - "99.99984853033453" : 81.231, - "99.99984935803762" : 81.232, - "99.9998510134438" : 81.235, - "99.99985184114689" : 81.236, - "99.99985266884998" : 81.237, - "99.99985432425616" : 81.238, - "99.99985515195925" : 81.242, - "99.99985680736543" : 82.302, - "99.99985763506852" : 82.303, - "99.99985846277161" : 82.305, - "99.9998592904747" : 82.306, - "99.99986094588088" : 82.308, - "99.99986177358397" : 82.31, - "99.99986342899015" : 82.313, - "99.99986425669324" : 82.314, - "99.99986508439633" : 82.315, - "99.99986591209942" : 82.317, - "99.99986673980251" : 82.318, - "99.9998675675056" : 82.319, - "99.99986922291178" : 82.321, - "99.99987087831796" : 82.323, - "99.99987170602105" : 82.325, - "99.99987253372414" : 82.327, - "99.99987336142723" : 82.328, - "99.99987418913032" : 82.329, - "99.9998758445365" : 82.332, - "99.9998766722396" : 82.333, - "99.99987749994268" : 82.334, - "99.99987832764577" : 82.335, - "99.99987915534886" : 82.337, - "99.99987998305195" : 82.338, - "99.99988081075504" : 82.339, - "99.99988246616122" : 82.341, - "99.99988329386431" : 82.342, - "99.9998849492705" : 82.344, - "99.99988577697358" : 82.345, - "99.99988743237977" : 82.346, - "99.99988826008286" : 82.347, - "99.99988991548904" : 82.348, - "99.99989157089522" : 82.349, - "99.9998923985983" : 82.35, - "99.99989405400449" : 82.351, - "99.99989488170758" : 82.352, - "99.99989653711376" : 82.353, - "99.99989736481685" : 82.354, - "99.99989819251994" : 82.355, - "99.99989902022303" : 82.356, - "99.9999006756292" : 82.359, - "99.9999015033323" : 82.362, - "99.99990233103539" : 82.366, - "99.99990315873848" : 82.371, - "99.99990398644157" : 82.373, - "99.99990564184775" : 82.374, - "99.99990646955084" : 82.376, - "99.99990729725393" : 82.377, - "99.99990812495702" : 82.378, - "99.9999097803632" : 82.38, - "99.99991060806629" : 82.382, - "99.99991143576938" : 82.383, - "99.99991226347247" : 82.385, - "99.99991309117556" : 82.387, - "99.99991391887865" : 82.388, - "99.99991474658174" : 82.389, - "99.99991557428483" : 82.39, - "99.99991640198792" : 82.392, - "99.99991722969101" : 82.394, - "99.9999180573941" : 82.395, - "99.99991888509719" : 82.396, - "99.99991971280028" : 82.398, - "99.99992054050337" : 82.4, - "99.99992136820646" : 82.401, - "99.99992219590955" : 82.402, - "99.99992302361264" : 82.403, - "99.99992385131573" : 82.405, - "99.9999246790188" : 82.406, - "99.9999255067219" : 82.407, - "99.99992633442498" : 82.408, - "99.99992716212807" : 82.409, - "99.99992798983116" : 82.411, - "99.99992881753425" : 82.412, - "99.99992964523734" : 82.414, - "99.99993047294043" : 82.415, - "99.99993130064352" : 82.416, - "99.99993212834661" : 82.417, - "99.9999329560497" : 82.419, - "99.99993461145588" : 82.421, - "99.99993543915897" : 82.423, - "99.99993626686206" : 82.424, - "99.99993709456515" : 82.425, - "99.99993792226824" : 82.427, - "99.99993957767443" : 82.428, - "99.9999412330806" : 82.429, - "99.99994371618988" : 82.43, - "99.99994454389297" : 82.431, - "99.99994619929915" : 82.432, - "99.99994702700224" : 82.433, - "99.99994785470533" : 82.434, - "99.9999495101115" : 82.436, - "99.9999503378146" : 82.437, - "99.99995116551769" : 82.438, - "99.99995199322078" : 82.442, - "99.99995282092387" : 83.501, - "99.99995447633005" : 83.503, - "99.99995530403314" : 83.505, - "99.99995613173623" : 83.506, - "99.99995695943932" : 83.507, - "99.9999577871424" : 83.509, - "99.9999586148455" : 83.51, - "99.99995944254859" : 83.511, - "99.99996027025168" : 83.513, - "99.99996109795477" : 83.514, - "99.99996192565786" : 83.516, - "99.99996275336095" : 83.517, - "99.99996358106404" : 83.518, - "99.99996440876713" : 83.519, - "99.99996523647022" : 83.52, - "99.99996606417331" : 83.522, - "99.9999668918764" : 83.523, - "99.99996771957949" : 83.524, - "99.99996854728258" : 83.525, - "99.99996937498567" : 83.527, - "99.99997020268876" : 83.529, - "99.99997103039185" : 83.53, - "99.99997185809494" : 83.531, - "99.99997268579803" : 83.532, - "99.99997351350112" : 83.534, - "99.99997434120421" : 83.535, - "99.9999751689073" : 83.536, - "99.99997599661039" : 83.537, - "99.99997682431348" : 83.538, - "99.99997765201657" : 83.54, - "99.99997847971966" : 83.541, - "99.99997930742275" : 83.542, - "99.99998013512584" : 83.543, - "99.99998096282893" : 83.545, - "99.99998179053202" : 83.546, - "99.99998261823511" : 83.547, - "99.9999834459382" : 83.549, - "99.99998427364129" : 83.55, - "99.99998510134438" : 83.551, - "99.99998592904747" : 83.553, - "99.99998675675056" : 83.554, - "99.99998758445365" : 83.555, - "99.99998841215674" : 83.557, - "99.99998923985983" : 83.558, - "99.99999006756292" : 83.559, - "99.9999917229691" : 83.561, - "99.99999337837528" : 83.563, - "99.99999420607837" : 83.565, - "99.99999503378146" : 83.566, - "99.99999586148455" : 83.567, - "99.99999668918764" : 83.568, - "99.99999751689073" : 83.57, - "99.99999834459382" : 83.571, - "99.99999917229691" : 83.572, - "100.0" : 83.576 - }, - "endToEndLatencyAvg" : [ 13.017340324965136, 12.743609461139974, 13.113829268510676, 13.051599080423244, 12.776108921433849, 13.038054703884974, 12.785927301386918, 13.127496139165762, 13.028873247827098, 12.807649473746462, 13.072329081916635, 13.023656478201932, 12.99747900119766, 13.006654427040363, 12.993890564570242, 13.0558412749434, 12.92562315673194, 13.143819580605085, 13.004931928261236, 12.832482404594518, 13.055154994510543, 13.065679550859164, 13.395758743053074, 13.249674496301026, 13.139064143790812, 13.304665054658598, 13.158634048460437, 13.280645124434384, 13.288124982002584, 13.178630780696611, 13.014527291704857, 13.367730214331182, 13.220718786897596, 13.499536316109724, 13.32872185451829, 13.245441162008243, 13.015730003150871, 13.026763560077955, 13.174711959766249, 13.387312473977147, 13.360579639905016, 13.431050920877812, 13.193225380367855, 13.428492234511493, 13.273517931105758, 13.110700071195028, 13.02281152944049, 13.128769436340534, 13.24485976393045, 13.203790800372282, 13.334425002617921, 13.225921802032236, 13.129676100155926, 13.119236607378058, 13.077265337214627, 13.174259322688586, 13.106347705803438, 13.435433952062718, 13.386618187814001, 13.194563643177144 ], - "endToEndLatency50pct" : [ 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 14.0, 13.0, 14.0, 14.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 14.0, 13.0, 14.0 ], - "endToEndLatency75pct" : [ 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 16.0, 16.0, 16.0, 15.0, 16.0, 15.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0 ], - "endToEndLatency95pct" : [ 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 20.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 20.0, 20.0, 20.0, 19.0, 20.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 20.0, 20.0, 19.0 ], - "endToEndLatency99pct" : [ 24.0, 21.0, 31.0, 28.0, 21.0, 26.0, 21.0, 29.0, 27.0, 21.0, 27.0, 25.0, 24.0, 23.0, 25.0, 25.0, 22.0, 29.0, 22.0, 21.0, 25.0, 22.0, 31.0, 30.0, 25.0, 30.0, 27.0, 27.0, 29.0, 26.0, 22.0, 30.0, 26.0, 41.0, 29.0, 26.0, 21.0, 22.0, 24.0, 31.0, 30.0, 31.0, 22.0, 28.0, 25.0, 21.0, 21.0, 22.0, 25.0, 27.0, 28.0, 24.0, 21.0, 22.0, 21.0, 23.0, 21.0, 30.0, 29.0, 23.0 ], - "endToEndLatency999pct" : [ 61.0, 29.0, 64.0, 49.0, 33.0, 60.0, 34.0, 60.0, 59.0, 28.0, 56.0, 44.0, 57.0, 61.0, 39.0, 50.0, 62.0, 62.0, 73.0, 33.0, 38.0, 50.0, 72.0, 54.0, 66.0, 62.0, 58.0, 67.0, 42.0, 49.0, 39.0, 58.0, 55.0, 64.0, 59.0, 41.0, 35.0, 34.0, 55.0, 49.0, 51.0, 57.0, 52.0, 54.0, 42.0, 33.0, 27.0, 36.0, 45.0, 44.0, 52.0, 53.0, 43.0, 36.0, 37.0, 33.0, 38.0, 47.0, 54.0, 35.0 ], - "endToEndLatency9999pct" : [ 79.0, 34.0, 82.0, 55.0, 44.0, 110.0, 39.0, 70.0, 74.0, 32.0, 67.0, 55.0, 66.0, 83.0, 53.0, 68.0, 86.0, 73.0, 97.0, 40.0, 43.0, 72.0, 87.0, 74.0, 78.0, 70.0, 68.0, 76.0, 49.0, 60.0, 47.0, 68.0, 71.0, 75.0, 77.0, 45.0, 44.0, 42.0, 72.0, 58.0, 58.0, 73.0, 64.0, 67.0, 51.0, 38.0, 43.0, 42.0, 59.0, 50.0, 65.0, 70.0, 59.0, 45.0, 47.0, 40.0, 48.0, 57.0, 68.0, 44.0 ], - "endToEndLatencyMax" : [ 85.0, 35.0, 87.0, 60.0, 46.0, 113.0, 42.0, 78.0, 77.0, 36.0, 72.0, 56.0, 73.0, 89.0, 56.0, 73.0, 93.0, 76.0, 100.0, 42.0, 50.0, 74.0, 93.0, 74.0, 85.0, 75.0, 74.0, 85.0, 53.0, 65.0, 50.0, 70.0, 76.0, 78.0, 78.0, 50.0, 47.0, 47.0, 75.0, 62.0, 65.0, 77.0, 69.0, 72.0, 57.0, 40.0, 45.0, 45.0, 63.0, 56.0, 70.0, 73.0, 65.0, 47.0, 49.0, 42.0, 51.0, 64.0, 73.0, 46.0 ], - "aggregatedEndToEndLatencyQuantiles" : { - "0.02046066891032937" : 1.0, - "0.6627770123064562" : 2.0, - "3.24174255899506" : 3.0, - "6.007780153005476" : 4.0, - "8.824940862591308" : 5.0, - "10.706005483201016" : 6.0, - "12.101212197167676" : 7.0, - "13.763989399852136" : 8.0, - "15.962870230481625" : 9.0, - "18.981027068962536" : 10.0, - "25.395751791020377" : 11.0, - "37.22376493243315" : 12.0, - "52.11240658927404" : 13.0, - "65.1413506592546" : 14.0, - "74.75907601675283" : 15.0, - "82.23326260128347" : 16.0, - "88.25978008840939" : 17.0, - "92.86386101306574" : 18.0, - "95.90014514832794" : 19.0, - "97.67656311949158" : 20.0, - "98.44674064044004" : 21.0, - "98.71571247680399" : 22.0, - "98.85296011762117" : 23.0, - "98.96465737501164" : 24.0, - "99.06209531999798" : 25.0, - "99.14857245841" : 26.0, - "99.22568713774015" : 27.0, - "99.29464784444052" : 28.0, - "99.35628479214907" : 29.0, - "99.41106895948994" : 30.0, - "99.46171530232809" : 31.0, - "99.50505195759203" : 32.0, - "99.54742347915519" : 33.0, - "99.5847284626545" : 34.0, - "99.62062382120321" : 35.0, - "99.65028305856697" : 36.0, - "99.67839112907374" : 37.0, - "99.70266432442126" : 38.0, - "99.7255444494271" : 39.0, - "99.74598111415449" : 40.0, - "99.76473500288385" : 41.0, - "99.78272489641098" : 42.0, - "99.79944174051118" : 43.0, - "99.81539127848737" : 44.0, - "99.83098240918015" : 45.0, - "99.84528972995021" : 46.0, - "99.85927920222876" : 47.0, - "99.8716339068752" : 48.0, - "99.88111969779362" : 49.0, - "99.88975209862157" : 50.0, - "99.89799298294825" : 51.0, - "99.90493267501282" : 52.0, - "99.9113417918611" : 53.0, - "99.91863658028728" : 54.0, - "99.92529732719134" : 55.0, - "99.93185626325047" : 56.0, - "99.93785399806677" : 57.0, - "99.94289239329542" : 58.0, - "99.94805329263019" : 59.0, - "99.95255283533808" : 60.0, - "99.9569729159231" : 61.0, - "99.96072005165502" : 62.0, - "99.96490009041051" : 63.0, - "99.96905115860038" : 64.0, - "99.97288603375964" : 65.0, - "99.97634429156567" : 66.0, - "99.97900130629935" : 67.0, - "99.9811053970947" : 68.0, - "99.983109332506" : 69.0, - "99.98540297357363" : 70.0, - "99.98740608125448" : 71.0, - "99.98912776058347" : 72.0, - "99.99062181403964" : 73.0, - "99.99205461544277" : 74.0, - "99.99284840894109" : 75.0, - "99.99378539980668" : 76.0, - "99.9944674496947" : 77.0, - "99.9950336173202" : 78.0, - "99.99551949509237" : 79.0, - "99.99592094435899" : 80.0, - "99.99627521299016" : 81.0, - "99.9967552966492" : 82.0, - "99.9970855610974" : 83.0, - "99.9975524010693" : 84.0, - "99.99798695955378" : 85.0, - "99.99867480355493" : 86.0, - "99.99892726134117" : 87.0, - "99.99893967729787" : 88.0, - "99.99896947559394" : 89.0, - "99.99898851339421" : 90.0, - "99.999077080552" : 91.0, - "99.99915985359667" : 92.0, - "99.99927408039831" : 93.0, - "99.99935354252118" : 94.0, - "99.99941562230468" : 95.0, - "99.9994586642879" : 96.0, - "99.9995935843507" : 97.0, - "99.99959937846383" : 98.0, - "99.99965152548197" : 99.0, - "99.99969787838698" : 100.0, - "99.99972105483948" : 101.0, - "99.99975250859646" : 102.0, - "99.9997549917878" : 103.0, - "99.99975913044003" : 104.0, - "99.99976409682272" : 106.0, - "99.99983031525844" : 107.0, - "99.99983279844977" : 109.0, - "99.99983528164113" : 110.0, - "99.99983942029336" : 111.0, - "99.9999271597207" : 112.0, - "100.0" : 113.0 - }, - "aggregatedEndToEndLatencyAvg" : 13.142203163673507, - "aggregatedEndToEndLatency50pct" : 13.0, - "aggregatedEndToEndLatency75pct" : 16.0, - "aggregatedEndToEndLatency95pct" : 19.0, - "aggregatedEndToEndLatency99pct" : 25.0, - "aggregatedEndToEndLatency999pct" : 52.0, - "aggregatedEndToEndLatency9999pct" : 73.0, - "aggregatedEndToEndLatencyMax" : 113.0 -} \ No newline at end of file diff --git a/blog/results/pulsar/throughput/default-sync-colocated.json b/blog/results/pulsar/throughput/default-sync-colocated.json deleted file mode 100644 index 44268b76..00000000 --- a/blog/results/pulsar/throughput/default-sync-colocated.json +++ /dev/null @@ -1,2739 +0,0 @@ -{ - "workload" : "100-partitions-1000K-rate-4-producer", - "driver" : "Pulsar", - "publishRate" : [ 318542.94642923475, 315228.8362353819, 311398.76469528687, 313750.73813030665, 313497.8281793931, 311752.475205172, 313843.90000618796, 313227.16859699896, 312525.4816428692, 313899.1174347656, 312102.0288653355, 313583.03859409195, 313274.16360685043, 311569.22092652245, 311480.72935913503, 315487.99660682265, 312944.4333282714, 311218.75862289645, 313208.01598225767, 313229.3721786198, 312242.623645481, 313202.1278589404, 314248.43150838814, 312858.9843225151, 310712.53312556766, 314632.0821799692, 313745.7932182224, 311771.2458009971, 312906.84051476035, 313933.0086184013, 312377.2091549734, 313056.73350308696, 312858.0552254437, 312101.6444015981, 311409.12745833147, 314058.78540163155, 313763.6653747603, 312766.3497096528, 313149.75766541174, 312096.6390338387, 312342.0025614479, 314149.07397260197, 311668.786836844, 313667.6319722119, 311184.0663281331, 314521.94933442195, 313693.618194175, 313276.2212279572, 313087.8864299857, 312711.2144700027, 311398.8426697606, 314230.1515938169, 312678.2271831732, 312885.9793500849, 312313.55603393435, 313277.85409756104, 312148.09426931624, 312928.3060095232, 312599.0885510916, 313072.77449239197 ], - "consumeRate" : [ 321260.67634600843, 313630.60588678, 313058.83938113274, 312233.1780914675, 313768.60230560624, 312622.6416851143, 312559.23564347596, 312047.30849732, 314301.8316027331, 312810.1318037432, 312566.5015629881, 313753.7287823926, 312415.588333871, 311861.9781927853, 313618.0662149689, 312414.79585637705, 312940.0800263048, 311415.2692642574, 313484.88617214817, 312576.87423708243, 313591.2169035944, 312518.1376926451, 314587.5832855118, 312720.85197043576, 312044.34017247346, 313235.39596332976, 313653.365353449, 312303.3538913923, 312503.1782648656, 313924.7923840712, 312778.53624748444, 312954.4530079378, 313092.2264884772, 312679.1194662315, 312521.6638374223, 311847.7192892147, 313938.3064626466, 311753.7154805009, 314019.82365807175, 311991.9544486775, 312140.71500735875, 315251.82796880265, 311256.7548383245, 314324.30953078246, 311903.47492935817, 313705.7848262022, 312996.29272730707, 313032.7721152507, 312301.27029840386, 312278.0485853331, 313935.2522047043, 312223.48052493134, 313489.8849753406, 312443.46457710216, 313606.55324627133, 311527.1968964179, 312906.45345343865, 311883.4653106402, 314586.67295763467, 312638.68825255515 ], - "backlog" : [ 54294, 70439, 53661, 68993, 66258, 57464, 70434, 82353, 64417, 75402, 70723, 68987, 77653, 74692, 53109, 84201, 84245, 82269, 79459, 86060, 72429, 79334, 75910, 77305, 63844, 77951, 78886, 73509, 77582, 77663, 73611, 74641, 72279, 66449, 55210, 77549, 75786, 86006, 77223, 78291, 80315, 69180, 73339, 66706, 59430, 67684, 74721, 77178, 85117, 89503, 63871, 84134, 75929, 80397, 67345, 85030, 77369, 87925, 67862, 72257 ], - "publishLatencyAvg" : [ 131.40370804976416, 134.09425771300553, 133.36439698853312, 134.5314034926517, 136.04756436366782, 137.07024846334335, 134.8823118414429, 137.23550791897566, 134.62491898797276, 132.89200806416932, 137.33689469237038, 134.5391228694671, 134.26130596308312, 135.91794025605094, 135.73248953745318, 137.77042876749098, 135.6303588839177, 134.86610506066347, 136.2251304910553, 133.3703657291102, 135.81540723678665, 134.39718674485056, 134.41665534449575, 134.64738016835224, 134.9122727587677, 134.478383330685, 133.9304275658052, 135.22067314927432, 134.84048174283183, 135.96590593144342, 135.5298235127274, 135.05146653409338, 135.4328337614616, 135.83240314906092, 133.81962232999504, 135.98540582375375, 137.56654028504397, 134.0610669956925, 132.95000912932167, 134.24520316614922, 132.91043010637642, 135.58222744819975, 134.8771929389842, 134.7878632775141, 134.49166504462752, 137.63222730214648, 134.50965502071642, 134.6894577814072, 136.17387576563425, 135.47490435497417, 135.6342091096031, 134.5760164306206, 134.3207067025308, 134.66451292975165, 135.40546152531104, 135.71050947269066, 133.7483275406408, 134.67390267595488, 135.39509156290097, 134.73082557412312 ], - "publishLatency50pct" : [ 126.825, 127.691, 128.601, 128.592, 127.997, 131.389, 129.813, 132.185, 129.953, 131.698, 130.763, 129.369, 129.578, 129.564, 130.14, 130.631, 129.2, 128.336, 128.912, 128.519, 129.612, 128.605, 127.861, 128.914, 130.251, 129.801, 128.836, 129.101, 129.406, 130.104, 129.819, 127.227, 132.04, 130.182, 128.818, 130.818, 130.959, 129.25, 129.119, 130.031, 128.843, 128.497, 129.445, 129.323, 127.772, 131.357, 128.98, 128.727, 129.001, 130.543, 130.769, 128.258, 128.563, 128.781, 130.856, 130.695, 127.735, 126.605, 129.494, 129.193 ], - "publishLatency75pct" : [ 147.288, 156.347, 158.748, 153.581, 161.958, 160.912, 158.972, 162.312, 158.286, 153.117, 159.426, 155.31, 151.83, 159.756, 159.675, 162.437, 158.785, 157.652, 159.715, 152.552, 161.682, 157.944, 154.994, 155.979, 158.006, 157.393, 152.178, 158.873, 156.052, 154.327, 157.778, 156.557, 159.08, 157.497, 151.823, 162.849, 158.51, 154.856, 154.631, 159.927, 152.709, 155.697, 158.359, 156.651, 161.671, 164.467, 155.468, 156.075, 158.623, 160.468, 156.686, 157.346, 154.221, 157.463, 155.085, 158.71, 150.729, 155.524, 159.031, 155.374 ], - "publishLatency95pct" : [ 187.612, 193.15, 196.432, 201.516, 197.015, 206.368, 199.029, 204.836, 196.974, 191.182, 202.142, 195.816, 200.737, 195.522, 202.802, 205.585, 203.805, 196.083, 204.857, 195.23, 197.43, 195.657, 195.21, 204.807, 193.763, 200.062, 193.721, 198.578, 202.297, 196.79, 200.468, 196.744, 196.205, 194.742, 196.101, 194.522, 197.61, 196.546, 194.508, 190.313, 194.012, 201.294, 199.78, 201.311, 200.061, 205.103, 193.947, 195.904, 198.812, 202.692, 199.958, 193.634, 201.251, 195.045, 199.551, 204.676, 195.846, 199.13, 196.916, 196.124 ], - "publishLatency99pct" : [ 203.06, 225.758, 222.721, 226.097, 218.229, 235.794, 219.617, 221.197, 212.715, 209.869, 221.697, 210.76, 218.992, 208.723, 224.719, 229.225, 216.291, 221.605, 228.905, 210.498, 220.764, 213.754, 210.704, 223.044, 212.881, 212.528, 211.279, 227.171, 216.844, 222.234, 226.829, 210.508, 216.834, 215.012, 214.092, 207.233, 213.364, 214.243, 211.853, 219.923, 226.349, 220.556, 215.34, 219.862, 221.057, 221.111, 209.699, 209.468, 216.674, 217.959, 215.952, 208.774, 211.809, 208.635, 217.216, 226.013, 225.247, 225.563, 223.998, 254.288 ], - "publishLatency999pct" : [ 221.648, 258.719, 244.341, 244.187, 242.139, 257.295, 238.894, 240.589, 238.601, 230.725, 246.937, 234.407, 241.961, 226.398, 242.044, 245.783, 236.321, 251.694, 244.296, 238.378, 239.891, 234.761, 232.039, 253.624, 229.811, 235.913, 243.953, 275.857, 238.704, 251.132, 239.609, 229.291, 237.6, 232.933, 231.366, 239.982, 234.52, 242.66, 230.215, 233.926, 242.719, 257.683, 236.472, 235.518, 238.659, 233.618, 232.981, 234.191, 248.285, 239.661, 243.008, 237.237, 238.098, 243.063, 242.271, 284.445, 325.147, 290.427, 283.611, 313.583 ], - "publishLatency9999pct" : [ 253.366, 265.971, 245.757, 283.701, 255.652, 258.932, 260.814, 256.166, 268.149, 254.24, 250.385, 236.854, 244.332, 246.239, 275.071, 282.675, 237.555, 253.696, 252.76, 240.685, 242.942, 284.299, 262.227, 275.745, 242.312, 243.971, 246.433, 282.939, 250.837, 255.98, 241.748, 244.005, 245.802, 251.197, 240.557, 246.866, 244.769, 251.137, 253.369, 251.873, 251.698, 268.817, 240.32, 242.068, 243.547, 257.02, 245.908, 244.806, 250.848, 258.971, 266.923, 247.081, 250.938, 266.003, 249.461, 297.123, 327.367, 324.731, 292.291, 360.713 ], - "publishLatencyMax" : [ 329.883, 304.931, 324.929, 331.393, 336.761, 369.977, 312.183, 343.097, 312.583, 292.675, 322.713, 374.879, 334.995, 324.299, 330.543, 334.259, 314.443, 317.817, 316.563, 313.661, 346.017, 329.457, 298.375, 333.995, 335.327, 320.447, 319.057, 333.581, 301.045, 336.471, 304.085, 344.005, 309.309, 317.549, 327.713, 305.743, 314.747, 315.419, 293.201, 356.409, 341.343, 326.323, 316.105, 329.353, 322.955, 311.991, 291.889, 312.365, 349.487, 313.029, 323.503, 326.455, 319.483, 303.581, 324.293, 351.909, 327.407, 325.889, 303.401, 360.835 ], - "aggregatedPublishLatencyAvg" : 135.0170670054526, - "aggregatedPublishLatency50pct" : 129.35, - "aggregatedPublishLatency75pct" : 157.116, - "aggregatedPublishLatency95pct" : 198.429, - "aggregatedPublishLatency99pct" : 218.942, - "aggregatedPublishLatency999pct" : 246.031, - "aggregatedPublishLatency9999pct" : 290.685, - "aggregatedPublishLatencyMax" : 374.879, - "aggregatedPublishLatencyQuantiles" : { - "5.272046342890056E-7" : 6.027, - "0.500008256024573" : 22.853, - "1.0000196752769517" : 32.627, - "1.5000221320505474" : 40.769, - "2.0000361873260974" : 48.151, - "2.5000792388565336" : 54.026, - "3.000040573668655" : 59.686, - "3.5001173662956853" : 64.138, - "4.000002256435835" : 68.503, - "4.500121225433609" : 72.063, - "5.000029839782301" : 74.926, - "5.5000043547102795" : 77.689, - "6.000189751491973" : 80.314, - "6.500237547864118" : 82.752, - "7.000102404228164" : 85.034, - "7.5000152362139305" : 87.17, - "8.000233319682952" : 89.151, - "8.500140879622375" : 90.958, - "9.000305715423332" : 92.624, - "9.500194295995922" : 94.117, - "10.00017882781195" : 95.533, - "10.500148070693587" : 96.888, - "11.000402531282372" : 98.169, - "11.50025895237227" : 99.377, - "12.000278279694163" : 100.513, - "12.500200601363346" : 101.618, - "13.000306390245264" : 102.629, - "13.500151740037841" : 103.63, - "14.000267018603175" : 104.595, - "14.500110259577216" : 105.476, - "15.000002530582245" : 106.306, - "15.500563297063552" : 107.101, - "16.000532539945187" : 107.84, - "16.500552394471715" : 108.522, - "17.000006031221016" : 109.188, - "17.500604756435994" : 109.824, - "18.000755357711824" : 110.423, - "18.50040775060825" : 110.989, - "19.000631106123613" : 111.544, - "19.500081052440475" : 112.076, - "20.000871680142332" : 112.573, - "20.500208804667455" : 113.074, - "21.000882392940504" : 113.552, - "21.500870615188973" : 113.998, - "22.000807698587916" : 114.422, - "22.501007329894737" : 114.827, - "23.001209070020092" : 115.223, - "23.50100380816778" : 115.602, - "24.000471152237573" : 115.973, - "24.50026641758989" : 116.321, - "25.000369570448637" : 116.672, - "25.50012582265802" : 117.018, - "26.000298039323855" : 117.347, - "26.501610072409026" : 117.665, - "27.00090554776804" : 117.968, - "27.50035918451734" : 118.272, - "28.000843506326678" : 118.57, - "28.50151920341826" : 118.869, - "29.001011326105864" : 119.151, - "29.501610051320842" : 119.429, - "30.001731656341786" : 119.709, - "30.50106140000203" : 119.98, - "31.0010327517022" : 120.245, - "31.501587718932534" : 120.504, - "32.001668201992004" : 120.757, - "32.50146663057213" : 121.012, - "33.00015951103415" : 121.264, - "33.50020150815532" : 121.511, - "34.00035738147749" : 121.749, - "34.50118754952692" : 121.986, - "35.00122638342028" : 122.225, - "35.50025034839264" : 122.462, - "36.00197940034353" : 122.697, - "36.50195655129468" : 122.928, - "37.00159312805208" : 123.157, - "37.50049794477709" : 123.384, - "38.0000870731174" : 123.607, - "38.501141830341034" : 123.834, - "39.000509532734945" : 124.063, - "39.50209834825312" : 124.291, - "40.00003785329274" : 124.516, - "40.501942991591484" : 124.745, - "41.001883238218234" : 124.971, - "41.501602058898584" : 125.195, - "42.00173737124002" : 125.42, - "42.50153790863868" : 125.648, - "43.001338446037344" : 125.877, - "43.50189973972329" : 126.104, - "44.0009537553598" : 126.336, - "44.501218232836635" : 126.568, - "45.00183277419064" : 126.801, - "45.500610534598785" : 127.032, - "46.001137032778864" : 127.269, - "46.50161871856503" : 127.508, - "47.00027364029338" : 127.757, - "47.50140905982607" : 128.008, - "48.00087376787268" : 128.256, - "48.50043706318592" : 128.514, - "49.00066041870128" : 128.786, - "49.5017056862415" : 129.063, - "50.00114192523787" : 129.35, - "50.25081338712592" : 129.496, - "50.50017063505194" : 129.639, - "50.75100352874932" : 129.782, - "51.00124806207484" : 129.929, - "51.25033485402347" : 130.078, - "51.50123048507234" : 130.229, - "51.750430626017334" : 130.378, - "52.00066725127334" : 130.529, - "52.250870135432756" : 130.683, - "52.5003723646332" : 130.842, - "52.75048509680015" : 131.001, - "53.00126790605728" : 131.159, - "53.25101159498023" : 131.318, - "53.501313066406254" : 131.478, - "53.75045205161367" : 131.642, - "54.00050310083841" : 131.811, - "54.25120472058186" : 131.984, - "54.500103827680675" : 132.156, - "54.75044114902183" : 132.33, - "55.000514340841214" : 132.505, - "55.25008563384875" : 132.687, - "55.50060484078873" : 132.876, - "55.750433936862436" : 133.063, - "56.001131866173445" : 133.247, - "56.25075693405368" : 133.433, - "56.50091131538674" : 133.632, - "56.75110840029517" : 133.829, - "57.0001783216955" : 134.02, - "57.2510713167212" : 134.222, - "57.50119617459474" : 134.428, - "57.75095409804281" : 134.638, - "58.00017690878708" : 134.843, - "58.250733547256104" : 135.062, - "58.50015405973823" : 135.28, - "58.750634780739915" : 135.502, - "59.00093994259838" : 135.728, - "59.250125849018254" : 135.959, - "59.50108527182787" : 136.189, - "59.75096919718354" : 136.424, - "60.000780895504306" : 136.652, - "60.25094529372542" : 136.878, - "60.50059988506517" : 137.12, - "60.750076281238535" : 137.367, - "61.000550148579975" : 137.611, - "61.25020157669192" : 137.867, - "61.500185670928104" : 138.126, - "61.750433367481435" : 138.375, - "62.000594602474735" : 138.621, - "62.250468510942355" : 138.875, - "62.50063132754956" : 139.138, - "62.750705573778205" : 139.399, - "63.000805653033936" : 139.664, - "63.25049556708419" : 139.935, - "63.500813381853874" : 140.201, - "63.75019909883014" : 140.477, - "64.00077208064282" : 140.756, - "64.25068500225338" : 141.039, - "64.50008126332233" : 141.327, - "64.75025778725004" : 141.623, - "65.00022606534718" : 141.911, - "65.25022808454094" : 142.21, - "65.50014153335613" : 142.515, - "65.75046778339996" : 142.819, - "66.00054413844714" : 143.127, - "66.25055195689187" : 143.447, - "66.50031778840946" : 143.77, - "66.75010523531705" : 144.096, - "67.00004135393151" : 144.434, - "67.25005391721795" : 144.764, - "67.50035591584862" : 145.11, - "67.75000523514201" : 145.465, - "68.00045274225174" : 145.828, - "68.25032348749156" : 146.19, - "68.50020161359625" : 146.546, - "68.75045036455884" : 146.915, - "69.0004386764321" : 147.282, - "69.25056827914734" : 147.636, - "69.50049859851083" : 148.014, - "69.75014159134864" : 148.393, - "70.00043515470514" : 148.774, - "70.250202040632" : 149.143, - "70.50029632063675" : 149.533, - "70.75051712975373" : 149.908, - "71.00014641527103" : 150.296, - "71.25001083405523" : 150.707, - "71.50012831106389" : 151.12, - "71.75003332460493" : 151.54, - "72.00049401183051" : 151.959, - "72.25025193527858" : 152.378, - "72.50054866186291" : 152.789, - "72.75058442215325" : 153.199, - "73.00037766831181" : 153.632, - "73.25054364814683" : 154.056, - "73.50016080795756" : 154.467, - "73.75000044812394" : 154.893, - "74.0002070227158" : 155.334, - "74.25029075862786" : 155.767, - "74.50019419055499" : 156.216, - "74.7500079976943" : 156.665, - "75.00027572802374" : 157.116, - "75.12504503118383" : 157.34, - "75.25051129887048" : 157.56, - "75.37540923996134" : 157.789, - "75.50012687706729" : 158.017, - "75.62513711274526" : 158.241, - "75.75020534093301" : 158.459, - "75.87527989557637" : 158.686, - "76.00046938083" : 158.927, - "76.12524079280864" : 159.169, - "76.25011606410024" : 159.41, - "76.3751537144192" : 159.652, - "76.50050399708628" : 159.888, - "76.62526697379079" : 160.123, - "76.750099541507" : 160.355, - "76.87539868532457" : 160.584, - "77.00048483846987" : 160.818, - "77.1250269164326" : 161.058, - "77.25020533038892" : 161.301, - "77.37551607270844" : 161.54, - "77.50027799500366" : 161.783, - "77.62503148202474" : 162.028, - "77.7505119842365" : 162.275, - "77.87503877326483" : 162.516, - "78.00039063754582" : 162.763, - "78.12535922405769" : 163.013, - "78.25037736780517" : 163.26, - "78.37501223378354" : 163.498, - "78.50031823126135" : 163.735, - "78.62509544249097" : 163.987, - "78.75024855062483" : 164.23, - "78.87548601150019" : 164.469, - "79.00000858289144" : 164.71, - "79.12538944342732" : 164.963, - "79.25048772227923" : 165.218, - "79.37534981345496" : 165.461, - "79.50048499663127" : 165.697, - "79.6253976994519" : 165.947, - "79.75013062549223" : 166.173, - "79.87521836025145" : 166.406, - "80.00009046831525" : 166.65, - "80.12530051454961" : 166.905, - "80.25019951004975" : 167.151, - "80.37500835355743" : 167.391, - "80.50037550677281" : 167.638, - "80.6254073578408" : 167.885, - "80.75030898936411" : 168.131, - "80.8752564876906" : 168.384, - "81.00025248884346" : 168.638, - "81.12503549932406" : 168.891, - "81.25018386261621" : 169.138, - "81.37509340220903" : 169.393, - "81.50033402631219" : 169.647, - "81.62513338013645" : 169.9, - "81.75017946572956" : 170.142, - "81.87540269207979" : 170.39, - "82.00047092026753" : 170.647, - "82.12505464739637" : 170.899, - "82.2501687423873" : 171.146, - "82.37524435143992" : 171.381, - "82.50032470533426" : 171.623, - "82.6250286351197" : 171.867, - "82.75017330797942" : 172.121, - "82.87521201270765" : 172.365, - "83.00031029155956" : 172.612, - "83.12529680302899" : 172.865, - "83.25003605552494" : 173.109, - "83.37502942065461" : 173.354, - "83.5002289227963" : 173.602, - "83.62526973634307" : 173.848, - "83.75038277692472" : 174.1, - "83.87539670303514" : 174.343, - "84.00049392747778" : 174.588, - "84.12531805991985" : 174.844, - "84.25035465582953" : 175.098, - "84.37508020100499" : 175.351, - "84.50000555673685" : 175.598, - "84.62549396701812" : 175.846, - "84.75044726459559" : 176.096, - "84.87503889979394" : 176.353, - "85.00012979778096" : 176.602, - "85.12544370332829" : 176.863, - "85.25014130665812" : 177.11, - "85.37528334349467" : 177.36, - "85.50041378182927" : 177.611, - "85.62540978298212" : 177.863, - "85.7500557202578" : 178.125, - "85.87520355634533" : 178.374, - "86.00036509975334" : 178.627, - "86.12547075947012" : 178.877, - "86.25013093127093" : 179.122, - "86.37505892302595" : 179.372, - "86.50030060153838" : 179.622, - "86.6250272011231" : 179.856, - "86.7503020935275" : 180.098, - "86.87533341739083" : 180.342, - "87.00014911455877" : 180.579, - "87.12514089807453" : 180.817, - "87.25017222193789" : 181.053, - "87.37546978414154" : 181.304, - "87.50027599162605" : 181.538, - "87.56276555692833" : 181.66, - "87.6254196100765" : 181.787, - "87.68795978702367" : 181.913, - "87.75012933911293" : 182.041, - "87.81276388568963" : 182.171, - "87.87519967611921" : 182.301, - "87.93771823767638" : 182.431, - "88.00007969225251" : 182.56, - "88.06275799681387" : 182.688, - "88.12530450021664" : 182.813, - "88.18765013865377" : 182.94, - "88.25014339438847" : 183.066, - "88.31280166517372" : 183.197, - "88.37501497524764" : 183.329, - "88.43769380701362" : 183.459, - "88.50026719785275" : 183.588, - "88.56251846666032" : 183.719, - "88.62518675433363" : 183.854, - "88.6878608412579" : 183.984, - "88.75006202562523" : 184.106, - "88.81251995864945" : 184.228, - "88.8752246234425" : 184.35, - "88.93769837260575" : 184.476, - "89.00045101302054" : 184.599, - "89.06296588414526" : 184.728, - "89.12520713606479" : 184.863, - "89.18767772200023" : 184.988, - "89.25027430984326" : 185.112, - "89.3127554398714" : 185.238, - "89.37501830718092" : 185.365, - "89.43756481058371" : 185.491, - "89.50017879617967" : 185.619, - "89.56294830714276" : 185.749, - "89.6250914990003" : 185.872, - "89.68770706621018" : 185.995, - "89.7503221062154" : 186.117, - "89.8125797014786" : 186.237, - "89.87515783715943" : 186.363, - "89.93775284338857" : 186.487, - "90.00006105029665" : 186.609, - "90.06267187266481" : 186.735, - "90.12532645301762" : 186.86, - "90.18779651174843" : 186.987, - "90.25029134909705" : 187.116, - "90.31267336465393" : 187.244, - "90.37533532587162" : 187.367, - "90.43800150472637" : 187.491, - "90.50020532511687" : 187.615, - "90.56280296736918" : 187.737, - "90.62507532436213" : 187.859, - "90.68752007727049" : 187.984, - "90.75011930113669" : 188.112, - "90.81289830178319" : 188.239, - "90.87537732299279" : 188.365, - "90.93752262366887" : 188.493, - "91.00019249295607" : 188.63, - "91.06267784062128" : 188.764, - "91.12511099502768" : 188.895, - "91.18788208760466" : 189.025, - "91.25020294742397" : 189.158, - "91.31288177918995" : 189.287, - "91.37535869158101" : 189.414, - "91.43766320805665" : 189.544, - "91.50044800795412" : 189.681, - "91.56298449446885" : 189.813, - "91.62501908217173" : 189.948, - "91.6876267413121" : 190.083, - "91.75005409646752" : 190.225, - "91.8129496093382" : 190.366, - "91.87508172989843" : 190.505, - "91.93772629336318" : 190.642, - "92.00023589244157" : 190.784, - "92.062684862987" : 190.923, - "92.12523558402685" : 191.061, - "92.18785273285063" : 191.207, - "92.25020680656189" : 191.364, - "92.31260200223463" : 191.521, - "92.37514692402351" : 191.672, - "92.43755635422137" : 191.823, - "92.50017666627295" : 191.975, - "92.56256500828545" : 192.123, - "92.62515316085432" : 192.277, - "92.68755626459658" : 192.426, - "92.75037006074895" : 192.577, - "92.81256386425139" : 192.728, - "92.87520948212541" : 192.882, - "92.93768006806086" : 193.035, - "93.00029036322438" : 193.189, - "93.06289169590913" : 193.347, - "93.12513452944255" : 193.502, - "93.187675760799" : 193.656, - "93.25013685705102" : 193.811, - "93.31281621602163" : 193.966, - "93.37526624097634" : 194.119, - "93.43787917216304" : 194.27, - "93.50005663232182" : 194.422, - "93.56265269296021" : 194.579, - "93.62509533705004" : 194.732, - "93.68782688927945" : 194.887, - "93.75030591048905" : 195.045, - "93.78130607018987" : 195.124, - "93.8126552393586" : 195.203, - "93.84405923780929" : 195.282, - "93.87511686281526" : 195.359, - "93.90659308830085" : 195.436, - "93.93788162893664" : 195.513, - "93.96909688812825" : 195.592, - "94.00006699716492" : 195.67, - "94.03163495625688" : 195.751, - "94.06253547428183" : 195.831, - "94.09384563030763" : 195.908, - "94.12523117659612" : 195.987, - "94.15661777729387" : 196.065, - "94.18767751111838" : 196.145, - "94.21877362206264" : 196.226, - "94.25023139538604" : 196.308, - "94.28128269393639" : 196.39, - "94.31252378615508" : 196.472, - "94.34393252944749" : 196.556, - "94.3750170418898" : 196.64, - "94.40655231429443" : 196.725, - "94.43764578921554" : 196.805, - "94.4687772228703" : 196.89, - "94.50033621948347" : 196.979, - "94.53152300962483" : 197.067, - "94.56272139826815" : 197.156, - "94.59396407210076" : 197.245, - "94.6250306595855" : 197.336, - "94.65642147792035" : 197.427, - "94.68761354010805" : 197.521, - "94.71887044846578" : 197.615, - "94.75015318985058" : 197.706, - "94.78136423140514" : 197.797, - "94.81260321480529" : 197.887, - "94.84409578363454" : 197.978, - "94.87513284765977" : 198.067, - "94.90649994178607" : 198.157, - "94.93753331537886" : 198.247, - "94.96889144702637" : 198.335, - "95.00019527659654" : 198.429, - "95.03131089411228" : 198.523, - "95.0627507424781" : 198.616, - "95.09396020241874" : 198.709, - "95.12503786120081" : 198.8, - "95.15647191031566" : 198.889, - "95.187529008117" : 198.981, - "95.21907535181894" : 199.078, - "95.2502621419603" : 199.168, - "95.28125755681943" : 199.257, - "95.31271374852892" : 199.348, - "95.34403392144276" : 199.443, - "95.3750620229892" : 199.54, - "95.40626093883715" : 199.644, - "95.43771660334201" : 199.749, - "95.46900303515926" : 199.854, - "95.50029579343212" : 199.953, - "95.53138505071614" : 200.054, - "95.56255391589994" : 200.152, - "95.59395211509965" : 200.253, - "95.62504453561148" : 200.358, - "95.65645011567608" : 200.462, - "95.68755202587133" : 200.561, - "95.71888010685468" : 200.661, - "95.75022558559097" : 200.761, - "95.78128268339229" : 200.859, - "95.81259125780419" : 200.965, - "95.84400685475683" : 201.076, - "95.87524478374772" : 201.184, - "95.90632507855297" : 201.288, - "95.93757829647825" : 201.388, - "95.9687787939401" : 201.488, - "96.000179629163" : 201.595, - "96.03133267820776" : 201.701, - "96.06260803872769" : 201.808, - "96.09395509907789" : 201.92, - "96.12519619129658" : 202.033, - "96.15626857803231" : 202.143, - "96.1875602818959" : 202.254, - "96.21896269873268" : 202.367, - "96.25000345319036" : 202.476, - "96.28133258858298" : 202.586, - "96.31254152131899" : 202.703, - "96.34387698316722" : 202.818, - "96.3751808127374" : 202.933, - "96.40650256726515" : 203.049, - "96.4375369952672" : 203.164, - "96.46895575544765" : 203.284, - "96.50007084575876" : 203.399, - "96.53129137699672" : 203.509, - "96.56273333418108" : 203.624, - "96.59383946201339" : 203.731, - "96.62515489008553" : 203.842, - "96.6563480066825" : 203.963, - "96.68769401262342" : 204.09, - "96.71878485152135" : 204.213, - "96.75004070546981" : 204.334, - "96.78136720483927" : 204.458, - "96.81272797250995" : 204.581, - "96.84391054501424" : 204.702, - "96.87522966351881" : 204.827, - "96.89088447792939" : 204.892, - "96.90640169193041" : 204.955, - "96.92202909170001" : 205.018, - "96.93755105054275" : 205.082, - "96.95334662859068" : 205.145, - "96.96881375815146" : 205.209, - "96.98438685584371" : 205.275, - "97.00014974720432" : 205.342, - "97.01582723141418" : 205.408, - "97.03134813584765" : 205.473, - "97.04705145308458" : 205.538, - "97.06272102922492" : 205.603, - "97.0781591625308" : 205.668, - "97.09385088126578" : 205.737, - "97.10951044051806" : 205.806, - "97.12502343688202" : 205.876, - "97.14074889671359" : 205.944, - "97.15639263982685" : 206.015, - "97.17187980316372" : 206.083, - "97.18757732114967" : 206.152, - "97.20332703239443" : 206.223, - "97.21880417884324" : 206.294, - "97.23452383942384" : 206.366, - "97.25008322979562" : 206.435, - "97.26583821308671" : 206.507, - "97.28127476477869" : 206.577, - "97.29687896754437" : 206.646, - "97.31270775948427" : 206.72, - "97.32829772772483" : 206.789, - "97.34375273157902" : 206.86, - "97.35956992501696" : 206.932, - "97.37524635481753" : 206.997, - "97.39077411291125" : 207.06, - "97.40629923498179" : 207.128, - "97.4220500006358" : 207.201, - "97.43769954300005" : 207.274, - "97.45316983578861" : 207.35, - "97.46889371400628" : 207.431, - "97.48447630138197" : 207.513, - "97.50004781746033" : 207.592, - "97.5157901478402" : 207.673, - "97.53137168080661" : 207.75, - "97.54696533947961" : 207.828, - "97.56254634524139" : 207.903, - "97.57831292703443" : 207.984, - "97.59382170576131" : 208.065, - "97.60953609429556" : 208.147, - "97.62504329140855" : 208.229, - "97.6406332596491" : 208.312, - "97.65629703653846" : 208.393, - "97.67196766708807" : 208.472, - "97.6875064964791" : 208.551, - "97.70321508576238" : 208.628, - "97.71895372570981" : 208.709, - "97.73450995285377" : 208.789, - "97.75007988731824" : 208.868, - "97.76583223458616" : 208.95, - "97.78134364933621" : 209.034, - "97.79700900783946" : 209.118, - "97.81264484288322" : 209.201, - "97.82814413192668" : 209.284, - "97.84394814524876" : 209.365, - "97.8594716857054" : 209.444, - "97.87505532749034" : 209.529, - "97.89077973291265" : 209.613, - "97.90626531463562" : 209.697, - "97.9219369995945" : 209.788, - "97.93755754570384" : 209.884, - "97.9531828366549" : 209.982, - "97.96889089873355" : 210.08, - "97.98442445607823" : 210.175, - "98.00003551250417" : 210.265, - "98.01570034380279" : 210.355, - "98.03139100812851" : 210.443, - "98.04688449792098" : 210.535, - "98.06254669319645" : 210.635, - "98.07817778339849" : 210.726, - "98.09381572726076" : 210.818, - "98.10951904449769" : 210.909, - "98.1250299320431" : 210.997, - "98.14075802789786" : 211.099, - "98.15630581976767" : 211.202, - "98.17197170547557" : 211.307, - "98.18760595890541" : 211.407, - "98.2032011991923" : 211.508, - "98.21889028190412" : 211.606, - "98.23438746212905" : 211.7, - "98.25011503077916" : 211.802, - "98.26568707406214" : 211.904, - "98.28137193913689" : 212.008, - "98.29696823383306" : 212.115, - "98.31251128086116" : 212.22, - "98.32825941049201" : 212.329, - "98.34380931118037" : 212.435, - "98.35943987417777" : 212.546, - "98.37505778426394" : 212.659, - "98.39076057429624" : 212.768, - "98.40637321233608" : 212.881, - "98.42195421809785" : 213.004, - "98.4375378598828" : 213.125, - "98.44536632149736" : 213.183, - "98.45319689193045" : 213.239, - "98.4610005749272" : 213.291, - "98.46887964818664" : 213.344, - "98.47659001596313" : 213.402, - "98.48444958265111" : 213.462, - "98.4922585376942" : 213.525, - "98.50000897302287" : 213.591, - "98.50789279112404" : 213.655, - "98.51571070864591" : 213.717, - "98.5235027931407" : 213.783, - "98.53130858495598" : 213.847, - "98.53915286270957" : 213.912, - "98.54692175020045" : 213.977, - "98.5546916921006" : 214.044, - "98.5625591668581" : 214.114, - "98.57031751025629" : 214.186, - "98.57820238276672" : 214.254, - "98.58596336218808" : 214.321, - "98.59381976564826" : 214.392, - "98.60163399273769" : 214.46, - "98.60938495527101" : 214.524, - "98.61718863826776" : 214.586, - "98.62500128374329" : 214.648, - "98.632930441443" : 214.709, - "98.6406597885863" : 214.772, - "98.64850775677233" : 214.839, - "98.65634518086567" : 214.91, - "98.66407610962288" : 214.978, - "98.67197521665844" : 215.053, - "98.6797409409215" : 215.132, - "98.68758785469826" : 215.219, - "98.69537044950964" : 215.301, - "98.70321999930957" : 215.382, - "98.71103949844534" : 215.456, - "98.71879151538793" : 215.529, - "98.72665160928055" : 215.598, - "98.73444422097997" : 215.672, - "98.74218780264842" : 215.747, - "98.75005105976884" : 215.822, - "98.75791748011706" : 215.895, - "98.76567740512915" : 215.969, - "98.77346632639615" : 216.047, - "98.78126210132338" : 216.131, - "98.78916331717747" : 216.211, - "98.79689635475322" : 216.29, - "98.8047622478968" : 216.387, - "98.81258016541868" : 216.487, - "98.82037594034591" : 216.585, - "98.82817540570558" : 216.687, - "98.83596274535867" : 216.786, - "98.84380860472615" : 216.876, - "98.85161017890437" : 216.977, - "98.85941913394745" : 217.078, - "98.8672428507203" : 217.179, - "98.87506445867461" : 217.279, - "98.88288343060576" : 217.382, - "98.89067604230517" : 217.481, - "98.89847076282314" : 217.581, - "98.90625968409013" : 217.676, - "98.91412083239202" : 217.782, - "98.92188602945045" : 217.883, - "98.92970605579086" : 217.979, - "98.93753399020079" : 218.076, - "98.94535823417827" : 218.176, - "98.95320198472722" : 218.29, - "98.96093765832615" : 218.402, - "98.96878351769364" : 218.509, - "98.97660723446648" : 218.619, - "98.98441987994201" : 218.725, - "98.99226099446778" : 218.834, - "99.00005887821355" : 218.942, - "99.00783725538786" : 219.039, - "99.01569576766657" : 219.138, - "99.0234730904316" : 219.245, - "99.03130049763689" : 219.359, - "99.03910839827071" : 219.466, - "99.04691946213234" : 219.565, - "99.05473685244958" : 219.654, - "99.06255793319924" : 219.735, - "99.07035528974039" : 219.829, - "99.07816529919275" : 219.934, - "99.08596054691535" : 220.043, - "99.09377846443721" : 220.155, - "99.10162326939543" : 220.262, - "99.10939637452339" : 220.375, - "99.11725066916503" : 220.476, - "99.1250548793664" : 220.583, - "99.13283694697314" : 220.687, - "99.1406253410355" : 220.799, - "99.14849492461153" : 220.924, - "99.15625379521435" : 221.067, - "99.1641144163116" : 221.209, - "99.17193075221958" : 221.324, - "99.17971281982632" : 221.447, - "99.18751913884624" : 221.573, - "99.19532440345688" : 221.697, - "99.20315602829925" : 221.814, - "99.21094389515696" : 221.938, - "99.21880504345884" : 222.061, - "99.22269844968308" : 222.12, - "99.22659291031657" : 222.186, - "99.23047840847127" : 222.259, - "99.2344103006338" : 222.338, - "99.23830107083485" : 222.422, - "99.24219236824054" : 222.508, - "99.24614113095137" : 222.584, - "99.25002768351534" : 222.651, - "99.25391529048859" : 222.714, - "99.25785350910674" : 222.784, - "99.26171950068998" : 222.855, - "99.26563715832738" : 222.925, - "99.26954954391843" : 222.994, - "99.2734498038029" : 223.059, - "99.27736957025884" : 223.126, - "99.28127246616648" : 223.193, - "99.2851627091629" : 223.262, - "99.2890772035725" : 223.34, - "99.29297904507087" : 223.424, - "99.29692359014462" : 223.499, - "99.30081066991323" : 223.567, - "99.3047325451877" : 223.635, - "99.3086407131417" : 223.705, - "99.31252093925006" : 223.778, - "99.31645863066356" : 223.855, - "99.32031935020046" : 223.918, - "99.3242744393669" : 223.982, - "99.32814201256404" : 224.051, - "99.33207864956829" : 224.125, - "99.33594516835616" : 224.19, - "99.33988865902064" : 224.265, - "99.3437825924495" : 224.353, - "99.34766387296713" : 224.437, - "99.35156782328404" : 224.518, - "99.35548706253535" : 224.597, - "99.35938468639665" : 224.68, - "99.36330708887576" : 224.763, - "99.36721947446682" : 224.839, - "99.37111867994201" : 224.926, - "99.37502421187283" : 225.015, - "99.37894977757975" : 225.104, - "99.38282473164178" : 225.19, - "99.38673606282356" : 225.28, - "99.39067006380462" : 225.359, - "99.39453763700178" : 225.446, - "99.39847321959674" : 225.527, - "99.4023566089329" : 225.599, - "99.40627953861666" : 225.676, - "99.41016450956673" : 225.755, - "99.4140863848412" : 225.841, - "99.41797715504225" : 225.908, - "99.42187741492673" : 225.981, - "99.42580825267999" : 226.073, - "99.4297122029969" : 226.157, - "99.43362458858796" : 226.248, - "99.43752537567705" : 226.332, - "99.44143090760787" : 226.408, - "99.44532853146917" : 226.483, - "99.44921982887486" : 226.557, - "99.4531596291069" : 226.641, - "99.45703669198747" : 226.729, - "99.46097227458243" : 226.82, - "99.46487200726226" : 226.894, - "99.46878281123942" : 226.979, - "99.47265671089218" : 227.065, - "99.47659809273812" : 227.163, - "99.48049413498552" : 227.265, - "99.48437963314022" : 227.36, - "99.488318378963" : 227.45, - "99.49220018668527" : 227.538, - "99.49613682368951" : 227.629, - "99.50002390345811" : 227.726, - "99.50392627216112" : 227.814, - "99.5078449842078" : 227.909, - "99.511744189683" : 227.988, - "99.51566290172967" : 228.072, - "99.51954945429365" : 228.161, - "99.52344180610861" : 228.257, - "99.52735840933674" : 228.357, - "99.53127764858804" : 228.455, - "99.53516420115201" : 228.567, - "99.53908554922187" : 228.702, - "99.54299002674341" : 228.829, - "99.54689134103714" : 228.928, - "99.55079107371698" : 229.017, - "99.55471294899145" : 229.111, - "99.55866856536252" : 229.198, - "99.56250661510015" : 229.28, - "99.56640740218926" : 229.403, - "99.57033665832861" : 229.528, - "99.57422004766478" : 229.667, - "99.5781487765995" : 229.79, - "99.58206590703227" : 229.902, - "99.58597354778162" : 230.013, - "99.58986589959657" : 230.125, - "99.59376036023006" : 230.232, - "99.59768592593699" : 230.345, - "99.60156667924998" : 230.462, - "99.6054922449569" : 230.587, - "99.60938775999966" : 230.7, - "99.61136846781069" : 230.748, - "99.61329276472584" : 230.793, - "99.61527189092297" : 230.843, - "99.61721411279568" : 230.899, - "99.61914526337108" : 230.955, - "99.6211043557921" : 231.012, - "99.62304974089263" : 231.07, - "99.62500408847194" : 231.134, - "99.62697583380418" : 231.185, - "99.62891172922129" : 231.254, - "99.6308724032562" : 231.331, - "99.63283360449576" : 231.421, - "99.63476791829898" : 231.521, - "99.63674388126829" : 231.593, - "99.63868030389003" : 231.648, - "99.64062621619519" : 231.716, - "99.64258267259304" : 231.778, - "99.64454598265112" : 231.838, - "99.64649769420727" : 231.906, - "99.6484509873773" : 231.981, - "99.65040638936588" : 232.045, - "99.65235493769421" : 232.11, - "99.65430243161329" : 232.18, - "99.65625730639722" : 232.244, - "99.65822694291093" : 232.302, - "99.66017180080682" : 232.365, - "99.66211560429345" : 232.445, - "99.66407733273763" : 232.525, - "99.6660264082706" : 232.6, - "99.66797970144064" : 232.699, - "99.6699240321319" : 232.809, - "99.67188048852975" : 232.913, - "99.673852233862" : 233.005, - "99.67578707486983" : 233.1, - "99.6777393136306" : 233.187, - "99.67969524282381" : 233.284, - "99.68165591685873" : 233.367, - "99.68360551959633" : 233.468, - "99.68554879587832" : 233.571, - "99.68750156184373" : 233.663, - "99.68946118146938" : 233.743, - "99.69141394743478" : 233.821, - "99.69338358394849" : 233.889, - "99.69532158818414" : 233.943, - "99.69726855489857" : 233.999, - "99.69925137152813" : 234.06, - "99.70119148458231" : 234.113, - "99.70313686968284" : 234.192, - "99.70509332608069" : 234.29, - "99.70704398322755" : 234.37, - "99.70899938521613" : 234.44, - "99.71094160708886" : 234.512, - "99.71289331864499" : 234.583, - "99.71484713901967" : 234.658, - "99.7168157211241" : 234.739, - "99.71875847020145" : 234.848, - "99.72072125305492" : 234.968, - "99.72266874697398" : 235.069, - "99.72461782250694" : 235.161, - "99.7265774421326" : 235.237, - "99.72853442573508" : 235.323, - "99.73048561008657" : 235.408, - "99.73243310400565" : 235.514, - "99.73438323394788" : 235.607, - "99.73633389109474" : 235.705, - "99.73828665706016" : 235.805, - "99.74024047743482" : 235.885, - "99.74220167867439" : 235.99, - "99.74415075420735" : 236.106, - "99.74611511867471" : 236.209, - "99.74807210227719" : 236.305, - "99.75001537855918" : 236.39, - "99.75196287247825" : 236.47, - "99.75391300242048" : 236.541, - "99.75586418677199" : 236.647, - "99.7578248608069" : 236.774, - "99.75977077311207" : 236.878, - "99.76172564789601" : 236.981, - "99.76367314181508" : 237.101, - "99.7656385606917" : 237.214, - "99.76757920095052" : 237.303, - "99.7695546367152" : 237.388, - "99.77149000492767" : 237.469, - "99.77345753262284" : 237.545, - "99.77539342803995" : 237.618, - "99.77734724841463" : 237.698, - "99.77931214008662" : 237.789, - "99.7812506715269" : 237.892, - "99.7832171448128" : 238.002, - "99.78515778507162" : 238.128, - "99.78711055103703" : 238.251, - "99.78907227948122" : 238.369, - "99.7910340079254" : 238.502, - "99.79298255625373" : 238.609, - "99.79493110458206" : 238.723, - "99.79688756097991" : 238.837, - "99.7988340004897" : 238.959, - "99.80078992968292" : 239.077, - "99.80273478757881" : 239.256, - "99.80469598881837" : 239.408, - "99.80567079018716" : 239.479, - "99.80664559155596" : 239.531, - "99.80762092012941" : 239.57, - "99.80860204795381" : 239.617, - "99.80957421329944" : 239.669, - "99.81055692273776" : 239.722, - "99.81152803367412" : 239.784, - "99.81251074311244" : 239.847, - "99.81347974523025" : 239.912, - "99.81445876423614" : 239.969, - "99.815437783242" : 240.024, - "99.81641680224789" : 240.067, - "99.81739318523059" : 240.117, - "99.81836060573451" : 240.178, - "99.81934331517282" : 240.249, - "99.82032760622504" : 240.307, - "99.82130767964019" : 240.357, - "99.82227984498581" : 240.417, - "99.82325201033144" : 240.489, - "99.82423102933731" : 240.555, - "99.82521690200343" : 240.617, - "99.82617641443784" : 240.648, - "99.82715806946689" : 240.697, - "99.82812865319862" : 240.748, - "99.82911188984156" : 240.79, - "99.83009407207524" : 240.834, - "99.83106149257917" : 240.883, - "99.83204841965456" : 240.933, - "99.83301214972603" : 240.988, - "99.83398905991336" : 241.026, - "99.8349812590351" : 241.074, - "99.83594393469731" : 241.127, - "99.83692664413563" : 241.176, - "99.8379040815276" : 241.223, - "99.83887361085006" : 241.272, - "99.83985052103739" : 241.326, - "99.84083217606644" : 241.384, - "99.84180381420744" : 241.458, - "99.84279074128283" : 241.524, - "99.84376027060529" : 241.588, - "99.84473928961116" : 241.662, - "99.84572252625411" : 241.733, - "99.8466925827812" : 241.789, - "99.84766632974073" : 241.839, - "99.8486437671327" : 241.907, - "99.84962331334322" : 241.96, - "99.85059284266566" : 242.036, - "99.85156764403446" : 242.101, - "99.85254877185888" : 242.166, - "99.85353095409256" : 242.233, - "99.85450048341502" : 242.293, - "99.85548688328578" : 242.352, - "99.85645430378969" : 242.414, - "99.85742594193069" : 242.475, - "99.858408651369" : 242.532, - "99.85937976230537" : 242.604, - "99.86037301583636" : 242.668, - "99.86132883783833" : 242.756, - "99.8623078568442" : 242.908, - "99.86328687585008" : 243.008, - "99.86426747646986" : 243.103, - "99.86525124031743" : 243.168, - "99.86621707920746" : 243.23, - "99.86719398939479" : 243.309, - "99.86816510033115" : 243.381, - "99.86914253772312" : 243.455, - "99.87012366554754" : 243.53, - "99.87111481026" : 243.594, - "99.87207695871759" : 243.654, - "99.87305123288175" : 243.731, - "99.87403657834324" : 243.817, - "99.87500189002861" : 243.888, - "99.87598143623913" : 243.978, - "99.8769652000867" : 244.064, - "99.877932093386" : 244.149, - "99.87891058518723" : 244.241, - "99.87989065860238" : 244.317, - "99.88087020481288" : 244.392, - "99.88183709811217" : 244.481, - "99.88281928034586" : 244.566, - "99.88379988096563" : 244.642, - "99.88477099190199" : 244.72, - "99.8857537013403" : 244.784, - "99.8867221762535" : 244.828, - "99.88769961364547" : 244.903, - "99.88867388780963" : 244.979, - "99.88965817886185" : 245.044, - "99.89062507216113" : 245.125, - "99.89160303675774" : 245.203, - "99.89258100135434" : 245.291, - "99.89356160197413" : 245.383, - "99.89454114818463" : 245.467, - "99.8955154223488" : 245.581, - "99.89648811489906" : 245.674, - "99.89746766110957" : 245.764, - "99.89843929925057" : 245.87, - "99.89941726384717" : 245.97, - "99.90039470123915" : 246.074, - "99.90137161142648" : 246.182, - "99.90235221204625" : 246.285, - "99.90283724030981" : 246.31, - "99.90332701341507" : 246.344, - "99.90381467770177" : 246.382, - "99.9043023419885" : 246.427, - "99.90479053347984" : 246.485, - "99.9052787249712" : 246.551, - "99.90576797087182" : 246.611, - "99.90625036311219" : 246.674, - "99.90673960901282" : 246.752, - "99.90723359975514" : 246.83, - "99.90771546479088" : 246.903, - "99.90820418348687" : 246.974, - "99.90869395659212" : 247.058, - "99.9091810936742" : 247.154, - "99.90966875796092" : 247.276, - "99.91015958547544" : 247.422, - "99.9106477769668" : 247.556, - "99.91113596845815" : 247.663, - "99.91162468715413" : 247.768, - "99.91211182423622" : 247.857, - "99.91259948852293" : 247.958, - "99.91308768001429" : 248.035, - "99.91357428989174" : 248.104, - "99.91406617181552" : 248.162, - "99.91455330889761" : 248.233, - "99.91504255479823" : 248.312, - "99.91552916467568" : 248.47, - "99.91601946498557" : 248.591, - "99.91650976529546" : 248.652, - "99.9169963751729" : 248.758, - "99.9174882570967" : 248.821, - "99.91797223095098" : 248.9, - "99.91845778641915" : 248.975, - "99.91895019554758" : 249.089, - "99.91943469660649" : 249.249, - "99.91992657853028" : 249.415, - "99.92041477002164" : 249.465, - "99.92089979828518" : 249.539, - "99.92139168020897" : 249.612, - "99.92187829008643" : 249.707, - "99.92237122641949" : 249.759, - "99.92285256425059" : 249.864, - "99.9233418101512" : 249.987, - "99.92382894723329" : 250.087, - "99.92431713872465" : 250.202, - "99.92480480301136" : 250.316, - "99.92529352170735" : 250.456, - "99.9257848764265" : 250.586, - "99.92627359512248" : 250.702, - "99.9267612594092" : 250.8, - "99.92725208692373" : 250.881, - "99.92773553357337" : 250.955, - "99.9282263610879" : 251.041, - "99.92871349816998" : 251.121, - "99.92920116245669" : 251.192, - "99.92968829953878" : 251.265, - "99.93018176307648" : 251.346, - "99.93066520972611" : 251.408, - "99.93115498283137" : 251.491, - "99.93164633755053" : 251.593, - "99.93213294742797" : 251.668, - "99.93262272053323" : 251.738, - "99.93310722159214" : 251.787, - "99.9335969946974" : 251.848, - "99.93412578094559" : 251.867, - "99.93457285047546" : 251.91, - "99.93506104196682" : 251.999, - "99.9355481790489" : 252.108, - "99.93603795215415" : 252.211, - "99.93652561644087" : 252.329, - "99.93701433513685" : 252.499, - "99.93750041780967" : 252.698, - "99.9379912453242" : 252.934, - "99.93848049122482" : 253.005, - "99.93897342755788" : 253.085, - "99.93945792861679" : 253.153, - "99.93994453849423" : 253.247, - "99.94043009396242" : 253.352, - "99.94091933986304" : 253.457, - "99.94141016737755" : 253.596, - "99.94189730445964" : 253.702, - "99.94238496874637" : 253.829, - "99.94287157862381" : 254.021, - "99.94336398775224" : 254.153, - "99.94385007042504" : 254.258, - "99.94433615309786" : 254.415, - "99.94482434458922" : 254.653, - "99.94531253608056" : 254.765, - "99.94580125477655" : 254.871, - "99.94629260949571" : 254.957, - "99.94677921937316" : 255.073, - "99.94726741086451" : 255.302, - "99.9477561295605" : 255.674, - "99.94824537546111" : 255.864, - "99.94873303974784" : 255.986, - "99.94922123123919" : 256.15, - "99.94971100434444" : 256.28, - "99.95019603260799" : 256.499, - "99.95068580571323" : 256.767, - "99.95117241559069" : 256.964, - "99.951417038541" : 257.077, - "99.95166218869595" : 257.213, - "99.95190470282772" : 257.319, - "99.95214985298266" : 257.478, - "99.95239447593298" : 257.64, - "99.95263804447401" : 257.715, - "99.95288477624285" : 257.792, - "99.95312623596537" : 257.847, - "99.95337296773421" : 257.89, - "99.95361390025208" : 257.937, - "99.95385746879312" : 258.022, - "99.9541031461527" : 258.098, - "99.95434724189838" : 258.208, - "99.95459028323478" : 258.452, - "99.9548349061851" : 258.605, - "99.95507847472614" : 258.734, - "99.95532467929036" : 258.858, - "99.9555682478314" : 258.94, - "99.95581076196316" : 259.019, - "99.95605749373202" : 259.145, - "99.95629948065915" : 259.315, - "99.9565446308141" : 259.484, - "99.95678714494586" : 259.56, - "99.95703229510082" : 259.741, - "99.95727744525576" : 259.984, - "99.95752101379679" : 260.1, - "99.95776563674711" : 260.19, - "99.95800867808352" : 260.291, - "99.95825330103382" : 260.429, - "99.9584973967795" : 260.572, - "99.95874096532054" : 260.706, - "99.95898453386158" : 260.848, - "99.95923021122117" : 260.996, - "99.95947272535294" : 261.094, - "99.95971682109861" : 261.36, - "99.95996513448137" : 261.508, - "99.96020659420387" : 261.599, - "99.9604501627449" : 261.693, - "99.96069373128594" : 261.909, - "99.96093940864553" : 262.135, - "99.96118244998193" : 262.271, - "99.96142707293224" : 262.423, - "99.96167275029183" : 262.557, - "99.96191737324213" : 262.691, - "99.96216041457853" : 262.783, - "99.96240398311959" : 262.901, - "99.96264807886526" : 263.123, - "99.96289270181556" : 263.289, - "99.96313627035661" : 263.381, - "99.96338247492082" : 263.469, - "99.96362973389431" : 263.535, - "99.96387330243535" : 263.607, - "99.96411265333931" : 263.665, - "99.96435674908498" : 263.763, - "99.9646013720353" : 263.923, - "99.96484546778098" : 264.063, - "99.96508798191275" : 264.219, - "99.96533524088623" : 264.349, - "99.965577755018" : 264.447, - "99.96582185076367" : 264.543, - "99.96606858253253" : 264.643, - "99.9663095150504" : 264.777, - "99.96655519240997" : 264.897, - "99.96679876095102" : 265.073, - "99.96704232949206" : 265.221, - "99.96728537082846" : 265.407, - "99.96753210259732" : 265.797, - "99.96777567113836" : 265.899, - "99.96802187570256" : 265.973, - "99.96826438983435" : 266.047, - "99.96850901278465" : 266.153, - "99.96875258132569" : 266.315, - "99.96899562266209" : 266.475, - "99.96924077281705" : 266.965, - "99.96948645017662" : 267.303, - "99.96973265474084" : 267.407, - "99.96997938650968" : 267.511, - "99.97021926461828" : 267.611, - "99.97046072434078" : 267.767, - "99.97070482008647" : 267.843, - "99.97094944303677" : 267.945, - "99.97119986523806" : 268.017, - "99.97143974334666" : 268.099, - "99.97168067586453" : 268.137, - "99.97192529881484" : 268.195, - "99.97216992176516" : 268.293, - "99.97241243589693" : 268.389, - "99.9726596948704" : 268.465, - "99.97290642663926" : 268.531, - "99.97315104958956" : 268.603, - "99.9733898732889" : 268.665, - "99.97363396903457" : 268.747, - "99.97387753757562" : 268.969, - "99.97412479654909" : 269.317, - "99.97436678347623" : 269.553, - "99.97460982481265" : 270.351, - "99.97485392055832" : 270.845, - "99.97509959791789" : 273.145, - "99.97534211204967" : 273.299, - "99.97558620779535" : 273.859, - "99.97571220970293" : 273.929, - "99.97583083074565" : 274.027, - "99.97595314222082" : 274.363, - "99.97607545369597" : 274.507, - "99.97619776517112" : 275.073, - "99.976319022237" : 275.155, - "99.9764418609168" : 275.429, - "99.9765662812105" : 275.505, - "99.97668648386711" : 275.583, - "99.97680721372836" : 275.657, - "99.97693057961278" : 275.737, - "99.97705130947404" : 275.815, - "99.97717309374455" : 275.887, - "99.97729962285679" : 275.957, - "99.97741771669486" : 276.005, - "99.97753950096539" : 276.085, - "99.97766392125908" : 276.165, - "99.9777841239157" : 276.257, - "99.97790538098158" : 276.367, - "99.97802769245673" : 279.413, - "99.97815000393189" : 279.761, - "99.97827336981632" : 279.949, - "99.97839568129147" : 280.017, - "99.97851693835736" : 280.125, - "99.97863819542324" : 280.321, - "99.97876103410303" : 280.429, - "99.97888439998745" : 280.503, - "99.97900512984872" : 280.553, - "99.97912849573314" : 280.609, - "99.97924922559439" : 280.663, - "99.9793710098649" : 280.713, - "99.97949226693079" : 280.803, - "99.97961563281521" : 280.947, - "99.9797368898811" : 281.137, - "99.97986025576553" : 281.241, - "99.97998309444532" : 281.315, - "99.98010329710193" : 281.373, - "99.98022560857709" : 281.465, - "99.9803473928476" : 281.543, - "99.98047128593667" : 281.625, - "99.98059254300256" : 281.705, - "99.98071380006844" : 281.863, - "99.98083558433896" : 282.103, - "99.98095789581411" : 282.251, - "99.98107968008463" : 282.351, - "99.98120357317369" : 282.449, - "99.98132483023959" : 282.533, - "99.98145030494254" : 282.665, - "99.98159159578454" : 282.673, - "99.98169914552993" : 282.681, - "99.98181196732166" : 282.773, - "99.98193533320608" : 282.973, - "99.98205659027198" : 283.097, - "99.98217942895177" : 283.219, - "99.98230015881302" : 283.287, - "99.98242405190207" : 283.365, - "99.98254478176332" : 283.441, - "99.98266814764774" : 283.541, - "99.982788877509" : 283.575, - "99.98291435221196" : 283.615, - "99.98303560927785" : 283.651, - "99.98316055677617" : 283.697, - "99.98328234104669" : 283.741, - "99.98339885327087" : 283.859, - "99.98352327356457" : 284.017, - "99.98364347622119" : 284.113, - "99.98377000533341" : 284.181, - "99.98388757196686" : 284.223, - "99.98401093785128" : 284.279, - "99.98413799416815" : 284.317, - "99.9842571424155" : 284.349, - "99.98437629066285" : 284.377, - "99.98449754772874" : 284.419, - "99.98462144081779" : 284.455, - "99.98474375229294" : 284.525, - "99.9848660637681" : 284.617, - "99.98498679362935" : 284.723, - "99.98510805069523" : 284.903, - "99.98523088937503" : 285.055, - "99.98535267364555" : 285.253, - "99.98547445791607" : 285.419, - "99.98559624218659" : 285.595, - "99.9857180264571" : 285.673, - "99.98584244675081" : 285.755, - "99.98596739424913" : 285.819, - "99.98608601529185" : 285.869, - "99.98620779956237" : 285.933, - "99.98633063824215" : 286.329, - "99.98646349380999" : 286.337, - "99.9865757883971" : 286.355, - "99.98670706235103" : 286.379, - "99.98682621059838" : 287.001, - "99.98694746766428" : 287.023, - "99.98706081666064" : 287.041, - "99.98718365534043" : 287.225, - "99.98730596681558" : 287.749, - "99.98743829517879" : 288.345, - "99.98755955224468" : 288.353, - "99.98767395565032" : 288.441, - "99.98779415830694" : 288.547, - "99.98785425963526" : 288.593, - "99.98792543226088" : 288.631, - "99.98797867992894" : 288.637, - "99.98803772684798" : 288.645, - "99.9881009914041" : 288.663, - "99.98816003832314" : 288.693, - "99.98822066685608" : 288.729, - "99.98828129538903" : 288.757, - "99.98834350553587" : 288.791, - "99.98840518847808" : 288.839, - "99.9884668714203" : 288.879, - "99.98852591833933" : 288.931, - "99.98858654687228" : 289.045, - "99.98864770260985" : 289.159, - "99.98870885834744" : 289.279, - "99.9887715956989" : 289.325, - "99.98883064261796" : 289.375, - "99.9888928527648" : 289.465, - "99.98895295409311" : 289.989, - "99.98901569144459" : 290.141, - "99.98907526556826" : 290.181, - "99.98913642130584" : 290.233, - "99.98919704983878" : 290.299, - "99.98925978719026" : 290.373, - "99.98931936131395" : 290.419, - "99.98938473468858" : 290.453, - "99.98944272719837" : 290.475, - "99.98950704616375" : 290.497, - "99.98956398426425" : 290.519, - "99.98962566720647" : 290.543, - "99.98968840455794" : 290.567, - "99.98974639706772" : 290.589, - "99.98981018882846" : 290.613, - "99.98986818133824" : 290.637, - "99.98993250030362" : 290.657, - "99.98999260163193" : 290.681, - "99.99005481177878" : 290.705, - "99.99011280428854" : 290.727, - "99.9901750144354" : 290.751, - "99.99023617017296" : 290.775, - "99.99029943472908" : 290.803, - "99.99036059046666" : 290.827, - "99.9904196373857" : 290.851, - "99.99048184753255" : 290.877, - "99.99054089445158" : 290.899, - "99.99060152298453" : 290.927, - "99.99066162431284" : 290.951, - "99.99072857930139" : 290.977, - "99.99078815342507" : 291.001, - "99.9908456187302" : 291.023, - "99.99090941049096" : 291.047, - "99.99096951181926" : 291.073, - "99.99102855873831" : 291.165, - "99.99108971447588" : 291.349, - "99.99115087021346" : 291.531, - "99.99121202595104" : 291.937, - "99.99127265448398" : 292.011, - "99.99133328301693" : 292.085, - "99.99139496595913" : 292.171, - "99.99145612169671" : 292.229, - "99.99151622302502" : 292.295, - "99.9915773787626" : 292.367, - "99.99163958890945" : 292.437, - "99.99169969023775" : 294.613, - "99.9917603187707" : 296.329, - "99.9918220017129" : 296.473, - "99.99188263024585" : 296.621, - "99.99194378598342" : 296.763, - "99.992004941721" : 296.907, - "99.99206609745859" : 297.049, - "99.99212672599153" : 297.197, - "99.99218788172911" : 297.359, - "99.99224956467131" : 297.499, - "99.9923107204089" : 299.001, - "99.9923708217372" : 299.069, - "99.99243197747478" : 299.143, - "99.992493660417" : 299.217, - "99.9925537617453" : 299.293, - "99.99261649909678" : 299.355, - "99.99267660042509" : 299.389, - "99.9927398649812" : 299.421, - "99.99279838469562" : 299.447, - "99.99285901322855" : 299.495, - "99.9929212233754" : 299.561, - "99.99298237911297" : 299.637, - "99.99304353485056" : 300.123, - "99.99310310897422" : 300.195, - "99.99316479191644" : 300.269, - "99.99322594765403" : 300.347, - "99.99328657618696" : 300.421, - "99.99334825912918" : 300.491, - "99.99341046927603" : 300.541, - "99.9934716250136" : 300.579, - "99.99353067193265" : 300.635, - "99.99359182767022" : 303.581, - "99.9936529834078" : 310.889, - "99.99371466635" : 310.961, - "99.99377529488295" : 311.029, - "99.99383697782517" : 311.529, - "99.99389813356274" : 311.603, - "99.99392712981762" : 311.639, - "99.99395770768642" : 311.675, - "99.9939898671691" : 311.723, - "99.99401886342399" : 311.759, - "99.99404996849742" : 312.149, - "99.99408107357084" : 312.185, - "99.99411059703036" : 312.219, - "99.99414117489914" : 312.253, - "99.9941712255633" : 312.287, - "99.99420391225063" : 312.317, - "99.99423238130088" : 312.343, - "99.99426348637431" : 312.377, - "99.99429406424309" : 312.411, - "99.99432411490724" : 312.997, - "99.99435521998066" : 313.033, - "99.99438527064483" : 313.065, - "99.99441637571825" : 313.089, - "99.99444589917776" : 313.111, - "99.99447753145583" : 313.135, - "99.99450863652925" : 313.159, - "99.99453763278413" : 313.179, - "99.99456979226683" : 313.207, - "99.99459878852171" : 313.229, - "99.99463042079977" : 313.253, - "99.9946631074871" : 313.281, - "99.99469104933272" : 313.303, - "99.99472109999687" : 313.327, - "99.99475220507028" : 313.349, - "99.99478383734835" : 313.373, - "99.99481441521714" : 313.395, - "99.99484393867665" : 313.415, - "99.99487451654544" : 313.435, - "99.99490562161887" : 313.455, - "99.99493409066912" : 313.473, - "99.99496572294717" : 313.497, - "99.99499630081597" : 313.515, - "99.99502846029866" : 313.533, - "99.9950569293489" : 313.549, - "99.99508856162696" : 313.567, - "99.99511966670039" : 313.585, - "99.99514813575064" : 313.641, - "99.99517924082406" : 313.701, - "99.99520876428357" : 313.761, - "99.99524145097091" : 314.013, - "99.99527097443043" : 314.037, - "99.99530102509458" : 314.063, - "99.99533107575874" : 314.091, - "99.9953627080368" : 314.121, - "99.99539275870094" : 314.151, - "99.99542386377438" : 314.175, - "99.9954549688478" : 314.199, - "99.99548449230731" : 314.221, - "99.99551454297146" : 314.245, - "99.99554459363563" : 314.273, - "99.99557728032295" : 314.307, - "99.9956073309871" : 314.335, - "99.99563738165126" : 314.361, - "99.99566690511078" : 314.383, - "99.9956980101842" : 314.409, - "99.99572806084835" : 314.445, - "99.99575863871715" : 314.485, - "99.9957886893813" : 314.531, - "99.99581979445472" : 314.599, - "99.99584984511888" : 314.663, - "99.99588042298767" : 314.731, - "99.99591100085645" : 314.803, - "99.99594157872524" : 314.869, - "99.99597215659404" : 316.397, - "99.99600220725819" : 317.041, - "99.9960333123316" : 317.107, - "99.99606336299577" : 317.169, - "99.99609446806919" : 317.235, - "99.99612504593797" : 317.301, - "99.99615509660212" : 317.365, - "99.99618567447092" : 317.429, - "99.9962162523397" : 317.489, - "99.99624683020849" : 317.599, - "99.99627688087266" : 317.699, - "99.99630798594607" : 317.799, - "99.99633961822413" : 324.533, - "99.99636861447901" : 324.567, - "99.99640024675708" : 324.605, - "99.9964297702166" : 324.637, - "99.99646034808538" : 324.667, - "99.99649198036344" : 324.681, - "99.99652308543686" : 324.707, - "99.9965557721242" : 324.723, - "99.99658371396981" : 324.737, - "99.99661534624786" : 324.751, - "99.99664486970738" : 324.775, - "99.99667544757618" : 324.795, - "99.99671024308203" : 324.809, - "99.99673554890448" : 324.957, - "99.9967666539779" : 324.973, - "99.99680144948377" : 324.991, - "99.99682675530622" : 325.003, - "99.996857333175" : 325.017, - "99.9968894926577" : 325.025, - "99.99692059773112" : 325.037, - "99.99695064839527" : 325.047, - "99.99697279098991" : 325.051, - "99.99698069905942" : 325.053, - "99.99700126004016" : 325.059, - "99.99702129381626" : 325.063, - "99.99703131070432" : 325.065, - "99.99704449082017" : 325.067, - "99.9970555621175" : 325.069, - "99.99707401427969" : 325.075, - "99.99709035762336" : 325.081, - "99.99710142892067" : 325.085, - "99.99711619065044" : 325.093, - "99.99713200678947" : 325.111, - "99.9971494045424" : 325.133, - "99.99716205745362" : 325.137, - "99.99718209122973" : 325.143, - "99.99719896177803" : 325.149, - "99.99721108748462" : 325.153, - "99.99722690362364" : 325.157, - "99.9972385021256" : 325.161, - "99.99725431826462" : 325.553, - "99.99727277042682" : 325.559, - "99.99728700495194" : 325.565, - "99.99730282109098" : 325.569, - "99.99731758282074" : 325.573, - "99.9973339261644" : 325.579, - "99.99734816068953" : 325.585, - "99.99736661285172" : 325.591, - "99.99737979296758" : 325.603, - "99.99739191867417" : 325.607, - "99.99741089804101" : 325.613, - "99.99742249654297" : 325.615, - "99.99744042150053" : 325.619, - "99.99745676484419" : 325.623, - "99.99747258098321" : 325.627, - "99.9974847066898" : 325.631, - "99.99750895810298" : 325.637, - "99.99751633896787" : 325.639, - "99.9975400631764" : 325.645, - "99.99755218888299" : 325.647, - "99.99756009695251" : 325.649, - "99.99758171234252" : 325.653, - "99.99759014761666" : 325.655, - "99.99760649096032" : 325.671, - "99.99762019828081" : 325.685, - "99.99763654162449" : 325.701, - "99.99765183055888" : 325.717, - "99.99766659228864" : 325.731, - "99.99768082681376" : 325.745, - "99.99769717015742" : 326.123, - "99.99771298629645" : 326.137, - "99.99772722082157" : 326.151, - "99.99774409136988" : 326.165, - "99.99775727148574" : 326.177, - "99.99777308762476" : 326.193, - "99.99778837655916" : 326.583, - "99.99780366549355" : 326.599, - "99.99781895442794" : 326.615, - "99.99783424336233" : 326.633, - "99.99785058670601" : 326.649, - "99.99786482123113" : 326.663, - "99.99788063737016" : 326.679, - "99.99789539909992" : 326.695, - "99.99791174244358" : 326.705, - "99.99792492255943" : 326.713, - "99.99794073869846" : 326.721, - "99.99795919086067" : 326.731, - "99.9979765886136" : 326.735, - "99.99798765991092" : 326.741, - "99.99800189443604" : 326.747, - "99.99801771057507" : 326.753, - "99.99803774435118" : 326.761, - "99.99804776123923" : 326.765, - "99.99806357737826" : 326.773, - "99.99808044792655" : 326.781, - "99.99809415524705" : 326.787, - "99.99811260740924" : 326.791, - "99.99812367870656" : 326.795, - "99.99813844043632" : 326.801, - "99.99815741980316" : 326.809, - "99.99816954550975" : 326.813, - "99.99818694326268" : 326.819, - "99.99820434101561" : 326.823, - "99.99821752113147" : 326.825, - "99.99823333727049" : 326.829, - "99.99824651738635" : 326.831, - "99.99826971439026" : 326.835, - "99.99827920407368" : 326.837, - "99.99829660182661" : 326.843, - "99.99830925473783" : 326.845, - "99.99832928851394" : 327.209, - "99.99833719658345" : 327.213, - "99.99835248551784" : 327.223, - "99.99836935606615" : 327.239, - "99.99838411779591" : 327.257, - "99.99840046113957" : 327.267, - "99.99841311405079" : 327.271, - "99.99843420223617" : 327.277, - "99.99844738235201" : 327.283, - "99.99846530730959" : 327.289, - "99.99848744990422" : 327.293, - "99.99849852120154" : 327.295, - "99.99850906529423" : 327.297, - "99.99851644615912" : 327.299, - "99.99852646304716" : 327.301, - "99.99853278950278" : 327.303, - "99.99853858875375" : 327.305, - "99.99854280639083" : 327.307, - "99.9985533504835" : 327.311, - "99.99856073134839" : 327.315, - "99.99857074823645" : 327.319, - "99.99857602028278" : 327.321, - "99.99858181953377" : 327.323, - "99.99858972760327" : 327.333, - "99.99860185330986" : 327.337, - "99.99860659815157" : 327.339, - "99.99862135988134" : 327.343, - "99.9986361216111" : 327.345, - "99.99864613849914" : 327.347, - "99.99865246495476" : 327.349, - "99.99866300904745" : 327.353, - "99.99866880829842" : 327.355, - "99.99867302593549" : 327.357, - "99.99868515164208" : 327.363, - "99.9986898964838" : 327.365, - "99.99869569573477" : 327.367, - "99.99870993025989" : 327.371, - "99.99872047435258" : 327.373, - "99.99873049124064" : 327.375, - "99.99873945371941" : 327.377, - "99.99874788899356" : 327.379, - "99.99875737867698" : 327.381, - "99.99876686836039" : 327.383, - "99.99878637493187" : 327.385, - "99.99879744622919" : 327.387, - "99.99880429988943" : 327.389, - "99.99881115354968" : 327.391, - "99.99882064323309" : 327.393, - "99.99883224173504" : 327.395, - "99.99883540496286" : 327.397, - "99.99884120421383" : 327.399, - "99.99885385712506" : 327.403, - "99.99886018358066" : 327.405, - "99.99886334680848" : 329.457, - "99.99887125487798" : 336.761, - "99.9988791629475" : 358.861, - "99.99888812542629" : 358.869, - "99.99889550629116" : 358.875, - "99.99890183274678" : 358.879, - "99.99891343124872" : 358.885, - "99.99891817609044" : 358.889, - "99.99892555695531" : 359.325, - "99.99893504663874" : 359.329, - "99.99894137309435" : 359.331, - "99.99895033557313" : 359.335, - "99.99895877084728" : 359.337, - "99.99896457009825" : 359.341, - "99.99897036934924" : 359.345, - "99.99897775021411" : 359.351, - "99.99898565828363" : 359.355, - "99.9989930391485" : 359.361, - "99.99900147442266" : 359.367, - "99.99901201851534" : 359.373, - "99.99901676335705" : 359.377, - "99.99902572583584" : 359.383, - "99.99903363390534" : 359.389, - "99.99903890595169" : 359.393, - "99.9990468140212" : 359.399, - "99.99905419488609" : 359.405, - "99.99906421177414" : 359.411, - "99.99907159263901" : 359.417, - "99.9990789735039" : 359.423, - "99.99908899039195" : 359.427, - "99.99909215361976" : 359.429, - "99.99910322491708" : 359.435, - "99.99911007857732" : 359.439, - "99.99911798664684" : 359.445, - "99.99912325869317" : 359.449, - "99.99913063955806" : 359.455, - "99.99913960203683" : 359.461, - "99.99914909172026" : 359.467, - "99.9991543637666" : 359.471, - "99.99916174463148" : 359.477, - "99.99917017990563" : 359.481, - "99.99917650636124" : 359.487, - "99.99918494163539" : 359.495, - "99.9991928497049" : 359.499, - "99.99919970336515" : 359.505, - "99.99920866584394" : 359.511, - "99.99921446509491" : 359.513, - "99.99922606359686" : 359.519, - "99.99923186284784" : 359.521, - "99.99923871650809" : 359.525, - "99.99924135253126" : 359.527, - "99.9992466245776" : 359.531, - "99.99924873339614" : 359.533, - "99.99925295103321" : 359.537, - "99.99925716867028" : 359.541, - "99.99926138630737" : 359.545, - "99.99926454953517" : 359.547, - "99.99926771276297" : 359.557, - "99.99927245760468" : 359.561, - "99.99927562083249" : 359.563, - "99.9992819472881" : 359.567, - "99.9992851105159" : 359.569, - "99.99929038256225" : 359.571, - "99.99929407299469" : 359.573, - "99.99929776342712" : 359.575, - "99.9993003994503" : 359.577, - "99.99930356267811" : 359.579, - "99.99930725311054" : 359.581, - "99.99930988913371" : 359.583, - "99.99931516118006" : 359.587, - "99.99931779720323" : 359.589, - "99.9993220148403" : 359.593, - "99.99932623247737" : 359.595, - "99.99932992290982" : 359.599, - "99.99933466775153" : 359.601, - "99.99933677657006" : 359.603, - "99.99934257582105" : 359.607, - "99.99934521184421" : 359.609, - "99.99935311991372" : 359.611, - "99.99936050077861" : 359.613, - "99.99936471841568" : 359.617, - "99.99937209928056" : 359.621, - "99.99937526250837" : 359.623, - "99.99938106175935" : 359.627, - "99.99938369778252" : 359.629, - "99.99938633380569" : 359.631, - "99.99939213305666" : 359.635, - "99.99939371467057" : 359.637, - "99.99939740510301" : 359.641, - "99.99940162274008" : 359.645, - "99.99940584037715" : 359.647, - "99.99941163962814" : 359.651, - "99.99941374844667" : 359.653, - "99.99941638446984" : 359.655, - "99.99942376533473" : 359.659, - "99.99942534694863" : 359.661, - "99.99942851017643" : 359.665, - "99.99943220060887" : 359.669, - "99.99943589104132" : 359.673, - "99.99943958147375" : 359.677, - "99.99944485352009" : 359.683, - "99.99944696233862" : 359.685, - "99.99945117997571" : 359.691, - "99.99945539761278" : 360.037, - "99.99945856084058" : 360.041, - "99.99946225127303" : 360.447, - "99.9994664689101" : 360.451, - "99.9994712137518" : 360.455, - "99.99947543138889" : 360.457, - "99.99947859461669" : 360.459, - "99.99948544827693" : 360.463, - "99.99949177473255" : 360.465, - "99.99949757398352" : 360.467, - "99.9995017916206" : 360.471, - "99.99950442764377" : 360.473, - "99.99951075409938" : 360.477, - "99.99951339012254" : 360.479, - "99.99951655335036" : 360.481, - "99.99952129819206" : 360.485, - "99.9995249886245" : 360.487, - "99.99952815185232" : 360.489, - "99.99953131508012" : 360.491, - "99.99953500551256" : 360.495, - "99.99953922314963" : 360.499, - "99.99954502240061" : 360.503, - "99.99954818562841" : 360.505, - "99.99955187606085" : 360.507, - "99.99955503928867" : 360.509, - "99.9995587297211" : 360.513, - "99.99956136574427" : 360.515, - "99.99956611058597" : 360.519, - "99.99957349145086" : 360.523, - "99.9995771818833" : 360.525, - "99.99958192672501" : 360.529, - "99.99958508995282" : 360.531, - "99.99958983479452" : 360.535, - "99.9995940524316" : 360.537, - "99.9995972156594" : 360.539, - "99.99960037888721" : 360.541, - "99.99960459652428" : 360.543, - "99.99960828695673" : 360.545, - "99.99961145018453" : 360.547, - "99.99961672223087" : 360.551, - "99.9996188310494" : 360.553, - "99.99962357589112" : 360.555, - "99.99962832073282" : 360.557, - "99.999630956756" : 360.559, - "99.99963411998381" : 360.561, - "99.99963728321161" : 360.563, - "99.99963991923478" : 360.565, - "99.99964255525795" : 360.567, - "99.99964466407648" : 360.569, - "99.99964624569039" : 360.571, - "99.9996494089182" : 360.573, - "99.9996509905321" : 360.575, - "99.99965362655527" : 360.577, - "99.99965626257844" : 360.579, - "99.99965837139698" : 360.581, - "99.99966048021552" : 360.583, - "99.9996631162387" : 360.585, - "99.9996678610804" : 360.587, - "99.9996726059221" : 360.589, - "99.99967629635455" : 360.591, - "99.99967893237772" : 360.593, - "99.99968156840089" : 360.595, - "99.99968367721942" : 360.597, - "99.99968684044724" : 360.601, - "99.99968894926577" : 360.603, - "99.99969211249358" : 360.605, - "99.99969474851675" : 360.607, - "99.99969738453991" : 360.609, - "99.99969949335845" : 360.611, - "99.99970212938163" : 360.613, - "99.99970371099553" : 360.615, - "99.99970581981407" : 360.617, - "99.99970845583724" : 360.619, - "99.99971161906504" : 360.621, - "99.99971425508822" : 360.623, - "99.99971689111139" : 360.625, - "99.99972058154383" : 360.627, - "99.99972374477163" : 360.629, - "99.99972690799945" : 360.631, - "99.99972954402261" : 360.633, - "99.99973218004578" : 360.635, - "99.99973428886432" : 360.637, - "99.99973639768285" : 360.639, - "99.99973956091065" : 360.641, - "99.99974219693384" : 360.643, - "99.99974536016164" : 360.645, - "99.99974799618481" : 360.647, - "99.99975010500334" : 360.649, - "99.99975484984506" : 360.651, - "99.99975906748213" : 360.653, - "99.99976433952847" : 360.655, - "99.99976802996092" : 360.657, - "99.99977172039335" : 360.659, - "99.99977646523506" : 360.661, - "99.99978173728141" : 360.663, - "99.99978437330458" : 360.665, - "99.99978700932775" : 360.667, - "99.99978911814628" : 360.669, - "99.99979069976018" : 360.671, - "99.99979280857872" : 360.673, - "99.99979491739727" : 360.675, - "99.99979755342044" : 360.677, - "99.99979966223897" : 360.679, - "99.99980071664824" : 360.681, - "99.9998033526714" : 360.685, - "99.99980546148994" : 360.687, - "99.99980757030849" : 360.689, - "99.99980967912703" : 360.691, - "99.99981178794556" : 360.693, - "99.9998138967641" : 360.695, - "99.99981600558263" : 360.697, - "99.99981811440117" : 360.699, - "99.99982022321971" : 360.701, - "99.99982285924288" : 360.703, - "99.99982444085678" : 360.705, - "99.99982654967532" : 360.707, - "99.99982918569849" : 360.709, - "99.99983076731239" : 360.711, - "99.99983234892629" : 360.713, - "99.99983445774484" : 360.715, - "99.99983709376801" : 360.717, - "99.99983920258654" : 360.719, - "99.99984078420044" : 360.721, - "99.99984289301898" : 360.723, - "99.99984500183751" : 360.725, - "99.99984711065606" : 360.727, - "99.99984869226996" : 360.729, - "99.9998508010885" : 360.731, - "99.99985290990703" : 360.733, - "99.99985501872557" : 360.735, - "99.99985765474874" : 360.737, - "99.99985976356727" : 360.739, - "99.99986187238582" : 360.741, - "99.99986398120436" : 360.743, - "99.99986714443216" : 360.745, - "99.9998692532507" : 360.747, - "99.99987136206923" : 360.749, - "99.99987294368313" : 360.757, - "99.99987505250168" : 360.759, - "99.99987716132021" : 360.761, - "99.99987927013875" : 360.763, - "99.99988085175265" : 360.765, - "99.99988296057118" : 360.767, - "99.99988506938972" : 360.769, - "99.99988717820827" : 360.771, - "99.99989192304997" : 360.773, - "99.99989614068704" : 360.775, - "99.9999014127334" : 360.777, - "99.9999045759612" : 360.779, - "99.9999061575751" : 360.781, - "99.99990879359827" : 360.783, - "99.9999109024168" : 360.785, - "99.99991301123534" : 360.787, - "99.99991564725852" : 360.789, - "99.99991828328169" : 360.791, - "99.99991986489559" : 360.793, - "99.9999261913512" : 360.795, - "99.99992988178364" : 360.797, - "99.99993409942071" : 360.799, - "99.99993726264852" : 360.801, - "99.99994200749023" : 360.803, - "99.99994517071804" : 360.805, - "99.9999478067412" : 360.807, - "99.99994991555974" : 360.809, - "99.99995360599219" : 360.811, - "99.99995887803853" : 360.813, - "99.9999630956756" : 360.815, - "99.99996573169877" : 360.817, - "99.99996784051731" : 360.819, - "99.99997100374512" : 360.821, - "99.99997416697292" : 360.823, - "99.99997891181462" : 360.825, - "99.99998471106561" : 360.827, - "99.99998998311194" : 360.829, - "99.99999314633975" : 360.831, - "99.99999630956756" : 360.833, - "99.99999894559073" : 360.835, - "99.99999947279537" : 369.977, - "100.0" : 374.879 - }, - "endToEndLatencyAvg" : [ 354.82088229486305, 350.04715541228035, 358.061402605532, 356.48471652637545, 357.67503693215076, 357.30857610569313, 355.1642711129127, 361.5971594667902, 358.85180886880795, 357.03656889043884, 353.12577205615156, 365.821619470342, 374.1563856199302, 365.9980571695218, 387.12396566656366, 375.54900743922013, 375.2712957962545, 374.03500059862296, 380.87055665609796, 378.0787200901685, 378.86326841131796, 374.7973664564129, 378.8433271976067, 378.19711142090915, 373.936951363364, 379.0020248677707, 378.34611063525693, 371.31109331677374, 378.2344234223419, 371.7402393692417, 372.6940299468847, 367.3924672333612, 380.1857960360996, 375.1060657001118, 374.1288217388799, 375.2116204269227, 374.3187671187238, 376.7306190416728, 375.27839448080726, 376.61053795827814, 377.7842774727789, 371.7076845797964, 382.91203996436064, 372.42581289052475, 390.962442162707, 375.92440138514326, 366.83427987465046, 386.08980117466484, 376.66051339672583, 388.2489521042181, 371.97110424805777, 376.7127622787086, 385.4959347411811, 373.8024700754445, 378.6873263843486, 376.7010378454308, 379.92633013035464, 375.0094914649074, 374.82231076536544, 373.92846815427737 ], - "endToEndLatency50pct" : [ 336.001, 337.001, 340.001, 340.001, 342.001, 341.001, 340.001, 345.001, 342.001, 337.001, 337.001, 349.001, 356.001, 349.001, 366.001, 354.001, 360.001, 354.001, 360.001, 358.001, 355.001, 358.001, 360.001, 359.001, 355.001, 359.001, 360.001, 352.001, 359.001, 354.001, 356.001, 351.001, 358.001, 353.001, 352.001, 354.001, 355.001, 358.001, 359.001, 357.001, 363.001, 356.001, 362.001, 356.001, 369.001, 357.001, 350.001, 364.001, 358.001, 367.001, 355.001, 358.001, 366.001, 353.001, 356.001, 356.001, 361.001, 354.001, 352.001, 354.001 ], - "endToEndLatency75pct" : [ 421.001, 416.001, 425.001, 421.001, 420.001, 425.001, 424.001, 425.001, 428.001, 425.001, 420.001, 437.001, 451.001, 435.001, 458.001, 453.001, 448.001, 445.001, 455.001, 455.001, 461.001, 444.001, 458.001, 453.001, 450.001, 457.001, 454.001, 446.001, 451.001, 445.001, 446.001, 434.001, 456.001, 446.001, 444.001, 452.001, 446.001, 451.001, 442.001, 448.001, 451.001, 441.001, 456.001, 445.001, 465.001, 447.001, 434.001, 465.001, 449.001, 463.001, 446.001, 451.001, 468.001, 449.001, 454.001, 454.001, 457.001, 450.001, 450.001, 445.001 ], - "endToEndLatency95pct" : [ 580.003, 565.003, 586.003, 582.003, 585.003, 586.003, 574.003, 599.003, 574.003, 595.003, 588.003, 602.003, 605.003, 581.003, 648.003, 616.003, 605.003, 609.003, 620.003, 617.003, 628.003, 605.003, 625.003, 607.003, 609.003, 607.003, 625.003, 606.003, 608.003, 608.003, 599.003, 598.003, 621.003, 621.003, 622.003, 607.003, 613.003, 614.003, 598.003, 621.003, 613.003, 607.003, 624.003, 606.003, 644.003, 609.003, 592.003, 635.003, 620.003, 640.003, 596.003, 617.003, 619.003, 618.003, 629.003, 625.003, 622.003, 615.003, 622.003, 637.003 ], - "endToEndLatency99pct" : [ 684.003, 640.003, 685.003, 730.003, 689.003, 674.003, 662.003, 697.003, 663.003, 707.003, 669.003, 686.003, 700.003, 659.003, 749.003, 699.003, 683.003, 703.003, 720.003, 709.003, 718.003, 684.003, 711.003, 696.003, 690.003, 699.003, 716.003, 690.003, 707.003, 690.003, 697.003, 687.003, 709.003, 737.003, 714.003, 699.003, 700.003, 710.003, 706.003, 718.003, 709.003, 683.003, 704.003, 706.003, 754.003, 698.003, 677.003, 757.003, 698.003, 735.003, 681.003, 695.003, 714.003, 725.003, 720.003, 739.003, 712.003, 703.003, 719.003, 747.003 ], - "endToEndLatency999pct" : [ 852.003, 717.003, 791.003, 962.003, 815.003, 764.003, 765.003, 796.003, 737.003, 808.003, 769.003, 791.003, 797.003, 735.003, 830.003, 797.003, 786.003, 789.003, 835.003, 778.003, 820.003, 747.003, 761.003, 857.003, 840.003, 793.003, 795.003, 751.003, 827.003, 831.003, 777.003, 793.003, 802.003, 881.003, 850.003, 816.003, 792.003, 789.003, 931.003, 876.003, 777.003, 755.003, 819.003, 776.003, 920.003, 785.003, 732.003, 965.003, 799.003, 867.003, 765.003, 780.003, 902.003, 826.003, 832.003, 867.003, 783.003, 760.003, 813.003, 848.003 ], - "endToEndLatency9999pct" : [ 908.003, 761.003, 854.003, 1030.003, 842.003, 822.003, 821.003, 822.003, 759.003, 851.003, 802.003, 837.003, 845.003, 792.003, 866.003, 870.003, 822.003, 812.003, 876.003, 832.003, 902.003, 774.003, 777.003, 902.003, 907.003, 858.003, 862.003, 774.003, 867.003, 910.003, 819.003, 836.003, 836.003, 902.003, 922.003, 850.003, 837.003, 827.003, 999.003, 918.003, 808.003, 837.003, 865.003, 797.003, 990.003, 819.003, 751.003, 1019.003, 824.003, 946.003, 810.003, 834.003, 978.003, 880.003, 873.003, 936.003, 842.003, 786.003, 840.003, 896.003 ], - "endToEndLatencyMax" : [ 913.003, 771.003, 857.003, 1039.003, 844.003, 828.003, 827.003, 836.003, 773.003, 853.003, 812.003, 851.003, 847.003, 802.003, 876.003, 876.003, 831.003, 815.003, 892.003, 841.003, 908.003, 777.003, 783.003, 910.003, 916.003, 877.003, 872.003, 780.003, 876.003, 917.003, 829.003, 846.003, 842.003, 910.003, 932.003, 855.003, 844.003, 833.003, 1008.003, 928.003, 813.003, 847.003, 871.003, 803.003, 999.003, 825.003, 759.003, 1033.003, 829.003, 957.003, 819.003, 835.003, 988.003, 887.003, 883.003, 942.003, 848.003, 789.003, 845.003, 903.003 ], - "aggregatedEndToEndLatencyQuantiles" : { - "8.43567511962789E-6" : 17.0, - "0.5084766619561154" : 91.0, - "1.0006234385697161" : 142.0, - "1.5120462600613616" : 161.0, - "2.0172888950684897" : 172.0, - "2.510737401798988" : 180.0, - "3.068728840558844" : 187.0, - "3.5414519479798066" : 192.0, - "4.109075873266888" : 197.0, - "4.628874265692934" : 201.0, - "5.060388572924819" : 204.0, - "5.519734281295137" : 207.0, - "6.029124632312647" : 210.0, - "6.579300418074168" : 213.0, - "7.156823080884437" : 216.0, - "7.549098845297373" : 218.0, - "8.188333216674977" : 221.0, - "8.619513787509941" : 223.0, - "9.07046178129867" : 225.0, - "9.527000518772931" : 227.0, - "10.240106097173115" : 230.0, - "10.728750486922985" : 232.0, - "11.237095341455356" : 234.0, - "11.74683577299033" : 236.0, - "12.003320366083837" : 237.0, - "12.527765233811714" : 239.0, - "13.055726196375389" : 241.0, - "13.60147905222575" : 243.0, - "14.159561701722836" : 245.0, - "14.714275353469024" : 247.0, - "15.276302735543926" : 249.0, - "15.562013252319078" : 250.0, - "16.1173843594949" : 252.0, - "16.681858087354495" : 254.0, - "17.252335906980484" : 256.0, - "17.5494904715148" : 257.0, - "18.139604961130203" : 259.0, - "18.721083955571576" : 261.0, - "19.009179659486804" : 262.0, - "19.59031226401858" : 264.001, - "20.182134977845703" : 266.001, - "20.76527210967778" : 268.001, - "21.055843684240617" : 269.001, - "21.65710750021569" : 271.001, - "22.24860438609132" : 273.001, - "22.552290272087006" : 274.001, - "23.15189858681985" : 276.001, - "23.75748199568587" : 278.001, - "24.054042372353948" : 279.001, - "24.677348607416608" : 281.001, - "25.298326068916555" : 283.001, - "25.602754821552466" : 284.001, - "26.224903260204957" : 286.001, - "26.540032666730117" : 287.001, - "27.177030002511934" : 289.001, - "27.81187782282733" : 291.001, - "28.12873337937384" : 292.001, - "28.77303231920139" : 294.001, - "29.102680049837126" : 295.001, - "29.76077711801191" : 297.001, - "30.090527658438166" : 298.001, - "30.77550236923317" : 300.001, - "31.107455675325035" : 301.001, - "31.78497852161124" : 303.001, - "32.13183186611285" : 304.001, - "32.81924448701742" : 306.001, - "33.163660975868844" : 307.001, - "33.50922946160379" : 308.001, - "34.21513993635663" : 310.001, - "34.5621957370611" : 311.001, - "35.275139983174626" : 313.001, - "35.63514929025499" : 314.001, - "36.34548216768928" : 316.001, - "36.70255006030137" : 317.001, - "37.05742784076052" : 318.001, - "37.77890160887937" : 320.001, - "38.14423171804144" : 321.001, - "38.50854111051403" : 322.001, - "39.25138771600785" : 324.001, - "39.61617583304348" : 325.001, - "40.35264454091717" : 327.001, - "40.719902729073766" : 328.001, - "41.08858074679893" : 329.001, - "41.829354285132105" : 331.001, - "42.19724725784145" : 332.001, - "42.56328438202448" : 333.001, - "43.308592095734454" : 335.001, - "43.6809354142991" : 336.001, - "44.048873201532516" : 337.001, - "44.77903307887611" : 339.001, - "45.14416864028073" : 340.001, - "45.51566417349586" : 341.001, - "46.25756914675445" : 343.001, - "46.62022356521451" : 344.001, - "47.354154189336576" : 346.001, - "47.71656133706969" : 347.001, - "48.075903698585904" : 348.001, - "48.80654177326284" : 350.001, - "49.17727229619056" : 351.001, - "49.536881963162124" : 352.001, - "50.26263156410724" : 354.001, - "50.62154423342205" : 355.001, - "50.97529216064486" : 356.001, - "51.33707928625668" : 357.001, - "51.69403171556557" : 358.001, - "52.04705312026871" : 359.001, - "52.40092494646984" : 360.001, - "52.7538915192847" : 361.001, - "53.105002243573246" : 362.001, - "53.44474642286778" : 363.001, - "53.78957573257037" : 364.001, - "54.124849004051505" : 365.001, - "54.46971943767031" : 366.001, - "54.80865484661275" : 367.001, - "55.15065135116423" : 368.001, - "55.48342397220209" : 369.001, - "55.81902412609411" : 370.001, - "56.155586474179465" : 371.001, - "56.48381173909815" : 372.001, - "56.80843338905167" : 373.001, - "57.13421125372628" : 374.001, - "57.46058330626712" : 375.001, - "57.784999863869295" : 376.001, - "58.106256206679774" : 377.001, - "58.42170880500796" : 378.001, - "58.73512840563231" : 379.001, - "59.05019296290498" : 380.001, - "59.358174716455345" : 381.001, - "59.66428638627762" : 382.001, - "59.97026835759493" : 383.001, - "60.27409237777071" : 384.001, - "60.58017241381128" : 385.001, - "60.87789954979434" : 386.001, - "61.176812952591106" : 387.001, - "61.47597626226328" : 388.001, - "61.77034494508934" : 389.001, - "62.0652071149099" : 390.001, - "62.354890307436705" : 391.001, - "62.64452604929096" : 392.001, - "62.93675787016328" : 393.001, - "63.22326713992632" : 394.001, - "63.504197265057115" : 395.001, - "63.78721363809094" : 396.001, - "64.06903267248747" : 397.001, - "64.34732243130581" : 398.001, - "64.62175814105389" : 399.001, - "64.89426577180744" : 400.001, - "65.16649607974142" : 401.001, - "65.42998808271086" : 402.001, - "65.6955484077737" : 403.001, - "65.95409657789335" : 404.001, - "66.21651461397413" : 405.001, - "66.47128149272139" : 406.001, - "66.72698209525846" : 407.001, - "66.98543272788454" : 408.001, - "67.23379692921601" : 409.001, - "67.48375916375296" : 410.001, - "67.73378308416423" : 411.001, - "67.97950481026447" : 412.001, - "68.22133241783763" : 413.001, - "68.46364771287864" : 414.001, - "68.70556705841872" : 415.001, - "68.9454491884174" : 416.001, - "69.18141452901212" : 417.001, - "69.41378679923555" : 418.001, - "69.65267404679982" : 419.001, - "69.88883604407076" : 420.001, - "70.1198222274261" : 421.001, - "70.34518023378756" : 422.001, - "70.57071960716411" : 423.001, - "70.79650203343003" : 424.001, - "71.02308426714323" : 425.001, - "71.464907496601" : 427.001, - "71.67914201085786" : 428.001, - "71.89343557484054" : 429.001, - "72.10426207634906" : 430.001, - "72.31537011851469" : 431.001, - "72.52459964127713" : 432.001, - "72.9374658341977" : 434.001, - "73.1380498444219" : 435.001, - "73.34093732118346" : 436.001, - "73.53685113076956" : 437.001, - "73.93216110207709" : 439.001, - "74.12917787618508" : 440.001, - "74.32037508891993" : 441.001, - "74.51131448633392" : 442.001, - "74.88662083578434" : 444.001, - "75.07314204835443" : 445.001, - "75.25435827573367" : 446.001, - "75.43562511716362" : 447.001, - "75.61641165234145" : 448.001, - "75.79577255842406" : 449.001, - "75.9770842143781" : 450.001, - "76.15223466411662" : 451.001, - "76.33078890876591" : 452.001, - "76.50337807664624" : 453.001, - "76.6744324788845" : 454.001, - "76.84469656380999" : 455.001, - "77.01411549953443" : 456.001, - "77.18572823801966" : 457.001, - "77.35611727638285" : 458.001, - "77.52179129958387" : 459.001, - "77.69256152501653" : 460.001, - "77.85448430893778" : 461.001, - "78.01955781751623" : 462.001, - "78.18071137331252" : 463.001, - "78.33809840016788" : 464.001, - "78.49771560863302" : 465.001, - "78.65573425666297" : 466.001, - "78.80904316182769" : 467.001, - "78.96427961875726" : 468.001, - "79.12488854627863" : 469.001, - "79.28032007819533" : 470.001, - "79.43341387364451" : 471.001, - "79.58881798961707" : 472.001, - "79.73996208965423" : 473.001, - "79.89751783001199" : 474.001, - "80.04952078722226" : 475.001, - "80.20238734667291" : 476.001, - "80.35304165032342" : 477.001, - "80.5002172924465" : 478.001, - "80.65095806176699" : 479.001, - "80.79916285625464" : 480.001, - "80.94811948028733" : 481.001, - "81.09073300385977" : 482.001, - "81.23466196552116" : 483.001, - "81.37926103612487" : 484.001, - "81.52397978786934" : 485.001, - "81.66702774871044" : 486.001, - "81.8082209154846" : 487.001, - "81.94883782020214" : 488.001, - "82.09333144486686" : 489.001, - "82.23491265269652" : 490.001, - "82.376304057836" : 491.001, - "82.51621500199198" : 492.001, - "82.64989936345029" : 493.001, - "82.78872263274552" : 494.001, - "82.92226042434862" : 495.001, - "83.05794614972906" : 496.001, - "83.19546083492136" : 497.001, - "83.3290481861158" : 498.001, - "83.46641788314199" : 499.001, - "83.60156267085537" : 500.001, - "83.7343945018969" : 501.001, - "83.86960308440338" : 502.001, - "83.99830723416294" : 503.001, - "84.1275871187494" : 504.001, - "84.25882038935576" : 505.001, - "84.38955595513005" : 506.001, - "84.51966675371581" : 507.001, - "84.65113885937399" : 508.001, - "84.78315190269922" : 509.001, - "84.90834944775747" : 510.001, - "85.03721176642551" : 511.001, - "85.16486514740298" : 512.001, - "85.29254067202764" : 513.001, - "85.4197938856666" : 514.001, - "85.54724955550846" : 515.001, - "85.67451542266012" : 516.001, - "85.79493995728976" : 517.001, - "85.91998355127708" : 518.001, - "86.04509463066537" : 519.001, - "86.17114154276224" : 520.001, - "86.29450327402259" : 521.001, - "86.4175961181385" : 522.001, - "86.546379879582" : 523.001, - "86.66448302186465" : 524.001, - "86.78776461421137" : 525.003, - "86.91144321051841" : 526.003, - "87.026435170371" : 527.003, - "87.14360353440446" : 528.003, - "87.26416356706572" : 529.003, - "87.38417580807388" : 530.003, - "87.50075420207867" : 531.003, - "87.61586320692355" : 532.003, - "87.73430430344068" : 533.003, - "87.84389479506824" : 534.003, - "87.95587732782191" : 535.003, - "88.07499275111893" : 536.003, - "88.19181156186461" : 537.003, - "88.30113053019926" : 538.003, - "88.41465099197318" : 539.003, - "88.5261980329988" : 540.003, - "88.64153216492343" : 541.003, - "88.75204689020629" : 542.003, - "88.86054179852769" : 543.003, - "88.97554588466328" : 544.003, - "89.08768236848788" : 545.003, - "89.19752487590964" : 546.003, - "89.30636037461399" : 547.003, - "89.41393315819887" : 548.003, - "89.52317884160593" : 549.003, - "89.63211345949293" : 550.003, - "89.74327193223336" : 551.003, - "89.85050517989467" : 552.003, - "89.95534533197049" : 553.003, - "90.06011167188902" : 554.003, - "90.16552386818388" : 555.003, - "90.27151232653537" : 556.003, - "90.37399576187464" : 557.003, - "90.47505989487505" : 558.003, - "90.57725599003055" : 559.003, - "90.67548679065014" : 560.003, - "90.77651665372036" : 561.003, - "90.8800012982504" : 562.003, - "90.98260230581165" : 563.003, - "91.08364376793517" : 564.003, - "91.18105472637907" : 565.003, - "91.27954281508981" : 566.003, - "91.37671230233342" : 567.003, - "91.47769629642018" : 568.003, - "91.57245792564682" : 569.003, - "91.66851917607158" : 570.003, - "91.76403210761357" : 571.003, - "91.8605161962537" : 572.003, - "91.9574341949328" : 573.003, - "92.05183625350747" : 574.003, - "92.14486856933459" : 575.003, - "92.23591428367105" : 576.003, - "92.3287114550542" : 577.003, - "92.4223021071283" : 578.003, - "92.51358718374628" : 579.003, - "92.60346613876774" : 580.003, - "92.69193422712544" : 581.003, - "92.78268943789996" : 582.003, - "92.87168422872296" : 583.003, - "92.96207301485946" : 584.003, - "93.05175794935317" : 585.003, - "93.13634931776372" : 586.003, - "93.22693476057646" : 587.003, - "93.31373891201682" : 588.003, - "93.40296146606804" : 589.003, - "93.4883062457127" : 590.003, - "93.5728290742629" : 591.003, - "93.65483912608683" : 592.003, - "93.73746814557268" : 593.003, - "93.82040032213312" : 594.003, - "93.90207347418198" : 595.003, - "93.98441146287618" : 596.003, - "94.06536600085079" : 597.003, - "94.14214857024902" : 598.003, - "94.22258325974437" : 599.003, - "94.30118740773875" : 600.003, - "94.38088186674236" : 601.003, - "94.4598165877555" : 602.003, - "94.53408743488687" : 603.003, - "94.61134292932151" : 604.003, - "94.68615629580901" : 605.003, - "94.76080094879413" : 606.003, - "94.83158944379018" : 607.003, - "94.90097234441942" : 608.003, - "94.97295079683704" : 609.003, - "95.04148011259011" : 610.003, - "95.11368896438444" : 611.003, - "95.18256256112834" : 612.003, - "95.25076973953777" : 613.003, - "95.32230373732253" : 614.003, - "95.38785315083959" : 615.003, - "95.45373102845663" : 616.003, - "95.5208964009888" : 617.003, - "95.58597236223979" : 618.003, - "95.65083057762673" : 619.003, - "95.71390939279314" : 620.003, - "95.77881136824479" : 621.003, - "95.84286397665781" : 622.003, - "95.90346059442027" : 623.003, - "95.96544277182113" : 624.003, - "96.02305843288818" : 625.003, - "96.08553515174293" : 626.003, - "96.14485850979202" : 627.003, - "96.20411332798076" : 628.003, - "96.26385688809674" : 629.003, - "96.31733485051763" : 630.003, - "96.37518196542078" : 631.003, - "96.43239587746027" : 632.003, - "96.4880824050734" : 633.003, - "96.54727606461752" : 634.003, - "96.59958146819677" : 635.003, - "96.65427100445672" : 636.003, - "96.70757603553764" : 637.003, - "96.75887548485888" : 638.003, - "96.81313005662047" : 639.003, - "96.86282145537201" : 640.003, - "96.91563985344449" : 641.003, - "96.96775229095537" : 642.003, - "97.01841484680509" : 643.003, - "97.06766126369408" : 644.003, - "97.11361302221917" : 645.003, - "97.15701246179087" : 646.003, - "97.20160027709505" : 647.003, - "97.24849261339598" : 648.003, - "97.29296865600483" : 649.003, - "97.33824239714218" : 650.003, - "97.38143358098436" : 651.003, - "97.42510401661929" : 652.003, - "97.46916354776911" : 653.003, - "97.5081142231746" : 654.003, - "97.54966308651694" : 655.003, - "97.58967454806873" : 656.003, - "97.62868163705157" : 657.003, - "97.66695218615055" : 658.003, - "97.706746429068" : 659.003, - "97.74515774849553" : 660.003, - "97.78238807340632" : 661.003, - "97.82069605581363" : 662.003, - "97.85707964983428" : 663.003, - "97.89542559277963" : 664.003, - "97.93059339512367" : 665.003, - "97.96574959841442" : 666.003, - "98.00273528874672" : 667.003, - "98.04010796567515" : 668.003, - "98.07434784375603" : 669.003, - "98.10444158751561" : 670.003, - "98.13678818376182" : 671.003, - "98.17080346199263" : 672.003, - "98.2055062477457" : 673.003, - "98.23603021093638" : 674.003, - "98.26352154892155" : 675.003, - "98.29269896747125" : 676.003, - "98.32494591730512" : 677.003, - "98.35630712125142" : 678.003, - "98.38593637564972" : 679.003, - "98.41489235772754" : 680.003, - "98.44158125211696" : 681.003, - "98.46966466904959" : 682.003, - "98.50047702688342" : 683.003, - "98.52711847060029" : 684.003, - "98.55510540449875" : 685.003, - "98.57954935484695" : 686.003, - "98.60671908271819" : 687.003, - "98.6340912667923" : 688.003, - "98.65802960386301" : 689.003, - "98.68348794414436" : 690.003, - "98.70809744461678" : 691.003, - "98.73205581641592" : 692.003, - "98.75559345891847" : 693.003, - "98.77691251886455" : 694.003, - "98.79846777771397" : 695.003, - "98.82152880457225" : 696.003, - "98.84185034593544" : 697.003, - "98.86387062137584" : 698.003, - "98.88584397337338" : 699.003, - "98.90656884545322" : 700.003, - "98.92767174122436" : 701.003, - "98.94681386975988" : 702.003, - "98.96818723436455" : 703.003, - "98.98738261309926" : 704.003, - "99.00654899420074" : 705.003, - "99.02599058920302" : 706.003, - "99.04437667035594" : 707.003, - "99.06404233797858" : 708.003, - "99.08213844279926" : 709.003, - "99.09958131002787" : 710.003, - "99.11703419462069" : 711.003, - "99.13511922761778" : 712.003, - "99.15262272626131" : 713.003, - "99.16924733300331" : 714.003, - "99.18527617019" : 715.003, - "99.20314872962001" : 716.003, - "99.21842573726165" : 717.003, - "99.23265988456664" : 718.003, - "99.24846781251114" : 719.003, - "99.26370844130382" : 720.003, - "99.27839495168709" : 721.003, - "99.29214931996965" : 722.003, - "99.30623215235217" : 723.003, - "99.3209766580019" : 724.003, - "99.3345892014965" : 725.003, - "99.34658420428691" : 726.003, - "99.35891241624455" : 727.003, - "99.3715854364227" : 728.003, - "99.38385301696543" : 729.003, - "99.39543098106712" : 730.003, - "99.4064321558825" : 731.003, - "99.41806653356156" : 732.003, - "99.42963131692088" : 733.003, - "99.44204335840001" : 734.003, - "99.45281887890594" : 735.003, - "99.46341145070772" : 736.003, - "99.47415955526952" : 737.003, - "99.48561678377106" : 738.003, - "99.49554399169777" : 739.003, - "99.5059109091901" : 740.003, - "99.51530245174672" : 741.003, - "99.52522333291711" : 742.003, - "99.53400381625724" : 743.003, - "99.5428876366176" : 744.003, - "99.55252803159026" : 745.003, - "99.56098163251951" : 746.003, - "99.56902399428668" : 747.003, - "99.57889584309542" : 748.003, - "99.58778177237457" : 749.003, - "99.59669037253059" : 750.003, - "99.60480601922536" : 751.003, - "99.61296648044421" : 752.003, - "99.62170373094938" : 753.003, - "99.63046312510171" : 754.003, - "99.63942128484906" : 755.003, - "99.6477304248419" : 756.003, - "99.6550146303077" : 757.003, - "99.66186387127514" : 758.003, - "99.66979656926576" : 759.003, - "99.67759271476538" : 760.003, - "99.6854721625568" : 761.003, - "99.6926419591788" : 762.003, - "99.69885008883715" : 763.003, - "99.70452360758479" : 764.003, - "99.71125264018178" : 765.003, - "99.71751929233628" : 766.003, - "99.72437696897885" : 767.003, - "99.7294288839161" : 768.003, - "99.73511452894674" : 769.003, - "99.74059508162601" : 770.003, - "99.7460561268066" : 771.003, - "99.75107588073246" : 772.003, - "99.75606927317358" : 773.003, - "99.76132364431372" : 774.003, - "99.76577768077689" : 775.003, - "99.77037090587953" : 776.003, - "99.77573230464775" : 777.003, - "99.78070039006352" : 778.003, - "99.78518026078173" : 779.003, - "99.78907332484944" : 780.003, - "99.79404668256215" : 781.003, - "99.79884500001613" : 782.003, - "99.80301644136279" : 783.003, - "99.8068462378671" : 784.003, - "99.81107409279112" : 785.003, - "99.81585975673242" : 786.003, - "99.81958937959469" : 787.003, - "99.82302375382777" : 788.003, - "99.82672596074589" : 789.003, - "99.83021885747512" : 790.003, - "99.8340507628982" : 791.003, - "99.83702750175604" : 792.003, - "99.83961936293655" : 793.003, - "99.84265462429053" : 794.003, - "99.84603943893228" : 795.003, - "99.84886697178644" : 796.003, - "99.85187903503385" : 797.003, - "99.85435806905963" : 798.003, - "99.85750141250108" : 799.003, - "99.86020082853936" : 800.003, - "99.8625570180462" : 801.003, - "99.86564447513999" : 802.003, - "99.86807025896658" : 803.003, - "99.87099058424705" : 804.003, - "99.87327085267783" : 805.003, - "99.87569083697777" : 806.003, - "99.87798006831336" : 807.003, - "99.88034258457655" : 808.003, - "99.88293233683828" : 809.003, - "99.88509608750647" : 810.003, - "99.88757301261346" : 811.003, - "99.89002199454663" : 812.003, - "99.89249997411302" : 813.003, - "99.89456513282825" : 814.003, - "99.8962280152862" : 815.003, - "99.89813078725537" : 816.003, - "99.9003641322433" : 817.003, - "99.90271241330473" : 818.003, - "99.90487510951351" : 819.003, - "99.90681109695348" : 820.003, - "99.90867907176278" : 821.003, - "99.91075108446404" : 822.003, - "99.91256317292567" : 823.003, - "99.91406472309696" : 824.003, - "99.91546926300438" : 825.003, - "99.91688961980265" : 826.003, - "99.91866374772624" : 827.003, - "99.92040255126028" : 828.003, - "99.9216705386767" : 829.003, - "99.92341935957494" : 830.003, - "99.92511334858489" : 831.003, - "99.92702771960735" : 832.003, - "99.92827830844384" : 833.003, - "99.92954893200873" : 834.003, - "99.93082746401905" : 835.003, - "99.93234272216242" : 836.003, - "99.93384058172585" : 837.003, - "99.93486340733409" : 838.003, - "99.9361023971173" : 839.003, - "99.93733558737384" : 840.003, - "99.93893889287627" : 841.003, - "99.94053007209571" : 842.003, - "99.94167416053381" : 843.003, - "99.9426505899289" : 844.003, - "99.94401242423103" : 845.003, - "99.9454744321752" : 846.003, - "99.9464608789345" : 847.003, - "99.94749477636636" : 848.003, - "99.94868104318004" : 849.003, - "99.95015412294781" : 850.003, - "99.95131930057372" : 851.003, - "99.95232736375051" : 852.003, - "99.9535041404297" : 853.003, - "99.95443944590859" : 854.003, - "99.95600584533236" : 855.003, - "99.95697594797112" : 856.003, - "99.95785167649447" : 857.003, - "99.95884339555073" : 858.003, - "99.95982667893186" : 859.003, - "99.96056480050483" : 860.003, - "99.96126970660701" : 861.003, - "99.96222715573309" : 862.003, - "99.96313768141631" : 863.003, - "99.96363749516715" : 864.003, - "99.96437350782134" : 865.003, - "99.96508315899078" : 866.003, - "99.9656994905042" : 867.003, - "99.96625044553545" : 868.003, - "99.96693320799045" : 869.003, - "99.96755217565236" : 870.003, - "99.96811209358842" : 871.003, - "99.9688069823264" : 872.003, - "99.96943544012281" : 873.003, - "99.96968692868731" : 874.003, - "99.9701387645359" : 875.003, - "99.97100869353262" : 876.003, - "99.97150903451315" : 877.003, - "99.97182431787074" : 878.003, - "99.97216701717248" : 879.003, - "99.97252711505415" : 880.003, - "99.97342340553561" : 881.003, - "99.9739074023956" : 882.003, - "99.97415783650071" : 883.003, - "99.97444939452204" : 884.003, - "99.97488014118284" : 885.003, - "99.97540104412147" : 886.003, - "99.9759846873938" : 887.003, - "99.9762066510954" : 888.003, - "99.97640067162314" : 889.003, - "99.97677025963932" : 890.003, - "99.9770670899576" : 891.003, - "99.97759062904471" : 892.003, - "99.9776850031601" : 893.003, - "99.97793912787309" : 894.003, - "99.9783366590631" : 895.003, - "99.97882065592309" : 896.003, - "99.97928725420314" : 897.003, - "99.97950605452655" : 898.003, - "99.97984137261257" : 899.003, - "99.98054469702566" : 900.003, - "99.9810018051712" : 901.003, - "99.98152270810985" : 902.003, - "99.9818638257225" : 903.003, - "99.9822835005597" : 904.003, - "99.98282971052369" : 905.003, - "99.98332688812606" : 906.003, - "99.98378610519038" : 907.003, - "99.98396747220545" : 908.003, - "99.98426852036128" : 909.003, - "99.98478204208419" : 910.003, - "99.98519486293536" : 911.003, - "99.98561611946164" : 912.003, - "99.98585811789164" : 913.003, - "99.98604897504121" : 914.003, - "99.9863763846818" : 915.003, - "99.98668850466123" : 916.003, - "99.98696793639957" : 917.003, - "99.98718884564175" : 918.003, - "99.98749305717577" : 920.003, - "99.98764384486853" : 921.003, - "99.9879723089685" : 922.003, - "99.98819690881855" : 923.003, - "99.98849373913683" : 924.003, - "99.98894399329633" : 925.003, - "99.98910848896116" : 926.003, - "99.98936577705231" : 927.003, - "99.98942904461572" : 928.003, - "99.98968106040992" : 929.003, - "99.9899773634985" : 930.003, - "99.99006646531694" : 931.003, - "99.99039809279509" : 932.003, - "99.99044501623794" : 933.003, - "99.99061109359185" : 934.003, - "99.99085256479215" : 935.003, - "99.99098068160804" : 936.003, - "99.99118841010785" : 937.003, - "99.99135079685391" : 938.003, - "99.99151476528904" : 939.003, - "99.991644463794" : 940.003, - "99.9917599270972" : 941.003, - "99.99204041329493" : 942.003, - "99.99234198868047" : 943.003, - "99.99254339042395" : 944.003, - "99.99264620021447" : 945.003, - "99.99275006446437" : 946.003, - "99.99283811182343" : 947.003, - "99.99292984979036" : 948.003, - "99.99298573613802" : 950.003, - "99.99318239281426" : 951.003, - "99.99328889321264" : 953.003, - "99.9933563786136" : 956.003, - "99.9936605901476" : 957.003, - "99.99382350412334" : 958.003, - "99.99390575195577" : 959.003, - "99.99394845756106" : 960.003, - "99.99396058384404" : 961.003, - "99.9942168174758" : 962.003, - "99.99446936049969" : 963.003, - "99.9946886880528" : 964.003, - "99.99483578513771" : 965.003, - "99.99488587195873" : 966.003, - "99.99503033289515" : 967.003, - "99.99519641024906" : 968.003, - "99.99538041341262" : 969.003, - "99.99550536685032" : 970.003, - "99.99552171097086" : 971.003, - "99.99560975832993" : 972.003, - "99.9957700361572" : 973.003, - "99.99585122953023" : 974.003, - "99.99594349472684" : 976.003, - "99.99615333214545" : 977.003, - "99.99633891699808" : 978.003, - "99.99637265969857" : 980.003, - "99.99658460603594" : 981.003, - "99.99684558473496" : 982.003, - "99.99692308750012" : 983.003, - "99.99696157526785" : 984.003, - "99.9970617489099" : 985.003, - "99.99733221774342" : 986.003, - "99.99739284915835" : 987.003, - "99.99744029983088" : 988.003, - "99.99752992887903" : 989.003, - "99.99770813251594" : 990.003, - "99.99785364791175" : 991.003, - "99.99797649243068" : 993.003, - "99.99808246559937" : 994.003, - "99.99823588944061" : 995.003, - "99.99829388470705" : 997.003, - "99.99835873395953" : 998.003, - "99.99848210570816" : 999.003, - "99.99857911597203" : 1000.003, - "99.99868456191103" : 1001.003, - "99.99869299758615" : 1002.003, - "99.9987504656229" : 1003.003, - "99.99881056980813" : 1004.003, - "99.99890336223444" : 1005.003, - "99.99891548851743" : 1006.003, - "99.998919706355" : 1007.003, - "99.99893183263798" : 1008.003, - "99.9989608302712" : 1009.003, - "99.99902884290185" : 1010.003, - "99.9990341151988" : 1011.003, - "99.99908841985739" : 1012.003, - "99.99913217992207" : 1013.003, - "99.99921337329509" : 1014.003, - "99.99921495498418" : 1015.003, - "99.99925238829252" : 1016.003, - "99.99934992578609" : 1017.003, - "99.99941688395735" : 1018.003, - "99.99946907969716" : 1019.003, - "99.99947856983167" : 1020.003, - "99.9995697805689" : 1021.003, - "99.99958401577067" : 1022.003, - "99.99959825097243" : 1023.003, - "99.9996003598912" : 1024.003, - "99.99968155326424" : 1025.003, - "99.9996841894127" : 1026.003, - "99.99968998893935" : 1028.003, - "99.99970053353326" : 1029.003, - "99.9997796179875" : 1030.003, - "99.99978805366261" : 1031.003, - "99.99988295500772" : 1032.003, - "99.99988822730467" : 1033.003, - "99.99996573006983" : 1034.003, - "99.99997047513708" : 1035.003, - "99.99997416574494" : 1037.003, - "99.99997943804189" : 1038.003, - "100.0" : 1039.003 - }, - "aggregatedEndToEndLatencyAvg" : 372.7430884688423, - "aggregatedEndToEndLatency50pct" : 354.001, - "aggregatedEndToEndLatency75pct" : 445.001, - "aggregatedEndToEndLatency95pct" : 610.003, - "aggregatedEndToEndLatency99pct" : 705.003, - "aggregatedEndToEndLatency999pct" : 817.003, - "aggregatedEndToEndLatency9999pct" : 931.003, - "aggregatedEndToEndLatencyMax" : 1039.003 -} \ No newline at end of file diff --git a/blog/results/pulsar/throughput/default-sync-raid0.json b/blog/results/pulsar/throughput/default-sync-raid0.json deleted file mode 100644 index 986bab5a..00000000 --- a/blog/results/pulsar/throughput/default-sync-raid0.json +++ /dev/null @@ -1,3361 +0,0 @@ -{ - "workload" : "100-partitions-500K-rate-4-producer", - "driver" : "Pulsar", - "publishRate" : [ 318848.46943582286, 308180.4421003094, 312661.38111611333, 308358.38045221026, 317170.2514664031, 313426.2012435112, 318224.35051162046, 316949.6155919123, 315488.4960322737, 306527.76235647785, 309914.69411509467, 301102.94109983253, 320357.61232714314, 313978.8843154795, 322000.2126725628, 319155.4974107985, 300977.5406568862, 302028.2503923922, 315642.0974820395, 318409.55329542427, 318747.1665973758, 309298.3095519192, 297312.2057086718, 328676.712364771, 314919.7294061506, 309624.4535030326, 302888.4484570802, 313410.2905894075, 306544.8538978216, 318335.04087112966, 317360.89454534405, 320026.7614705383, 313963.9207970459, 305640.13075904595, 311141.79961037735, 304037.6149904631, 317896.9056672453, 319432.1526461222, 315924.5963102809, 317391.61350239837, 301837.545058325, 248847.4751213333, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], - "consumeRate" : [ 329439.4822039596, 315635.12769440626, 310858.3720180052, 311113.24923361803, 314337.1643443242, 311688.89232638024, 309936.90021733503, 312820.20114193443, 306576.89412782626, 311825.12735310843, 310724.25649077375, 312693.5378564287, 305511.9457272889, 314570.62933389086, 314079.48101495096, 309619.14138282207, 307782.735217848, 318936.39853695617, 316383.0089461503, 314605.3940053247, 308682.91342609166, 312238.7585810575, 316332.40755385486, 313378.6741177981, 317623.02221262665, 315897.9855280767, 305397.0998432861, 320396.88579848653, 307243.59751563316, 315399.8795488501, 306567.09642717434, 313210.4456917268, 310182.4675479921, 313128.76358681504, 312413.2562039948, 315086.24584262, 311245.8380173672, 311015.6498280903, 312598.1529829534, 313954.4599992928, 318559.118853108, 267578.4561223526, 121785.38376752514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], - "backlog" : [ 1370828, 1295357, 1313621, 1285724, 1314409, 1332012, 1416086, 1457911, 1548086, 1494495, 1486287, 1368855, 1519126, 1513106, 1593369, 1689972, 1620981, 1449618, 1442110, 1480668, 1582593, 1552794, 1359349, 1514440, 1487080, 1423548, 1398126, 1327346, 1320276, 1350020, 1459399, 1528426, 1566718, 1490903, 1478034, 1366150, 1433631, 1518786, 1552461, 1587288, 1417683, 1228103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], - "publishLatencyAvg" : [ 126.08470767764605, 127.93290156054037, 128.54594388138617, 129.2941373321015, 125.13271043032397, 127.54009788616196, 123.80249565865718, 124.8922400899913, 124.30591781510631, 129.15000363307286, 125.84360377550985, 131.71223123149994, 122.80006620994708, 123.79343878314329, 121.45340963591039, 122.48052182772392, 129.67080982409362, 128.59241237103635, 126.34130205590918, 123.65740597634309, 124.35148359518286, 127.53166361106338, 131.303652053754, 121.78426095941491, 123.24659597299559, 126.63725316770163, 128.2160289010204, 127.02612131689462, 127.6350328690673, 125.45982140030696, 125.46449009041729, 123.50162656104825, 126.05351658131286, 127.26336539428577, 128.15989115648418, 128.1176611494447, 124.88234656736158, 122.2511246643609, 123.24256831496113, 122.809028235978, 128.3639618865636, 139.06400455167181, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], - "publishLatency50pct" : [ 66.857, 65.382, 68.684, 66.932, 71.747, 70.387, 69.576, 68.856, 69.924, 71.394, 72.315, 73.634, 71.484, 71.802, 69.626, 71.324, 73.213, 75.525, 73.338, 70.044, 70.408, 71.693, 71.096, 66.437, 73.169, 70.752, 70.511, 71.555, 68.9, 68.871, 68.579, 68.173, 68.117, 69.453, 71.188, 70.974, 69.725, 68.576, 69.816, 67.649, 69.552, 65.435, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], - "publishLatency75pct" : [ 178.118, 158.175, 174.498, 192.552, 198.62, 189.517, 171.997, 201.013, 183.441, 195.556, 193.509, 199.283, 158.505, 188.125, 176.859, 173.533, 208.108, 205.957, 211.751, 174.59, 191.064, 190.817, 202.059, 165.28, 176.169, 211.968, 200.897, 184.009, 193.041, 172.445, 184.124, 177.699, 174.335, 169.166, 175.884, 203.896, 170.889, 116.753, 183.182, 149.595, 161.95, 115.065, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], - "publishLatency95pct" : [ 364.319, 413.269, 388.415, 388.179, 332.895, 377.057, 353.787, 343.039, 353.253, 365.003, 346.557, 343.963, 355.193, 333.947, 336.145, 346.167, 343.805, 326.621, 313.489, 350.479, 354.219, 353.751, 361.613, 367.479, 344.669, 325.917, 337.431, 352.779, 352.503, 355.497, 355.541, 353.019, 361.105, 375.615, 352.163, 354.437, 336.817, 391.217, 345.377, 370.285, 387.323, 546.599, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], - "publishLatency99pct" : [ 422.627, 470.107, 444.933, 491.755, 429.071, 511.563, 418.369, 421.927, 426.641, 430.915, 404.997, 434.033, 433.963, 390.139, 382.475, 401.511, 403.741, 425.193, 400.645, 440.203, 415.797, 441.703, 504.305, 433.895, 431.559, 413.601, 445.115, 457.517, 454.947, 454.975, 445.103, 411.165, 471.021, 440.771, 465.455, 448.663, 443.825, 446.587, 417.691, 482.469, 488.501, 700.615, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], - "publishLatency999pct" : [ 575.163, 599.175, 627.143, 652.103, 568.371, 569.547, 511.577, 522.799, 580.839, 560.651, 518.715, 507.319, 489.903, 510.385, 489.343, 469.897, 503.159, 493.373, 509.123, 550.735, 555.551, 590.303, 581.359, 537.587, 542.143, 512.219, 596.903, 611.767, 568.555, 556.095, 538.595, 517.887, 544.675, 532.095, 512.863, 524.499, 497.347, 586.035, 507.843, 587.479, 672.147, 794.007, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], - "publishLatency9999pct" : [ 713.379, 680.751, 669.591, 820.395, 672.375, 721.763, 597.759, 643.103, 604.719, 693.899, 585.155, 578.487, 563.591, 513.659, 541.783, 494.435, 525.507, 580.659, 615.379, 747.271, 668.519, 704.327, 620.207, 677.651, 686.479, 742.275, 846.023, 742.435, 805.639, 595.679, 646.607, 621.131, 588.743, 600.571, 681.071, 592.943, 588.871, 670.139, 612.767, 978.907, 902.563, 1018.591, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], - "publishLatencyMax" : [ 713.503, 823.819, 1019.591, 865.063, 752.499, 858.099, 686.395, 765.647, 765.055, 775.487, 678.039, 712.687, 768.171, 607.919, 658.207, 638.075, 674.863, 980.155, 686.807, 747.479, 853.135, 846.195, 869.579, 677.859, 689.903, 742.403, 846.111, 789.923, 954.679, 713.731, 766.855, 771.175, 819.499, 679.635, 780.271, 771.587, 687.583, 791.479, 612.967, 979.419, 902.707, 1035.807, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], - "aggregatedPublishLatencyAvg" : 126.20689446009546, - "aggregatedPublishLatency50pct" : 70.059, - "aggregatedPublishLatency75pct" : 185.977, - "aggregatedPublishLatency95pct" : 358.819, - "aggregatedPublishLatency99pct" : 447.939, - "aggregatedPublishLatency999pct" : 615.187, - "aggregatedPublishLatency9999pct" : 785.543, - "aggregatedPublishLatencyMax" : 1035.807, - "aggregatedPublishLatencyQuantiles" : { - "1.5109383437056103E-6" : 5.894, - "0.5001417449033689" : 13.348, - "1.0000077435590116" : 16.41, - "1.5000203032339936" : 18.954, - "2.0001915114350646" : 21.133, - "2.500059021029051" : 23.11, - "3.000148638559562" : 24.937, - "3.5001649755804034" : 26.677, - "4.000106521153231" : 28.319, - "4.50009717222223" : 29.904, - "5.000218519457959" : 31.27, - "5.500086029051944" : 32.607, - "6.000293499773265" : 33.874, - "6.500088484326754" : 35.091, - "7.0001116205701415" : 36.208, - "7.500189906063074" : 37.298, - "8.00027725718607" : 38.305, - "8.500302659836974" : 39.225, - "9.000530528225934" : 40.092, - "9.50047131832959" : 40.927, - "10.000407575618215" : 41.706, - "10.500594648671894" : 42.431, - "11.000377545718633" : 43.105, - "11.50065300866542" : 43.748, - "12.000525051074439" : 44.356, - "12.500088106592168" : 44.924, - "13.000165636615929" : 45.475, - "13.500722889563816" : 45.997, - "14.00054053819246" : 46.48, - "14.500051466337332" : 46.955, - "15.000769634218825" : 47.422, - "15.500700603223247" : 47.896, - "16.000404931476112" : 48.344, - "16.500743853833335" : 48.769, - "17.00106313399209" : 49.184, - "17.500160820499957" : 49.589, - "18.000329762293514" : 49.974, - "18.500754808136328" : 50.342, - "19.0012614446497" : 50.694, - "19.50040068196202" : 51.039, - "20.001306961667304" : 51.375, - "20.50046130836306" : 51.704, - "21.00068313299865" : 52.036, - "21.500758396614895" : 52.363, - "22.001574020019554" : 52.674, - "22.5012171552695" : 52.972, - "23.001113372692018" : 53.267, - "23.500906846307164" : 53.548, - "24.000882387992725" : 53.822, - "24.501776580191258" : 54.088, - "25.00149979517342" : 54.354, - "25.50128798050436" : 54.613, - "26.000211153633533" : 54.864, - "26.501291946717515" : 55.119, - "27.000783232663917" : 55.369, - "27.50190406561401" : 55.613, - "28.00101535056697" : 55.85, - "28.500561030293746" : 56.092, - "29.001650133538618" : 56.334, - "29.501535774392732" : 56.572, - "30.00064328199983" : 56.808, - "30.500003116310335" : 57.041, - "31.00204335524257" : 57.277, - "31.500022191906922" : 57.515, - "32.001486763330206" : 57.754, - "32.500773317131035" : 57.992, - "33.00063931578668" : 58.235, - "33.50178054640441" : 58.478, - "34.00034411620778" : 58.717, - "34.50077520580397" : 58.952, - "35.00138005330968" : 59.199, - "35.500664340703" : 59.457, - "36.000433639304646" : 59.72, - "36.50159753399753" : 59.986, - "37.000396810182515" : 60.261, - "37.501574303320496" : 60.544, - "38.00065083669155" : 60.826, - "38.50051532440885" : 61.11, - "39.001445779127636" : 61.407, - "39.50100732370702" : 61.715, - "40.000468390886546" : 62.022, - "40.500412958336064" : 62.339, - "41.0013366138323" : 62.668, - "41.50147684779733" : 63.009, - "42.000990797818886" : 63.354, - "42.50069361513341" : 63.711, - "43.00121989384525" : 64.078, - "43.50096199555671" : 64.447, - "44.000555269841314" : 64.841, - "44.500180273831134" : 65.235, - "45.000298599190174" : 65.621, - "45.50101676707167" : 66.037, - "46.00112376039313" : 66.448, - "46.50060598070947" : 66.87, - "47.00099778590872" : 67.308, - "47.50035308740419" : 67.758, - "48.000597576114934" : 68.207, - "48.5003019043678" : 68.661, - "49.00012257487313" : 69.119, - "49.50085434119972" : 69.581, - "50.000860857121324" : 70.059, - "50.250679402869615" : 70.29, - "50.50046168609765" : 70.528, - "50.750538602302704" : 70.768, - "51.00013126276861" : 71.01, - "51.25042348768765" : 71.257, - "51.500747442311905" : 71.509, - "51.750933146077706" : 71.758, - "52.00000302187669" : 72.019, - "52.25058383601937" : 72.286, - "52.5006267561117" : 72.542, - "52.750776197357254" : 72.794, - "53.00009839985963" : 73.047, - "53.250013645661916" : 73.314, - "53.50095179672289" : 73.575, - "53.75081718155983" : 73.837, - "54.00005779339165" : 74.097, - "54.25006369549455" : 74.371, - "54.50025997582876" : 74.646, - "54.75046834366972" : 74.912, - "55.00020152140159" : 75.176, - "55.25083144104045" : 75.443, - "55.50048227263258" : 75.724, - "55.750410361410786" : 76.014, - "56.00047745651661" : 76.292, - "56.25054606256078" : 76.577, - "56.50006695345535" : 76.87, - "56.75013404856118" : 77.171, - "57.000192078036946" : 77.467, - "57.25031809973817" : 77.778, - "57.50065111999249" : 78.106, - "57.75047268761746" : 78.442, - "58.00036149199873" : 78.78, - "58.25046636056315" : 79.116, - "58.50060220336361" : 79.46, - "58.75016917787767" : 79.826, - "59.00045838092002" : 80.196, - "59.25055191744686" : 80.573, - "59.5002080373232" : 80.964, - "59.75053048100911" : 81.363, - "60.0003732017709" : 81.76, - "60.25027484912808" : 82.196, - "60.50003597921931" : 82.638, - "60.75012196105443" : 83.108, - "61.00038698908328" : 83.576, - "61.25024028641347" : 84.043, - "61.50017970722926" : 84.533, - "61.75042811493633" : 85.054, - "62.00011747545622" : 85.604, - "62.250263894825096" : 86.16, - "62.50029850475653" : 86.764, - "62.750322538119555" : 87.381, - "63.00017205810389" : 88.062, - "63.250197602405265" : 88.782, - "63.50028660611707" : 89.517, - "63.75019731910432" : 90.345, - "64.00006648128712" : 91.177, - "64.25004443103067" : 92.047, - "64.5001651644477" : 92.979, - "64.75019599703327" : 93.906, - "65.00013239597237" : 94.994, - "65.25016322855794" : 96.097, - "65.50017895176008" : 97.26, - "65.75013197102096" : 98.621, - "66.0000940559119" : 99.997, - "66.25015586273352" : 101.456, - "66.50007413041249" : 102.915, - "66.75009212002215" : 104.415, - "67.00006931429651" : 106.036, - "67.25005784060848" : 107.625, - "67.50008338490984" : 109.249, - "67.75008777607441" : 111.09, - "68.0000725250405" : 113.066, - "68.25000967944877" : 115.059, - "68.50012361364324" : 116.972, - "68.75001997271623" : 118.967, - "69.00004702795594" : 121.092, - "69.25005897381223" : 123.117, - "69.50003994543246" : 125.124, - "69.75002998268276" : 127.406, - "70.00001926446389" : 129.989, - "70.25007578300131" : 132.857, - "70.50003711242307" : 135.841, - "70.75005736844024" : 138.487, - "71.0000753580499" : 141.288, - "71.25001326792733" : 143.961, - "71.50003503488284" : 146.555, - "71.75004849167748" : 148.917, - "72.00008159067056" : 151.792, - "72.25000212475705" : 154.446, - "72.50008281830796" : 157.239, - "72.75002375006208" : 160.199, - "73.00001378731238" : 162.895, - "73.25002799957618" : 165.628, - "73.5000255915182" : 168.509, - "73.75000958501512" : 171.404, - "74.00000113320375" : 174.345, - "74.25003347672768" : 177.798, - "74.50006884212829" : 180.89, - "74.75000221919069" : 183.519, - "75.00001567598531" : 185.977, - "75.12503524735855" : 187.216, - "75.25004801950924" : 188.376, - "75.37508874401928" : 189.556, - "75.50004938879711" : 190.837, - "75.62500550075991" : 192.109, - "75.75000920728053" : 193.298, - "75.87501744661618" : 194.508, - "76.00002795235936" : 195.777, - "76.1250686768694" : 197.103, - "76.25000741304125" : 198.373, - "76.37507684537982" : 199.537, - "76.50009943862975" : 200.68, - "76.62507745919852" : 201.822, - "76.75002148365458" : 202.948, - "76.87500856985342" : 204.208, - "77.00001227637404" : 205.464, - "77.12506508839084" : 206.768, - "77.25006728397312" : 208.126, - "77.37507552330878" : 209.352, - "77.5000709196685" : 210.473, - "77.62508520275753" : 211.53, - "77.75003829284366" : 212.559, - "77.87501404700491" : 213.676, - "78.00002984103229" : 214.778, - "78.12505847803558" : 215.935, - "78.25012791037416" : 217.084, - "78.37501074182728" : 218.349, - "78.50003560148473" : 219.536, - "78.62507632599477" : 220.727, - "78.75003092701922" : 221.879, - "78.87508449450519" : 223.004, - "79.00002247520786" : 224.096, - "79.12500578406085" : 225.154, - "79.25008881484452" : 226.293, - "79.3750774119817" : 227.382, - "79.50000179423928" : 228.409, - "79.62511731019734" : 229.539, - "79.75009759717364" : 230.595, - "79.87501366927033" : 231.649, - "80.00002493048267" : 232.723, - "80.12508983000622" : 233.804, - "80.25006029588327" : 234.894, - "80.37501187503105" : 235.911, - "80.50008130736963" : 236.958, - "80.62506839356847" : 237.969, - "80.7500690782124" : 238.962, - "80.87508638317811" : 239.904, - "81.00008102406868" : 240.859, - "81.12505602276077" : 241.872, - "81.25005670740471" : 242.794, - "81.37507703424711" : 243.805, - "81.50006638685348" : 244.844, - "81.62506858243576" : 245.918, - "81.7500503803504" : 246.982, - "81.87500875872071" : 247.985, - "82.00006534808337" : 249.107, - "82.12502523739202" : 250.19, - "82.25001005718335" : 251.215, - "82.37512179579555" : 252.187, - "82.50004240070727" : 253.228, - "82.6250136220535" : 254.258, - "82.75001355122826" : 255.359, - "82.87503765541653" : 256.387, - "83.00003909552964" : 257.506, - "83.12509266301561" : 258.702, - "83.25004122028669" : 259.854, - "83.3750879885501" : 260.917, - "83.50004938879711" : 262.01, - "83.62523365244981" : 263.053, - "83.75009155342026" : 264.063, - "83.8752131131317" : 265.021, - "84.00004759455783" : 265.945, - "84.12508831906787" : 266.851, - "84.25008144902009" : 267.725, - "84.3750670242806" : 268.577, - "84.50004655578772" : 269.473, - "84.62522930850207" : 270.401, - "84.75001921724706" : 271.289, - "84.87509242693149" : 272.197, - "85.00024118353312" : 273.031, - "85.1250416688465" : 273.897, - "85.2500597292814" : 274.771, - "85.37509818738393" : 275.663, - "85.50014571111652" : 276.593, - "85.62510937777104" : 277.533, - "85.75009495303154" : 278.479, - "85.87515531974005" : 279.401, - "86.00013031843214" : 280.265, - "86.12512722573022" : 281.133, - "86.25020119088383" : 281.965, - "86.37515503643911" : 282.817, - "86.50017762968903" : 283.687, - "86.62513525259017" : 284.571, - "86.7501389591108" : 285.473, - "86.87515853048403" : 286.463, - "87.00000736582443" : 287.493, - "87.12523544668909" : 288.465, - "87.25020213522029" : 289.427, - "87.37521113002512" : 290.521, - "87.50003579035202" : 291.637, - "87.56256219636042" : 292.171, - "87.62513393051913" : 292.695, - "87.68771850765376" : 293.303, - "87.75012630500217" : 293.849, - "87.81263911256548" : 294.383, - "87.87501140286281" : 294.887, - "87.93752496589529" : 295.413, - "88.0002817900011" : 295.875, - "88.06261328496316" : 296.375, - "88.1252273253955" : 296.827, - "88.18775524234223" : 297.263, - "88.25001345679462" : 297.717, - "88.31256026047066" : 298.181, - "88.3751365274444" : 298.661, - "88.43777927570527" : 299.087, - "88.50021804728972" : 299.559, - "88.56279280332512" : 300.011, - "88.62511145531126" : 300.511, - "88.68757138003254" : 301.005, - "88.7502005298483" : 301.507, - "88.81270049443569" : 301.951, - "88.87522010122154" : 302.471, - "88.93773819706904" : 302.975, - "89.00000094433646" : 303.447, - "89.0626391597823" : 303.947, - "89.12520938300266" : 304.447, - "89.18769121632992" : 304.961, - "89.25004613083631" : 305.419, - "89.31253854073196" : 305.917, - "89.3752115077597" : 306.437, - "89.4376948520253" : 306.897, - "89.50007696342188" : 307.371, - "89.56272424449777" : 307.893, - "89.62522723096184" : 308.399, - "89.68773475024095" : 308.937, - "89.75016521166452" : 309.421, - "89.81265686609102" : 309.949, - "89.87508279469955" : 310.483, - "89.93752609909905" : 311.019, - "90.0000751691826" : 311.551, - "90.06252451733546" : 312.071, - "90.12521712656168" : 312.609, - "90.1875599535613" : 313.111, - "90.2500463197036" : 313.585, - "90.31259085697212" : 314.097, - "90.37520338646611" : 314.587, - "90.43774112451209" : 315.075, - "90.50008092963503" : 315.527, - "90.56275767400864" : 316.009, - "90.62503930800534" : 316.467, - "90.68769792111883" : 316.945, - "90.75010420752889" : 317.421, - "90.81277566361828" : 317.861, - "90.87508147262851" : 318.297, - "90.93765245131804" : 318.737, - "91.00021587531586" : 319.163, - "91.06261007421918" : 319.609, - "91.1250125832834" : 320.083, - "91.18757449634286" : 320.511, - "91.25025879540819" : 320.955, - "91.31262806382884" : 321.393, - "91.37511065262527" : 321.847, - "91.43773224774931" : 322.321, - "91.50016044276538" : 322.797, - "91.56263925421594" : 323.273, - "91.62509917893722" : 323.823, - "91.68765278183581" : 324.285, - "91.7501708776833" : 324.821, - "91.81271692589017" : 325.373, - "91.87510281463261" : 325.929, - "91.93760353468916" : 326.503, - "92.00012842975922" : 327.061, - "92.06261328496316" : 327.707, - "92.12503241434915" : 328.391, - "92.18765098759651" : 329.049, - "92.25010637950277" : 329.689, - "92.31262674175778" : 330.239, - "92.37506626881142" : 330.875, - "92.43765688969943" : 331.507, - "92.5001221027049" : 332.095, - "92.56254878678261" : 332.727, - "92.62500644509637" : 333.311, - "92.68758195660094" : 333.905, - "92.75016048998219" : 334.587, - "92.81269822802817" : 335.183, - "92.87515437540358" : 335.793, - "92.93751382272501" : 336.381, - "93.00000094433646" : 337.037, - "93.06251073002308" : 337.677, - "93.12511268294867" : 338.357, - "93.18760207096764" : 339.033, - "93.25004008708294" : 339.697, - "93.31258991263566" : 340.375, - "93.37506947955539" : 340.995, - "93.4375475355368" : 341.697, - "93.50013891189397" : 342.449, - "93.56251800141386" : 343.129, - "93.6251992786025" : 343.719, - "93.68761311970428" : 344.315, - "93.7500692670797" : 344.901, - "93.78136306658536" : 345.189, - "93.81269086220375" : 345.461, - "93.84389173900126" : 345.729, - "93.87509186032962" : 345.995, - "93.90644232002316" : 346.289, - "93.93759031397866" : 346.577, - "93.96875643919427" : 346.891, - "94.00002681915561" : 347.195, - "94.03131608584623" : 347.471, - "94.06258948768425" : 347.795, - "94.09380396292686" : 348.147, - "94.12514837886704" : 348.451, - "94.15628806266163" : 348.749, - "94.18766798565288" : 349.049, - "94.2189496976518" : 349.355, - "94.25016568383275" : 349.663, - "94.28135447312353" : 349.983, - "94.31257045930448" : 350.291, - "94.34389296663868" : 350.653, - "94.3751097082888" : 351.031, - "94.40634004838402" : 351.427, - "94.43766633306407" : 351.789, - "94.46887854189917" : 352.107, - "94.50009301714178" : 352.433, - "94.53135508694223" : 352.779, - "94.5625144129353" : 353.101, - "94.59389433592655" : 353.475, - "94.62505743926548" : 353.867, - "94.65631270984336" : 354.261, - "94.68763748358508" : 354.711, - "94.7188247619375" : 355.127, - "94.75006945594698" : 355.521, - "94.7813964960962" : 355.951, - "94.81263136900647" : 356.371, - "94.84387001926258" : 356.813, - "94.87504369916991" : 357.247, - "94.90632087835378" : 357.637, - "94.93750286842202" : 358.083, - "94.96893416331694" : 358.423, - "95.00015997059714" : 358.819, - "95.03136840208639" : 359.171, - "95.06253981558619" : 359.507, - "95.09389254168727" : 359.901, - "95.12504280205027" : 360.275, - "95.15635322187771" : 360.649, - "95.18759187213382" : 361.021, - "95.2188932263312" : 361.385, - "95.25010921251216" : 361.741, - "95.28128440335783" : 362.141, - "95.3126582825957" : 362.571, - "95.34385689298571" : 362.989, - "95.37505701431407" : 363.415, - "95.4062571356424" : 363.877, - "95.43754942420972" : 364.323, - "95.46876087757565" : 364.745, - "95.50004863332794" : 365.161, - "95.53130012655997" : 365.539, - "95.562599969819" : 365.987, - "95.5938605286811" : 366.443, - "95.62508029220793" : 366.933, - "95.65635369404593" : 367.393, - "95.68755230443594" : 367.915, - "95.71879850938377" : 368.401, - "95.75011950577962" : 368.889, - "95.78130602866288" : 369.315, - "95.81256734299414" : 369.723, - "95.84376821979167" : 370.141, - "95.87508090602662" : 370.521, - "95.90632408909777" : 370.929, - "95.93754989637796" : 371.379, - "95.96880894430171" : 371.821, - "96.00007479144801" : 372.295, - "96.03127037996133" : 372.709, - "96.06251582943999" : 373.161, - "96.09388290945532" : 373.571, - "96.12506716593106" : 374.007, - "96.1562861739887" : 374.407, - "96.18763512274391" : 374.779, - "96.21882240109633" : 375.163, - "96.25012753263957" : 375.525, - "96.28128081487927" : 375.895, - "96.31253004170378" : 376.329, - "96.34376264820652" : 376.731, - "96.37505418130466" : 377.235, - "96.40628829874575" : 377.705, - "96.43751863884097" : 378.143, - "96.46875200081288" : 378.687, - "96.5000306909351" : 379.249, - "96.53137510687527" : 379.775, - "96.56251025785485" : 380.309, - "96.59376175108689" : 380.955, - "96.6250245763565" : 381.517, - "96.65629646725617" : 382.129, - "96.68750112139955" : 382.683, - "96.71881305216533" : 383.235, - "96.75002148365458" : 383.825, - "96.78131906050609" : 384.349, - "96.81252673652617" : 384.859, - "96.84383262353857" : 385.407, - "96.87511055819162" : 385.929, - "96.890704952837" : 386.191, - "96.90627366153055" : 386.465, - "96.92190960698038" : 386.769, - "96.93750928990997" : 387.103, - "96.95318451975675" : 387.421, - "96.96879100190888" : 387.731, - "96.98444810049553" : 388.039, - "97.00008782329122" : 388.379, - "97.01569279450501" : 388.693, - "97.0313355391774" : 388.961, - "97.04687931738827" : 389.239, - "97.06255001442001" : 389.567, - "97.07819200362323" : 389.903, - "97.0938430584565" : 390.211, - "97.10944349685526" : 390.521, - "97.12507264308256" : 390.821, - "97.14065646115954" : 391.097, - "97.15633169100632" : 391.413, - "97.17193212940506" : 391.751, - "97.1875763850158" : 392.113, - "97.20312620698004" : 392.387, - "97.21878406103586" : 392.659, - "97.23439734241055" : 392.953, - "97.25000004721683" : 393.239, - "97.26565563486513" : 393.531, - "97.28133313111942" : 393.825, - "97.29695925547003" : 394.111, - "97.31253702979363" : 394.399, - "97.32817901899683" : 394.693, - "97.34375905972796" : 395.013, - "97.3594728185025" : 395.305, - "97.37507703424711" : 395.569, - "97.39066236326244" : 395.889, - "97.40631795091075" : 396.237, - "97.42193576510046" : 396.559, - "97.43755433475934" : 396.849, - "97.45321747709937" : 397.193, - "97.46877032094031" : 397.493, - "97.48445688282466" : 397.815, - "97.50000066103553" : 398.191, - "97.51563509554703" : 398.565, - "97.53131183633214" : 398.991, - "97.54696742398045" : 399.375, - "97.56254519830405" : 399.781, - "97.57817207812383" : 400.211, - "97.59380122435111" : 400.539, - "97.60940015181153" : 400.983, - "97.62501721053206" : 401.449, - "97.64065391145108" : 401.821, - "97.65629741159263" : 402.203, - "97.6719431781417" : 402.615, - "97.68753908372544" : 403.145, - "97.70312667914828" : 403.537, - "97.71880795274842" : 403.955, - "97.73444163179074" : 404.353, - "97.75003149362111" : 404.781, - "97.76567877110851" : 405.159, - "97.78127014387721" : 405.529, - "97.79693555262476" : 405.881, - "97.81257225354376" : 406.215, - "97.82820744352443" : 406.551, - "97.84379503894726" : 406.949, - "97.85939018906183" : 407.315, - "97.87501102512823" : 407.705, - "97.89062581744125" : 408.121, - "97.90630482463389" : 408.567, - "97.92187579973495" : 409.101, - "97.93753138738325" : 409.573, - "97.95314920157296" : 410.081, - "97.96882140954305" : 410.647, - "97.98440900496588" : 411.161, - "98.00001850899471" : 411.695, - "98.01565067709869" : 412.183, - "98.03129644364776" : 412.619, - "98.04692105706002" : 413.099, - "98.06251469623624" : 413.609, - "98.07815290809359" : 414.117, - "98.09375108008483" : 414.597, - "98.1093779599046" : 415.061, - "98.12501466082361" : 415.589, - "98.14066722659524" : 416.131, - "98.15630015016839" : 416.711, - "98.17192551904982" : 417.175, - "98.1875546652771" : 417.647, - "98.20320345370287" : 418.077, - "98.21880842491666" : 418.493, - "98.23441566253797" : 418.955, - "98.2500274329743" : 419.413, - "98.26565355732491" : 419.971, - "98.28127137151462" : 420.429, - "98.29690278414942" : 420.899, - "98.3125296639692" : 421.389, - "98.32816560941905" : 421.927, - "98.34376227047194" : 422.435, - "98.35940123779847" : 423.045, - "98.37502434027238" : 423.559, - "98.39062780054783" : 424.139, - "98.40628263272696" : 424.837, - "98.42188231565655" : 425.411, - "98.43753488142816" : 426.045, - "98.44531923577495" : 426.307, - "98.4531254987277" : 426.639, - "98.46094611559471" : 426.943, - "98.46876371058505" : 427.269, - "98.47657375088366" : 427.645, - "98.48443138574011" : 427.901, - "98.49222405024777" : 428.141, - "98.50001520381709" : 428.431, - "98.50784488631416" : 428.797, - "98.51563226253762" : 429.105, - "98.52343928095955" : 429.405, - "98.53125007672733" : 429.697, - "98.53908429203945" : 429.939, - "98.54688979952303" : 430.205, - "98.55475121172533" : 430.461, - "98.56255520827058" : 430.761, - "98.57035391653162" : 431.063, - "98.57813751540921" : 431.347, - "98.58595057758451" : 431.615, - "98.59376439522899" : 431.943, - "98.60158047928097" : 432.383, - "98.60942829303818" : 432.723, - "98.61719149424815" : 433.003, - "98.62503553065949" : 433.285, - "98.63286747956408" : 433.533, - "98.64064956750335" : 433.765, - "98.64847245077787" : 433.999, - "98.65625302777879" : 434.249, - "98.66410990716606" : 434.533, - "98.67191994746467" : 434.827, - "98.67974660808507" : 435.091, - "98.6875483382228" : 435.339, - "98.69534251366879" : 435.549, - "98.70313895552232" : 435.795, - "98.71095730598182" : 436.031, - "98.71879983145483" : 436.263, - "98.7266295139519" : 436.473, - "98.73441462376785" : 436.675, - "98.74223070781984" : 436.977, - "98.75004452546432" : 437.213, - "98.75784247825618" : 437.447, - "98.76565629590065" : 437.657, - "98.77349731043532" : 437.879, - "98.78130961714145" : 438.105, - "98.78909774883408" : 438.367, - "98.79691156647854" : 438.643, - "98.80469592082532" : 438.931, - "98.81254297911336" : 439.199, - "98.82037190614126" : 439.469, - "98.82815928236472" : 439.687, - "98.83597687735505" : 439.921, - "98.84376047623266" : 440.183, - "98.85159015872973" : 440.483, - "98.85940397637421" : 440.807, - "98.86720495104277" : 441.169, - "98.87500214836545" : 441.575, - "98.88284694024598" : 442.043, - "98.89066831258216" : 442.407, - "98.8984428458297" : 442.839, - "98.9062747947343" : 443.275, - "98.91410523270056" : 443.615, - "98.9219062073691" : 444.003, - "98.92968905077754" : 444.407, - "98.93751646686711" : 444.839, - "98.94532650716572" : 445.193, - "98.9531561896628" : 445.519, - "98.9609533869855" : 445.909, - "98.96878080307506" : 446.409, - "98.97659159884284" : 446.841, - "98.98438124147383" : 447.135, - "98.99222225600849" : 447.511, - "99.0000239861462" : 447.939, - "99.00781816159221" : 448.339, - "99.01563349017503" : 448.779, - "99.02344050859696" : 449.371, - "99.03126490280984" : 450.047, - "99.03906512200922" : 450.589, - "99.04689102716044" : 451.087, - "99.05469502370568" : 451.583, - "99.06252546167194" : 451.999, - "99.07033625743972" : 452.341, - "99.07813043288573" : 452.703, - "99.08596389272867" : 453.223, - "99.09376940021225" : 453.631, - "99.10158699520258" : 454.043, - "99.10938721440196" : 454.579, - "99.11720783126898" : 454.955, - "99.12502013797511" : 455.395, - "99.13283546655794" : 455.887, - "99.14064777326406" : 456.397, - "99.14846385731605" : 456.929, - "99.15626936479963" : 457.441, - "99.16407638322156" : 458.049, - "99.1719045547803" : 458.545, - "99.17970175210299" : 459.001, - "99.18751103693243" : 459.557, - "99.19533165379946" : 460.091, - "99.20312582924547" : 460.631, - "99.21096759924929" : 461.135, - "99.2187617746953" : 461.779, - "99.22265924015288" : 462.105, - "99.22659070172321" : 462.359, - "99.23048363436577" : 462.583, - "99.2343848771692" : 462.813, - "99.23829971841775" : 463.135, - "99.24221229325877" : 463.459, - "99.2460954048021" : 463.769, - "99.2500034468281" : 464.009, - "99.25392886464505" : 464.323, - "99.25781273165754" : 464.607, - "99.26172908384443" : 464.935, - "99.2656454360313" : 465.189, - "99.26955045618061" : 465.465, - "99.27344565523069" : 465.677, - "99.27736276288675" : 465.927, - "99.28126173928268" : 466.273, - "99.28515769380192" : 466.613, - "99.2890634694204" : 466.931, - "99.29297604426142" : 467.191, - "99.29688257534907" : 467.513, - "99.30080346035099" : 467.765, - "99.30470394768527" : 468.023, - "99.30860745689624" : 468.267, - "99.31250341141548" : 468.535, - "99.31642203000987" : 468.787, - "99.32033007203587" : 469.129, - "99.32423509218518" : 469.419, - "99.32812802482773" : 469.705, - "99.3320609973364" : 470.013, - "99.33595997373234" : 470.251, - "99.33985441731323" : 470.509, - "99.3437632148084" : 470.813, - "99.34767881152612" : 471.161, - "99.35157476604536" : 471.453, - "99.35547072056461" : 471.787, - "99.35937951805977" : 472.111, - "99.36328302727074" : 472.431, - "99.36720466774183" : 472.703, - "99.37110288866859" : 473.061, - "99.37501848538629" : 473.407, - "99.37892199459726" : 473.711, - "99.38282701474657" : 474.109, - "99.38674034505677" : 474.389, - "99.39064158786022" : 474.733, - "99.39453225409525" : 475.099, - "99.39845842738137" : 475.453, - "99.40235060455475" : 475.949, - "99.4062518473582" : 476.477, - "99.41015913391503" : 476.827, - "99.4140762415711" : 477.415, - "99.41797370702868" : 477.955, - "99.4218757053013" : 478.535, - "99.42578223638895" : 479.287, - "99.42970387686003" : 480.187, - "99.43359832044094" : 480.589, - "99.43751618356616" : 481.063, - "99.4414151599621" : 481.485, - "99.44533000121064" : 481.767, - "99.44922444479154" : 482.043, - "99.45314381885511" : 482.401, - "99.45704808353524" : 482.759, - "99.46095083727704" : 483.515, - "99.464854346488" : 483.905, - "99.46876163304482" : 484.275, - "99.47265985397159" : 484.981, - "99.47657620615847" : 485.671, - "99.48047140520855" : 486.265, - "99.48440513318639" : 486.593, - "99.48828975566805" : 486.949, - "99.49219250940985" : 487.437, - "99.49609677408998" : 487.983, - "99.50000330517763" : 488.517, - "99.50391588001865" : 489.083, - "99.50782694392133" : 489.519, - "99.51172894219395" : 490.179, - "99.51562716312071" : 491.131, - "99.51953520514671" : 492.317, - "99.52344022529601" : 493.129, - "99.52734977826036" : 493.991, - "99.53126159763221" : 494.507, - "99.53517643888075" : 494.949, - "99.53907088246164" : 495.479, - "99.54297061432675" : 496.443, - "99.54687790088357" : 496.921, - "99.55078367650205" : 497.799, - "99.5546932294664" : 498.677, - "99.55859749414653" : 499.441, - "99.56251384633342" : 500.145, - "99.56640677897597" : 500.995, - "99.57031482100197" : 501.591, - "99.57422664037382" : 502.233, - "99.57812788317727" : 502.791, - "99.58204196895664" : 503.381, - "99.58593792347588" : 504.575, - "99.58984898737856" : 505.361, - "99.59375023018201" : 506.133, - "99.59766053861553" : 507.771, - "99.60156329235731" : 509.089, - "99.60547888907503" : 509.995, - "99.60938466469351" : 510.451, - "99.61134359625612" : 510.603, - "99.61329195125033" : 510.775, - "99.61523728436785" : 511.131, - "99.61718941670792" : 511.481, - "99.61914305998633" : 511.717, - "99.62109670326474" : 512.043, - "99.62304732466646" : 512.307, - "99.62500474529074" : 512.565, - "99.6269568776308" : 512.799, - "99.62890749903252" : 512.995, - "99.63087625169437" : 513.157, - "99.63281554105852" : 513.373, - "99.6347752280903" : 513.607, - "99.63672584949204" : 513.953, - "99.6386779818321" : 514.483, - "99.64062784776465" : 515.087, - "99.64258526838893" : 515.553, - "99.64453740072899" : 515.871, - "99.64649557682243" : 516.233, - "99.6484424208783" : 516.807, - "99.6504043743176" : 517.219, - "99.65236406134939" : 517.413, - "99.65431846009697" : 517.583, - "99.65625926039945" : 517.789, - "99.65820534898616" : 518.375, - "99.66015748132622" : 518.677, - "99.66211565741966" : 518.997, - "99.66406930069807" : 519.313, - "99.66601690022311" : 519.589, - "99.66797583178572" : 519.845, - "99.66993854069419" : 520.069, - "99.67188387381172" : 520.499, - "99.67384280537433" : 520.723, - "99.6757813392693" : 520.943, - "99.67774555911612" : 521.171, - "99.67969542504868" : 521.495, - "99.6816460464504" : 521.793, - "99.68359515691378" : 522.459, - "99.68555635488391" : 522.817, - "99.68750093253226" : 523.083, - "99.6894591086257" : 523.409, - "99.69140897455826" : 524.145, - "99.69336110689832" : 524.559, - "99.69531399470756" : 524.931, - "99.69727292627017" : 526.027, - "99.69922203673356" : 526.627, - "99.701180212827" : 527.071, - "99.70313838892044" : 527.727, - "99.70510789705146" : 527.979, - "99.70704189813141" : 528.219, - "99.70899705234815" : 528.495, - "99.71094465187319" : 528.819, - "99.7129013170283" : 529.407, - "99.71484665014582" : 529.699, - "99.7168010488934" : 530.103, - "99.71877584530863" : 530.375, - "99.72070380263519" : 531.051, - "99.72265820138277" : 531.999, - "99.72461184466118" : 532.695, - "99.7265707762238" : 533.195, - "99.7285274413789" : 533.523, - "99.73047655184227" : 533.899, - "99.7324354834049" : 534.263, - "99.73438081652242" : 534.819, - "99.73633445980083" : 535.419, - "99.73828205932585" : 536.023, - "99.74023872448096" : 536.635, - "99.74220445526612" : 537.203, - "99.74414223369192" : 538.067, - "99.746094366032" : 539.111, - "99.74806009681716" : 540.291, - "99.75000316352715" : 541.119, - "99.75196436149729" : 541.507, - "99.75391876024487" : 541.855, - "99.75588449103003" : 542.079, - "99.75781849210998" : 542.479, - "99.75977591273424" : 542.991, - "99.76171973491343" : 543.263, - "99.76367564459935" : 543.551, - "99.76565195195292" : 543.827, - "99.76758595303286" : 544.315, - "99.76954790647216" : 544.775, - "99.771490217713" : 545.643, - "99.77343932817638" : 546.255, - "99.77541790193746" : 546.731, - "99.77735416942491" : 547.727, - "99.77930554629582" : 548.423, - "99.78126070051256" : 549.091, - "99.78320376722257" : 550.955, - "99.78515816597016" : 553.591, - "99.7871110537794" : 554.539, - "99.78906922987284" : 555.359, - "99.79101682939788" : 555.795, - "99.79297651642966" : 556.447, - "99.794943002684" : 557.235, - "99.79687775923311" : 557.911, - "99.79884424548744" : 558.511, - "99.80079939970419" : 558.955, - "99.80274020000668" : 559.379, - "99.8046885550009" : 560.267, - "99.80567897508519" : 560.503, - "99.80665504125523" : 560.643, - "99.80762506367189" : 560.843, - "99.80859433061937" : 561.327, - "99.80957039678941" : 561.975, - "99.81055477312033" : 562.339, - "99.81152404006782" : 562.943, - "99.81250010623785" : 563.455, - "99.81348372709961" : 563.735, - "99.81446130420798" : 564.119, - "99.8154351039705" : 564.587, - "99.81641872483225" : 564.915, - "99.81738421443389" : 565.123, - "99.8183633024806" : 565.327, - "99.81933936865063" : 565.611, - "99.82032374498156" : 566.063, - "99.82130812131248" : 566.267, - "99.82229325311258" : 566.391, - "99.82325798724504" : 566.539, - "99.82422725419252" : 566.731, - "99.82520332036256" : 567.135, - "99.82618467481679" : 567.711, - "99.82715016441843" : 567.995, - "99.82813227434183" : 568.219, - "99.82910305222767" : 568.451, - "99.83007836292852" : 568.995, - "99.83106047285193" : 569.475, - "99.83203502808362" : 569.975, - "99.83301109425365" : 570.483, - "99.83398716042369" : 573.147, - "99.83496624847041" : 573.863, - "99.83594155917127" : 574.535, - "99.83692140268717" : 574.763, - "99.8379027571414" : 575.247, - "99.83886975768138" : 575.551, - "99.83984733478975" : 575.987, - "99.84082944471317" : 576.231, - "99.8417972007223" : 577.051, - "99.84277553329986" : 577.387, - "99.84375764322326" : 577.855, - "99.84473748673915" : 578.215, - "99.84571959666256" : 578.483, - "99.84667979797999" : 578.779, - "99.84766039696505" : 580.615, - "99.8486387295426" : 580.999, - "99.84962083946601" : 581.419, - "99.85058632906764" : 582.659, - "99.85157372727525" : 583.451, - "99.85253997234605" : 584.415, - "99.85352434867697" : 585.019, - "99.85449965937784" : 585.247, - "99.85548101383208" : 585.687, - "99.8564517917179" : 586.463, - "99.8574233250729" : 586.831, - "99.85840619046549" : 587.175, - "99.85938376757386" : 587.371, - "99.86035378999053" : 587.587, - "99.86133816632145" : 588.199, - "99.86231649889899" : 588.419, - "99.86328878772318" : 588.727, - "99.86426183201652" : 589.091, - "99.86523865365572" : 589.583, - "99.86621471982576" : 590.155, - "99.86719531881083" : 591.107, - "99.86816609669665" : 591.587, - "99.86914594021255" : 592.383, - "99.87011822903672" : 592.879, - "99.8711063827135" : 593.119, - "99.87207111684596" : 593.543, - "99.873047183016" : 593.851, - "99.87403307028526" : 594.151, - "99.87502877865377" : 594.299, - "99.87599804560125" : 594.427, - "99.87695598051116" : 594.867, - "99.87794640059546" : 595.171, - "99.87892095582716" : 595.359, - "99.87988417902126" : 595.907, - "99.8808602451913" : 596.707, - "99.88183631136133" : 597.079, - "99.88282144316143" : 597.659, - "99.88378919917056" : 598.131, - "99.88476904268646" : 598.767, - "99.88574359791815" : 599.203, - "99.88672268596487" : 600.159, - "99.88769648572739" : 600.955, - "99.8886785956508" : 602.791, - "99.8896531508825" : 604.631, - "99.89062846158335" : 605.023, - "99.89160603869173" : 605.695, - "99.8925889040843" : 606.967, - "99.89355590462428" : 611.135, - "99.89454330283189" : 611.623, - "99.89551181431021" : 611.971, - "99.89648485860356" : 612.747, - "99.89746394665028" : 613.531, - "99.89844379016617" : 614.043, - "99.89941532352117" : 614.935, - "99.90042009751974" : 615.351, - "99.90137274414545" : 615.751, - "99.90234427750045" : 616.555, - "99.90283382152381" : 616.935, - "99.90332185460882" : 617.419, - "99.90381819785473" : 617.715, - "99.90429792077886" : 618.527, - "99.9047904866789" : 618.755, - "99.90527700882558" : 619.011, - "99.90576579737977" : 619.911, - "99.90625156405727" : 620.203, - "99.90675168464904" : 620.359, - "99.90723065210399" : 620.559, - "99.90771792971984" : 620.755, - "99.90820369639734" : 621.055, - "99.90869550682821" : 621.591, - "99.90918278444406" : 622.199, - "99.90967610581328" : 622.691, - "99.91016187249078" : 622.799, - "99.91064839463745" : 623.167, - "99.91113944959916" : 623.863, - "99.9116214389308" : 624.139, - "99.91210947201581" : 624.447, - "99.91260505979255" : 624.671, - "99.9130946038159" : 624.859, - "99.91358565877762" : 624.971, - "99.91407066998595" : 625.091, - "99.9145526593176" : 625.263, - "99.91504144787177" : 625.691, - "99.91553250283349" : 626.195, - "99.91601600310346" : 627.375, - "99.91650781353434" : 628.387, - "99.91699358021185" : 628.775, - "99.91748085782768" : 628.951, - "99.9179688909127" : 630.723, - "99.91845919040524" : 631.331, - "99.91894722349025" : 633.047, - "99.91943827845196" : 634.403, - "99.91992328966029" : 635.235, - "99.92041132274531" : 636.959, - "99.92090313317618" : 637.451, - "99.9213911662612" : 637.827, - "99.92188902044545" : 638.231, - "99.92236345508537" : 638.983, - "99.9228537545779" : 639.635, - "99.92334103219375" : 642.223, - "99.9238283098096" : 642.619, - "99.9243193647713" : 642.843, - "99.92480588691798" : 643.031, - "99.92529694187968" : 643.735, - "99.925781953088" : 644.055, - "99.92626998617303" : 645.099, - "99.92676104113472" : 645.843, - "99.92724831875057" : 646.147, - "99.92774088465062" : 646.359, - "99.92822967320481" : 646.551, - "99.92871619535148" : 647.055, - "99.92919969562148" : 647.367, - "99.929689995114" : 647.563, - "99.9301787836682" : 647.895, - "99.93067210503742" : 648.303, - "99.93117222562918" : 648.443, - "99.93165043761496" : 648.523, - "99.93212940506992" : 648.631, - "99.93261743815494" : 648.843, - "99.93310547123995" : 649.255, - "99.93359954807835" : 649.411, - "99.93409060304005" : 649.547, - "99.93457032596417" : 649.695, - "99.9350606254567" : 650.091, - "99.93555243588759" : 650.367, - "99.93604046897259" : 650.615, - "99.93652548018093" : 650.879, - "99.93701577967346" : 651.255, - "99.93751061198103" : 651.443, - "99.93799562318935" : 651.587, - "99.93849045549692" : 651.715, - "99.93897848858194" : 651.815, - "99.93945896697524" : 651.915, - "99.93995379928279" : 652.039, - "99.94043352220692" : 652.191, - "99.94092231076111" : 652.451, - "99.94140807743861" : 652.727, - "99.94190064333866" : 652.919, - "99.942385654547" : 653.263, - "99.94287217669367" : 653.463, - "99.94336096524785" : 653.635, - "99.94384899833287" : 653.811, - "99.94433854235623" : 653.983, - "99.94482808637959" : 654.383, - "99.94531460852626" : 654.703, - "99.94580264161128" : 655.691, - "99.94629520751133" : 656.039, - "99.94677870778132" : 656.251, - "99.94726825180467" : 656.719, - "99.94775779582804" : 657.103, - "99.94825489454311" : 657.271, - "99.94873084012139" : 657.379, - "99.94922642789811" : 657.511, - "99.94970841722976" : 657.659, - "99.95019947219146" : 657.951, - "99.9506867498073" : 658.387, - "99.95117780476902" : 659.023, - "99.95142106584235" : 659.179, - "99.95166508238486" : 659.359, - "99.95190985439653" : 660.883, - "99.95215915922324" : 660.999, - "99.9523941101357" : 661.359, - "99.95263888214737" : 661.563, - "99.95288743150492" : 662.771, - "99.95312540429406" : 663.071, - "99.95336942083655" : 663.403, - "99.95361419284824" : 665.703, - "99.95385820939075" : 667.847, - "99.95410298140243" : 668.427, - "99.95434775341411" : 668.787, - "99.95459101448745" : 669.375, - "99.95483578649912" : 669.675, - "99.95508509132584" : 669.903, - "99.95532608599166" : 670.103, - "99.95557161347251" : 670.311, - "99.95581940736088" : 671.963, - "99.95605738015001" : 672.067, - "99.9563074404459" : 672.199, - "99.9565461687042" : 672.367, - "99.9567879188392" : 672.579, - "99.9570319353817" : 677.439, - "99.95727746286255" : 677.651, - "99.95752374581258" : 677.855, - "99.95776549594757" : 679.795, - "99.95801102342843" : 680.003, - "99.95825503997094" : 680.215, - "99.95852172058859" : 680.687, - "99.95874156211761" : 680.731, - "99.95899162241349" : 680.775, - "99.95923261707931" : 680.839, - "99.95947285627595" : 681.115, - "99.95972065016433" : 681.267, - "99.95996240029932" : 681.419, - "99.960207172311" : 681.639, - "99.96045269979184" : 681.955, - "99.96069596086518" : 682.159, - "99.96093997740769" : 682.367, - "99.9611817275427" : 683.003, - "99.96142725502354" : 683.207, - "99.9616727825044" : 683.427, - "99.96191453263938" : 684.107, - "99.9621585491819" : 684.519, - "99.9624025657244" : 685.331, - "99.96264658226691" : 685.787, - "99.96289286521693" : 686.259, - "99.96314141457448" : 686.407, - "99.9633929858087" : 686.503, - "99.96362415937529" : 686.907, - "99.9638681759178" : 687.355, - "99.9641121924603" : 687.899, - "99.96435620900282" : 688.443, - "99.96460173648366" : 689.703, - "99.96485028584121" : 693.799, - "99.96508825863033" : 693.911, - "99.96533227517284" : 695.935, - "99.96558233546872" : 696.619, - "99.96582106372703" : 696.939, - "99.96606659120789" : 697.819, - "99.96631136321957" : 698.191, - "99.96655462429291" : 698.415, - "99.9667986408354" : 698.835, - "99.96704190190874" : 699.611, - "99.96728516298208" : 699.895, - "99.96752993499376" : 700.523, - "99.96777395153627" : 700.735, - "99.96801947901713" : 701.175, - "99.96826576196715" : 701.643, - "99.96851280038635" : 701.803, - "99.96875606145969" : 701.927, - "99.96899781159468" : 702.091, - "99.96923956172967" : 702.427, - "99.96948660014887" : 703.091, - "99.96972759481469" : 703.299, - "99.96997387776472" : 703.515, - "99.97021638336888" : 703.827, - "99.97046644366476" : 703.975, - "99.9707044164539" : 704.087, - "99.97094767752723" : 704.163, - "99.97119622688477" : 704.219, - "99.97144024342728" : 704.275, - "99.97169483653819" : 704.347, - "99.97193280932733" : 704.423, - "99.97217909227734" : 704.519, - "99.9724163095973" : 704.863, - "99.9726580597323" : 705.039, - "99.9729020762748" : 705.283, - "99.97314533734814" : 705.523, - "99.97339010935983" : 706.387, - "99.97363563684068" : 706.851, - "99.97388569713657" : 706.967, - "99.97413575743245" : 707.071, - "99.97436617552987" : 707.343, - "99.97461019207238" : 707.791, - "99.97485496408405" : 708.571, - "99.97510124703408" : 708.795, - "99.97534450810741" : 709.207, - "99.97559079105744" : 712.499, - "99.97571242159411" : 712.611, - "99.97583254119243" : 712.711, - "99.9759541717291" : 712.827, - "99.97607731320412" : 712.931, - "99.97619667733326" : 713.107, - "99.97633039537668" : 713.227, - "99.97644598215997" : 713.271, - "99.97656383535079" : 713.323, - "99.97668773229496" : 713.387, - "99.97681238470832" : 713.455, - "99.97692948242995" : 713.631, - "99.9770518684358" : 713.827, - "99.97717652084916" : 713.935, - "99.97729664044748" : 714.047, - "99.97741827098415" : 714.167, - "99.97754065698999" : 714.787, - "99.97766530940335" : 714.907, - "99.97778391806332" : 714.991, - "99.97790630406917" : 715.075, - "99.978028690075" : 715.179, - "99.9781525870192" : 715.303, - "99.97827497302502" : 715.423, - "99.97839509262336" : 715.515, - "99.9785174786292" : 715.591, - "99.97865044120344" : 715.655, - "99.97876376157922" : 715.703, - "99.97889219133843" : 715.763, - "99.97900400077587" : 715.871, - "99.97912865318922" : 716.515, - "99.97925103919506" : 716.611, - "99.97937493613925" : 716.663, - "99.97949354479923" : 716.711, - "99.97961441986672" : 716.783, - "99.97973680587256" : 716.855, - "99.97986523563178" : 716.991, - "99.97998157788425" : 717.095, - "99.98010471935926" : 717.219, - "99.98022559442676" : 717.431, - "99.98035175777845" : 717.907, - "99.98046961096927" : 718.467, - "99.98059199697511" : 718.715, - "99.98071362751178" : 718.947, - "99.98083676898678" : 719.179, - "99.98095839952344" : 719.431, - "99.98108154099846" : 719.663, - "99.98120770435015" : 719.903, - "99.98132706847932" : 719.959, - "99.98144718807764" : 720.023, - "99.98156806314513" : 720.071, - "99.98169724837352" : 720.107, - "99.98181207968764" : 720.139, - "99.98193748757018" : 720.175, - "99.98205685169933" : 720.243, - "99.98218074864351" : 720.339, - "99.98230162371101" : 720.415, - "99.98242627612436" : 721.511, - "99.98254412931517" : 721.611, - "99.98266727079019" : 721.715, - "99.98278814585768" : 721.815, - "99.98291128733268" : 721.907, - "99.98303593974605" : 728.859, - "99.98315605934437" : 728.959, - "99.98327693441186" : 729.063, - "99.98340158682522" : 729.167, - "99.98352095095437" : 729.267, - "99.9836463588369" : 729.791, - "99.98376572296606" : 729.887, - "99.98388886444107" : 729.983, - "99.98401351685442" : 730.091, - "99.98413439192191" : 730.199, - "99.98425375605107" : 730.299, - "99.98437840846442" : 735.423, - "99.98450306087778" : 735.527, - "99.98462015859943" : 735.575, - "99.98474330007443" : 735.627, - "99.98486870795696" : 735.675, - "99.98499033849363" : 735.707, - "99.98511272449947" : 735.743, - "99.98523435503614" : 735.779, - "99.98536354026453" : 735.819, - "99.9854821489245" : 735.859, - "99.98560529039952" : 735.911, - "99.98571785530612" : 735.955, - "99.98584326318866" : 736.227, - "99.98596338278698" : 736.335, - "99.98608425785447" : 736.435, - "99.98621268761369" : 741.767, - "99.98633205174283" : 742.171, - "99.98645897056372" : 742.235, - "99.98657909016204" : 742.287, - "99.98670751992125" : 742.327, - "99.9868215957662" : 742.347, - "99.98694624817955" : 742.375, - "99.98706183496284" : 742.407, - "99.98718950925289" : 742.447, - "99.98731491713542" : 742.507, - "99.98743050391872" : 747.011, - "99.98755062351704" : 747.115, - "99.98767452046123" : 747.223, - "99.9877961509979" : 747.331, - "99.9878550775933" : 747.375, - "99.98791778153456" : 747.427, - "99.98797670812996" : 752.499, - "99.98803714566371" : 782.011, - "99.9880990941358" : 782.103, - "99.98815953166955" : 782.191, - "99.98822072467247" : 782.295, - "99.98828342861374" : 782.395, - "99.98834311067831" : 782.483, - "99.98840505915041" : 782.519, - "99.98846625215333" : 782.559, - "99.98853046703293" : 782.599, - "99.98858712722082" : 782.631, - "99.98865134210043" : 782.675, - "99.98871026869583" : 782.731, - "99.98877070622957" : 783.211, - "99.9888318992325" : 783.299, - "99.98889460317376" : 783.399, - "99.98895352976916" : 783.487, - "99.98901547824126" : 783.591, - "99.98907516030583" : 783.695, - "99.98913710877792" : 783.807, - "99.98919754631167" : 783.863, - "99.98925949478377" : 783.919, - "99.98932295419421" : 783.971, - "99.98938112532043" : 784.015, - "99.98944760660756" : 784.067, - "99.98950653320297" : 784.115, - "99.98956319339085" : 784.963, - "99.98962438639377" : 785.071, - "99.98968557939669" : 785.179, - "99.98974828333796" : 785.287, - "99.98980796540253" : 785.371, - "99.98986915840545" : 785.427, - "99.98993110687755" : 785.483, - "99.9899915444113" : 785.535, - "99.99005500382172" : 785.591, - "99.99011468588631" : 785.651, - "99.99017512342006" : 785.751, - "99.9902355609538" : 785.859, - "99.99029599848755" : 785.959, - "99.99035870242882" : 786.471, - "99.99041762902422" : 786.571, - "99.99048033296549" : 786.683, - "99.99054077049924" : 786.803, - "99.99060498537884" : 786.895, - "99.99066466744341" : 786.951, - "99.99072510497716" : 787.003, - "99.99078403157257" : 787.055, - "99.9908452245755" : 787.111, - "99.99090792851675" : 787.179, - "99.9909683660505" : 787.283, - "99.99102955905342" : 787.387, - "99.99108924111799" : 787.919, - "99.99115118959008" : 788.051, - "99.991212382593" : 788.183, - "99.99127357559593" : 788.319, - "99.99133552406802" : 788.455, - "99.99139445066342" : 788.591, - "99.99145564366634" : 788.731, - "99.99151683666926" : 788.867, - "99.99157878514136" : 788.935, - "99.99163846720593" : 788.991, - "99.99170192661637" : 789.043, - "99.9917653860268" : 789.095, - "99.99182280168387" : 789.143, - "99.99188248374844" : 789.763, - "99.99194367675136" : 789.895, - "99.99200562522346" : 790.027, - "99.99206757369555" : 790.167, - "99.99212725576012" : 790.303, - "99.99218769329387" : 790.451, - "99.99224888629679" : 790.515, - "99.99231159023806" : 790.575, - "99.99237127230263" : 790.639, - "99.99243246530555" : 790.715, - "99.9924929028393" : 790.795, - "99.99255409584222" : 790.927, - "99.99261528884514" : 791.071, - "99.99267723731722" : 791.923, - "99.99273767485099" : 792.083, - "99.99279962332307" : 792.195, - "99.99285930538765" : 792.331, - "99.99292049839056" : 792.463, - "99.99298169139348" : 792.523, - "99.9930428843964" : 792.579, - "99.99310558833767" : 792.639, - "99.99316753680976" : 792.707, - "99.99322646340516" : 792.767, - "99.99328765640809" : 792.875, - "99.99334733847266" : 792.979, - "99.99340928694475" : 793.527, - "99.99347047994767" : 793.631, - "99.99353091748142" : 793.739, - "99.99359135501517" : 793.847, - "99.99365405895644" : 793.951, - "99.99371449649018" : 794.019, - "99.99377871136979" : 794.083, - "99.99383914890355" : 794.139, - "99.9938965645606" : 794.195, - "99.99392753879664" : 794.235, - "99.99395775756352" : 794.267, - "99.99398873179956" : 794.307, - "99.99401895056644" : 794.351, - "99.99404992480248" : 794.407, - "99.99408165450771" : 794.467, - "99.99411036233623" : 794.519, - "99.99414133657228" : 794.575, - "99.99417155533915" : 794.631, - "99.99421235067443" : 802.667, - "99.99423954756462" : 802.683, - "99.99426523351647" : 802.699, - "99.99429696322169" : 802.715, - "99.99432491558105" : 802.743, - "99.99435437887874" : 802.771, - "99.99438988592982" : 802.807, - "99.99442086016586" : 802.827, - "99.99444805705605" : 802.855, - "99.99447827582293" : 802.895, - "99.99450925005897" : 802.915, - "99.9945409797642" : 805.407, - "99.99457195400024" : 805.427, - "99.99460217276712" : 805.447, - "99.99463163606481" : 805.467, - "99.99466487670837" : 805.491, - "99.99469434000608" : 805.519, - "99.99472380330378" : 805.539, - "99.99475477753982" : 805.555, - "99.99478272989919" : 805.575, - "99.99481748148109" : 805.599, - "99.99484316743293" : 805.619, - "99.99487716354567" : 805.643, - "99.9949081377817" : 805.663, - "99.99493609014107" : 805.675, - "99.99496630890795" : 805.695, - "99.99499577220564" : 805.715, - "99.99503052378755" : 805.739, - "99.99505998708526" : 805.759, - "99.99508869491379" : 805.775, - "99.99512118008818" : 815.163, - "99.99515290979339" : 815.187, - "99.99518086215275" : 815.207, - "99.99520881451211" : 815.227, - "99.99524281062484" : 815.251, - "99.9952707629842" : 815.271, - "99.99530249268942" : 815.295, - "99.9953349778638" : 815.315, - "99.99536293022317" : 815.335, - "99.99539465992838" : 815.367, - "99.99542638963361" : 815.391, - "99.99545434199297" : 815.411, - "99.99548456075983" : 815.439, - "99.9955178014034" : 815.459, - "99.99554499829358" : 815.479, - "99.99557748346797" : 815.503, - "99.9956114795807" : 815.527, - "99.99564169834758" : 815.547, - "99.99567191711445" : 815.567, - "99.9956976030663" : 819.499, - "99.99572933277152" : 820.223, - "99.99576030700756" : 820.255, - "99.99579128124361" : 820.295, - "99.99582150001048" : 820.335, - "99.99585247424653" : 820.375, - "99.99588193754423" : 820.411, - "99.9959121563111" : 820.451, - "99.99594237507797" : 820.495, - "99.99597183837568" : 820.535, - "99.99600432355007" : 820.579, - "99.99603454231695" : 820.623, - "99.99606476108382" : 820.659, - "99.99609422438152" : 820.707, - "99.99612444314839" : 843.151, - "99.99615768379196" : 843.191, - "99.99618639162048" : 843.227, - "99.99621812132571" : 843.263, - "99.9962475846234" : 843.299, - "99.99628006979779" : 843.339, - "99.99631028856467" : 843.371, - "99.99633975186238" : 843.407, - "99.99637223703677" : 843.443, - "99.99640018939613" : 843.479, - "99.996430408163" : 843.515, - "99.99646062692987" : 843.551, - "99.99649084569674" : 843.591, - "99.99652257540197" : 843.623, - "99.99655430510718" : 843.663, - "99.99658301293572" : 843.699, - "99.99661398717176" : 843.747, - "99.99664345046946" : 844.315, - "99.99667366923633" : 844.383, - "99.99671219816409" : 845.879, - "99.996746949746" : 845.891, - "99.9967711247595" : 845.903, - "99.99680134352637" : 845.915, - "99.99682778494738" : 845.927, - "99.99685800371427" : 845.939, - "99.99689124435783" : 845.955, - "99.99692448500139" : 845.967, - "99.99695470376827" : 845.979, - "99.9969698131517" : 845.983, - "99.99697887878176" : 845.987, - "99.99700154285692" : 845.995, - "99.99701060848697" : 845.999, - "99.99703025068544" : 846.007, - "99.99704687100723" : 846.019, - "99.99706273585984" : 846.023, - "99.99707406789742" : 846.027, - "99.99709522103423" : 846.035, - "99.99711033041767" : 846.039, - "99.99711788510938" : 846.043, - "99.99713299449282" : 846.051, - "99.99715565856798" : 846.063, - "99.99716396872887" : 846.067, - "99.99718058905064" : 846.075, - "99.99719267655739" : 846.079, - "99.99722516173179" : 846.087, - "99.99724631486859" : 846.095, - "99.99726066878286" : 846.099, - "99.99726973441292" : 846.103, - "99.99728786567304" : 846.111, - "99.99729995317979" : 895.071, - "99.9973158180324" : 895.099, - "99.99733017194667" : 895.127, - "99.99734679226846" : 895.159, - "99.99736039071355" : 895.183, - "99.99737625556615" : 895.211, - "99.99739287588794" : 895.239, - "99.9974072298022" : 895.255, - "99.99742158371646" : 895.271, - "99.99743744856907" : 895.287, - "99.99745331342169" : 895.307, - "99.99746993374346" : 895.327, - "99.99748277671938" : 902.247, - "99.997498641572" : 902.259, - "99.99751526189378" : 902.271, - "99.99753263768473" : 902.283, - "99.9975439697223" : 902.291, - "99.99755983457491" : 902.303, - "99.99757721036586" : 902.323, - "99.99759458615682" : 902.335, - "99.99760894007109" : 902.343, - "99.99762329398536" : 902.351, - "99.9976353814921" : 902.359, - "99.99765200181388" : 902.371, - "99.99766937760484" : 902.383, - "99.99768146511158" : 902.391, - "99.99769808543337" : 902.403, - "99.99771395028597" : 902.415, - "99.99773057060776" : 902.427, - "99.9977426581145" : 902.435, - "99.99775852296712" : 902.447, - "99.99777438781972" : 902.459, - "99.99779176361068" : 902.471, - "99.99780838393245" : 902.479, - "99.99782122690837" : 902.487, - "99.99783784723016" : 902.499, - "99.99784917926773" : 902.507, - "99.99786655505869" : 902.519, - "99.99788317538047" : 902.531, - "99.99789526288721" : 902.539, - "99.99791414961652" : 902.551, - "99.99793530275332" : 902.559, - "99.99794890119841" : 902.563, - "99.99795947776683" : 902.567, - "99.99798138637281" : 902.575, - "99.99798894106453" : 902.579, - "99.998008583263" : 902.587, - "99.99801991530057" : 902.599, - "99.99803578015319" : 902.611, - "99.99804711219076" : 902.619, - "99.99806373251253" : 902.631, - "99.99807959736515" : 902.643, - "99.99809772862527" : 902.655, - "99.99810906066286" : 902.663, - "99.99812870286132" : 902.675, - "99.99814230130642" : 902.683, - "99.99815589975151" : 902.691, - "99.99817176460412" : 902.703, - "99.9981853630492" : 977.143, - "99.99819971696347" : 977.155, - "99.99821558181608" : 977.183, - "99.99823069119952" : 977.207, - "99.99824655605212" : 977.235, - "99.99826166543556" : 977.263, - "99.998276774819" : 977.287, - "99.99829263967162" : 977.315, - "99.99830850452422" : 977.343, - "99.99832210296931" : 977.367, - "99.99833721235275" : 977.395, - "99.99835383267454" : 977.423, - "99.99836743111963" : 977.447, - "99.9983870733181" : 977.479, - "99.99839916082485" : 977.499, - "99.99841502567746" : 977.527, - "99.99842862412254" : 977.551, - "99.99844448897515" : 977.579, - "99.99846035382777" : 977.607, - "99.99847546321121" : 977.643, - "99.99848301790291" : 977.659, - "99.99848981712546" : 977.675, - "99.99849812728635" : 977.695, - "99.99850568197807" : 977.711, - "99.9985132366698" : 977.727, - "99.99852079136151" : 977.743, - "99.99852759058406" : 977.759, - "99.99853665621413" : 977.779, - "99.99854496637501" : 977.795, - "99.99855252106673" : 977.819, - "99.99856007575845" : 977.835, - "99.998566874981" : 977.851, - "99.99857442967271" : 977.867, - "99.99858122889526" : 977.879, - "99.99858953905616" : 977.895, - "99.9985963382787" : 977.915, - "99.99860389297042" : 977.931, - "99.99861371406965" : 977.955, - "99.99861975782302" : 977.967, - "99.99862806798392" : 977.987, - "99.99863486720646" : 978.003, - "99.99864242189818" : 978.019, - "99.99865073205908" : 978.039, - "99.99865753128162" : 978.055, - "99.99866659691168" : 978.079, - "99.99867264066505" : 978.091, - "99.99868019535677" : 978.107, - "99.99869001645601" : 978.123, - "99.99869757114773" : 978.135, - "99.99870588130861" : 978.143, - "99.998711925062" : 978.147, - "99.99872325709957" : 978.155, - "99.99873156726046" : 978.159, - "99.99874289929804" : 978.163, - "99.9987519649281" : 978.167, - "99.99876178602733" : 978.171, - "99.99877236259574" : 978.175, - "99.99878369463332" : 978.179, - "99.99879351573256" : 978.183, - "99.99880333683178" : 978.187, - "99.99881240246185" : 978.191, - "99.9988192016844" : 978.199, - "99.99882751184528" : 978.207, - "99.99883355559867" : 978.215, - "99.99884035482121" : 978.223, - "99.99884942045126" : 978.591, - "99.99885621967381" : 978.599, - "99.99886528530388" : 978.611, - "99.99887132905725" : 978.619, - "99.99887888374897" : 978.627, - "99.99888719390987" : 978.635, - "99.99889550407075" : 978.643, - "99.99890381423164" : 978.655, - "99.99891061345419" : 978.671, - "99.99891741267673" : 978.679, - "99.99892496736845" : 978.687, - "99.99893403299852" : 978.699, - "99.9989400767519" : 978.707, - "99.99894989785112" : 978.719, - "99.99895745254284" : 978.727, - "99.99896425176539" : 978.735, - "99.99897105098793" : 978.743, - "99.99897785021048" : 978.751, - "99.99898767130972" : 978.763, - "99.99899447053227" : 978.771, - "99.99900126975481" : 978.779, - "99.99901184632321" : 978.791, - "99.99901864554576" : 978.799, - "99.99902771117583" : 978.807, - "99.99903451039837" : 978.815, - "99.99904130962092" : 978.823, - "99.99904659790512" : 978.835, - "99.99905490806601" : 978.843, - "99.99906472916524" : 978.855, - "99.99907152838779" : 978.863, - "99.99908134948703" : 978.871, - "99.9990904151171" : 978.879, - "99.9990926815246" : 978.883, - "99.99910023621632" : 978.895, - "99.99910779090804" : 978.907, - "99.99911534559976" : 978.919, - "99.99912441122983" : 978.931, - "99.99913196592153" : 978.943, - "99.99913952061326" : 978.955, - "99.99914783077415" : 978.967, - "99.99915538546587" : 978.979, - "99.99916294015759" : 978.991, - "99.99917125031848" : 979.003, - "99.99917956047936" : 979.015, - "99.9991840932944" : 979.019, - "99.99919542533198" : 979.027, - "99.99920071361618" : 979.031, - "99.99921129018459" : 979.039, - "99.99921431206127" : 979.043, - "99.99922262222216" : 979.055, - "99.99923168785223" : 979.071, - "99.99923924254395" : 979.083, - "99.99924150895146" : 979.087, - "99.99924679723566" : 979.095, - "99.99924906364318" : 979.099, - "99.99925435192738" : 979.107, - "99.9992566183349" : 979.111, - "99.9992619066191" : 979.119, - "99.99926492849579" : 979.123, - "99.99926946131082" : 979.127, - "99.99927399412584" : 979.131, - "99.99927701600254" : 979.135, - "99.99928003787923" : 979.139, - "99.99928532616343" : 979.147, - "99.99928834804011" : 979.151, - "99.99929061444763" : 979.155, - "99.99929590273183" : 979.163, - "99.99929892460852" : 979.167, - "99.9993019464852" : 979.171, - "99.99930723476942" : 979.179, - "99.9993102566461" : 979.183, - "99.99931478946112" : 979.191, - "99.99931781133782" : 979.195, - "99.99932309962202" : 979.203, - "99.99932536602954" : 979.207, - "99.99933065431374" : 979.215, - "99.99933292072126" : 979.219, - "99.99933820900546" : 979.227, - "99.99934123088214" : 979.231, - "99.99934425275883" : 979.235, - "99.99934878557386" : 979.243, - "99.99935256291973" : 1017.839, - "99.9993555847964" : 1017.843, - "99.9993638949573" : 1017.851, - "99.9993691832415" : 1017.855, - "99.99937371605654" : 1017.859, - "99.99937824887157" : 1017.863, - "99.99938353715577" : 1017.867, - "99.9993880699708" : 1017.871, - "99.99939260278583" : 1017.875, - "99.99939638013169" : 1017.879, - "99.99939940200838" : 1017.883, - "99.9994016684159" : 1018.227, - "99.99940620123093" : 1018.231, - "99.99941073404595" : 1018.235, - "99.99941526686099" : 1018.239, - "99.99941979967602" : 1018.243, - "99.99942433249105" : 1018.247, - "99.99942886530609" : 1018.251, - "99.99943339812111" : 1018.255, - "99.99943793093614" : 1018.259, - "99.99944246375117" : 1018.263, - "99.9994469965662" : 1018.267, - "99.99945152938123" : 1018.271, - "99.99945606219626" : 1018.275, - "99.9994605950113" : 1018.279, - "99.9994658832955" : 1018.283, - "99.9994711715797" : 1018.287, - "99.99947721533307" : 1018.291, - "99.99948174814811" : 1018.295, - "99.99948628096314" : 1018.299, - "99.999490058309" : 1018.303, - "99.99949459112403" : 1018.307, - "99.99949912393906" : 1018.311, - "99.99950441222326" : 1018.315, - "99.9995089450383" : 1018.319, - "99.99951347785333" : 1018.323, - "99.99951725519918" : 1018.327, - "99.9995225434834" : 1018.331, - "99.99952632082925" : 1018.335, - "99.99953085364427" : 1018.339, - "99.99953538645931" : 1018.343, - "99.99953916380517" : 1018.347, - "99.99954369662021" : 1018.351, - "99.99954822943523" : 1018.355, - "99.99955276225026" : 1018.359, - "99.99956107241115" : 1018.363, - "99.99956484975701" : 1018.367, - "99.99956938257205" : 1018.371, - "99.99957391538707" : 1018.375, - "99.9995784482021" : 1018.379, - "99.99958298101714" : 1018.383, - "99.99958751383217" : 1018.387, - "99.9995920466472" : 1018.391, - "99.99959657946224" : 1018.395, - "99.99960035680809" : 1018.399, - "99.99960488962311" : 1018.403, - "99.99960942243816" : 1018.407, - "99.99961395525318" : 1018.411, - "99.99961848806821" : 1018.415, - "99.99962302088325" : 1018.419, - "99.99962755369828" : 1018.423, - "99.9996320865133" : 1018.427, - "99.99963661932834" : 1018.431, - "99.9996403966742" : 1018.435, - "99.99964492948924" : 1018.439, - "99.99964946230426" : 1018.443, - "99.99965399511929" : 1018.447, - "99.99965852793433" : 1018.451, - "99.99966306074936" : 1018.455, - "99.99966759356438" : 1018.459, - "99.99967137091025" : 1018.463, - "99.99967590372528" : 1018.467, - "99.9996804365403" : 1018.471, - "99.99968496935534" : 1018.475, - "99.99968950217037" : 1018.479, - "99.9996940349854" : 1018.483, - "99.99969856780044" : 1018.487, - "99.99970385608464" : 1018.491, - "99.99970763343049" : 1018.495, - "99.99971216624553" : 1018.499, - "99.99971594359138" : 1018.503, - "99.99972047640641" : 1018.507, - "99.99972500922145" : 1018.511, - "99.99973029750565" : 1018.515, - "99.99973483032068" : 1018.519, - "99.99973936313572" : 1018.523, - "99.99974314048157" : 1018.527, - "99.99974993970412" : 1018.531, - "99.99975673892666" : 1018.535, - "99.99976127174169" : 1018.539, - "99.99976580455673" : 1018.543, - "99.99977033737176" : 1018.547, - "99.99977487018678" : 1018.551, - "99.99977940300182" : 1018.555, - "99.99978393581685" : 1018.559, - "99.99978846863188" : 1018.563, - "99.99979300144692" : 1018.567, - "99.99979753426194" : 1018.571, - "99.99980206707697" : 1018.575, - "99.99980735536118" : 1018.579, - "99.99980811083034" : 1018.587, - "99.99981339911456" : 1018.591, - "99.99981868739876" : 1018.595, - "99.99982322021378" : 1018.599, - "99.99982850849798" : 1018.603, - "99.99983304131302" : 1018.607, - "99.99983757412805" : 1018.611, - "99.99984286241225" : 1018.615, - "99.99984815069645" : 1018.619, - "99.99985268351149" : 1018.623, - "99.99985797179569" : 1018.627, - "99.99986326007989" : 1018.631, - "99.99986779289493" : 1018.635, - "99.99987308117913" : 1018.639, - "99.99987761399416" : 1018.643, - "99.99988290227836" : 1018.647, - "99.9998874350934" : 1018.651, - "99.9998927233776" : 1018.655, - "99.99989725619263" : 1018.659, - "99.99990178900767" : 1018.663, - "99.99990632182269" : 1018.667, - "99.99991161010689" : 1018.671, - "99.99991614292192" : 1018.675, - "99.99992143120613" : 1018.679, - "99.99992671949033" : 1018.683, - "99.99993200777453" : 1018.687, - "99.99993729605873" : 1018.691, - "99.9999433398121" : 1018.695, - "99.99994409528128" : 1019.591, - "99.99994485075045" : 1027.743, - "99.99995013903465" : 1035.775, - "99.9999546718497" : 1035.779, - "99.99995920466472" : 1035.783, - "99.99996600388727" : 1035.787, - "99.9999758249865" : 1035.791, - "99.9999811132707" : 1035.795, - "99.9999864015549" : 1035.799, - "99.99999546718497" : 1035.803, - "100.0" : 1035.807 - }, - "endToEndLatencyAvg" : [ 4568.136294539819, 4481.7059320836825, 4461.359856433945, 4569.45452699476, 4698.779138081656, 4687.916211019565, 4565.0332885606695, 4633.78919636341, 4644.725951778537, 4811.357786626611, 4776.406141493598, 4861.37740750367, 4724.87345891231, 4879.983187570335, 4808.166313372985, 4865.947124249701, 4972.084420891801, 5057.394384212628, 4830.0604335160415, 4711.738304809057, 4771.768581572996, 4815.634896475242, 4879.520137579242, 4810.997441267243, 4785.615718789955, 4531.847902555981, 4552.324287496918, 4666.8749505095175, 4596.409888935392, 4727.61238013606, 4588.7647865355575, 4840.781763769625, 4807.297155502852, 4933.279406135218, 4949.0910886219535, 5051.81058850724, 4935.591752310285, 4948.748393402412, 4974.647084486068, 5081.632192034727, 4942.394590956403, 4923.533212526088, 7143.036824952758, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], - "endToEndLatency50pct" : [ 4441.023, 4356.031, 4401.023, 4524.031, 4644.031, 4597.023, 4486.015, 4565.023, 4657.023, 4837.023, 4711.007, 4766.015, 4803.007, 4851.007, 4892.031, 4987.007, 5035.007, 5187.007, 4663.007, 4704.031, 4713.023, 4713.023, 4807.007, 4820.031, 4656.031, 4424.031, 4411.007, 4528.031, 4588.031, 4593.023, 4584.031, 4821.023, 4864.031, 4987.007, 5053.023, 5012.031, 5091.007, 5132.031, 5051.007, 5319.007, 5016.031, 4704.031, 7442.015, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], - "endToEndLatency75pct" : [ 6789.023, 6417.023, 6400.031, 6611.007, 6710.015, 6793.023, 6429.023, 6654.015, 6495.007, 6798.015, 6666.015, 7049.023, 6595.007, 6821.023, 6904.031, 6957.023, 7200.031, 7583.007, 6930.015, 6858.015, 6800.031, 6989.023, 7053.023, 6910.015, 6929.023, 6705.023, 6728.031, 6905.023, 6659.007, 7150.015, 6427.007, 6863.007, 6764.031, 6886.015, 6931.007, 7148.031, 6919.007, 7010.015, 7172.031, 7309.023, 7154.015, 7244.031, 9346.047, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], - "endToEndLatency95pct" : [ 8777.023, 8899.007, 8640.063, 8777.023, 9048.063, 8980.031, 8810.047, 8899.007, 8629.055, 9033.023, 9151.039, 9364.031, 8934.015, 9489.023, 9002.047, 9245.055, 9058.047, 9530.047, 9421.055, 9068.031, 9265.023, 9202.047, 9437.055, 9331.007, 9552.063, 8783.039, 8575.039, 9099.007, 8746.047, 9179.007, 8752.063, 9276.031, 9009.023, 9231.039, 9158.015, 9612.031, 9158.015, 9186.047, 9195.007, 9582.015, 9296.063, 9235.007, 10902.015, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], - "endToEndLatency99pct" : [ 9201.023, 9531.007, 9180.031, 9332.031, 10004.031, 9525.055, 9800.063, 9374.015, 9177.023, 9834.047, 9967.039, 10095.039, 9535.039, 10411.007, 9363.007, 9611.007, 9533.055, 9966.015, 10537.023, 9744.063, 10121.023, 10629.055, 10008.063, 9992.063, 10110.015, 9449.023, 9270.015, 9630.015, 9463.039, 10503.039, 9788.031, 10059.007, 9494.015, 9867.007, 9889.023, 10666.047, 9758.015, 9460.031, 9867.007, 10234.047, 9998.015, 9692.031, 11553.023, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], - "endToEndLatency999pct" : [ 9420.031, 9707.007, 9488.063, 9498.047, 10431.039, 9820.031, 9935.039, 9497.023, 9417.023, 10218.047, 10400.063, 10390.015, 10141.055, 10515.007, 9513.023, 9681.023, 9708.031, 10231.039, 10917.055, 10156.031, 10406.015, 10880.063, 10358.015, 10101.055, 10273.023, 9707.007, 9434.047, 10169.023, 9746.047, 10778.047, 10041.023, 10342.015, 9644.031, 9976.063, 10005.055, 10879.039, 9868.031, 9672.063, 10043.007, 10403.007, 10201.023, 10485.055, 11687.039, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], - "endToEndLatency9999pct" : [ 9451.007, 9742.015, 9501.055, 9538.047, 10464.063, 9860.031, 9962.047, 9541.055, 9462.015, 10237.055, 10443.007, 10440.063, 10185.023, 10553.023, 9546.047, 9714.047, 9780.031, 10324.031, 10940.031, 10195.007, 10428.031, 10912.063, 10406.015, 10115.007, 10313.023, 9791.039, 9461.055, 10208.063, 9814.015, 10821.055, 10091.007, 10385.023, 9669.055, 10022.015, 10024.063, 10923.007, 9894.015, 9714.047, 10068.031, 10446.015, 10241.023, 10558.015, 11696.063, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], - "endToEndLatencyMax" : [ 9455.039, 9746.047, 9507.007, 9541.055, 10469.055, 9864.063, 9968.063, 9547.007, 9467.007, 10241.023, 10447.039, 10445.055, 10189.055, 10563.007, 9550.015, 9719.039, 9787.007, 10324.031, 10949.055, 10199.039, 10432.063, 10917.055, 10412.031, 10116.031, 10317.055, 9795.007, 9465.023, 10213.055, 9818.047, 10824.063, 10093.055, 10389.055, 9678.015, 10025.023, 10029.055, 10927.039, 9900.031, 9719.039, 10079.039, 10451.007, 10246.015, 10560.063, 11697.023, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], - "aggregatedEndToEndLatencyQuantiles" : { - "1.1961161897996871E-5" : 12.0, - "0.502730624863283" : 208.0, - "1.0029292212672838" : 322.001, - "1.5025394780204269" : 381.001, - "2.000677016714879" : 415.001, - "2.510375765956364" : 447.001, - "3.0064679459662584" : 478.001, - "3.502050281450251" : 508.001, - "4.005327381897748" : 538.003, - "4.510884578832052" : 567.003, - "5.009739787240385" : 596.003, - "5.511181596909158" : 625.003, - "6.001167603770125" : 655.003, - "6.503921403384585" : 689.003, - "7.001300903443752" : 729.003, - "7.500681655402977" : 775.003, - "8.007414784066377" : 827.003, - "8.503515187375077" : 880.003, - "9.008814471755954" : 936.003, - "9.509276961294331" : 992.003, - "10.002954481746068" : 1046.003, - "10.507742426455806" : 1103.007, - "11.005698305003932" : 1158.007, - "11.506482998340935" : 1215.007, - "12.001800693117934" : 1270.007, - "12.50575285164005" : 1325.007, - "13.004211098987891" : 1381.007, - "13.503208346193762" : 1437.007, - "14.003641680400012" : 1492.007, - "14.500130821470396" : 1548.007, - "15.002065281494843" : 1605.007, - "15.503650625106394" : 1663.007, - "16.000272086530273" : 1719.007, - "16.507402923826785" : 1778.007, - "17.000187842571883" : 1836.007, - "17.504930932924502" : 1895.007, - "18.007345334570108" : 1954.007, - "18.501044534627784" : 2010.007, - "19.002902742245134" : 2066.007, - "19.504092619941428" : 2123.007, - "20.00132185790425" : 2177.007, - "20.50265751226118" : 2230.015, - "21.005924894264638" : 2283.007, - "21.501231375452356" : 2333.007, - "22.001897204743" : 2383.007, - "22.50989672142235" : 2436.015, - "23.0085680269665" : 2487.007, - "23.504128682844552" : 2538.015, - "24.00459491024602" : 2589.007, - "24.5015976337054" : 2637.007, - "25.008772577786406" : 2685.007, - "25.502525603072627" : 2732.015, - "26.00203718024011" : 2778.015, - "26.50461754300705" : 2824.015, - "27.00067383953125" : 2867.007, - "27.508558230027333" : 2911.007, - "28.006635215339674" : 2955.007, - "28.508388762790418" : 3002.015, - "29.00857390288728" : 3046.015, - "29.501047831423033" : 3088.015, - "30.003137786552156" : 3130.015, - "30.51083976932929" : 3174.015, - "31.009822812655408" : 3215.007, - "31.50478989587427" : 3255.007, - "32.00189055134669" : 3294.015, - "32.50759128222377" : 3331.007, - "33.0014609288385" : 3367.007, - "33.50852074673623" : 3407.007, - "34.01172907050282" : 3445.007, - "34.510933395324045" : 3484.015, - "35.00545343011697" : 3522.015, - "35.5110517435453" : 3562.015, - "36.00546936088948" : 3600.015, - "36.511275499505786" : 3640.015, - "37.00002277853769" : 3675.007, - "37.51137590598419" : 3713.007, - "38.007832901431975" : 3751.007, - "38.50850695402142" : 3791.007, - "39.00843492913748" : 3829.007, - "39.5083935547309" : 3868.015, - "40.002260958627765" : 3905.007, - "40.503156292712326" : 3943.007, - "41.01050392606824" : 3982.015, - "41.50104986482056" : 4021.007, - "42.000239238189415" : 4062.015, - "42.50636010487816" : 4105.007, - "43.01029506923005" : 4148.015, - "43.50068551287769" : 4191.007, - "44.001555429493216" : 4235.007, - "44.51193222709979" : 4278.015, - "45.00285045701619" : 4320.031, - "45.504917984966745" : 4363.007, - "46.00386738752503" : 4406.015, - "46.50716467243323" : 4452.031, - "47.00396330856772" : 4497.023, - "47.50484070090943" : 4542.015, - "48.00310457937643" : 4588.031, - "48.503193282605494" : 4635.007, - "49.0048047912587" : 4682.015, - "49.5068700764914" : 4730.015, - "50.003242596233285" : 4778.015, - "50.256415539256764" : 4803.007, - "50.502045474558315" : 4827.007, - "50.75118601087693" : 4852.031, - "51.006168079637476" : 4876.031, - "51.25649949913756" : 4899.007, - "51.506556559486604" : 4923.007, - "51.752789038318774" : 4948.031, - "52.00847233019559" : 4973.023, - "52.252489003786145" : 4997.023, - "52.50907910124936" : 5022.015, - "52.75783314252414" : 5046.015, - "53.010585949735955" : 5070.015, - "53.25234420644565" : 5093.023, - "53.50388220815219" : 5116.031, - "53.751022987715984" : 5138.015, - "54.003269688264986" : 5160.031, - "54.25308303994036" : 5182.015, - "54.50082337274429" : 5204.031, - "54.75823056707966" : 5226.015, - "55.00711319084485" : 5247.007, - "55.25956846415444" : 5268.031, - "55.504942729620424" : 5288.031, - "55.75306581960509" : 5308.031, - "56.009929528646715" : 5328.031, - "56.26035215200627" : 5348.031, - "56.50924897965122" : 5368.031, - "56.75593822535336" : 5388.031, - "57.002758296263764" : 5408.031, - "57.259450811175725" : 5428.031, - "57.50212110648014" : 5447.007, - "57.750748807982376" : 5466.015, - "58.00332070262048" : 5486.015, - "58.25737279104346" : 5506.015, - "58.509048346111825" : 5526.015, - "58.75948816364161" : 5545.023, - "59.00028130410066" : 5563.007, - "59.2546084992473" : 5582.015, - "59.50321452114359" : 5601.023, - "59.7566939689407" : 5621.023, - "60.011276086350286" : 5641.023, - "60.25731120601114" : 5660.031, - "60.50412081090488" : 5678.015, - "60.757825278060196" : 5697.023, - "61.00563513511766" : 5716.031, - "61.257531224108526" : 5735.007, - "61.51302986554854" : 5754.015, - "61.750100094366836" : 5771.007, - "62.00538717275579" : 5790.015, - "62.252461418356525" : 5808.031, - "62.500823731579146" : 5826.015, - "62.76324639061287" : 5845.023, - "63.006912452645295" : 5863.007, - "63.254158639948315" : 5881.023, - "63.51109860139704" : 5900.031, - "63.76291320497247" : 5919.007, - "64.0071616260748" : 5937.023, - "64.26367547113092" : 5955.007, - "64.50186257344144" : 5972.031, - "64.76206419422523" : 5991.007, - "65.00463580994399" : 6009.023, - "65.25443271502175" : 6028.031, - "65.50149649460583" : 6047.007, - "65.76054535841169" : 6067.007, - "66.00877236099035" : 6086.015, - "66.25809680017315" : 6105.023, - "66.51148728682864" : 6125.023, - "66.75721814443371" : 6144.031, - "67.00302600201849" : 6162.015, - "67.2517366840814" : 6180.031, - "67.50464199610741" : 6199.007, - "67.75096044579071" : 6218.015, - "68.00795572761321" : 6238.015, - "68.261414243377" : 6258.015, - "68.50722509125227" : 6279.007, - "68.75713413222283" : 6301.023, - "69.00280368887316" : 6323.007, - "69.25300204044713" : 6345.023, - "69.50086123729743" : 6367.007, - "69.75668955826225" : 6390.015, - "70.0077341620405" : 6413.023, - "70.25728212543628" : 6436.031, - "70.5068285936868" : 6458.015, - "70.7569439647001" : 6481.023, - "71.00066983254202" : 6502.015, - "71.25647572632829" : 6525.023, - "71.5002815844404" : 6548.031, - "71.7556994880376" : 6572.031, - "72.01230304180794" : 6595.007, - "72.25835087020332" : 6617.023, - "72.50608821271676" : 6639.007, - "72.75781011728749" : 6662.015, - "73.00714502248695" : 6684.031, - "73.25045972538862" : 6706.015, - "73.50204781446061" : 6728.031, - "73.75231195242502" : 6750.015, - "74.00920033136306" : 6774.015, - "74.25455067450524" : 6798.015, - "74.50885619004593" : 6823.007, - "74.75389404783354" : 6848.031, - "75.00369992378273" : 6874.015, - "75.13196320067804" : 6887.007, - "75.25513550804052" : 6899.007, - "75.37898436862285" : 6911.007, - "75.5011153073276" : 6923.007, - "75.6312407876159" : 6937.023, - "75.75919606459233" : 6950.015, - "75.87650964534265" : 6962.015, - "76.00833809605619" : 6976.031, - "76.12759686076016" : 6988.031, - "76.25733659357726" : 7001.023, - "76.37625969817547" : 7013.023, - "76.50585141161409" : 7026.015, - "76.63190561142137" : 7038.015, - "76.75686910277807" : 7050.015, - "76.876631731427" : 7061.023, - "77.00620550312276" : 7073.023, - "77.13008800447294" : 7085.023, - "77.25724711661054" : 7097.023, - "77.38103617138339" : 7109.023, - "77.50144918821051" : 7121.023, - "77.63354601749414" : 7134.015, - "77.75233231630315" : 7146.015, - "77.87950488474789" : 7159.007, - "78.00705796765551" : 7172.031, - "78.12563644127654" : 7183.007, - "78.25221468948948" : 7196.031, - "78.37932745212473" : 7209.023, - "78.5063691953612" : 7222.015, - "78.62625965892792" : 7234.015, - "78.75445042127923" : 7247.007, - "78.88427163951175" : 7260.031, - "79.00510778244103" : 7272.031, - "79.13290681674017" : 7285.023, - "79.25300510549486" : 7297.023, - "79.38008946037061" : 7310.015, - "79.50179802054582" : 7323.007, - "79.62797856012564" : 7336.031, - "79.75085333358591" : 7349.023, - "79.88563918157872" : 7363.007, - "80.00911649856961" : 7376.031, - "80.13152478671584" : 7389.023, - "80.25099810476138" : 7401.023, - "80.37683251821878" : 7414.015, - "80.5029846500391" : 7427.007, - "80.63337701375225" : 7440.031, - "80.75473870023242" : 7452.031, - "80.87706475539062" : 7464.031, - "81.00034321806494" : 7476.031, - "81.12778416507976" : 7489.023, - "81.25236116139264" : 7502.015, - "81.37629898311658" : 7515.007, - "81.50941251116154" : 7529.023, - "81.63049909091805" : 7542.015, - "81.75706687311433" : 7555.007, - "81.87880533619429" : 7568.031, - "82.0024687987672" : 7581.023, - "82.13079262904462" : 7595.007, - "82.25054329653166" : 7608.031, - "82.38061943702714" : 7622.015, - "82.50621462724658" : 7636.031, - "82.62938618703643" : 7649.023, - "82.75757470666989" : 7663.007, - "82.8787539854311" : 7677.023, - "83.0046564279968" : 7691.007, - "83.13280158841837" : 7705.023, - "83.25101524660151" : 7718.015, - "83.38023018344035" : 7732.031, - "83.50534318932077" : 7746.015, - "83.62752571053619" : 7759.007, - "83.75560059913161" : 7773.023, - "83.88035551772772" : 7787.007, - "84.0000643211481" : 7800.031, - "84.12751947204269" : 7814.015, - "84.25038153676843" : 7828.031, - "84.3757532027749" : 7842.015, - "84.5025063829806" : 7856.031, - "84.62673052501748" : 7870.015, - "84.75500950093779" : 7884.031, - "84.87734676968526" : 7898.015, - "85.00325295011406" : 7912.031, - "85.12628919925994" : 7926.015, - "85.25096038972276" : 7941.023, - "85.38225058815088" : 7956.031, - "85.50206330416526" : 7970.015, - "85.62599888317136" : 7985.023, - "85.75791779017175" : 8000.031, - "85.87583241930744" : 8014.015, - "86.00127659985792" : 8029.023, - "86.13204274988038" : 8045.023, - "86.25105855348332" : 8059.007, - "86.37837390829822" : 8075.007, - "86.5038823800939" : 8090.015, - "86.62928992958606" : 8105.023, - "86.75295339215897" : 8120.031, - "86.88167792135998" : 8136.031, - "87.00546024797926" : 8151.007, - "87.12568263378864" : 8166.015, - "87.25727709427255" : 8182.015, - "87.37879577100263" : 8197.023, - "87.50701344596821" : 8212.031, - "87.56959499259115" : 8219.007, - "87.62543642448456" : 8226.015, - "87.69293176592971" : 8234.015, - "87.7536324198442" : 8241.023, - "87.81552395694014" : 8248.031, - "87.87516754317188" : 8255.007, - "87.9441378453936" : 8263.007, - "88.00350931519216" : 8270.015, - "88.06388926045325" : 8277.023, - "88.12961659265535" : 8285.023, - "88.19519515790637" : 8293.023, - "88.25414499674802" : 8300.031, - "88.31909784371724" : 8308.031, - "88.37562255698408" : 8315.007, - "88.44225594719997" : 8323.007, - "88.50192943633645" : 8330.015, - "88.56265625529258" : 8337.023, - "88.6305799558482" : 8345.023, - "88.69083729919984" : 8352.031, - "88.7500039341009" : 8359.007, - "88.81645117873475" : 8367.007, - "88.88122535584812" : 8375.007, - "88.94232222325047" : 8382.015, - "89.00844651651306" : 8390.015, - "89.06475742401098" : 8397.055, - "89.13112243565678" : 8405.055, - "89.18937030380955" : 8412.031, - "89.25455788858102" : 8420.031, - "89.31835797857231" : 8428.031, - "89.37642568172399" : 8435.007, - "89.44061002404126" : 8443.007, - "89.50738246276421" : 8451.007, - "89.56372551588473" : 8458.047, - "89.62640723723855" : 8466.047, - "89.68787490065975" : 8474.047, - "89.75664560099229" : 8483.007, - "89.81516932344132" : 8491.007, - "89.87606359866402" : 8499.007, - "89.9416571153674" : 8507.007, - "90.00639615656769" : 8515.007, - "90.06634624757307" : 8522.047, - "90.13001177449301" : 8530.047, - "90.18865809885152" : 8537.023, - "90.25415218839662" : 8545.023, - "90.31797844342957" : 8553.023, - "90.37821410717525" : 8560.063, - "90.4441350606856" : 8568.063, - "90.50163535621974" : 8575.039, - "90.57044792061892" : 8583.039, - "90.62576754682453" : 8590.015, - "90.6910358694388" : 8598.015, - "90.75623616294479" : 8606.015, - "90.81381869146698" : 8613.055, - "90.87754103390594" : 8621.055, - "90.94433515223483" : 8629.055, - "91.0021053214843" : 8636.031, - "91.06618799392544" : 8644.031, - "91.1306250157878" : 8652.031, - "91.19503736775376" : 8660.031, - "91.25247636233317" : 8667.007, - "91.31907910207168" : 8675.007, - "91.37885650380217" : 8682.047, - "91.44277994327554" : 8690.047, - "91.5057801305649" : 8698.047, - "91.56440402774484" : 8705.023, - "91.63156146636638" : 8713.023, - "91.69480984776513" : 8721.023, - "91.75863386008022" : 8729.023, - "91.81782366973246" : 8736.063, - "91.8768848968943" : 8743.039, - "91.9434629667364" : 8751.039, - "92.00828573606998" : 8759.039, - "92.06316279928537" : 8766.015, - "92.12695242326001" : 8774.015, - "92.19175725085074" : 8782.015, - "92.25402332182861" : 8790.015, - "92.31848576116002" : 8798.015, - "92.37969326930993" : 8806.015, - "92.4407310784754" : 8814.015, - "92.50194980021458" : 8822.015, - "92.56496792924679" : 8830.015, - "92.62969127142209" : 8838.015, - "92.69216741030581" : 8846.015, - "92.75500537433693" : 8854.015, - "92.81762654230866" : 8862.015, - "92.88123824400006" : 8870.015, - "92.93924240347916" : 8877.055, - "93.00420795918289" : 8885.055, - "93.06333048729945" : 8892.031, - "93.13046923660553" : 8900.031, - "93.19079460906546" : 8907.007, - "93.25792139720964" : 8915.007, - "93.31504117828091" : 8922.047, - "93.38401671351093" : 8930.047, - "93.44076794128122" : 8937.023, - "93.50690868114143" : 8945.023, - "93.57012192662711" : 8953.023, - "93.62724021255313" : 8960.063, - "93.69011106977948" : 8968.063, - "93.7541406645647" : 8976.063, - "93.78494439431513" : 8980.031, - "93.81780619148464" : 8984.063, - "93.849249095824" : 8988.031, - "93.88118091265594" : 8992.063, - "93.91333102069252" : 8996.031, - "93.9445817988689" : 9000.063, - "93.96918441374784" : 9003.007, - "94.00107586165836" : 9007.039, - "94.03182800889812" : 9011.007, - "94.06986824159684" : 9016.063, - "94.10033107823318" : 9020.031, - "94.13172613792496" : 9024.063, - "94.16230185802671" : 9028.031, - "94.19150877266375" : 9032.063, - "94.22088762900309" : 9036.031, - "94.25258246531493" : 9040.063, - "94.28425188415773" : 9044.031, - "94.31598933210883" : 9048.063, - "94.34741429470535" : 9052.031, - "94.37644029676869" : 9056.063, - "94.40724477409174" : 9060.031, - "94.44528500679047" : 9065.023, - "94.47440819329422" : 9069.055, - "94.5050242823174" : 9073.023, - "94.53689255547675" : 9077.055, - "94.56932300324532" : 9081.023, - "94.59939635454735" : 9085.055, - "94.63237776333584" : 9089.023, - "94.66485157031629" : 9093.055, - "94.68932335998696" : 9096.063, - "94.72083354586199" : 9100.031, - "94.75161933386958" : 9104.063, - "94.78769793601704" : 9109.055, - "94.81885900547918" : 9113.023, - "94.8509590261503" : 9117.055, - "94.88318090115827" : 9121.023, - "94.90672046777352" : 9124.031, - "94.93967197365727" : 9128.063, - "94.97093247027769" : 9132.031, - "95.00410600522916" : 9136.063, - "95.03400816240153" : 9140.031, - "95.06509297945658" : 9144.063, - "95.09807812610816" : 9148.031, - "95.12905155484302" : 9152.063, - "95.16105663379159" : 9156.031, - "95.19317908164128" : 9160.063, - "95.22464217044134" : 9164.031, - "95.2570524337492" : 9168.063, - "95.2875616198879" : 9172.031, - "95.31799006818378" : 9176.063, - "95.34890892411748" : 9180.031, - "95.37988235285235" : 9184.063, - "95.41002522840792" : 9188.031, - "95.43809284237419" : 9192.063, - "95.47591029843255" : 9197.055, - "95.50672374662703" : 9201.023, - "95.53753345695841" : 9205.055, - "95.56707453655599" : 9209.023, - "95.60000137254333" : 9213.055, - "95.62509289991485" : 9216.063, - "95.65905661912421" : 9220.031, - "95.68966224213071" : 9224.063, - "95.72030972920385" : 9228.031, - "95.75496943852116" : 9232.063, - "95.78770489591813" : 9236.031, - "95.8191567711289" : 9240.063, - "95.84475814302633" : 9243.007, - "95.87540189223637" : 9247.039, - "95.91138106722555" : 9252.031, - "95.94264455413644" : 9256.063, - "95.97134909997378" : 9260.031, - "96.0064954790658" : 9265.023, - "96.0364267915703" : 9269.055, - "96.06419836677959" : 9273.023, - "96.09849924123996" : 9278.015, - "96.12516216625583" : 9282.047, - "96.15929334173177" : 9287.039, - "96.18761064495266" : 9291.007, - "96.22091500511239" : 9296.063, - "96.25711022858835" : 9301.055, - "96.28620725005045" : 9305.023, - "96.31421431063463" : 9309.055, - "96.35009555361076" : 9314.047, - "96.37733111925249" : 9318.015, - "96.41265542062776" : 9323.007, - "96.44094581123437" : 9327.039, - "96.47223845347739" : 9332.031, - "96.50318048416227" : 9337.023, - "96.53337643737376" : 9342.015, - "96.56513631250341" : 9347.007, - "96.59660089644872" : 9352.063, - "96.62852374240923" : 9357.055, - "96.6617570831702" : 9362.047, - "96.68935671667721" : 9367.039, - "96.72074579578802" : 9372.031, - "96.7504917102831" : 9377.023, - "96.78449729355911" : 9383.039, - "96.81663394528856" : 9388.031, - "96.85010650928749" : 9393.023, - "96.87625435676912" : 9397.055, - "96.89707799206091" : 9400.063, - "96.91107703691728" : 9402.047, - "96.92467089741436" : 9404.031, - "96.93791564149853" : 9406.015, - "96.95724786941616" : 9409.023, - "96.96910063328447" : 9411.007, - "96.98871469607933" : 9414.015, - "97.00186674115879" : 9416.063, - "97.01710974685255" : 9418.047, - "97.03468293639857" : 9421.055, - "97.04858180652404" : 9423.039, - "97.06593820001065" : 9426.047, - "97.07831575985722" : 9428.031, - "97.0960122988853" : 9431.039, - "97.1132961778279" : 9434.047, - "97.1250883883141" : 9436.031, - "97.14255317983041" : 9439.039, - "97.159427388978" : 9442.047, - "97.17593678268771" : 9445.055, - "97.1922286327654" : 9448.063, - "97.20853094885976" : 9451.007, - "97.21991498469617" : 9453.055, - "97.23472140798066" : 9456.063, - "97.25191258791855" : 9459.007, - "97.268146127332" : 9462.015, - "97.28514592867953" : 9465.023, - "97.3014572156453" : 9468.031, - "97.3166740562974" : 9471.039, - "97.3283503930277" : 9473.023, - "97.3448470780029" : 9476.031, - "97.36133927754238" : 9479.039, - "97.37685439966933" : 9482.047, - "97.39268948287703" : 9485.055, - "97.40888639123216" : 9488.063, - "97.42572994990239" : 9491.007, - "97.44229840184897" : 9494.015, - "97.45810881516027" : 9497.023, - "97.4692887636718" : 9499.007, - "97.48545053611386" : 9502.015, - "97.5002838720126" : 9505.023, - "97.51675887738186" : 9508.031, - "97.53381997968411" : 9511.039, - "97.54894711162198" : 9514.047, - "97.56360252523751" : 9517.055, - "97.57902868622283" : 9520.063, - "97.59708929311618" : 9524.031, - "97.61218652214932" : 9527.039, - "97.62683520761126" : 9530.047, - "97.64251404814169" : 9533.055, - "97.65670596673367" : 9536.063, - "97.67307406921846" : 9539.007, - "97.68853461854422" : 9542.015, - "97.70391293488196" : 9545.023, - "97.7216072311922" : 9549.055, - "97.73855619760165" : 9553.023, - "97.7522853687427" : 9556.031, - "97.76576933606484" : 9559.039, - "97.78182794348551" : 9563.007, - "97.79922919132925" : 9567.039, - "97.81359454676874" : 9570.047, - "97.832076784619" : 9574.015, - "97.846646974956" : 9577.023, - "97.86161188363563" : 9580.031, - "97.8758636080371" : 9583.039, - "97.89253672015028" : 9586.047, - "97.91014130774627" : 9589.055, - "97.92475186700467" : 9592.063, - "97.93886678561694" : 9595.007, - "97.95374721859066" : 9598.015, - "97.96914497181648" : 9601.023, - "97.98832469491991" : 9605.055, - "98.00365591418267" : 9608.063, - "98.01862007528969" : 9611.007, - "98.033885508162" : 9614.015, - "98.04918906723788" : 9617.023, - "98.06289805391822" : 9620.031, - "98.07831001102377" : 9623.039, - "98.0966135790182" : 9627.007, - "98.10945313874308" : 9630.015, - "98.12815292022535" : 9634.047, - "98.14067401401469" : 9637.055, - "98.15909345576499" : 9641.023, - "98.17401051979704" : 9644.031, - "98.19077707848756" : 9648.063, - "98.20609035600746" : 9652.031, - "98.22257433224814" : 9656.063, - "98.23565461035622" : 9659.007, - "98.25153230520318" : 9663.039, - "98.26834596096867" : 9667.007, - "98.2836592384886" : 9671.039, - "98.29965654495454" : 9675.007, - "98.31589606494893" : 9679.039, - "98.33069127464414" : 9683.007, - "98.34403544588659" : 9687.039, - "98.36267915942247" : 9692.031, - "98.37803803887212" : 9696.063, - "98.39381705413344" : 9701.055, - "98.40906005982718" : 9706.047, - "98.422787735823" : 9710.015, - "98.43958793528135" : 9716.031, - "98.44536368133285" : 9718.015, - "98.45433754304682" : 9721.023, - "98.46108064806681" : 9723.007, - "98.47067125719116" : 9726.015, - "98.47700020698043" : 9728.063, - "98.48731297125435" : 9731.007, - "98.49408224131601" : 9733.055, - "98.50027513288869" : 9735.039, - "98.50969679060123" : 9738.047, - "98.51570951717282" : 9740.031, - "98.52564774756482" : 9743.039, - "98.53199164880647" : 9745.023, - "98.54154637444512" : 9748.031, - "98.54787382908916" : 9750.015, - "98.55677517625912" : 9753.023, - "98.5626548349046" : 9755.007, - "98.57157113352694" : 9758.015, - "98.57886146170377" : 9761.023, - "98.58722605173357" : 9764.031, - "98.59383907911793" : 9767.039, - "98.60317551355193" : 9771.007, - "98.61196173453862" : 9774.015, - "98.61743994668791" : 9776.063, - "98.62615963371155" : 9779.007, - "98.63404428212019" : 9782.015, - "98.64295385258895" : 9785.023, - "98.64909441407833" : 9787.007, - "98.65644978107298" : 9790.015, - "98.66585349704266" : 9794.047, - "98.67266164088048" : 9797.055, - "98.68000728943109" : 9800.063, - "98.68963976262206" : 9803.007, - "98.69640529482062" : 9805.055, - "98.70354311818325" : 9807.039, - "98.71381476596316" : 9810.047, - "98.71989477407044" : 9812.031, - "98.72888657752725" : 9815.039, - "98.7351220807392" : 9817.023, - "98.74311811746801" : 9820.031, - "98.75129955220625" : 9823.039, - "98.75926643360293" : 9826.047, - "98.76768484886126" : 9829.055, - "98.77455130336332" : 9831.039, - "98.78349900003565" : 9834.047, - "98.78932707617045" : 9836.031, - "98.7976378409717" : 9839.039, - "98.80808666346222" : 9842.047, - "98.81401192403744" : 9844.031, - "98.82239744610055" : 9847.039, - "98.82849988138639" : 9849.023, - "98.83709472378273" : 9852.031, - "98.84452185774876" : 9855.039, - "98.8516282830614" : 9858.047, - "98.86106713494416" : 9862.015, - "98.8696462783155" : 9865.023, - "98.87697622784111" : 9868.031, - "98.8847263131784" : 9871.039, - "98.89318210706766" : 9874.047, - "98.89984746453533" : 9876.031, - "98.90625117158646" : 9878.015, - "98.9142285189998" : 9881.023, - "98.9227814973295" : 9885.055, - "98.93149146590909" : 9888.063, - "98.93988521127102" : 9891.007, - "98.94647057846848" : 9893.055, - "98.9545510909032" : 9896.063, - "98.96289923433538" : 9899.007, - "98.9692498637306" : 9901.055, - "98.97852873507297" : 9904.063, - "98.98486067515272" : 9906.047, - "98.99408721641178" : 9909.055, - "99.00116598153754" : 9911.039, - "99.01004340638372" : 9914.047, - "99.0170272297869" : 9916.031, - "99.02584484882358" : 9919.039, - "99.03179253657737" : 9921.023, - "99.04000163150248" : 9924.031, - "99.04799019250511" : 9927.039, - "99.05684967560843" : 9930.047, - "99.0652374403894" : 9933.055, - "99.07086142919931" : 9935.039, - "99.07861899026278" : 9938.047, - "99.0869402210807" : 9942.015, - "99.09418046189208" : 9945.023, - "99.10230732382915" : 9948.031, - "99.1094578559263" : 9951.039, - "99.11847059141644" : 9955.007, - "99.12578334677183" : 9958.015, - "99.13414270379329" : 9962.047, - "99.14186288622582" : 9966.015, - "99.150475670365" : 9970.047, - "99.15791551306556" : 9973.055, - "99.16532844315184" : 9976.063, - "99.1726322276358" : 9979.007, - "99.18182886599013" : 9983.039, - "99.18758293243567" : 9986.047, - "99.19599760983093" : 9990.015, - "99.20473523859741" : 9994.047, - "99.21270585785719" : 9998.015, - "99.2207377780717" : 10002.047, - "99.22322794246433" : 10003.007, - "99.22705102883597" : 10005.055, - "99.23055415412685" : 10007.039, - "99.2347383180733" : 10009.023, - "99.2383348899415" : 10011.007, - "99.24288013146274" : 10013.055, - "99.24757040207199" : 10015.039, - "99.25181661454577" : 10017.023, - "99.25564044849004" : 10019.007, - "99.25798184593158" : 10020.031, - "99.26360060173316" : 10023.039, - "99.26697888239673" : 10025.023, - "99.26955726035837" : 10027.007, - "99.27349547291328" : 10030.015, - "99.27770056889304" : 10033.023, - "99.28208358715604" : 10036.031, - "99.2855455959529" : 10038.015, - "99.29083018679395" : 10041.023, - "99.29415688494683" : 10043.007, - "99.29718903948798" : 10045.055, - "99.3010233394489" : 10047.039, - "99.3049166976467" : 10049.023, - "99.31033659913173" : 10052.031, - "99.31437498641753" : 10054.015, - "99.31760450013" : 10056.063, - "99.32233513966065" : 10058.047, - "99.3243154595274" : 10059.007, - "99.32896536121524" : 10061.055, - "99.33311139895814" : 10063.039, - "99.33665713588827" : 10065.023, - "99.3399980379209" : 10067.007, - "99.34392653203177" : 10069.055, - "99.34860932691484" : 10072.063, - "99.35286974326839" : 10075.007, - "99.35685131503519" : 10077.055, - "99.36016081901784" : 10079.039, - "99.36366842974442" : 10081.023, - "99.36829515668109" : 10083.007, - "99.37185734020883" : 10085.055, - "99.37543298004373" : 10087.039, - "99.37896152280364" : 10089.023, - "99.38340584202136" : 10091.007, - "99.38704801581929" : 10093.055, - "99.392021616451" : 10096.063, - "99.3954694213681" : 10098.047, - "99.39858081860682" : 10100.031, - "99.40310438052212" : 10103.039, - "99.40695064164494" : 10106.047, - "99.41083951440703" : 10109.055, - "99.4148644453857" : 10112.063, - "99.41883928899894" : 10115.007, - "99.42273638505982" : 10118.015, - "99.42609149097221" : 10121.023, - "99.42987121813198" : 10124.031, - "99.43422807135333" : 10127.039, - "99.43802947811903" : 10130.047, - "99.44189218583946" : 10133.055, - "99.44546408781126" : 10135.039, - "99.45016856230026" : 10138.047, - "99.45383540599461" : 10140.031, - "99.45743646329854" : 10142.015, - "99.46125880209756" : 10145.023, - "99.46557453882488" : 10149.055, - "99.46949705235481" : 10152.063, - "99.47312651741822" : 10155.007, - "99.47741683667651" : 10158.015, - "99.48114647647084" : 10161.023, - "99.48554818404929" : 10164.031, - "99.48933762965311" : 10167.039, - "99.49320183251878" : 10170.047, - "99.49702641403566" : 10173.055, - "99.50014154913747" : 10175.039, - "99.50504114007994" : 10178.047, - "99.50843511976849" : 10181.055, - "99.51211467219737" : 10184.063, - "99.51619268083196" : 10188.031, - "99.51985130122752" : 10192.063, - "99.52378727106458" : 10196.031, - "99.52737188177088" : 10200.063, - "99.53167490976368" : 10205.055, - "99.53533801559495" : 10209.023, - "99.539185771863" : 10213.055, - "99.5432794795226" : 10217.023, - "99.54750027452735" : 10221.055, - "99.55213671990806" : 10225.023, - "99.55553967046805" : 10228.031, - "99.55993091202984" : 10231.039, - "99.5627829015699" : 10233.023, - "99.56756437603863" : 10236.031, - "99.5704492587739" : 10238.015, - "99.57526362643785" : 10242.047, - "99.57867031486091" : 10245.055, - "99.5823423915636" : 10248.063, - "99.58594494401275" : 10251.007, - "99.59000575847712" : 10255.039, - "99.59413161175931" : 10259.007, - "99.59856546496037" : 10263.039, - "99.6025642308974" : 10267.007, - "99.60572422035634" : 10270.015, - "99.61008331629553" : 10274.047, - "99.61244265547991" : 10276.031, - "99.61365671341255" : 10277.055, - "99.61606913025285" : 10279.039, - "99.61809878991242" : 10281.023, - "99.61930836240936" : 10282.047, - "99.62161238121996" : 10284.031, - "99.62389995343295" : 10286.015, - "99.62502878808708" : 10287.039, - "99.6270928360871" : 10289.023, - "99.62923762192993" : 10291.007, - "99.63129419420378" : 10294.015, - "99.63342402859423" : 10297.023, - "99.63503579516" : 10299.007, - "99.63677689178877" : 10301.055, - "99.6392625707457" : 10304.063, - "99.64095806544474" : 10306.047, - "99.64319256000181" : 10309.055, - "99.64468770523905" : 10311.039, - "99.6468893066009" : 10314.047, - "99.64910062640679" : 10317.055, - "99.65086938322246" : 10319.039, - "99.65258207209173" : 10321.023, - "99.6550169161106" : 10324.031, - "99.65680810010481" : 10326.015, - "99.65844005113128" : 10328.063, - "99.66047942923488" : 10330.047, - "99.66218912781368" : 10332.031, - "99.66423523407086" : 10334.015, - "99.66617892287928" : 10337.023, - "99.66894867943128" : 10340.031, - "99.67064193141248" : 10342.015, - "99.6725332901376" : 10344.063, - "99.67399180431653" : 10346.047, - "99.67582186208692" : 10348.031, - "99.67809597799278" : 10350.015, - "99.68020488034992" : 10353.023, - "99.6816529285122" : 10355.007, - "99.68413785989651" : 10358.015, - "99.68610322831087" : 10361.023, - "99.68754454831958" : 10363.007, - "99.68964373223268" : 10366.015, - "99.69152387736851" : 10369.023, - "99.69382789617912" : 10372.031, - "99.69583886652322" : 10375.039, - "99.69748502142943" : 10377.023, - "99.70027496244214" : 10380.031, - "99.70133801070583" : 10381.055, - "99.70340504899632" : 10383.039, - "99.70533229120714" : 10385.023, - "99.70800785360919" : 10388.031, - "99.70974147451179" : 10390.015, - "99.71179580406776" : 10392.063, - "99.71399740542961" : 10394.047, - "99.71515390027062" : 10395.007, - "99.71751847246334" : 10397.055, - "99.7196886757752" : 10399.039, - "99.72179384026926" : 10401.023, - "99.72278512156154" : 10402.047, - "99.72516015977092" : 10405.055, - "99.72687733407591" : 10407.039, - "99.72910584805203" : 10410.047, - "99.7312401678782" : 10412.031, - "99.73323394405207" : 10414.015, - "99.73474703103217" : 10416.063, - "99.73642906942408" : 10418.047, - "99.73882952510247" : 10421.055, - "99.74036130139804" : 10423.039, - "99.74233937854692" : 10425.023, - "99.74469572744083" : 10428.031, - "99.74700348411452" : 10431.039, - "99.74857861962197" : 10433.023, - "99.75029579392694" : 10435.007, - "99.75218640507944" : 10438.015, - "99.75435586081869" : 10441.023, - "99.75619339431528" : 10444.031, - "99.75810643264633" : 10447.039, - "99.75984080112154" : 10450.047, - "99.76238703346058" : 10454.015, - "99.76367435350986" : 10456.063, - "99.76578624615746" : 10459.007, - "99.76765143984093" : 10462.015, - "99.76956672088986" : 10465.023, - "99.77203595324917" : 10470.015, - "99.7737830304589" : 10473.023, - "99.77547927273055" : 10476.031, - "99.77777955367806" : 10480.063, - "99.7795109318628" : 10483.007, - "99.78147704784978" : 10486.015, - "99.78330710562018" : 10489.023, - "99.7852066876441" : 10492.031, - "99.78727596865245" : 10495.039, - "99.78951569621786" : 10498.047, - "99.79134500641563" : 10501.055, - "99.79342624858589" : 10504.063, - "99.79543871407522" : 10507.007, - "99.79745117956456" : 10510.015, - "99.79906593642079" : 10513.023, - "99.8011135378232" : 10516.031, - "99.80308264410066" : 10519.039, - "99.80471534269974" : 10522.047, - "99.80574026475988" : 10524.031, - "99.80679508972474" : 10526.015, - "99.8077886137349" : 10528.063, - "99.80907817650203" : 10531.007, - "99.80982425397542" : 10533.055, - "99.81087459350458" : 10535.039, - "99.81190325342781" : 10537.023, - "99.81295508810221" : 10539.007, - "99.8137691946839" : 10541.055, - "99.81461469931557" : 10543.039, - "99.81547739811745" : 10545.023, - "99.81666454343583" : 10548.031, - "99.81753172767344" : 10550.015, - "99.81865981475494" : 10553.023, - "99.81951578540327" : 10555.007, - "99.82042483370752" : 10558.015, - "99.82144601790456" : 10561.023, - "99.82229974583502" : 10564.031, - "99.82332466789516" : 10567.039, - "99.82429202686366" : 10570.047, - "99.82525564796907" : 10573.055, - "99.8262043176221" : 10577.023, - "99.8271836377525" : 10580.031, - "99.82848964711724" : 10583.039, - "99.82942486046313" : 10585.023, - "99.83036680196261" : 10587.007, - "99.83149339389888" : 10589.055, - "99.8321123840271" : 10590.015, - "99.83328158760263" : 10593.023, - "99.83440369410319" : 10595.007, - "99.83513033468849" : 10597.055, - "99.8363668197997" : 10600.063, - "99.83712635358022" : 10602.047, - "99.83819612999747" : 10605.055, - "99.83887492593517" : 10607.039, - "99.84000974117025" : 10610.047, - "99.84100177003516" : 10612.031, - "99.84216574060237" : 10614.015, - "99.84287144915434" : 10615.039, - "99.84400701196203" : 10617.023, - "99.84501997286027" : 10619.007, - "99.84617945799177" : 10621.055, - "99.84698608884726" : 10623.039, - "99.84780019542895" : 10625.023, - "99.84866364180345" : 10627.007, - "99.84966090367669" : 10629.055, - "99.85073068009395" : 10631.039, - "99.85171299051483" : 10633.023, - "99.85272744655829" : 10635.007, - "99.85363275699945" : 10637.055, - "99.85491858190349" : 10640.063, - "99.85558466910668" : 10642.047, - "99.85656697952756" : 10645.055, - "99.85755751324723" : 10648.063, - "99.85855402754785" : 10650.047, - "99.8594630758521" : 10652.031, - "99.86072572600496" : 10655.039, - "99.8615824442259" : 10657.023, - "99.8626499779253" : 10659.007, - "99.86328167678803" : 10660.031, - "99.8644239677493" : 10662.015, - "99.86581146252946" : 10664.063, - "99.86632728763632" : 10665.023, - "99.86741276307856" : 10667.007, - "99.86859691810646" : 10669.055, - "99.86962109259397" : 10671.039, - "99.87056976224702" : 10673.023, - "99.87143246104891" : 10675.007, - "99.87238113070194" : 10677.055, - "99.8733350333633" : 10679.039, - "99.87428370301635" : 10681.023, - "99.87519873190153" : 10683.007, - "99.87599265402251" : 10685.055, - "99.876975712016" : 10687.039, - "99.87822415828911" : 10690.047, - "99.87933280848253" : 10692.031, - "99.88019924514752" : 10694.015, - "99.88107465268394" : 10696.063, - "99.88191492430727" : 10698.047, - "99.88300339003997" : 10701.055, - "99.88404326355248" : 10704.063, - "99.88479307888898" : 10706.047, - "99.88574623397771" : 10708.031, - "99.88674200070572" : 10710.015, - "99.88793363145982" : 10713.023, - "99.88868867980462" : 10715.007, - "99.8897554659314" : 10718.015, - "99.89095457241167" : 10721.023, - "99.89183147509333" : 10723.007, - "99.8927016496214" : 10725.055, - "99.89356659114115" : 10727.039, - "99.89487559079636" : 10730.047, - "99.8955394352817" : 10732.031, - "99.89666228935488" : 10735.039, - "99.89766553180907" : 10738.047, - "99.89851327915859" : 10740.031, - "99.8994933468616" : 10742.015, - "99.90057059900505" : 10745.023, - "99.9016403754223" : 10748.031, - "99.90256886061464" : 10751.039, - "99.9030532876715" : 10752.063, - "99.90344501572366" : 10753.023, - "99.9038359962032" : 10754.047, - "99.90448488923616" : 10756.031, - "99.90481382118836" : 10757.055, - "99.90543206374396" : 10759.039, - "99.90588210246037" : 10760.063, - "99.90630672370776" : 10761.023, - "99.90702439342164" : 10763.007, - "99.90740864574761" : 10764.031, - "99.907890082514" : 10765.055, - "99.90824816979833" : 10766.015, - "99.9090099462967" : 10768.063, - "99.90948988791786" : 10769.023, - "99.90972537329273" : 10770.047, - "99.91028829547454" : 10772.031, - "99.9109162564742" : 10774.015, - "99.91122724668354" : 10775.039, - "99.91169447957019" : 10776.063, - "99.91252428517686" : 10778.047, - "99.91282630451478" : 10779.007, - "99.91328307138475" : 10780.031, - "99.91375254698926" : 10781.055, - "99.91409792553907" : 10782.015, - "99.91468626518991" : 10784.063, - "99.91509144954921" : 10785.023, - "99.91577174063217" : 10787.007, - "99.91607375997009" : 10788.031, - "99.91672639086615" : 10790.015, - "99.91703439078502" : 10791.039, - "99.91774757506319" : 10793.023, - "99.91804959440111" : 10794.047, - "99.91881884662568" : 10796.031, - "99.91910142907551" : 10797.055, - "99.91946773965864" : 10798.015, - "99.92008149677854" : 10800.063, - "99.92072889466627" : 10802.047, - "99.92111838000056" : 10803.007, - "99.92159533133125" : 10804.031, - "99.92202892345006" : 10805.055, - "99.92251783594263" : 10806.015, - "99.92294843777096" : 10807.039, - "99.92334016582312" : 10808.063, - "99.92409969960364" : 10810.047, - "99.92449666066413" : 10812.031, - "99.925085000315" : 10814.015, - "99.92543112643742" : 10815.039, - "99.92610767965726" : 10817.023, - "99.92645754364278" : 10818.047, - "99.92690608721396" : 10819.007, - "99.92747199968626" : 10820.031, - "99.9280752907895" : 10821.055, - "99.92862924209989" : 10822.015, - "99.92910619343057" : 10823.039, - "99.92963547484456" : 10824.063, - "99.92992254273011" : 10825.023, - "99.93027240671563" : 10826.047, - "99.93098783371165" : 10828.031, - "99.93128761033172" : 10829.055, - "99.93191183346828" : 10831.039, - "99.93228711492281" : 10832.063, - "99.93284106623322" : 10834.047, - "99.93315205644257" : 10835.007, - "99.9338315999529" : 10837.055, - "99.9343735901014" : 10839.039, - "99.93469280360955" : 10840.063, - "99.93517872581167" : 10842.047, - "99.93557493929953" : 10843.007, - "99.93621037602536" : 10845.055, - "99.9366170555299" : 10847.039, - "99.93720240489029" : 10850.047, - "99.93757095819126" : 10852.031, - "99.93800230759221" : 10854.015, - "99.93875885108226" : 10857.023, - "99.93915581214274" : 10858.047, - "99.93950044311993" : 10860.031, - "99.94006859831009" : 10863.039, - "99.94060909331336" : 10866.047, - "99.94107483105475" : 10869.055, - "99.94159738431517" : 10872.063, - "99.94202275313518" : 10874.047, - "99.94255577241225" : 10876.031, - "99.94304094704174" : 10878.015, - "99.9436576944521" : 10880.063, - "99.94394027690194" : 10881.023, - "99.94453160684327" : 10883.007, - "99.94500556788348" : 10885.055, - "99.94551840269986" : 10887.039, - "99.94581668417469" : 10888.063, - "99.94639979081722" : 10890.047, - "99.94684908196102" : 10892.031, - "99.94732678086432" : 10894.015, - "99.94779102346048" : 10896.063, - "99.948301615559" : 10899.007, - "99.94875389699327" : 10902.015, - "99.94938036284768" : 10905.023, - "99.949722751107" : 10907.007, - "99.95036715870427" : 10910.015, - "99.95088373138373" : 10912.063, - "99.95119771188355" : 10913.023, - "99.95147281860721" : 10914.047, - "99.9517292360154" : 10915.007, - "99.95193855634861" : 10916.031, - "99.95232878925553" : 10918.015, - "99.95251418726495" : 10919.039, - "99.95269734255652" : 10920.063, - "99.95314812884554" : 10922.047, - "99.95351294428343" : 10924.031, - "99.95368114812263" : 10925.055, - "99.95400634221173" : 10926.015, - "99.9542179052628" : 10927.039, - "99.9543868566746" : 10928.063, - "99.95468588572206" : 10930.047, - "99.95487726431243" : 10931.007, - "99.95514788560037" : 10933.055, - "99.95536019622406" : 10935.039, - "99.9556988466203" : 10938.047, - "99.95584088541783" : 10940.031, - "99.95609356496293" : 10944.063, - "99.95631409888543" : 10946.047, - "99.95658546774598" : 10949.055, - "99.9568067492411" : 10957.055, - "99.9570840986826" : 10963.007, - "99.9572926714432" : 10967.039, - "99.95753937040735" : 10972.031, - "99.95784438003575" : 10976.063, - "99.95800809843922" : 10978.047, - "99.95826152555694" : 10983.039, - "99.95854261286155" : 10988.031, - "99.95874296232333" : 10994.047, - "99.95900835060294" : 11005.055, - "99.95930513693254" : 11010.047, - "99.95956080676811" : 11012.031, - "99.95974022419658" : 11016.063, - "99.9599899134512" : 11021.055, - "99.96025679687605" : 11024.063, - "99.96048106866164" : 11028.031, - "99.96071954432698" : 11037.055, - "99.96095801999232" : 11040.063, - "99.96119873837551" : 11045.055, - "99.96148730140631" : 11050.047, - "99.96174670910497" : 11054.015, - "99.9619321071144" : 11060.031, - "99.96227898080943" : 11065.023, - "99.96243522348672" : 11067.007, - "99.96266248556279" : 11074.047, - "99.96292114568882" : 11081.023, - "99.96317382523392" : 11084.031, - "99.9634137960445" : 11087.039, - "99.96363806783009" : 11091.007, - "99.96387579592282" : 11096.063, - "99.96415987351789" : 11100.031, - "99.9643609705523" : 11104.063, - "99.96462635883191" : 11109.055, - "99.96486109663417" : 11113.023, - "99.96509359171856" : 11118.015, - "99.96536271786125" : 11129.023, - "99.96557652363019" : 11149.055, - "99.96589648471095" : 11155.007, - "99.9660990768906" : 11159.039, - "99.96636297002497" : 11161.023, - "99.96657378550343" : 11162.047, - "99.96685935824374" : 11165.055, - "99.96709110575551" : 11167.039, - "99.96737294063274" : 11170.047, - "99.96754936777073" : 11171.007, - "99.96783793080152" : 11173.055, - "99.9680255715288" : 11175.039, - "99.9682782510739" : 11187.007, - "99.96851971702971" : 11192.063, - "99.96879332860813" : 11196.031, - "99.96904002757228" : 11201.023, - "99.96924112460668" : 11204.031, - "99.96952520220177" : 11209.023, - "99.96975769728616" : 11213.055, - "99.97003728944551" : 11218.047, - "99.97026903695729" : 11222.015, - "99.97052919222857" : 11226.047, - "99.9707272989725" : 11233.023, - "99.97095605619381" : 11236.031, - "99.97127825999243" : 11239.039, - "99.97152645410182" : 11241.023, - "99.97172605599098" : 11246.015, - "99.97194658991349" : 11251.007, - "99.97220749275739" : 11257.023, - "99.97244148298701" : 11260.031, - "99.97267846350712" : 11264.063, - "99.97299543429742" : 11267.007, - "99.97315990027352" : 11269.055, - "99.97338940506744" : 11271.039, - "99.97365853121013" : 11274.047, - "99.97395232724925" : 11278.015, - "99.97419753106817" : 11280.063, - "99.97440610382876" : 11282.047, - "99.9746206571703" : 11283.007, - "99.97493089980703" : 11286.015, - "99.97511480267121" : 11289.023, - "99.97543775404246" : 11294.015, - "99.97561941418878" : 11297.023, - "99.97573080250896" : 11299.007, - "99.97583546267558" : 11304.063, - "99.9759610548755" : 11311.039, - "99.97610010338256" : 11314.047, - "99.97631390915149" : 11316.031, - "99.97635951108123" : 11317.055, - "99.97645295765855" : 11319.039, - "99.97659275373825" : 11327.039, - "99.97671610322031" : 11330.047, - "99.97683272454881" : 11333.055, - "99.97703531672846" : 11335.039, - "99.97707493807725" : 11336.063, - "99.97721548172956" : 11338.047, - "99.9773096758795" : 11341.055, - "99.97742704478063" : 11345.023, - "99.977602724346" : 11348.031, - "99.97769766606856" : 11349.055, - "99.97778438449232" : 11350.015, - "99.97790623882916" : 11352.063, - "99.97803855918266" : 11353.023, - "99.97819031642425" : 11355.007, - "99.97828002513847" : 11357.055, - "99.9784616852848" : 11359.039, - "99.9785618600157" : 11360.063, - "99.97867997648945" : 11361.023, - "99.97878164636558" : 11363.007, - "99.97891770458216" : 11365.055, - "99.97903881134638" : 11368.063, - "99.9792443938165" : 11370.047, - "99.9793684908712" : 11371.007, - "99.9794447432783" : 11372.031, - "99.97952323840325" : 11374.015, - "99.97966079176507" : 11376.063, - "99.97974526747097" : 11378.047, - "99.97986786938043" : 11380.031, - "99.98008840330293" : 11382.015, - "99.98024913141593" : 11383.039, - "99.98036351002658" : 11384.063, - "99.98060871384548" : 11386.047, - "99.9807335584728" : 11387.007, - "99.98089129629533" : 11389.055, - "99.98102361664883" : 11391.039, - "99.98109015061189" : 11392.063, - "99.9812030340773" : 11393.023, - "99.98132414084151" : 11394.047, - "99.98145421847715" : 11395.007, - "99.98166802424608" : 11397.055, - "99.98174577179842" : 11398.015, - "99.98182800478646" : 11399.039, - "99.98200443192447" : 11401.023, - "99.98206124744348" : 11402.047, - "99.98223393671839" : 11405.055, - "99.98234906290165" : 11406.015, - "99.98246643180278" : 11407.039, - "99.98254941236344" : 11412.031, - "99.98271462591215" : 11423.039, - "99.98281928607877" : 11425.023, - "99.98291946080965" : 11427.007, - "99.98311382969051" : 11429.055, - "99.98321998500235" : 11430.015, - "99.98329623740945" : 11431.039, - "99.98350555774266" : 11434.047, - "99.98355938297121" : 11435.007, - "99.98365731498424" : 11437.055, - "99.98378215961155" : 11439.039, - "99.98391522753766" : 11448.063, - "99.98406175177092" : 11451.007, - "99.98413202359707" : 11453.055, - "99.98428378083865" : 11456.063, - "99.98439217886835" : 11458.047, - "99.98451253805995" : 11460.031, - "99.98468447976224" : 11462.015, - "99.98475998459672" : 11463.039, - "99.98487436320737" : 11466.047, - "99.98503434374776" : 11468.031, - "99.98513152818818" : 11469.055, - "99.98525562524286" : 11470.015, - "99.98537822715232" : 11471.039, - "99.98557708146888" : 11473.023, - "99.98569669308785" : 11474.047, - "99.98587087750799" : 11475.007, - "99.98600245028886" : 11477.055, - "99.98614149879593" : 11479.039, - "99.98620728518637" : 11480.063, - "99.98636950844461" : 11482.047, - "99.98647715890169" : 11483.007, - "99.98663115886113" : 11485.055, - "99.98675376077058" : 11486.015, - "99.98684945006578" : 11487.039, - "99.98701242089663" : 11488.063, - "99.98707671214183" : 11489.023, - "99.98724267326317" : 11492.031, - "99.9873600421643" : 11494.015, - "99.98745199359638" : 11497.023, - "99.98769719741529" : 11499.007, - "99.98790427503064" : 11501.055, - "99.98800220704369" : 11502.015, - "99.98812256623529" : 11503.039, - "99.98824591571736" : 11504.063, - "99.98841337198394" : 11505.023, - "99.98855914864457" : 11506.047, - "99.98869894472425" : 11507.007, - "99.98877818742183" : 11508.031, - "99.98887387671701" : 11509.055, - "99.98904058541096" : 11510.015, - "99.98918411935374" : 11511.039, - "99.98932765329651" : 11512.063, - "99.98941661443813" : 11513.023, - "99.98947118723929" : 11514.047, - "99.98951753674164" : 11515.007, - "99.98957360468803" : 11516.031, - "99.98966256582966" : 11523.007, - "99.98970442989629" : 11524.031, - "99.98978367259387" : 11526.015, - "99.98981806093433" : 11527.039, - "99.98987338130812" : 11528.063, - "99.9899974783628" : 11533.055, - "99.99008344921394" : 11535.039, - "99.99015073074962" : 11536.063, - "99.99020829384125" : 11537.023, - "99.99025240062575" : 11538.047, - "99.99031370158048" : 11539.007, - "99.99036976952688" : 11540.031, - "99.9904191093197" : 11541.055, - "99.990487138428" : 11543.039, - "99.99055965297201" : 11550.015, - "99.99066431313861" : 11551.039, - "99.99076299272427" : 11552.063, - "99.99090951695752" : 11553.023, - "99.99097380820272" : 11554.047, - "99.99114500233239" : 11556.031, - "99.99124741978115" : 11557.055, - "99.99132666247871" : 11558.015, - "99.99147393428458" : 11559.039, - "99.99162270123568" : 11560.063, - "99.9917355847011" : 11561.023, - "99.99180660409988" : 11562.047, - "99.99188509922483" : 11563.007, - "99.99196583706764" : 11564.031, - "99.99201218657" : 11565.055, - "99.99206750694377" : 11566.015, - "99.99214151663301" : 11567.039, - "99.99223870107343" : 11568.063, - "99.99234635153051" : 11569.023, - "99.99243979810785" : 11570.047, - "99.99251455536971" : 11571.007, - "99.992582584478" : 11572.031, - "99.99263117669821" : 11573.055, - "99.99278218636718" : 11575.039, - "99.99286666207308" : 11576.063, - "99.99297132223968" : 11578.047, - "99.99303112804918" : 11579.007, - "99.99304607950155" : 11585.023, - "99.99311709890033" : 11589.055, - "99.99319185616218" : 11591.039, - "99.99325016682644" : 11592.063, - "99.99331445807164" : 11593.023, - "99.99337650659898" : 11594.047, - "99.99341837066562" : 11595.007, - "99.9935297589858" : 11596.031, - "99.9935656424715" : 11597.055, - "99.9936142346917" : 11600.063, - "99.99365535118574" : 11601.023, - "99.99378019581304" : 11603.007, - "99.99385345792966" : 11604.031, - "99.99390728315821" : 11605.055, - "99.9939394287808" : 11606.015, - "99.9939872734284" : 11607.039, - "99.99404184622956" : 11608.063, - "99.99409417631287" : 11609.023, - "99.99416519571163" : 11610.047, - "99.99421229278661" : 11611.007, - "99.99427658403181" : 11612.031, - "99.99432293353416" : 11613.055, - "99.9943887199246" : 11614.015, - "99.99443731214481" : 11615.039, - "99.99455916648165" : 11616.063, - "99.99470195285181" : 11617.023, - "99.99477521496843" : 11618.047, - "99.99481707903507" : 11619.007, - "99.99486716640052" : 11620.031, - "99.99489632173265" : 11621.055, - "99.9950391081028" : 11622.015, - "99.99515572943132" : 11623.039, - "99.99524319542769" : 11624.063, - "99.99537925364427" : 11625.023, - "99.99553325360371" : 11626.047, - "99.99565660308579" : 11627.007, - "99.99573659335599" : 11628.031, - "99.99583153507855" : 11629.055, - "99.99586218555591" : 11630.015, - "99.99588237001662" : 11634.047, - "99.99594815640705" : 11635.007, - "99.99600497192607" : 11636.031, - "99.99611187481054" : 11637.055, - "99.99621803012238" : 11638.015, - "99.9962711077783" : 11639.039, - "99.99632867086993" : 11640.063, - "99.99641763201156" : 11641.023, - "99.99646996209485" : 11642.047, - "99.99653126304958" : 11643.007, - "99.99656864168051" : 11644.031, - "99.99662545719953" : 11645.055, - "99.99674731153637" : 11646.015, - "99.99680412705538" : 11647.039, - "99.99684300083155" : 11648.063, - "99.9968968260601" : 11649.023, - "99.9969334571184" : 11650.047, - "99.99697083574934" : 11653.055, - "99.99702839884097" : 11654.015, - "99.99707325319808" : 11655.039, - "99.99713231143495" : 11656.063, - "99.99717866093731" : 11657.023, - "99.9972182822861" : 11658.047, - "99.99727958324083" : 11659.007, - "99.99733565118723" : 11660.031, - "99.99738050554434" : 11661.055, - "99.99748142784786" : 11662.015, - "99.99760103946683" : 11663.039, - "99.99770196177035" : 11664.063, - "99.99778942776673" : 11665.023, - "99.99786717531906" : 11666.047, - "99.99790679666785" : 11667.007, - "99.99797482577614" : 11668.031, - "99.99803014614993" : 11669.055, - "99.99809144710466" : 11670.015, - "99.99814228204272" : 11671.039, - "99.9982058257153" : 11672.063, - "99.99826413637955" : 11673.023, - "99.99832169947119" : 11674.047, - "99.99841514604852" : 11675.007, - "99.99851831106989" : 11676.031, - "99.99858634017818" : 11677.055, - "99.99866259258528" : 11678.015, - "99.99869025277216" : 11679.039, - "99.99870595179716" : 11680.063, - "99.99875005858166" : 11681.023, - "99.99879341779354" : 11682.047, - "99.99885397117565" : 11683.007, - "99.99890854397681" : 11684.031, - "99.99897358279463" : 11685.055, - "99.99906553422672" : 11686.015, - "99.99913206818978" : 11687.039, - "99.99921654389568" : 11688.063, - "99.9993496118218" : 11689.023, - "99.99946324285983" : 11690.047, - "99.99954921371096" : 11691.007, - "99.9996269612633" : 11692.031, - "99.99968228163708" : 11693.055, - "99.99975330103585" : 11694.015, - "99.99985870877508" : 11695.039, - "99.9999678543774" : 11696.063, - "100.0" : 11697.023 - }, - "aggregatedEndToEndLatencyAvg" : 4800.844807784442, - "aggregatedEndToEndLatency50pct" : 4778.015, - "aggregatedEndToEndLatency75pct" : 6874.015, - "aggregatedEndToEndLatency95pct" : 9136.063, - "aggregatedEndToEndLatency99pct" : 9911.039, - "aggregatedEndToEndLatency999pct" : 10744.063, - "aggregatedEndToEndLatency9999pct" : 11534.015, - "aggregatedEndToEndLatencyMax" : 11697.023 -} \ No newline at end of file diff --git a/blog/results/pulsar/throughput/default-sync-tiered.json b/blog/results/pulsar/throughput/default-sync-tiered.json deleted file mode 100644 index cf2836b9..00000000 --- a/blog/results/pulsar/throughput/default-sync-tiered.json +++ /dev/null @@ -1,2959 +0,0 @@ -{ - "workload" : "100-partitions-1000K-rate-4-producer", - "driver" : "Pulsar", - "publishRate" : [ 321079.6112426227, 313167.4445597487, 311856.7776106367, 313776.6792114132, 313309.81523360877, 313033.860868283, 312438.49356289906, 312743.6866783332, 312784.43170689465, 312374.90143195685, 313365.7551131046, 313862.613903321, 312440.24088025064, 312610.69299957063, 314044.06431412435, 312324.12750742614, 313108.9249574161, 313290.0283732231, 310885.2699005221, 315263.1430713492, 312339.32725101674, 311862.7304439922, 312811.4375447506, 314395.9326405667, 312026.4741421147, 313152.61689705966, 312988.6641457467, 311946.56478652684, 315042.432967758, 312711.13445931516, 312037.40151294746, 312974.967902859, 314000.2561163098, 312049.80554280564, 313128.3440924486, 312592.577894225, 312235.7171469549, 311803.9491963642, 313807.2263908096, 313214.9719699388, 313149.3977789238, 312489.7764836569, 314404.4457110079, 312499.80021914036, 314147.2635176285, 311419.3145684456, 313102.461422894, 313135.57126646617, 312799.6139749683, 313980.1838022949, 310542.45362577157, 314269.37968506216, 313180.1646039773, 312885.9806440707, 311733.26920407097, 314794.5719586977, 312255.05483354797, 312087.7543442925, 312801.59950644046, 313653.75946653355 ], - "consumeRate" : [ 320340.71477634803, 314501.1979134095, 312992.6775528188, 313399.93778992904, 312621.97081819765, 311838.0699988214, 313884.1515099496, 311848.745975683, 313798.1681596147, 312764.848859033, 312129.871435035, 313110.51659308246, 313937.9140760387, 312170.8178277389, 312316.704345339, 313064.39370023547, 312869.60820156604, 312766.2660137726, 312763.05081581674, 313268.1642050507, 312507.11099226936, 312062.1654106836, 314649.14185964427, 312497.09680078196, 313499.3817307889, 312406.09691349935, 312427.026113465, 312636.956160102, 314243.4047010352, 312721.9202599462, 312895.1171433321, 314188.62788729096, 311425.9036422808, 313117.502460305, 313008.5664827749, 313015.95224113466, 312687.9121779619, 313107.40464543604, 312226.5517706141, 314009.7772827787, 313068.6591309064, 313336.0294197542, 311558.94159840327, 313996.14926914533, 311449.7411226301, 313523.61871428124, 312302.2774157322, 313066.1020916195, 313535.02207736525, 313923.9694382831, 312612.25353844935, 312719.5026620296, 313327.74066896574, 311464.65062699385, 313624.69715242746, 312691.6517929842, 313997.262640128, 313066.04961180594, 312550.45704297273, 312281.4790531878 ], - "backlog" : [ 92238, 78759, 67279, 71082, 78032, 90122, 75528, 84563, 74326, 70385, 82879, 90481, 75336, 79780, 97255, 89779, 92198, 97492, 78502, 98670, 96972, 94952, 76381, 95560, 80674, 88207, 93891, 86909, 94983, 94871, 86204, 73937, 99956, 89161, 90373, 86089, 81519, 68340, 84324, 76281, 77099, 68543, 97287, 82168, 109429, 88147, 96249, 96951, 89517, 90085, 69147, 84824, 83333, 97695, 78579, 99881, 82261, 72358, 74901, 88767 ], - "publishLatencyAvg" : [ 135.45454638099625, 135.224233193497, 136.54714656211118, 134.94926895677193, 134.81850860567744, 135.304503844488, 136.5311646251791, 133.84053775351617, 135.42197164914245, 133.91963251699232, 136.59423684664182, 134.86876722370965, 134.45928897492203, 132.56507386494604, 134.68173081880366, 135.05144585468057, 135.40079522975552, 134.69523253706947, 132.9897394009446, 135.17744080555613, 133.192546999497, 133.80735933950373, 135.629799357692, 135.01130483737393, 133.72702990404983, 134.38754742731518, 134.1661854052444, 133.96877889530734, 135.28692139052472, 134.23364607787298, 134.17796708197017, 135.60015844961887, 133.46973518889806, 135.20710452785053, 134.78023511033675, 133.05009573960584, 133.14670278236193, 134.61879959382549, 133.25468571299817, 134.07188803201436, 133.07017940062994, 134.0611464783302, 134.83825263008524, 132.19240552902417, 133.3613364355195, 135.47240613431308, 136.5140196860403, 134.85081934666078, 133.71645923720797, 134.5851041846335, 134.3024425772484, 134.1244413131271, 135.9525306197174, 135.93728406546234, 131.81696492930348, 137.17355961712028, 131.5166584402145, 135.70326607631986, 134.06352702210233, 134.0290803081596 ], - "publishLatency50pct" : [ 131.563, 130.724, 131.43, 130.352, 130.497, 130.047, 130.964, 129.733, 129.778, 130.728, 128.76, 129.52, 127.203, 127.555, 128.83, 129.146, 131.008, 128.393, 127.537, 128.301, 127.401, 128.259, 129.185, 129.359, 128.016, 127.703, 127.752, 129.153, 129.523, 127.351, 128.022, 129.386, 128.94, 127.347, 129.182, 127.716, 128.453, 128.455, 127.387, 129.22, 129.725, 127.519, 129.814, 125.723, 127.377, 128.95, 131.676, 128.604, 128.437, 128.989, 129.8, 129.36, 130.148, 129.081, 128.467, 130.166, 127.406, 128.52, 126.715, 126.534 ], - "publishLatency75pct" : [ 155.721, 154.811, 162.473, 158.561, 157.448, 153.163, 160.235, 151.559, 158.715, 157.539, 168.51, 156.513, 154.689, 157.505, 160.417, 161.485, 158.016, 158.868, 149.884, 156.178, 151.448, 156.094, 157.775, 158.108, 157.995, 155.536, 155.089, 154.044, 155.543, 157.628, 156.058, 157.846, 156.115, 158.796, 159.177, 155.25, 151.874, 155.147, 159.793, 155.491, 160.351, 158.634, 157.991, 146.946, 158.549, 161.603, 159.734, 155.641, 156.295, 154.851, 160.136, 156.939, 159.731, 159.351, 153.325, 165.013, 149.887, 159.288, 155.322, 155.606 ], - "publishLatency95pct" : [ 204.35, 207.405, 199.836, 198.399, 200.438, 201.826, 202.613, 196.007, 197.894, 194.842, 197.683, 197.679, 195.445, 191.372, 209.641, 195.381, 199.184, 200.472, 192.022, 205.506, 193.234, 199.463, 201.071, 199.0, 197.638, 198.964, 195.466, 193.806, 201.906, 197.148, 198.733, 195.792, 189.671, 204.354, 200.383, 203.151, 191.446, 203.492, 199.929, 198.432, 191.141, 199.095, 201.03, 196.162, 193.647, 202.412, 203.659, 202.324, 193.231, 203.437, 196.58, 198.538, 197.383, 207.02, 191.027, 203.923, 190.816, 196.901, 199.862, 203.354 ], - "publishLatency99pct" : [ 226.286, 232.918, 218.459, 215.489, 224.139, 220.908, 224.679, 212.922, 218.659, 215.59, 214.402, 213.984, 218.533, 215.725, 233.163, 210.887, 217.116, 218.577, 215.153, 222.766, 209.175, 219.179, 228.667, 220.939, 216.496, 216.118, 214.212, 211.717, 216.842, 211.036, 215.071, 229.287, 216.871, 223.186, 216.01, 223.177, 210.204, 225.163, 217.613, 214.913, 201.614, 224.421, 220.811, 226.787, 210.197, 222.55, 227.839, 226.187, 215.396, 219.806, 216.906, 216.059, 216.562, 235.432, 216.397, 225.018, 212.191, 228.262, 274.797, 249.65 ], - "publishLatency999pct" : [ 280.803, 249.563, 249.2, 237.105, 238.085, 240.254, 250.978, 226.701, 237.681, 231.072, 237.225, 231.718, 229.37, 230.478, 251.314, 243.64, 243.26, 237.141, 243.331, 238.927, 232.891, 232.801, 244.608, 237.525, 240.074, 226.408, 239.532, 229.931, 247.366, 222.211, 242.955, 249.987, 230.338, 240.593, 238.234, 276.151, 225.93, 242.454, 244.681, 234.796, 213.293, 245.039, 242.852, 322.891, 240.665, 282.571, 241.647, 245.859, 263.175, 232.412, 226.232, 245.506, 240.477, 247.523, 279.267, 245.334, 284.733, 302.429, 304.571, 300.285 ], - "publishLatency9999pct" : [ 284.195, 250.795, 257.991, 247.23, 249.198, 243.96, 255.08, 238.932, 253.796, 247.922, 249.599, 240.654, 246.844, 256.963, 261.231, 249.486, 258.63, 250.654, 244.387, 266.255, 241.155, 242.256, 258.805, 239.966, 256.775, 237.587, 267.645, 245.271, 249.378, 248.724, 269.975, 286.909, 241.32, 263.397, 241.368, 279.415, 244.571, 252.647, 256.981, 256.779, 251.399, 246.837, 246.996, 328.179, 250.073, 288.387, 250.806, 249.29, 281.715, 259.964, 246.542, 247.771, 244.177, 249.151, 317.797, 272.207, 303.477, 308.147, 306.687, 322.433 ], - "publishLatencyMax" : [ 341.407, 336.351, 303.079, 333.455, 318.257, 318.731, 313.057, 334.783, 322.947, 310.169, 324.125, 334.229, 325.473, 315.953, 351.311, 329.119, 319.035, 301.521, 321.655, 328.805, 304.861, 318.259, 301.599, 313.369, 304.631, 305.733, 306.355, 287.771, 352.023, 318.015, 333.741, 335.147, 320.667, 346.733, 309.841, 332.673, 302.475, 354.667, 317.859, 333.157, 317.675, 328.151, 314.557, 366.425, 312.827, 311.725, 336.287, 319.273, 303.793, 309.327, 311.795, 329.817, 322.061, 320.391, 327.229, 330.845, 359.375, 309.549, 317.365, 335.073 ], - "aggregatedPublishLatencyAvg" : 134.5125434576984, - "aggregatedPublishLatency50pct" : 128.754, - "aggregatedPublishLatency75pct" : 156.799, - "aggregatedPublishLatency95pct" : 198.768, - "aggregatedPublishLatency99pct" : 220.265, - "aggregatedPublishLatency999pct" : 250.914, - "aggregatedPublishLatency9999pct" : 301.055, - "aggregatedPublishLatencyMax" : 366.425, - "aggregatedPublishLatencyQuantiles" : { - "1.0535045738296136E-6" : 5.318, - "0.5000127605741506" : 19.535, - "1.0000344759371786" : 29.599, - "1.5000124708603928" : 39.196, - "2.0000331327188468" : 46.963, - "2.5000311442289638" : 53.085, - "3.00001387992276" : 58.288, - "3.5000213729740417" : 62.78, - "4.000006742429273" : 66.966, - "4.500079552764132" : 70.639, - "5.000142354805539" : 73.813, - "5.5000529254360275" : 76.745, - "6.000169456210701" : 79.471, - "6.500062644015721" : 81.86, - "7.000174960772099" : 84.016, - "7.5001687582639205" : 85.953, - "8.00000400331738" : 87.833, - "8.500205341210247" : 89.616, - "9.00012697363876" : 91.354, - "9.500106548818836" : 93.01, - "10.00030314594112" : 94.53, - "10.500031987032623" : 95.913, - "11.000225950393473" : 97.254, - "11.500265048581968" : 98.511, - "12.000090812094264" : 99.725, - "12.500067753512905" : 100.842, - "13.000009402528322" : 101.872, - "13.500520470765894" : 102.824, - "14.000335699232451" : 103.742, - "14.500277875000155" : 104.58, - "15.000030946696857" : 105.388, - "15.50015906602184" : 106.161, - "16.000664339984258" : 106.913, - "16.500682368081275" : 107.594, - "17.000480740474654" : 108.263, - "17.50041870222406" : 108.909, - "18.000690098171088" : 109.515, - "18.50073288362559" : 110.102, - "19.000304225783307" : 110.678, - "19.500757878021606" : 111.212, - "20.000848071181935" : 111.734, - "20.500221881232054" : 112.237, - "21.000767188368275" : 112.712, - "21.500740969273195" : 113.168, - "22.000866981589034" : 113.616, - "22.50102512579437" : 114.045, - "23.000342573349794" : 114.456, - "23.500258938255442" : 114.852, - "24.001241976542087" : 115.239, - "24.501143065631414" : 115.617, - "25.00106891207822" : 115.98, - "25.500442195376056" : 116.329, - "26.000871617009157" : 116.672, - "26.501453796805464" : 117.006, - "27.001059904614117" : 117.338, - "27.500264100427852" : 117.647, - "28.00092634657177" : 117.956, - "28.501446369598217" : 118.257, - "29.00125896430334" : 118.543, - "29.50165098652407" : 118.828, - "30.00146621499063" : 119.114, - "30.500886905994285" : 119.39, - "31.000987107448065" : 119.666, - "31.50038409459881" : 119.943, - "32.00036946405404" : 120.21, - "32.501161818012825" : 120.469, - "33.0013225959796" : 120.731, - "33.50005376823969" : 120.988, - "34.00121748256075" : 121.24, - "34.500361628613774" : 121.492, - "35.001883007737646" : 121.739, - "35.501381131327484" : 121.977, - "36.00187955751017" : 122.218, - "36.50030784720528" : 122.461, - "37.001219247180906" : 122.696, - "37.50191415196661" : 122.934, - "38.00013490126068" : 123.166, - "38.50186224052874" : 123.399, - "39.001958754716505" : 123.629, - "39.50192990185999" : 123.856, - "40.0021538901012" : 124.08, - "40.501514004591854" : 124.3, - "41.00215149337829" : 124.52, - "41.50095799121541" : 124.747, - "42.001901523080534" : 124.971, - "42.500531558901535" : 125.192, - "43.00118221649514" : 125.418, - "43.50029475741095" : 125.639, - "44.00157066996912" : 125.866, - "44.50106826680667" : 126.094, - "45.00134071625827" : 126.324, - "45.501038478964844" : 126.553, - "46.00129828636156" : 126.785, - "46.50201900200932" : 127.022, - "47.000674321940096" : 127.256, - "47.50139977835844" : 127.491, - "48.00007458812383" : 127.731, - "48.50198523718773" : 127.978, - "49.000527305376814" : 128.226, - "49.501283313427805" : 128.485, - "50.00144514489915" : 128.754, - "50.25142176368202" : 128.888, - "50.50120348411872" : 129.023, - "50.750521135790656" : 129.16, - "51.000490380041505" : 129.3, - "51.25076566737105" : 129.44, - "51.50025346003166" : 129.584, - "51.751343633149055" : 129.727, - "52.0012528276392" : 129.87, - "52.250656866686185" : 130.015, - "52.50014518609908" : 130.166, - "52.75093036964236" : 130.321, - "53.00082428831618" : 130.475, - "53.250201462996536" : 130.63, - "53.50055102239853" : 130.789, - "53.75022001784584" : 130.952, - "54.00065017034774" : 131.115, - "54.25089859331065" : 131.279, - "54.50138984907783" : 131.448, - "54.750750167685005" : 131.618, - "55.00106548818836" : 131.794, - "55.25079927416695" : 131.969, - "55.50069740685907" : 132.146, - "55.75131508317511" : 132.329, - "56.000121258376446" : 132.514, - "56.250158453672306" : 132.699, - "56.50098261688482" : 132.886, - "56.75082807434824" : 133.081, - "57.00047125893349" : 133.276, - "57.251181643652025" : 133.47, - "57.500021004247444" : 133.664, - "57.75047380709768" : 133.867, - "58.000159658618166" : 134.077, - "58.25072413295322" : 134.291, - "58.501102663731004" : 134.503, - "58.75089439246116" : 134.718, - "59.00040062145181" : 134.94, - "59.25031929748312" : 135.161, - "59.500401266723365" : 135.385, - "59.75057963163212" : 135.609, - "60.00039243045375" : 135.847, - "60.250049310598456" : 136.088, - "60.501002001368974" : 136.333, - "60.75044238632376" : 136.574, - "61.0006818544978" : 136.817, - "61.25049359981486" : 137.075, - "61.50024108135291" : 137.342, - "61.75074287216583" : 137.596, - "62.00011530607561" : 137.859, - "62.250661344080626" : 138.128, - "62.500497846755174" : 138.405, - "62.750361213796346" : 138.687, - "63.0008777536733" : 138.959, - "63.25047195029587" : 139.24, - "63.500592899205344" : 139.531, - "63.75050209369548" : 139.828, - "64.00033332884716" : 140.119, - "64.25056963650748" : 140.417, - "64.50003056480145" : 140.712, - "64.75012939011488" : 141.009, - "65.00027878364784" : 141.313, - "65.25065994818706" : 141.626, - "65.50019672881035" : 141.939, - "65.75020179221671" : 142.263, - "66.00008991661538" : 142.582, - "66.250084444976" : 142.903, - "66.50001365605304" : 143.227, - "66.75072772803759" : 143.553, - "67.00057265874872" : 143.876, - "67.25037492252461" : 144.22, - "67.50039684200415" : 144.559, - "67.75045036662091" : 144.907, - "68.00041750386261" : 145.262, - "68.2501591911255" : 145.617, - "68.50042763067532" : 145.994, - "68.75061178985924" : 146.38, - "69.00033030002152" : 146.755, - "69.25023370023649" : 147.128, - "69.50050108628173" : 147.514, - "69.7501073982069" : 147.894, - "70.0000381895408" : 148.269, - "70.25006801030464" : 148.647, - "70.50024953572712" : 149.03, - "70.75059540786312" : 149.422, - "71.00028283964046" : 149.811, - "71.25030633937686" : 150.203, - "71.50014916307885" : 150.586, - "71.75032384072159" : 150.982, - "72.00050641964864" : 151.396, - "72.25029235410364" : 151.807, - "72.50008092232008" : 152.222, - "72.7504257409515" : 152.666, - "73.00007840707791" : 153.114, - "73.2502388624089" : 153.561, - "73.50044988595944" : 154.008, - "73.75023002613929" : 154.469, - "74.0003135756364" : 154.933, - "74.25056989988362" : 155.38, - "74.50002872116845" : 155.842, - "74.75028293840651" : 156.316, - "75.00030327762919" : 156.799, - "75.12538587567998" : 157.042, - "75.25035100797079" : 157.277, - "75.37537302950858" : 157.518, - "75.50045036003651" : 157.762, - "75.62542128660247" : 158.008, - "75.75047333302062" : 158.247, - "75.87535945246839" : 158.475, - "76.0005700513249" : 158.717, - "76.12513906589595" : 158.959, - "76.25020375436898" : 159.21, - "76.37517731469639" : 159.448, - "76.50016351707866" : 159.689, - "76.62555163145586" : 159.923, - "76.75002425035841" : 160.165, - "76.87550454638583" : 160.404, - "77.00034483838463" : 160.641, - "77.1252910075931" : 160.868, - "77.25036886487331" : 161.106, - "77.37535348699873" : 161.343, - "77.50006630494411" : 161.581, - "77.62518788266414" : 161.82, - "77.75021780548623" : 162.066, - "77.87548476683745" : 162.316, - "78.00048150426547" : 162.561, - "78.12517430562394" : 162.806, - "78.25039175226019" : 163.047, - "78.37522835699298" : 163.295, - "78.50003862411144" : 163.544, - "78.62542989900236" : 163.794, - "78.75001893016031" : 164.032, - "78.87540915154666" : 164.275, - "79.00040062145182" : 164.525, - "79.12539261810926" : 164.779, - "79.25037829373925" : 165.022, - "79.37529022404908" : 165.277, - "79.50006941278261" : 165.533, - "79.62537219328932" : 165.784, - "79.7500934392713" : 166.038, - "79.8754051745669" : 166.294, - "80.00037136036228" : 166.534, - "80.12517161918728" : 166.792, - "80.25007670171738" : 167.051, - "80.37507870666828" : 167.31, - "80.50017658053538" : 167.57, - "80.62542931957485" : 167.829, - "80.7501426642725" : 168.083, - "80.87543543648577" : 168.34, - "81.00047326059217" : 168.596, - "81.1251639549415" : 168.854, - "81.25048622528284" : 169.104, - "81.37546663338996" : 169.361, - "81.50019420039938" : 169.619, - "81.62538530942128" : 169.888, - "81.75033569264805" : 170.145, - "81.87503060101567" : 170.396, - "82.00009845000243" : 170.646, - "82.12522371498845" : 170.902, - "82.25003714262063" : 171.157, - "82.37525933002745" : 171.411, - "82.50026554899664" : 171.665, - "82.62550564598122" : 171.924, - "82.75021266965143" : 172.171, - "82.87503610557707" : 172.419, - "83.00007445643575" : 172.67, - "83.1251228155879" : 172.92, - "83.25000840828338" : 173.164, - "83.37546921447617" : 173.4, - "83.50037008298798" : 173.638, - "83.6250570900713" : 173.878, - "83.75049419241118" : 174.126, - "83.87522491993431" : 174.375, - "84.00007100620827" : 174.623, - "84.12513832844274" : 174.867, - "84.2500813371375" : 175.114, - "84.37526243786594" : 175.36, - "84.50035609771476" : 175.613, - "84.62545133782044" : 175.853, - "84.75037696368973" : 176.094, - "84.87543006361246" : 176.341, - "85.00007387700823" : 176.584, - "85.1250047704004" : 176.829, - "85.25016585454193" : 177.079, - "85.3752215882261" : 177.332, - "85.50016143640713" : 177.569, - "85.62529091541145" : 177.807, - "85.75044041100269" : 178.059, - "85.87523961632311" : 178.293, - "86.00004408916641" : 178.533, - "86.12524784024319" : 178.781, - "86.25021982031373" : 179.026, - "86.37507644163344" : 179.265, - "86.50011426573984" : 179.502, - "86.62548868455758" : 179.755, - "86.75006928767894" : 179.991, - "86.87528726106747" : 180.216, - "87.0004083120352" : 180.453, - "87.12507688278848" : 180.695, - "87.25035279892856" : 180.935, - "87.3752078399914" : 181.179, - "87.50007236259542" : 181.416, - "87.56288177853484" : 181.537, - "87.62518972629714" : 181.654, - "87.68766307427752" : 181.771, - "87.75031499128318" : 181.888, - "87.81271090667738" : 182.009, - "87.87547396841556" : 182.134, - "87.93777085437983" : 182.255, - "88.0000719543624" : 182.373, - "88.06273177265234" : 182.488, - "88.12543794514355" : 182.601, - "88.18770217246602" : 182.717, - "88.25035724998538" : 182.837, - "88.3129506974872" : 182.954, - "88.37510430682941" : 183.071, - "88.43768563902862" : 183.191, - "88.50039602553811" : 183.316, - "88.56255016163263" : 183.444, - "88.62544017067195" : 183.571, - "88.68784082683675" : 183.697, - "88.75004711140767" : 183.821, - "88.8126226493317" : 183.945, - "88.87523189940211" : 184.073, - "88.9377289512354" : 184.197, - "89.00042616893772" : 184.325, - "89.06270830583796" : 184.451, - "89.12526698768882" : 184.579, - "89.18783093706256" : 184.706, - "89.25001299102827" : 184.834, - "89.31282714773829" : 184.965, - "89.37537898180943" : 185.096, - "89.4379892853844" : 185.222, - "89.50047211490596" : 185.343, - "89.56265574912854" : 185.467, - "89.62521337747482" : 185.589, - "89.68756557242922" : 185.715, - "89.75039079093726" : 185.844, - "89.81277933179945" : 185.975, - "89.87543388256653" : 186.103, - "89.93790881080378" : 186.23, - "90.00002554748592" : 186.367, - "90.06268589252815" : 186.506, - "90.12508865570209" : 186.64, - "90.18751986349952" : 186.766, - "90.25027291694425" : 186.899, - "90.31262247813721" : 187.03, - "90.37532707037155" : 187.163, - "90.43759709196918" : 187.294, - "90.5003506721662" : 187.431, - "90.5628356086969" : 187.57, - "90.6251914909173" : 187.705, - "90.68785183595953" : 187.838, - "90.75038523370063" : 187.978, - "90.81278694337" : 188.117, - "90.87537881061493" : 188.258, - "90.93761353980935" : 188.392, - "91.00015799934846" : 188.528, - "91.06279674754694" : 188.67, - "91.12546288686433" : 188.813, - "91.18763229877516" : 188.957, - "91.250308446386" : 189.099, - "91.31253422079153" : 189.238, - "91.37506287776205" : 189.38, - "91.43773007058401" : 189.523, - "91.5001749739409" : 189.674, - "91.56285217505632" : 189.821, - "91.62503475577434" : 189.959, - "91.68765717465192" : 190.1, - "91.75035333884966" : 190.244, - "91.81287198752672" : 190.388, - "91.87536324508486" : 190.53, - "91.93784502110182" : 190.678, - "92.00028307667898" : 190.824, - "92.06253571545115" : 190.962, - "92.12509650431116" : 191.109, - "92.18764886513459" : 191.25, - "92.25041350712964" : 191.387, - "92.31275674729514" : 191.531, - "92.37534756103551" : 191.683, - "92.43753698953324" : 191.834, - "92.50036747556416" : 191.983, - "92.56270281444537" : 192.131, - "92.62506607119779" : 192.277, - "92.6875020197658" : 192.432, - "92.75003067673632" : 192.592, - "92.81261464269694" : 192.743, - "92.8753429387842" : 192.896, - "92.93770724904118" : 193.05, - "93.00028331371752" : 193.204, - "93.0626318214059" : 193.36, - "93.12536907228203" : 193.52, - "93.18773074877758" : 193.675, - "93.25034105235257" : 193.836, - "93.31284495196559" : 193.997, - "93.375204521452" : 194.158, - "93.43754407435151" : 194.32, - "93.50020810665976" : 194.489, - "93.56251710792662" : 194.659, - "93.62515585612509" : 194.828, - "93.68763973915121" : 194.987, - "93.75005777814147" : 195.147, - "93.7814116545155" : 195.227, - "93.81274551430263" : 195.307, - "93.843868673175" : 195.388, - "93.87526047571367" : 195.471, - "93.90646844170423" : 195.555, - "93.93764111529157" : 195.636, - "93.96885013478669" : 195.72, - "94.00031462914097" : 195.808, - "94.03134771337227" : 195.895, - "94.0625572596197" : 195.98, - "94.0938152670775" : 196.066, - "94.1251543943875" : 196.152, - "94.15628598129645" : 196.237, - "94.18777628651279" : 196.324, - "94.21895054035699" : 196.411, - "94.25012110693517" : 196.502, - "94.2814101927779" : 196.591, - "94.31271086717096" : 196.685, - "94.34403735242607" : 196.777, - "94.37505568759333" : 196.865, - "94.40626470708845" : 196.956, - "94.43779241171717" : 197.049, - "94.46898088787312" : 197.142, - "94.50032633621055" : 197.236, - "94.53151797288021" : 197.332, - "94.56279388991578" : 197.429, - "94.59397446478741" : 197.527, - "94.62528883473992" : 197.619, - "94.65659214289441" : 197.706, - "94.68765946602436" : 197.793, - "94.7189201072436" : 197.887, - "94.75019971154518" : 197.984, - "94.78149880568137" : 198.085, - "94.81265198943409" : 198.184, - "94.84399269700094" : 198.281, - "94.87505211884658" : 198.375, - "94.90630380527696" : 198.474, - "94.93753968913872" : 198.574, - "94.96895940954862" : 198.672, - "95.00024796863906" : 198.768, - "95.0312915879161" : 198.867, - "95.06268602421622" : 198.971, - "95.09399407314129" : 199.078, - "95.12526946342457" : 199.18, - "95.15643950325047" : 199.281, - "95.18765062975474" : 199.383, - "95.21875324528791" : 199.485, - "95.25016717142266" : 199.584, - "95.28136038834917" : 199.68, - "95.31267423154941" : 199.776, - "95.34401546586855" : 199.876, - "95.37519393373103" : 199.976, - "95.40643877238168" : 200.078, - "95.4377963360217" : 200.182, - "95.46903063962661" : 200.288, - "95.50007057163764" : 200.389, - "95.53148081050637" : 200.49, - "95.56282467858695" : 200.596, - "95.59397470182594" : 200.699, - "95.62514368814726" : 200.807, - "95.65633585156921" : 200.916, - "95.68771343179615" : 201.034, - "95.71895721694221" : 201.14, - "95.75018625302425" : 201.243, - "95.78144004646377" : 201.349, - "95.81257584739102" : 201.453, - "95.84388863708666" : 201.567, - "95.87528886766194" : 201.682, - "95.9065568834132" : 201.794, - "95.93755204147985" : 201.902, - "95.96879793363506" : 202.018, - "96.0001228386333" : 202.139, - "96.03126180007428" : 202.257, - "96.06272313391484" : 202.372, - "96.09400695223471" : 202.488, - "96.12515592196912" : 202.604, - "96.1564197237021" : 202.722, - "96.18776833255326" : 202.843, - "96.2188477709858" : 202.961, - "96.25019532633239" : 203.081, - "96.28142857643272" : 203.193, - "96.31271924253232" : 203.314, - "96.34395776015552" : 203.446, - "96.37520628607216" : 203.574, - "96.40633892648569" : 203.697, - "96.43760799574153" : 203.824, - "96.46881859549352" : 203.947, - "96.50014402724405" : 204.075, - "96.53142521180249" : 204.21, - "96.56268848678316" : 204.342, - "96.59384114378359" : 204.468, - "96.62515920100212" : 204.593, - "96.65630448347052" : 204.717, - "96.68768785797262" : 204.849, - "96.71877151042347" : 204.982, - "96.75006586378908" : 205.108, - "96.78142764144741" : 205.234, - "96.81251603466883" : 205.37, - "96.84398685005056" : 205.511, - "96.87506365472167" : 205.649, - "96.89077193466976" : 205.72, - "96.9063169214089" : 205.793, - "96.92206681478766" : 205.866, - "96.9376518347006" : 205.935, - "96.95315626151366" : 206.005, - "96.96888297779178" : 206.074, - "96.98443217854921" : 206.143, - "97.00014414576331" : 206.214, - "97.0157275854194" : 206.286, - "97.03142164305574" : 206.358, - "97.04697453107919" : 206.432, - "97.06253479363465" : 206.507, - "97.07812718807962" : 206.578, - "97.09380017562448" : 206.653, - "97.10948369821509" : 206.732, - "97.12510032326524" : 206.811, - "97.14069587822394" : 206.887, - "97.15631144976952" : 206.962, - "97.17188119386614" : 207.038, - "97.18759421458482" : 207.116, - "97.20315237013114" : 207.194, - "97.21889330872101" : 207.272, - "97.23440827057979" : 207.351, - "97.2502087321781" : 207.435, - "97.26579901961391" : 207.516, - "97.28125919923487" : 207.592, - "97.2969090096791" : 207.667, - "97.31250561814235" : 207.741, - "97.32826499306228" : 207.82, - "97.34375256380214" : 207.904, - "97.35950509094233" : 207.993, - "97.37507536179125" : 208.076, - "97.39064510588787" : 208.153, - "97.40634601130395" : 208.228, - "97.42192734395088" : 208.306, - "97.43755081678079" : 208.383, - "97.45317270935381" : 208.462, - "97.46887519502674" : 208.546, - "97.48439068363781" : 208.635, - "97.50008000050357" : 208.729, - "97.5157587823236" : 208.826, - "97.53125425434777" : 208.915, - "97.54699888020365" : 209.007, - "97.56254123318136" : 209.103, - "97.5781546977178" : 209.199, - "97.59385138911557" : 209.289, - "97.60951120785326" : 209.379, - "97.62502090218919" : 209.464, - "97.64078554463197" : 209.542, - "97.65632104982996" : 209.626, - "97.67190764999975" : 209.713, - "97.68754639864598" : 209.796, - "97.7031445873661" : 209.886, - "97.71881072713123" : 209.979, - "97.73450531151985" : 210.07, - "97.75012509708374" : 210.163, - "97.76568009211633" : 210.251, - "97.78127459357044" : 210.339, - "97.79698972129826" : 210.43, - "97.81250889717535" : 210.525, - "97.82814027128954" : 210.62, - "97.84379534925665" : 210.706, - "97.85946201577407" : 210.797, - "97.87516028742871" : 210.886, - "97.89067208877377" : 210.978, - "97.906253948173" : 211.079, - "97.92199699377203" : 211.176, - "97.93754935504319" : 211.271, - "97.95322497634947" : 211.365, - "97.9689237747564" : 211.456, - "97.98451932971508" : 211.549, - "98.00000584695039" : 211.639, - "98.01570253834817" : 211.736, - "98.03138395392962" : 211.839, - "98.04692683365961" : 211.937, - "98.06264090788285" : 212.037, - "98.078125318109" : 212.137, - "98.09391419115698" : 212.236, - "98.10938701283281" : 212.333, - "98.12508423098288" : 212.433, - "98.14073720194084" : 212.535, - "98.1562974644963" : 212.636, - "98.17196939853659" : 212.754, - "98.18759866564164" : 212.867, - "98.20320264863692" : 212.972, - "98.21885667309945" : 213.08, - "98.23443747899411" : 213.189, - "98.25000564283387" : 213.294, - "98.26568495140619" : 213.403, - "98.28125153498908" : 213.518, - "98.29688290910329" : 213.635, - "98.31250848894233" : 213.757, - "98.32813406878137" : 213.881, - "98.34385499078434" : 214.006, - "98.35947846361422" : 214.124, - "98.37509719567355" : 214.24, - "98.39069485764138" : 214.357, - "98.40636837193853" : 214.475, - "98.4219765689521" : 214.596, - "98.43752629646183" : 214.722, - "98.44532117680359" : 214.782, - "98.45320507828184" : 214.855, - "98.46105368735687" : 214.92, - "98.46885488872609" : 214.983, - "98.4766639913796" : 215.046, - "98.48438354614433" : 215.109, - "98.49224427052197" : 215.173, - "98.50003388334086" : 215.233, - "98.50783087069176" : 215.3, - "98.515703710372" : 215.374, - "98.52353599012613" : 215.45, - "98.53131348764244" : 215.52, - "98.53906306728751" : 215.584, - "98.54690904260111" : 215.647, - "98.55474817013499" : 215.711, - "98.56258993143028" : 215.776, - "98.57032318175447" : 215.847, - "98.57812859714198" : 215.922, - "98.58596035014384" : 215.999, - "98.59375206997188" : 216.073, - "98.60166863009192" : 216.141, - "98.60948036650687" : 216.211, - "98.61728314813294" : 216.281, - "98.62502324623686" : 216.353, - "98.63286658778902" : 216.423, - "98.64069834079088" : 216.488, - "98.64847741856403" : 216.558, - "98.65629547600642" : 216.632, - "98.6640740270273" : 216.706, - "98.67190999404744" : 216.78, - "98.67974964833358" : 216.868, - "98.68753715414334" : 216.959, - "98.69537786193406" : 217.051, - "98.70320171365161" : 217.129, - "98.71102029784629" : 217.211, - "98.71883361451809" : 217.29, - "98.7266506184559" : 217.358, - "98.73439387707356" : 217.429, - "98.74224353965316" : 217.511, - "98.75001893016031" : 217.588, - "98.75781802452038" : 217.666, - "98.76571035403522" : 217.745, - "98.77349311907439" : 217.824, - "98.78128325864556" : 217.901, - "98.78911290463827" : 217.98, - "98.79694465764011" : 218.062, - "98.80470319207409" : 218.144, - "98.81251966925961" : 218.224, - "98.82039198218756" : 218.302, - "98.82817474722673" : 218.374, - "98.83594170969728" : 218.445, - "98.84378189073573" : 218.522, - "98.8515641290226" : 218.6, - "98.85941010433619" : 218.681, - "98.86727504273212" : 218.764, - "98.8750167210929" : 218.843, - "98.8829148448829" : 218.92, - "98.89069971693122" : 218.99, - "98.89852567565792" : 219.069, - "98.9062594527344" : 219.147, - "98.9140648681219" : 219.229, - "98.92194034156357" : 219.325, - "98.92977051430856" : 219.425, - "98.93752062070593" : 219.519, - "98.94531708130455" : 219.613, - "98.95315094131556" : 219.701, - "98.96096847200566" : 219.79, - "98.96878126192517" : 219.885, - "98.97660932766102" : 219.985, - "98.9844036812505" : 220.073, - "98.99221752467459" : 220.172, - "99.00000503048435" : 220.265, - "99.007884191192" : 220.36, - "99.01566484922203" : 220.46, - "99.02343813272003" : 220.579, - "99.03126040418071" : 220.677, - "99.03909110367799" : 220.773, - "99.04692285667984" : 220.877, - "99.05470825548045" : 220.986, - "99.06258214866524" : 221.093, - "99.0703417366038" : 221.199, - "99.07815189276187" : 221.315, - "99.0859725839657" : 221.449, - "99.09380012294925" : 221.59, - "99.10158973576814" : 221.713, - "99.10940831996282" : 221.839, - "99.11723375193723" : 221.944, - "99.1250565501502" : 222.053, - "99.13286670630829" : 222.169, - "99.14064683758602" : 222.284, - "99.14845541348724" : 222.407, - "99.15627715819565" : 222.535, - "99.16411049145435" : 222.674, - "99.1718943099981" : 222.801, - "99.17969077059672" : 222.939, - "99.18751514906656" : 223.077, - "99.19531951094947" : 223.223, - "99.20315021044675" : 223.351, - "99.21096984814601" : 223.495, - "99.2187879055884" : 223.648, - "99.22266638267695" : 223.723, - "99.22656276934326" : 223.791, - "99.23048812738534" : 223.851, - "99.23442033320717" : 223.918, - "99.23832040713948" : 223.99, - "99.24218940268688" : 224.062, - "99.24613056329757" : 224.133, - "99.25000166585411" : 224.2, - "99.25393123791449" : 224.262, - "99.25782341056251" : 224.325, - "99.26175614313661" : 224.383, - "99.26564357501404" : 224.442, - "99.26953522090977" : 224.508, - "99.27346110570414" : 224.575, - "99.27738330323251" : 224.64, - "99.28125071852304" : 224.715, - "99.28519135238145" : 224.797, - "99.28908036451574" : 224.879, - "99.29300414230097" : 224.961, - "99.2968915741784" : 225.038, - "99.30078585383556" : 225.118, - "99.30472859470312" : 225.202, - "99.30863498966288" : 225.274, - "99.31254981265923" : 225.348, - "99.31645568086671" : 225.417, - "99.32032098914809" : 225.485, - "99.32427005104309" : 225.552, - "99.32816011668196" : 225.622, - "99.33206651164171" : 225.726, - "99.33593866770282" : 225.833, - "99.33985981172661" : 225.926, - "99.34377990224584" : 226.009, - "99.34768524370102" : 226.094, - "99.35161850302741" : 226.181, - "99.35548802532709" : 226.256, - "99.35938283173654" : 226.34, - "99.36328343242114" : 226.428, - "99.3672224860227" : 226.507, - "99.37112888098245" : 226.593, - "99.37502948166706" : 226.673, - "99.37890848550789" : 226.743, - "99.3828333167977" : 226.815, - "99.38673549773917" : 226.9, - "99.39062556337804" : 226.98, - "99.39454934116326" : 227.067, - "99.39847364570078" : 227.141, - "99.40235422979848" : 227.229, - "99.40625535723537" : 227.324, - "99.41018387579118" : 227.428, - "99.41411818862214" : 227.527, - "99.41798665741725" : 227.609, - "99.42191359571619" : 227.698, - "99.42581788366681" : 227.795, - "99.4297311264063" : 227.874, - "99.43361013024715" : 227.96, - "99.43753074751865" : 228.064, - "99.44143134820325" : 228.169, - "99.44532088708984" : 228.27, - "99.44923571008619" : 228.375, - "99.45312682922962" : 228.463, - "99.45703954521683" : 228.551, - "99.46096701026806" : 228.633, - "99.46487551223697" : 228.713, - "99.46880508429736" : 228.784, - "99.47267039257873" : 228.876, - "99.47658574232737" : 228.993, - "99.48049424429628" : 229.109, - "99.48438799720115" : 229.204, - "99.48832547054585" : 229.288, - "99.4921918323318" : 229.366, - "99.49609612028242" : 229.466, - "99.50002990636109" : 229.543, - "99.50392102550452" : 229.627, - "99.50784901730805" : 229.706, - "99.51173381542405" : 229.787, - "99.51564600465896" : 229.876, - "99.5195697824442" : 229.958, - "99.52346564235822" : 230.027, - "99.52734569970363" : 230.122, - "99.53127685202088" : 230.239, - "99.53516797116431" : 230.349, - "99.53907173236264" : 230.455, - "99.542986555359" : 230.558, - "99.54688873630046" : 230.657, - "99.5507956580125" : 230.763, - "99.55470415998141" : 230.871, - "99.5586174027209" : 230.982, - "99.5625180034055" : 231.111, - "99.56640806904437" : 231.235, - "99.57033026657274" : 231.339, - "99.57424245580765" : 231.464, - "99.5781651800883" : 231.573, - "99.58204365717687" : 231.678, - "99.58596848846666" : 231.808, - "99.5898553935918" : 231.96, - "99.593760735047" : 232.113, - "99.59767608479564" : 232.241, - "99.60157615872795" : 232.357, - "99.60547517915569" : 232.513, - "99.60939368941806" : 232.677, - "99.61133161108161" : 232.752, - "99.61329903087324" : 232.818, - "99.61526012963742" : 232.91, - "99.61720226531928" : 232.998, - "99.61915704305602" : 233.073, - "99.62110813352675" : 233.143, - "99.6230502692086" : 233.21, - "99.6250108412205" : 233.298, - "99.62696667246182" : 233.397, - "99.62892513746456" : 233.504, - "99.63086779989871" : 233.608, - "99.63282942541518" : 233.678, - "99.63477208784933" : 233.757, - "99.63673055285207" : 233.85, - "99.63868901785482" : 233.953, - "99.64063326054583" : 234.044, - "99.64258013699826" : 234.15, - "99.64455598482648" : 234.244, - "99.64648547845344" : 234.318, - "99.64844183644705" : 234.403, - "99.65040135495437" : 234.491, - "99.65236140021398" : 234.578, - "99.65430827666641" : 234.649, - "99.65627042893517" : 234.75, - "99.65821256461703" : 234.834, - "99.66016365508777" : 234.9, - "99.66213265513625" : 234.992, - "99.66406636278151" : 235.082, - "99.66602061376597" : 235.164, - "99.66797802526415" : 235.274, - "99.66992648197345" : 235.371, - "99.67187546543502" : 235.459, - "99.67383551069464" : 235.566, - "99.67579555595425" : 235.7, - "99.67773663813153" : 235.792, - "99.67970669168459" : 235.873, - "99.68165040762331" : 235.946, - "99.68361888091951" : 236.016, - "99.68555680258306" : 236.099, - "99.68751000006294" : 236.171, - "99.68947267908399" : 236.235, - "99.691424296307" : 236.316, - "99.69336853899802" : 236.391, - "99.69534122631251" : 236.472, - "99.69729442379239" : 236.549, - "99.6992265511808" : 236.611, - "99.70118554293583" : 236.693, - "99.70313768691113" : 236.815, - "99.70509457165703" : 236.945, - "99.7070519831552" : 237.056, - "99.70900623413965" : 237.133, - "99.71096206538097" : 237.224, - "99.71289788003538" : 237.306, - "99.71485529153355" : 237.396, - "99.716805855252" : 237.467, - "99.71875957948417" : 237.537, - "99.72071014320261" : 237.602, - "99.72267967000339" : 237.686, - "99.72462391269438" : 237.774, - "99.72658132419257" : 237.884, - "99.72852925414958" : 237.991, - "99.73048613889547" : 238.053, - "99.7324335421002" : 238.127, - "99.7343772580389" : 238.201, - "99.73633677654622" : 238.266, - "99.73828154598952" : 238.363, - "99.74026213458832" : 238.442, - "99.7421990027473" : 238.501, - "99.7441637887775" : 238.574, - "99.74610855822078" : 238.645, - "99.74805174740722" : 238.712, - "99.75000125762108" : 238.809, - "99.7519649901467" : 238.882, - "99.753917134122" : 238.982, - "99.75586506407902" : 239.065, - "99.7578145742929" : 239.2, - "99.7597709322865" : 239.299, - "99.76172571002323" : 239.426, - "99.76367363998024" : 239.519, - "99.765635792249" : 239.618, - "99.76757898143543" : 239.706, - "99.76954745473164" : 239.772, - "99.77149907195465" : 239.832, - "99.77346227772799" : 239.916, - "99.77540283315298" : 240.016, - "99.77734654909169" : 240.131, - "99.77930238033301" : 240.289, - "99.78125241729917" : 240.455, - "99.78320403452219" : 240.594, - "99.78516671354323" : 240.688, - "99.78712307153683" : 240.788, - "99.78907310850299" : 240.897, - "99.79102525247829" : 241.013, - "99.79297844995818" : 241.112, - "99.79492954042891" : 241.263, - "99.79688484491794" : 241.385, - "99.79883540863638" : 241.549, - "99.80078386534568" : 241.733, - "99.80273811633013" : 241.934, - "99.80469763483745" : 242.037, - "99.80567634058654" : 242.083, - "99.80665504633564" : 242.133, - "99.8076221635344" : 242.183, - "99.80859981577892" : 242.233, - "99.80958115528945" : 242.292, - "99.81055037949737" : 242.343, - "99.81153066550331" : 242.397, - "99.81250094321581" : 242.441, - "99.81348175597405" : 242.499, - "99.8144578279617" : 242.568, - "99.8154360069585" : 242.647, - "99.81640891843243" : 242.71, - "99.81738551717237" : 242.764, - "99.81836158916003" : 242.813, - "99.81933924140453" : 242.867, - "99.82031478663991" : 242.913, - "99.82130192042558" : 242.966, - "99.82228589369754" : 243.018, - "99.82326196568519" : 243.056, - "99.82422960963626" : 243.101, - "99.82522253769709" : 243.139, - "99.82617964660241" : 243.185, - "99.82715150457177" : 243.235, - "99.82814443263261" : 243.274, - "99.8291068090608" : 243.322, - "99.83008867532361" : 243.38, - "99.83106000654068" : 243.436, - "99.8320376587852" : 243.494, - "99.83300899000227" : 243.561, - "99.83398716899907" : 243.628, - "99.83496745500501" : 243.677, - "99.83593931297438" : 243.758, - "99.83692381299862" : 243.836, - "99.83789409071112" : 243.909, - "99.83888017099223" : 243.986, - "99.83984834169557" : 244.038, - "99.84082441368322" : 244.103, - "99.84179995891859" : 244.173, - "99.84278709270427" : 244.246, - "99.84376685195792" : 244.313, - "99.84473238889984" : 244.391, - "99.84570582712607" : 244.47, - "99.84668505962743" : 244.563, - "99.84766007811052" : 244.676, - "99.84864036411646" : 244.79, - "99.84961432909498" : 244.909, - "99.85059619535778" : 245.009, - "99.85156647307028" : 245.106, - "99.85253938454422" : 245.184, - "99.85353705337562" : 245.254, - "99.85450364382211" : 245.305, - "99.85547234127775" : 245.367, - "99.85644735976084" : 245.443, - "99.85742343174849" : 245.523, - "99.85840371775443" : 245.609, - "99.85938084324665" : 245.703, - "99.86035164771144" : 245.816, - "99.86133930824941" : 245.91, - "99.86230695220047" : 245.964, - "99.86328881846327" : 246.076, - "99.86425909617577" : 246.192, - "99.86523938218173" : 246.368, - "99.86621387391251" : 246.484, - "99.86718941914788" : 246.586, - "99.86816917840154" : 246.661, - "99.86914314338004" : 246.751, - "99.87012500964286" : 246.827, - "99.87110213513509" : 246.919, - "99.87207662686588" : 247.034, - "99.87305796637641" : 247.143, - "99.87402719058433" : 247.276, - "99.87500747659027" : 247.378, - "99.87597828105505" : 247.503, - "99.87695329953813" : 247.648, - "99.87793727281009" : 247.793, - "99.87891176454089" : 247.954, - "99.87988889003311" : 248.15, - "99.88086022125019" : 248.26, - "99.88184682828357" : 248.357, - "99.88281341873007" : 248.476, - "99.88380318627718" : 248.655, - "99.88476766971452" : 248.746, - "99.8857426881976" : 248.873, - "99.88672350095584" : 248.965, - "99.88770062644807" : 249.075, - "99.88867353792199" : 249.186, - "99.88964855640506" : 249.273, - "99.89063200292473" : 249.379, - "99.89160649465553" : 249.474, - "99.89258888767063" : 249.579, - "99.89355495136483" : 249.728, - "99.89453523737077" : 249.88, - "99.89554238774336" : 250.014, - "99.89648474758465" : 250.164, - "99.89746134632459" : 250.375, - "99.8984389985691" : 250.644, - "99.89941454380447" : 250.798, - "99.90039588331499" : 250.989, - "99.90136721453206" : 251.216, - "99.90234434002429" : 251.531, - "99.90283369289884" : 251.781, - "99.90332093876422" : 251.994, - "99.90380976488649" : 252.164, - "99.9043043852839" : 252.312, - "99.904787417131" : 252.368, - "99.90527571650097" : 252.471, - "99.90576190886179" : 252.607, - "99.9062523152409" : 252.747, - "99.90673903435402" : 252.916, - "99.907227333724" : 253.177, - "99.90771510634167" : 253.697, - "99.90820498596851" : 253.881, - "99.90869433884305" : 254.119, - "99.90918158470845" : 254.258, - "99.90966830382155" : 254.516, - "99.91015712994381" : 254.625, - "99.91064700957064" : 254.787, - "99.91113425543604" : 254.979, - "99.911622554806" : 255.337, - "99.91211348793742" : 255.517, - "99.9126007338028" : 255.658, - "99.91308639941134" : 256.293, - "99.91357680579046" : 256.503, - "99.91406352490357" : 256.668, - "99.91455709179641" : 256.857, - "99.91503907013893" : 256.924, - "99.91552894976577" : 257.033, - "99.91601619563116" : 257.21, - "99.91651450329458" : 257.554, - "99.91699437462796" : 257.769, - "99.91748162049336" : 258.422, - "99.91797044661561" : 258.62, - "99.91845874598559" : 258.778, - "99.9189454650987" : 259.065, - "99.91943376446866" : 259.249, - "99.91992311734322" : 259.4, - "99.9204103632086" : 259.878, - "99.92090340334916" : 259.99, - "99.92138959570998" : 260.083, - "99.9218757880708" : 260.275, - "99.92236566769763" : 260.37, - "99.92285186005846" : 260.574, - "99.92334279318986" : 261.06, - "99.92385321615588" : 261.134, - "99.92432255244353" : 261.204, - "99.92480505753834" : 261.275, - "99.92529599066974" : 261.434, - "99.92578270978285" : 261.663, - "99.92627048240054" : 261.963, - "99.92676194228423" : 262.213, - "99.92724760789277" : 262.531, - "99.92774644230848" : 262.897, - "99.928224733385" : 263.057, - "99.92871355950724" : 263.245, - "99.92920817990466" : 263.435, - "99.92969173850405" : 263.555, - "99.93017793086487" : 263.733, - "99.9306678104917" : 264.023, - "99.93115452960481" : 264.243, - "99.93164335572706" : 264.445, - "99.9321290213356" : 265.595, - "99.93262048121929" : 265.775, - "99.93311036084613" : 265.891, - "99.93359707995923" : 266.059, - "99.93408432582463" : 266.279, - "99.93457051818545" : 266.533, - "99.93506145131686" : 266.743, - "99.93554922393454" : 267.135, - "99.93606544117571" : 267.641, - "99.9365247691699" : 268.447, - "99.93701201503531" : 269.063, - "99.93750189466213" : 269.229, - "99.93798966727981" : 269.529, - "99.93847902015436" : 269.701, - "99.93896679277204" : 270.107, - "99.93945825265574" : 270.407, - "99.93994707877799" : 270.991, - "99.94043116412966" : 271.145, - "99.94092262401335" : 271.333, - "99.94140670936503" : 271.579, - "99.94189606223958" : 271.887, - "99.94238910238013" : 272.145, - "99.94287634824552" : 272.281, - "99.94336412086321" : 272.429, - "99.94384767946259" : 272.579, - "99.94433808584171" : 272.793, - "99.9448258584594" : 273.139, - "99.94531521133393" : 273.509, - "99.94580719796991" : 273.657, - "99.94629075656931" : 273.761, - "99.94678379670985" : 273.851, - "99.94726630180467" : 273.963, - "99.94775828844065" : 274.397, - "99.94824290054461" : 274.749, - "99.9487343604283" : 274.963, - "99.94921949928455" : 275.259, - "99.94971411968197" : 275.403, - "99.9501955712722" : 275.505, - "99.95068755790818" : 275.625, - "99.951173750269" : 275.859, - "99.95142448435757" : 276.107, - "99.9516652101527" : 276.199, - "99.95190540919553" : 276.287, - "99.95215140251352" : 276.479, - "99.95239686907922" : 276.565, - "99.95263812162663" : 276.635, - "99.95288464169691" : 276.681, - "99.95312747450117" : 276.731, - "99.95338031559889" : 276.773, - "99.95361524711886" : 276.885, - "99.95386229394141" : 276.965, - "99.95410986751627" : 277.007, - "99.95434901305453" : 277.033, - "99.95460501466597" : 277.053, - "99.95485100798396" : 277.085, - "99.95509015352222" : 277.109, - "99.95532982581277" : 277.139, - "99.95556791784645" : 277.187, - "99.95581075065071" : 277.281, - "99.95605569046413" : 277.565, - "99.95630431754356" : 277.623, - "99.95654873060468" : 277.665, - "99.9567894563998" : 277.717, - "99.95703913698381" : 277.779, - "99.95728987107238" : 277.833, - "99.95752058857404" : 277.867, - "99.95776868890118" : 277.905, - "99.9580094146963" : 277.941, - "99.95825593476657" : 277.991, - "99.95850034782771" : 278.041, - "99.9587416003751" : 278.089, - "99.95898706694081" : 278.121, - "99.95924412205683" : 278.165, - "99.95947431280621" : 278.229, - "99.95971714561048" : 278.313, - "99.95996419243303" : 278.405, - "99.9602075519896" : 278.489, - "99.96045512556445" : 278.541, - "99.96069585135956" : 278.597, - "99.96093815741155" : 278.687, - "99.96118362397725" : 278.861, - "99.96143172430439" : 279.079, - "99.96167403035636" : 279.157, - "99.96191633640835" : 279.225, - "99.96216232972634" : 279.317, - "99.96240358227374" : 279.415, - "99.96264746858259" : 279.555, - "99.96289346190058" : 279.693, - "99.96313892846628" : 279.813, - "99.96338070776596" : 279.919, - "99.96362406732253" : 280.003, - "99.96387006064052" : 280.089, - "99.96411394694935" : 280.147, - "99.96435625300134" : 280.227, - "99.9646112011082" : 280.303, - "99.9648445523713" : 280.383, - "99.96508791192787" : 280.541, - "99.96533337849357" : 280.721, - "99.9655777915547" : 280.817, - "99.9658269453864" : 280.873, - "99.96606977819067" : 280.947, - "99.96631735176553" : 281.009, - "99.96655439029463" : 281.067, - "99.96679880335576" : 281.185, - "99.96704426992146" : 281.291, - "99.96728657597345" : 281.427, - "99.96753046228228" : 281.579, - "99.967779616114" : 281.687, - "99.96802139541369" : 281.815, - "99.96826475497025" : 281.937, - "99.96850653426993" : 282.071, - "99.96875094733106" : 282.137, - "99.96899588714449" : 282.195, - "99.96924556772848" : 282.275, - "99.9694899807896" : 282.311, - "99.9697354473553" : 282.353, - "99.96997564639814" : 282.399, - "99.97021795245013" : 282.523, - "99.97046236551125" : 282.659, - "99.97070888558153" : 282.767, - "99.97095224513808" : 282.845, - "99.9711966581992" : 282.923, - "99.97143791074662" : 283.001, - "99.97168179705545" : 283.171, - "99.97192621011659" : 283.307, - "99.97217062317772" : 283.519, - "99.97241345598198" : 283.703, - "99.97265628878625" : 283.889, - "99.97290280885653" : 283.997, - "99.97314774866994" : 284.123, - "99.97339268848336" : 284.201, - "99.97363868180135" : 284.293, - "99.9738778273396" : 284.385, - "99.97412171364844" : 284.511, - "99.97436612670958" : 284.631, - "99.97460948626613" : 284.951, - "99.97485495283183" : 285.187, - "99.97510726717726" : 285.259, - "99.97534430570637" : 285.391, - "99.97558661175836" : 285.533, - "99.97571145205036" : 285.613, - "99.97583260507635" : 285.687, - "99.97595217784549" : 285.787, - "99.97607438437605" : 286.253, - "99.97619975142032" : 286.421, - "99.97632353820775" : 286.513, - "99.97644153072002" : 286.549, - "99.97656373725059" : 286.585, - "99.97668489027657" : 286.675, - "99.97680815031171" : 286.779, - "99.97693193709914" : 286.881, - "99.97705098311599" : 286.975, - "99.97717371639884" : 287.213, - "99.97729750318626" : 287.409, - "99.97741918296454" : 287.525, - "99.97753928248595" : 287.627, - "99.97766148901651" : 287.961, - "99.97778422229936" : 288.147, - "99.97790590207765" : 288.251, - "99.97802810860821" : 288.357, - "99.97814978838649" : 288.495, - "99.97827199491705" : 288.667, - "99.97839367469533" : 288.819, - "99.97851640797818" : 289.125, - "99.97863861450874" : 290.287, - "99.97875976753474" : 290.439, - "99.97888250081759" : 290.725, - "99.97900470734815" : 291.251, - "99.97912691387872" : 291.541, - "99.97924859365699" : 291.685, - "99.9793729071967" : 291.759, - "99.97949722073642" : 291.799, - "99.97962153427612" : 291.843, - "99.9797390000361" : 291.887, - "99.97985962630982" : 291.927, - "99.97998288634496" : 291.979, - "99.98010351261865" : 292.065, - "99.98022519239693" : 292.489, - "99.9803468721752" : 292.535, - "99.98046960545805" : 292.575, - "99.98059444575006" : 292.621, - "99.9807134917669" : 292.659, - "99.98083885881118" : 292.715, - "99.98095737807574" : 292.763, - "99.9810801113586" : 292.895, - "99.98120126438458" : 293.043, - "99.98132715818116" : 293.193, - "99.981446204198" : 293.233, - "99.98156841072857" : 293.307, - "99.98168956375456" : 293.489, - "99.9818128237897" : 293.663, - "99.98193503032026" : 293.811, - "99.98205618334624" : 293.969, - "99.98218155039054" : 294.099, - "99.98230323016881" : 294.155, - "99.98242227618566" : 294.227, - "99.98254500946851" : 294.311, - "99.98266774275136" : 294.401, - "99.98278836902506" : 294.493, - "99.98291110230791" : 294.611, - "99.98303278208618" : 294.727, - "99.98316394340563" : 295.203, - "99.98327719514731" : 295.321, - "99.98339940167789" : 295.413, - "99.98352160820845" : 295.499, - "99.98364276123444" : 295.609, - "99.98376602126957" : 295.713, - "99.98388822780014" : 295.817, - "99.98400990757841" : 295.929, - "99.9841310606044" : 296.455, - "99.98425432063954" : 296.591, - "99.98437600041783" : 296.709, - "99.98449715344381" : 296.825, - "99.98461988672666" : 296.969, - "99.98474209325722" : 297.107, - "99.9848637730355" : 297.441, - "99.98498545281377" : 297.491, - "99.9851092396012" : 297.545, - "99.98523249963634" : 297.597, - "99.98535628642377" : 297.649, - "99.98547375218375" : 297.705, - "99.98559701221889" : 297.775, - "99.98571816524488" : 297.843, - "99.98584037177544" : 297.911, - "99.98596205155373" : 298.037, - "99.98608478483658" : 298.343, - "99.98620857162399" : 298.421, - "99.98632814439313" : 298.487, - "99.98645035092369" : 298.549, - "99.98657308420654" : 298.639, - "99.98669476398481" : 298.729, - "99.98681855077224" : 298.849, - "99.98693865029367" : 298.947, - "99.98706085682423" : 299.031, - "99.98718517036394" : 299.109, - "99.98730579663764" : 299.173, - "99.98742852992049" : 299.245, - "99.98754968294648" : 299.315, - "99.98767136272475" : 299.399, - "99.98779304250304" : 299.541, - "99.98785572602517" : 299.601, - "99.9879157757859" : 299.657, - "99.98797793255574" : 299.719, - "99.9880395625733" : 299.791, - "99.98810119259088" : 299.835, - "99.98816176910388" : 299.877, - "99.98822234561688" : 299.917, - "99.98828502913902" : 299.963, - "99.98834402539515" : 299.993, - "99.98840354840357" : 300.023, - "99.98846570517343" : 300.053, - "99.98852575493413" : 300.085, - "99.98858843845628" : 300.123, - "99.98864901496927" : 300.155, - "99.98870906472997" : 300.183, - "99.98877016799527" : 300.213, - "99.98883601203113" : 300.241, - "99.98889658854412" : 300.265, - "99.98895558480025" : 300.289, - "99.98901668806553" : 300.313, - "99.98907726457854" : 300.337, - "99.98913994810067" : 300.361, - "99.98919894435681" : 300.385, - "99.98925794061294" : 300.411, - "99.98932325789653" : 300.427, - "99.9893806738958" : 300.443, - "99.98944177716108" : 300.477, - "99.98950288042636" : 300.569, - "99.98956398369164" : 300.607, - "99.98962719396607" : 300.639, - "99.98968671697449" : 300.681, - "99.9897472934875" : 300.723, - "99.9898073432482" : 300.769, - "99.98986844651348" : 300.817, - "99.98993007653105" : 300.889, - "99.98999065304405" : 301.033, - "99.99005228306162" : 301.683, - "99.99011233282232" : 301.753, - "99.9901734360876" : 301.831, - "99.99023453935288" : 301.901, - "99.99029932988418" : 301.955, - "99.99035990639717" : 301.989, - "99.99042100966246" : 302.021, - "99.99048105942316" : 302.059, - "99.99054321619302" : 302.083, - "99.99060115894459" : 302.113, - "99.99066331571443" : 302.153, - "99.99072336547515" : 302.203, - "99.99078499549272" : 302.247, - "99.990846098758" : 302.295, - "99.99090720202328" : 302.357, - "99.99096830528856" : 302.437, - "99.99102835504927" : 302.509, - "99.99108945831455" : 302.559, - "99.99115108833212" : 302.599, - "99.99121113809282" : 302.635, - "99.99127276811039" : 302.691, - "99.99133387137567" : 302.751, - "99.99139444788867" : 302.813, - "99.99145607790624" : 302.891, - "99.99151612766696" : 303.049, - "99.99157723093224" : 303.217, - "99.9916388609498" : 303.319, - "99.99170101771966" : 303.349, - "99.99176844201239" : 303.357, - "99.99182480450708" : 303.363, - "99.9918848542678" : 303.377, - "99.99194595753308" : 303.391, - "99.99200442703692" : 303.407, - "99.99206869081593" : 303.423, - "99.99214243613609" : 303.437, - "99.99219300435564" : 303.445, - "99.99225568787777" : 303.453, - "99.99231047011561" : 303.463, - "99.99237368039005" : 303.491, - "99.99243373015075" : 303.519, - "99.9924927264069" : 303.573, - "99.99255488317675" : 303.659, - "99.99261545968974" : 303.749, - "99.99267814321189" : 303.859, - "99.99273713946802" : 303.927, - "99.99280351025617" : 303.979, - "99.99286145300773" : 304.005, - "99.99292255627302" : 304.045, - "99.9929836595383" : 304.081, - "99.99304950357416" : 304.105, - "99.99312166863747" : 304.109, - "99.993168549591" : 304.115, - "99.99322596559027" : 304.127, - "99.99328706885555" : 304.497, - "99.99334817212085" : 304.541, - "99.99340822188155" : 304.573, - "99.99347353916512" : 305.049, - "99.99353042841211" : 305.091, - "99.99359258518197" : 305.141, - "99.99365263494268" : 305.193, - "99.99371373820796" : 305.265, - "99.99377536822553" : 305.339, - "99.99383647149081" : 305.411, - "99.9938970480038" : 305.493, - "99.99392865314103" : 305.529, - "99.9939576245168" : 305.557, - "99.99398922965402" : 305.597, - "99.9940218882958" : 306.017, - "99.99405507368988" : 306.027, - "99.99408088455193" : 306.039, - "99.99411038268" : 306.051, - "99.99414356807408" : 306.077, - "99.9941825477433" : 306.087, - "99.99420677834851" : 306.091, - "99.99423258921057" : 306.095, - "99.99426682810922" : 306.111, - "99.99429369247585" : 306.121, - "99.99433846642025" : 306.125, - "99.99436480403459" : 306.127, - "99.99439166840122" : 306.129, - "99.99442116652928" : 306.137, - "99.99446910098739" : 306.141, - "99.9944770022717" : 306.143, - "99.9945170354455" : 306.147, - "99.99454179280299" : 306.151, - "99.99457866546307" : 306.157, - "99.9946018425637" : 306.171, - "99.9946297604349" : 306.187, - "99.99466136557211" : 306.213, - "99.99469139045247" : 306.227, - "99.99472299558968" : 306.239, - "99.99475249371775" : 306.257, - "99.9947830453504" : 306.275, - "99.99481781100133" : 306.295, - "99.99484256835882" : 306.333, - "99.99487311999145" : 306.395, - "99.9949036716241" : 306.459, - "99.99494949907306" : 306.511, - "99.99496582839396" : 306.519, - "99.9949958532743" : 306.529, - "99.9950327259344" : 306.541, - "99.9950643310716" : 306.547, - "99.99509119543823" : 306.555, - "99.99511805980487" : 306.569, - "99.99514808468523" : 306.583, - "99.99517968982244" : 306.603, - "99.99521024145508" : 306.641, - "99.99523973958316" : 306.661, - "99.99527713899552" : 306.673, - "99.9953061103713" : 306.683, - "99.99533086772878" : 306.687, - "99.99536194611372" : 306.695, - "99.99539723851694" : 306.703, - "99.99544886024105" : 306.711, - "99.99546571631424" : 306.713, - "99.99549100042401" : 306.717, - "99.99551470427691" : 307.125, - "99.99554525590956" : 307.187, - "99.99557528078992" : 307.243, - "99.99560635917484" : 307.325, - "99.9956363840552" : 307.423, - "99.99566904269699" : 307.865, - "99.99569801407277" : 307.883, - "99.99572803895312" : 307.903, - "99.99575964409034" : 307.927, - "99.9957891422184" : 307.967, - "99.99581916709876" : 308.039, - "99.99584971873139" : 308.105, - "99.99588027036404" : 308.167, - "99.99591082199667" : 308.231, - "99.99594137362932" : 308.293, - "99.99597192526197" : 308.365, - "99.9960024768946" : 308.463, - "99.99603355527954" : 308.553, - "99.99606358015988" : 316.433, - "99.99609465854482" : 316.835, - "99.99612468342517" : 316.909, - "99.99615523505781" : 316.993, - "99.99618631344273" : 317.079, - "99.99621686507538" : 317.159, - "99.99624636320344" : 317.237, - "99.99627691483609" : 317.323, - "99.99630746646872" : 317.421, - "99.99633801810137" : 317.505, - "99.996368569734" : 317.589, - "99.99639912136665" : 317.671, - "99.9964296729993" : 317.785, - "99.99646022463193" : 317.915, - "99.99649130301687" : 318.035, - "99.99652132789721" : 318.165, - "99.99655187952986" : 318.283, - "99.9965824311625" : 318.403, - "99.99661298279514" : 320.209, - "99.99664458793235" : 320.247, - "99.99667408606042" : 320.287, - "99.99670463769306" : 320.325, - "99.99673466257342" : 320.391, - "99.99676521420605" : 320.477, - "99.9967957658387" : 320.559, - "99.99682631747133" : 320.645, - "99.99685686910398" : 320.731, - "99.99688742073663" : 320.813, - "99.99691797236926" : 320.897, - "99.99694852400191" : 320.977, - "99.99696379981822" : 321.029, - "99.99697960238683" : 321.065, - "99.99699435145087" : 321.103, - "99.99700962726719" : 321.147, - "99.99702648334036" : 321.179, - "99.9970412324044" : 321.199, - "99.9970575617253" : 321.215, - "99.99707125728476" : 321.231, - "99.99708758660564" : 321.251, - "99.9971012821651" : 321.269, - "99.997117611486" : 321.289, - "99.99713236055004" : 321.307, - "99.99714763636635" : 321.323, - "99.99716343893496" : 321.343, - "99.99717766124671" : 321.361, - "99.99719346381532" : 321.381, - "99.99720821287936" : 321.397, - "99.99722296194338" : 321.413, - "99.9972382377597" : 321.435, - "99.99725509383289" : 321.455, - "99.99726931614464" : 321.471, - "99.99728459196095" : 321.801, - "99.99729934102498" : 321.827, - "99.9973151435936" : 321.865, - "99.99733041940992" : 321.911, - "99.99734569522623" : 321.951, - "99.99736044429027" : 321.967, - "99.99737677361117" : 321.985, - "99.99739204942749" : 322.005, - "99.99740627173924" : 322.019, - "99.99742207430783" : 322.037, - "99.99743682337187" : 322.051, - "99.99745367944506" : 322.067, - "99.99746895526137" : 322.083, - "99.99748528458227" : 322.097, - "99.99749845338944" : 322.105, - "99.99751583621492" : 322.115, - "99.9975284782698" : 322.123, - "99.9975442808384" : 322.133, - "99.9975606101593" : 322.143, - "99.9975769394802" : 322.153, - "99.99759063503966" : 322.161, - "99.99760696436054" : 322.171, - "99.99762276692915" : 322.181, - "99.99763593573633" : 322.189, - "99.99765384531408" : 322.199, - "99.99766648736897" : 322.207, - "99.99768228993757" : 322.219, - "99.99769809250618" : 322.229, - "99.9977138950748" : 322.239, - "99.99772653712968" : 322.247, - "99.99774391995514" : 322.257, - "99.99776024927604" : 322.267, - "99.99777289133092" : 322.275, - "99.99778764039496" : 322.283, - "99.99780396971585" : 322.293, - "99.99781924553217" : 322.303, - "99.9978345213485" : 322.313, - "99.9978503239171" : 322.323, - "99.99786665323799" : 322.333, - "99.99788140230203" : 322.343, - "99.99789667811835" : 322.357, - "99.99791195393468" : 322.365, - "99.9979267029987" : 322.375, - "99.9979430323196" : 322.385, - "99.99795567437448" : 322.397, - "99.99797147694309" : 322.411, - "99.99798622600713" : 322.425, - "99.99800255532801" : 322.441, - "99.99801730439205" : 322.455, - "99.99803205345609" : 322.469, - "99.99804838277699" : 322.483, - "99.9980636585933" : 322.497, - "99.99807893440962" : 322.511, - "99.99809473697823" : 322.525, - "99.99810895928998" : 322.537, - "99.99812528861086" : 322.551, - "99.99814056442719" : 322.563, - "99.99815373323436" : 322.573, - "99.99816953580297" : 322.589, - "99.99818586512387" : 322.603, - "99.9982006141879" : 322.615, - "99.99821483649964" : 322.627, - "99.99823011231597" : 322.639, - "99.99824538813229" : 322.683, - "99.99826066394861" : 322.721, - "99.99827593976492" : 322.763, - "99.99829121558125" : 322.805, - "99.99830701814986" : 322.849, - "99.99832229396618" : 322.899, - "99.9983370430302" : 322.939, - "99.99835231884653" : 323.021, - "99.99836759466285" : 323.405, - "99.99838287047918" : 323.447, - "99.99839814629549" : 323.499, - "99.99841342211181" : 323.543, - "99.99842869792813" : 323.587, - "99.99844397374446" : 323.629, - "99.99845924956077" : 323.677, - "99.99847505212938" : 323.781, - "99.99848189990911" : 323.813, - "99.99849085469799" : 323.843, - "99.99849717572543" : 323.851, - "99.99850613051431" : 323.861, - "99.99851245154176" : 323.869, - "99.99852087957834" : 323.879, - "99.99852930761493" : 323.889, - "99.99853562864237" : 323.895, - "99.99854300317439" : 323.905, - "99.9985509044587" : 323.915, - "99.99855933249529" : 323.925, - "99.99856618027502" : 323.933, - "99.99857460831161" : 323.943, - "99.99858145609134" : 323.951, - "99.99858988412792" : 323.961, - "99.99859620515537" : 323.969, - "99.99860515994425" : 323.979, - "99.99861200772398" : 323.987, - "99.998619382256" : 323.995, - "99.99862781029259" : 324.005, - "99.99863623832918" : 324.031, - "99.99864308610891" : 324.035, - "99.99865046064093" : 324.041, - "99.99865836192522" : 324.051, - "99.99866573645724" : 324.057, - "99.99867363774155" : 324.065, - "99.99868153902585" : 324.075, - "99.99868944031016" : 324.085, - "99.9986957613376" : 324.093, - "99.9987036626219" : 324.103, - "99.99871103715392" : 324.113, - "99.9987194651905" : 324.123, - "99.99872683972252" : 324.141, - "99.99873368750225" : 324.159, - "99.99874158878656" : 324.181, - "99.99874896331858" : 324.203, - "99.99875686460288" : 324.223, - "99.99876476588719" : 324.245, - "99.9987721404192" : 324.267, - "99.99877951495122" : 324.287, - "99.99878741623552" : 324.309, - "99.99879479076753" : 324.327, - "99.99880269205184" : 324.349, - "99.99881059333615" : 324.371, - "99.99881796786816" : 324.393, - "99.99882534240018" : 324.413, - "99.9988327169322" : 324.433, - "99.9988406182165" : 324.453, - "99.99884799274852" : 324.473, - "99.99885589403281" : 324.493, - "99.99886326856483" : 324.515, - "99.99887116984914" : 324.537, - "99.99887854438116" : 324.565, - "99.99888644566546" : 324.599, - "99.99889382019748" : 324.653, - "99.99890172148179" : 324.689, - "99.9989090960138" : 325.187, - "99.99891752405038" : 325.619, - "99.99892437183011" : 325.639, - "99.99893227311442" : 325.667, - "99.99894017439873" : 325.699, - "99.99894754893074" : 325.721, - "99.99895492346276" : 325.737, - "99.99896282474707" : 325.757, - "99.99897019927909" : 325.783, - "99.99897810056339" : 325.799, - "99.9989854750954" : 325.813, - "99.99899495663657" : 325.851, - "99.99900127766401" : 325.861, - "99.99900917894831" : 325.875, - "99.99901602672804" : 325.903, - "99.99902392801235" : 325.943, - "99.99903130254437" : 326.017, - "99.99903920382867" : 326.051, - "99.99904657836069" : 326.081, - "99.99905447964498" : 326.095, - "99.99906343443386" : 326.105, - "99.9990697554613" : 326.113, - "99.9990781834979" : 326.121, - "99.99908503127763" : 326.129, - "99.99909345931422" : 326.139, - "99.99910030709395" : 326.147, - "99.99910873513053" : 326.157, - "99.99911505615799" : 326.165, - "99.99912348419457" : 326.175, - "99.9991303319743" : 326.183, - "99.9991387600109" : 326.193, - "99.9991466612952" : 326.203, - "99.99915350907493" : 326.211, - "99.99916193711152" : 326.221, - "99.99916983839582" : 326.231, - "99.99917615942327" : 326.239, - "99.99918458745985" : 326.249, - "99.99919248874416" : 326.259, - "99.99919933652389" : 326.267, - "99.99920829131277" : 326.275, - "99.9992151390925" : 326.283, - "99.9992230403768" : 326.293, - "99.99922988815653" : 326.301, - "99.99923831619311" : 326.311, - "99.99924200345913" : 326.315, - "99.99924516397284" : 326.319, - "99.99924990474344" : 326.325, - "99.99925306525715" : 326.329, - "99.99925622577088" : 326.333, - "99.99926043978917" : 326.339, - "99.99926465380747" : 326.347, - "99.99926781432119" : 326.351, - "99.99927255509176" : 326.357, - "99.99927624235778" : 326.361, - "99.9992794028715" : 326.365, - "99.99928467039437" : 326.371, - "99.99928783090809" : 326.375, - "99.99929099142182" : 326.379, - "99.9992952054401" : 326.395, - "99.99929836595383" : 326.403, - "99.99930205321984" : 326.413, - "99.99930574048585" : 326.423, - "99.99930995450414" : 326.435, - "99.99931416852243" : 326.447, - "99.99931732903616" : 326.455, - "99.99932101630216" : 326.465, - "99.99932523032047" : 326.477, - "99.99932891758647" : 326.487, - "99.99933313160477" : 326.495, - "99.99933681887077" : 326.501, - "99.99934050613679" : 326.511, - "99.99934472015508" : 326.521, - "99.9993478806688" : 326.529, - "99.99935156793481" : 326.539, - "99.9993557819531" : 326.551, - "99.99935946921912" : 326.561, - "99.99936315648512" : 326.571, - "99.99936684375113" : 326.581, - "99.99937158452171" : 326.593, - "99.99937474503544" : 326.601, - "99.99937843230144" : 326.611, - "99.99938211956744" : 326.623, - "99.99938633358575" : 326.635, - "99.99939002085175" : 326.647, - "99.99939370811776" : 326.655, - "99.99939739538377" : 326.667, - "99.99940160940207" : 326.679, - "99.99940529666807" : 326.689, - "99.99940951068636" : 326.699, - "99.99941267120009" : 326.709, - "99.99941635846609" : 326.723, - "99.9994205724844" : 326.751, - "99.9994242597504" : 326.779, - "99.99942794701641" : 326.803, - "99.99943163428242" : 326.829, - "99.99943584830072" : 326.847, - "99.99943953556672" : 326.871, - "99.99944322283272" : 326.885, - "99.99944743685103" : 327.351, - "99.99945112411703" : 327.359, - "99.99945481138305" : 327.367, - "99.99945849864905" : 327.377, - "99.99946218591506" : 327.387, - "99.99946639993335" : 327.403, - "99.99947008719937" : 327.417, - "99.99947377446537" : 327.427, - "99.99947798848366" : 327.439, - "99.99948220250197" : 327.449, - "99.99948536301568" : 327.461, - "99.9994890502817" : 327.475, - "99.9994927375477" : 327.489, - "99.999496951566" : 327.497, - "99.999500638832" : 327.505, - "99.99950432609802" : 327.519, - "99.99950801336402" : 327.533, - "99.9995127541346" : 327.547, - "99.99951644140062" : 327.557, - "99.99951960191433" : 327.565, - "99.99952328918035" : 327.581, - "99.99952802995092" : 327.591, - "99.99953119046465" : 327.599, - "99.99953540448294" : 327.609, - "99.99953856499667" : 327.613, - "99.99954225226267" : 327.621, - "99.99954646628096" : 327.629, - "99.99955120705155" : 327.645, - "99.99955436756527" : 327.651, - "99.999557528079" : 327.667, - "99.99956226884957" : 327.673, - "99.99956595611559" : 327.681, - "99.9995691166293" : 327.689, - "99.99957385739988" : 327.695, - "99.9995775446659" : 327.703, - "99.99958070517961" : 327.719, - "99.99958439244563" : 327.745, - "99.99958807971163" : 327.767, - "99.99959229372993" : 327.781, - "99.99959598099593" : 327.807, - "99.99959966826195" : 327.833, - "99.99960335552795" : 327.855, - "99.99960756954624" : 327.879, - "99.99961178356455" : 327.893, - "99.99961547083055" : 327.903, - "99.99961863134428" : 327.921, - "99.99962073835343" : 327.925, - "99.99962284536257" : 327.935, - "99.99962442561943" : 327.939, - "99.99962653262858" : 327.945, - "99.99962863963772" : 327.947, - "99.99963127339916" : 327.951, - "99.99963338040831" : 327.953, - "99.99963548741745" : 327.955, - "99.99963706767431" : 327.957, - "99.99963812117889" : 327.959, - "99.99964022818804" : 327.961, - "99.99964233519718" : 327.963, - "99.99964391545404" : 327.965, - "99.9996460224632" : 327.967, - "99.99964760272006" : 327.969, - "99.99964918297691" : 327.971, - "99.99965287024293" : 327.975, - "99.99965603075664" : 327.979, - "99.9996576110135" : 327.981, - "99.99966024477494" : 327.983, - "99.99966340528866" : 327.985, - "99.99966551229781" : 327.987, - "99.99966709255467" : 327.989, - "99.99966867281152" : 327.999, - "99.99967077982068" : 328.001, - "99.99967236007754" : 328.003, - "99.99967446708669" : 328.005, - "99.99967604734354" : 328.007, - "99.99967920785727" : 328.011, - "99.99968131486642" : 328.013, - "99.99968289512327" : 328.015, - "99.99968447538014" : 328.017, - "99.99968658238929" : 328.019, - "99.99968816264615" : 328.021, - "99.999689742903" : 328.023, - "99.99969132315987" : 328.025, - "99.99969501042588" : 328.029, - "99.99969764418731" : 328.033, - "99.99969922444417" : 328.035, - "99.99970080470104" : 328.037, - "99.99970396521475" : 328.041, - "99.99970554547161" : 328.043, - "99.99970765248077" : 328.045, - "99.99970870598534" : 328.047, - "99.99971081299448" : 328.049, - "99.99971239325134" : 328.051, - "99.99971397350821" : 328.053, - "99.99971766077421" : 328.057, - "99.99971924103107" : 328.059, - "99.99972082128794" : 328.061, - "99.99972187479251" : 328.063, - "99.99972398180165" : 328.065, - "99.99972556205852" : 328.067, - "99.99972872257224" : 328.071, - "99.9997303028291" : 328.073, - "99.99973240983824" : 328.075, - "99.99973399009511" : 328.077, - "99.99973557035197" : 328.079, - "99.99973715060882" : 328.081, - "99.99973873086569" : 328.083, - "99.9997424181317" : 328.087, - "99.99974399838855" : 328.089, - "99.99974768565457" : 328.091, - "99.99975031941601" : 328.093, - "99.99975347992972" : 328.097, - "99.99975506018659" : 328.099, - "99.99975664044345" : 328.101, - "99.9997582207003" : 328.103, - "99.99975980095716" : 328.105, - "99.99976348822318" : 328.109, - "99.99976506848003" : 328.111, - "99.9997666487369" : 328.113, - "99.99976822899376" : 328.115, - "99.99976980925062" : 328.117, - "99.99977138950747" : 328.119, - "99.99977349651662" : 328.121, - "99.99977507677349" : 328.123, - "99.9997782372872" : 328.127, - "99.99977981754407" : 328.129, - "99.99978139780093" : 328.131, - "99.9997829780578" : 328.133, - "99.99978455831466" : 328.135, - "99.9997866653238" : 328.137, - "99.99978982583752" : 328.141, - "99.9997908793421" : 328.143, - "99.99979245959895" : 328.145, - "99.9997945666081" : 328.147, - "99.99979614686497" : 328.149, - "99.99979878062639" : 328.151, - "99.99980036088326" : 328.153, - "99.99980194114012" : 328.155, - "99.99980510165385" : 328.159, - "99.9998066819107" : 328.161, - "99.99980826216756" : 328.163, - "99.99980984242443" : 328.165, - "99.99981142268129" : 328.167, - "99.99981352969043" : 328.169, - "99.99981510994729" : 328.171, - "99.99981669020416" : 328.173, - "99.99981827046102" : 328.175, - "99.99981985071787" : 328.177, - "99.99982143097473" : 328.179, - "99.9998230112316" : 328.181, - "99.99982459148846" : 328.183, - "99.9998266984976" : 328.185, - "99.99982775200218" : 328.187, - "99.99982985901133" : 328.189, - "99.9998309125159" : 328.191, - "99.99983301952504" : 328.193, - "99.9998345997819" : 328.195, - "99.99983618003877" : 328.197, - "99.99983776029563" : 328.199, - "99.9998393405525" : 328.201, - "99.99984092080935" : 328.203, - "99.99984250106621" : 328.205, - "99.99984408132308" : 328.207, - "99.99984566157994" : 328.209, - "99.9998467150845" : 328.211, - "99.99984882209365" : 328.213, - "99.99985040235052" : 328.215, - "99.99985198260738" : 328.217, - "99.99985356286423" : 328.219, - "99.9998551431211" : 328.221, - "99.99985672337796" : 328.223, - "99.99985830363482" : 328.225, - "99.99985988389169" : 328.227, - "99.99986093739625" : 328.231, - "99.99986199090083" : 328.233, - "99.99986357115769" : 328.237, - "99.99986409790998" : 328.239, - "99.99986515141455" : 328.241, - "99.99986567816684" : 328.243, - "99.99986673167142" : 328.247, - "99.99986831192827" : 328.251, - "99.99986883868056" : 328.253, - "99.99986989218513" : 328.255, - "99.99987041893742" : 328.257, - "99.999871472442" : 328.259, - "99.99987252594657" : 328.263, - "99.99987357945115" : 328.265, - "99.99987463295571" : 328.269, - "99.999875159708" : 328.271, - "99.99987621321257" : 328.273, - "99.99987779346944" : 328.277, - "99.99987832022173" : 328.279, - "99.99987990047859" : 328.283, - "99.99988253424002" : 328.287, - "99.9998830609923" : 328.289, - "99.99988411449688" : 328.293, - "99.99988464124917" : 328.299, - "99.99988569475374" : 328.303, - "99.99988674825832" : 328.305, - "99.99988780176288" : 328.309, - "99.99988938201975" : 328.313, - "99.99989096227661" : 328.317, - "99.9998914890289" : 328.319, - "99.99989306928576" : 328.323, - "99.99989359603805" : 328.325, - "99.99989464954261" : 328.327, - "99.9998951762949" : 328.329, - "99.99989675655176" : 328.333, - "99.99989728330405" : 328.335, - "99.99989833680863" : 328.337, - "99.99989991706549" : 328.341, - "99.99990097057005" : 328.345, - "99.99990202407463" : 328.347, - "99.9999036043315" : 328.351, - "99.99990413108378" : 328.353, - "99.99990518458836" : 328.355, - "99.99990571134065" : 328.357, - "99.99990623809293" : 328.359, - "99.99990676484522" : 328.361, - "99.99990781834978" : 328.363, - "99.99990887185436" : 328.365, - "99.99990939860665" : 328.367, - "99.99990992535893" : 328.369, - "99.99991097886351" : 328.371, - "99.9999115056158" : 328.373, - "99.99991203236809" : 328.375, - "99.99991255912038" : 328.377, - "99.99991361262495" : 328.379, - "99.99991466612951" : 328.381, - "99.9999151928818" : 328.383, - "99.99991571963409" : 328.385, - "99.99991624638638" : 328.387, - "99.99991729989095" : 328.389, - "99.99991835339553" : 328.391, - "99.99991888014782" : 328.393, - "99.9999199336524" : 328.395, - "99.99992046040468" : 328.397, - "99.99992098715697" : 328.399, - "99.99992204066153" : 328.401, - "99.99992256741382" : 328.403, - "99.9999236209184" : 328.405, - "99.99992414767068" : 328.407, - "99.99992467442297" : 328.409, - "99.99992520117526" : 328.411, - "99.99992625467983" : 328.413, - "99.99992730818441" : 328.415, - "99.99992836168897" : 328.417, - "99.99992888844126" : 328.419, - "99.99992941519355" : 328.421, - "99.99992994194584" : 328.423, - "99.99993099545041" : 328.425, - "99.99993204895499" : 328.427, - "99.99993310245956" : 328.429, - "99.99993362921185" : 328.431, - "99.99993468271643" : 328.433, - "99.9999352094687" : 328.435, - "99.99993573622099" : 328.437, - "99.99993678972557" : 328.439, - "99.99993731647785" : 328.441, - "99.99993836998243" : 328.443, - "99.99993889673472" : 328.445, - "99.999939423487" : 328.447, - "99.9999399502393" : 328.449, - "99.99994100374387" : 328.451, - "99.99994153049616" : 328.453, - "99.99994311075301" : 328.455, - "99.9999436375053" : 328.457, - "99.99994469100987" : 328.459, - "99.99994521776216" : 328.461, - "99.99994574451445" : 328.463, - "99.99994679801902" : 328.465, - "99.99994732477131" : 328.467, - "99.99994837827589" : 328.469, - "99.99994890502816" : 328.471, - "99.99994943178045" : 328.473, - "99.99995048528503" : 328.475, - "99.9999515387896" : 328.477, - "99.99995206554189" : 328.479, - "99.99995311904647" : 328.481, - "99.99995364579875" : 328.483, - "99.99995469930333" : 328.485, - "99.99995522605562" : 328.487, - "99.99995575280789" : 328.489, - "99.99995627956018" : 328.497, - "99.99995680631247" : 328.499, - "99.99995733306476" : 328.501, - "99.99995785981704" : 328.503, - "99.99995838656933" : 328.505, - "99.99995891332162" : 328.507, - "99.99995944007391" : 328.509, - "99.9999599668262" : 328.511, - "99.99996102033077" : 328.513, - "99.99996154708306" : 328.517, - "99.99996260058762" : 328.519, - "99.99996312733991" : 328.523, - "99.9999636540922" : 328.525, - "99.99996418084449" : 328.529, - "99.99996470759677" : 328.533, - "99.99996523434906" : 328.537, - "99.99996576110135" : 328.541, - "99.99996628785364" : 328.545, - "99.99996681460593" : 328.547, - "99.99996734135821" : 328.551, - "99.9999678681105" : 328.553, - "99.99996839486279" : 328.559, - "99.99996892161508" : 328.561, - "99.99996944836735" : 328.565, - "99.99996997511964" : 328.569, - "99.99997050187193" : 328.571, - "99.99997102862422" : 328.575, - "99.9999715553765" : 328.579, - "99.99997208212879" : 328.581, - "99.99997260888108" : 328.585, - "99.99997313563337" : 328.589, - "99.99997366238566" : 328.593, - "99.99997418913794" : 328.597, - "99.99997471589023" : 328.601, - "99.99997524264252" : 328.603, - "99.99997576939481" : 328.605, - "99.99997629614708" : 328.607, - "99.99997682289937" : 328.609, - "99.99997734965166" : 328.611, - "99.99997787640395" : 328.613, - "99.99997840315623" : 328.617, - "99.99997892990852" : 328.621, - "99.99997945666081" : 328.623, - "99.9999799834131" : 328.625, - "99.99998051016539" : 328.627, - "99.99998103691767" : 328.631, - "99.99998156366996" : 328.633, - "99.99998209042225" : 328.635, - "99.99998261717454" : 328.637, - "99.99998314392681" : 328.639, - "99.9999836706791" : 328.641, - "99.99998419743139" : 328.645, - "99.99998525093596" : 328.647, - "99.99998577768825" : 328.649, - "99.99998630444054" : 328.653, - "99.99998683119283" : 328.805, - "99.99998735794512" : 329.119, - "99.9999878846974" : 329.817, - "99.99998841144969" : 330.845, - "99.99998893820198" : 332.673, - "99.99998946495427" : 332.915, - "99.99998999170654" : 333.157, - "99.99999051845883" : 333.455, - "99.99999104521112" : 333.741, - "99.9999915719634" : 334.229, - "99.9999920987157" : 334.783, - "99.99999262546798" : 335.073, - "99.99999315222027" : 335.147, - "99.99999367897256" : 335.679, - "99.99999420572485" : 336.287, - "99.99999473247713" : 336.351, - "99.99999525922942" : 337.809, - "99.99999578598171" : 341.407, - "99.999996312734" : 342.159, - "99.99999683948627" : 346.733, - "99.99999736623856" : 351.311, - "99.99999789299085" : 352.023, - "99.99999841974314" : 352.987, - "99.99999894649542" : 354.667, - "99.99999947324771" : 359.375, - "100.0" : 366.425 - }, - "endToEndLatencyAvg" : [ 380.73018502290495, 379.00582981589145, 385.81853196346236, 392.27133173243294, 385.95514105890084, 386.24162846650165, 385.06289029284886, 382.31365127251576, 389.413096970244, 381.4145328065002, 387.9753685374881, 403.56846528907107, 404.8997146888463, 410.9797350437891, 421.8891259821688, 428.39240549129573, 419.35410916277317, 408.6723404957407, 417.20156009834193, 421.3629426129418, 424.7838404719567, 411.92928870408457, 407.6158052507864, 416.2175192104374, 412.7631016720905, 421.21896591203074, 412.6020272090837, 411.4903204718571, 419.3394217063764, 410.7765801950656, 424.1359381816468, 411.34523966663426, 407.64208581505676, 420.4295492234496, 416.95998060892555, 417.12129485120687, 407.36790304963125, 413.8616972700719, 422.7004850534725, 410.74257991909644, 413.2308238981425, 416.821128920724, 413.43090081895923, 425.48788587302226, 412.4008144569016, 427.14051222602626, 413.3049837746824, 425.642488076391, 416.3283502916243, 421.0380743330862, 430.7490362722478, 420.72271611352227, 417.43788951565455, 420.78920872529267, 419.8003477252836, 426.5459504108326, 431.5649750040538, 410.6976728026019, 406.68915568530934, 410.4328803166926 ], - "endToEndLatency50pct" : [ 352.001, 361.001, 356.001, 367.001, 361.001, 358.001, 365.001, 348.001, 360.001, 359.001, 355.001, 372.001, 375.001, 382.001, 387.001, 392.001, 387.001, 391.001, 393.001, 396.001, 389.001, 392.001, 390.001, 386.001, 392.001, 385.001, 387.001, 384.001, 388.001, 387.001, 396.001, 385.001, 387.001, 384.001, 393.001, 390.001, 383.001, 393.001, 394.001, 384.001, 384.001, 389.001, 385.001, 394.001, 382.001, 402.001, 386.001, 396.001, 388.001, 394.001, 397.001, 389.001, 393.001, 398.001, 393.001, 399.001, 393.001, 388.001, 379.001, 387.001 ], - "endToEndLatency75pct" : [ 467.001, 453.001, 465.001, 469.001, 461.001, 466.001, 464.001, 471.001, 472.001, 457.001, 466.001, 491.001, 498.001, 496.001, 513.001, 523.001, 514.001, 493.001, 516.001, 513.001, 521.001, 501.001, 494.001, 505.001, 499.001, 515.001, 501.001, 500.001, 513.001, 499.001, 521.001, 498.001, 496.001, 518.001, 506.001, 504.001, 498.001, 501.001, 518.001, 501.001, 506.001, 509.001, 506.001, 528.003, 504.001, 520.001, 502.001, 522.001, 511.001, 518.001, 531.003, 512.001, 509.001, 511.001, 522.001, 518.001, 529.003, 500.001, 495.001, 500.001 ], - "endToEndLatency95pct" : [ 643.003, 613.003, 665.003, 646.003, 646.003, 659.003, 621.003, 676.003, 662.003, 637.003, 682.003, 696.003, 680.003, 705.003, 727.003, 739.003, 717.003, 653.003, 691.003, 694.003, 743.003, 669.003, 658.003, 700.003, 678.003, 728.003, 685.003, 690.003, 715.003, 671.003, 708.003, 694.003, 667.003, 729.003, 674.003, 694.003, 685.003, 671.003, 715.003, 677.003, 694.003, 697.003, 692.003, 738.003, 698.003, 696.003, 691.003, 723.003, 709.003, 698.003, 741.003, 717.003, 698.003, 687.003, 692.003, 714.003, 769.003, 676.003, 682.003, 679.003 ], - "endToEndLatency99pct" : [ 748.003, 711.003, 801.003, 741.003, 752.003, 765.003, 718.003, 777.003, 773.003, 729.003, 774.003, 815.003, 781.003, 847.003, 855.003, 863.003, 836.003, 742.003, 806.003, 801.003, 877.003, 769.003, 767.003, 809.003, 771.003, 843.003, 771.003, 793.003, 831.003, 783.003, 809.003, 798.003, 756.003, 860.003, 770.003, 818.003, 801.003, 774.003, 827.003, 792.003, 801.003, 811.003, 802.003, 868.003, 795.003, 850.003, 809.003, 823.003, 819.003, 808.003, 853.003, 823.003, 817.003, 781.003, 791.003, 819.003, 923.003, 776.003, 798.003, 788.003 ], - "endToEndLatency999pct" : [ 833.003, 799.003, 919.003, 833.003, 837.003, 872.003, 789.003, 841.003, 854.003, 831.003, 832.003, 905.003, 862.003, 959.003, 955.003, 1004.003, 909.003, 843.003, 943.003, 920.003, 971.003, 867.003, 862.003, 905.003, 850.003, 906.003, 837.003, 944.003, 916.003, 882.003, 874.003, 878.003, 815.003, 992.003, 889.003, 930.003, 930.003, 849.003, 901.003, 866.003, 878.003, 915.003, 945.003, 954.003, 897.003, 964.003, 868.003, 912.003, 930.003, 889.003, 922.003, 991.003, 965.003, 857.003, 892.003, 918.003, 1052.007, 866.003, 928.003, 877.003 ], - "endToEndLatency9999pct" : [ 893.003, 828.003, 956.003, 874.003, 866.003, 913.003, 806.003, 878.003, 888.003, 926.003, 877.003, 959.003, 887.003, 1034.003, 1029.003, 1074.007, 943.003, 910.003, 1020.003, 963.003, 1031.003, 921.003, 893.003, 948.003, 894.003, 934.003, 875.003, 1001.003, 949.003, 935.003, 901.003, 908.003, 844.003, 1021.003, 927.003, 970.003, 969.003, 873.003, 937.003, 917.003, 927.003, 951.003, 987.003, 1019.003, 938.003, 997.003, 892.003, 933.003, 1005.003, 932.003, 942.003, 1032.003, 1038.003, 892.003, 969.003, 964.003, 1100.007, 914.003, 971.003, 960.003 ], - "endToEndLatencyMax" : [ 910.003, 832.003, 960.003, 883.003, 874.003, 918.003, 812.003, 884.003, 893.003, 935.003, 881.003, 966.003, 903.003, 1040.003, 1037.003, 1082.007, 951.003, 929.003, 1030.003, 979.003, 1045.003, 927.003, 905.003, 955.003, 906.003, 938.003, 888.003, 1009.003, 957.003, 941.003, 912.003, 914.003, 852.003, 1032.003, 928.003, 974.003, 982.003, 884.003, 946.003, 936.003, 940.003, 964.003, 992.003, 1030.003, 950.003, 999.003, 903.003, 943.003, 1013.003, 943.003, 960.003, 1048.003, 1040.003, 899.003, 986.003, 967.003, 1108.007, 914.003, 978.003, 967.003 ], - "aggregatedEndToEndLatencyQuantiles" : { - "8.429539136653766E-6" : 6.0, - "0.5013552696916195" : 97.0, - "1.0005130638995525" : 148.0, - "1.5237519440361211" : 168.0, - "2.0372257299290726" : 180.0, - "2.5029983343862883" : 188.0, - "3.072633397930999" : 196.0, - "3.5742083624863676" : 202.0, - "4.049480530704396" : 207.0, - "4.600500010758199" : 212.0, - "5.090215667440688" : 216.0, - "5.633756565741691" : 220.0, - "6.075532379661638" : 223.0, - "6.554092594989157" : 226.0, - "7.063707232496109" : 229.0, - "7.5904870459162685" : 232.0, - "8.13677755451441" : 235.0, - "8.518181009137642" : 237.0, - "9.093802099161769" : 240.0, - "9.701634565611835" : 243.0, - "10.114953835945025" : 245.0, - "10.536260621456393" : 247.0, - "11.189705851021088" : 250.0, - "11.636084193309648" : 252.0, - "12.083532560222366" : 254.0, - "12.539861973461745" : 256.0, - "13.013220636295754" : 258.0, - "13.708471638362488" : 261.0, - "14.185462378872002" : 263.001, - "14.664901373654516" : 265.001, - "15.146211726125369" : 267.001, - "15.634080260044538" : 269.001, - "16.13205949931193" : 271.001, - "16.626963010486833" : 273.001, - "17.120042053284845" : 275.001, - "17.618885847159937" : 277.001, - "18.128267091802044" : 279.001, - "18.638624582445413" : 281.001, - "19.15087608516355" : 283.001, - "19.67344955855452" : 285.001, - "20.200828396099578" : 287.001, - "20.738284747682503" : 289.001, - "21.00137329836845" : 290.001, - "21.53229096181231" : 292.001, - "22.082734072127646" : 294.001, - "22.633983257122924" : 296.001, - "23.184048618715696" : 298.001, - "23.739940899236682" : 300.001, - "24.02002498136071" : 301.001, - "24.584491156876062" : 303.001, - "25.160031639432194" : 305.001, - "25.74144013491983" : 307.001, - "26.04010344814724" : 308.001, - "26.632051501786673" : 310.001, - "27.224332522222003" : 312.001, - "27.527195326478054" : 313.001, - "28.13652877774064" : 315.001, - "28.73764395519118" : 317.001, - "29.048892570349615" : 318.001, - "29.667940538620996" : 320.001, - "30.28403711450216" : 322.001, - "30.600094254891857" : 323.001, - "31.228276682510195" : 325.001, - "31.54328013050781" : 326.001, - "32.18759985711088" : 328.001, - "32.81915989569204" : 330.001, - "33.147285501894444" : 331.001, - "33.79490223199234" : 333.001, - "34.119354666515946" : 334.001, - "34.76839651557413" : 336.001, - "35.09183161009319" : 337.001, - "35.74556818560429" : 339.001, - "36.07132561815549" : 340.001, - "36.73957838690611" : 342.001, - "37.078820974691176" : 343.001, - "37.74905468513891" : 345.001, - "38.0768088647731" : 346.001, - "38.74205492228292" : 348.001, - "39.06238689270729" : 349.001, - "39.72772356776282" : 351.001, - "40.06592826854168" : 352.001, - "40.74535649880272" : 354.001, - "41.080930129678556" : 355.001, - "41.73877610551878" : 357.001, - "42.07335715816127" : 358.001, - "42.73290326667612" : 360.001, - "43.05885194439649" : 361.001, - "43.70253260656376" : 363.001, - "44.02502253900711" : 364.001, - "44.68396856970467" : 366.001, - "45.00693477110924" : 367.001, - "45.64416051368263" : 369.001, - "46.28716628587277" : 371.001, - "46.604261840114866" : 372.001, - "47.23467914929681" : 374.001, - "47.55127261911408" : 375.001, - "48.17839134426261" : 377.001, - "48.80381941996805" : 379.001, - "49.11298277788255" : 380.001, - "49.730008710453525" : 382.001, - "50.03443308683464" : 383.001, - "50.33793864344986" : 384.001, - "50.64163966000381" : 385.001, - "50.945366492021364" : 386.001, - "51.2361887533131" : 387.001, - "51.532859007380885" : 388.001, - "51.82196006215015" : 389.001, - "52.112671158894514" : 390.001, - "52.40501231776943" : 391.001, - "52.691526030869944" : 392.001, - "52.980040705823015" : 393.001, - "53.26334908666681" : 394.001, - "53.548320194105315" : 395.001, - "53.83521323646697" : 396.001, - "54.115294684360016" : 397.001, - "54.393742909045336" : 398.001, - "54.674545082534564" : 399.001, - "54.95903201831891" : 400.001, - "55.23275706685672" : 401.001, - "55.501438089913634" : 402.001, - "55.770104888123264" : 403.001, - "56.02958032759676" : 404.001, - "56.28903258583763" : 405.001, - "56.540777611076614" : 406.001, - "56.800171916235925" : 407.001, - "57.0606209674797" : 408.001, - "57.32111427380395" : 409.001, - "57.57102692797311" : 410.001, - "57.82446997850194" : 411.001, - "58.07195545224593" : 412.001, - "58.32671193034149" : 413.001, - "58.57978144691733" : 414.001, - "58.82997965172474" : 415.001, - "59.076896131577016" : 416.001, - "59.320617816096494" : 417.001, - "59.567957880290386" : 418.001, - "59.80135706729084" : 419.001, - "60.043774807475124" : 420.001, - "60.27465777704328" : 421.001, - "60.51152782678326" : 422.001, - "60.96897415395824" : 424.001, - "61.19756481572743" : 425.001, - "61.431807483487745" : 426.001, - "61.65878178112748" : 427.001, - "61.88290584084663" : 428.001, - "62.10502314340507" : 429.001, - "62.3207803586849" : 430.001, - "62.546376953521985" : 431.001, - "62.76407559703423" : 432.001, - "63.198617285836335" : 434.001, - "63.41409527263227" : 435.001, - "63.62885780229397" : 436.001, - "63.83435416105971" : 437.001, - "64.04219182432065" : 438.001, - "64.2505336793912" : 439.001, - "64.65970614331536" : 441.001, - "64.86062895025326" : 442.001, - "65.0585534754895" : 443.001, - "65.26245296343504" : 444.001, - "65.66274174680156" : 446.001, - "65.8576980205693" : 447.001, - "66.04832994075994" : 448.001, - "66.44168648187895" : 450.001, - "66.63389894065772" : 451.001, - "66.82896532528042" : 452.001, - "67.01735288067593" : 453.001, - "67.39817522394493" : 455.001, - "67.58616184938525" : 456.001, - "67.77407893112769" : 457.001, - "68.1405541987861" : 459.001, - "68.32517164280274" : 460.001, - "68.50632138515705" : 461.001, - "68.86631749829655" : 463.001, - "69.04706894492664" : 464.001, - "69.40235926784311" : 466.001, - "69.5758981900494" : 467.001, - "69.92585735630813" : 469.001, - "70.10422008228537" : 470.001, - "70.27719738644667" : 471.001, - "70.62687521683672" : 473.001, - "70.79150358932938" : 474.001, - "71.12943169585532" : 476.001, - "71.29425078667093" : 477.001, - "71.62225943301782" : 479.001, - "71.79222844539973" : 480.001, - "72.1273574180861" : 482.001, - "72.29428125945492" : 483.001, - "72.62269557737275" : 485.001, - "72.78446159448231" : 486.001, - "73.11266517392173" : 488.001, - "73.27282114905618" : 489.001, - "73.58785041251741" : 491.001, - "73.90554393719201" : 493.001, - "74.05857431752501" : 494.001, - "74.36826610217415" : 496.001, - "74.52550598361353" : 497.001, - "74.83611764172095" : 499.001, - "75.14725087756244" : 501.001, - "75.29407606339848" : 502.001, - "75.44719495389242" : 503.001, - "75.59950408178305" : 504.001, - "75.75317668762904" : 505.001, - "75.90595523548033" : 506.001, - "76.04981954569462" : 507.001, - "76.19909930795802" : 508.001, - "76.34317330295833" : 509.001, - "76.49130559420675" : 510.001, - "76.64105003481505" : 511.001, - "76.78767291171181" : 512.001, - "76.93350130454493" : 513.001, - "77.07735191675813" : 514.001, - "77.22365921278346" : 515.001, - "77.36619797796851" : 516.001, - "77.50878890092697" : 517.001, - "77.65234816719375" : 518.001, - "77.79617296394335" : 519.001, - "77.93723497924088" : 520.001, - "78.08266138842644" : 521.001, - "78.22026465844698" : 522.001, - "78.36283556125" : 523.001, - "78.50420103995646" : 524.001, - "78.64215518954356" : 525.003, - "78.7809291118117" : 526.003, - "78.91720367572583" : 527.003, - "79.05556876534584" : 528.003, - "79.19364145532705" : 529.003, - "79.32790873523426" : 530.003, - "79.46534868293404" : 531.003, - "79.60285290586972" : 532.003, - "79.73809063647003" : 533.003, - "79.87634772261985" : 534.003, - "80.01241049436318" : 535.003, - "80.14996107976411" : 536.003, - "80.28497858865448" : 537.003, - "80.42042231611745" : 538.003, - "80.55194630788188" : 539.003, - "80.68558189920003" : 540.003, - "80.81738037783259" : 541.003, - "80.94540979877868" : 542.003, - "81.07524788271577" : 543.003, - "81.20597528303179" : 544.003, - "81.34036689864126" : 545.003, - "81.4665929250583" : 546.003, - "81.59954256262921" : 547.003, - "81.72511266553218" : 548.003, - "81.85958910337922" : 549.003, - "81.98802314220386" : 550.003, - "82.11387668836029" : 551.003, - "82.23725563793393" : 552.003, - "82.36162347781753" : 553.003, - "82.49424805128548" : 554.003, - "82.62107204813503" : 555.003, - "82.74538193493707" : 556.003, - "82.86807335022486" : 557.003, - "82.99110932292487" : 558.003, - "83.1138760772187" : 559.003, - "83.23462079581213" : 560.003, - "83.35905659885503" : 561.003, - "83.48202144731857" : 562.003, - "83.60487671177334" : 563.003, - "83.72599496431977" : 564.003, - "83.84658795120873" : 565.003, - "83.96727945833636" : 566.003, - "84.08744359242175" : 567.003, - "84.20517949238959" : 568.003, - "84.3256602610388" : 569.003, - "84.44631014731695" : 570.003, - "84.5671054431452" : 571.003, - "84.68567692117995" : 572.003, - "84.80372418724966" : 573.003, - "84.91749451589989" : 574.003, - "85.03201823461048" : 575.003, - "85.14650296670254" : 576.003, - "85.25889348516534" : 577.003, - "85.37520584671148" : 578.003, - "85.6009041228644" : 580.003, - "85.71295904030035" : 581.003, - "85.82493967242263" : 582.003, - "85.93640768319617" : 583.003, - "86.04996253175223" : 584.003, - "86.16213493588988" : 585.003, - "86.27693946362295" : 586.003, - "86.38629745538134" : 587.003, - "86.60616249045171" : 589.003, - "86.7150010118608" : 590.003, - "86.8265412005632" : 591.003, - "86.93364429060254" : 592.003, - "87.03935492614575" : 593.003, - "87.14547650172187" : 594.003, - "87.2507445864604" : 595.003, - "87.46381172506325" : 597.003, - "87.56843126213445" : 598.003, - "87.66932863083063" : 599.003, - "87.77266529741448" : 600.003, - "87.88116136879616" : 601.003, - "87.98527355298057" : 602.003, - "88.08925613300076" : 603.003, - "88.19234728925726" : 604.003, - "88.29302759732066" : 605.003, - "88.39732628505848" : 606.003, - "88.49867674148325" : 607.003, - "88.59844929355089" : 608.003, - "88.69903160822183" : 609.003, - "88.80015973555187" : 610.003, - "88.89709522085381" : 611.003, - "88.99580881206741" : 612.003, - "89.09172484998003" : 613.003, - "89.18929149702483" : 614.003, - "89.28635500595242" : 615.003, - "89.38160142234986" : 616.003, - "89.47855271303769" : 617.003, - "89.57506988245999" : 618.003, - "89.67262599258086" : 619.003, - "89.76714483438158" : 620.003, - "89.85622135497718" : 621.003, - "89.94760177398808" : 622.003, - "90.03870928666943" : 623.003, - "90.12493925726783" : 624.003, - "90.2139541368585" : 625.003, - "90.30076311142635" : 626.003, - "90.39079743840635" : 627.003, - "90.48145133651292" : 628.003, - "90.56827348223567" : 629.003, - "90.65461250999664" : 630.003, - "90.74073658450963" : 631.003, - "90.82913874197432" : 632.003, - "90.91406318769893" : 633.003, - "90.99682492978879" : 634.003, - "91.08342105849344" : 635.003, - "91.16978221379465" : 636.003, - "91.25941877189665" : 637.003, - "91.34102619397099" : 638.003, - "91.42285699883244" : 639.003, - "91.50885726448936" : 640.003, - "91.59304149130854" : 641.003, - "91.67756974869373" : 642.003, - "91.75925514400508" : 643.003, - "91.83778420375596" : 644.003, - "91.91787905040145" : 645.003, - "91.99677321456619" : 646.003, - "92.07492189136352" : 647.003, - "92.15128508640247" : 648.003, - "92.22545712811207" : 649.003, - "92.30223705849208" : 650.003, - "92.37870035430828" : 651.003, - "92.45711983005037" : 652.003, - "92.53164380501894" : 653.003, - "92.60526581929989" : 654.003, - "92.68115801383958" : 655.003, - "92.75601021398828" : 656.003, - "92.83212104969932" : 657.003, - "92.90425366978405" : 658.003, - "92.97597271560491" : 659.003, - "93.0503860528723" : 660.003, - "93.12368774466606" : 661.003, - "93.19552216980384" : 662.003, - "93.26431405815948" : 663.003, - "93.33273083202354" : 664.003, - "93.402718134398" : 665.003, - "93.47045633036156" : 666.003, - "93.53663558843104" : 667.003, - "93.60397232759321" : 668.003, - "93.66822543596997" : 669.003, - "93.73277515875509" : 670.003, - "93.7958771081935" : 671.003, - "93.86375755262999" : 672.003, - "93.930929915779" : 673.003, - "93.99578995097359" : 674.003, - "94.06032702945001" : 675.003, - "94.12499213155206" : 676.003, - "94.1895249952589" : 677.003, - "94.25311164319767" : 678.003, - "94.31637638811065" : 679.003, - "94.37563499454893" : 680.003, - "94.43638773679919" : 681.003, - "94.50001021027929" : 682.003, - "94.56220809164527" : 683.003, - "94.62352930094106" : 684.003, - "94.68308452178772" : 685.003, - "94.74081000579552" : 686.003, - "94.80198738607979" : 687.003, - "94.8578894554031" : 688.003, - "94.91624399376897" : 689.003, - "94.97462434759845" : 690.003, - "95.03085095417852" : 691.003, - "95.08713656753255" : 692.003, - "95.14275203252521" : 693.003, - "95.20040481175796" : 694.003, - "95.25640118655036" : 695.003, - "95.31051988150007" : 696.003, - "95.36381248161439" : 697.003, - "95.41708769580423" : 698.003, - "95.4720893849785" : 699.003, - "95.52803676307467" : 700.003, - "95.57927677040921" : 701.003, - "95.62936930672878" : 702.003, - "95.68029900165385" : 703.003, - "95.73235983536183" : 704.003, - "95.7862440837543" : 705.003, - "95.83447421877086" : 706.003, - "95.88534596061437" : 707.003, - "95.93639261539496" : 708.003, - "95.98579498319772" : 709.003, - "96.03385336635436" : 710.003, - "96.08024586183913" : 711.003, - "96.12873204410697" : 712.003, - "96.17663290025101" : 713.003, - "96.22506850528403" : 714.003, - "96.27366321786825" : 715.003, - "96.32040817345816" : 716.003, - "96.36839912030173" : 717.003, - "96.41325638597124" : 718.003, - "96.45936385766394" : 719.003, - "96.50610617902288" : 720.003, - "96.55126954233229" : 721.003, - "96.59581807613093" : 722.003, - "96.64172798050012" : 723.003, - "96.6845405560828" : 724.003, - "96.72800536725616" : 725.003, - "96.77210502809577" : 726.003, - "96.81109796875714" : 727.003, - "96.85509226035752" : 728.003, - "96.89682111331494" : 729.003, - "96.93677818251507" : 730.003, - "96.97698023519636" : 731.003, - "97.01594051139358" : 732.003, - "97.05692176959882" : 733.003, - "97.09629509321374" : 734.003, - "97.13438291211031" : 735.003, - "97.17186801895862" : 736.003, - "97.20931571972702" : 737.003, - "97.24721808876258" : 738.003, - "97.28417792995344" : 739.003, - "97.32012253852452" : 740.003, - "97.3554549518158" : 741.003, - "97.38992281049939" : 742.003, - "97.42472995813321" : 743.003, - "97.45999440826522" : 744.003, - "97.49621086947346" : 745.003, - "97.5314811149136" : 746.003, - "97.56371409203358" : 747.003, - "97.59793433300503" : 748.003, - "97.6288507214811" : 749.003, - "97.66057739940668" : 750.003, - "97.69472756983404" : 751.003, - "97.72774607463232" : 752.003, - "97.7580349892889" : 753.003, - "97.78938602587671" : 754.003, - "97.82115274411318" : 755.003, - "97.85164186032426" : 756.003, - "97.88347232695047" : 757.003, - "97.91370855698744" : 758.003, - "97.94386365271023" : 759.003, - "97.97343131492444" : 760.003, - "98.00275926211945" : 761.003, - "98.03059570773347" : 762.003, - "98.0576308202833" : 763.003, - "98.08701830109845" : 764.003, - "98.1141856520435" : 765.003, - "98.14046052553245" : 766.003, - "98.16723695660004" : 767.003, - "98.19421411606831" : 768.003, - "98.22028984169515" : 769.003, - "98.24713107484484" : 770.003, - "98.2719808293735" : 771.003, - "98.29648339225898" : 772.003, - "98.32051758887616" : 773.003, - "98.3449058261371" : 774.003, - "98.36962808388631" : 775.003, - "98.39386669682756" : 776.003, - "98.41902781745807" : 777.003, - "98.44315157792859" : 778.003, - "98.46618634731189" : 779.003, - "98.48903197891082" : 780.003, - "98.51102253913355" : 781.003, - "98.53336872053863" : 782.003, - "98.5568592118815" : 783.003, - "98.57724710597589" : 784.003, - "98.59775828208015" : 785.003, - "98.62100695101904" : 786.003, - "98.64469764391642" : 787.003, - "98.66728933564885" : 788.003, - "98.6871488030086" : 789.003, - "98.70792603644186" : 790.003, - "98.72680240879981" : 791.003, - "98.74795422987846" : 792.003, - "98.7689485239445" : 793.003, - "98.78875583353084" : 794.003, - "98.80928861032915" : 795.003, - "98.82739367985609" : 796.003, - "98.84610567620088" : 797.003, - "98.8647987060826" : 798.003, - "98.88375726644713" : 799.003, - "98.90274533019864" : 800.003, - "98.92079244664401" : 801.003, - "98.93824738796505" : 802.003, - "98.95555217812021" : 803.003, - "98.97218471252921" : 804.003, - "98.99003847642065" : 805.003, - "99.00776790460982" : 806.003, - "99.02582239690194" : 807.003, - "99.04143548392162" : 808.003, - "99.0562609358782" : 809.003, - "99.07275596343004" : 810.003, - "99.08886112479682" : 811.003, - "99.10515963871754" : 812.003, - "99.12004515114047" : 813.003, - "99.13428264274229" : 814.003, - "99.14968867920692" : 815.003, - "99.16363956647807" : 816.003, - "99.17785071577008" : 817.003, - "99.1932056481537" : 818.003, - "99.20563974522645" : 819.003, - "99.21982613274724" : 820.003, - "99.23348145930242" : 821.003, - "99.24726164840607" : 822.003, - "99.26025104136946" : 823.003, - "99.27335897472696" : 824.003, - "99.28546642715817" : 825.003, - "99.2975570205111" : 826.003, - "99.30986151341965" : 827.003, - "99.32295732931463" : 828.003, - "99.33432140176323" : 829.003, - "99.34714694555966" : 830.003, - "99.35885241434329" : 831.003, - "99.37024704387126" : 832.003, - "99.38205682820171" : 833.003, - "99.39267488643672" : 834.003, - "99.40253533984182" : 835.003, - "99.41470548697036" : 836.003, - "99.4256259549219" : 837.003, - "99.43621977823189" : 838.003, - "99.44595220801135" : 839.003, - "99.4557394297952" : 840.003, - "99.46664251182227" : 841.003, - "99.47691495895268" : 842.003, - "99.48598356252512" : 843.003, - "99.49483036384905" : 844.003, - "99.50329467483463" : 845.003, - "99.51282532252101" : 846.003, - "99.52242709444386" : 847.003, - "99.53131288238629" : 848.003, - "99.5396939516729" : 849.003, - "99.547159889117" : 850.003, - "99.55596348905284" : 851.003, - "99.5646185183614" : 852.003, - "99.57355962515442" : 853.003, - "99.58285635312974" : 854.003, - "99.59117630825763" : 855.003, - "99.59964904878235" : 856.003, - "99.60833042040072" : 857.003, - "99.6156525288333" : 858.003, - "99.62430808498804" : 859.003, - "99.63120186746325" : 860.003, - "99.63900129854943" : 861.003, - "99.64725276367182" : 862.003, - "99.65454958348698" : 863.003, - "99.66266775652178" : 864.003, - "99.67015476781371" : 865.003, - "99.67705750667425" : 866.003, - "99.68412409470174" : 867.003, - "99.69040462820475" : 868.003, - "99.69645914468964" : 869.003, - "99.70226498977001" : 870.003, - "99.70936371541548" : 871.003, - "99.71593770224968" : 872.003, - "99.72158496662503" : 873.003, - "99.72714477453185" : 874.003, - "99.73274936436533" : 875.003, - "99.73838556497059" : 876.003, - "99.7438784634105" : 877.003, - "99.74955523117283" : 878.003, - "99.75449599479931" : 879.003, - "99.75951947327856" : 880.003, - "99.76604551710892" : 881.003, - "99.77122336152361" : 882.003, - "99.77617782315117" : 883.003, - "99.78058805265823" : 884.003, - "99.78489291292608" : 885.003, - "99.78990532763522" : 886.003, - "99.79409270120135" : 887.003, - "99.79830272915392" : 888.003, - "99.80260758942177" : 889.003, - "99.80656999966219" : 890.003, - "99.81047340312865" : 891.003, - "99.81477194124216" : 892.003, - "99.81885289187669" : 893.003, - "99.82212302621551" : 894.003, - "99.82552065733378" : 895.003, - "99.82966008789607" : 896.003, - "99.83320576279543" : 897.003, - "99.83736626720555" : 898.003, - "99.84134500967807" : 899.003, - "99.8440145393534" : 900.003, - "99.84777200642357" : 901.003, - "99.85156951380462" : 902.003, - "99.85498505769355" : 903.003, - "99.85897539078238" : 904.003, - "99.86207798803086" : 905.003, - "99.86505624957708" : 906.003, - "99.86802976950753" : 907.003, - "99.87099222566786" : 908.003, - "99.87353900017953" : 909.003, - "99.87618008016028" : 910.003, - "99.8789186266873" : 911.003, - "99.88154548182077" : 912.003, - "99.88446473659302" : 913.003, - "99.88722804489126" : 914.003, - "99.88980221540511" : 915.003, - "99.89256763108813" : 916.003, - "99.89525507353413" : 917.003, - "99.89781976081646" : 918.003, - "99.9002885620911" : 919.003, - "99.90273576267172" : 920.003, - "99.90509181886041" : 921.003, - "99.90722818018536" : 922.003, - "99.90948887721257" : 923.003, - "99.91163156069187" : 924.003, - "99.91360407284985" : 925.003, - "99.91608077681744" : 926.003, - "99.9182276750663" : 927.003, - "99.92025761345965" : 928.003, - "99.92228965923778" : 929.003, - "99.92399664091295" : 930.003, - "99.92581215290451" : 931.003, - "99.92777939660053" : 932.003, - "99.92948269035232" : 933.003, - "99.93134298427054" : 934.003, - "99.93306735187018" : 935.003, - "99.93459046422294" : 936.003, - "99.93597448917994" : 937.003, - "99.93730688320973" : 938.003, - "99.93898014672835" : 939.003, - "99.94018662451728" : 940.003, - "99.94119132021314" : 941.003, - "99.94248103970104" : 942.003, - "99.94403312859458" : 943.003, - "99.94525067015363" : 944.003, - "99.94657937626005" : 945.003, - "99.94780165943486" : 946.003, - "99.94859825088328" : 947.003, - "99.94969092989386" : 948.003, - "99.9512835859445" : 949.003, - "99.95225930509956" : 950.003, - "99.95332300756937" : 951.003, - "99.9543429818049" : 952.003, - "99.95537928827251" : 953.003, - "99.95634183627268" : 954.003, - "99.95741818305119" : 955.003, - "99.95825850273388" : 956.003, - "99.95902453710292" : 957.003, - "99.95991701455901" : 958.003, - "99.96074679731778" : 959.003, - "99.96205337588395" : 960.003, - "99.96290528618296" : 961.003, - "99.96372084409442" : 962.003, - "99.96467654309404" : 963.003, - "99.96577238318181" : 964.003, - "99.96677760572386" : 965.003, - "99.96755786494019" : 966.003, - "99.9680499392873" : 967.003, - "99.9687011211856" : 968.003, - "99.96955671940798" : 969.003, - "99.97030536785255" : 970.003, - "99.9710292545259" : 971.003, - "99.9715371342589" : 972.003, - "99.97215354430826" : 973.003, - "99.97273887043207" : 974.003, - "99.9734258778717" : 975.003, - "99.97390056629433" : 976.003, - "99.97451961057467" : 977.003, - "99.97538837995195" : 978.003, - "99.97594314899638" : 979.003, - "99.97641889111141" : 980.003, - "99.97682614322095" : 981.003, - "99.97759639235956" : 982.003, - "99.97834609449653" : 983.003, - "99.97893300115891" : 984.003, - "99.97950884405118" : 985.003, - "99.97996983447273" : 986.003, - "99.98063366067973" : 987.003, - "99.98123057741985" : 988.003, - "99.98165258122287" : 989.003, - "99.9821283233379" : 990.003, - "99.98249816936752" : 991.003, - "99.98292965640208" : 992.003, - "99.98341488174863" : 993.003, - "99.98405131195345" : 994.003, - "99.98456077222502" : 995.003, - "99.98503229957048" : 996.003, - "99.98533049451744" : 997.003, - "99.9856281626182" : 998.003, - "99.98620505920286" : 999.003, - "99.98661757977436" : 1000.003, - "99.98691314049034" : 1001.003, - "99.98731881206129" : 1002.003, - "99.98756274185007" : 1003.003, - "99.98801741011725" : 1004.003, - "99.98832350775714" : 1005.003, - "99.98865384032206" : 1006.003, - "99.98888354526353" : 1007.003, - "99.98915697843928" : 1008.003, - "99.98939247868891" : 1009.003, - "99.98958477755046" : 1010.003, - "99.98979709656747" : 1011.003, - "99.99004313374103" : 1012.003, - "99.99061107394036" : 1013.003, - "99.9908702822688" : 1014.003, - "99.99145876946979" : 1015.003, - "99.99193187735384" : 1016.003, - "99.9921626359877" : 1017.003, - "99.99240077046831" : 1018.003, - "99.99267894525981" : 1019.003, - "99.99286386827463" : 1020.003, - "99.99322054314935" : 1021.003, - "99.9935334897898" : 1022.003, - "99.99364728856814" : 1023.003, - "99.99383168473675" : 1024.003, - "99.99405612121626" : 1025.003, - "99.99437380947248" : 1026.003, - "99.99455346402533" : 1027.003, - "99.99477526627386" : 1028.003, - "99.99501182021588" : 1029.003, - "99.99509664245345" : 1030.003, - "99.99521412915516" : 1031.003, - "99.99544225355805" : 1032.003, - "99.99558977049294" : 1033.003, - "99.99569566657834" : 1034.003, - "99.99584318351324" : 1035.003, - "99.99586952582304" : 1036.003, - "99.99596909975409" : 1037.003, - "99.99631734508968" : 1038.003, - "99.9965275567219" : 1039.003, - "99.99676463751011" : 1040.003, - "99.99684419128572" : 1041.003, - "99.99691478867598" : 1042.003, - "99.99699908406735" : 1043.003, - "99.99718980239032" : 1044.003, - "99.99721298362294" : 1045.003, - "99.99724880916428" : 1046.003, - "99.99731677232356" : 1047.003, - "99.99741634625461" : 1048.003, - "99.99760232296182" : 1049.007, - "99.99768345727601" : 1050.007, - "99.99771454120157" : 1051.007, - "99.99779514866957" : 1052.007, - "99.99789630313921" : 1053.007, - "99.99792949444956" : 1054.007, - "99.9980185314567" : 1055.007, - "99.99804592745889" : 1057.007, - "99.99827247132318" : 1058.007, - "99.9982830082471" : 1059.007, - "99.99836519625369" : 1060.007, - "99.99839575333306" : 1061.007, - "99.99842262248906" : 1062.007, - "99.99845317956843" : 1063.007, - "99.99873714966809" : 1064.007, - "99.99889994514267" : 1065.007, - "99.99891785791333" : 1066.007, - "99.99894578076172" : 1067.007, - "99.99896738145576" : 1068.007, - "99.99905641846289" : 1069.007, - "99.99906695538681" : 1070.007, - "99.99908434131127" : 1071.007, - "99.99911437154445" : 1072.007, - "99.9991201668526" : 1073.007, - "99.99920604278256" : 1074.007, - "99.99931878786852" : 1075.007, - "99.99932458317667" : 1076.007, - "99.99933722748538" : 1077.007, - "99.9993467107169" : 1078.007, - "99.9993609355642" : 1079.007, - "99.99945998264906" : 1080.007, - "99.99949949611376" : 1081.007, - "99.99952899950074" : 1082.007, - "99.99953321427031" : 1083.007, - "99.9995743082736" : 1085.007, - "99.99963226135516" : 1086.007, - "99.99963594927854" : 1087.007, - "99.99969969766826" : 1089.007, - "99.99971919097752" : 1090.007, - "99.9997218252085" : 1091.007, - "99.99972498628567" : 1093.007, - "99.99973499636339" : 1094.007, - "99.99981929175476" : 1095.007, - "99.99982034544715" : 1096.007, - "99.99982456021672" : 1097.007, - "99.99982561390911" : 1098.007, - "99.99983035552488" : 1099.007, - "99.99986934214338" : 1100.007, - "99.99991465091624" : 1101.007, - "99.9999199193782" : 1102.007, - "99.99994257376463" : 1103.007, - "99.99994415430322" : 1104.007, - "99.99994836907278" : 1105.007, - "99.99995679861192" : 1106.007, - "99.99996575499726" : 1107.007, - "100.0" : 1108.007 - }, - "aggregatedEndToEndLatencyAvg" : 410.9000775889238, - "aggregatedEndToEndLatency50pct" : 383.001, - "aggregatedEndToEndLatency75pct" : 501.001, - "aggregatedEndToEndLatency95pct" : 691.003, - "aggregatedEndToEndLatency99pct" : 806.003, - "aggregatedEndToEndLatency999pct" : 919.003, - "aggregatedEndToEndLatency9999pct" : 1012.003, - "aggregatedEndToEndLatencyMax" : 1108.007 -} \ No newline at end of file diff --git a/blog/results/rabbitmq/latency/classic-30k.json b/blog/results/rabbitmq/latency/classic-30k.json deleted file mode 100644 index 8027bee2..00000000 --- a/blog/results/rabbitmq/latency/classic-30k.json +++ /dev/null @@ -1,2935 +0,0 @@ -{ - "workload" : "100-partitions-50K-rate-4-producer", - "driver" : "RabbitMQ", - "publishRate" : [ 30724.418134969674, 30255.975019489477, 30244.13693092689, 30243.58213240618, 30244.873224618626, 30243.856386951942, 30237.780610953032, 30247.57099654735, 30245.39557131308, 30244.681971767714, 30242.208822868117, 30243.326883120433, 30244.962304645844, 30243.415529457987, 30244.216909001978, 30242.96012103943, 30243.81012537122, 30237.546521761087, 30249.401346609506, 30245.08911090424, 30244.30950120869, 30238.52602783233, 30247.360611980184, 30156.425179689726, 30331.870419766572, 30243.707655078182, 30243.76947959713, 30244.284756201756, 30241.786639793947, 30242.746970215416, 30243.86094689963, 30239.36450688416, 30246.150438487108, 30248.557232662493, 30243.737614417925, 30241.354542661178, 30246.983072216717, 30237.95506199003, 30246.090991182904, 30242.471003433908, 30244.902007428776, 30242.526301951344, 30244.515974456124, 30242.88798660805, 30244.49826567133, 30236.648036419603, 30250.220023957194, 30243.043360436408, 30247.266331484236, 30240.561200381457, 30244.332824566773, 30245.256239488815, 30242.314374517795, 30154.73547779779, 30335.16986429595, 30243.619862606196, 30241.854049896145, 30245.159649498913, 30243.48185553606, 30243.689354932747 ], - "consumeRate" : [ 30724.61713955956, 30256.17409094708, 30244.93324313997, 30242.387654547914, 30245.570042288284, 30243.259136709792, 30237.780610953032, 30247.86961018757, 30245.196484974975, 30244.5824260329, 30242.40791116314, 30243.52596435944, 30244.663668605037, 30243.91326022542, 30243.81872563265, 30242.661491007653, 30244.307856079595, 30237.34747922729, 30248.903651659824, 30244.790490319825, 30244.30950120869, 30239.023692873405, 30248.057436500952, 30155.829646222945, 30332.567219016153, 30243.80720088258, 30244.665396617023, 30242.990631791487, 30241.786639793947, 30243.543272039326, 30242.666520928382, 30239.5635515583, 30247.942059766487, 30246.96444885792, 30243.638062944538, 30240.55829846574, 30247.381171456265, 30238.651798238807, 30245.49390512248, 30242.471003433908, 30244.802468177346, 30243.521685072777, 30243.520597922492, 30242.788449726355, 30244.697338895985, 30236.548521385255, 30250.717701261037, 30243.34196377061, 30246.967699231685, 30239.864461418703, 30245.029586214077, 30244.75853740259, 30242.812059314798, 30154.73547779779, 30334.174442852447, 30244.51575750111, 30241.455905498, 30245.159649498913, 30243.48185553606, 30243.78889871105 ], - "backlog" : [ -2, -4, -12, 0, -7, -1, -1, -4, -2, -1, -3, -5, -2, -8, -3, 0, -5, -3, 2, 5, 5, 0, -7, -1, -8, -9, -18, -6, -5, -13, -1, -3, -21, -5, -4, 4, 0, -7, -1, -1, 0, -10, 0, 1, -1, 0, -5, -8, -5, 2, -5, 0, -5, -5, 5, -4, 0, 0, 0, -1 ], - "publishLatencyAvg" : [ 0.5555492040687885, 0.5637541648572896, 0.5538524380290404, 0.5477116376430473, 0.550348469339056, 0.5549921039812523, 0.5478400541084935, 0.55435313513976, 0.5544684317920027, 0.5475107253474999, 0.5467705364813225, 0.5508752612437672, 0.5313523679126362, 0.5426407886508015, 0.5510872393090372, 0.5468872029990554, 0.5394726978296502, 0.5422735402540978, 0.5445549043932071, 0.5524097115944747, 0.5487703174164329, 0.5546173275930169, 0.5589187954582854, 0.5491293404777734, 0.543896542783627, 0.5441538653957555, 0.5433402265104813, 0.5386734605876874, 0.5457838388492997, 0.5422726907696611, 0.5397857474320957, 0.542630188517792, 0.5538674650028629, 0.5433670838585256, 0.5435742763283498, 0.8145870237072583, 0.5446906949197158, 0.6954642365751378, 0.5394342424332159, 0.5436045740878482, 0.5515778240722456, 0.5445231899894022, 0.5373693034277345, 0.5714741803197757, 0.5451893329296268, 0.5428616514280825, 0.5360276689205864, 0.5261823561355297, 0.5448827467048428, 0.5322444860625172, 0.5561382284796546, 0.5526377162641146, 0.5490361427541695, 0.5457314354358308, 0.5443851086171819, 0.5564830348650063, 0.5477705247705938, 0.5525555204507459, 0.5346928398865125, 0.5414380451454489 ], - "publishLatency50pct" : [ 0.591, 0.594, 0.579, 0.573, 0.576, 0.587, 0.583, 0.569, 0.588, 0.572, 0.571, 0.577, 0.542, 0.571, 0.581, 0.584, 0.567, 0.566, 0.564, 0.587, 0.591, 0.592, 0.592, 0.579, 0.575, 0.572, 0.573, 0.571, 0.558, 0.568, 0.567, 0.557, 0.581, 0.585, 0.565, 0.578, 0.577, 0.59, 0.558, 0.576, 0.591, 0.58, 0.565, 0.594, 0.565, 0.566, 0.554, 0.528, 0.563, 0.533, 0.587, 0.589, 0.581, 0.567, 0.558, 0.58, 0.569, 0.597, 0.541, 0.552 ], - "publishLatency75pct" : [ 0.683, 0.692, 0.689, 0.684, 0.685, 0.695, 0.683, 0.681, 0.689, 0.683, 0.681, 0.688, 0.669, 0.675, 0.687, 0.683, 0.675, 0.677, 0.681, 0.684, 0.682, 0.692, 0.695, 0.686, 0.678, 0.673, 0.673, 0.672, 0.671, 0.673, 0.673, 0.672, 0.68, 0.673, 0.665, 0.676, 0.679, 0.685, 0.67, 0.675, 0.686, 0.677, 0.673, 0.692, 0.688, 0.684, 0.675, 0.662, 0.68, 0.671, 0.688, 0.687, 0.686, 0.683, 0.68, 0.7, 0.685, 0.686, 0.674, 0.671 ], - "publishLatency95pct" : [ 0.786, 0.807, 0.8, 0.8, 0.79, 0.806, 0.792, 0.809, 0.801, 0.792, 0.793, 0.808, 0.772, 0.783, 0.788, 0.78, 0.769, 0.778, 0.799, 0.79, 0.784, 0.794, 0.798, 0.795, 0.786, 0.779, 0.779, 0.779, 0.779, 0.777, 0.782, 0.791, 0.799, 0.775, 0.76, 0.781, 0.774, 0.789, 0.769, 0.773, 0.786, 0.774, 0.772, 0.804, 0.798, 0.788, 0.769, 0.755, 0.788, 0.788, 0.798, 0.79, 0.803, 0.801, 0.786, 0.816, 0.799, 0.776, 0.777, 0.786 ], - "publishLatency99pct" : [ 0.868, 0.896, 0.884, 0.886, 0.874, 0.886, 0.876, 0.92, 0.886, 0.879, 0.889, 0.908, 0.86, 0.874, 0.866, 0.854, 0.841, 0.854, 0.885, 0.877, 0.862, 0.864, 0.874, 0.879, 0.873, 0.868, 0.861, 0.858, 0.869, 0.863, 0.867, 0.881, 0.887, 0.849, 0.843, 0.906, 0.848, 0.895, 0.852, 0.845, 0.866, 0.855, 0.853, 0.9, 0.876, 0.864, 0.84, 0.827, 0.871, 0.872, 0.88, 0.869, 0.886, 0.888, 0.866, 0.906, 0.882, 0.844, 0.854, 0.879 ], - "publishLatency999pct" : [ 1.659, 1.334, 1.637, 0.997, 1.795, 1.064, 0.998, 3.159, 1.183, 1.018, 1.446, 1.118, 1.054, 1.136, 2.214, 0.971, 0.961, 1.119, 1.024, 1.93, 1.046, 0.954, 1.037, 1.202, 1.488, 2.293, 1.003, 0.982, 4.614, 1.649, 1.029, 1.76, 2.828, 0.956, 3.245, 76.629, 1.015, 61.116, 1.095, 1.004, 1.114, 1.213, 0.967, 8.089, 1.005, 0.975, 0.971, 1.054, 1.092, 1.038, 1.404, 1.008, 1.034, 1.18, 1.18, 1.753, 1.031, 0.979, 0.984, 1.364 ], - "publishLatency9999pct" : [ 9.559, 11.011, 6.096, 1.252, 6.412, 2.855, 1.621, 7.775, 4.976, 1.862, 6.842, 2.986, 2.901, 2.9, 6.137, 2.495, 3.687, 5.62, 2.895, 6.522, 5.153, 1.077, 3.964, 5.969, 9.08, 11.118, 1.945, 1.664, 12.057, 6.196, 2.637, 7.394, 7.114, 1.214, 11.854, 91.922, 3.867, 87.634, 10.698, 8.544, 5.76, 5.307, 1.542, 13.312, 1.986, 1.184, 3.762, 4.459, 7.866, 2.694, 10.205, 3.258, 2.276, 5.491, 12.055, 4.687, 6.588, 2.224, 2.784, 7.977 ], - "publishLatencyMax" : [ 12.29, 13.984, 10.837, 1.67, 9.554, 5.957, 9.932, 12.241, 7.132, 2.953, 11.794, 5.75, 10.282, 5.882, 11.255, 3.899, 9.315, 13.51, 10.705, 12.228, 7.908, 1.459, 9.114, 12.138, 13.566, 12.836, 5.874, 2.895, 12.937, 12.54, 11.432, 12.244, 11.327, 2.447, 13.597, 93.308, 10.733, 99.032, 12.508, 10.469, 10.99, 7.03, 11.191, 13.997, 6.721, 10.22, 10.703, 7.12, 11.866, 10.252, 13.774, 10.821, 10.114, 8.201, 13.881, 7.048, 9.969, 11.367, 4.627, 11.531 ], - "aggregatedPublishLatencyAvg" : 0.553705735693673, - "aggregatedPublishLatency50pct" : 0.576, - "aggregatedPublishLatency75pct" : 0.68, - "aggregatedPublishLatency95pct" : 0.788, - "aggregatedPublishLatency99pct" : 0.873, - "aggregatedPublishLatency999pct" : 1.258, - "aggregatedPublishLatency9999pct" : 29.542, - "aggregatedPublishLatencyMax" : 99.032, - "aggregatedPublishLatencyQuantiles" : { - "5.484519149445414E-6" : 0.232, - "0.5151883063031549" : 0.271, - "1.0080217125531703" : 0.277, - "1.5934008949309277" : 0.282, - "2.0258881369795954" : 0.285, - "2.5184637708295865" : 0.288, - "3.0669815000039216" : 0.291, - "3.66411400691894" : 0.294, - "4.089235539749903" : 0.296, - "4.529691788122714" : 0.298, - "5.222068454587002" : 0.301, - "5.700927306044231" : 0.303, - "6.1947534102602955" : 0.305, - "6.700025705941253" : 0.307, - "7.215076899265672" : 0.309, - "7.742056921740135" : 0.311, - "8.007074371560487" : 0.312, - "8.547869897772403" : 0.314, - "9.093360172376244" : 0.316, - "9.652095560725995" : 0.318, - "10.213606115765366" : 0.32, - "10.781577434362783" : 0.322, - "11.066904058593531" : 0.323, - "11.638890045208344" : 0.325, - "12.21577370742361" : 0.327, - "12.506151573790996" : 0.328, - "13.086079144134205" : 0.33, - "13.669220642698988" : 0.332, - "14.248166484114448" : 0.334, - "14.538209794813717" : 0.335, - "15.114457252807648" : 0.337, - "15.689114200248241" : 0.339, - "16.25942740852247" : 0.341, - "16.544803393425564" : 0.342, - "17.108787466601335" : 0.344, - "17.66848264580224" : 0.346, - "18.21614478998926" : 0.348, - "18.756984192354373" : 0.35, - "19.027425831613524" : 0.351, - "19.557970791535126" : 0.353, - "20.07804031988129" : 0.355, - "20.588385795775483" : 0.357, - "21.086977947132418" : 0.359, - "21.568304832206895" : 0.361, - "22.034889329807665" : 0.363, - "22.708476033665953" : 0.366, - "23.140738410429492" : 0.368, - "23.55996956969395" : 0.37, - "24.16472007370755" : 0.373, - "24.551038633556185" : 0.375, - "25.111551006110357" : 0.378, - "25.652730448662734" : 0.381, - "26.00147456781852" : 0.383, - "26.5099882143168" : 0.386, - "27.158784891619593" : 0.39, - "27.631111680769834" : 0.393, - "28.091860649995592" : 0.396, - "28.542688124080005" : 0.399, - "29.131840655632583" : 0.403, - "29.566883683604892" : 0.406, - "30.140838612594354" : 0.41, - "30.565663981391246" : 0.413, - "31.126478002498636" : 0.417, - "31.54812235018885" : 0.42, - "32.10289243119355" : 0.424, - "32.51452204691688" : 0.427, - "33.05615122003951" : 0.431, - "33.595071040702315" : 0.435, - "34.13140216832658" : 0.439, - "34.53439915090868" : 0.442, - "35.073170889554454" : 0.446, - "35.61210167925556" : 0.45, - "36.01644785354842" : 0.453, - "36.55475889258564" : 0.457, - "37.089691467826796" : 0.461, - "37.62349971664232" : 0.465, - "38.02367217186245" : 0.468, - "38.554820428890494" : 0.472, - "39.084816936897155" : 0.476, - "39.61214796859718" : 0.48, - "40.00547574391881" : 0.483, - "40.530777503533535" : 0.487, - "41.04956913891788" : 0.491, - "41.561505125365414" : 0.495, - "42.063470255999256" : 0.499, - "42.55621042542373" : 0.503, - "43.04094868140916" : 0.507, - "43.51606709080647" : 0.511, - "44.102268951056644" : 0.516, - "44.559738177831036" : 0.52, - "45.009282274434476" : 0.524, - "45.55235387609341" : 0.529, - "46.08263557909584" : 0.534, - "46.59290975624109" : 0.539, - "47.089862036372345" : 0.544, - "47.578093931055975" : 0.549, - "48.0520386533553" : 0.554, - "48.51227207778101" : 0.559, - "49.052897583899295" : 0.565, - "49.5122534852611" : 0.57, - "50.08930168305084" : 0.576, - "50.29520150095932" : 0.578, - "50.51058405247719" : 0.58, - "50.85094234185348" : 0.583, - "51.091904690684366" : 0.585, - "51.34638637921863" : 0.587, - "51.612857226613585" : 0.589, - "51.75230661050738" : 0.59, - "52.04206472621088" : 0.592, - "52.34737145370306" : 0.594, - "52.50640057096038" : 0.595, - "52.83516458685474" : 0.597, - "53.004521053670466" : 0.598, - "53.35634747258823" : 0.6, - "53.53746274846037" : 0.601, - "53.91297132106545" : 0.603, - "54.107238473857954" : 0.604, - "54.30699014579991" : 0.605, - "54.50848041031223" : 0.606, - "54.924640238853" : 0.608, - "55.139095906634616" : 0.609, - "55.359343226638046" : 0.61, - "55.58271672255666" : 0.611, - "55.809704516594756" : 0.612, - "56.03910001453946" : 0.613, - "56.27393615548041" : 0.614, - "56.510110519093836" : 0.615, - "56.751988782622675" : 0.616, - "57.237686829459264" : 0.618, - "57.48540610588226" : 0.619, - "57.73687679340348" : 0.62, - "57.99168755308672" : 0.621, - "58.246646394786985" : 0.622, - "58.50574056392594" : 0.623, - "58.76296451203493" : 0.624, - "59.02602947303808" : 0.625, - "59.29117855131801" : 0.626, - "59.55631666055965" : 0.627, - "59.82498680013354" : 0.628, - "60.095933015154436" : 0.629, - "60.36860685370742" : 0.63, - "60.64225145214985" : 0.631, - "60.91770594191159" : 0.632, - "61.19635242181832" : 0.633, - "61.47626034112941" : 0.634, - "61.7562560127469" : 0.635, - "62.04049670218606" : 0.636, - "62.32497322594864" : 0.637, - "62.61030533469854" : 0.638, - "62.89948757589135" : 0.639, - "63.184298655322046" : 0.64, - "63.474133554293644" : 0.641, - "63.763951999707785" : 0.642, - "64.05728053737758" : 0.643, - "64.35025258130266" : 0.644, - "64.64414053992569" : 0.645, - "64.93748004663377" : 0.646, - "65.2339292756996" : 0.647, - "65.53061433908884" : 0.648, - "65.82857729543991" : 0.649, - "66.12479617470146" : 0.65, - "66.42344469594622" : 0.651, - "66.7207330564419" : 0.652, - "67.01732488300561" : 0.653, - "67.31734453403772" : 0.654, - "67.61636051806549" : 0.655, - "67.91524487363367" : 0.656, - "68.21250032701445" : 0.657, - "68.51198797968907" : 0.658, - "68.81171146668711" : 0.659, - "69.11115524320853" : 0.66, - "69.40901947821492" : 0.661, - "69.70736635090644" : 0.662, - "70.00322873642328" : 0.663, - "70.3041807557108" : 0.664, - "70.60201756812143" : 0.665, - "70.89967339140013" : 0.666, - "71.19805317120655" : 0.667, - "71.49678396023856" : 0.668, - "71.79333191064907" : 0.669, - "72.08775735214874" : 0.67, - "72.38445338457629" : 0.671, - "72.68135782873152" : 0.672, - "72.97616718657166" : 0.673, - "73.27087233854796" : 0.674, - "73.56581880936683" : 0.675, - "73.8594325420324" : 0.676, - "74.15232780268938" : 0.677, - "74.4478556325381" : 0.678, - "74.74055893502485" : 0.679, - "75.03059127668583" : 0.68, - "75.31885760318067" : 0.681, - "75.60661935391377" : 0.682, - "75.89174853545514" : 0.683, - "76.1768996550731" : 0.684, - "76.46020797625685" : 0.685, - "76.7426058672618" : 0.686, - "77.02115362582384" : 0.687, - "77.29710172230904" : 0.688, - "77.57353794099853" : 0.689, - "77.84660118041111" : 0.69, - "78.11957118299817" : 0.691, - "78.39086840724464" : 0.692, - "78.65897912586527" : 0.693, - "78.92548288037513" : 0.694, - "79.18737415428029" : 0.695, - "79.44913928424502" : 0.696, - "79.70806891780948" : 0.697, - "79.964541486795" : 0.698, - "80.22035042896344" : 0.699, - "80.47722885236601" : 0.7, - "80.72758069798074" : 0.701, - "80.9796985587616" : 0.702, - "81.22985844620611" : 0.703, - "81.47811520550576" : 0.704, - "81.72312512946893" : 0.705, - "81.96578767923614" : 0.706, - "82.20740817036496" : 0.707, - "82.44574343452327" : 0.708, - "82.68333280407724" : 0.709, - "82.91585996245627" : 0.71, - "83.14968146735458" : 0.711, - "83.3829490358188" : 0.712, - "83.61045237465693" : 0.713, - "83.83660103726517" : 0.714, - "84.060276181737" : 0.715, - "84.2823169395023" : 0.716, - "84.50150026279074" : 0.717, - "84.7199212379174" : 0.718, - "84.93534766558847" : 0.719, - "85.14884354251893" : 0.72, - "85.35997010717682" : 0.721, - "85.57007106675378" : 0.722, - "85.7766180579219" : 0.723, - "85.98245754611973" : 0.724, - "86.1840520164959" : 0.725, - "86.3833758959442" : 0.726, - "86.58097763637956" : 0.727, - "86.77687369135946" : 0.728, - "86.97035655791359" : 0.729, - "87.16195274988031" : 0.73, - "87.35162936014473" : 0.731, - "87.54179409261346" : 0.732, - "87.7273792515924" : 0.733, - "87.91204301135421" : 0.734, - "88.09160616830705" : 0.735, - "88.27107608843436" : 0.736, - "88.4492626310807" : 0.737, - "88.62768500805045" : 0.738, - "88.80022249597286" : 0.739, - "88.97541997568274" : 0.74, - "89.14621887103476" : 0.741, - "89.31429196036952" : 0.742, - "89.48282026479369" : 0.743, - "89.6487708452176" : 0.744, - "89.81084387060287" : 0.745, - "89.97240135118808" : 0.746, - "90.13007030769633" : 0.747, - "90.28822738640889" : 0.748, - "90.44316505238072" : 0.749, - "90.59684676346733" : 0.75, - "90.74752295806005" : 0.751, - "90.89599986047384" : 0.752, - "91.04297948915982" : 0.753, - "91.18774337210944" : 0.754, - "91.32922202808852" : 0.755, - "91.46839170150571" : 0.756, - "91.60807691972293" : 0.757, - "91.74436722058665" : 0.758, - "91.8783540234076" : 0.759, - "92.01112326297738" : 0.76, - "92.14306434015558" : 0.761, - "92.27167631421008" : 0.762, - "92.4005899368178" : 0.763, - "92.52575763284644" : 0.764, - "92.64982294052604" : 0.765, - "92.77248421130338" : 0.766, - "92.89308878739969" : 0.767, - "93.01219060524905" : 0.768, - "93.12998162302169" : 0.769, - "93.24659895369635" : 0.77, - "93.36125831103465" : 0.771, - "93.47162328987893" : 0.772, - "93.58120946700402" : 0.773, - "93.68980843068218" : 0.774, - "93.79657008044528" : 0.775, - "93.90188930167209" : 0.776, - "94.00584287763067" : 0.777, - "94.10834854053381" : 0.778, - "94.21061836911352" : 0.779, - "94.30930132216949" : 0.78, - "94.40756196725094" : 0.781, - "94.50466537879188" : 0.782, - "94.60125324553276" : 0.783, - "94.69430359742225" : 0.784, - "94.78604863375418" : 0.785, - "94.87699293029029" : 0.786, - "94.96762460923486" : 0.787, - "95.05617217090266" : 0.788, - "95.14394093085124" : 0.789, - "95.22946103794854" : 0.79, - "95.31402683871384" : 0.791, - "95.39619590461083" : 0.792, - "95.4780962290695" : 0.793, - "95.56082471591974" : 0.794, - "95.64018022349306" : 0.795, - "95.71798909666624" : 0.796, - "95.7945529839925" : 0.797, - "95.87009126623781" : 0.798, - "95.94442295427024" : 0.799, - "96.01962119632829" : 0.8, - "96.09168229343285" : 0.801, - "96.1629755578565" : 0.802, - "96.23244247740337" : 0.803, - "96.30195327310344" : 0.804, - "96.37095400852262" : 0.805, - "96.43842456309909" : 0.806, - "96.50479272932652" : 0.807, - "96.56920292221761" : 0.808, - "96.63362956866615" : 0.809, - "96.6964602200422" : 0.81, - "96.75754679432872" : 0.811, - "96.81826042131308" : 0.812, - "96.87732320803346" : 0.813, - "96.93606789264317" : 0.814, - "96.99351274621446" : 0.815, - "97.05067240478998" : 0.816, - "97.10614283146747" : 0.817, - "97.16032439614484" : 0.818, - "97.21478567129884" : 0.819, - "97.26671309860579" : 0.82, - "97.31763137438924" : 0.821, - "97.36926263766212" : 0.822, - "97.41981345066256" : 0.823, - "97.46834047609684" : 0.824, - "97.51615451404172" : 0.825, - "97.56226835105025" : 0.826, - "97.60840961065453" : 0.827, - "97.65348687354383" : 0.828, - "97.6972313982798" : 0.829, - "97.7412885406073" : 0.83, - "97.78444622179428" : 0.831, - "97.82661668953438" : 0.832, - "97.86794254132543" : 0.833, - "97.90790823236745" : 0.834, - "97.94785198533286" : 0.835, - "97.98677013321732" : 0.836, - "98.02446523333147" : 0.837, - "98.06200676690942" : 0.838, - "98.09936731135544" : 0.839, - "98.13562546745243" : 0.84, - "98.17245949806009" : 0.841, - "98.20761526580804" : 0.842, - "98.24194835568358" : 0.843, - "98.27498161452068" : 0.844, - "98.30823425412378" : 0.845, - "98.3406697003736" : 0.846, - "98.37257314826591" : 0.847, - "98.40330290906026" : 0.848, - "98.43431238033122" : 0.849, - "98.46446078209573" : 0.85, - "98.49355615618353" : 0.851, - "98.52170819297763" : 0.852, - "98.54976699294619" : 0.853, - "98.57728831003811" : 0.854, - "98.60445861790447" : 0.855, - "98.63129437010271" : 0.856, - "98.65712097077744" : 0.857, - "98.68298596308622" : 0.858, - "98.70765533022043" : 0.859, - "98.73258246975466" : 0.86, - "98.75705987871864" : 0.861, - "98.78051168260166" : 0.862, - "98.80361796177827" : 0.863, - "98.82683393133787" : 0.864, - "98.8493204598506" : 0.865, - "98.87109400087391" : 0.866, - "98.89217649248437" : 0.867, - "98.91299572717567" : 0.868, - "98.93412209493933" : 0.869, - "98.95402541493267" : 0.87, - "98.97409875501964" : 0.871, - "98.99317939714055" : 0.872, - "99.01232036897213" : 0.873, - "99.03087998177385" : 0.874, - "99.04929151255854" : 0.875, - "99.0675330232496" : 0.876, - "99.08548385442572" : 0.877, - "99.10289171820607" : 0.878, - "99.11958110997783" : 0.879, - "99.13573301887294" : 0.88, - "99.15241692612555" : 0.881, - "99.16851398982918" : 0.882, - "99.18390903508167" : 0.883, - "99.19881595812987" : 0.884, - "99.21338284099079" : 0.885, - "99.22741224097507" : 0.886, - "99.24163359912959" : 0.887, - "99.25559170036492" : 0.888, - "99.26885875218743" : 0.889, - "99.28134700229072" : 0.89, - "99.29396139633444" : 0.891, - "99.30595603971427" : 0.892, - "99.3182249090516" : 0.893, - "99.33030730473781" : 0.894, - "99.34180285687506" : 0.895, - "99.35302966757398" : 0.896, - "99.36428390086863" : 0.897, - "99.37553264964414" : 0.898, - "99.38615067871747" : 0.899, - "99.39660965673546" : 0.9, - "99.40700282052366" : 0.901, - "99.41705045960545" : 0.902, - "99.4268732334021" : 0.903, - "99.436410812203" : 0.904, - "99.44542736168468" : 0.905, - "99.45442197308977" : 0.906, - "99.46337270834167" : 0.907, - "99.4724276494574" : 0.908, - "99.48095059221563" : 0.909, - "99.48920479353555" : 0.91, - "99.49739318062568" : 0.911, - "99.50552123800514" : 0.912, - "99.51339700750376" : 0.913, - "99.52142634353854" : 0.914, - "99.5292417833265" : 0.915, - "99.53662394610166" : 0.916, - "99.54386351137893" : 0.917, - "99.55069173771999" : 0.918, - "99.5575364176185" : 0.919, - "99.56437561299785" : 0.92, - "99.57086928367079" : 0.921, - "99.57730262463309" : 0.922, - "99.58394437732306" : 0.923, - "99.59036674924707" : 0.924, - "99.59673427597957" : 0.925, - "99.60262464954609" : 0.926, - "99.60821337455937" : 0.927, - "99.61406535649182" : 0.928, - "99.61994476102004" : 0.929, - "99.62547315632267" : 0.93, - "99.63076571730188" : 0.931, - "99.63584438203428" : 0.932, - "99.64096143840071" : 0.933, - "99.64604558765224" : 0.934, - "99.65087196450375" : 0.935, - "99.65586287692975" : 0.936, - "99.6607824906068" : 0.937, - "99.66557596034342" : 0.938, - "99.67010068864171" : 0.939, - "99.67485028222512" : 0.94, - "99.6795285770596" : 0.941, - "99.68363099738339" : 0.942, - "99.68782665453271" : 0.943, - "99.69190165226075" : 0.944, - "99.69576275374196" : 0.945, - "99.69972806108701" : 0.946, - "99.70353431737672" : 0.947, - "99.70715410001536" : 0.948, - "99.7107958207306" : 0.949, - "99.71405910962451" : 0.95, - "99.71727852236523" : 0.951, - "99.72098605731027" : 0.952, - "99.72438645918292" : 0.953, - "99.72754005769384" : 0.954, - "99.73069914072393" : 0.955, - "99.73388564634976" : 0.956, - "99.73685277120961" : 0.957, - "99.73974859732051" : 0.958, - "99.74249085689524" : 0.959, - "99.74558412569553" : 0.96, - "99.74857867315113" : 0.961, - "99.75130996368755" : 0.962, - "99.75409061489631" : 0.963, - "99.75669027697316" : 0.964, - "99.75935026876063" : 0.965, - "99.76184572497363" : 0.966, - "99.76419309916959" : 0.967, - "99.76675436961239" : 0.968, - "99.76900850698281" : 0.969, - "99.77132845858303" : 0.97, - "99.77363744114494" : 0.971, - "99.77572704294087" : 0.972, - "99.77766307820063" : 0.973, - "99.77973074191998" : 0.974, - "99.78189164246486" : 0.975, - "99.78377283253312" : 0.976, - "99.78583501173331" : 0.977, - "99.78769426372497" : 0.978, - "99.78960836090812" : 0.979, - "99.79147858193808" : 0.98, - "99.79311845316377" : 0.981, - "99.79649691695982" : 0.983, - "99.79801064424508" : 0.984, - "99.79964503095161" : 0.985, - "99.8011423046794" : 0.986, - "99.8027492687902" : 0.987, - "99.80591383633943" : 0.989, - "99.80750434689277" : 0.99, - "99.80886999216098" : 0.991, - "99.81014240060365" : 0.992, - "99.8116341898123" : 0.993, - "99.81294498988902" : 0.994, - "99.81432160419553" : 0.995, - "99.81558852811905" : 0.996, - "99.81701998761706" : 0.997, - "99.81827594250228" : 0.998, - "99.81952641286836" : 0.999, - "99.82072752256208" : 1.0, - "99.82190120966006" : 1.001, - "99.82293778377931" : 1.002, - "99.82414437799218" : 1.003, - "99.82531258057101" : 1.004, - "99.82640399988175" : 1.005, - "99.82751187274994" : 1.006, - "99.82859232302238" : 1.007, - "99.82965083521823" : 1.008, - "99.83068192481832" : 1.009, - "99.83161977759288" : 1.01, - "99.83256859940573" : 1.011, - "99.83353935929519" : 1.012, - "99.83451560370378" : 1.013, - "99.8354260338826" : 1.014, - "99.8363145259848" : 1.015, - "99.83722495616361" : 1.016, - "99.83808054115093" : 1.017, - "99.83969847430001" : 1.019, - "99.84053212121073" : 1.02, - "99.84140415975548" : 1.021, - "99.8421610233981" : 1.022, - "99.84296176319393" : 1.023, - "99.84447000596003" : 1.025, - "99.84527074575584" : 1.026, - "99.84601664036018" : 1.027, - "99.84677898852195" : 1.028, - "99.84813366475186" : 1.03, - "99.84893440454768" : 1.031, - "99.84963093847965" : 1.032, - "99.85101852182447" : 1.034, - "99.85162730345006" : 1.035, - "99.8527077537225" : 1.037, - "99.85395822408857" : 1.039, - "99.85453958311841" : 1.04, - "99.85559809531425" : 1.042, - "99.85673339077819" : 1.044, - "99.85784126364638" : 1.046, - "99.85875717834433" : 1.048, - "99.85962373236994" : 1.05, - "99.86045189476151" : 1.052, - "99.86137877849777" : 1.054, - "99.8625579501149" : 1.057, - "99.86328190664263" : 1.059, - "99.86441720210657" : 1.062, - "99.8653769929577" : 1.065, - "99.86645744323016" : 1.069, - "99.86743368763875" : 1.072, - "99.86851413791119" : 1.075, - "99.86934230030276" : 1.077, - "99.87040629701775" : 1.08, - "99.87131672719656" : 1.083, - "99.87217779670303" : 1.086, - "99.87306628880523" : 1.089, - "99.87417964619257" : 1.093, - "99.87524364290756" : 1.097, - "99.87619246472042" : 1.101, - "99.87701514259284" : 1.104, - "99.87803526315463" : 1.108, - "99.87907732179303" : 1.113, - "99.87991645322289" : 1.117, - "99.88101335705278" : 1.122, - "99.8818360349252" : 1.126, - "99.88297681490829" : 1.132, - "99.88397499739348" : 1.137, - "99.88494575728294" : 1.143, - "99.88574649707876" : 1.148, - "99.88672274148736" : 1.154, - "99.88770995493425" : 1.16, - "99.8886807148237" : 1.167, - "99.88968438182806" : 1.175, - "99.8907209559473" : 1.184, - "99.89173559198994" : 1.191, - "99.8926734447645" : 1.198, - "99.89360032850075" : 1.207, - "99.89456560387106" : 1.218, - "99.89557475539456" : 1.228, - "99.89650712364997" : 1.238, - "99.89752724421176" : 1.245, - "99.89845412794801" : 1.249, - "99.89944682591407" : 1.254, - "99.90053276070566" : 1.261, - "99.90144867540361" : 1.267, - "99.90241395077392" : 1.277, - "99.90283625874842" : 1.283, - "99.90333534999102" : 1.291, - "99.90386186382938" : 1.3, - "99.90435547055282" : 1.31, - "99.90480520112308" : 1.32, - "99.90527686976993" : 1.333, - "99.90576499197422" : 1.348, - "99.90625311417853" : 1.362, - "99.90675220542113" : 1.374, - "99.90725678118288" : 1.384, - "99.90771748079143" : 1.393, - "99.90822754107234" : 1.404, - "99.90871566327662" : 1.414, - "99.90919830096178" : 1.423, - "99.90968093864693" : 1.431, - "99.91019648344698" : 1.44, - "99.91067912113213" : 1.449, - "99.91117272785559" : 1.457, - "99.91163342746414" : 1.467, - "99.91211606514929" : 1.477, - "99.91259870283444" : 1.487, - "99.91308682503873" : 1.499, - "99.91358591628133" : 1.51, - "99.91408500752394" : 1.521, - "99.91455667617079" : 1.532, - "99.91506125193254" : 1.542, - "99.915554858656" : 1.553, - "99.91604298086028" : 1.563, - "99.91654755662204" : 1.575, - "99.91701922526889" : 1.587, - "99.91751283199234" : 1.598, - "99.91798998515834" : 1.61, - "99.91846713832435" : 1.623, - "99.9189826831244" : 1.635, - "99.9194488672521" : 1.648, - "99.91998635012874" : 1.663, - "99.92041962714154" : 1.674, - "99.9209022648267" : 1.686, - "99.9214232941459" : 1.698, - "99.9219114163502" : 1.709, - "99.92237211595875" : 1.724, - "99.9228657226822" : 1.738, - "99.9233648139248" : 1.753, - "99.92386938968654" : 1.767, - "99.92434654285255" : 1.785, - "99.9248291805377" : 1.801, - "99.925317302742" : 1.817, - "99.925794455908" : 1.833, - "99.9262935471506" : 1.85, - "99.92677618483576" : 1.865, - "99.9272807605975" : 1.881, - "99.92775242924435" : 1.9, - "99.92826248952525" : 1.915, - "99.92872867365296" : 1.931, - "99.92921131133811" : 1.948, - "99.92972137161901" : 1.964, - "99.93020400930416" : 1.981, - "99.93067019343187" : 1.997, - "99.9311638001553" : 2.017, - "99.9316409533213" : 2.037, - "99.93214004456391" : 2.058, - "99.93262816676821" : 2.08, - "99.93311080445336" : 2.101, - "99.93361538021512" : 2.123, - "99.93411447145772" : 2.146, - "99.93458614010457" : 2.172, - "99.93506329327056" : 2.2, - "99.93557335355146" : 2.227, - "99.93605050671746" : 2.252, - "99.93654411344092" : 2.279, - "99.93702126660692" : 2.305, - "99.93751487333037" : 2.327, - "99.93799202649637" : 2.359, - "99.93848563321983" : 2.403, - "99.93896827090497" : 2.445, - "99.93945639310927" : 2.481, - "99.93994451531357" : 2.519, - "99.94043263751787" : 2.555, - "99.94092075972218" : 2.586, - "99.94140888192648" : 2.618, - "99.94190797316908" : 2.653, - "99.94239061085422" : 2.683, - "99.94288421757767" : 2.714, - "99.94337782430112" : 2.742, - "99.94387691554373" : 2.774, - "99.94434858419058" : 2.817, - "99.94482573735658" : 2.858, - "99.94531385956088" : 2.896, - "99.94580746628434" : 2.935, - "99.94630655752692" : 2.968, - "99.94677822617378" : 3.004, - "99.94726634837808" : 3.043, - "99.94775995510153" : 3.084, - "99.94825356182498" : 3.119, - "99.94873071499099" : 3.151, - "99.94921883719529" : 3.196, - "99.94971244391874" : 3.241, - "99.95020605064218" : 3.281, - "99.95069417284648" : 3.318, - "99.95117681053163" : 3.36, - "99.95141812937422" : 3.376, - "99.95166493273594" : 3.396, - "99.9519062515785" : 3.43, - "99.95215305494024" : 3.48, - "99.95239985830196" : 3.511, - "99.95264666166369" : 3.547, - "99.95288249598711" : 3.577, - "99.953134783868" : 3.605, - "99.95337610271056" : 3.634, - "99.95361742155313" : 3.656, - "99.95385874039572" : 3.693, - "99.95410554375744" : 3.723, - "99.95434686260002" : 3.751, - "99.95459366596174" : 3.78, - "99.95483498480432" : 3.806, - "99.95509275720434" : 3.837, - "99.95532310700862" : 3.858, - "99.95556991037034" : 3.876, - "99.95581671373206" : 3.903, - "99.95606900161295" : 3.933, - "99.95629935141721" : 3.965, - "99.95654615477895" : 3.989, - "99.95679295814067" : 4.02, - "99.95703427698325" : 4.049, - "99.95727559582582" : 4.089, - "99.95752239918754" : 4.127, - "99.95776920254927" : 4.163, - "99.95801052139184" : 4.195, - "99.95825732475357" : 4.222, - "99.9585041281153" : 4.243, - "99.95876190051531" : 4.288, - "99.9589922503196" : 4.318, - "99.95923356916217" : 4.362, - "99.95947488800475" : 4.393, - "99.95972717588562" : 4.426, - "99.95996301020905" : 4.451, - "99.96021529808992" : 4.487, - "99.9604566169325" : 4.544, - "99.96069793577507" : 4.599, - "99.96093925461766" : 4.637, - "99.96118605797938" : 4.672, - "99.96142737682194" : 4.704, - "99.96167418018368" : 4.734, - "99.9619209835454" : 4.767, - "99.96216230238798" : 4.805, - "99.96240362123055" : 4.836, - "99.96265042459228" : 4.864, - "99.96290271247315" : 4.898, - "99.96313854679657" : 4.935, - "99.96337986563915" : 4.966, - "99.96362666900087" : 5.004, - "99.96386798784346" : 5.04, - "99.96412027572433" : 5.075, - "99.96436707908606" : 5.107, - "99.96460291340948" : 5.14, - "99.96484423225205" : 5.173, - "99.96509103561378" : 5.202, - "99.9653378389755" : 5.238, - "99.96559012685638" : 5.266, - "99.96582047666065" : 5.304, - "99.96606728002239" : 5.348, - "99.9663140833841" : 5.379, - "99.96656088674582" : 5.416, - "99.96681317462671" : 5.448, - "99.96704352443098" : 5.471, - "99.96729032779271" : 5.503, - "99.96753164663528" : 5.538, - "99.96777844999701" : 5.602, - "99.96802525335873" : 5.648, - "99.96826657220132" : 5.695, - "99.96850789104388" : 5.732, - "99.9687546944056" : 5.766, - "99.96900149776734" : 5.809, - "99.9692537856482" : 5.85, - "99.96948413545249" : 5.877, - "99.96974190785251" : 5.905, - "99.96997225765679" : 5.943, - "99.97022454553766" : 5.98, - "99.97046586438023" : 6.017, - "99.97070718322281" : 6.061, - "99.97095398658453" : 6.099, - "99.97120078994627" : 6.129, - "99.97144210878884" : 6.172, - "99.97168342763142" : 6.205, - "99.97193571551229" : 6.247, - "99.9721715498357" : 6.285, - "99.97241835319744" : 6.314, - "99.97266515655916" : 6.364, - "99.97290647540174" : 6.432, - "99.97315327876346" : 6.487, - "99.9733891130869" : 6.532, - "99.97364140096776" : 6.576, - "99.97388271981035" : 6.64, - "99.97412403865292" : 6.749, - "99.97436535749549" : 6.815, - "99.97461764537637" : 6.868, - "99.97486444873809" : 6.94, - "99.97510028306152" : 7.018, - "99.97535257094239" : 7.08, - "99.97558840526582" : 7.151, - "99.97570906468711" : 7.187, - "99.97583520862754" : 7.219, - "99.97595586804883" : 7.258, - "99.97607652747011" : 7.301, - "99.97619718689141" : 7.345, - "99.97632333083185" : 7.387, - "99.97644399025313" : 7.415, - "99.97657013419357" : 7.473, - "99.97668530909571" : 7.513, - "99.9768169375553" : 7.55, - "99.97693759697658" : 7.608, - "99.97705277187872" : 7.643, - "99.9771734313" : 7.706, - "99.97729957524045" : 7.799, - "99.97742023466174" : 7.834, - "99.97754637860217" : 7.869, - "99.9776615535043" : 7.934, - "99.97779318196389" : 8.0, - "99.97790835686604" : 8.059, - "99.97802901628732" : 8.096, - "99.97814967570861" : 8.144, - "99.97827581964904" : 8.19, - "99.97839647907034" : 8.225, - "99.97851713849163" : 8.252, - "99.97863779791291" : 8.289, - "99.97876394185334" : 8.328, - "99.97888460127463" : 8.398, - "99.97900526069593" : 8.463, - "99.97913140463636" : 8.537, - "99.97925206405765" : 8.592, - "99.97937272347893" : 8.632, - "99.97949886741937" : 8.686, - "99.97962501135981" : 8.729, - "99.97974018626195" : 8.788, - "99.97986084568323" : 8.844, - "99.97998150510452" : 8.887, - "99.98010764904497" : 8.94, - "99.98022830846625" : 9.0, - "99.98034896788754" : 9.047, - "99.98046962730882" : 9.117, - "99.98059577124926" : 9.173, - "99.98071643067055" : 9.228, - "99.98083709009184" : 9.293, - "99.98095774951312" : 9.342, - "99.98108389345356" : 9.414, - "99.98120455287486" : 9.483, - "99.98133069681529" : 9.528, - "99.98144587171743" : 9.594, - "99.98157201565786" : 9.627, - "99.98169267507915" : 9.686, - "99.98181333450044" : 9.75, - "99.98193399392173" : 9.797, - "99.98206013786216" : 9.917, - "99.98218079728345" : 9.992, - "99.98230145670475" : 10.082, - "99.98242211612603" : 10.166, - "99.98254826006647" : 10.249, - "99.98266891948775" : 10.297, - "99.98278957890903" : 10.381, - "99.98291023833033" : 10.423, - "99.98304186678992" : 10.507, - "99.98315704169205" : 10.572, - "99.98327770111334" : 10.619, - "99.98340384505377" : 10.697, - "99.98352450447507" : 10.766, - "99.98364516389636" : 10.893, - "99.98376582331764" : 11.004, - "99.98389196725807" : 11.098, - "99.98401262667937" : 11.167, - "99.98413328610066" : 11.241, - "99.98425943004109" : 11.299, - "99.98438008946238" : 11.351, - "99.98450074888366" : 11.42, - "99.98462140830496" : 11.493, - "99.98474206772624" : 11.566, - "99.98486821166668" : 11.65, - "99.98498887108796" : 11.726, - "99.98510953050926" : 11.784, - "99.98523018993055" : 11.832, - "99.98535633387098" : 11.908, - "99.98547699329227" : 12.038, - "99.98559765271355" : 12.131, - "99.98571831213485" : 12.208, - "99.98584445607528" : 12.287, - "99.98596511549657" : 12.336, - "99.98608577491785" : 12.388, - "99.98620643433914" : 12.448, - "99.98633257827959" : 12.553, - "99.98645323770087" : 12.634, - "99.98657389712216" : 12.724, - "99.98669455654344" : 12.818, - "99.98682070048389" : 12.921, - "99.98694135990517" : 13.037, - "99.98706201932646" : 13.224, - "99.98718267874774" : 13.385, - "99.98730882268818" : 13.576, - "99.98742948210948" : 13.792, - "99.98755014153076" : 14.589, - "99.9876762854712" : 15.123, - "99.98779694489248" : 15.827, - "99.98785727460313" : 15.915, - "99.98791760431376" : 16.334, - "99.98797793402441" : 16.677, - "99.98803826373506" : 17.081, - "99.9880985934457" : 17.511, - "99.9881644076755" : 17.893, - "99.98822473738615" : 18.249, - "99.98828506709678" : 18.687, - "99.98834539680743" : 19.016, - "99.98840572651807" : 19.299, - "99.98846605622872" : 19.81, - "99.98852638593937" : 20.089, - "99.98858671565" : 20.431, - "99.9886525298798" : 20.787, - "99.98871285959044" : 21.135, - "99.98877318930109" : 21.38, - "99.98883351901173" : 21.78, - "99.98889384872237" : 22.218, - "99.98895417843302" : 22.749, - "99.98901450814365" : 23.168, - "99.9890748378543" : 23.526, - "99.9891406520841" : 23.808, - "99.98920098179474" : 24.151, - "99.98926131150539" : 24.614, - "99.98932164121602" : 24.943, - "99.98938197092667" : 25.447, - "99.98944230063732" : 25.73, - "99.98950263034796" : 26.137, - "99.98956844457776" : 26.546, - "99.9896287742884" : 27.101, - "99.98968910399904" : 27.412, - "99.98974943370969" : 27.88, - "99.98980976342033" : 28.161, - "99.98987009313097" : 28.462, - "99.98993042284162" : 28.975, - "99.98999075255226" : 29.336, - "99.99005656678206" : 29.699, - "99.9901168964927" : 30.414, - "99.99017722620334" : 30.751, - "99.99023755591399" : 31.267, - "99.99029788562463" : 31.677, - "99.99035821533528" : 31.821, - "99.99041854504591" : 32.399, - "99.99047887475656" : 32.666, - "99.99054468898636" : 33.165, - "99.990605018697" : 33.389, - "99.99066534840765" : 34.003, - "99.99072567811828" : 34.251, - "99.99078600782893" : 34.677, - "99.99084633753958" : 35.049, - "99.99090666725021" : 35.455, - "99.99096699696086" : 35.936, - "99.99103281119066" : 36.141, - "99.9910931409013" : 36.68, - "99.99115347061195" : 37.043, - "99.99121380032258" : 37.622, - "99.99127413003323" : 37.874, - "99.99133445974388" : 38.37, - "99.99139478945452" : 38.532, - "99.99145511916517" : 38.733, - "99.99152093339495" : 39.204, - "99.9915812631056" : 39.513, - "99.99164159281625" : 40.207, - "99.99170192252689" : 40.395, - "99.99176225223754" : 41.062, - "99.99182258194817" : 41.358, - "99.99188291165882" : 41.744, - "99.99194872588862" : 41.958, - "99.99200905559925" : 42.483, - "99.9920693853099" : 43.087, - "99.99212971502054" : 43.389, - "99.99219004473119" : 43.76, - "99.99225037444184" : 44.153, - "99.99231070415247" : 44.351, - "99.99237103386312" : 44.763, - "99.99243684809292" : 44.872, - "99.99249717780356" : 45.138, - "99.9925575075142" : 45.641, - "99.99261783722484" : 45.882, - "99.99267816693549" : 46.39, - "99.99273849664614" : 46.671, - "99.99279882635678" : 47.132, - "99.99285915606742" : 47.325, - "99.99292497029721" : 47.675, - "99.99298530000786" : 48.336, - "99.99304562971851" : 48.909, - "99.99310595942914" : 49.308, - "99.9931662891398" : 49.562, - "99.99322661885043" : 50.002, - "99.99328694856108" : 50.469, - "99.99334727827173" : 51.003, - "99.99341309250151" : 51.53, - "99.99347342221216" : 52.006, - "99.9935337519228" : 52.197, - "99.99359408163345" : 52.676, - "99.9936544113441" : 52.95, - "99.99371474105473" : 53.296, - "99.99377507076538" : 53.699, - "99.99384088499518" : 54.178, - "99.99390121470582" : 54.403, - "99.99392863730156" : 54.772, - "99.99396154441646" : 54.907, - "99.99398896701221" : 55.137, - "99.9940218741271" : 55.301, - "99.99404929672285" : 55.317, - "99.99408220383775" : 55.467, - "99.99411511095265" : 55.938, - "99.9941425335484" : 55.966, - "99.99417544066328" : 56.208, - "99.99420286325903" : 56.38, - "99.99423577037393" : 56.601, - "99.99426319296968" : 56.76, - "99.99429610008458" : 56.986, - "99.99432900719947" : 57.273, - "99.99435642979522" : 57.44, - "99.99438933691012" : 57.595, - "99.99441675950587" : 57.708, - "99.99444966662077" : 58.079, - "99.9944770892165" : 58.428, - "99.9945099963314" : 58.513, - "99.99453741892715" : 58.658, - "99.99457032604205" : 58.992, - "99.99460323315695" : 59.173, - "99.99463065575269" : 59.237, - "99.99466356286759" : 59.455, - "99.99469098546334" : 59.721, - "99.99472389257824" : 60.023, - "99.99475131517399" : 60.079, - "99.99478422228887" : 60.21, - "99.99481712940377" : 60.476, - "99.99484455199952" : 60.793, - "99.99487745911442" : 60.905, - "99.99490488171017" : 61.125, - "99.99493778882506" : 61.535, - "99.9949652114208" : 61.614, - "99.9949981185357" : 61.848, - "99.9950310256506" : 62.223, - "99.99505844824635" : 62.435, - "99.99509135536124" : 62.529, - "99.99511877795699" : 62.576, - "99.99515168507189" : 62.687, - "99.99517910766764" : 63.099, - "99.99521201478254" : 63.275, - "99.99523943737829" : 63.361, - "99.99527234449317" : 63.443, - "99.99530525160807" : 63.95, - "99.99533267420382" : 64.028, - "99.99536558131872" : 64.076, - "99.99539300391447" : 64.169, - "99.99542591102936" : 64.229, - "99.99545333362511" : 64.529, - "99.99548624074001" : 64.851, - "99.9955191478549" : 64.9, - "99.99554657045066" : 64.937, - "99.99557947756554" : 65.032, - "99.99560690016129" : 65.171, - "99.99563980727619" : 65.583, - "99.99566722987194" : 65.715, - "99.99570013698684" : 65.851, - "99.99572755958258" : 65.993, - "99.99576046669748" : 66.23, - "99.99579337381238" : 66.618, - "99.99582079640813" : 66.671, - "99.99585370352303" : 66.744, - "99.99588112611876" : 66.804, - "99.99591403323366" : 67.269, - "99.99594145582941" : 67.374, - "99.99597436294431" : 67.485, - "99.99600727005921" : 67.686, - "99.99603469265494" : 67.869, - "99.99606759976984" : 68.171, - "99.9960950223656" : 68.32, - "99.9961279294805" : 68.51, - "99.99615535207624" : 68.883, - "99.99618825919113" : 68.984, - "99.99622116630603" : 69.139, - "99.99624858890178" : 69.253, - "99.99628149601668" : 69.518, - "99.99630891861243" : 69.764, - "99.99634182572731" : 69.876, - "99.99636924832306" : 69.955, - "99.99640215543796" : 70.128, - "99.99642957803371" : 70.302, - "99.99646248514861" : 70.463, - "99.9964953922635" : 70.581, - "99.99652281485925" : 70.793, - "99.99655572197415" : 71.064, - "99.9965831445699" : 71.172, - "99.9966160516848" : 71.218, - "99.99664347428055" : 71.303, - "99.99667638139543" : 71.539, - "99.99670928851033" : 71.904, - "99.99673671110608" : 71.943, - "99.99676961822098" : 71.988, - "99.99679704081673" : 72.089, - "99.99682994793162" : 72.445, - "99.99685737052737" : 72.639, - "99.99689027764227" : 72.885, - "99.99692318475716" : 73.054, - "99.99695060735291" : 73.243, - "99.99696706091035" : 73.462, - "99.9969835144678" : 73.493, - "99.9969944835061" : 73.572, - "99.99701093706355" : 73.651, - "99.997027390621" : 73.685, - "99.99704384417845" : 73.801, - "99.9970602977359" : 73.894, - "99.9970712667742" : 73.934, - "99.99708772033165" : 73.987, - "99.9971041738891" : 74.05, - "99.99712062744653" : 74.228, - "99.99713159648483" : 74.307, - "99.99714805004228" : 74.495, - "99.99716450359973" : 74.533, - "99.99718095715718" : 74.552, - "99.99719741071463" : 74.617, - "99.99720837975293" : 74.631, - "99.99722483331038" : 74.699, - "99.99724128686783" : 74.757, - "99.99725774042528" : 75.02, - "99.99726870946358" : 75.151, - "99.99728516302102" : 75.353, - "99.99730161657847" : 75.381, - "99.99731807013592" : 75.435, - "99.99733452369337" : 75.464, - "99.99734549273167" : 75.591, - "99.99736194628912" : 75.654, - "99.99737839984657" : 75.8, - "99.99739485340402" : 75.954, - "99.99741130696147" : 76.079, - "99.99742227599977" : 76.085, - "99.9974387295572" : 76.147, - "99.99745518311465" : 76.213, - "99.9974716366721" : 76.255, - "99.9974826057104" : 76.411, - "99.99749905926785" : 76.462, - "99.9975155128253" : 76.541, - "99.99753196638275" : 76.629, - "99.9975484199402" : 76.813, - "99.9975593889785" : 76.834, - "99.99757584253595" : 76.957, - "99.99759229609339" : 77.133, - "99.99760874965084" : 77.271, - "99.99761971868914" : 77.36, - "99.99763617224659" : 77.456, - "99.99765262580404" : 77.73, - "99.99766907936149" : 77.783, - "99.99768553291894" : 77.867, - "99.99769650195724" : 77.898, - "99.99771295551469" : 78.22, - "99.99772940907214" : 78.437, - "99.99774586262957" : 78.556, - "99.99776231618702" : 78.576, - "99.99777328522532" : 78.622, - "99.99778973878277" : 78.696, - "99.99780619234022" : 78.902, - "99.99782264589767" : 78.943, - "99.99783361493597" : 79.136, - "99.99785006849342" : 79.288, - "99.99786652205087" : 79.347, - "99.99788297560832" : 79.374, - "99.99789942916576" : 79.447, - "99.99791039820406" : 79.467, - "99.9979268517615" : 79.493, - "99.99794330531896" : 79.522, - "99.9979597588764" : 79.849, - "99.9979707279147" : 79.946, - "99.99798718147215" : 80.112, - "99.9980036350296" : 80.241, - "99.99802008858705" : 80.362, - "99.9980365421445" : 80.505, - "99.9980475111828" : 80.868, - "99.99806396474024" : 80.908, - "99.99808041829769" : 81.001, - "99.99809687185514" : 81.023, - "99.99811332541259" : 81.088, - "99.99812429445089" : 81.107, - "99.99814074800834" : 81.169, - "99.99815720156579" : 81.264, - "99.99817365512324" : 81.347, - "99.99818462416154" : 81.581, - "99.99820107771899" : 81.677, - "99.99821753127642" : 81.719, - "99.99823398483387" : 81.784, - "99.99825043839132" : 81.865, - "99.99826140742962" : 81.871, - "99.99827786098707" : 81.979, - "99.99829431454452" : 82.175, - "99.99831076810197" : 82.382, - "99.99832173714027" : 82.437, - "99.99833819069772" : 82.483, - "99.99835464425517" : 82.499, - "99.99837109781261" : 82.552, - "99.99838755137006" : 82.591, - "99.99839852040836" : 82.665, - "99.99841497396581" : 82.937, - "99.99843142752326" : 83.043, - "99.99844788108071" : 83.343, - "99.99846433463816" : 83.371, - "99.99847530367646" : 83.41, - "99.99848627271476" : 83.433, - "99.99849175723391" : 83.443, - "99.99849724175306" : 83.453, - "99.99850821079136" : 83.488, - "99.9985136953105" : 83.492, - "99.99852466434879" : 83.513, - "99.99853014886794" : 83.594, - "99.99853563338709" : 83.633, - "99.99854660242539" : 83.83, - "99.99855208694454" : 83.889, - "99.99856305598284" : 83.939, - "99.99856854050199" : 83.974, - "99.99857402502114" : 84.038, - "99.99858499405944" : 84.161, - "99.99859047857859" : 84.166, - "99.99860144761689" : 84.195, - "99.99860693213604" : 84.208, - "99.99861241665519" : 84.226, - "99.99862338569349" : 84.25, - "99.99862887021264" : 84.262, - "99.99863435473179" : 84.269, - "99.99864532377009" : 84.316, - "99.99865080828924" : 84.324, - "99.99866177732754" : 84.369, - "99.99866726184669" : 84.384, - "99.99867274636584" : 84.424, - "99.99868371540413" : 84.588, - "99.99868919992328" : 84.594, - "99.99870016896158" : 84.648, - "99.99870565348073" : 84.673, - "99.99871113799988" : 84.767, - "99.99872210703818" : 84.796, - "99.99872759155733" : 84.847, - "99.99873856059563" : 84.924, - "99.99874404511478" : 84.948, - "99.99874952963393" : 84.952, - "99.99876049867223" : 85.174, - "99.99876598319138" : 85.206, - "99.99877695222968" : 85.353, - "99.99878243674883" : 85.433, - "99.99878792126798" : 85.454, - "99.99879889030628" : 85.604, - "99.99880437482543" : 85.622, - "99.99880985934458" : 85.624, - "99.99882082838288" : 85.654, - "99.99882631290203" : 85.657, - "99.99883728194031" : 85.662, - "99.99884276645946" : 85.663, - "99.99884825097861" : 85.673, - "99.99885922001691" : 85.694, - "99.99886470453606" : 85.696, - "99.99887567357436" : 85.76, - "99.99888115809351" : 85.893, - "99.99888664261266" : 85.954, - "99.99889761165096" : 86.021, - "99.99890309617011" : 86.098, - "99.99891406520841" : 86.2, - "99.99891954972756" : 86.206, - "99.99892503424671" : 86.207, - "99.99893600328501" : 86.246, - "99.99894148780416" : 86.273, - "99.99895245684246" : 86.323, - "99.99895794136161" : 86.324, - "99.99896342588076" : 86.334, - "99.99897439491906" : 86.381, - "99.99897987943821" : 86.385, - "99.99898536395736" : 86.39, - "99.99899633299565" : 86.42, - "99.9990018175148" : 86.457, - "99.9990127865531" : 86.512, - "99.99901827107225" : 86.52, - "99.9990237555914" : 86.665, - "99.9990347246297" : 86.722, - "99.99904020914884" : 86.723, - "99.99905117818714" : 86.779, - "99.9990566627063" : 86.824, - "99.99906214722544" : 86.826, - "99.99907311626374" : 86.896, - "99.9990786007829" : 86.907, - "99.9990895698212" : 86.949, - "99.99909505434034" : 86.965, - "99.9991005388595" : 87.07, - "99.9991115078978" : 87.107, - "99.99911699241694" : 87.351, - "99.99912796145524" : 87.358, - "99.9991334459744" : 87.393, - "99.99913893049354" : 87.443, - "99.99914989953183" : 87.451, - "99.99915538405098" : 87.454, - "99.99916086857013" : 87.467, - "99.99917183760843" : 87.492, - "99.99917732212758" : 87.497, - "99.99918829116588" : 87.522, - "99.99919377568503" : 87.534, - "99.99919926020418" : 87.543, - "99.99921022924248" : 87.617, - "99.99921571376163" : 87.634, - "99.99922668279993" : 87.71, - "99.99923216731908" : 87.789, - "99.99923765183823" : 87.799, - "99.99924313635738" : 87.805, - "99.99924862087653" : 87.807, - "99.99925410539568" : 87.818, - "99.99925958991483" : 87.822, - "99.99926507443398" : 87.824, - "99.99927055895313" : 87.974, - "99.99927604347228" : 87.999, - "99.99928152799143" : 88.035, - "99.99928701251058" : 88.053, - "99.99929249702973" : 88.112, - "99.99929798154888" : 88.118, - "99.99930346606801" : 88.169, - "99.99930895058716" : 88.173, - "99.99931443510631" : 88.196, - "99.99931991962546" : 88.257, - "99.99932540414461" : 88.263, - "99.99933088866376" : 88.276, - "99.99933637318291" : 88.292, - "99.99934185770206" : 88.394, - "99.99934734222121" : 88.407, - "99.99935282674036" : 88.445, - "99.99935831125951" : 88.483, - "99.99936379577866" : 88.528, - "99.99936928029781" : 88.555, - "99.99937476481696" : 88.602, - "99.99938024933611" : 88.633, - "99.99938573385526" : 88.673, - "99.99939121837441" : 88.697, - "99.99939670289356" : 88.738, - "99.99940218741271" : 88.755, - "99.99940767193186" : 88.82, - "99.99941315645101" : 88.832, - "99.99941864097016" : 88.834, - "99.99942412548931" : 88.841, - "99.99942961000846" : 88.849, - "99.99943509452761" : 88.943, - "99.99944057904676" : 89.066, - "99.99944606356591" : 89.227, - "99.99945154808506" : 89.295, - "99.9994570326042" : 89.302, - "99.99946251712335" : 89.327, - "99.9994680016425" : 89.342, - "99.99947348616165" : 89.354, - "99.9994789706808" : 89.371, - "99.99948445519995" : 89.514, - "99.9994899397191" : 89.521, - "99.99949542423825" : 89.544, - "99.9995009087574" : 89.558, - "99.99950639327655" : 89.633, - "99.9995118777957" : 89.705, - "99.99951736231485" : 89.785, - "99.999522846834" : 89.888, - "99.99952833135315" : 90.149, - "99.9995338158723" : 90.152, - "99.99953930039145" : 90.18, - "99.9995447849106" : 90.202, - "99.99955026942975" : 90.223, - "99.9995557539489" : 90.226, - "99.99956123846805" : 90.301, - "99.9995667229872" : 90.343, - "99.99957220750635" : 90.536, - "99.9995776920255" : 90.541, - "99.99958317654465" : 90.626, - "99.9995886610638" : 90.769, - "99.99959414558295" : 90.791, - "99.9995996301021" : 90.857, - "99.99960511462125" : 90.893, - "99.99961059914038" : 90.945, - "99.99961608365953" : 90.954, - "99.99962156817868" : 91.059, - "99.99962705269783" : 91.062, - "99.99963253721698" : 91.086, - "99.99963802173613" : 91.091, - "99.99964350625528" : 91.098, - "99.99964899077443" : 91.127, - "99.99965447529358" : 91.136, - "99.99965995981273" : 91.141, - "99.99966544433188" : 91.224, - "99.99967092885103" : 91.288, - "99.99967641337018" : 91.36, - "99.99968189788933" : 91.42, - "99.99968738240848" : 91.623, - "99.99969286692763" : 91.633, - "99.99969835144678" : 91.635, - "99.99970383596593" : 91.69, - "99.99970932048508" : 91.704, - "99.99971480500423" : 91.711, - "99.99972028952338" : 91.717, - "99.99972577404253" : 91.75, - "99.99973125856168" : 91.771, - "99.99973674308083" : 91.785, - "99.99974222759998" : 91.805, - "99.99974771211913" : 91.922, - "99.99975319663828" : 91.936, - "99.99975868115743" : 92.215, - "99.99976416567658" : 92.237, - "99.99976965019572" : 92.262, - "99.99977513471487" : 92.265, - "99.99978061923402" : 92.266, - "99.99978610375317" : 92.283, - "99.99979158827232" : 92.312, - "99.99979707279147" : 92.36, - "99.99980255731062" : 92.37, - "99.99980804182977" : 92.392, - "99.99981352634892" : 92.406, - "99.99981901086807" : 92.421, - "99.99982449538722" : 92.458, - "99.99982997990637" : 92.493, - "99.99983546442552" : 92.547, - "99.99984094894467" : 92.565, - "99.99984643346382" : 92.651, - "99.99985191798297" : 92.668, - "99.99985740250212" : 92.7, - "99.99986288702127" : 92.702, - "99.99986837154042" : 92.758, - "99.99987385605957" : 92.898, - "99.99987934057872" : 92.964, - "99.99988482509787" : 92.981, - "99.99989030961702" : 92.983, - "99.99989579413617" : 92.996, - "99.99990127865532" : 93.002, - "99.99990676317447" : 93.041, - "99.99991224769362" : 93.109, - "99.99991773221277" : 93.113, - "99.9999232167319" : 93.127, - "99.99992870125105" : 93.188, - "99.9999341857702" : 93.189, - "99.99993967028935" : 93.218, - "99.9999451548085" : 93.255, - "99.99995063932765" : 93.308, - "99.9999561238468" : 94.0, - "99.99996160836595" : 94.005, - "99.9999670928851" : 95.046, - "99.99997257740425" : 95.068, - "99.9999780619234" : 95.86, - "99.99998354644255" : 96.903, - "99.9999890309617" : 96.924, - "99.99999451548085" : 97.993, - "100.0" : 99.032 - }, - "endToEndLatencyAvg" : [ 0.4536240836073305, 0.46884385732896455, 0.4487373754327765, 0.4434615974537639, 0.44559182766678734, 0.4513952539248922, 0.4457205209560735, 0.44881001069518717, 0.4509447161428336, 0.444306987950221, 0.443160534016214, 0.44593949058212135, 0.42921824435521033, 0.44004300257719237, 0.44653185305628057, 0.44425751027756843, 0.4381738244606969, 0.43999799552366536, 0.44026557924040305, 0.44687558089019364, 0.4444581593056666, 0.45160440866196416, 0.454812896155441, 0.4436620554140253, 0.4373898652174341, 0.4386945896308389, 0.4427693560968866, 0.43457077872063093, 0.43963154239369073, 0.4394301526127152, 0.4347670649025803, 0.43594783819275085, 0.45060042778637005, 0.4426980914736693, 0.442978660232588, 0.6110592161560842, 0.44520724556612157, 0.5869812876468845, 0.4381915184138401, 0.4440373145871798, 0.4511208441118198, 0.4461714807622684, 0.4383396556150155, 0.4648636595520595, 0.44546517253295154, 0.4448489139020537, 0.4384509547140136, 0.42927183660842694, 0.4457598717771503, 0.4315992706111594, 0.4547386977341166, 0.45221497332539073, 0.4463922456636935, 0.4465314751368305, 0.4414876942665127, 0.4554208052608886, 0.44777779386885913, 0.4551188291514178, 0.4380348949727805, 0.4431540304716891 ], - "endToEndLatency50pct" : [ 0.433, 0.44, 0.435, 0.428, 0.439, 0.445, 0.432, 0.432, 0.439, 0.433, 0.432, 0.437, 0.419, 0.431, 0.443, 0.434, 0.427, 0.432, 0.433, 0.438, 0.432, 0.443, 0.448, 0.435, 0.428, 0.425, 0.429, 0.422, 0.42, 0.421, 0.421, 0.419, 0.428, 0.427, 0.424, 0.431, 0.437, 0.439, 0.429, 0.431, 0.444, 0.436, 0.431, 0.446, 0.437, 0.44, 0.434, 0.418, 0.432, 0.423, 0.441, 0.444, 0.437, 0.438, 0.438, 0.457, 0.443, 0.445, 0.428, 0.427 ], - "endToEndLatency75pct" : [ 0.538, 0.544, 0.537, 0.529, 0.531, 0.539, 0.535, 0.533, 0.536, 0.531, 0.529, 0.533, 0.517, 0.525, 0.534, 0.53, 0.527, 0.528, 0.528, 0.532, 0.534, 0.541, 0.541, 0.531, 0.528, 0.523, 0.532, 0.521, 0.52, 0.526, 0.523, 0.521, 0.531, 0.531, 0.524, 0.534, 0.535, 0.539, 0.524, 0.532, 0.54, 0.534, 0.526, 0.544, 0.534, 0.532, 0.525, 0.517, 0.531, 0.519, 0.539, 0.539, 0.532, 0.534, 0.53, 0.545, 0.536, 0.541, 0.524, 0.526 ], - "endToEndLatency95pct" : [ 0.659, 0.676, 0.645, 0.651, 0.632, 0.651, 0.646, 0.65, 0.656, 0.643, 0.634, 0.642, 0.618, 0.628, 0.629, 0.636, 0.626, 0.624, 0.635, 0.638, 0.638, 0.651, 0.644, 0.634, 0.628, 0.626, 0.636, 0.637, 0.643, 0.641, 0.629, 0.632, 0.673, 0.644, 0.635, 0.642, 0.634, 0.646, 0.616, 0.633, 0.636, 0.632, 0.621, 0.655, 0.649, 0.64, 0.622, 0.613, 0.645, 0.628, 0.651, 0.644, 0.644, 0.64, 0.628, 0.65, 0.635, 0.642, 0.636, 0.644 ], - "endToEndLatency99pct" : [ 0.75, 0.779, 0.731, 0.751, 0.713, 0.74, 0.729, 0.741, 0.754, 0.725, 0.73, 0.728, 0.699, 0.712, 0.7, 0.716, 0.698, 0.698, 0.721, 0.72, 0.716, 0.73, 0.72, 0.715, 0.705, 0.712, 0.715, 0.723, 0.743, 0.732, 0.71, 0.714, 0.777, 0.726, 0.716, 0.749, 0.708, 0.752, 0.692, 0.704, 0.708, 0.706, 0.696, 0.748, 0.742, 0.724, 0.702, 0.687, 0.734, 0.732, 0.742, 0.723, 0.737, 0.735, 0.712, 0.738, 0.714, 0.717, 0.728, 0.754 ], - "endToEndLatency999pct" : [ 1.463, 4.61, 1.165, 0.878, 1.286, 1.006, 0.996, 1.634, 1.122, 0.914, 1.329, 1.116, 0.929, 1.104, 1.395, 0.964, 0.95, 1.145, 0.923, 1.384, 1.189, 0.861, 0.981, 1.222, 0.942, 1.664, 0.947, 0.891, 2.567, 1.554, 0.927, 1.348, 1.538, 0.862, 2.01, 64.941, 0.939, 56.312, 1.061, 1.112, 1.188, 1.166, 0.869, 4.306, 0.994, 0.878, 0.964, 1.133, 1.159, 1.059, 1.378, 0.918, 0.93, 1.408, 0.944, 1.22, 0.984, 1.035, 1.035, 1.328 ], - "endToEndLatency9999pct" : [ 9.172, 15.22, 5.113, 1.375, 5.469, 3.314, 3.558, 6.005, 4.148, 1.54, 5.904, 2.969, 2.288, 2.828, 5.136, 3.126, 3.524, 5.248, 2.455, 5.42, 4.126, 1.327, 3.776, 4.908, 3.694, 8.624, 2.147, 1.47, 9.606, 5.873, 2.457, 5.626, 5.565, 1.217, 10.304, 90.106, 2.98, 81.52, 8.944, 6.381, 4.408, 4.756, 1.429, 12.621, 2.923, 1.517, 3.083, 3.971, 7.829, 2.967, 9.534, 3.33, 2.006, 5.096, 1.636, 4.276, 6.264, 3.568, 3.398, 5.642 ], - "endToEndLatencyMax" : [ 11.615, 17.522, 6.756, 2.207, 8.785, 5.784, 9.687, 11.795, 5.921, 2.641, 10.785, 5.639, 10.111, 5.729, 7.014, 4.218, 8.95, 13.388, 10.602, 11.714, 7.351, 1.8, 9.068, 7.58, 10.06, 11.955, 5.401, 2.816, 12.687, 11.07, 10.836, 8.222, 11.148, 2.484, 13.409, 93.175, 10.613, 87.726, 12.201, 9.143, 6.711, 5.959, 11.06, 13.738, 10.991, 10.106, 5.804, 6.834, 11.497, 6.323, 12.807, 10.723, 5.659, 6.975, 11.046, 6.484, 9.8, 11.023, 4.516, 10.238 ], - "aggregatedEndToEndLatencyQuantiles" : { - "5.484644886520229E-6" : 0.193, - "0.5162751078130356" : 0.232, - "1.0714308632266134" : 0.239, - "1.507855026136801" : 0.243, - "2.024453727998141" : 0.247, - "2.6077950734835462" : 0.251, - "3.0831053686391625" : 0.254, - "3.585915673255791" : 0.257, - "4.111964418256606" : 0.26, - "4.656288000019306" : 0.263, - "5.026578314887833" : 0.265, - "5.5899171604720985" : 0.268, - "6.163682315985639" : 0.271, - "6.548901834235274" : 0.273, - "7.130367431169489" : 0.276, - "7.526144890825676" : 0.278, - "8.121327584621078" : 0.281, - "8.523916973226322" : 0.283, - "9.131911797476636" : 0.286, - "9.543726358781006" : 0.288, - "10.16882230578749" : 0.291, - "10.58880350332789" : 0.293, - "11.014346130783222" : 0.295, - "11.661808459636935" : 0.298, - "12.099038865345442" : 0.3, - "12.537119391011359" : 0.302, - "13.209838509567497" : 0.305, - "13.660275940162744" : 0.307, - "14.11585248301666" : 0.309, - "14.578904596850903" : 0.311, - "15.043821489946565" : 0.313, - "15.512051108553683" : 0.315, - "16.233183187523135" : 0.318, - "16.717768017181857" : 0.32, - "17.2128010953494" : 0.322, - "17.714657071755774" : 0.324, - "18.224772923361247" : 0.326, - "18.739973040776526" : 0.328, - "19.002341998212994" : 0.329, - "19.532953967759394" : 0.331, - "20.071414464138403" : 0.333, - "20.621518861611495" : 0.335, - "21.17754667556203" : 0.337, - "21.74560780039359" : 0.339, - "22.034944756737076" : 0.34, - "22.61443039686726" : 0.342, - "23.204797572452296" : 0.344, - "23.504078189975047" : 0.345, - "24.104953945162656" : 0.347, - "24.710436802054943" : 0.349, - "25.014521968498283" : 0.35, - "25.62946583781982" : 0.352, - "26.2471575142295" : 0.354, - "26.5596012794799" : 0.355, - "27.183474150676687" : 0.357, - "27.80439079827964" : 0.359, - "28.11580893493626" : 0.36, - "28.740559349314893" : 0.362, - "29.05221881034652" : 0.363, - "29.67504959901487" : 0.365, - "30.294041136262656" : 0.367, - "30.6036987019107" : 0.368, - "31.221894965649945" : 0.37, - "31.52785039599959" : 0.371, - "32.139399270136366" : 0.373, - "32.744075884230334" : 0.375, - "33.04482638658267" : 0.376, - "33.64522497766516" : 0.378, - "34.241581385466276" : 0.38, - "34.53878880722192" : 0.381, - "35.129249221770024" : 0.383, - "35.71901308641755" : 0.385, - "36.012935205886166" : 0.386, - "36.599134051357446" : 0.388, - "37.18681923559298" : 0.39, - "37.76923367609256" : 0.392, - "38.061537825319654" : 0.393, - "38.64968920437054" : 0.395, - "39.23834517075098" : 0.397, - "39.532398921696874" : 0.398, - "40.12087389479606" : 0.4, - "40.71081326807995" : 0.402, - "41.00725832419637" : 0.403, - "41.606143153290176" : 0.405, - "42.20545578468513" : 0.407, - "42.50572363828745" : 0.408, - "43.108595804213756" : 0.41, - "43.717161031532264" : 0.412, - "44.021032296825034" : 0.413, - "44.631089347552674" : 0.415, - "45.24212814971501" : 0.417, - "45.54807809541977" : 0.418, - "46.16345525168734" : 0.42, - "46.774488569204784" : 0.422, - "47.07875472892938" : 0.423, - "47.6842650090461" : 0.425, - "48.29118484289865" : 0.427, - "48.59304324351807" : 0.428, - "49.191873226163004" : 0.43, - "49.786441639731116" : 0.432, - "50.08358873039301" : 0.433, - "50.380461588810576" : 0.434, - "50.674795056645685" : 0.435, - "50.96653977209436" : 0.436, - "51.2599243963641" : 0.437, - "51.55065445250876" : 0.438, - "51.839859777374976" : 0.439, - "52.12546169055074" : 0.44, - "52.410975849408324" : 0.441, - "52.69646258504147" : 0.442, - "52.982382607620664" : 0.443, - "53.26697534613731" : 0.444, - "53.55084411152894" : 0.445, - "53.83116979632387" : 0.446, - "54.11074408476936" : 0.447, - "54.38806966881136" : 0.448, - "54.663612743265254" : 0.449, - "54.93566209892643" : 0.45, - "55.208956468976844" : 0.451, - "55.48190530639941" : 0.452, - "55.75202406706053" : 0.453, - "56.021627271102325" : 0.454, - "56.28877335423495" : 0.455, - "56.55363782509478" : 0.456, - "56.81615486794319" : 0.457, - "57.076494506771645" : 0.458, - "57.33636795078475" : 0.459, - "57.59812811263881" : 0.46, - "57.85418972845578" : 0.461, - "58.11113437209948" : 0.462, - "58.365671256637995" : 0.463, - "58.618886341758866" : 0.464, - "58.86941943553022" : 0.465, - "59.12021579225613" : 0.466, - "59.36903767682289" : 0.467, - "59.61617029076461" : 0.468, - "59.85995727132555" : 0.469, - "60.10351938144614" : 0.47, - "60.3477012564389" : 0.471, - "60.59192152394588" : 0.472, - "60.83429895077098" : 0.473, - "61.07273840256756" : 0.474, - "61.31214863650906" : 0.475, - "61.55129012285111" : 0.476, - "61.78907690190619" : 0.477, - "62.02585450630216" : 0.478, - "62.26143645811286" : 0.479, - "62.730872698595014" : 0.481, - "62.96505058131477" : 0.482, - "63.198180896861196" : 0.483, - "63.4309163179758" : 0.484, - "63.66392597133472" : 0.485, - "63.89497760646916" : 0.486, - "64.12561240859222" : 0.487, - "64.35782678844261" : 0.488, - "64.59025506944356" : 0.489, - "64.82210746273142" : 0.49, - "65.05426699613294" : 0.491, - "65.2892949988101" : 0.492, - "65.52092800630251" : 0.493, - "65.75605473258764" : 0.494, - "66.22834298841079" : 0.496, - "66.46492314559083" : 0.497, - "66.70337356667719" : 0.498, - "66.94136876223796" : 0.499, - "67.18089417372207" : 0.5, - "67.42255311206704" : 0.501, - "67.66285734312504" : 0.502, - "67.90661690046154" : 0.503, - "68.15211509022707" : 0.504, - "68.39573204679652" : 0.505, - "68.64011136900521" : 0.506, - "68.88662970271963" : 0.507, - "69.13460146732899" : 0.508, - "69.38466836628498" : 0.509, - "69.6343677940336" : 0.51, - "69.88661209700955" : 0.511, - "70.13983815142018" : 0.512, - "70.39414468087347" : 0.513, - "70.6505079521592" : 0.514, - "70.90440313324599" : 0.515, - "71.16159458590958" : 0.516, - "71.42066178712437" : 0.517, - "71.67658628681917" : 0.518, - "71.93276308017876" : 0.519, - "72.19299851075438" : 0.52, - "72.45334911887261" : 0.521, - "72.71210917997374" : 0.522, - "72.97202650114593" : 0.523, - "73.23189994515903" : 0.524, - "73.49008960319198" : 0.525, - "73.74937070555734" : 0.526, - "74.00760972539425" : 0.527, - "74.26540448899536" : 0.528, - "74.52336927658796" : 0.529, - "74.78258456321467" : 0.53, - "75.04144334792377" : 0.531, - "75.2997591527891" : 0.532, - "75.55947902674538" : 0.533, - "75.81659369438056" : 0.534, - "76.07432264224303" : 0.535, - "76.33188156611402" : 0.536, - "76.58955566752763" : 0.537, - "76.84617123247814" : 0.538, - "77.10222187900533" : 0.539, - "77.35758694492172" : 0.54, - "77.61385697724437" : 0.541, - "77.86949627540508" : 0.542, - "78.12471325590953" : 0.543, - "78.37619519324625" : 0.544, - "78.62768809987276" : 0.545, - "78.8783912176356" : 0.546, - "79.12648364443244" : 0.547, - "79.37511905107307" : 0.548, - "79.62283852201764" : 0.549, - "79.8711722731895" : 0.55, - "80.11785514625052" : 0.551, - "80.36238255387114" : 0.552, - "80.60379468319621" : 0.553, - "80.844592532294" : 0.554, - "81.08436475279801" : 0.555, - "81.32160306736444" : 0.556, - "81.56075552299626" : 0.557, - "81.79762088171042" : 0.558, - "82.03168358688755" : 0.559, - "82.26370051952202" : 0.56, - "82.49439565273883" : 0.561, - "82.7248659155153" : 0.562, - "82.95552265621791" : 0.563, - "83.18215366757381" : 0.564, - "83.40717767797796" : 0.565, - "83.63239365095315" : 0.566, - "83.85366067961003" : 0.567, - "84.0762330537499" : 0.568, - "84.29614537511982" : 0.569, - "84.51451651127663" : 0.57, - "84.73326608793059" : 0.571, - "84.94894426344811" : 0.572, - "85.16331160883776" : 0.573, - "85.37437719800572" : 0.574, - "85.58442264322478" : 0.575, - "85.79486846752056" : 0.576, - "85.9994731450122" : 0.577, - "86.20560255378228" : 0.578, - "86.40755814779374" : 0.579, - "86.6081261266489" : 0.58, - "86.80673608727956" : 0.581, - "87.00331672930223" : 0.582, - "87.19734152680776" : 0.583, - "87.38916698171381" : 0.584, - "87.57936349708856" : 0.585, - "87.76706449903995" : 0.586, - "87.95448029945722" : 0.587, - "88.13936219393693" : 0.588, - "88.32225316232284" : 0.589, - "88.5015845961774" : 0.59, - "88.68198553578482" : 0.591, - "88.86030779498024" : 0.592, - "89.0345494783801" : 0.593, - "89.20633952551569" : 0.594, - "89.37702715902908" : 0.595, - "89.5457951668322" : 0.596, - "89.71133820344204" : 0.597, - "89.87570752604617" : 0.598, - "90.0408063064202" : 0.599, - "90.20126507722024" : 0.6, - "90.35959032115942" : 0.601, - "90.51614950944513" : 0.602, - "90.67191342422231" : 0.603, - "90.82377775648517" : 0.604, - "90.97468227589289" : 0.605, - "91.12303095078349" : 0.606, - "91.27028269669678" : 0.607, - "91.41659656833448" : 0.608, - "91.56162154842384" : 0.609, - "91.70360803524608" : 0.61, - "91.84324709405689" : 0.611, - "91.98263385920292" : 0.612, - "92.11892728463295" : 0.613, - "92.2529720056595" : 0.614, - "92.3845979982911" : 0.615, - "92.51417821838002" : 0.616, - "92.64183881275866" : 0.617, - "92.76777174399805" : 0.618, - "92.89176859559251" : 0.619, - "93.01540346062444" : 0.62, - "93.13595595523016" : 0.621, - "93.25570220703756" : 0.622, - "93.37224542623123" : 0.623, - "93.488541836405" : 0.624, - "93.60300637518668" : 0.625, - "93.71567195044558" : 0.626, - "93.82577619654246" : 0.627, - "93.93513453093479" : 0.628, - "94.04237579240093" : 0.629, - "94.1481361997477" : 0.63, - "94.25210861286146" : 0.631, - "94.35453984076211" : 0.632, - "94.45694364543833" : 0.633, - "94.5564351036798" : 0.634, - "94.65363398035872" : 0.635, - "94.74975238199498" : 0.636, - "94.84383598037836" : 0.637, - "94.93631806245486" : 0.638, - "95.02833394971601" : 0.639, - "95.11833697230381" : 0.64, - "95.20694141044554" : 0.641, - "95.2940266019537" : 0.642, - "95.38009713415786" : 0.643, - "95.46379829977106" : 0.644, - "95.54815762277062" : 0.645, - "95.63038341890933" : 0.646, - "95.70996561621274" : 0.647, - "95.78799017436837" : 0.648, - "95.86506588895865" : 0.649, - "95.9421086956796" : 0.65, - "96.01748417035505" : 0.651, - "96.09112101260146" : 0.652, - "96.16357865619729" : 0.653, - "96.23520263377036" : 0.654, - "96.30480277738029" : 0.655, - "96.37341568491067" : 0.656, - "96.43964277191539" : 0.657, - "96.505392694815" : 0.658, - "96.56923396129409" : 0.659, - "96.6320112066652" : 0.66, - "96.69408093284595" : 0.661, - "96.75545410912612" : 0.662, - "96.81565905604545" : 0.663, - "96.87376338397324" : 0.664, - "96.930902414401" : 0.665, - "96.98739974137706" : 0.666, - "97.04293725549796" : 0.667, - "97.09758625714724" : 0.668, - "97.15256433748972" : 0.669, - "97.20609995622705" : 0.67, - "97.25775434176829" : 0.671, - "97.3085695766419" : 0.672, - "97.35798074242457" : 0.673, - "97.40686538229812" : 0.674, - "97.45515219587905" : 0.675, - "97.50231465725824" : 0.676, - "97.54829243534193" : 0.677, - "97.59377111074096" : 0.678, - "97.6383886968928" : 0.679, - "97.68165706040256" : 0.68, - "97.72454149877026" : 0.681, - "97.7668006876209" : 0.682, - "97.80776001563343" : 0.683, - "97.84808312483914" : 0.684, - "97.88857077339142" : 0.685, - "97.92782986148913" : 0.686, - "97.96530643999873" : 0.687, - "98.00408287934643" : 0.688, - "98.04182272081057" : 0.689, - "98.07819688569798" : 0.69, - "98.11432972621037" : 0.691, - "98.14923400626819" : 0.692, - "98.18230093028902" : 0.693, - "98.21629475929566" : 0.694, - "98.24872546450966" : 0.695, - "98.28133167836002" : 0.696, - "98.31206762830408" : 0.697, - "98.34366466749532" : 0.698, - "98.37443900995359" : 0.699, - "98.40440162496864" : 0.7, - "98.4335141200263" : 0.701, - "98.46251143754132" : 0.702, - "98.49091092876372" : 0.703, - "98.51874550156282" : 0.704, - "98.54497855805505" : 0.705, - "98.57183137941945" : 0.706, - "98.59765308754518" : 0.707, - "98.62306344730443" : 0.708, - "98.64793082721992" : 0.709, - "98.67250752095642" : 0.71, - "98.69669480490597" : 0.711, - "98.71985097561686" : 0.712, - "98.74291390736468" : 0.713, - "98.76484151762098" : 0.714, - "98.78710917586025" : 0.715, - "98.80882836961088" : 0.716, - "98.82971938198364" : 0.717, - "98.85108755846151" : 0.718, - "98.87090358043652" : 0.719, - "98.89065927131776" : 0.72, - "98.91037108503991" : 0.721, - "98.92964412717114" : 0.722, - "98.94892265394726" : 0.723, - "98.96712070568074" : 0.724, - "98.98594949157616" : 0.725, - "99.00426820549714" : 0.726, - "99.02142965934706" : 0.727, - "99.03867338287029" : 0.728, - "99.05511634824006" : 0.729, - "99.07133992781439" : 0.73, - "99.08705343541428" : 0.731, - "99.10252013399426" : 0.732, - "99.11772905426459" : 0.733, - "99.13252662616841" : 0.734, - "99.14691284970576" : 0.735, - "99.16137037362662" : 0.736, - "99.17541654918101" : 0.737, - "99.18861260477797" : 0.738, - "99.20232970163916" : 0.739, - "99.21590968237818" : 0.74, - "99.22891926004901" : 0.741, - "99.241533943288" : 0.742, - "99.25400054111506" : 0.743, - "99.2660283673512" : 0.744, - "99.27762290664131" : 0.745, - "99.28925035380072" : 0.746, - "99.30027997466752" : 0.747, - "99.31171545925592" : 0.748, - "99.32298640449771" : 0.749, - "99.33379115492416" : 0.75, - "99.34440394277958" : 0.751, - "99.35477540625999" : 0.752, - "99.36494942252448" : 0.753, - "99.37463530539408" : 0.754, - "99.38399210957049" : 0.755, - "99.39357926883211" : 0.756, - "99.40310061235512" : 0.757, - "99.41235320827867" : 0.758, - "99.42147417272496" : 0.759, - "99.43047995962863" : 0.76, - "99.43892631275386" : 0.761, - "99.44724651904671" : 0.762, - "99.45536927812365" : 0.763, - "99.46338782894775" : 0.764, - "99.47131314080877" : 0.765, - "99.47926587589423" : 0.766, - "99.48685662441717" : 0.767, - "99.49401957063897" : 0.768, - "99.50088634603689" : 0.769, - "99.5081205926422" : 0.77, - "99.515042214489" : 0.771, - "99.52187059737271" : 0.772, - "99.52810663860869" : 0.773, - "99.5342000790776" : 0.774, - "99.54040321244426" : 0.775, - "99.54664473832513" : 0.776, - "99.55314952716054" : 0.777, - "99.55909488221752" : 0.778, - "99.56502378333985" : 0.779, - "99.57077717582581" : 0.78, - "99.57653605295665" : 0.781, - "99.5819274588801" : 0.782, - "99.58763697420697" : 0.783, - "99.59305580335486" : 0.784, - "99.59809619200557" : 0.785, - "99.60324078890913" : 0.786, - "99.60799597602573" : 0.787, - "99.61281697888099" : 0.788, - "99.61743504987544" : 0.789, - "99.6220860287392" : 0.79, - "99.62669861508877" : 0.791, - "99.63105890777356" : 0.792, - "99.6354740469072" : 0.793, - "99.6397904624329" : 0.794, - "99.64371746817164" : 0.795, - "99.64804485298711" : 0.796, - "99.65202670517472" : 0.797, - "99.65605243452143" : 0.798, - "99.65994653239086" : 0.799, - "99.66381320703586" : 0.8, - "99.667575673428" : 0.801, - "99.67112972331448" : 0.802, - "99.67467280391116" : 0.803, - "99.67816652270388" : 0.804, - "99.68168766472103" : 0.805, - "99.68509362919555" : 0.806, - "99.68845571651099" : 0.807, - "99.69163681054518" : 0.808, - "99.69476854277538" : 0.809, - "99.69786736713625" : 0.81, - "99.70080713679543" : 0.811, - "99.70369206000575" : 0.812, - "99.70666473753424" : 0.813, - "99.70953869145478" : 0.814, - "99.71219325957985" : 0.815, - "99.71496848989243" : 0.816, - "99.7177108123357" : 0.817, - "99.72032150330168" : 0.818, - "99.72289928639834" : 0.819, - "99.72536737659728" : 0.82, - "99.7280054907877" : 0.821, - "99.73032549557469" : 0.822, - "99.73258516926794" : 0.823, - "99.73490517405493" : 0.824, - "99.73725808671125" : 0.825, - "99.73934773641301" : 0.826, - "99.74182131125683" : 0.827, - "99.74417970855804" : 0.828, - "99.74630775077401" : 0.829, - "99.74811219894167" : 0.83, - "99.7502128179332" : 0.831, - "99.7521708361577" : 0.832, - "99.75408497722309" : 0.833, - "99.75608687260667" : 0.834, - "99.75806134476582" : 0.835, - "99.759937093317" : 0.836, - "99.76343081210972" : 0.838, - "99.76520235240807" : 0.839, - "99.7668203226496" : 0.84, - "99.76855347043373" : 0.841, - "99.77021531783434" : 0.842, - "99.7716193869253" : 0.843, - "99.77480048095948" : 0.845, - "99.77625391185441" : 0.846, - "99.77780058171241" : 0.847, - "99.78058678131475" : 0.849, - "99.78205666614434" : 0.85, - "99.78351009703927" : 0.851, - "99.78635114309049" : 0.853, - "99.78766197321836" : 0.854, - "99.79003133980935" : 0.856, - "99.79123796168437" : 0.857, - "99.79352505860206" : 0.859, - "99.79575182442599" : 0.861, - "99.79799504418457" : 0.863, - "99.79907551922722" : 0.864, - "99.80113226105966" : 0.866, - "99.80309027928415" : 0.868, - "99.80492215067625" : 0.87, - "99.8058764788865" : 0.871, - "99.80686919961096" : 0.872, - "99.80765350382974" : 0.873, - "99.80940859019343" : 0.875, - "99.81017095583265" : 0.876, - "99.81105398365938" : 0.877, - "99.8118986189719" : 0.878, - "99.81282552395773" : 0.879, - "99.81359337424183" : 0.88, - "99.81447640206856" : 0.881, - "99.81596274083282" : 0.883, - "99.81675252969647" : 0.884, - "99.81747650282149" : 0.885, - "99.81879830223914" : 0.887, - "99.81949485213973" : 0.888, - "99.82089343658579" : 0.89, - "99.82157353255172" : 0.891, - "99.82292823983869" : 0.893, - "99.82364124367395" : 0.894, - "99.82428294712567" : 0.895, - "99.8254895690007" : 0.897, - "99.82659198262289" : 0.899, - "99.82775472733883" : 0.901, - "99.82834158434169" : 0.902, - "99.82940012080479" : 0.904, - "99.83046962655766" : 0.906, - "99.83159946340429" : 0.908, - "99.83210953537873" : 0.909, - "99.83312967932763" : 0.911, - "99.83422112366004" : 0.913, - "99.83519739044984" : 0.915, - "99.83623947297828" : 0.917, - "99.83716089331921" : 0.919, - "99.8379781054073" : 0.921, - "99.838959856842" : 0.923, - "99.8398538539585" : 0.925, - "99.84114823015172" : 0.928, - "99.84196544223981" : 0.93, - "99.84283750077677" : 0.932, - "99.84402766871713" : 0.935, - "99.84475164184215" : 0.937, - "99.8457937243706" : 0.94, - "99.84679741438482" : 0.943, - "99.84775722723997" : 0.946, - "99.84874446331955" : 0.949, - "99.84968782224003" : 0.952, - "99.85060375793607" : 0.955, - "99.85163487117474" : 0.958, - "99.85256177616057" : 0.961, - "99.85369709765207" : 0.965, - "99.85449237116062" : 0.968, - "99.85561672336236" : 0.972, - "99.85662589802148" : 0.976, - "99.85766249590503" : 0.98, - "99.85857294695619" : 0.984, - "99.85942855155848" : 0.987, - "99.86039384905851" : 0.991, - "99.86134269262388" : 0.994, - "99.86232992870346" : 0.998, - "99.86342137303588" : 1.003, - "99.86431537015238" : 1.007, - "99.86537939126036" : 1.012, - "99.86631178089107" : 1.016, - "99.86723320123201" : 1.02, - "99.86831367627465" : 1.025, - "99.86921315803603" : 1.029, - "99.87026620985425" : 1.034, - "99.87126989986848" : 1.039, - "99.87217486627476" : 1.044, - "99.87314564841968" : 1.049, - "99.87412739985436" : 1.054, - "99.87504333555042" : 1.059, - "99.87607444878907" : 1.064, - "99.87703426164421" : 1.069, - "99.87795568198516" : 1.074, - "99.87900873380336" : 1.081, - "99.8798862769852" : 1.086, - "99.88087351306478" : 1.091, - "99.8818826877239" : 1.097, - "99.8829796167012" : 1.103, - "99.88393394491146" : 1.109, - "99.88482794202797" : 1.115, - "99.8857493623689" : 1.12, - "99.88676950631779" : 1.127, - "99.88775125775248" : 1.133, - "99.88868364738319" : 1.138, - "99.88975315313606" : 1.145, - "99.89072941992586" : 1.152, - "99.89165084026679" : 1.158, - "99.89259968383216" : 1.165, - "99.89357046597708" : 1.171, - "99.89453576347711" : 1.177, - "99.89558881529531" : 1.184, - "99.89651572028113" : 1.19, - "99.89755231816468" : 1.197, - "99.89850116173005" : 1.203, - "99.89946645923008" : 1.209, - "99.900437241375" : 1.216, - "99.90141899280968" : 1.223, - "99.90242268282393" : 1.23, - "99.90293823944324" : 1.234, - "99.90340991890349" : 1.238, - "99.90390902158816" : 1.242, - "99.9043861856933" : 1.246, - "99.90484141121887" : 1.25, - "99.905318575324" : 1.254, - "99.90582864729845" : 1.257, - "99.90632774998312" : 1.26, - "99.9068213680229" : 1.264, - "99.90733143999735" : 1.268, - "99.9077208497843" : 1.271, - "99.90825834498318" : 1.275, - "99.90875744766785" : 1.279, - "99.909185249969" : 1.282, - "99.9096733833639" : 1.286, - "99.91023281714233" : 1.29, - "99.9106496501537" : 1.294, - "99.91122553786678" : 1.3, - "99.91169721732703" : 1.304, - "99.91220180465659" : 1.308, - "99.91265154553727" : 1.312, - "99.9131725868015" : 1.317, - "99.91368814342083" : 1.322, - "99.91409949178733" : 1.326, - "99.91462053305153" : 1.332, - "99.91510866644644" : 1.336, - "99.91559131519645" : 1.341, - "99.91603008678737" : 1.346, - "99.9165456434067" : 1.352, - "99.91700635357718" : 1.357, - "99.91750545626185" : 1.364, - "99.91800455894652" : 1.37, - "99.91852560021074" : 1.377, - "99.91902470289541" : 1.383, - "99.91945798984145" : 1.389, - "99.91994612323636" : 1.396, - "99.92042328734148" : 1.403, - "99.92091142073637" : 1.41, - "99.92140503877617" : 1.416, - "99.92191511075062" : 1.423, - "99.92237033627619" : 1.43, - "99.9228968621853" : 1.437, - "99.92339596486997" : 1.445, - "99.92386764433022" : 1.452, - "99.9243228698558" : 1.458, - "99.92482745718536" : 1.466, - "99.92530462129048" : 1.473, - "99.92579823933026" : 1.483, - "99.92628637272517" : 1.491, - "99.92679644469962" : 1.5, - "99.92725167022519" : 1.508, - "99.92776174219964" : 1.517, - "99.92827729881897" : 1.527, - "99.92873800898944" : 1.534, - "99.92923162702922" : 1.544, - "99.92970330648947" : 1.555, - "99.9302188631088" : 1.567, - "99.93069054256904" : 1.578, - "99.9311951298986" : 1.589, - "99.93167777864862" : 1.599, - "99.9321330041742" : 1.61, - "99.9326595300833" : 1.621, - "99.93312024025377" : 1.634, - "99.93363031222822" : 1.647, - "99.93410199168846" : 1.66, - "99.93460657901802" : 1.676, - "99.93509471241292" : 1.686, - "99.9355499379385" : 1.699, - "99.93607097920273" : 1.713, - "99.93653717401807" : 1.725, - "99.93703627670274" : 1.74, - "99.93751344080788" : 1.753, - "99.93801802813744" : 1.771, - "99.9384842229528" : 1.784, - "99.93899429492724" : 1.805, - "99.93948791296702" : 1.825, - "99.93995959242726" : 1.844, - "99.94046417975682" : 1.86, - "99.94093585921706" : 1.876, - "99.9414514158364" : 1.895, - "99.9419340645864" : 1.913, - "99.94238929011199" : 1.931, - "99.94287193886201" : 1.952, - "99.9433655569018" : 1.968, - "99.9438482056518" : 1.99, - "99.94434182369159" : 2.012, - "99.94482447244161" : 2.033, - "99.9453126058365" : 2.052, - "99.94582816245584" : 2.072, - "99.94630532656096" : 2.091, - "99.94679894460076" : 2.113, - "99.94728159335077" : 2.133, - "99.94776424210077" : 2.157, - "99.94827979872011" : 2.181, - "99.94876244747013" : 2.205, - "99.94923961157525" : 2.226, - "99.94971677568039" : 2.251, - "99.9501994244304" : 2.279, - "99.95069852711507" : 2.308, - "99.95119214515486" : 2.342, - "99.9514170155952" : 2.356, - "99.95166930925998" : 2.372, - "99.951910633635" : 2.39, - "99.95215744265488" : 2.411, - "99.952393282385" : 2.434, - "99.95264557604979" : 2.451, - "99.95291980829411" : 2.47, - "99.95313919408957" : 2.486, - "99.95338600310946" : 2.503, - "99.95362184283958" : 2.526, - "99.95387413650437" : 2.542, - "99.95412643016914" : 2.558, - "99.9543458159646" : 2.577, - "99.95460907891916" : 2.592, - "99.9548394340044" : 2.609, - "99.95508624302428" : 2.631, - "99.95533305204418" : 2.654, - "99.9555688917743" : 2.674, - "99.95581570079419" : 2.691, - "99.95606250981409" : 2.71, - "99.9563038341891" : 2.731, - "99.9565451585641" : 2.757, - "99.956791967584" : 2.772, - "99.95703877660388" : 2.795, - "99.95729107026867" : 2.814, - "99.9575214253539" : 2.831, - "99.95777371901868" : 2.847, - "99.95802052803857" : 2.863, - "99.95826185241359" : 2.879, - "99.95850866143347" : 2.903, - "99.95874998580848" : 2.927, - "99.95900776411814" : 2.946, - "99.95923811920338" : 2.959, - "99.9594739589335" : 2.97, - "99.9597207679534" : 2.988, - "99.9599620923284" : 3.001, - "99.9602089013483" : 3.018, - "99.96046667965797" : 3.037, - "99.96072445796763" : 3.058, - "99.96094932840798" : 3.077, - "99.9611851681381" : 3.105, - "99.9614264925131" : 3.133, - "99.96167878617788" : 3.152, - "99.9619201105529" : 3.169, - "99.96216143492789" : 3.199, - "99.9624027593029" : 3.22, - "99.96265505296769" : 3.251, - "99.96290186198758" : 3.279, - "99.9631377017177" : 3.305, - "99.96337902609271" : 3.329, - "99.9636258351126" : 3.352, - "99.96387812877738" : 3.377, - "99.9641139685075" : 3.402, - "99.96436077752739" : 3.43, - "99.96460758654729" : 3.456, - "99.96484891092229" : 3.487, - "99.96509571994218" : 3.518, - "99.96534252896208" : 3.547, - "99.96558385333708" : 3.575, - "99.96583066235698" : 3.611, - "99.9660665020871" : 3.643, - "99.96631331110699" : 3.667, - "99.966554635482" : 3.703, - "99.9668014445019" : 3.736, - "99.9670427688769" : 3.764, - "99.96728957789679" : 3.79, - "99.9675309022718" : 3.821, - "99.96778319593658" : 3.849, - "99.96802452031159" : 3.878, - "99.9682658446866" : 3.897, - "99.9685071690616" : 3.926, - "99.96875946272638" : 3.961, - "99.96900627174628" : 3.989, - "99.96924211147639" : 4.02, - "99.9694834358514" : 4.045, - "99.96973572951619" : 4.075, - "99.96998802318096" : 4.11, - "99.97022386291108" : 4.142, - "99.97045970264121" : 4.177, - "99.97071199630598" : 4.219, - "99.9709478360361" : 4.257, - "99.971194645056" : 4.299, - "99.971435969431" : 4.342, - "99.9716827784509" : 4.377, - "99.97192410282591" : 4.413, - "99.9721709118458" : 4.452, - "99.9724122362208" : 4.5, - "99.97265904524069" : 4.55, - "99.97290585426059" : 4.599, - "99.9731471786356" : 4.647, - "99.97340495694526" : 4.687, - "99.9736353120305" : 4.723, - "99.9738821210504" : 4.769, - "99.97412344542539" : 4.82, - "99.97437025444529" : 4.853, - "99.9746115788203" : 4.896, - "99.97485838784019" : 4.942, - "99.97510519686008" : 4.98, - "99.9753465212351" : 5.029, - "99.97559333025498" : 5.062, - "99.97571947708738" : 5.079, - "99.97583465462999" : 5.093, - "99.97596628610727" : 5.115, - "99.97608146364989" : 5.152, - "99.9761966411925" : 5.173, - "99.97632278802489" : 5.197, - "99.9764434502124" : 5.225, - "99.9765641123999" : 5.245, - "99.97669025923229" : 5.268, - "99.97682189070956" : 5.288, - "99.9769315836073" : 5.307, - "99.9770522457948" : 5.33, - "99.97718387727208" : 5.346, - "99.9772990548147" : 5.363, - "99.97741971700219" : 5.388, - "99.97755134847947" : 5.409, - "99.97766652602209" : 5.428, - "99.97779815749936" : 5.445, - "99.9779078503971" : 5.476, - "99.9780285125846" : 5.507, - "99.97815465941699" : 5.534, - "99.9782753216045" : 5.571, - "99.978395983792" : 5.603, - "99.9785166459795" : 5.623, - "99.97864827745677" : 5.643, - "99.9787634549994" : 5.661, - "99.97888960183178" : 5.681, - "99.9790047793744" : 5.716, - "99.97913092620679" : 5.734, - "99.97926804232895" : 5.761, - "99.9793722505818" : 5.802, - "99.9794929127693" : 5.838, - "99.97962454424658" : 5.865, - "99.97974520643407" : 5.89, - "99.9798603839767" : 5.913, - "99.9799810461642" : 5.942, - "99.98010719299658" : 5.964, - "99.98023333982898" : 6.004, - "99.9803485173716" : 6.026, - "99.98046917955911" : 6.055, - "99.9805953263915" : 6.091, - "99.98072147322388" : 6.127, - "99.98083665076649" : 6.18, - "99.980957312954" : 6.229, - "99.98108345978639" : 6.299, - "99.98120412197389" : 6.339, - "99.9813247841614" : 6.409, - "99.9814454463489" : 6.442, - "99.98157159318129" : 6.482, - "99.9816922553688" : 6.528, - "99.98181840220118" : 6.607, - "99.98193906438868" : 6.673, - "99.9820597265762" : 6.797, - "99.9821803887637" : 6.865, - "99.98230653559608" : 6.925, - "99.98243268242848" : 6.987, - "99.98254785997109" : 7.036, - "99.98266852215859" : 7.098, - "99.9827891843461" : 7.172, - "99.98292081582338" : 7.244, - "99.98303599336599" : 7.299, - "99.9831566555535" : 7.384, - "99.983277317741" : 7.476, - "99.98340346457339" : 7.554, - "99.9835241267609" : 7.606, - "99.9836447889484" : 7.741, - "99.9837654511359" : 7.831, - "99.9838915979683" : 7.924, - "99.9840122601558" : 7.977, - "99.98413840698818" : 8.024, - "99.9842535845308" : 8.069, - "99.98437973136319" : 8.124, - "99.98450039355069" : 8.181, - "99.9846210557382" : 8.281, - "99.9847417179257" : 8.392, - "99.98486786475809" : 8.475, - "99.9849885269456" : 8.574, - "99.9851091891331" : 8.669, - "99.9852298513206" : 8.741, - "99.985355998153" : 8.851, - "99.9854766603405" : 8.944, - "99.985597322528" : 9.05, - "99.9857179847155" : 9.147, - "99.98584413154789" : 9.23, - "99.98597027838028" : 9.346, - "99.9860854559229" : 9.443, - "99.9862061181104" : 9.505, - "99.98633226494279" : 9.614, - "99.9864529271303" : 9.697, - "99.9865735893178" : 9.821, - "99.98669973615019" : 10.016, - "99.9868203983377" : 10.116, - "99.9869410605252" : 10.23, - "99.9870617227127" : 10.31, - "99.98718786954508" : 10.395, - "99.9873085317326" : 10.481, - "99.9874291939201" : 10.567, - "99.9875498561076" : 10.707, - "99.98767600293999" : 10.836, - "99.98779666512749" : 10.954, - "99.98785699622124" : 11.023, - "99.987917327315" : 11.087, - "99.98797765840875" : 11.148, - "99.98804347414739" : 11.206, - "99.98809832059625" : 11.245, - "99.98816413633489" : 11.306, - "99.98822446742864" : 11.368, - "99.98828479852239" : 11.433, - "99.98834512961615" : 11.492, - "99.9884054607099" : 11.553, - "99.98846579180365" : 11.66, - "99.9885261228974" : 11.724, - "99.98858645399115" : 11.784, - "99.98865226972978" : 11.843, - "99.98871260082355" : 11.939, - "99.9887729319173" : 12.028, - "99.98883326301105" : 12.113, - "99.9888935941048" : 12.175, - "99.98895392519854" : 12.217, - "99.9890142562923" : 12.267, - "99.98908007203094" : 12.344, - "99.9891404031247" : 12.404, - "99.98920073421844" : 12.492, - "99.98926106531219" : 12.589, - "99.98932139640594" : 12.653, - "99.98938172749969" : 12.766, - "99.98944205859345" : 12.896, - "99.9895023896872" : 13.038, - "99.98956820542584" : 13.162, - "99.98962853651959" : 13.279, - "99.98969435225823" : 13.409, - "99.98974919870709" : 13.474, - "99.98980952980085" : 13.677, - "99.9898698608946" : 13.923, - "99.98993019198835" : 14.258, - "99.9899905230821" : 14.394, - "99.99005633882074" : 14.561, - "99.99011666991449" : 14.804, - "99.99017700100825" : 15.241, - "99.990237332102" : 15.389, - "99.99029766319575" : 15.524, - "99.9903579942895" : 15.663, - "99.99041832538325" : 16.059, - "99.990478656477" : 16.299, - "99.99054447221565" : 16.608, - "99.9906048033094" : 16.765, - "99.99066513440314" : 17.181, - "99.9907254654969" : 17.479, - "99.99078579659064" : 17.745, - "99.99084612768439" : 18.049, - "99.99090645877816" : 18.534, - "99.99097227451679" : 19.075, - "99.99103260561054" : 19.575, - "99.99109293670429" : 19.992, - "99.99115326779804" : 20.415, - "99.99121359889179" : 20.71, - "99.99127392998555" : 20.952, - "99.9913342610793" : 21.441, - "99.99139459217305" : 21.917, - "99.99146040791169" : 22.495, - "99.99152073900544" : 22.918, - "99.99158107009919" : 23.187, - "99.99164140119294" : 23.776, - "99.9917017322867" : 24.107, - "99.99176206338045" : 24.667, - "99.9918223944742" : 25.198, - "99.99188272556795" : 25.617, - "99.99194854130658" : 26.167, - "99.99200887240033" : 26.486, - "99.9920692034941" : 26.89, - "99.99212953458785" : 27.3, - "99.9921898656816" : 27.76, - "99.99225019677534" : 27.961, - "99.9923105278691" : 28.37, - "99.99237085896284" : 28.827, - "99.9924366747015" : 29.273, - "99.99249700579524" : 29.72, - "99.99255733688899" : 30.194, - "99.99261766798274" : 30.626, - "99.99267799907649" : 31.06, - "99.99273833017024" : 31.554, - "99.992798661264" : 31.71, - "99.99285899235775" : 32.119, - "99.99292480809639" : 32.533, - "99.99298513919014" : 32.795, - "99.99304547028389" : 33.269, - "99.99310580137764" : 33.64, - "99.9931661324714" : 34.221, - "99.99322646356515" : 34.603, - "99.9932867946589" : 35.227, - "99.99335261039754" : 35.586, - "99.99341294149129" : 35.876, - "99.99347327258504" : 36.195, - "99.9935336036788" : 36.562, - "99.99359393477255" : 36.885, - "99.9936542658663" : 37.491, - "99.99371459696005" : 37.77, - "99.9937749280538" : 38.402, - "99.99384074379243" : 38.779, - "99.9939010748862" : 39.196, - "99.99392849811062" : 39.359, - "99.99396140597995" : 39.569, - "99.99398882920437" : 40.035, - "99.9940217370737" : 40.21, - "99.99404916029813" : 40.307, - "99.99408206816744" : 40.61, - "99.99411497603677" : 41.031, - "99.9941423992612" : 41.199, - "99.99417530713052" : 41.462, - "99.99420273035494" : 41.601, - "99.99423563822427" : 41.74, - "99.9942630614487" : 41.914, - "99.99429596931802" : 42.114, - "99.99432887718734" : 42.439, - "99.99435630041177" : 42.628, - "99.99438920828109" : 43.192, - "99.99441663150552" : 43.284, - "99.99444953937484" : 43.564, - "99.99447696259928" : 43.98, - "99.99450987046859" : 44.207, - "99.99454277833792" : 44.283, - "99.99457020156234" : 44.49, - "99.99460310943167" : 44.667, - "99.9946305326561" : 44.882, - "99.99466344052541" : 45.022, - "99.99469086374985" : 45.239, - "99.99472377161916" : 45.638, - "99.9947511948436" : 45.713, - "99.99478410271291" : 45.846, - "99.99481701058224" : 46.175, - "99.99484443380668" : 46.357, - "99.99487734167599" : 46.486, - "99.99490476490043" : 46.541, - "99.99494315741462" : 46.708, - "99.99496509599417" : 47.006, - "99.9949980038635" : 47.134, - "99.99503091173281" : 47.291, - "99.99505833495725" : 47.518, - "99.99509124282656" : 47.815, - "99.995118666051" : 48.116, - "99.99515157392031" : 48.388, - "99.99518448178964" : 48.495, - "99.99521190501407" : 49.014, - "99.9952393282385" : 49.138, - "99.99527223610782" : 49.311, - "99.99530514397713" : 49.441, - "99.99533256720157" : 49.744, - "99.99536547507088" : 49.978, - "99.99539289829532" : 50.197, - "99.99542580616465" : 50.527, - "99.99545322938907" : 50.856, - "99.9954861372584" : 51.129, - "99.99551904512771" : 51.295, - "99.99554646835215" : 51.685, - "99.99557937622147" : 52.037, - "99.9956067994459" : 52.114, - "99.99563970731522" : 52.406, - "99.99566713053964" : 52.528, - "99.99570003840897" : 52.754, - "99.99573294627828" : 53.076, - "99.99576036950272" : 53.13, - "99.99579327737204" : 53.385, - "99.99582070059647" : 53.719, - "99.9958536084658" : 54.067, - "99.99588103169022" : 54.305, - "99.99591393955954" : 54.568, - "99.99594136278398" : 54.751, - "99.99597427065329" : 55.104, - "99.99600717852262" : 55.203, - "99.99603460174704" : 55.39, - "99.99606750961637" : 55.747, - "99.99609493284079" : 55.937, - "99.99612784071012" : 56.268, - "99.99615526393455" : 56.659, - "99.99618817180387" : 56.938, - "99.99622107967319" : 57.443, - "99.99624850289761" : 57.637, - "99.99628141076694" : 57.945, - "99.99630883399138" : 58.266, - "99.99634174186069" : 58.471, - "99.99636916508513" : 58.761, - "99.99640207295444" : 59.062, - "99.99642949617888" : 59.209, - "99.99646240404819" : 59.491, - "99.99649531191751" : 59.958, - "99.99652273514195" : 60.062, - "99.99655564301126" : 60.233, - "99.9965830662357" : 60.66, - "99.99661597410501" : 60.802, - "99.99664339732945" : 61.035, - "99.99667630519878" : 61.397, - "99.99670921306809" : 61.592, - "99.99673663629252" : 61.846, - "99.99676954416184" : 62.087, - "99.99679696738627" : 62.223, - "99.99682987525559" : 62.402, - "99.99685729848002" : 62.485, - "99.99689569099424" : 62.664, - "99.99692311421866" : 62.898, - "99.9969505374431" : 63.025, - "99.99696699137776" : 63.178, - "99.99698344531241" : 63.216, - "99.99699441460218" : 63.266, - "99.99701086853685" : 63.332, - "99.99702732247151" : 63.54, - "99.99704377640616" : 63.842, - "99.99706023034082" : 63.981, - "99.9970711996306" : 64.097, - "99.99708765356526" : 64.212, - "99.99710410749992" : 64.273, - "99.99712056143457" : 64.328, - "99.99713153072435" : 64.386, - "99.99714798465901" : 64.776, - "99.99716443859367" : 64.825, - "99.99718089252833" : 64.931, - "99.99719734646298" : 64.941, - "99.99720831575276" : 65.154, - "99.99722476968742" : 65.224, - "99.99724122362208" : 65.249, - "99.99725767755675" : 65.323, - "99.9972741314914" : 65.514, - "99.99728510078117" : 65.589, - "99.99730155471583" : 65.652, - "99.9973180086505" : 65.836, - "99.99733446258516" : 65.872, - "99.99734543187492" : 65.966, - "99.99736188580958" : 66.194, - "99.99737833974424" : 66.525, - "99.99739479367891" : 66.555, - "99.99741673225844" : 66.582, - "99.99742221690333" : 66.615, - "99.997438670838" : 66.673, - "99.99745512477266" : 67.079, - "99.99747157870732" : 67.128, - "99.99748254799708" : 67.236, - "99.99749900193174" : 67.338, - "99.9975154558664" : 67.35, - "99.99753190980107" : 67.403, - "99.99754836373573" : 67.462, - "99.99755933302549" : 67.801, - "99.99757578696016" : 67.975, - "99.99759224089482" : 68.052, - "99.99760869482948" : 68.208, - "99.99761966411926" : 68.254, - "99.9976361180539" : 68.388, - "99.99765257198857" : 68.511, - "99.99766902592323" : 68.676, - "99.99768547985789" : 68.931, - "99.99769644914767" : 68.975, - "99.99771290308232" : 69.048, - "99.99772935701698" : 69.099, - "99.99774581095164" : 69.153, - "99.9977622648863" : 69.431, - "99.99777323417608" : 69.516, - "99.99778968811073" : 69.618, - "99.99780614204539" : 69.754, - "99.99782259598005" : 69.892, - "99.99783356526983" : 69.912, - "99.99785001920448" : 70.084, - "99.99786647313914" : 70.236, - "99.9978829270738" : 70.357, - "99.99789938100847" : 70.435, - "99.99791035029824" : 70.476, - "99.99792680423289" : 70.54, - "99.99794325816755" : 70.568, - "99.99795971210222" : 70.712, - "99.99797068139199" : 71.014, - "99.99798713532665" : 71.085, - "99.9980035892613" : 71.108, - "99.99802004319596" : 71.166, - "99.99803649713063" : 71.313, - "99.9980474664204" : 71.458, - "99.99806392035507" : 71.74, - "99.99808037428971" : 71.824, - "99.99809682822438" : 71.854, - "99.99811328215904" : 71.879, - "99.99812425144881" : 71.894, - "99.99814070538346" : 72.029, - "99.99815715931813" : 72.261, - "99.99817361325279" : 72.346, - "99.99818458254256" : 72.372, - "99.99820103647723" : 72.563, - "99.99821749041188" : 72.618, - "99.99823394434654" : 72.857, - "99.9982503982812" : 73.039, - "99.99826136757098" : 73.104, - "99.99827782150564" : 73.417, - "99.99829427544029" : 73.538, - "99.99831072937495" : 73.604, - "99.99832169866472" : 73.715, - "99.99833815259939" : 73.738, - "99.99835460653405" : 73.801, - "99.99837654511359" : 74.054, - "99.99838751440336" : 74.208, - "99.99839848369314" : 74.333, - "99.9984149376278" : 74.509, - "99.99843139156245" : 74.591, - "99.998453330142" : 74.609, - "99.99846429943177" : 74.736, - "99.99847526872155" : 74.872, - "99.99848623801132" : 75.146, - "99.99849172265621" : 75.221, - "99.9984972073011" : 75.224, - "99.99850817659086" : 75.305, - "99.99851366123575" : 75.318, - "99.99852463052552" : 75.367, - "99.99853011517041" : 75.423, - "99.9985355998153" : 75.434, - "99.99854656910507" : 75.55, - "99.99855205374996" : 75.635, - "99.99856302303974" : 75.668, - "99.99856850768462" : 75.68, - "99.99857399232951" : 75.727, - "99.99858496161927" : 75.867, - "99.99859044626416" : 75.954, - "99.99860141555394" : 76.033, - "99.99860690019882" : 76.061, - "99.99861238484371" : 76.066, - "99.99862335413349" : 76.096, - "99.99862883877837" : 76.1, - "99.99863980806815" : 76.115, - "99.99864529271304" : 76.154, - "99.99865077735791" : 76.284, - "99.99866174664768" : 76.337, - "99.99866723129257" : 76.477, - "99.99867271593746" : 76.72, - "99.99868368522723" : 76.843, - "99.99868916987212" : 76.872, - "99.99870562380679" : 76.969, - "99.99871110845167" : 76.973, - "99.99872207774145" : 77.165, - "99.99872756238632" : 77.175, - "99.9987385316761" : 77.219, - "99.99874401632098" : 77.246, - "99.99874950096587" : 77.393, - "99.99876047025565" : 77.491, - "99.99876595490053" : 77.505, - "99.99877692419031" : 77.604, - "99.9987824088352" : 77.616, - "99.99878789348008" : 77.626, - "99.99879886276985" : 77.727, - "99.99880434741473" : 77.744, - "99.99880983205962" : 77.797, - "99.9988208013494" : 77.857, - "99.99882628599428" : 77.876, - "99.99883725528406" : 78.132, - "99.99884273992895" : 78.212, - "99.99884822457383" : 78.236, - "99.99885919386361" : 78.337, - "99.9988646785085" : 78.339, - "99.99887564779826" : 78.418, - "99.99888113244315" : 78.435, - "99.99888661708803" : 78.447, - "99.99889758637781" : 78.477, - "99.9989030710227" : 78.487, - "99.99891404031247" : 78.551, - "99.99891952495736" : 78.58, - "99.99892500960225" : 78.618, - "99.99893597889202" : 78.799, - "99.9989414635369" : 78.827, - "99.99895243282667" : 79.196, - "99.99895791747156" : 79.201, - "99.99896340211644" : 79.245, - "99.99897437140622" : 79.269, - "99.99897985605111" : 79.288, - "99.998985340696" : 79.29, - "99.99899630998577" : 79.31, - "99.99900179463066" : 79.366, - "99.99901276392043" : 79.394, - "99.9990182485653" : 79.643, - "99.9990237332102" : 79.706, - "99.99903470249997" : 79.926, - "99.99904018714486" : 80.053, - "99.99905664107952" : 80.104, - "99.99906212572441" : 80.114, - "99.99907309501418" : 80.129, - "99.99907857965907" : 80.151, - "99.99908954894883" : 80.248, - "99.99909503359372" : 80.25, - "99.9991005182386" : 80.331, - "99.99911148752838" : 80.544, - "99.99912245681816" : 80.587, - "99.99912794146304" : 80.743, - "99.99913342610793" : 80.756, - "99.99913891075282" : 80.901, - "99.9991498800426" : 80.935, - "99.99915536468748" : 81.023, - "99.99916084933236" : 81.068, - "99.99917181862213" : 81.181, - "99.99917730326702" : 81.212, - "99.9991882725568" : 81.226, - "99.99919375720168" : 81.361, - "99.99919924184657" : 81.386, - "99.99921021113634" : 81.48, - "99.99921569578123" : 81.503, - "99.999226665071" : 81.534, - "99.9992321497159" : 81.582, - "99.99923763436077" : 81.648, - "99.99924311900565" : 81.65, - "99.99924860365054" : 81.676, - "99.99925408829543" : 81.722, - "99.99925957294032" : 81.774, - "99.9992650575852" : 81.785, - "99.9992705422301" : 81.787, - "99.99927602687498" : 82.073, - "99.99928151151987" : 82.167, - "99.99928699616476" : 82.195, - "99.99929248080964" : 82.267, - "99.99929796545453" : 82.284, - "99.99930345009942" : 82.285, - "99.99930893474429" : 82.345, - "99.99931441938918" : 82.346, - "99.99931990403407" : 82.354, - "99.99932538867895" : 82.364, - "99.99933087332384" : 82.394, - "99.99933635796873" : 82.417, - "99.99934184261362" : 82.418, - "99.9993473272585" : 82.433, - "99.99935281190339" : 82.453, - "99.99935829654828" : 82.474, - "99.99936378119317" : 82.492, - "99.99936926583806" : 82.522, - "99.99937475048294" : 82.625, - "99.99938023512782" : 82.654, - "99.9993857197727" : 82.7, - "99.99939120441759" : 82.708, - "99.99939668906248" : 82.844, - "99.99940217370737" : 82.856, - "99.99940765835225" : 82.982, - "99.99941314299714" : 83.136, - "99.99941862764203" : 83.204, - "99.99942411228692" : 83.319, - "99.9994295969318" : 83.325, - "99.99943508157669" : 83.365, - "99.99944605086647" : 83.375, - "99.99945153551135" : 83.381, - "99.99945702015623" : 83.394, - "99.99946250480112" : 83.402, - "99.999467989446" : 83.424, - "99.99947347409089" : 83.528, - "99.99947895873578" : 83.556, - "99.99948444338067" : 83.65, - "99.99948992802555" : 84.033, - "99.99949541267044" : 84.085, - "99.99950089731533" : 84.09, - "99.99950638196022" : 84.119, - "99.9995118666051" : 84.166, - "99.99951735124999" : 84.191, - "99.99952283589488" : 84.193, - "99.99952832053975" : 84.248, - "99.99953380518464" : 84.484, - "99.99953928982953" : 84.662, - "99.99954477447442" : 84.673, - "99.9995502591193" : 84.755, - "99.99955574376419" : 84.845, - "99.99956122840908" : 85.1, - "99.99956671305397" : 85.345, - "99.99957219769885" : 85.372, - "99.99957768234374" : 85.477, - "99.99958316698863" : 85.53, - "99.99958865163352" : 85.536, - "99.9995941362784" : 85.542, - "99.99959962092328" : 85.581, - "99.99960510556816" : 85.638, - "99.99961059021305" : 85.653, - "99.99961607485794" : 85.838, - "99.99962155950283" : 86.014, - "99.99962704414772" : 86.112, - "99.9996325287926" : 86.185, - "99.99963801343749" : 86.216, - "99.99964349808238" : 86.28, - "99.99964898272727" : 86.437, - "99.99965446737215" : 86.649, - "99.99965995201704" : 86.674, - "99.99966543666193" : 86.747, - "99.99967092130682" : 86.793, - "99.99967640595169" : 86.847, - "99.99968189059658" : 87.241, - "99.99968737524146" : 87.278, - "99.99969285988635" : 87.405, - "99.99969834453124" : 87.481, - "99.99970382917613" : 87.528, - "99.99970931382101" : 87.691, - "99.9997147984659" : 87.696, - "99.99972028311079" : 87.726, - "99.99972576775568" : 87.747, - "99.99973125240057" : 87.877, - "99.99973673704545" : 87.992, - "99.99974222169034" : 88.059, - "99.99974770633521" : 88.087, - "99.9997531909801" : 88.235, - "99.99975867562499" : 88.362, - "99.99976416026988" : 88.392, - "99.99976964491476" : 88.408, - "99.99977512955965" : 88.445, - "99.99978061420454" : 88.525, - "99.99978609884943" : 88.652, - "99.99979158349431" : 88.702, - "99.9997970681392" : 89.215, - "99.99980255278409" : 89.243, - "99.99980803742898" : 89.26, - "99.99981352207386" : 89.591, - "99.99981900671874" : 89.981, - "99.99982449136363" : 90.048, - "99.99982997600851" : 90.08, - "99.9998354606534" : 90.106, - "99.99984094529829" : 90.227, - "99.99984642994318" : 90.45, - "99.99985191458806" : 90.805, - "99.99985739923295" : 90.808, - "99.99986288387784" : 90.973, - "99.99986836852273" : 91.008, - "99.99987385316761" : 91.01, - "99.9998793378125" : 91.226, - "99.99988482245739" : 91.231, - "99.99989030710228" : 91.513, - "99.99989579174715" : 91.533, - "99.99990127639204" : 91.571, - "99.99990676103693" : 91.692, - "99.99991224568181" : 91.808, - "99.9999177303267" : 91.873, - "99.99992321497159" : 92.092, - "99.99992869961648" : 92.196, - "99.99993418426136" : 92.231, - "99.99993966890625" : 92.318, - "99.99994515355114" : 92.349, - "99.99995063819603" : 92.383, - "99.99995612284091" : 92.463, - "99.9999616074858" : 92.471, - "99.99996709213067" : 92.933, - "99.99997257677556" : 92.987, - "99.99997806142045" : 93.041, - "99.99998354606534" : 93.06, - "99.99998903071022" : 93.085, - "99.99999451535511" : 93.091, - "100.0" : 93.175 - }, - "aggregatedEndToEndLatencyAvg" : 0.44986829020199454, - "aggregatedEndToEndLatency50pct" : 0.433, - "aggregatedEndToEndLatency75pct" : 0.531, - "aggregatedEndToEndLatency95pct" : 0.639, - "aggregatedEndToEndLatency99pct" : 0.726, - "aggregatedEndToEndLatency999pct" : 1.214, - "aggregatedEndToEndLatency9999pct" : 14.402, - "aggregatedEndToEndLatencyMax" : 93.175 -} \ No newline at end of file diff --git a/blog/results/rabbitmq/latency/mirrored-30k.json b/blog/results/rabbitmq/latency/mirrored-30k.json deleted file mode 100644 index 788b7e66..00000000 --- a/blog/results/rabbitmq/latency/mirrored-30k.json +++ /dev/null @@ -1,3589 +0,0 @@ -{ - "workload" : "100-partitions-10K-rate-4-producer", - "driver" : "RabbitMQ", - "publishRate" : [ 30990.857982909383, 30245.932872886453, 30245.326015685685, 30244.94088434048, 30241.979819945303, 30243.28246674103, 30244.082619932055, 30242.907059867666, 30243.82372503029, 30244.65195450975, 30243.71439512533, 30248.761166446868, 30238.749324850218, 30243.519647017856, 30243.46512226653, 30245.465091273752, 30241.785305874993, 30244.163556474698, 30242.069834447706, 30244.75710605764, 30244.238739225668, 30244.13127899011, 30242.233441467597, 30163.613057090013, 30317.595521099556, 30249.91848981935, 30245.79165733729, 30242.577140408048, 30243.4817805414, 30244.26220906743, 30242.787134781636, 30244.523070441657, 30243.016743305856, 30243.88975995305, 30245.593356095633, 30241.674073878603, 30243.053990482003, 30243.01520646127, 30243.43415897326, 30243.587802706068, 30244.62856020317, 30248.43725552259, 30238.11196465943, 30244.47322914175, 30243.577395182594, 30244.922629196884, 30243.388660781005, 30242.58855102584, 30244.05018779891, 30241.01533484408, 30245.70262903708, 30241.897202072538, 30244.19610883601, 30150.334161828192, 30338.8143358544, 30242.844826688874, 30245.19409496744, 30242.750725204503, 30244.370952094207, 30241.878015371836 ], - "consumeRate" : [ 30990.061839998547, 30245.63432257645, 30245.624578670155, 30244.045165529842, 30243.7712413413, 30243.381988871006, 30243.58500921677, 30243.006579452314, 30244.02276499268, 30243.45765452142, 30244.11249719089, 30248.06437845625, 30238.450757034556, 30244.116786445673, 30244.659418619576, 30243.972151588117, 30241.785305874993, 30244.36260260345, 30242.1693548797, 30244.75710605764, 30244.63684426301, 30243.335061263813, 30242.83059873191, 30163.216005489267, 30323.169011008824, 30245.240677633083, 30244.597304483974, 30243.572449857103, 30243.879899196854, 30242.86876698794, 30243.682901817487, 30243.52777228945, 30244.310621814988, 30243.690696629834, 30244.49849298772, 30242.072189700644, 30242.75541652241, 30244.508118561, 30243.23511174994, 30243.886383900874, 30243.03610380782, 30249.134061274992, 30238.01243661781, 30244.17464313594, 30244.77176278612, 30243.628711731315, 30243.98585264809, 30242.787610370273, 30243.453028070446, 30242.707228981468, 30243.81174392134, 30243.48959325818, 30242.50426502604, 30151.524756987354, 30338.615281861446, 30243.143411357178, 30244.099264326906, 30242.949784306154, 30243.972828284906, 30242.17658951231 ], - "backlog" : [ -10, -7, -10, -1, -19, -20, -15, -16, -18, -6, -10, -2, 0, -6, -18, -3, -3, -5, -6, -6, -10, -2, -8, -4, -60, -13, 0, -11, -15, -1, -10, 0, -13, -11, 0, -4, -1, -16, -14, -17, -1, -8, -7, -4, -16, -3, -9, -10, -5, -22, -3, -19, -2, -14, -12, -15, -3, -6, -2, -5 ], - "publishLatencyAvg" : [ 0.8674366875411997, 0.9112380217552957, 0.8531195569551526, 0.8552018974470353, 0.8688169535029122, 0.9037800033564667, 0.8497541856975505, 0.8564818962311649, 0.8479965250812789, 0.8307094222403569, 0.8395083143834061, 0.8534911773223289, 0.8929002468404423, 0.8681234052775154, 0.8437896640350675, 0.8157718866409551, 0.8657061222071935, 0.8442862746259424, 0.9187686910736322, 0.805299072431913, 0.8584287552362869, 0.8405400839160839, 0.871070251129606, 0.8378133212669683, 0.8586394559832974, 0.8523984706853949, 0.8397776399273379, 0.850095946448494, 0.8137274914191125, 0.8359453231443634, 0.8348235582555583, 0.8855811743875307, 0.8152436337907658, 0.8667868473188487, 0.8973941638748658, 0.8567864235195771, 0.8830617561017345, 0.8915571772232296, 0.8815564320008952, 0.8412479497946503, 0.8915584818607835, 0.8582877701866625, 0.8699078506942959, 0.8891715615291453, 0.848717852864909, 0.8540413452424833, 0.8389817874855606, 0.830941501299898, 0.853254324416829, 0.9408408313835441, 0.902822290881093, 0.8848088156409506, 0.8696410479170986, 0.8872825224252874, 0.9278082704546946, 0.8986853084717427, 0.8642326991868314, 0.8571499039056432, 0.846615878020365, 0.8450532899370118 ], - "publishLatency50pct" : [ 0.843, 0.821, 0.814, 0.831, 0.829, 0.838, 0.824, 0.797, 0.831, 0.8, 0.802, 0.827, 0.831, 0.814, 0.814, 0.798, 0.788, 0.803, 0.815, 0.759, 0.82, 0.816, 0.816, 0.801, 0.827, 0.802, 0.809, 0.809, 0.784, 0.801, 0.784, 0.828, 0.796, 0.816, 0.834, 0.806, 0.848, 0.812, 0.807, 0.82, 0.834, 0.811, 0.838, 0.853, 0.804, 0.818, 0.79, 0.777, 0.822, 0.865, 0.839, 0.823, 0.844, 0.813, 0.86, 0.852, 0.834, 0.832, 0.805, 0.806 ], - "publishLatency75pct" : [ 0.953, 0.939, 0.933, 0.947, 0.945, 0.951, 0.94, 0.92, 0.943, 0.92, 0.922, 0.941, 0.948, 0.935, 0.94, 0.912, 0.908, 0.918, 0.933, 0.867, 0.938, 0.929, 0.935, 0.919, 0.936, 0.92, 0.921, 0.924, 0.898, 0.919, 0.905, 0.937, 0.901, 0.932, 0.95, 0.923, 0.961, 0.927, 0.932, 0.937, 0.958, 0.934, 0.959, 0.963, 0.931, 0.937, 0.91, 0.902, 0.937, 0.98, 0.963, 0.949, 0.958, 0.936, 0.988, 0.972, 0.952, 0.951, 0.926, 0.927 ], - "publishLatency95pct" : [ 1.138, 1.164, 1.159, 1.142, 1.14, 1.166, 1.132, 1.145, 1.117, 1.127, 1.124, 1.143, 1.162, 1.156, 1.146, 1.101, 1.126, 1.129, 1.186, 1.088, 1.149, 1.118, 1.176, 1.135, 1.121, 1.135, 1.112, 1.127, 1.091, 1.129, 1.158, 1.119, 1.083, 1.123, 1.166, 1.156, 1.147, 1.124, 1.218, 1.131, 1.2, 1.195, 1.171, 1.148, 1.175, 1.136, 1.128, 1.153, 1.132, 1.198, 1.216, 1.173, 1.159, 1.178, 1.318, 1.169, 1.158, 1.16, 1.136, 1.148 ], - "publishLatency99pct" : [ 1.592, 4.029, 1.979, 1.588, 1.872, 2.824, 1.508, 1.928, 1.398, 1.573, 1.577, 1.758, 3.497, 2.322, 1.461, 1.305, 1.67, 1.672, 3.589, 1.619, 1.907, 1.446, 1.829, 1.638, 1.773, 1.855, 1.484, 1.603, 1.383, 1.849, 1.946, 1.924, 1.452, 1.807, 3.729, 2.244, 1.947, 2.007, 3.255, 1.424, 2.778, 2.149, 1.665, 1.71, 1.817, 1.773, 1.705, 1.816, 1.625, 4.323, 2.624, 2.727, 1.583, 2.066, 3.006, 1.803, 1.644, 1.651, 1.593, 1.878 ], - "publishLatency999pct" : [ 5.77, 9.721, 4.059, 5.519, 7.039, 10.067, 4.791, 8.429, 3.792, 4.584, 5.652, 3.677, 5.929, 7.827, 5.294, 1.837, 14.678, 6.288, 14.182, 7.483, 5.261, 5.023, 9.501, 5.418, 6.481, 7.912, 6.661, 7.306, 6.147, 3.99, 6.735, 8.75, 3.176, 8.745, 6.964, 6.122, 6.431, 13.88, 6.713, 4.263, 6.023, 5.286, 6.165, 8.719, 5.658, 5.276, 7.851, 7.52, 4.988, 9.203, 8.116, 7.309, 5.72, 9.819, 5.561, 9.344, 5.584, 3.34, 7.73, 4.365 ], - "publishLatency9999pct" : [ 8.979, 14.362, 7.305, 8.707, 11.976, 11.796, 9.903, 12.502, 6.606, 5.212, 9.306, 4.539, 9.381, 13.828, 8.876, 3.2, 24.639, 9.793, 15.517, 13.137, 9.331, 8.704, 13.389, 8.708, 12.312, 13.68, 8.82, 9.24, 8.994, 6.403, 9.369, 14.658, 10.13, 13.669, 10.057, 10.548, 10.029, 21.319, 9.065, 9.71, 8.555, 8.5, 10.277, 13.481, 9.665, 6.332, 10.263, 10.413, 7.645, 14.357, 11.266, 9.863, 8.903, 13.175, 10.719, 15.725, 8.811, 7.606, 12.18, 7.451 ], - "publishLatencyMax" : [ 10.26, 17.2, 12.409, 10.516, 15.661, 13.454, 12.507, 14.122, 8.7, 8.221, 10.681, 7.428, 14.951, 18.053, 12.289, 9.534, 27.572, 12.962, 16.522, 14.738, 11.521, 10.054, 14.687, 11.961, 15.993, 14.981, 12.796, 12.96, 12.245, 7.647, 13.541, 19.771, 14.673, 15.702, 12.141, 23.712, 14.106, 26.546, 12.666, 11.528, 11.287, 9.999, 12.839, 15.362, 12.283, 11.174, 10.994, 13.815, 14.95, 16.47, 14.736, 12.091, 14.468, 14.551, 16.714, 20.347, 10.108, 11.406, 16.302, 10.388 ], - "aggregatedPublishLatencyAvg" : 0.8627344246005088, - "aggregatedPublishLatency50pct" : 0.817, - "aggregatedPublishLatency75pct" : 0.936, - "aggregatedPublishLatency95pct" : 1.147, - "aggregatedPublishLatency99pct" : 1.878, - "aggregatedPublishLatency999pct" : 7.454, - "aggregatedPublishLatency9999pct" : 13.264, - "aggregatedPublishLatencyMax" : 27.572, - "aggregatedPublishLatencyQuantiles" : { - "5.48393836711348E-6" : 0.341, - "0.5120846807826896" : 0.475, - "1.0144518227788542" : 0.498, - "1.5202793298846673" : 0.514, - "2.041653802261247" : 0.527, - "2.515230267830066" : 0.537, - "3.0042275680872077" : 0.546, - "3.563260245230756" : 0.555, - "4.03563024435881" : 0.562, - "4.55533211553342" : 0.569, - "5.036706741460274" : 0.575, - "5.548127865700543" : 0.581, - "6.0007995582139255" : 0.586, - "6.57743019357754" : 0.592, - "7.085122239728173" : 0.597, - "7.507237427659998" : 0.601, - "8.056749987798238" : 0.606, - "8.52007697255892" : 0.61, - "9.002658064926539" : 0.614, - "9.501433227292246" : 0.618, - "10.016216005751554" : 0.622, - "10.542827639268728" : 0.626, - "11.083631705279991" : 0.63, - "11.505889475609361" : 0.633, - "12.078972002849454" : 0.637, - "12.519101928317248" : 0.64, - "13.125077117883288" : 0.644, - "13.585908910686934" : 0.647, - "14.058542138856609" : 0.65, - "14.536708660838702" : 0.653, - "15.026237903117455" : 0.656, - "15.523499498493836" : 0.659, - "16.03002894971064" : 0.662, - "16.54346267933164" : 0.665, - "17.063307132903795" : 0.668, - "17.59475560006076" : 0.671, - "18.138372926454355" : 0.674, - "18.505550019824437" : 0.676, - "19.066540462965044" : 0.679, - "19.63901427304639" : 0.682, - "20.019692822676305" : 0.684, - "20.599805758903038" : 0.687, - "21.182929377293313" : 0.69, - "21.574888388144384" : 0.692, - "22.169265048063977" : 0.695, - "22.568539632696776" : 0.697, - "23.178309707612858" : 0.7, - "23.589522826070862" : 0.702, - "24.001180143536605" : 0.704, - "24.62719912783444" : 0.707, - "25.044587160893816" : 0.709, - "25.679347542948836" : 0.712, - "26.103431464754454" : 0.714, - "26.528826047829813" : 0.716, - "27.17576625699819" : 0.719, - "27.611273222422508" : 0.721, - "28.047465680142714" : 0.723, - "28.706837977589338" : 0.726, - "29.147549200524047" : 0.728, - "29.594660179533175" : 0.73, - "30.039308870215468" : 0.732, - "30.71120099895421" : 0.735, - "31.16284171105458" : 0.737, - "31.620065072412665" : 0.739, - "32.07839070538254" : 0.741, - "32.54223318034973" : 0.743, - "33.006936633640564" : 0.745, - "33.703511968969686" : 0.748, - "34.172235149083605" : 0.75, - "34.6401631581343" : 0.752, - "35.10623211207854" : 0.754, - "35.573430757326406" : 0.756, - "36.04269136340031" : 0.758, - "36.5118697103987" : 0.76, - "37.22125004181503" : 0.763, - "37.695193931254444" : 0.765, - "38.16693876140865" : 0.767, - "38.64079490783419" : 0.769, - "39.11833626084243" : 0.771, - "39.59467663134828" : 0.773, - "40.06759502431304" : 0.775, - "40.542997641358106" : 0.777, - "41.01861413199949" : 0.779, - "41.729458674959844" : 0.782, - "42.20797616899743" : 0.784, - "42.685813654677496" : 0.786, - "43.16227467182742" : 0.788, - "43.64362187806244" : 0.79, - "44.120598385418866" : 0.792, - "44.6013259066184" : 0.794, - "45.07827499428299" : 0.796, - "45.55516924256391" : 0.798, - "46.03289704947664" : 0.8, - "46.50978581381919" : 0.802, - "47.2290756218649" : 0.805, - "47.70912861864528" : 0.807, - "48.190958411456606" : 0.809, - "48.67274981669936" : 0.811, - "49.1556270417388" : 0.813, - "49.63631617536977" : 0.815, - "50.11126910946873" : 0.817, - "50.3481313754211" : 0.818, - "50.58532267767549" : 0.819, - "50.82068234451527" : 0.82, - "51.05872914115493" : 0.821, - "51.29409977587144" : 0.822, - "51.53037526041852" : 0.823, - "51.76398555091919" : 0.824, - "52.230877095618496" : 0.826, - "52.4677996848929" : 0.827, - "52.70228740553231" : 0.828, - "52.9349434907571" : 0.829, - "53.16805474286635" : 0.83, - "53.40273440134861" : 0.831, - "53.63596630010195" : 0.832, - "53.86973562481526" : 0.833, - "54.103291075932255" : 0.834, - "54.33607329173949" : 0.835, - "54.570577464193995" : 0.836, - "54.80235611928005" : 0.837, - "55.034310260393845" : 0.838, - "55.265754395239505" : 0.839, - "55.72409099608611" : 0.841, - "55.952107669452325" : 0.842, - "56.18026692521608" : 0.843, - "56.4087826369737" : 0.844, - "56.63684318184685" : 0.845, - "56.86362048514209" : 0.846, - "57.090238754224686" : 0.847, - "57.31633056522404" : 0.848, - "57.542652701634815" : 0.849, - "57.76796579338604" : 0.85, - "58.22131201031858" : 0.852, - "58.44573670405433" : 0.853, - "58.67092914916148" : 0.854, - "58.89558965224702" : 0.855, - "59.119487887899524" : 0.856, - "59.34092931916357" : 0.857, - "59.564641100911594" : 0.858, - "59.78631834152542" : 0.859, - "60.00708524837031" : 0.86, - "60.44651322972712" : 0.862, - "60.66384170721582" : 0.863, - "60.881992775459594" : 0.864, - "61.100302877916015" : 0.865, - "61.31769167872676" : 0.866, - "61.53639114080725" : 0.867, - "61.754070590351446" : 0.868, - "62.190372726838994" : 0.87, - "62.40809056395177" : 0.871, - "62.62890134230359" : 0.872, - "62.844315925302176" : 0.873, - "63.061342786180695" : 0.874, - "63.279312884458356" : 0.875, - "63.71052592614122" : 0.877, - "63.92416919704723" : 0.878, - "64.13671019634144" : 0.879, - "64.34875764118262" : 0.88, - "64.56265865719189" : 0.881, - "64.77449222843674" : 0.882, - "65.1917157433451" : 0.884, - "65.40073605420763" : 0.885, - "65.60724472129803" : 0.886, - "65.81101690314323" : 0.887, - "66.01768460444627" : 0.888, - "66.42765286889494" : 0.89, - "66.6325657099205" : 0.891, - "66.83517529683188" : 0.892, - "67.03980297306235" : 0.893, - "67.44453956030878" : 0.895, - "67.64558074084717" : 0.896, - "67.84970937868623" : 0.897, - "68.05175960388416" : 0.898, - "68.2510239883916" : 0.899, - "68.64797338315674" : 0.901, - "68.8432673962864" : 0.902, - "69.03909335143764" : 0.903, - "69.42719715361663" : 0.905, - "69.620335978968" : 0.906, - "69.81233962907737" : 0.907, - "70.00451328127613" : 0.908, - "70.38465988888444" : 0.91, - "70.57421221854372" : 0.911, - "70.76414293995033" : 0.912, - "71.13864657497888" : 0.914, - "71.32887342905731" : 0.915, - "71.51566185377956" : 0.916, - "71.88474187376303" : 0.918, - "72.06777928464217" : 0.919, - "72.25282930090205" : 0.92, - "72.61689700121798" : 0.922, - "72.80041151473507" : 0.923, - "73.16015238767935" : 0.925, - "73.33852296700807" : 0.926, - "73.51565417626584" : 0.927, - "73.86721301316639" : 0.929, - "74.04222742221445" : 0.93, - "74.38994201831964" : 0.932, - "74.56559256421829" : 0.933, - "74.91247908563005" : 0.935, - "75.08627606036062" : 0.936, - "75.25913528163039" : 0.937, - "75.42941156792926" : 0.938, - "75.60065302738076" : 0.939, - "75.7712857696735" : 0.94, - "75.94118366422504" : 0.941, - "76.10928282699217" : 0.942, - "76.27698166225849" : 0.943, - "76.44181788169719" : 0.944, - "76.60769604942564" : 0.945, - "76.77274614246065" : 0.946, - "76.93712171107651" : 0.947, - "77.09633140975055" : 0.948, - "77.25778952315511" : 0.949, - "77.41723503117893" : 0.95, - "77.57602795053707" : 0.951, - "77.73376795372872" : 0.952, - "77.89018084383554" : 0.953, - "78.04714761171742" : 0.954, - "78.2035166303173" : 0.955, - "78.3591288654225" : 0.956, - "78.51450529117794" : 0.957, - "78.6696733272754" : 0.958, - "78.82151809672241" : 0.959, - "78.97460772017875" : 0.96, - "79.12493892263643" : 0.961, - "79.2774582165026" : 0.962, - "79.42937427714837" : 0.963, - "79.57832352713754" : 0.964, - "79.72744826315446" : 0.965, - "79.87551459906652" : 0.966, - "80.0234109328892" : 0.967, - "80.16921788619402" : 0.968, - "80.31495903223843" : 0.969, - "80.46041501348775" : 0.97, - "80.60429162048733" : 0.971, - "80.74839855289834" : 0.972, - "80.88913834715194" : 0.973, - "81.02940652270597" : 0.974, - "81.1691756598686" : 0.975, - "81.30805639901574" : 0.976, - "81.44439259076056" : 0.977, - "81.58194621682286" : 0.978, - "81.7176243359636" : 0.979, - "81.8523811534587" : 0.98, - "81.98781249537292" : 0.981, - "82.12380868293897" : 0.982, - "82.25815420505651" : 0.983, - "82.3911780980276" : 0.984, - "82.52428973401254" : 0.985, - "82.65592070663837" : 0.986, - "82.78623005011771" : 0.987, - "82.91757037401008" : 0.988, - "83.04664034741846" : 0.989, - "83.17444901500241" : 0.99, - "83.30181348357863" : 0.991, - "83.42810858417324" : 0.992, - "83.55374561216381" : 0.993, - "83.67896586083849" : 0.994, - "83.80307287002462" : 0.995, - "83.92724020253281" : 0.996, - "84.05045881370349" : 0.997, - "84.17364452124396" : 0.998, - "84.29720313659338" : 0.999, - "84.42013658296896" : 1.0, - "84.54185259502705" : 1.001, - "84.66444055328552" : 1.002, - "84.78499945434814" : 1.003, - "84.90317284222107" : 1.004, - "85.01992040611854" : 1.005, - "85.13691474724254" : 1.006, - "85.25329488726942" : 1.007, - "85.48141027152624" : 1.009, - "85.5929919654819" : 1.01, - "85.70564851135751" : 1.011, - "85.81667632753809" : 1.012, - "85.92665671149055" : 1.013, - "86.03690032448463" : 1.014, - "86.1445774543229" : 1.015, - "86.25262749197015" : 1.016, - "86.46671496188388" : 1.018, - "86.57434822021523" : 1.019, - "86.67929983268505" : 1.02, - "86.78494242138912" : 1.021, - "86.88999274474953" : 1.022, - "87.0953552687212" : 1.024, - "87.19946783862086" : 1.025, - "87.30147457618753" : 1.026, - "87.40215968460774" : 1.027, - "87.5027515660757" : 1.028, - "87.60283344127552" : 1.029, - "87.70201046664477" : 1.03, - "87.79992618618958" : 1.031, - "87.89729351189767" : 1.032, - "87.99289500945157" : 1.033, - "88.08736133176346" : 1.034, - "88.18122990479334" : 1.035, - "88.27428137100652" : 1.036, - "88.36714089937686" : 1.037, - "88.45983590959618" : 1.038, - "88.55108316008658" : 1.039, - "88.64203427790515" : 1.04, - "88.73161441113196" : 1.041, - "88.82099163863917" : 1.042, - "88.90942014480888" : 1.043, - "88.99689444570271" : 1.044, - "89.08539972700954" : 1.045, - "89.17356500413763" : 1.046, - "89.26007413187885" : 1.047, - "89.3458429279405" : 1.048, - "89.42987879947815" : 1.049, - "89.51298240149339" : 1.05, - "89.59752827929917" : 1.051, - "89.68028090925891" : 1.052, - "89.76298966771172" : 1.053, - "89.84445905609356" : 1.054, - "89.92544585789909" : 1.055, - "90.00423360041941" : 1.056, - "90.08312005383034" : 1.057, - "90.16189134453556" : 1.058, - "90.24016359684937" : 1.059, - "90.31452031716906" : 1.06, - "90.38862477632387" : 1.061, - "90.46267988003336" : 1.062, - "90.53550109761026" : 1.063, - "90.60516356668771" : 1.064, - "90.66340847608483" : 1.065, - "90.71769946591924" : 1.066, - "90.77501758973231" : 1.067, - "90.83434283498775" : 1.068, - "90.90550790317778" : 1.069, - "90.98345660312793" : 1.07, - "91.05689202180194" : 1.071, - "91.12064280531963" : 1.072, - "91.18727814041844" : 1.073, - "91.25977580563168" : 1.074, - "91.34107519192413" : 1.075, - "91.42362491616429" : 1.076, - "91.49991198278921" : 1.077, - "91.57039704262172" : 1.078, - "91.63766303063274" : 1.079, - "91.70559257518616" : 1.08, - "91.76907464572388" : 1.081, - "91.82628857470797" : 1.082, - "91.88039311063791" : 1.083, - "91.98542149824486" : 1.085, - "92.03825376047364" : 1.086, - "92.09392670277657" : 1.087, - "92.15224838731082" : 1.088, - "92.21088814027037" : 1.089, - "92.26919885692789" : 1.09, - "92.32927540173962" : 1.091, - "92.38952194864072" : 1.092, - "92.45118883557892" : 1.093, - "92.51277894737997" : 1.094, - "92.57427583222878" : 1.095, - "92.63690240838122" : 1.096, - "92.69943027364305" : 1.097, - "92.76155781140407" : 1.098, - "92.82343857193858" : 1.099, - "92.88547836668573" : 1.1, - "92.94621298410152" : 1.101, - "93.0057959744602" : 1.102, - "93.0639257211516" : 1.103, - "93.17739937384391" : 1.105, - "93.2328310228587" : 1.106, - "93.28693555878864" : 1.107, - "93.34164332793897" : 1.108, - "93.39536947212157" : 1.109, - "93.44757108143813" : 1.11, - "93.55189752493409" : 1.112, - "93.60343009376986" : 1.113, - "93.65507782531134" : 1.114, - "93.70522295774022" : 1.115, - "93.75464421030465" : 1.116, - "93.80362674779971" : 1.117, - "93.85198960025929" : 1.118, - "93.89973825162174" : 1.119, - "93.94613785414589" : 1.12, - "93.99275681420471" : 1.121, - "94.03804317724034" : 1.122, - "94.08252340133599" : 1.123, - "94.12623587406026" : 1.124, - "94.16995383072289" : 1.125, - "94.211856603786" : 1.126, - "94.25264065342222" : 1.127, - "94.29459826586901" : 1.128, - "94.33506424707994" : 1.129, - "94.37472957328927" : 1.13, - "94.41430715648472" : 1.131, - "94.45300730954145" : 1.132, - "94.49140584598798" : 1.133, - "94.52910243832352" : 1.134, - "94.56755581415372" : 1.135, - "94.60602564179902" : 1.136, - "94.64413352951209" : 1.137, - "94.68212625451945" : 1.138, - "94.71909896699053" : 1.139, - "94.75593458100244" : 1.14, - "94.79251793384944" : 1.141, - "94.82790030419406" : 1.142, - "94.86358429114887" : 1.143, - "94.89783148625149" : 1.144, - "94.93275868971163" : 1.145, - "94.96675910758775" : 1.146, - "95.00052371611406" : 1.147, - "95.03438703553098" : 1.148, - "95.06667646463654" : 1.149, - "95.09881782740621" : 1.15, - "95.13133758192319" : 1.151, - "95.16300732599326" : 1.152, - "95.19510481725598" : 1.153, - "95.22571067728283" : 1.154, - "95.25707332080437" : 1.155, - "95.28803563682509" : 1.156, - "95.31856472171481" : 1.157, - "95.34858928427475" : 1.158, - "95.37915127279467" : 1.159, - "95.40904970477217" : 1.16, - "95.43844361441991" : 1.161, - "95.49773595604513" : 1.163, - "95.52642792158187" : 1.164, - "95.55568473277043" : 1.165, - "95.58460702371858" : 1.166, - "95.61247091456188" : 1.167, - "95.63997286547296" : 1.168, - "95.66741997700036" : 1.169, - "95.6947464418837" : 1.17, - "95.72166709532785" : 1.171, - "95.77618292663533" : 1.173, - "95.80326261429214" : 1.174, - "95.82960745420775" : 1.175, - "95.85577132415725" : 1.176, - "95.88164454537328" : 1.177, - "95.90731486086975" : 1.178, - "95.95778354566228" : 1.18, - "95.98243933256083" : 1.181, - "96.00764899723445" : 1.182, - "96.0324034950236" : 1.183, - "96.07990536915953" : 1.185, - "96.10396340677606" : 1.186, - "96.12699594791793" : 1.187, - "96.17334071105842" : 1.189, - "96.19600034439134" : 1.19, - "96.2394770077658" : 1.192, - "96.26147856849467" : 1.193, - "96.28280560480437" : 1.194, - "96.32499902660093" : 1.196, - "96.34524572705233" : 1.197, - "96.38589267822937" : 1.199, - "96.40646293104442" : 1.2, - "96.4460514821166" : 1.202, - "96.48436227554926" : 1.204, - "96.50325992716233" : 1.205, - "96.54023812357178" : 1.207, - "96.57600985354046" : 1.209, - "96.61056963313001" : 1.211, - "96.62792629806192" : 1.212, - "96.6609121873401" : 1.214, - "96.693146777062" : 1.216, - "96.72561717613368" : 1.218, - "96.7574130507862" : 1.22, - "96.78822730047102" : 1.222, - "96.81787347128363" : 1.224, - "96.84641737048446" : 1.226, - "96.88733303464149" : 1.229, - "96.90047803490747" : 1.23, - "96.91339270976201" : 1.231, - "96.92601673588311" : 1.232, - "96.93816365936627" : 1.233, - "96.96286331777175" : 1.235, - "96.9746592691994" : 1.236, - "96.98641134912013" : 1.237, - "97.0085445243698" : 1.239, - "97.01997305192687" : 1.24, - "97.04157428515492" : 1.242, - "97.05194441260714" : 1.243, - "97.07247627785361" : 1.245, - "97.08263801564787" : 1.246, - "97.10276406945518" : 1.248, - "97.11255289944047" : 1.249, - "97.13096796447724" : 1.251, - "97.14897173413648" : 1.253, - "97.15802571638058" : 1.254, - "97.17574980518309" : 1.256, - "97.19327647220439" : 1.258, - "97.21043571535509" : 1.26, - "97.21891388407064" : 1.261, - "97.23529989191158" : 1.263, - "97.25170235156762" : 1.265, - "97.2680115842714" : 1.267, - "97.28363532467931" : 1.269, - "97.29950584231374" : 1.271, - "97.31449344587107" : 1.273, - "97.32926717583206" : 1.275, - "97.34429865089632" : 1.277, - "97.35962077469404" : 1.279, - "97.38178136963555" : 1.282, - "97.39698284678919" : 1.284, - "97.41248594055301" : 1.286, - "97.42840032969437" : 1.288, - "97.44446826911002" : 1.29, - "97.46033330280608" : 1.292, - "97.47572123386419" : 1.294, - "97.49176175358801" : 1.296, - "97.50723194372164" : 1.298, - "97.52251567995077" : 1.3, - "97.53765134984401" : 1.302, - "97.55223862590053" : 1.304, - "97.56654622110032" : 1.306, - "97.58062897482708" : 1.308, - "97.59513947574646" : 1.31, - "97.61598940941822" : 1.313, - "97.6300995828368" : 1.315, - "97.64316780796564" : 1.317, - "97.66212578290074" : 1.32, - "97.6749581986798" : 1.322, - "97.69308261498311" : 1.325, - "97.70508147213035" : 1.327, - "97.7224984603843" : 1.33, - "97.73889543610197" : 1.333, - "97.7551827330523" : 1.336, - "97.76568447502532" : 1.338, - "97.78624924390199" : 1.342, - "97.8006226463622" : 1.345, - "97.8148808861167" : 1.348, - "97.82898557559692" : 1.351, - "97.84664385713901" : 1.355, - "97.85964627500745" : 1.358, - "97.87631744764347" : 1.362, - "97.89325184932112" : 1.366, - "97.9093801120588" : 1.37, - "97.92514643486425" : 1.374, - "97.94110469551255" : 1.378, - "97.9567887592425" : 1.382, - "97.9721108830402" : 1.386, - "97.98743849077628" : 1.39, - "98.00278803426583" : 1.394, - "98.01834048347497" : 1.398, - "98.03379970573187" : 1.402, - "98.0493357031259" : 1.406, - "98.0644768569575" : 1.41, - "98.07991962739929" : 1.414, - "98.09529659058067" : 1.418, - "98.11081065222125" : 1.422, - "98.12560083399735" : 1.426, - "98.14408719023288" : 1.431, - "98.15889382382409" : 1.435, - "98.17430369063568" : 1.439, - "98.18876483610975" : 1.443, - "98.20343985518015" : 1.447, - "98.22178362901815" : 1.452, - "98.23646413202691" : 1.456, - "98.25103495626833" : 1.46, - "98.26851226784433" : 1.465, - "98.28245243917353" : 1.469, - "98.29918941906996" : 1.474, - "98.31271281108326" : 1.478, - "98.32942237128785" : 1.483, - "98.34551224645696" : 1.488, - "98.36122372987874" : 1.493, - "98.3766390806287" : 1.498, - "98.39177475052193" : 1.503, - "98.4064717053458" : 1.508, - "98.424146438703" : 1.514, - "98.4387721023281" : 1.519, - "98.44709672076938" : 1.522, - "98.45543230708739" : 1.525, - "98.4633511140895" : 1.528, - "98.46877472913458" : 1.53, - "98.47675934339709" : 1.533, - "98.48442040529595" : 1.536, - "98.49456569127511" : 1.54, - "98.50215546197519" : 1.543, - "98.50958619846263" : 1.546, - "98.51724177642312" : 1.549, - "98.52494122589054" : 1.552, - "98.53224034785718" : 1.555, - "98.53929269259729" : 1.558, - "98.54822602819732" : 1.562, - "98.55497675632724" : 1.565, - "98.56376750952971" : 1.569, - "98.57031533194005" : 1.572, - "98.57938576599925" : 1.576, - "98.58788587046828" : 1.58, - "98.59434046592636" : 1.583, - "98.60303799217661" : 1.587, - "98.61101712250077" : 1.591, - "98.61888657405757" : 1.595, - "98.6268876401352" : 1.599, - "98.63442805538998" : 1.603, - "98.64207266547373" : 1.607, - "98.64952533771464" : 1.611, - "98.65686833118819" : 1.615, - "98.6655713413768" : 1.62, - "98.67240432858223" : 1.624, - "98.68110185483248" : 1.629, - "98.68782516327056" : 1.633, - "98.69643494650693" : 1.638, - "98.7046608540576" : 1.643, - "98.71119770859119" : 1.647, - "98.71933038918962" : 1.652, - "98.72752339311009" : 1.657, - "98.73530510165303" : 1.662, - "98.74298809930535" : 1.667, - "98.75070948452624" : 1.672, - "98.75840345005531" : 1.677, - "98.76611935133784" : 1.682, - "98.77493752423216" : 1.688, - "98.78212148349307" : 1.693, - "98.78973318994663" : 1.698, - "98.79688972951571" : 1.703, - "98.80554886819738" : 1.709, - "98.81380219543989" : 1.715, - "98.82073937747428" : 1.72, - "98.82847721451029" : 1.726, - "98.83625343911484" : 1.732, - "98.84420514974717" : 1.738, - "98.85212395674928" : 1.744, - "98.86005373162813" : 1.75, - "98.86759963082127" : 1.756, - "98.87612715498213" : 1.763, - "98.88333853393489" : 1.769, - "98.89161928086922" : 1.776, - "98.89893485465096" : 1.782, - "98.90723753733876" : 1.789, - "98.91409794423602" : 1.795, - "98.92204417092996" : 1.802, - "98.93004523700759" : 1.809, - "98.93764049164604" : 1.816, - "98.94617898368364" : 1.824, - "98.95353842897231" : 1.831, - "98.96154497898829" : 1.839, - "98.96887700458512" : 1.846, - "98.97712484788926" : 1.854, - "98.98498333156934" : 1.862, - "98.99233729291963" : 1.87, - "99.00007512995563" : 1.878, - "99.00855329867119" : 1.887, - "99.01587984032965" : 1.895, - "99.02382606702359" : 1.904, - "99.03192036005346" : 1.913, - "99.03951013075354" : 1.922, - "99.04764281135198" : 1.932, - "99.05521064629859" : 1.941, - "99.06272364186154" : 1.95, - "99.07057664160324" : 1.96, - "99.07830351076251" : 1.97, - "99.08660070951194" : 1.981, - "99.09405886569122" : 1.991, - "99.10181863848068" : 2.002, - "99.1098197045583" : 2.013, - "99.11744786282696" : 2.024, - "99.12557505948702" : 2.037, - "99.1331319265569" : 2.049, - "99.14085879571617" : 2.061, - "99.1487063115195" : 2.074, - "99.1563125340347" : 2.087, - "99.1646152167225" : 2.101, - "99.17229273043647" : 2.115, - "99.17995927627369" : 2.13, - "99.18772453300151" : 2.145, - "99.19535269127017" : 2.161, - "99.20346343611513" : 2.175, - "99.21138224311724" : 2.191, - "99.21896652987897" : 2.208, - "99.22295335307186" : 2.218, - "99.22659468814761" : 2.227, - "99.23062538284745" : 2.236, - "99.23456285059504" : 2.245, - "99.23870870800057" : 2.255, - "99.24248714153552" : 2.264, - "99.24613944448801" : 2.273, - "99.25026885007844" : 2.285, - "99.25405276755176" : 2.296, - "99.25803410680628" : 2.309, - "99.26183447609469" : 2.323, - "99.26582678322595" : 2.338, - "99.26979167066537" : 2.352, - "99.27356462026195" : 2.364, - "99.27755144345484" : 2.377, - "99.2812914894212" : 2.389, - "99.2852454089839" : 2.403, - "99.28909513371761" : 2.417, - "99.29313679629418" : 2.432, - "99.29696458527442" : 2.447, - "99.30105560329629" : 2.463, - "99.30500952285898" : 2.478, - "99.30871118125678" : 2.491, - "99.31255542205213" : 2.505, - "99.31659708462868" : 2.519, - "99.32060584357505" : 2.533, - "99.32425266258917" : 2.545, - "99.32817916246003" : 2.558, - "99.33214404989945" : 2.571, - "99.33606506583193" : 2.584, - "99.34005188902483" : 2.598, - "99.34386322618997" : 2.611, - "99.34793779239673" : 2.625, - "99.35171074199332" : 2.639, - "99.35554401491193" : 2.652, - "99.35947051478279" : 2.667, - "99.3634847576675" : 2.682, - "99.36728512695592" : 2.696, - "99.37133227347084" : 2.711, - "99.37510522306742" : 2.724, - "99.37892204417093" : 2.738, - "99.38287596373362" : 2.751, - "99.3868134314812" : 2.766, - "99.39064670439981" : 2.78, - "99.39472675454495" : 2.795, - "99.398521639895" : 2.808, - "99.40251943096462" : 2.821, - "99.40649528628077" : 2.836, - "99.41031210738429" : 2.85, - "99.41427699482371" : 2.865, - "99.41797865322151" : 2.879, - "99.421899669154" : 2.893, - "99.42594133173056" : 2.909, - "99.4297855725259" : 2.924, - "99.43361336150615" : 2.937, - "99.43752889350027" : 2.952, - "99.44164733121397" : 2.968, - "99.44534898961177" : 2.983, - "99.44922613403733" : 2.998, - "99.45326779661389" : 3.014, - "99.45711203740923" : 3.028, - "99.46113176423233" : 3.043, - "99.4648553583836" : 3.058, - "99.46896831215894" : 3.075, - "99.47288384415305" : 3.091, - "99.47661840618106" : 3.106, - "99.48057780968212" : 3.122, - "99.48447140592276" : 3.137, - "99.48839242185525" : 3.154, - "99.49223117871223" : 3.17, - "99.49609735526104" : 3.186, - "99.50014450177598" : 3.206, - "99.50392293531091" : 3.222, - "99.50793717819565" : 3.238, - "99.51179238686773" : 3.255, - "99.51582308156755" : 3.275, - "99.51969474205474" : 3.295, - "99.5235005952815" : 3.313, - "99.5273887075838" : 3.332, - "99.53138101471505" : 3.354, - "99.5351759000651" : 3.38, - "99.53906401236738" : 3.409, - "99.54303986768353" : 3.434, - "99.54698281936949" : 3.461, - "99.55079415653464" : 3.49, - "99.55471517246713" : 3.521, - "99.55870199566002" : 3.549, - "99.5625736561472" : 3.575, - "99.56646725238784" : 3.6, - "99.5703279449983" : 3.624, - "99.57434218788302" : 3.649, - "99.57820836443183" : 3.673, - "99.58214583217942" : 3.696, - "99.58611620355721" : 3.721, - "99.58998786404439" : 3.746, - "99.59389791210015" : 3.77, - "99.59768182957346" : 3.795, - "99.60159736156757" : 3.821, - "99.60556773294536" : 3.847, - "99.6093955219256" : 3.87, - "99.61146296669001" : 3.884, - "99.6133823451185" : 3.896, - "99.61537849868412" : 3.907, - "99.61733078074282" : 3.92, - "99.619200803726" : 3.933, - "99.62114211790797" : 3.945, - "99.62319311085727" : 3.958, - "99.62510700534739" : 3.971, - "99.62709219103628" : 3.984, - "99.62900608552641" : 3.997, - "99.63089804426306" : 4.011, - "99.63296548902746" : 4.024, - "99.63491777108615" : 4.036, - "99.63684811739138" : 4.05, - "99.6387620118815" : 4.063, - "99.6406484866798" : 4.075, - "99.64269947962909" : 4.089, - "99.64456950261227" : 4.102, - "99.6465163007326" : 4.115, - "99.6484850346064" : 4.129, - "99.65045925241856" : 4.143, - "99.65237314690867" : 4.156, - "99.65431446109064" : 4.17, - "99.65632706647136" : 4.185, - "99.65822999308476" : 4.197, - "99.66026453421895" : 4.211, - "99.66212907326377" : 4.224, - "99.6641087750143" : 4.238, - "99.6661104125183" : 4.253, - "99.66804624276189" : 4.268, - "99.67002594451242" : 4.282, - "99.67195080687927" : 4.297, - "99.6738811531845" : 4.31, - "99.67582795130483" : 4.326, - "99.67776926548677" : 4.34, - "99.67969412785364" : 4.357, - "99.6817177011111" : 4.373, - "99.68364256347796" : 4.388, - "99.68558387765992" : 4.405, - "99.68760745091738" : 4.423, - "99.68951586146913" : 4.444, - "99.69144620777436" : 4.467, - "99.69344784527836" : 4.488, - "99.6953562558301" : 4.506, - "99.69730305395044" : 4.525, - "99.6992608199475" : 4.546, - "99.70124600563639" : 4.57, - "99.70314344831141" : 4.593, - "99.7051121821852" : 4.615, - "99.70706994818227" : 4.635, - "99.7090002944875" : 4.654, - "99.71099096411476" : 4.675, - "99.7129158264816" : 4.697, - "99.71499423912275" : 4.717, - "99.71684232635246" : 4.733, - "99.71875622084258" : 4.751, - "99.72076882622332" : 4.769, - "99.72278143160405" : 4.787, - "99.72461855095703" : 4.804, - "99.7265927687692" : 4.823, - "99.72857795445809" : 4.842, - "99.73055217227025" : 4.86, - "99.7325099382673" : 4.879, - "99.73441834881906" : 4.896, - "99.73644192207652" : 4.914, - "99.73839968807359" : 4.929, - "99.74037390588575" : 4.946, - "99.74220554130036" : 4.962, - "99.7441523394207" : 4.977, - "99.74619236449325" : 4.995, - "99.74807883929154" : 5.011, - "99.7500037016584" : 5.028, - "99.7519559837171" : 5.045, - "99.75401246060476" : 5.064, - "99.7558715157112" : 5.081, - "99.757840249585" : 5.099, - "99.75980349952043" : 5.116, - "99.76181062096279" : 5.135, - "99.76368612788434" : 5.151, - "99.76566582963487" : 5.168, - "99.76761811169357" : 5.185, - "99.7695649098139" : 5.202, - "99.77156654731789" : 5.221, - "99.7734639899929" : 5.237, - "99.77548207931201" : 5.257, - "99.77742339349396" : 5.276, - "99.77931535223063" : 5.295, - "99.78136086124155" : 5.316, - "99.78320894847127" : 5.335, - "99.78518316628343" : 5.354, - "99.78711351258866" : 5.374, - "99.78912063403102" : 5.396, - "99.79103452852114" : 5.419, - "99.79301423027167" : 5.44, - "99.7949281247618" : 5.461, - "99.79688040682048" : 5.485, - "99.79888204432449" : 5.513, - "99.8008123906297" : 5.543, - "99.80277564056513" : 5.573, - "99.80468953505526" : 5.606, - "99.80569309577643" : 5.623, - "99.80665278499067" : 5.639, - "99.80764537783513" : 5.656, - "99.80860506704937" : 5.674, - "99.80960862777056" : 5.692, - "99.81059025273827" : 5.709, - "99.81156639376762" : 5.723, - "99.81255898661206" : 5.739, - "99.81352415976467" : 5.756, - "99.81452223654749" : 5.771, - "99.81544353819316" : 5.786, - "99.8164361310376" : 5.8, - "99.81742872388206" : 5.813, - "99.81836099340447" : 5.828, - "99.81933713443381" : 5.844, - "99.82036263090846" : 5.86, - "99.8213387719378" : 5.876, - "99.82230394509043" : 5.891, - "99.8233075058116" : 5.908, - "99.82427816290259" : 5.923, - "99.82526527180866" : 5.937, - "99.82624141283802" : 5.955, - "99.82719013417552" : 5.973, - "99.8281278876363" : 5.99, - "99.82910402866564" : 6.005, - "99.8301295251403" : 6.021, - "99.8310782464778" : 6.037, - "99.83205987144552" : 6.052, - "99.83301956065976" : 6.068, - "99.83400666956584" : 6.083, - "99.83502119816376" : 6.1, - "99.83597540343963" : 6.118, - "99.83691864083877" : 6.133, - "99.8379331694367" : 6.151, - "99.8388983425893" : 6.168, - "99.83986899968029" : 6.186, - "99.84086159252473" : 6.202, - "99.84185966930755" : 6.216, - "99.8428029067067" : 6.23, - "99.8437680798593" : 6.247, - "99.84478809239559" : 6.263, - "99.84575874948656" : 6.278, - "99.84670747082407" : 6.293, - "99.84772199942199" : 6.31, - "99.84868168863623" : 6.325, - "99.84964686178886" : 6.341, - "99.85060106706473" : 6.358, - "99.85158269203244" : 6.373, - "99.85256431700016" : 6.389, - "99.85356239378297" : 6.406, - "99.85453305087395" : 6.421, - "99.85548177221146" : 6.436, - "99.85644694536407" : 6.454, - "99.85745050608526" : 6.475, - "99.8584266471146" : 6.493, - "99.8593753684521" : 6.511, - "99.86038989705003" : 6.532, - "99.86136603807937" : 6.558, - "99.86236411486219" : 6.584, - "99.8633128361997" : 6.608, - "99.8642615575372" : 6.634, - "99.86524318250493" : 6.659, - "99.8662467432261" : 6.686, - "99.86720643244034" : 6.715, - "99.86819354134643" : 6.742, - "99.86914226268394" : 6.769, - "99.87013485552839" : 6.794, - "99.87113841624956" : 6.816, - "99.87207616971034" : 6.836, - "99.87309069830826" : 6.862, - "99.87402845176904" : 6.886, - "99.87500459279838" : 6.912, - "99.8760520250265" : 6.936, - "99.87695687485707" : 6.954, - "99.8779549516399" : 6.978, - "99.87893109266923" : 7.0, - "99.87991271763696" : 7.023, - "99.88089982654303" : 7.046, - "99.88186499969564" : 7.069, - "99.88282468890989" : 7.091, - "99.8838063138776" : 7.116, - "99.88478245490694" : 7.138, - "99.8857914995665" : 7.159, - "99.88672925302727" : 7.181, - "99.88773829768682" : 7.201, - "99.88873089053126" : 7.223, - "99.88965219217694" : 7.241, - "99.8906283332063" : 7.26, - "99.8916428618042" : 7.28, - "99.89260255101846" : 7.3, - "99.89356772417106" : 7.32, - "99.8945767688306" : 7.342, - "99.89552549016813" : 7.362, - "99.89649066332073" : 7.381, - "99.89751615979539" : 7.401, - "99.89848681688636" : 7.421, - "99.8994300542855" : 7.442, - "99.90039522743812" : 7.463, - "99.90139330422093" : 7.483, - "99.90240783281885" : 7.503, - "99.90288493545678" : 7.515, - "99.903351070218" : 7.527, - "99.90385559254777" : 7.54, - "99.90432721124733" : 7.552, - "99.90479334600855" : 7.563, - "99.90533625590689" : 7.577, - "99.90579690672972" : 7.589, - "99.9062685254293" : 7.6, - "99.90674014412888" : 7.612, - "99.90724466645864" : 7.628, - "99.90771628515822" : 7.642, - "99.90820983961126" : 7.66, - "99.90869791012592" : 7.678, - "99.90920791639407" : 7.694, - "99.90967405115528" : 7.707, - "99.91018405742342" : 7.722, - "99.91068309581482" : 7.736, - "99.91117665026786" : 7.751, - "99.91164826896744" : 7.768, - "99.912119887667" : 7.783, - "99.91262440999678" : 7.799, - "99.91309602869636" : 7.814, - "99.9136224867796" : 7.827, - "99.91408313760243" : 7.841, - "99.91457669205548" : 7.857, - "99.91504831075504" : 7.872, - "99.91554186520808" : 7.886, - "99.9160244517844" : 7.9, - "99.91650703836069" : 7.915, - "99.91701156069047" : 7.93, - "99.91748317939005" : 7.944, - "99.91798221778146" : 7.957, - "99.91845932041939" : 7.97, - "99.91894739093406" : 7.985, - "99.91944642932548" : 8.001, - "99.91992901590177" : 8.015, - "99.92043353823155" : 8.028, - "99.9209270926846" : 8.041, - "99.92140967926089" : 8.055, - "99.92188678189883" : 8.068, - "99.92238582029024" : 8.085, - "99.92285195505144" : 8.099, - "99.92334002556612" : 8.113, - "99.92385551577263" : 8.127, - "99.92432165053384" : 8.139, - "99.92483714074034" : 8.154, - "99.92532521125501" : 8.167, - "99.92580231389296" : 8.181, - "99.92630135228436" : 8.197, - "99.92676748704557" : 8.208, - "99.92725007362188" : 8.22, - "99.92773814413654" : 8.233, - "99.92824266646632" : 8.245, - "99.9287142851659" : 8.257, - "99.92921880749567" : 8.27, - "99.92969042619524" : 8.285, - "99.93020043246338" : 8.299, - "99.93068850297806" : 8.312, - "99.93119302530782" : 8.326, - "99.9316646440074" : 8.338, - "99.93214174664534" : 8.353, - "99.93262433322164" : 8.366, - "99.93311788767468" : 8.385, - "99.93359499031263" : 8.402, - "99.93409402870402" : 8.418, - "99.93458758315707" : 8.432, - "99.93507565367175" : 8.449, - "99.93556920812479" : 8.463, - "99.93605179470109" : 8.481, - "99.93653986521576" : 8.498, - "99.93702793573044" : 8.517, - "99.93754342593695" : 8.536, - "99.93800407675978" : 8.55, - "99.93850311515119" : 8.565, - "99.93901312141934" : 8.581, - "99.93947925618053" : 8.595, - "99.93995635881848" : 8.609, - "99.94045539720989" : 8.625, - "99.94092153197109" : 8.639, - "99.94140960248576" : 8.658, - "99.9419031569388" : 8.678, - "99.9424186471453" : 8.696, - "99.94287929796815" : 8.721, - "99.94337833635956" : 8.744, - "99.94384995505912" : 8.766, - "99.9443380255738" : 8.786, - "99.94483158002684" : 8.806, - "99.9453196505415" : 8.831, - "99.94581868893292" : 8.862, - "99.94631224338596" : 8.887, - "99.94680031390064" : 8.912, - "99.94728290047694" : 8.93, - "99.94777645492998" : 8.949, - "99.94824258969118" : 8.965, - "99.94874711202095" : 8.986, - "99.9492242146589" : 9.003, - "99.94972873698867" : 9.021, - "99.95021132356497" : 9.04, - "99.95068842620292" : 9.065, - "99.95120391640943" : 9.082, - "99.95141779000573" : 9.091, - "99.95167553510899" : 9.098, - "99.95191134445878" : 9.106, - "99.95216908956203" : 9.119, - "99.95239393103509" : 9.131, - "99.95264070826161" : 9.141, - "99.95290393730323" : 9.152, - "99.95313974665302" : 9.161, - "99.9533755560028" : 9.171, - "99.95364426898279" : 9.183, - "99.95388007833257" : 9.192, - "99.95411588768236" : 9.203, - "99.95435718097052" : 9.214, - "99.9546258939505" : 9.225, - "99.9548617033003" : 9.234, - "99.9550920287117" : 9.245, - "99.95532235412313" : 9.257, - "99.95557461528801" : 9.266, - "99.955843328268" : 9.277, - "99.95605720186433" : 9.288, - "99.95631494696758" : 9.304, - "99.95656172419409" : 9.318, - "99.95679753354388" : 9.331, - "99.95703882683203" : 9.343, - "99.95728012012019" : 9.357, - "99.95753786522344" : 9.369, - "99.9577791585116" : 9.376, - "99.95803141967649" : 9.388, - "99.95826722902626" : 9.397, - "99.95850852231442" : 9.41, - "99.9587443316642" : 9.42, - "99.95898562495236" : 9.431, - "99.95923240217888" : 9.442, - "99.95949014728214" : 9.458, - "99.95972595663191" : 9.468, - "99.9599617659817" : 9.482, - "99.96021402714659" : 9.497, - "99.96044983649638" : 9.511, - "99.96070209766127" : 9.525, - "99.96093790701106" : 9.537, - "99.9611956521143" : 9.552, - "99.96144242934082" : 9.566, - "99.96167823869061" : 9.58, - "99.96192501591713" : 9.593, - "99.96216082526692" : 9.607, - "99.96241857037018" : 9.621, - "99.96265986365833" : 9.632, - "99.96290664088484" : 9.647, - "99.963147934173" : 9.664, - "99.96340567927625" : 9.68, - "99.96362503681094" : 9.696, - "99.9638827819142" : 9.715, - "99.96411859126398" : 9.73, - "99.96435988455212" : 9.74, - "99.96461214571701" : 9.754, - "99.9648479550668" : 9.775, - "99.96509473229332" : 9.794, - "99.96534150951985" : 9.807, - "99.96558828674637" : 9.825, - "99.96582958003452" : 9.846, - "99.9660653893843" : 9.866, - "99.96634507024102" : 9.893, - "99.96655345989898" : 9.915, - "99.96680572106386" : 9.939, - "99.96704153041365" : 9.96, - "99.96728830764017" : 9.976, - "99.96752960092832" : 9.995, - "99.96778734603157" : 10.019, - "99.96802863931973" : 10.042, - "99.96828090048461" : 10.061, - "99.9685167098344" : 10.076, - "99.96876348706093" : 10.1, - "99.96901026428745" : 10.118, - "99.96924607363722" : 10.14, - "99.96949285086374" : 10.157, - "99.9697341441519" : 10.178, - "99.96997543744006" : 10.196, - "99.97022221466658" : 10.219, - "99.9704689918931" : 10.243, - "99.97070480124287" : 10.261, - "99.9709680302845" : 10.292, - "99.97119835569592" : 10.307, - "99.97143964898407" : 10.326, - "99.97168094227223" : 10.348, - "99.97192771949875" : 10.374, - "99.97216901278689" : 10.391, - "99.97243224182851" : 10.418, - "99.9726680511783" : 10.437, - "99.97290386052809" : 10.461, - "99.97314515381625" : 10.493, - "99.97339193104277" : 10.519, - "99.97363322433092" : 10.547, - "99.97388000155743" : 10.57, - "99.97412129484559" : 10.602, - "99.97437355601048" : 10.625, - "99.97461484929863" : 10.649, - "99.97485614258679" : 10.673, - "99.97511388769004" : 10.702, - "99.97534421310145" : 10.728, - "99.97559647426634" : 10.763, - "99.97572260484878" : 10.775, - "99.97583228361613" : 10.788, - "99.9759529302602" : 10.806, - "99.97609002871938" : 10.825, - "99.97619970748673" : 10.843, - "99.9763203541308" : 10.87, - "99.97644648471325" : 10.888, - "99.97656713135733" : 10.905, - "99.9766877780014" : 10.929, - "99.97680842464548" : 10.944, - "99.9769400391663" : 10.963, - "99.97706068581036" : 10.976, - "99.9771868163928" : 10.994, - "99.97729649516015" : 11.011, - "99.97742810968096" : 11.025, - "99.97754327238667" : 11.041, - "99.97766940296911" : 11.059, - "99.97779004961319" : 11.072, - "99.97791069625727" : 11.087, - "99.97803134290135" : 11.104, - "99.97815198954542" : 11.123, - "99.9782726361895" : 11.137, - "99.97839876677195" : 11.15, - "99.97851941341602" : 11.163, - "99.97864006006009" : 11.174, - "99.97876070670416" : 11.187, - "99.97888683728661" : 11.199, - "99.97902393574579" : 11.208, - "99.97912813057476" : 11.218, - "99.97924877721884" : 11.234, - "99.97937490780129" : 11.248, - "99.97950103838373" : 11.265, - "99.97962168502781" : 11.277, - "99.97974233167189" : 11.293, - "99.97986846225433" : 11.308, - "99.97999459283677" : 11.323, - "99.98011523948085" : 11.337, - "99.98022491824818" : 11.351, - "99.98036750064573" : 11.367, - "99.98048266335144" : 11.383, - "99.98059782605715" : 11.395, - "99.98071847270123" : 11.408, - "99.9808391193453" : 11.429, - "99.98096524992775" : 11.448, - "99.98110234838693" : 11.459, - "99.9812065432159" : 11.471, - "99.98132718985998" : 11.485, - "99.98144783650406" : 11.499, - "99.98156848314814" : 11.512, - "99.98169461373058" : 11.527, - "99.98181526037465" : 11.544, - "99.98193590701872" : 11.561, - "99.98206203760117" : 11.575, - "99.98218268424525" : 11.593, - "99.98230881482769" : 11.607, - "99.9824239775334" : 11.627, - "99.98254462417748" : 11.642, - "99.98267075475992" : 11.66, - "99.982791401404" : 11.676, - "99.98291204804808" : 11.693, - "99.98303269469216" : 11.722, - "99.9831588252746" : 11.738, - "99.98327947191868" : 11.75, - "99.98340011856274" : 11.771, - "99.98352076520682" : 11.79, - "99.98365237972763" : 11.807, - "99.98376754243334" : 11.825, - "99.98388818907742" : 11.851, - "99.98401431965986" : 11.872, - "99.98413496630394" : 11.893, - "99.98427206476312" : 11.926, - "99.9843762595921" : 11.948, - "99.98450239017454" : 11.977, - "99.98462852075698" : 12.004, - "99.9847436834627" : 12.028, - "99.98486433010677" : 12.052, - "99.9849904606892" : 12.077, - "99.98511659127165" : 12.092, - "99.98523175397736" : 12.123, - "99.9853578845598" : 12.158, - "99.98547853120388" : 12.176, - "99.98559917784796" : 12.21, - "99.98573079236877" : 12.232, - "99.98584047113611" : 12.254, - "99.98596660171856" : 12.291, - "99.986092732301" : 12.333, - "99.98620789500671" : 12.363, - "99.98632854165079" : 12.399, - "99.98646564010997" : 12.416, - "99.98658080281567" : 12.436, - "99.98669596552138" : 12.463, - "99.98681661216546" : 12.488, - "99.98694822668627" : 12.511, - "99.98706887333034" : 12.529, - "99.98718403603606" : 12.553, - "99.9873101666185" : 12.588, - "99.98743081326258" : 12.63, - "99.98755145990665" : 12.662, - "99.98767210655073" : 12.685, - "99.98780372107154" : 12.721, - "99.98785856045521" : 12.744, - "99.98792436771562" : 12.762, - "99.98799565891439" : 12.781, - "99.98803953042133" : 12.795, - "99.98810533768173" : 12.809, - "99.98817114494214" : 12.817, - "99.98822050038744" : 12.828, - "99.98828630764784" : 12.846, - "99.98834663096989" : 12.867, - "99.98840695429192" : 12.881, - "99.98846727761396" : 12.898, - "99.988527600936" : 12.911, - "99.98858792425804" : 12.923, - "99.98864824758007" : 12.935, - "99.98870857090212" : 12.946, - "99.98877437816252" : 12.961, - "99.98883470148456" : 12.989, - "99.9888950248066" : 13.003, - "99.988960832067" : 13.019, - "99.98902115538904" : 13.036, - "99.9890759947727" : 13.045, - "99.98914180203312" : 13.063, - "99.98920760929352" : 13.082, - "99.9892624486772" : 13.101, - "99.98932277199923" : 13.118, - "99.98938309532127" : 13.136, - "99.98945438652004" : 13.148, - "99.98950374196535" : 13.154, - "99.98956954922575" : 13.163, - "99.98962438860943" : 13.176, - "99.98969019586983" : 13.19, - "99.98975600313024" : 13.205, - "99.98981632645227" : 13.214, - "99.98987116583594" : 13.228, - "99.98993148915798" : 13.247, - "99.98999181248001" : 13.262, - "99.99005761974043" : 13.28, - "99.99011245912409" : 13.293, - "99.99018375032287" : 13.313, - "99.9902440736449" : 13.321, - "99.99029891302858" : 13.338, - "99.99035923635061" : 13.36, - "99.99042504361103" : 13.374, - "99.99047988299469" : 13.384, - "99.99054569025509" : 13.402, - "99.9906114975155" : 13.415, - "99.99067182083753" : 13.429, - "99.99072666022121" : 13.449, - "99.99078698354325" : 13.457, - "99.99085279080366" : 13.465, - "99.99091311412569" : 13.477, - "99.99096795350937" : 13.492, - "99.9910282768314" : 13.508, - "99.99109408409181" : 13.529, - "99.99115989135221" : 13.547, - "99.99121473073589" : 13.57, - "99.99128053799629" : 13.588, - "99.99134086131832" : 13.608, - "99.99140118464037" : 13.622, - "99.9914615079624" : 13.635, - "99.99151634734608" : 13.647, - "99.99158215460648" : 13.658, - "99.99164247792852" : 13.676, - "99.99170280125055" : 13.692, - "99.99176860851097" : 13.712, - "99.99182344789463" : 13.73, - "99.99188925515504" : 13.757, - "99.99194957847708" : 13.776, - "99.99200441786076" : 13.801, - "99.99207022512115" : 13.822, - "99.99213054844319" : 13.844, - "99.99219087176523" : 13.865, - "99.99225119508726" : 13.881, - "99.99231151840931" : 13.892, - "99.99237184173134" : 13.908, - "99.99243216505339" : 13.925, - "99.99249797231379" : 13.948, - "99.99255829563583" : 13.968, - "99.99261861895786" : 13.98, - "99.99267894227991" : 13.996, - "99.99274474954031" : 14.017, - "99.99279958892399" : 14.042, - "99.99285991224602" : 14.083, - "99.99292023556805" : 14.117, - "99.99298604282846" : 14.138, - "99.99305185008886" : 14.158, - "99.9931121734109" : 14.182, - "99.99316701279457" : 14.207, - "99.99322733611662" : 14.23, - "99.99328765943865" : 14.241, - "99.9933479827607" : 14.252, - "99.99340830608273" : 14.276, - "99.99347411334314" : 14.294, - "99.99353443666517" : 14.312, - "99.99360572786395" : 14.328, - "99.99366056724762" : 14.34, - "99.99371540663128" : 14.352, - "99.99377572995333" : 14.365, - "99.99383605327536" : 14.384, - "99.99390734447414" : 14.4, - "99.99394024810434" : 14.406, - "99.9939621838578" : 14.416, - "99.99398960354965" : 14.427, - "99.99402250717985" : 14.437, - "99.99404992687168" : 14.442, - "99.99408831444025" : 14.463, - "99.99411025019371" : 14.469, - "99.99414315382393" : 14.479, - "99.99417605745413" : 14.487, - "99.99420347714596" : 14.494, - "99.99423638077616" : 14.507, - "99.994263800468" : 14.526, - "99.9942967040982" : 14.54, - "99.99432412379004" : 14.55, - "99.99435702742024" : 14.555, - "99.99438993105045" : 14.558, - "99.99442283468065" : 14.567, - "99.99445573831085" : 14.57, - "99.99447767406431" : 14.58, - "99.9945160616329" : 14.592, - "99.99454348132473" : 14.597, - "99.99457090101656" : 14.613, - "99.99460380464676" : 14.618, - "99.99463122433859" : 14.628, - "99.9946641279688" : 14.639, - "99.99469154766064" : 14.649, - "99.9947299352292" : 14.658, - "99.99475735492103" : 14.665, - "99.99478477461288" : 14.671, - "99.99481219430471" : 14.675, - "99.99485606581165" : 14.682, - "99.99487800156511" : 14.689, - "99.99491090519533" : 14.7, - "99.99493832488716" : 14.705, - "99.99496574457899" : 14.71, - "99.99499864820919" : 14.723, - "99.99502606790102" : 14.731, - "99.99505897153124" : 14.739, - "99.99509187516144" : 14.754, - "99.99511929485327" : 14.768, - "99.99515219848347" : 14.794, - "99.99517961817531" : 14.8, - "99.99521252180551" : 14.812, - "99.99523994149735" : 14.827, - "99.99527284512754" : 14.834, - "99.99530574875774" : 14.843, - "99.99533316844959" : 14.852, - "99.99536607207979" : 14.864, - "99.99539349177162" : 14.872, - "99.99542639540182" : 14.896, - "99.99545929903204" : 14.906, - "99.99549220266223" : 14.912, - "99.9955141384157" : 14.923, - "99.9955470420459" : 14.934, - "99.99557994567611" : 14.945, - "99.99561284930631" : 14.951, - "99.99564026899814" : 14.966, - "99.99566768868998" : 14.973, - "99.99570059232018" : 14.984, - "99.99572801201202" : 15.002, - "99.99576091564222" : 15.024, - "99.99579930321079" : 15.032, - "99.99582123896425" : 15.051, - "99.99585414259447" : 15.061, - "99.9958815622863" : 15.07, - "99.9959144659165" : 15.079, - "99.99594188560833" : 15.092, - "99.99597478923855" : 15.104, - "99.99600220893038" : 15.12, - "99.99603511256058" : 15.134, - "99.99606801619078" : 15.157, - "99.99609543588261" : 15.165, - "99.99612833951282" : 15.179, - "99.99615575920465" : 15.193, - "99.99618866283485" : 15.201, - "99.99621608252669" : 15.209, - "99.9962489861569" : 15.234, - "99.9962818897871" : 15.246, - "99.99630930947893" : 15.267, - "99.99634221310913" : 15.289, - "99.99636963280098" : 15.305, - "99.99640253643118" : 15.334, - "99.99642995612301" : 15.358, - "99.99646285975321" : 15.372, - "99.99649576338341" : 15.381, - "99.99653415095199" : 15.388, - "99.99655608670545" : 15.398, - "99.99658350639729" : 15.424, - "99.99661641002749" : 15.446, - "99.99664382971933" : 15.477, - "99.9966822172879" : 15.517, - "99.99670415304136" : 15.541, - "99.99673705667156" : 15.563, - "99.99676996030178" : 15.593, - "99.99679737999361" : 15.604, - "99.99683028362381" : 15.617, - "99.99685770331564" : 15.636, - "99.99689060694584" : 15.656, - "99.99691802663769" : 15.676, - "99.99695093026789" : 15.694, - "99.99697286602135" : 15.702, - "99.99698383389808" : 15.71, - "99.99699480177482" : 15.723, - "99.99701125358992" : 15.757, - "99.99702770540503" : 15.766, - "99.99704415722013" : 15.775, - "99.99706060903523" : 15.788, - "99.99707157691196" : 15.799, - "99.99708802872706" : 15.81, - "99.99710448054216" : 15.824, - "99.99712641629563" : 15.858, - "99.997131900234" : 15.861, - "99.9971483520491" : 15.87, - "99.99716480386421" : 15.888, - "99.99718125567931" : 15.895, - "99.99719770749441" : 15.913, - "99.99720867537114" : 15.929, - "99.99722512718624" : 15.993, - "99.9972470629397" : 16.011, - "99.99725803081644" : 16.042, - "99.99726899869317" : 16.072, - "99.99728545050827" : 16.091, - "99.99730190232339" : 16.12, - "99.99731835413849" : 16.134, - "99.99733480595359" : 16.198, - "99.99734577383032" : 16.208, - "99.99736222564542" : 16.237, - "99.99737867746052" : 16.298, - "99.99739512927562" : 16.305, - "99.99740609715235" : 16.317, - "99.99742254896746" : 16.339, - "99.99743900078256" : 16.405, - "99.99745545259766" : 16.436, - "99.99747190441276" : 16.47, - "99.9974828722895" : 16.478, - "99.9974993241046" : 16.501, - "99.9975157759197" : 16.522, - "99.9975322277348" : 16.556, - "99.9975486795499" : 16.575, - "99.99755964742664" : 16.583, - "99.99757609924174" : 16.6, - "99.99759255105684" : 16.607, - "99.99760900287194" : 16.621, - "99.99761997074867" : 16.627, - "99.99763642256377" : 16.641, - "99.99765287437887" : 16.664, - "99.99766932619397" : 16.694, - "99.99768577800907" : 16.713, - "99.99769674588582" : 16.716, - "99.99771319770092" : 16.723, - "99.99773513345438" : 16.739, - "99.99774610133112" : 16.75, - "99.99775706920785" : 16.787, - "99.99777352102295" : 16.833, - "99.99778997283805" : 16.882, - "99.99780642465315" : 16.897, - "99.99782287646826" : 16.911, - "99.997833844345" : 16.938, - "99.9978502961601" : 16.964, - "99.9978667479752" : 17.016, - "99.9978831997903" : 17.091, - "99.99790513554376" : 17.116, - "99.99791061948213" : 17.136, - "99.99792707129723" : 17.209, - "99.99794352311233" : 17.24, - "99.99795997492744" : 17.272, - "99.99797094280417" : 17.296, - "99.99798739461927" : 17.359, - "99.99800384643437" : 17.391, - "99.99802029824947" : 17.423, - "99.99803675006457" : 17.454, - "99.9980477179413" : 17.505, - "99.9980641697564" : 17.562, - "99.9980806215715" : 17.591, - "99.99810255732498" : 17.632, - "99.99810804126335" : 17.644, - "99.99812449307845" : 17.704, - "99.99814094489355" : 17.742, - "99.99815739670865" : 17.752, - "99.99817384852375" : 17.795, - "99.99818481640048" : 17.8, - "99.99820126821558" : 17.85, - "99.9982177200307" : 17.867, - "99.9982341718458" : 17.972, - "99.9982506236609" : 17.995, - "99.99826159153763" : 18.0, - "99.99827804335273" : 18.053, - "99.99829449516783" : 18.076, - "99.99831094698293" : 18.105, - "99.99832191485966" : 18.114, - "99.99833836667476" : 18.142, - "99.99835481848987" : 18.191, - "99.99837127030497" : 18.239, - "99.99838772212007" : 18.269, - "99.9983986899968" : 18.287, - "99.9984151418119" : 18.399, - "99.998431593627" : 18.568, - "99.9984480454421" : 18.585, - "99.99845901331884" : 18.621, - "99.99848094907232" : 18.634, - "99.99849191694905" : 18.655, - "99.99849740088742" : 18.674, - "99.99850836876415" : 18.688, - "99.99851385270252" : 18.69, - "99.99852482057925" : 18.705, - "99.99853030451762" : 18.713, - "99.99853578845598" : 18.718, - "99.99854675633271" : 18.735, - "99.99855224027108" : 18.744, - "99.99856320814781" : 18.753, - "99.99856869208618" : 18.762, - "99.99857417602455" : 18.764, - "99.99858514390128" : 18.788, - "99.99859062783965" : 18.802, - "99.99860159571638" : 18.85, - "99.99860707965475" : 18.874, - "99.99861256359313" : 18.879, - "99.99862353146986" : 18.906, - "99.99862901540823" : 18.907, - "99.9986344993466" : 18.931, - "99.99864546722333" : 18.944, - "99.9986509511617" : 18.96, - "99.99866191903843" : 19.031, - "99.99866740297679" : 19.037, - "99.99867288691516" : 19.059, - "99.99868385479189" : 19.082, - "99.99868933873026" : 19.085, - "99.99870030660699" : 19.126, - "99.99870579054536" : 19.138, - "99.99871127448372" : 19.158, - "99.99872224236046" : 19.176, - "99.99873321023719" : 19.18, - "99.99873869417556" : 19.201, - "99.99874417811392" : 19.203, - "99.9987496620523" : 19.217, - "99.99876062992904" : 19.23, - "99.9987661138674" : 19.252, - "99.99877708174414" : 19.261, - "99.9987825656825" : 19.283, - "99.99878804962087" : 19.288, - "99.9987990174976" : 19.298, - "99.99880450143597" : 19.31, - "99.99880998537434" : 19.314, - "99.99882095325107" : 19.323, - "99.99882643718944" : 19.338, - "99.99883740506617" : 19.363, - "99.99884288900454" : 19.374, - "99.9988483729429" : 19.385, - "99.99885934081964" : 19.393, - "99.998864824758" : 19.421, - "99.99887579263473" : 19.493, - "99.99888127657312" : 19.502, - "99.99888676051148" : 19.511, - "99.99889772838822" : 19.516, - "99.99890321232658" : 19.56, - "99.99891418020331" : 19.573, - "99.99891966414168" : 19.614, - "99.99892514808005" : 19.625, - "99.99893611595678" : 19.632, - "99.99894159989515" : 19.633, - "99.99895256777188" : 19.651, - "99.99895805171025" : 19.654, - "99.99896353564861" : 19.658, - "99.99897450352535" : 19.681, - "99.99897998746371" : 19.731, - "99.99898547140208" : 19.745, - "99.99899643927881" : 19.767, - "99.99900192321718" : 19.771, - "99.99901289109393" : 19.781, - "99.99901837503229" : 19.786, - "99.99902385897066" : 19.79, - "99.99903482684739" : 19.793, - "99.99904031078576" : 19.795, - "99.99905127866249" : 19.799, - "99.99905676260086" : 19.803, - "99.99906224653922" : 19.807, - "99.99907321441596" : 19.831, - "99.99907869835432" : 19.902, - "99.99908966623106" : 19.913, - "99.99909515016942" : 19.921, - "99.99910063410779" : 19.927, - "99.99911160198452" : 19.936, - "99.99911708592289" : 19.951, - "99.99912805379962" : 19.972, - "99.99913353773799" : 19.99, - "99.99913902167636" : 20.039, - "99.9991499895531" : 20.077, - "99.99915547349147" : 20.087, - "99.99916095742984" : 20.227, - "99.99917192530657" : 20.239, - "99.99917740924494" : 20.256, - "99.99918837712167" : 20.271, - "99.99919386106004" : 20.277, - "99.9991993449984" : 20.341, - "99.99921031287514" : 20.346, - "99.9992157968135" : 20.347, - "99.99922676469023" : 20.358, - "99.99923773256697" : 20.373, - "99.99924321650533" : 20.382, - "99.9992487004437" : 20.422, - "99.99925418438207" : 20.446, - "99.99925966832043" : 20.47, - "99.9992651522588" : 20.524, - "99.99927063619717" : 20.529, - "99.99927612013555" : 20.562, - "99.99928708801228" : 20.591, - "99.99929257195065" : 20.602, - "99.99929805588901" : 20.63, - "99.99930353982738" : 20.702, - "99.99930902376575" : 20.707, - "99.99931450770411" : 20.709, - "99.99931999164248" : 20.754, - "99.99932547558085" : 20.787, - "99.99933095951921" : 20.844, - "99.99933644345758" : 20.859, - "99.99934192739595" : 20.929, - "99.99934741133431" : 20.949, - "99.99935289527268" : 20.974, - "99.99935837921105" : 20.986, - "99.99936386314941" : 20.997, - "99.99936934708778" : 21.056, - "99.99937483102615" : 21.064, - "99.99938031496451" : 21.074, - "99.99938579890288" : 21.096, - "99.99939128284124" : 21.099, - "99.99939676677961" : 21.118, - "99.99940225071798" : 21.195, - "99.99940773465636" : 21.242, - "99.99941321859473" : 21.283, - "99.99941870253309" : 21.289, - "99.99942418647146" : 21.29, - "99.99942967040982" : 21.319, - "99.99943515434819" : 21.341, - "99.99944063828656" : 21.351, - "99.99944612222492" : 21.372, - "99.99945160616329" : 21.398, - "99.99945709010166" : 21.413, - "99.99946257404002" : 21.445, - "99.99946805797839" : 21.46, - "99.99947354191676" : 21.466, - "99.99947902585512" : 21.47, - "99.99948450979349" : 21.471, - "99.99948999373186" : 21.514, - "99.99949547767022" : 21.536, - "99.99950096160859" : 21.54, - "99.99950644554696" : 21.548, - "99.99951192948532" : 21.579, - "99.99951741342369" : 21.63, - "99.99952289736206" : 21.695, - "99.99952838130042" : 21.751, - "99.99953386523879" : 21.846, - "99.99953934917717" : 21.931, - "99.99954483311554" : 21.943, - "99.9995503170539" : 21.965, - "99.99955580099227" : 22.009, - "99.99956128493064" : 22.09, - "99.999566768869" : 22.122, - "99.99957225280737" : 22.195, - "99.99957773674574" : 22.201, - "99.9995832206841" : 22.227, - "99.99958870462247" : 22.272, - "99.99959418856083" : 22.351, - "99.9995996724992" : 22.4, - "99.99960515643757" : 22.468, - "99.99961064037593" : 22.501, - "99.9996161243143" : 22.519, - "99.99962160825267" : 22.543, - "99.99962709219103" : 22.577, - "99.9996325761294" : 22.582, - "99.99963806006777" : 22.586, - "99.99964354400613" : 22.69, - "99.9996490279445" : 22.806, - "99.99965451188287" : 22.811, - "99.99965999582123" : 22.9, - "99.9996654797596" : 22.916, - "99.99967096369798" : 22.974, - "99.99967644763635" : 23.056, - "99.99968193157471" : 23.174, - "99.99968741551308" : 23.207, - "99.99969289945145" : 23.228, - "99.99969838338981" : 23.242, - "99.99970386732818" : 23.259, - "99.99970935126655" : 23.304, - "99.99971483520491" : 23.346, - "99.99972031914328" : 23.435, - "99.99972580308165" : 23.492, - "99.99973128702001" : 23.562, - "99.99973677095838" : 23.58, - "99.99974225489674" : 23.712, - "99.99974773883511" : 23.877, - "99.99975322277348" : 23.96, - "99.99975870671184" : 24.044, - "99.99976419065021" : 24.074, - "99.99976967458858" : 24.16, - "99.99977515852694" : 24.254, - "99.99978064246531" : 24.394, - "99.99978612640368" : 24.417, - "99.99979161034204" : 24.479, - "99.99979709428041" : 24.524, - "99.99980257821879" : 24.621, - "99.99981354609552" : 24.639, - "99.99981903003389" : 24.706, - "99.99982451397226" : 25.058, - "99.99982999791062" : 25.075, - "99.99983548184899" : 25.135, - "99.99984096578736" : 25.138, - "99.99984644972572" : 25.226, - "99.99985193366409" : 25.278, - "99.99985741760246" : 25.315, - "99.99986290154082" : 25.317, - "99.99986838547919" : 25.378, - "99.99987386941756" : 25.477, - "99.99987935335592" : 25.578, - "99.99988483729429" : 25.621, - "99.99989032123266" : 25.775, - "99.99989580517102" : 25.968, - "99.99990128910939" : 25.989, - "99.99990677304775" : 26.091, - "99.99991225698612" : 26.113, - "99.99991774092449" : 26.186, - "99.99992322486285" : 26.187, - "99.99992870880122" : 26.376, - "99.9999341927396" : 26.544, - "99.99993967667797" : 26.546, - "99.99994516061633" : 26.653, - "99.9999506445547" : 26.712, - "99.99995612849307" : 26.752, - "99.99996161243143" : 26.772, - "99.9999670963698" : 26.879, - "99.99997258030817" : 27.021, - "99.99997806424653" : 27.059, - "99.9999835481849" : 27.103, - "99.99998903212327" : 27.348, - "99.99999451606163" : 27.375, - "100.0" : 27.572 - }, - "endToEndLatencyAvg" : [ 0.505372242619771, 0.5180584664284444, 0.49730107859460243, 0.5003151391302059, 0.512844579074497, 0.5223187147685129, 0.5037551736279068, 0.5077531820934028, 0.5113163649765218, 0.5020770200275106, 0.5032673546552762, 0.5138742315944662, 0.5243665727563553, 0.5108839704101511, 0.5034623775864793, 0.503088119339722, 0.5211759285465113, 0.5157969278559489, 0.5239393338072108, 0.4923128136115215, 0.5070624858084027, 0.5023010096289909, 0.5132946242574827, 0.5032289226010267, 0.508095936587127, 0.5013996788300992, 0.49994241692280356, 0.5024638781017574, 0.4949839599294421, 0.5014995820416115, 0.49864053958882515, 0.5190957975450028, 0.49005381283978566, 0.5079047228831604, 0.5142666157673726, 0.5093754220832648, 0.5183904710505012, 0.5232837891646949, 0.5043648817633161, 0.49590693304549854, 0.5062362380414858, 0.5018812842038062, 0.5090607370201897, 0.5147871234833202, 0.5023764035699712, 0.5025611198504585, 0.4893762238406629, 0.4886438634770504, 0.5007648886212333, 0.526901635945383, 0.5151936580325883, 0.49834015065008574, 0.5045067295858261, 0.5132074829708119, 0.5266910073287712, 0.5145675353695579, 0.5006172451921178, 0.4962989472229261, 0.4935391744197144, 0.4987351621916023 ], - "endToEndLatency50pct" : [ 0.491, 0.484, 0.478, 0.482, 0.489, 0.493, 0.484, 0.481, 0.493, 0.483, 0.481, 0.494, 0.495, 0.484, 0.48, 0.487, 0.484, 0.492, 0.483, 0.471, 0.485, 0.484, 0.484, 0.482, 0.487, 0.478, 0.478, 0.48, 0.476, 0.48, 0.473, 0.491, 0.471, 0.481, 0.488, 0.481, 0.495, 0.487, 0.478, 0.48, 0.48, 0.477, 0.486, 0.492, 0.48, 0.48, 0.469, 0.467, 0.481, 0.496, 0.484, 0.471, 0.484, 0.473, 0.49, 0.49, 0.482, 0.478, 0.47, 0.477 ], - "endToEndLatency75pct" : [ 0.593, 0.584, 0.574, 0.582, 0.591, 0.6, 0.584, 0.575, 0.594, 0.58, 0.578, 0.595, 0.598, 0.584, 0.582, 0.584, 0.582, 0.592, 0.59, 0.561, 0.585, 0.581, 0.584, 0.576, 0.589, 0.573, 0.575, 0.577, 0.568, 0.577, 0.568, 0.592, 0.567, 0.578, 0.592, 0.579, 0.598, 0.588, 0.572, 0.574, 0.58, 0.575, 0.591, 0.598, 0.572, 0.578, 0.558, 0.553, 0.579, 0.603, 0.589, 0.571, 0.589, 0.574, 0.596, 0.594, 0.584, 0.577, 0.568, 0.572 ], - "endToEndLatency95pct" : [ 0.757, 0.763, 0.743, 0.75, 0.766, 0.786, 0.754, 0.754, 0.771, 0.757, 0.763, 0.777, 0.787, 0.773, 0.779, 0.761, 0.773, 0.779, 0.794, 0.729, 0.765, 0.755, 0.779, 0.755, 0.762, 0.751, 0.746, 0.756, 0.744, 0.753, 0.755, 0.769, 0.738, 0.758, 0.767, 0.766, 0.782, 0.772, 0.746, 0.744, 0.76, 0.761, 0.775, 0.779, 0.754, 0.76, 0.726, 0.73, 0.755, 0.785, 0.774, 0.743, 0.77, 0.764, 0.792, 0.771, 0.755, 0.751, 0.736, 0.751 ], - "endToEndLatency99pct" : [ 0.951, 1.071, 0.988, 0.934, 1.02, 1.061, 0.951, 1.006, 0.973, 0.969, 0.991, 1.013, 1.076, 1.027, 0.986, 0.946, 1.031, 1.014, 1.102, 0.971, 0.987, 0.958, 1.077, 0.998, 0.991, 1.004, 0.966, 0.999, 0.947, 1.006, 1.04, 1.021, 0.948, 0.993, 1.022, 1.068, 1.013, 1.006, 1.08, 0.936, 1.053, 1.065, 1.002, 1.003, 1.032, 0.968, 0.956, 0.983, 0.977, 1.073, 1.157, 0.97, 0.994, 1.102, 1.273, 1.003, 0.99, 0.958, 0.965, 1.01 ], - "endToEndLatency999pct" : [ 2.03, 5.511, 2.294, 1.948, 3.741, 5.045, 2.321, 4.784, 1.91, 2.5, 3.141, 2.369, 4.452, 3.817, 2.42, 1.336, 7.838, 3.55, 7.551, 3.537, 2.779, 1.639, 4.673, 2.86, 3.026, 3.214, 3.423, 3.318, 1.901, 2.532, 3.212, 6.54, 1.869, 4.501, 4.399, 4.379, 3.664, 7.248, 4.25, 1.562, 3.879, 2.898, 3.068, 3.939, 3.079, 3.247, 3.652, 3.27, 2.63, 4.993, 4.696, 4.889, 2.048, 7.849, 4.286, 4.625, 2.582, 2.071, 4.208, 2.933 ], - "endToEndLatency9999pct" : [ 5.295, 9.368, 4.8, 4.961, 7.994, 10.27, 7.243, 7.787, 4.287, 4.71, 5.37, 3.962, 6.072, 8.106, 5.595, 2.135, 16.586, 5.665, 14.577, 7.624, 5.414, 4.834, 11.516, 5.83, 5.796, 8.337, 7.026, 6.164, 5.533, 4.927, 6.439, 10.036, 5.498, 9.347, 5.692, 8.041, 7.855, 14.595, 5.804, 5.912, 5.766, 5.082, 6.579, 8.612, 6.704, 5.438, 7.203, 6.118, 6.003, 8.317, 6.917, 8.438, 5.376, 15.035, 14.326, 10.519, 5.904, 4.507, 10.004, 4.979 ], - "endToEndLatencyMax" : [ 6.322, 11.251, 7.03, 9.913, 12.558, 11.412, 10.708, 10.956, 6.798, 10.121, 7.505, 6.32, 11.742, 12.736, 7.655, 7.403, 19.476, 8.038, 15.468, 11.601, 8.149, 7.664, 13.396, 7.998, 11.032, 11.453, 8.009, 8.683, 7.879, 6.499, 11.546, 13.307, 7.8, 10.998, 7.255, 19.464, 12.483, 19.107, 7.033, 9.282, 9.094, 6.203, 9.37, 11.624, 10.809, 7.752, 7.725, 8.234, 11.838, 11.18, 10.666, 10.244, 8.14, 17.033, 16.497, 12.12, 8.157, 10.138, 15.03, 7.03 ], - "aggregatedEndToEndLatencyQuantiles" : { - "5.484061070065351E-6" : 0.162, - "0.5216164686792659" : 0.229, - "1.0307237940577127" : 0.242, - "1.5313801813271888" : 0.252, - "2.001079043856146" : 0.26, - "2.5513661838097135" : 0.268, - "3.0336893549219615" : 0.274, - "3.5905025275489066" : 0.28, - "4.005201741606179" : 0.284, - "4.5733285322206685" : 0.289, - "5.070036395519698" : 0.293, - "5.6000325095140235" : 0.297, - "6.021307112794304" : 0.3, - "6.606467397092417" : 0.304, - "7.064852641633829" : 0.307, - "7.534348593903194" : 0.31, - "8.015366558480766" : 0.313, - "8.512233459550826" : 0.316, - "9.01854939784461" : 0.319, - "9.539387129851928" : 0.322, - "10.065275682104774" : 0.325, - "10.602351718940554" : 0.328, - "11.156181562345385" : 0.331, - "11.532728163538211" : 0.333, - "12.107901972627735" : 0.336, - "12.692645468284523" : 0.339, - "13.090289252413891" : 0.341, - "13.702941134856243" : 0.344, - "14.119466541249846" : 0.346, - "14.538827207216674" : 0.348, - "15.176848356169147" : 0.351, - "15.609814977650807" : 0.353, - "16.048139526797918" : 0.355, - "16.715747185223396" : 0.358, - "17.168001249488473" : 0.36, - "17.626370041846677" : 0.362, - "18.08986643130539" : 0.364, - "18.559532389467925" : 0.366, - "19.032494268333572" : 0.368, - "19.512174122010048" : 0.37, - "20.23235747391424" : 0.373, - "20.719375001302463" : 0.375, - "21.214443130341543" : 0.377, - "21.70676922884559" : 0.379, - "22.2049468205114" : 0.381, - "22.70619548637644" : 0.383, - "23.208392894806604" : 0.385, - "23.7162279180168" : 0.387, - "24.224106813715547" : 0.389, - "24.73528711417848" : 0.391, - "25.25395315800205" : 0.393, - "25.51591030313586" : 0.394, - "26.036950945402772" : 0.396, - "26.562724332373147" : 0.398, - "27.089616467801815" : 0.4, - "27.62195975993413" : 0.402, - "28.15564664702861" : 0.404, - "28.692870753513283" : 0.406, - "29.2290419202725" : 0.408, - "29.769885507063417" : 0.41, - "30.041872999894377" : 0.411, - "30.586522525067917" : 0.413, - "31.131714972287394" : 0.415, - "31.67698968042292" : 0.417, - "32.226881967979445" : 0.419, - "32.50233538740669" : 0.42, - "33.05653814696428" : 0.422, - "33.61027476133092" : 0.424, - "34.163786529193686" : 0.426, - "34.71881189791179" : 0.428, - "35.27504924412638" : 0.43, - "35.55558638816557" : 0.431, - "36.114999005739726" : 0.433, - "36.677043972627516" : 0.435, - "37.240196719851454" : 0.437, - "37.523711709051696" : 0.438, - "38.08897581978761" : 0.44, - "38.65414121742427" : 0.442, - "39.219931798022905" : 0.444, - "39.50363324529953" : 0.445, - "40.0700599769823" : 0.447, - "40.63566409950456" : 0.449, - "41.20316570715706" : 0.451, - "41.76791431615239" : 0.453, - "42.052619346604835" : 0.454, - "42.624190127571325" : 0.456, - "43.19537702426291" : 0.458, - "43.766843608069074" : 0.46, - "44.05141153699476" : 0.461, - "44.622439395915315" : 0.463, - "45.193242408332" : 0.465, - "45.76552063317653" : 0.467, - "46.05195314286604" : 0.468, - "46.622838416198775" : 0.47, - "47.19620796919625" : 0.472, - "47.76858490714004" : 0.474, - "48.05417835548583" : 0.475, - "48.62537073623849" : 0.477, - "49.197221204319554" : 0.479, - "49.76784872678199" : 0.481, - "50.05096886358519" : 0.482, - "50.33491160954889" : 0.483, - "50.61858563652016" : 0.484, - "50.901897715460805" : 0.485, - "51.18336714988191" : 0.486, - "51.46566467752459" : 0.487, - "51.74861480843462" : 0.488, - "52.0325246500319" : 0.489, - "52.316363198835276" : 0.49, - "52.599082999180354" : 0.491, - "52.88125987747949" : 0.492, - "53.16201089990042" : 0.493, - "53.441802211634084" : 0.494, - "53.72119318690964" : 0.495, - "53.99933379626121" : 0.496, - "54.278000875475506" : 0.497, - "54.5570189345983" : 0.498, - "54.83657991576702" : 0.499, - "55.115729592355486" : 0.5, - "55.393096949096176" : 0.501, - "55.67046978989794" : 0.502, - "55.94510608422574" : 0.503, - "56.2215466346456" : 0.504, - "56.49476804121733" : 0.505, - "56.768504949529635" : 0.506, - "57.04122182248292" : 0.507, - "57.31336286902384" : 0.508, - "57.58631007254206" : 0.509, - "57.85924082387707" : 0.51, - "58.12997795078406" : 0.511, - "58.396832362453445" : 0.512, - "58.66787659678035" : 0.513, - "58.93531231892316" : 0.514, - "59.203373224027956" : 0.515, - "59.4700137573156" : 0.516, - "59.73667622684753" : 0.517, - "60.00197316517301" : 0.518, - "60.26823529824682" : 0.519, - "60.53229832283154" : 0.52, - "60.79570874414892" : 0.521, - "61.05943724100836" : 0.522, - "61.32306154070747" : 0.523, - "61.58634034455917" : 0.524, - "61.847754567647044" : 0.525, - "62.10714517220006" : 0.526, - "62.367226768447914" : 0.527, - "62.6257070188633" : 0.528, - "62.8844066317215" : 0.529, - "63.14179006992288" : 0.53, - "63.39776410442924" : 0.531, - "63.65389169264558" : 0.532, - "63.90906505423572" : 0.533, - "64.16265900623767" : 0.534, - "64.41629134666714" : 0.535, - "64.66950141439419" : 0.536, - "64.92115400877735" : 0.537, - "65.17093653833561" : 0.538, - "65.42179394386362" : 0.539, - "65.66874669790973" : 0.54, - "65.91861148838404" : 0.541, - "66.16467034047574" : 0.542, - "66.41123372618587" : 0.543, - "66.6558941427047" : 0.544, - "66.90101522035341" : 0.545, - "67.1439591257573" : 0.546, - "67.38600912920678" : 0.547, - "67.62590389665571" : 0.548, - "67.86501444337163" : 0.549, - "68.10320915188886" : 0.55, - "68.34293391344463" : 0.551, - "68.58036633747311" : 0.552, - "68.81697615234107" : 0.553, - "69.05023520589523" : 0.554, - "69.28460752384662" : 0.555, - "69.5188153199659" : 0.556, - "69.75001236655771" : 0.557, - "70.21069543268749" : 0.559, - "70.44092728453097" : 0.56, - "70.66973328049623" : 0.561, - "70.89436590598719" : 0.562, - "71.12075343102055" : 0.563, - "71.34491442725947" : 0.564, - "71.56971705864359" : 0.565, - "71.79077956037793" : 0.566, - "72.01162818373052" : 0.567, - "72.44932206585457" : 0.569, - "72.66632636239707" : 0.57, - "72.88316065304637" : 0.571, - "73.1010917559097" : 0.572, - "73.31410914005426" : 0.573, - "73.52638069189328" : 0.574, - "73.94712334124976" : 0.576, - "74.15298402569788" : 0.577, - "74.36125221295575" : 0.578, - "74.56637803322047" : 0.579, - "74.7703467165994" : 0.58, - "75.17612884735675" : 0.582, - "75.37741582487243" : 0.583, - "75.57620755460123" : 0.584, - "75.77504864087966" : 0.585, - "75.97266678153946" : 0.586, - "76.16999426696256" : 0.587, - "76.3639600229497" : 0.588, - "76.55869354748666" : 0.589, - "76.75312544866475" : 0.59, - "76.94506210205596" : 0.591, - "77.13664777553869" : 0.592, - "77.32596304773843" : 0.593, - "77.51420344396841" : 0.594, - "77.70079313781632" : 0.595, - "77.887678970962" : 0.596, - "78.0728428089317" : 0.597, - "78.25559914409162" : 0.598, - "78.439408418977" : 0.599, - "78.62185216265594" : 0.6, - "78.80262875176957" : 0.601, - "78.9825827317227" : 0.602, - "79.16156054880534" : 0.603, - "79.33915638249835" : 0.604, - "79.51435568150372" : 0.605, - "79.68817848118051" : 0.606, - "79.86248936229254" : 0.607, - "80.03772156566434" : 0.608, - "80.20793036909596" : 0.609, - "80.37801852318404" : 0.61, - "80.54498076246217" : 0.611, - "80.71451502638217" : 0.612, - "80.88106596108005" : 0.613, - "81.04758399141153" : 0.614, - "81.21158483771183" : 0.615, - "81.37459306895845" : 0.616, - "81.53722838405231" : 0.617, - "81.69932077710023" : 0.618, - "81.85958697781182" : 0.619, - "82.01921702743928" : 0.62, - "82.17840835218114" : 0.621, - "82.33436956495272" : 0.622, - "82.48929429018207" : 0.623, - "82.64261218551789" : 0.624, - "82.79503617889928" : 0.625, - "82.94673627621944" : 0.626, - "83.09896832746338" : 0.627, - "83.2473944403247" : 0.628, - "83.39557925449893" : 0.629, - "83.5433363119097" : 0.63, - "83.69051754290811" : 0.631, - "83.83661292981466" : 0.632, - "83.98084373595738" : 0.633, - "84.12292479016062" : 0.634, - "84.26500584436388" : 0.635, - "84.40486585383375" : 0.636, - "84.54473683142578" : 0.637, - "84.68380165204049" : 0.638, - "84.82107866874637" : 0.639, - "84.95677627586407" : 0.64, - "85.09095479806535" : 0.641, - "85.22586818445004" : 0.642, - "85.35960798176572" : 0.643, - "85.49106640967625" : 0.644, - "85.62160351532702" : 0.645, - "85.75001828934367" : 0.646, - "85.87853726052064" : 0.647, - "86.00543843368196" : 0.648, - "86.13111666122465" : 0.649, - "86.25581872589687" : 0.65, - "86.3801698106606" : 0.651, - "86.50368183408061" : 0.652, - "86.62618479026374" : 0.653, - "86.86870642296523" : 0.655, - "86.98783119752919" : 0.656, - "87.10659402406253" : 0.657, - "87.22339355673277" : 0.658, - "87.33868497260876" : 0.659, - "87.45381186665264" : 0.66, - "87.5682093805742" : 0.661, - "87.6808958674419" : 0.662, - "87.79379623269135" : 0.663, - "87.9050239593144" : 0.664, - "88.01606522786109" : 0.665, - "88.1241341353078" : 0.666, - "88.2320933615331" : 0.667, - "88.34014033273553" : 0.668, - "88.44586754610532" : 0.669, - "88.5514137854598" : 0.67, - "88.65637323027978" : 0.671, - "88.75947906245808" : 0.672, - "88.86255199026996" : 0.673, - "88.96507102791377" : 0.674, - "89.0661916299847" : 0.675, - "89.16598508927667" : 0.676, - "89.26521369027844" : 0.677, - "89.36248448147819" : 0.678, - "89.45986495389934" : 0.679, - "89.55681218549596" : 0.68, - "89.65220742780974" : 0.681, - "89.74700490746689" : 0.682, - "89.84063976617719" : 0.683, - "89.9350588456205" : 0.684, - "90.02752559932287" : 0.685, - "90.11867617836843" : 0.686, - "90.20874639738318" : 0.687, - "90.29832853496269" : 0.688, - "90.38811358280181" : 0.689, - "90.47567210184647" : 0.69, - "90.56287964098266" : 0.691, - "90.64937425217973" : 0.692, - "90.73481592365134" : 0.693, - "90.81910045823717" : 0.694, - "90.90294626793741" : 0.695, - "90.98769146365312" : 0.696, - "91.07237633469707" : 0.697, - "91.15326623548054" : 0.698, - "91.23436453058466" : 0.699, - "91.31460731216185" : 0.7, - "91.39359972781509" : 0.701, - "91.47102370200227" : 0.702, - "91.54933609408279" : 0.703, - "91.62724814970521" : 0.704, - "91.7031694911592" : 0.705, - "91.77838338873515" : 0.706, - "91.85423343739522" : 0.707, - "91.92817503280291" : 0.708, - "92.0013104712333" : 0.709, - "92.07355749177034" : 0.71, - "92.14572225139133" : 0.711, - "92.21657632041658" : 0.712, - "92.28681617460198" : 0.713, - "92.35658988359641" : 0.714, - "92.42693393494214" : 0.715, - "92.49589051883714" : 0.716, - "92.56391481235023" : 0.717, - "92.63246009166498" : 0.718, - "92.69991952688785" : 0.719, - "92.76631505426315" : 0.72, - "92.83136698667626" : 0.721, - "92.89606793918088" : 0.722, - "92.96074147138016" : 0.723, - "93.02528887017483" : 0.724, - "93.0893975440839" : 0.725, - "93.15123581670996" : 0.726, - "93.2129315037482" : 0.727, - "93.27517011283236" : 0.728, - "93.33553865709165" : 0.729, - "93.39520524153396" : 0.73, - "93.45480053318235" : 0.731, - "93.51351289099847" : 0.732, - "93.57106811192881" : 0.733, - "93.62839848635527" : 0.734, - "93.741556602475" : 0.736, - "93.79787790966458" : 0.737, - "93.85302562778514" : 0.738, - "93.90797043564613" : 0.739, - "93.96187327190381" : 0.74, - "94.01629160990207" : 0.741, - "94.06934441669388" : 0.742, - "94.12302240644767" : 0.743, - "94.1759819842013" : 0.744, - "94.22653954320623" : 0.745, - "94.278336500013" : 0.746, - "94.3299250624991" : 0.747, - "94.37962162391604" : 0.748, - "94.42852848053887" : 0.749, - "94.47838956378791" : 0.75, - "94.52675898242589" : 0.751, - "94.57494742704856" : 0.752, - "94.62214874067861" : 0.753, - "94.66964619360644" : 0.754, - "94.7170284812518" : 0.755, - "94.76346751039311" : 0.756, - "94.80972556551912" : 0.757, - "94.8547606750265" : 0.758, - "94.90066775024401" : 0.759, - "94.94504477242299" : 0.76, - "94.98864854199107" : 0.761, - "95.03253199867373" : 0.762, - "95.0759218898601" : 0.763, - "95.11877982712265" : 0.764, - "95.16055192029334" : 0.765, - "95.20253240778469" : 0.766, - "95.24460064025317" : 0.767, - "95.28553367208013" : 0.768, - "95.32568248317408" : 0.769, - "95.36619872635973" : 0.77, - "95.40600752566732" : 0.771, - "95.44577245248637" : 0.772, - "95.48514801096944" : 0.773, - "95.52344869348278" : 0.774, - "95.56116806552268" : 0.775, - "95.5987942085244" : 0.776, - "95.63657390523608" : 0.777, - "95.67364615806973" : 0.778, - "95.71026323383455" : 0.779, - "95.74716548077502" : 0.78, - "95.78325608667713" : 0.781, - "95.81832665722018" : 0.782, - "95.85383595264886" : 0.783, - "95.88819907931389" : 0.784, - "95.92239220008575" : 0.785, - "95.95622337282698" : 0.786, - "95.99097038376692" : 0.787, - "96.02443412441646" : 0.788, - "96.05712461245511" : 0.789, - "96.09076932711997" : 0.79, - "96.12305947870051" : 0.791, - "96.15562383333456" : 0.792, - "96.18742590347986" : 0.793, - "96.21958443759473" : 0.794, - "96.25044324923599" : 0.795, - "96.31132729523586" : 0.797, - "96.34122091212878" : 0.798, - "96.37103226810565" : 0.799, - "96.40087652844895" : 0.8, - "96.43009560583026" : 0.801, - "96.45966017905899" : 0.802, - "96.48933991757018" : 0.803, - "96.51838898905831" : 0.804, - "96.54664287169129" : 0.805, - "96.57395897988128" : 0.806, - "96.6009241081628" : 0.807, - "96.62832796132992" : 0.808, - "96.68174271615234" : 0.81, - "96.70749586693738" : 0.811, - "96.73354515702019" : 0.812, - "96.75937508466019" : 0.813, - "96.78495274549098" : 0.814, - "96.83519771301492" : 0.816, - "96.86024890398298" : 0.817, - "96.88469136417226" : 0.818, - "96.90879929663626" : 0.819, - "96.93257818543607" : 0.82, - "96.95670257008328" : 0.821, - "96.98052533137165" : 0.822, - "97.00429873611039" : 0.823, - "97.02711791422293" : 0.824, - "97.05089131896166" : 0.825, - "97.07408889728804" : 0.826, - "97.0963541852325" : 0.827, - "97.11886625592511" : 0.828, - "97.14058313776258" : 0.829, - "97.16245357330999" : 0.83, - "97.18378108681148" : 0.831, - "97.20521828153437" : 0.832, - "97.22637578914268" : 0.833, - "97.24710005592645" : 0.834, - "97.26812046200801" : 0.835, - "97.28851568512759" : 0.836, - "97.30829120934624" : 0.837, - "97.32864255997725" : 0.838, - "97.34835227546307" : 0.839, - "97.36796327784963" : 0.84, - "97.3875687961751" : 0.841, - "97.40709753764561" : 0.842, - "97.42641240073438" : 0.843, - "97.44589178565525" : 0.844, - "97.46434016709496" : 0.845, - "97.48311210813779" : 0.846, - "97.50123692997435" : 0.847, - "97.51975660420797" : 0.848, - "97.53764561141851" : 0.849, - "97.55585269417114" : 0.85, - "97.57347846645033" : 0.851, - "97.59121940401198" : 0.852, - "97.60868613852014" : 0.853, - "97.62606512805118" : 0.854, - "97.64320281889513" : 0.855, - "97.65953983682286" : 0.856, - "97.67667752766681" : 0.857, - "97.69302551371668" : 0.858, - "97.70885799802596" : 0.859, - "97.72499758975516" : 0.86, - "97.74085201030871" : 0.861, - "97.75627867409881" : 0.862, - "97.7714859754461" : 0.863, - "97.78703877264081" : 0.864, - "97.80254221328589" : 0.865, - "97.81738208254149" : 0.866, - "97.83260035201091" : 0.867, - "97.84706730511374" : 0.868, - "97.86181394533115" : 0.869, - "97.87629186655612" : 0.87, - "97.89089043712464" : 0.871, - "97.91984079551351" : 0.873, - "97.93370998595971" : 0.874, - "97.94796854474188" : 0.875, - "97.9620351613866" : 0.876, - "97.97548756319146" : 0.877, - "97.98877544316423" : 0.878, - "98.00257334081651" : 0.879, - "98.01594896576641" : 0.88, - "98.04157049908575" : 0.882, - "98.05437578168436" : 0.883, - "98.06732913393185" : 0.884, - "98.07971762788912" : 0.885, - "98.10464816951364" : 0.887, - "98.11698182286023" : 0.888, - "98.12920031092433" : 0.889, - "98.15253499077745" : 0.891, - "98.16408442339102" : 0.892, - "98.17597935185198" : 0.893, - "98.18758362507624" : 0.894, - "98.21081410776904" : 0.896, - "98.22191384737485" : 0.897, - "98.24445333837282" : 0.899, - "98.25540500832975" : 0.9, - "98.26673507850049" : 0.901, - "98.28784322955917" : 0.903, - "98.29838359493584" : 0.904, - "98.31953013442201" : 0.906, - "98.3298292011116" : 0.907, - "98.35001054584944" : 0.909, - "98.36015057476799" : 0.91, - "98.3801728817348" : 0.912, - "98.39960291010604" : 0.914, - "98.40888742549765" : 0.915, - "98.42741258379235" : 0.917, - "98.44588838553739" : 0.919, - "98.45470675573806" : 0.92, - "98.4636019027937" : 0.921, - "98.47239833675009" : 0.922, - "98.48107412136292" : 0.923, - "98.4899637843575" : 0.924, - "98.49871086176427" : 0.925, - "98.50703018240755" : 0.926, - "98.5157059670204" : 0.927, - "98.52428303853398" : 0.928, - "98.53296430720789" : 0.929, - "98.54114652632443" : 0.93, - "98.54947681508986" : 0.931, - "98.55760967765676" : 0.932, - "98.56570963585725" : 0.933, - "98.57353539100423" : 0.934, - "98.58166825357114" : 0.935, - "98.58959272181738" : 0.936, - "98.59724298701012" : 0.937, - "98.60513455088994" : 0.938, - "98.61281223638804" : 0.939, - "98.62053927843576" : 0.94, - "98.6284089060713" : 0.941, - "98.63585626100445" : 0.942, - "98.64324329126583" : 0.943, - "98.65058096497758" : 0.944, - "98.65781992559006" : 0.945, - "98.66454338446196" : 0.946, - "98.67878000699986" : 0.948, - "98.68629865472691" : 0.949, - "98.69302759765989" : 0.95, - "98.70016236111204" : 0.951, - "98.70707776212139" : 0.952, - "98.71381767317651" : 0.953, - "98.72052467986519" : 0.954, - "98.72719878218746" : 0.955, - "98.74070602460303" : 0.957, - "98.74718818478784" : 0.958, - "98.75364840872838" : 0.959, - "98.76000443550859" : 0.96, - "98.76653046818197" : 0.961, - "98.77902315929958" : 0.963, - "98.78535176577444" : 0.964, - "98.79116487050871" : 0.965, - "98.79764703069353" : 0.966, - "98.80969002880339" : 0.968, - "98.81516860581237" : 0.969, - "98.82123946141694" : 0.97, - "98.83272856935874" : 0.972, - "98.83852522190979" : 0.973, - "98.84424509760586" : 0.974, - "98.8551199907078" : 0.976, - "98.86074115330463" : 0.977, - "98.87152281736837" : 0.979, - "98.87659008979712" : 0.98, - "98.88767886128079" : 0.982, - "98.89298194833553" : 0.983, - "98.90344553685722" : 0.985, - "98.90869378330127" : 0.986, - "98.91906962684584" : 0.988, - "98.92370365845004" : 0.989, - "98.93381078300217" : 0.991, - "98.93870804953774" : 0.992, - "98.94823386361645" : 0.994, - "98.95781451830585" : 0.996, - "98.96239370929935" : 0.997, - "98.97155209128637" : 0.999, - "98.98057885580769" : 1.001, - "98.98519643522869" : 1.002, - "98.99404770979577" : 1.004, - "99.00295930903462" : 1.006, - "99.01158025303677" : 1.008, - "99.01574813945003" : 1.009, - "99.0239413266887" : 1.011, - "99.03265001566797" : 1.013, - "99.04117773063192" : 1.015, - "99.04948608315307" : 1.017, - "99.05747087607108" : 1.019, - "99.06539534431732" : 1.021, - "99.07347336627353" : 1.023, - "99.0812826692373" : 1.025, - "99.08890551412469" : 1.027, - "99.09648448652352" : 1.029, - "99.10408539516663" : 1.031, - "99.11143403700052" : 1.033, - "99.11869493385728" : 1.035, - "99.12583518137052" : 1.037, - "99.13637554674717" : 1.04, - "99.14304964906945" : 1.042, - "99.15017344439946" : 1.044, - "99.15682561047745" : 1.046, - "99.1663623926783" : 1.049, - "99.17294326596237" : 1.051, - "99.18190422175086" : 1.054, - "99.18795314111114" : 1.056, - "99.19725959274705" : 1.059, - "99.20340174114551" : 1.061, - "99.2121433344912" : 1.064, - "99.22092331626438" : 1.067, - "99.22364341055513" : 1.068, - "99.22960458493829" : 1.07, - "99.23227532267941" : 1.071, - "99.23511058225263" : 1.072, - "99.24052335052879" : 1.074, - "99.24333118979666" : 1.075, - "99.24867814933998" : 1.077, - "99.25106919996652" : 1.078, - "99.25636680296022" : 1.08, - "99.25891140729672" : 1.081, - "99.26421997841254" : 1.083, - "99.26681942335975" : 1.084, - "99.27185379142207" : 1.086, - "99.27439291169752" : 1.087, - "99.27925178980558" : 1.089, - "99.28164284043214" : 1.09, - "99.2864139735631" : 1.092, - "99.29124543136582" : 1.094, - "99.29367487041986" : 1.095, - "99.29845697167296" : 1.097, - "99.30296486987255" : 1.099, - "99.30513107399523" : 1.1, - "99.30994059555368" : 1.102, - "99.31422364724939" : 1.104, - "99.31826540025804" : 1.106, - "99.32073871180063" : 1.107, - "99.32463239516038" : 1.109, - "99.3287893134515" : 1.111, - "99.3329462317426" : 1.113, - "99.33700443693445" : 1.115, - "99.34119974365305" : 1.117, - "99.3452195604174" : 1.119, - "99.34943680338029" : 1.121, - "99.35340177953394" : 1.123, - "99.35738320787081" : 1.125, - "99.36127689123056" : 1.127, - "99.36513767022389" : 1.129, - "99.36894909266758" : 1.131, - "99.37277148323342" : 1.133, - "99.37657193755497" : 1.135, - "99.38016399755587" : 1.137, - "99.38347088638112" : 1.139, - "99.3869532651606" : 1.141, - "99.392305708765" : 1.144, - "99.39569485850629" : 1.146, - "99.39916078510257" : 1.148, - "99.40240186519497" : 1.15, - "99.40746913762372" : 1.153, - "99.41090764391465" : 1.155, - "99.4141048515185" : 1.157, - "99.41900760211513" : 1.16, - "99.42217190535257" : 1.162, - "99.42692110223923" : 1.165, - "99.42999217643847" : 1.167, - "99.43435748905024" : 1.17, - "99.43888732349413" : 1.173, - "99.4416567743345" : 1.175, - "99.44590143760274" : 1.178, - "99.45005287183278" : 1.181, - "99.45401236392536" : 1.184, - "99.45798282414009" : 1.187, - "99.46161875662955" : 1.19, - "99.46544114719538" : 1.193, - "99.46926353776122" : 1.196, - "99.47289947025067" : 1.199, - "99.4776760874427" : 1.203, - "99.48098846032902" : 1.206, - "99.48541958167363" : 1.21, - "99.48851259211715" : 1.213, - "99.4928450003625" : 1.217, - "99.4970951476918" : 1.221, - "99.50008396097498" : 1.224, - "99.50429023581572" : 1.228, - "99.5085074787786" : 1.232, - "99.51245051868798" : 1.236, - "99.51611387148279" : 1.24, - "99.52008981575858" : 1.244, - "99.52367090763734" : 1.248, - "99.528184289898" : 1.253, - "99.53163924837214" : 1.257, - "99.53579616666325" : 1.262, - "99.53936080635879" : 1.266, - "99.54334771875673" : 1.271, - "99.54699461936832" : 1.276, - "99.5507895896288" : 1.281, - "99.55545104153836" : 1.287, - "99.5591253624553" : 1.292, - "99.56254193250196" : 1.297, - "99.566929181358" : 1.303, - "99.57031833109932" : 1.308, - "99.57427782319189" : 1.314, - "99.57871442859758" : 1.321, - "99.58224067986563" : 1.327, - "99.58623856038571" : 1.334, - "99.5901048234401" : 1.341, - "99.5940259271052" : 1.348, - "99.59799638731992" : 1.356, - "99.60184071413005" : 1.364, - "99.6057343974898" : 1.372, - "99.6097651823763" : 1.381, - "99.61158040659048" : 1.385, - "99.61337917862146" : 1.389, - "99.61543570152274" : 1.394, - "99.61744835193545" : 1.398, - "99.61930744863821" : 1.402, - "99.6214133280891" : 1.407, - "99.62319564793688" : 1.411, - "99.62526313896029" : 1.416, - "99.62695771383095" : 1.42, - "99.62930489196893" : 1.425, - "99.63093365810674" : 1.429, - "99.63307792598513" : 1.434, - "99.63487669801611" : 1.438, - "99.6367303106578" : 1.443, - "99.63867715233768" : 1.448, - "99.64102981453674" : 1.454, - "99.642850522812" : 1.459, - "99.64470961951474" : 1.464, - "99.64664549307248" : 1.469, - "99.64849362165309" : 1.474, - "99.65051724018795" : 1.479, - "99.65260666745564" : 1.484, - "99.65446028009733" : 1.489, - "99.65650583487646" : 1.494, - "99.6584417084342" : 1.499, - "99.6602733848316" : 1.504, - "99.66213248153434" : 1.509, - "99.66411771164171" : 1.514, - "99.66636617668044" : 1.52, - "99.66804978342894" : 1.525, - "99.67013921069663" : 1.531, - "99.67204766394902" : 1.536, - "99.6741206390335" : 1.542, - "99.67596328355305" : 1.547, - "99.67788818898865" : 1.552, - "99.67970889726391" : 1.557, - "99.68174896798197" : 1.563, - "99.68383839524967" : 1.569, - "99.68585104566237" : 1.575, - "99.68765530175443" : 1.581, - "99.68954181876254" : 1.587, - "99.69154898511418" : 1.593, - "99.69340808181693" : 1.599, - "99.69549202502355" : 1.606, - "99.69752112761948" : 1.613, - "99.69953377803219" : 1.619, - "99.70123932102499" : 1.625, - "99.70329035986518" : 1.632, - "99.70507816377402" : 1.638, - "99.70706887794246" : 1.645, - "99.70910894866053" : 1.652, - "99.71098998160755" : 1.659, - "99.71313424948595" : 1.667, - "99.71487818090623" : 1.674, - "99.71703341690677" : 1.683, - "99.7189528382813" : 1.691, - "99.72086677559474" : 1.699, - "99.72286845788531" : 1.707, - "99.72467271397737" : 1.714, - "99.72664149190152" : 1.722, - "99.72851704078748" : 1.731, - "99.73059001587197" : 1.741, - "99.73247104881901" : 1.749, - "99.73437950207139" : 1.758, - "99.73649634964443" : 1.768, - "99.73833899416397" : 1.777, - "99.74027486772171" : 1.786, - "99.7422930021955" : 1.797, - "99.74432210479141" : 1.81, - "99.74610442463919" : 1.82, - "99.74820482002902" : 1.832, - "99.7501516617089" : 1.843, - "99.75200527435058" : 1.854, - "99.75399050445793" : 1.866, - "99.75593734613781" : 1.879, - "99.75788967187876" : 1.892, - "99.75990780635254" : 1.905, - "99.76175045087209" : 1.917, - "99.76379052159014" : 1.931, - "99.76566058641504" : 1.943, - "99.76762936433919" : 1.958, - "99.76964749881297" : 1.972, - "99.77156143612643" : 1.986, - "99.7734918256231" : 2.001, - "99.77548253979153" : 2.016, - "99.77740744522711" : 2.03, - "99.77932138254057" : 2.046, - "99.78127370828152" : 2.061, - "99.78323151808353" : 2.076, - "99.78515642351913" : 2.091, - "99.78716907393184" : 2.108, - "99.7891159156117" : 2.124, - "99.79107920947479" : 2.143, - "99.79299863084931" : 2.159, - "99.79498934501774" : 2.177, - "99.79689231420906" : 2.195, - "99.79889399649963" : 2.212, - "99.80088471066807" : 2.231, - "99.80277671173724" : 2.25, - "99.80478936214995" : 2.269, - "99.80576552502042" : 2.28, - "99.80667587915805" : 2.289, - "99.8077123667003" : 2.299, - "99.808628204899" : 2.309, - "99.80958791558626" : 2.32, - "99.81064633937278" : 2.332, - "99.81152378914399" : 2.343, - "99.81256027668624" : 2.355, - "99.81348159894601" : 2.366, - "99.81447969806077" : 2.377, - "99.81543940874802" : 2.389, - "99.8164320238017" : 2.402, - "99.8174027026111" : 2.416, - "99.818411769848" : 2.428, - "99.81937696459633" : 2.442, - "99.82033667528358" : 2.455, - "99.821307354093" : 2.47, - "99.8222944850856" : 2.484, - "99.82328710013928" : 2.497, - "99.82427971519297" : 2.511, - "99.8252449099413" : 2.523, - "99.82624300905604" : 2.537, - "99.82718078349903" : 2.55, - "99.82821727104127" : 2.565, - "99.82913310923998" : 2.576, - "99.83013669241579" : 2.588, - "99.83106349873664" : 2.598, - "99.83205611379032" : 2.609, - "99.83305421290507" : 2.62, - "99.83400843953126" : 2.632, - "99.83504492707351" : 2.645, - "99.83594979715006" : 2.656, - "99.83694241220374" : 2.667, - "99.83790212289101" : 2.677, - "99.83892215825004" : 2.69, - "99.839936709548" : 2.702, - "99.84095126084597" : 2.715, - "99.8418616149836" : 2.726, - "99.84286519815942" : 2.739, - "99.84378652041919" : 2.75, - "99.84477913547288" : 2.762, - "99.84575529834335" : 2.774, - "99.8467150090306" : 2.786, - "99.8476692356568" : 2.798, - "99.84866185071047" : 2.812, - "99.8496270454588" : 2.825, - "99.85063062863463" : 2.84, - "99.85159033932189" : 2.852, - "99.85253908188702" : 2.866, - "99.85356460130711" : 2.881, - "99.8545023757501" : 2.897, - "99.85550047486485" : 2.911, - "99.85650954210173" : 2.927, - "99.8574308643615" : 2.942, - "99.8584399315984" : 2.957, - "99.85938319010245" : 2.973, - "99.86040322546148" : 2.988, - "99.86141229269838" : 3.003, - "99.86234458308029" : 3.017, - "99.86329880970648" : 3.033, - "99.86431336100445" : 3.05, - "99.86523468326422" : 3.065, - "99.86623278237897" : 3.08, - "99.86721991337157" : 3.095, - "99.86817413999776" : 3.112, - "99.86917772317359" : 3.128, - "99.87013743386085" : 3.143, - "99.87110811267026" : 3.158, - "99.87207879147965" : 3.174, - "99.87305495435012" : 3.188, - "99.87404756940381" : 3.206, - "99.87504566851857" : 3.222, - "99.87600537920582" : 3.236, - "99.87703089862592" : 3.254, - "99.87801254555747" : 3.269, - "99.87893386781724" : 3.285, - "99.87992648287091" : 3.302, - "99.88091361386353" : 3.321, - "99.88192268110042" : 3.338, - "99.88282755117699" : 3.355, - "99.88380371404746" : 3.373, - "99.88477439285685" : 3.392, - "99.8857560397884" : 3.411, - "99.88674865484208" : 3.432, - "99.88772481771255" : 3.454, - "99.88870098058302" : 3.477, - "99.8896771434535" : 3.498, - "99.89063685414075" : 3.521, - "99.89161301701122" : 3.544, - "99.89259466394277" : 3.568, - "99.89357631087431" : 3.59, - "99.894568925928" : 3.609, - "99.89552315255419" : 3.628, - "99.8965102835468" : 3.651, - "99.89749193047834" : 3.673, - "99.89844067304345" : 3.693, - "99.89948812870784" : 3.715, - "99.90039848284547" : 3.731, - "99.90138012977701" : 3.751, - "99.9023727448307" : 3.771, - "99.90286082626594" : 3.78, - "99.90333793957903" : 3.79, - "99.90381505289213" : 3.798, - "99.90429765026629" : 3.808, - "99.9048076679458" : 3.819, - "99.90527381313676" : 3.828, - "99.905761894572" : 3.839, - "99.90626094412937" : 3.85, - "99.90676547774783" : 3.862, - "99.90724807512198" : 3.872, - "99.90772518843508" : 3.883, - "99.90820778580925" : 3.894, - "99.90874522379411" : 3.907, - "99.90918943274079" : 3.917, - "99.90968299823709" : 3.928, - "99.91018753185554" : 3.938, - "99.91069754953506" : 3.949, - "99.91115821066494" : 3.96, - "99.91162435585589" : 3.97, - "99.91213985759649" : 3.98, - "99.91260051872636" : 3.992, - "99.91311053640588" : 4.004, - "99.91359861784112" : 4.015, - "99.9140976673985" : 4.027, - "99.91457478071159" : 4.039, - "99.91505737808576" : 4.049, - "99.91555642764314" : 4.059, - "99.91603354095624" : 4.071, - "99.91650517020825" : 4.084, - "99.91699873570457" : 4.097, - "99.91748133307873" : 4.109, - "99.91797489857504" : 4.12, - "99.9184739481324" : 4.133, - "99.91896751362871" : 4.147, - "99.91946656318609" : 4.159, - "99.91996012868239" : 4.17, - "99.92043724199549" : 4.18, - "99.92091983936966" : 4.194, - "99.92143534111024" : 4.206, - "99.9219014863012" : 4.216, - "99.92239505179751" : 4.227, - "99.92286119698846" : 4.238, - "99.92338218279012" : 4.249, - "99.92383187579786" : 4.26, - "99.9243583456606" : 4.273, - "99.92480803866833" : 4.286, - "99.92529612010357" : 4.3, - "99.92579516966094" : 4.311, - "99.92627776703512" : 4.324, - "99.92676584847035" : 4.336, - "99.92725392990559" : 4.349, - "99.9277639475851" : 4.361, - "99.92825202902033" : 4.373, - "99.92872365827236" : 4.386, - "99.9292281918908" : 4.399, - "99.92969982114283" : 4.41, - "99.93017693445593" : 4.428, - "99.93066501589117" : 4.44, - "99.93116406544854" : 4.456, - "99.93164117876164" : 4.474, - "99.93213474425794" : 4.488, - "99.93263379381531" : 4.502, - "99.93313832743377" : 4.521, - "99.93362092480793" : 4.537, - "99.93409255405996" : 4.552, - "99.93457515143412" : 4.569, - "99.93506871693043" : 4.59, - "99.93555131430459" : 4.607, - "99.93603939573983" : 4.625, - "99.93656586560256" : 4.643, - "99.93702104267138" : 4.657, - "99.93750912410661" : 4.673, - "99.93800817366399" : 4.69, - "99.938479802916" : 4.707, - "99.9389733684123" : 4.722, - "99.93947790203076" : 4.735, - "99.93996049940492" : 4.749, - "99.94043761271801" : 4.766, - "99.94092569415325" : 4.784, - "99.94141925964956" : 4.8, - "99.94189637296266" : 4.814, - "99.94241187470324" : 4.829, - "99.94287253583313" : 4.846, - "99.94337706945157" : 4.859, - "99.94387611900895" : 4.874, - "99.94433678013884" : 4.888, - "99.94484131375728" : 4.9, - "99.94532939519252" : 4.914, - "99.94581199256669" : 4.927, - "99.94630007400193" : 4.943, - "99.94679363949822" : 4.957, - "99.94727075281132" : 4.971, - "99.94777528642977" : 4.989, - "99.94824691568179" : 5.003, - "99.94873499711703" : 5.018, - "99.9492340466744" : 5.035, - "99.9497111599875" : 5.049, - "99.9502047254838" : 5.065, - "99.95070377504118" : 5.079, - "99.95118637241535" : 5.094, - "99.95142767110244" : 5.103, - "99.95167993791165" : 5.111, - "99.95190478441553" : 5.118, - "99.95215156716368" : 5.124, - "99.95242577021719" : 5.134, - "99.95265610078212" : 5.144, - "99.952880947286" : 5.152, - "99.95313321409522" : 5.161, - "99.95339096496552" : 5.17, - "99.95362677959153" : 5.18, - "99.95387356233968" : 5.189, - "99.95412582914891" : 5.198, - "99.95437261189706" : 5.204, - "99.954602942462" : 5.213, - "99.95485520927122" : 5.221, - "99.95510747608044" : 5.231, - "99.95532683852325" : 5.24, - "99.95559007345462" : 5.249, - "99.95581491995848" : 5.26, - "99.95605621864557" : 5.269, - "99.95630848545478" : 5.279, - "99.95654978414187" : 5.288, - "99.95679108282896" : 5.298, - "99.95704883369925" : 5.308, - "99.9572791642642" : 5.317, - "99.95752046295128" : 5.327, - "99.95778369788263" : 5.338, - "99.95801951250866" : 5.347, - "99.95827177931787" : 5.356, - "99.9585240461271" : 5.366, - "99.9587598607531" : 5.376, - "99.95899019131805" : 5.385, - "99.95924245812728" : 5.398, - "99.95947827275329" : 5.408, - "99.95973053956251" : 5.419, - "99.95996635418852" : 5.431, - "99.96020765287561" : 5.44, - "99.96045443562376" : 5.452, - "99.96069573431085" : 5.466, - "99.9609589692422" : 5.477, - "99.96119478386822" : 5.486, - "99.96143059849423" : 5.496, - "99.96167189718132" : 5.506, - "99.96193513211267" : 5.52, - "99.96216546267762" : 5.532, - "99.96241224542577" : 5.544, - "99.96265902817393" : 5.556, - "99.96289484279994" : 5.567, - "99.96314710960917" : 5.585, - "99.96338292423518" : 5.603, - "99.96364615916654" : 5.617, - "99.9638929419147" : 5.631, - "99.9641287565407" : 5.647, - "99.96436457116671" : 5.664, - "99.9646058698538" : 5.677, - "99.96485265260195" : 5.689, - "99.96508846722796" : 5.7, - "99.96534621809826" : 5.718, - "99.96559848490747" : 5.742, - "99.9658342995335" : 5.758, - "99.96606463009843" : 5.775, - "99.96631689690766" : 5.789, - "99.96655819559474" : 5.801, - "99.96681594646503" : 5.814, - "99.96706272921318" : 5.831, - "99.96729305977813" : 5.842, - "99.96753435846522" : 5.855, - "99.96778662527444" : 5.87, - "99.96802243990045" : 5.884, - "99.96826373858754" : 5.897, - "99.96853245757997" : 5.909, - "99.96876827220598" : 5.92, - "99.96899860277092" : 5.931, - "99.96925086958014" : 5.945, - "99.96948668420616" : 5.959, - "99.96976088725965" : 5.975, - "99.96999670188568" : 5.983, - "99.97023251651169" : 5.994, - "99.97047929925984" : 6.009, - "99.9707041457637" : 6.024, - "99.97095641257293" : 6.041, - "99.97119222719894" : 6.056, - "99.97145546213031" : 6.072, - "99.97169127675632" : 6.089, - "99.97193805950448" : 6.107, - "99.97216839006941" : 6.121, - "99.97242065687864" : 6.139, - "99.97265647150465" : 6.152, - "99.97290325425281" : 6.168, - "99.97315003700096" : 6.183, - "99.97339681974911" : 6.204, - "99.97366005468048" : 6.22, - "99.97389038524543" : 6.238, - "99.97412619987144" : 6.254, - "99.97437846668065" : 6.271, - "99.97461428130667" : 6.293, - "99.97485557999374" : 6.316, - "99.97510784680297" : 6.336, - "99.97534366142898" : 6.356, - "99.97559044417714" : 6.375, - "99.97572754570389" : 6.39, - "99.97583174286422" : 6.399, - "99.9759633603299" : 6.408, - "99.97607852561238" : 6.417, - "99.97621014307806" : 6.428, - "99.97633627648267" : 6.442, - "99.97644595770407" : 6.451, - "99.97657209110868" : 6.465, - "99.97669274045222" : 6.475, - "99.9768243579179" : 6.49, - "99.97693403913931" : 6.506, - "99.97706017254391" : 6.519, - "99.97718082188746" : 6.535, - "99.977301471231" : 6.548, - "99.97742760463561" : 6.565, - "99.97754276991809" : 6.577, - "99.97766341926162" : 6.596, - "99.97778406860516" : 6.617, - "99.97791568607084" : 6.629, - "99.97803633541439" : 6.643, - "99.97815150069685" : 6.658, - "99.9782721500404" : 6.686, - "99.97839828344502" : 6.708, - "99.9785299009107" : 6.722, - "99.97863958213209" : 6.744, - "99.97876023147563" : 6.76, - "99.97888636488025" : 6.778, - "99.9790070142238" : 6.794, - "99.97912766356733" : 6.815, - "99.97924831291087" : 6.831, - "99.97937444631549" : 6.848, - "99.9795005797201" : 6.861, - "99.97962122906364" : 6.875, - "99.97974187840718" : 6.886, - "99.97986252775073" : 6.897, - "99.97998866115533" : 6.913, - "99.9801038264378" : 6.933, - "99.98023544390348" : 6.947, - "99.9803615773081" : 6.96, - "99.98047125852949" : 6.972, - "99.98059739193411" : 6.982, - "99.98071804127765" : 6.997, - "99.98084417468226" : 7.011, - "99.98095933996473" : 7.021, - "99.98108547336935" : 7.036, - "99.98121709083503" : 7.05, - "99.98132677205643" : 7.063, - "99.98145290546104" : 7.083, - "99.98157355480458" : 7.095, - "99.98169420414813" : 7.105, - "99.98181485349167" : 7.118, - "99.98194098689628" : 7.135, - "99.98205615217874" : 7.151, - "99.98218228558336" : 7.168, - "99.98230293492689" : 7.182, - "99.98242358427044" : 7.202, - "99.98254423361398" : 7.213, - "99.98267585107966" : 7.228, - "99.98279101636213" : 7.243, - "99.98291714976675" : 7.261, - "99.98303779911029" : 7.28, - "99.98315844845384" : 7.303, - "99.98327909779736" : 7.319, - "99.98339974714091" : 7.335, - "99.98353684866767" : 7.358, - "99.98365201395013" : 7.371, - "99.98377266329368" : 7.396, - "99.98388782857614" : 7.413, - "99.98401944604183" : 7.43, - "99.98413461132431" : 7.445, - "99.98425526066784" : 7.467, - "99.98438139407246" : 7.485, - "99.98451301153814" : 7.503, - "99.98463366088167" : 7.523, - "99.98474334210307" : 7.534, - "99.98486399144662" : 7.549, - "99.98501206109552" : 7.568, - "99.98511077419477" : 7.585, - "99.98523142353831" : 7.606, - "99.98535755694293" : 7.628, - "99.98548917440861" : 7.646, - "99.98559885563" : 7.656, - "99.98573047309569" : 7.667, - "99.98584015431709" : 7.685, - "99.98596628772171" : 7.71, - "99.98608693706524" : 7.729, - "99.98621855453092" : 7.754, - "99.98632823575232" : 7.774, - "99.98645985321801" : 7.796, - "99.98659147068369" : 7.826, - "99.98669566784402" : 7.844, - "99.98682180124864" : 7.864, - "99.98694793465324" : 7.884, - "99.98706309993571" : 7.906, - "99.98718374927925" : 7.923, - "99.98730988268387" : 7.942, - "99.98743601608848" : 7.965, - "99.98755118137095" : 7.978, - "99.98767183071449" : 7.996, - "99.98779796411911" : 8.02, - "99.98785828879087" : 8.03, - "99.98791861346264" : 8.041, - "99.98797893813442" : 8.058, - "99.98803926280618" : 8.074, - "99.98809958747796" : 8.091, - "99.98815991214973" : 8.101, - "99.9882202368215" : 8.109, - "99.98828604555435" : 8.122, - "99.98834637022611" : 8.129, - "99.98840669489788" : 8.139, - "99.9884779876918" : 8.153, - "99.98852734424142" : 8.159, - "99.9885876689132" : 8.173, - "99.98864799358496" : 8.191, - "99.98872477043994" : 8.207, - "99.98877412698958" : 8.219, - "99.98883445166135" : 8.227, - "99.98890026039419" : 8.253, - "99.98895510100489" : 8.269, - "99.98901542567666" : 8.277, - "99.98908671847057" : 8.298, - "99.9891360750202" : 8.311, - "99.98920736781412" : 8.32, - "99.98926220842482" : 8.337, - "99.98932253309658" : 8.35, - "99.98938285776835" : 8.365, - "99.98944318244013" : 8.378, - "99.98950899117297" : 8.391, - "99.98956383178367" : 8.409, - "99.98962415645543" : 8.425, - "99.98968996518828" : 8.45, - "99.98975028986004" : 8.462, - "99.98981061453182" : 8.479, - "99.98987093920358" : 8.492, - "99.98993126387536" : 8.503, - "99.98999158854713" : 8.52, - "99.9900519132189" : 8.534, - "99.99012320601281" : 8.558, - "99.99017804662351" : 8.567, - "99.99023837129528" : 8.583, - "99.99029869596706" : 8.608, - "99.9903645046999" : 8.621, - "99.9904193453106" : 8.632, - "99.99047966998236" : 8.65, - "99.99053999465414" : 8.668, - "99.99060580338698" : 8.684, - "99.99066612805875" : 8.718, - "99.99073193679159" : 8.739, - "99.99078677740229" : 8.751, - "99.99084710207406" : 8.778, - "99.9909129108069" : 8.793, - "99.9909677514176" : 8.805, - "99.99102807608938" : 8.817, - "99.99109388482222" : 8.847, - "99.99115420949398" : 8.871, - "99.99121453416575" : 8.898, - "99.99127485883753" : 8.907, - "99.99134066757037" : 8.927, - "99.99140099224213" : 8.937, - "99.99145583285284" : 8.958, - "99.99152164158568" : 8.976, - "99.99158196625746" : 9.001, - "99.99164777499028" : 9.014, - "99.99170261560099" : 9.033, - "99.99176294027276" : 9.057, - "99.99182326494453" : 9.082, - "99.99188358961631" : 9.099, - "99.99194391428807" : 9.127, - "99.99200972302091" : 9.16, - "99.99207004769269" : 9.197, - "99.99213037236446" : 9.226, - "99.99219069703622" : 9.25, - "99.992251021708" : 9.274, - "99.99231134637976" : 9.32, - "99.99237167105154" : 9.347, - "99.99243199572331" : 9.37, - "99.99249780445615" : 9.393, - "99.99256361318899" : 9.418, - "99.99262393786076" : 9.45, - "99.99267877847146" : 9.478, - "99.99273910314324" : 9.5, - "99.99280491187608" : 9.53, - "99.99285975248678" : 9.553, - "99.99292007715854" : 9.573, - "99.99299136995246" : 9.601, - "99.99304621056315" : 9.62, - "99.99310653523493" : 9.646, - "99.99317234396777" : 9.667, - "99.99322718457847" : 9.682, - "99.99328750925024" : 9.707, - "99.99334783392202" : 9.721, - "99.99341364265486" : 9.75, - "99.99347396732662" : 9.785, - "99.99353429199839" : 9.801, - "99.99359461667017" : 9.824, - "99.99366042540301" : 9.857, - "99.99371526601371" : 9.879, - "99.99377559068547" : 9.926, - "99.99383591535725" : 9.946, - "99.9939017240901" : 9.977, - "99.99392914439544" : 9.991, - "99.99396204876186" : 10.012, - "99.9939894690672" : 10.029, - "99.9940278574947" : 10.041, - "99.99404979373898" : 10.048, - "99.9940826981054" : 10.069, - "99.99411011841075" : 10.083, - "99.99414302277717" : 10.095, - "99.99417592714359" : 10.108, - "99.99420334744894" : 10.115, - "99.99424173587643" : 10.126, - "99.99426367212071" : 10.136, - "99.99430206054821" : 10.167, - "99.99432399679249" : 10.184, - "99.99435690115891" : 10.208, - "99.99438980552533" : 10.226, - "99.99441722583067" : 10.241, - "99.9944501301971" : 10.268, - "99.99447755050244" : 10.278, - "99.99451045486886" : 10.306, - "99.99453787517422" : 10.323, - "99.99457077954064" : 10.343, - "99.99460368390706" : 10.355, - "99.9946311042124" : 10.366, - "99.99466400857882" : 10.387, - "99.99469142888418" : 10.397, - "99.9947243332506" : 10.415, - "99.99475175355595" : 10.431, - "99.99478465792237" : 10.457, - "99.99481756228879" : 10.475, - "99.99484498259415" : 10.503, - "99.99487788696055" : 10.517, - "99.99490530726591" : 10.543, - "99.99493821163233" : 10.572, - "99.99496563193767" : 10.574, - "99.9949985363041" : 10.592, - "99.99502595660945" : 10.617, - "99.99506434503694" : 10.638, - "99.9950917653423" : 10.657, - "99.99511918564764" : 10.672, - "99.99515209001406" : 10.686, - "99.99517951031942" : 10.701, - "99.99521241468584" : 10.716, - "99.99523983499118" : 10.723, - "99.99527822341868" : 10.73, - "99.99530564372402" : 10.737, - "99.99533306402938" : 10.749, - "99.99536596839579" : 10.778, - "99.99539338870115" : 10.792, - "99.99542629306757" : 10.802, - "99.99545371337291" : 10.807, - "99.99549210180041" : 10.827, - "99.99551403804469" : 10.841, - "99.99554694241111" : 10.856, - "99.9955853308386" : 10.869, - "99.99560726708287" : 10.882, - "99.9956401714493" : 10.922, - "99.99566759175465" : 10.955, - "99.99570598018214" : 10.967, - "99.99572791642642" : 10.976, - "99.99576082079284" : 11.006, - "99.99579372515926" : 11.023, - "99.9958211454646" : 11.032, - "99.99585404983102" : 11.059, - "99.99588147013638" : 11.07, - "99.9959143745028" : 11.076, - "99.99594179480815" : 11.093, - "99.99597469917457" : 11.108, - "99.99600760354099" : 11.128, - "99.99603502384635" : 11.145, - "99.99607341227383" : 11.155, - "99.99610083257919" : 11.163, - "99.99612825288453" : 11.174, - "99.99615567318989" : 11.187, - "99.99619954567845" : 11.211, - "99.99621599786165" : 11.214, - "99.99624890222807" : 11.241, - "99.99628729065556" : 11.252, - "99.99631471096092" : 11.259, - "99.99634213126626" : 11.278, - "99.99636955157162" : 11.297, - "99.99640245593804" : 11.335, - "99.99642987624338" : 11.361, - "99.9964627806098" : 11.39, - "99.99649568497622" : 11.426, - "99.99652310528158" : 11.445, - "99.996556009648" : 11.456, - "99.99658342995335" : 11.489, - "99.99661633431977" : 11.516, - "99.99664375462513" : 11.546, - "99.99667665899155" : 11.595, - "99.99670956335797" : 11.622, - "99.99673698366331" : 11.643, - "99.99676988802973" : 11.674, - "99.99679730833508" : 11.709, - "99.9968302127015" : 11.774, - "99.99685763300685" : 11.791, - "99.99689053737328" : 11.804, - "99.99691795767862" : 11.838, - "99.99695086204504" : 11.886, - "99.99696731422826" : 11.888, - "99.99698376641146" : 11.893, - "99.9969947345336" : 11.898, - "99.99701118671682" : 11.924, - "99.99702763890002" : 11.963, - "99.99704409108324" : 11.967, - "99.99705505920538" : 11.981, - "99.99707151138858" : 12.047, - "99.9970879635718" : 12.064, - "99.997104415755" : 12.083, - "99.99712086793822" : 12.12, - "99.99713183606036" : 12.15, - "99.99714828824357" : 12.163, - "99.99716474042678" : 12.187, - "99.99718119260999" : 12.195, - "99.9971976447932" : 12.199, - "99.99720861291533" : 12.212, - "99.99723054915961" : 12.225, - "99.99724151728175" : 12.236, - "99.99725796946497" : 12.245, - "99.99726893758711" : 12.253, - "99.99728538977031" : 12.272, - "99.99730184195353" : 12.293, - "99.99731829413673" : 12.325, - "99.99733474631995" : 12.332, - "99.99734571444209" : 12.344, - "99.9973621666253" : 12.372, - "99.99737861880851" : 12.407, - "99.99740055505279" : 12.412, - "99.99740603911386" : 12.417, - "99.99742249129707" : 12.437, - "99.99743894348028" : 12.464, - "99.9974553956635" : 12.483, - "99.9974718478467" : 12.496, - "99.99748281596884" : 12.505, - "99.99749926815205" : 12.53, - "99.99751572033526" : 12.558, - "99.99753217251848" : 12.563, - "99.99754862470168" : 12.589, - "99.99755959282382" : 12.61, - "99.99757604500704" : 12.621, - "99.99759798125132" : 12.677, - "99.99760894937346" : 12.682, - "99.9976199174956" : 12.693, - "99.9976363696788" : 12.715, - "99.99765282186202" : 12.743, - "99.99766927404522" : 12.793, - "99.99768572622843" : 12.841, - "99.99769669435057" : 12.864, - "99.99771314653378" : 12.89, - "99.99772959871699" : 12.908, - "99.9977460509002" : 12.921, - "99.99775701902234" : 12.934, - "99.99777895526663" : 12.943, - "99.99778992338877" : 12.969, - "99.99780637557197" : 12.975, - "99.99782282775519" : 12.99, - "99.99783379587733" : 12.998, - "99.99785024806053" : 13.011, - "99.99787218430481" : 13.017, - "99.99788315242695" : 13.034, - "99.99789960461017" : 13.066, - "99.99791057273231" : 13.086, - "99.99792702491551" : 13.105, - "99.99794347709873" : 13.115, - "99.99795992928193" : 13.155, - "99.99797089740407" : 13.158, - "99.99798734958729" : 13.194, - "99.9980038017705" : 13.234, - "99.99802025395371" : 13.25, - "99.99803670613692" : 13.265, - "99.99804767425906" : 13.272, - "99.99806412644227" : 13.293, - "99.99808057862548" : 13.318, - "99.9980970308087" : 13.33, - "99.99810799893083" : 13.34, - "99.99812445111404" : 13.396, - "99.99814090329724" : 13.441, - "99.99815735548046" : 13.466, - "99.99817380766366" : 13.476, - "99.9981847757858" : 13.483, - "99.99820122796902" : 13.499, - "99.99821768015222" : 13.587, - "99.99824510045758" : 13.636, - "99.99825058451864" : 13.638, - "99.99826155264078" : 13.649, - "99.998278004824" : 13.707, - "99.9982944570072" : 13.742, - "99.99831090919042" : 13.768, - "99.99832187731256" : 13.817, - "99.99833832949577" : 13.85, - "99.99835478167898" : 13.876, - "99.99837123386219" : 13.886, - "99.9983876860454" : 13.906, - "99.99839865416754" : 13.919, - "99.99842059041183" : 13.934, - "99.99843155853397" : 13.945, - "99.99844801071717" : 13.966, - "99.99845897883931" : 13.97, - "99.99848091508359" : 13.976, - "99.99848639914467" : 13.991, - "99.99849188320573" : 13.994, - "99.99849736726681" : 14.032, - "99.99850833538895" : 14.036, - "99.99851381945001" : 14.039, - "99.99852478757215" : 14.045, - "99.99853027163323" : 14.046, - "99.99853575569429" : 14.049, - "99.99854672381643" : 14.06, - "99.99855220787751" : 14.079, - "99.99856317599965" : 14.09, - "99.99856866006071" : 14.096, - "99.99857414412179" : 14.105, - "99.99858511224393" : 14.13, - "99.998590596305" : 14.131, - "99.99860156442713" : 14.145, - "99.9986070484882" : 14.159, - "99.99861253254927" : 14.16, - "99.99862350067141" : 14.168, - "99.99862898473248" : 14.173, - "99.99863446879355" : 14.184, - "99.9986454369157" : 14.207, - "99.99865092097676" : 14.211, - "99.9986618890989" : 14.228, - "99.99866737315998" : 14.233, - "99.99867285722104" : 14.241, - "99.99868930940426" : 14.258, - "99.9987002775264" : 14.284, - "99.99870576158746" : 14.296, - "99.99871124564854" : 14.306, - "99.99872221377068" : 14.32, - "99.99872769783174" : 14.321, - "99.99874415001496" : 14.326, - "99.99874963407602" : 14.328, - "99.99876060219816" : 14.333, - "99.99876608625924" : 14.336, - "99.99877705438138" : 14.346, - "99.99878253844244" : 14.35, - "99.99878802250352" : 14.353, - "99.99879899062566" : 14.365, - "99.99880447468672" : 14.38, - "99.9988099587478" : 14.389, - "99.99882092686994" : 14.405, - "99.998826410931" : 14.409, - "99.99883737905314" : 14.415, - "99.99884286311422" : 14.422, - "99.99884834717528" : 14.439, - "99.99885931529742" : 14.467, - "99.9988647993585" : 14.485, - "99.99887576748064" : 14.539, - "99.9988812515417" : 14.543, - "99.99888673560278" : 14.55, - "99.99889770372492" : 14.595, - "99.99890318778598" : 14.597, - "99.99891415590812" : 14.606, - "99.9989196399692" : 14.635, - "99.99892512403027" : 14.637, - "99.9989360921524" : 14.649, - "99.99894157621348" : 14.65, - "99.99895254433562" : 14.688, - "99.99895802839669" : 14.69, - "99.99896351245776" : 14.708, - "99.9989744805799" : 14.724, - "99.99897996464097" : 14.728, - "99.99898544870204" : 14.736, - "99.99899641682418" : 14.76, - "99.99900190088525" : 14.803, - "99.99901286900739" : 14.833, - "99.99901835306846" : 14.834, - "99.99902383712953" : 14.84, - "99.99903480525167" : 14.867, - "99.99904028931275" : 14.874, - "99.99905125743489" : 14.895, - "99.99905674149595" : 14.907, - "99.99906222555703" : 14.915, - "99.99907319367915" : 14.946, - "99.99907867774023" : 14.966, - "99.99908964586237" : 14.972, - "99.99909512992343" : 14.974, - "99.99910061398451" : 14.978, - "99.99911158210665" : 14.984, - "99.99912255022879" : 14.99, - "99.99912803428985" : 14.992, - "99.99913351835093" : 14.993, - "99.999139002412" : 15.025, - "99.99914997053413" : 15.029, - "99.99915545459521" : 15.03, - "99.99916093865627" : 15.034, - "99.99917190677841" : 15.038, - "99.99917739083949" : 15.039, - "99.99918835896163" : 15.045, - "99.9991938430227" : 15.046, - "99.99919932708377" : 15.069, - "99.99921029520591" : 15.073, - "99.99921577926698" : 15.083, - "99.99922674738912" : 15.094, - "99.9992322314502" : 15.114, - "99.99923771551126" : 15.115, - "99.99924319957233" : 15.119, - "99.9992486836334" : 15.12, - "99.99925416769447" : 15.122, - "99.99926513581661" : 15.123, - "99.99927061987768" : 15.124, - "99.99927610393875" : 15.127, - "99.99928158799982" : 15.129, - "99.9992870720609" : 15.131, - "99.99929255612196" : 15.143, - "99.99929804018304" : 15.159, - "99.9993035242441" : 15.16, - "99.99930900830518" : 15.161, - "99.99931997642732" : 15.166, - "99.99932546048838" : 15.177, - "99.99933094454946" : 15.179, - "99.9993419126716" : 15.187, - "99.99934739673266" : 15.208, - "99.99935288079374" : 15.229, - "99.9993583648548" : 15.252, - "99.99936384891588" : 15.269, - "99.99936933297694" : 15.29, - "99.99937481703802" : 15.312, - "99.99938030109908" : 15.319, - "99.99938578516016" : 15.331, - "99.99939126922122" : 15.332, - "99.9993967532823" : 15.335, - "99.99940223734336" : 15.345, - "99.99940772140444" : 15.352, - "99.9994132054655" : 15.372, - "99.99941868952658" : 15.383, - "99.99942417358764" : 15.395, - "99.99942965764872" : 15.401, - "99.99943514170978" : 15.408, - "99.99944062577086" : 15.414, - "99.99944610983192" : 15.415, - "99.999451593893" : 15.425, - "99.99945707795406" : 15.426, - "99.99946256201514" : 15.431, - "99.9994680460762" : 15.434, - "99.99947353013728" : 15.436, - "99.99948449825942" : 15.44, - "99.99948998232048" : 15.445, - "99.99949546638156" : 15.449, - "99.99950095044262" : 15.463, - "99.9995064345037" : 15.468, - "99.99951191856476" : 15.486, - "99.99951740262584" : 15.517, - "99.9995228866869" : 15.522, - "99.99952837074798" : 15.563, - "99.99953385480904" : 15.617, - "99.99953933887011" : 15.685, - "99.99954482293118" : 15.698, - "99.99955030699225" : 15.71, - "99.99955579105333" : 15.715, - "99.99956127511439" : 15.815, - "99.99956675917547" : 15.868, - "99.99957224323653" : 15.878, - "99.9995777272976" : 15.946, - "99.99958321135867" : 15.966, - "99.99958869541975" : 15.996, - "99.99959417948081" : 16.036, - "99.99959966354189" : 16.039, - "99.99960514760295" : 16.05, - "99.99961611572509" : 16.059, - "99.99962159978617" : 16.087, - "99.99962708384723" : 16.143, - "99.99963256790831" : 16.149, - "99.99963805196937" : 16.179, - "99.99964353603045" : 16.18, - "99.99964902009151" : 16.191, - "99.99965450415259" : 16.193, - "99.99965998821365" : 16.197, - "99.99966547227473" : 16.245, - "99.99967095633579" : 16.309, - "99.99967644039687" : 16.331, - "99.99968740851901" : 16.334, - "99.99969289258007" : 16.34, - "99.99969837664115" : 16.341, - "99.99970386070221" : 16.35, - "99.99970934476329" : 16.356, - "99.99971482882435" : 16.358, - "99.99972031288543" : 16.362, - "99.99972579694649" : 16.373, - "99.99973128100757" : 16.378, - "99.99973676506863" : 16.397, - "99.99974224912971" : 16.449, - "99.99974773319077" : 16.456, - "99.99975321725185" : 16.48, - "99.99975870131291" : 16.485, - "99.99976418537399" : 16.497, - "99.99976966943505" : 16.586, - "99.99977515349613" : 16.622, - "99.9997806375572" : 16.64, - "99.99978612161827" : 16.644, - "99.99979160567933" : 16.666, - "99.99979708974041" : 16.67, - "99.99980257380147" : 16.771, - "99.99980805786255" : 16.809, - "99.99981354192361" : 16.824, - "99.99981902598469" : 16.828, - "99.99982451004576" : 16.865, - "99.99982999410683" : 16.872, - "99.9998354781679" : 16.881, - "99.99984096222897" : 16.99, - "99.99984644629004" : 17.003, - "99.99985193035111" : 17.007, - "99.99985741441218" : 17.013, - "99.99986289847325" : 17.033, - "99.99986838253432" : 17.072, - "99.9998738665954" : 17.081, - "99.99987935065646" : 17.155, - "99.99988483471753" : 17.217, - "99.9998903187786" : 17.281, - "99.99989580283967" : 17.312, - "99.99990128690074" : 17.373, - "99.99990677096181" : 17.379, - "99.99991225502288" : 17.419, - "99.99991773908395" : 17.453, - "99.99992322314502" : 17.492, - "99.9999287072061" : 17.504, - "99.99993419126716" : 17.654, - "99.99993967532824" : 17.662, - "99.9999451593893" : 17.717, - "99.99995064345038" : 17.731, - "99.99995612751144" : 17.96, - "99.99996161157252" : 17.966, - "99.99996709563358" : 18.386, - "99.99997257969466" : 18.445, - "99.99997806375572" : 18.601, - "99.9999835478168" : 18.608, - "99.99998903187786" : 19.107, - "99.99999451593894" : 19.464, - "100.0" : 19.476 - }, - "aggregatedEndToEndLatencyAvg" : 0.5068835266044416, - "aggregatedEndToEndLatency50pct" : 0.482, - "aggregatedEndToEndLatency75pct" : 0.582, - "aggregatedEndToEndLatency95pct" : 0.762, - "aggregatedEndToEndLatency99pct" : 1.006, - "aggregatedEndToEndLatency999pct" : 3.725, - "aggregatedEndToEndLatency9999pct" : 8.523, - "aggregatedEndToEndLatencyMax" : 19.476 -} \ No newline at end of file diff --git a/blog/results/rabbitmq/throughput/classic.json b/blog/results/rabbitmq/throughput/classic.json deleted file mode 100644 index 6aa87475..00000000 --- a/blog/results/rabbitmq/throughput/classic.json +++ /dev/null @@ -1,3149 +0,0 @@ -{ - "workload" : "16-partitions-500K-rate-4-producer", - "driver" : "RabbitMQ", - "publishRate" : [ 114790.04183303902, 110405.66831122004, 111533.63374154877, 110708.317373061, 111616.84176661096, 107771.56721915911, 110502.12245757156, 110596.63978845082, 111436.0665998785, 111837.7016994014, 111153.40046655523, 110307.34622986628, 110838.67731021653, 110923.6536502014, 111097.57733067399, 111698.41803535381, 111578.97635324931, 110763.25856634266, 111009.70160329387, 111007.83488489165, 110440.06006144367, 111490.9487325307, 111381.15454992457, 110874.84792603209, 110564.76479133192, 111341.99121204916, 111833.98798656822, 111365.58049170507, 107314.25337300905, 105917.62100788252, 106578.95904764802, 106059.6902126352, 109150.68682285989, 112814.59816941681, 113104.5054632772, 110282.61166974722, 109089.19128380023, 111463.18232511538, 112033.93138197128, 111037.15916866109, 112556.48211524125, 110400.79475898716, 107158.26163352086, 106854.60555462354, 108116.42698859765, 106584.57120766785, 107111.63749864655, 106956.3453810658, 106025.97767629003, 106482.63033599779, 106445.0672780114, 106113.88083576484, 109025.03186618796, 108815.44202716045, 110413.08221531, 111907.7858893244, 111488.31955124397, 108296.62379944613, 106764.3813623178, 107091.62916665923 ], - "consumeRate" : [ 114808.18623118766, 110805.43857533991, 111427.99601350373, 111009.61102555314, 110944.47609003182, 108270.38691443064, 110418.54312915812, 110564.5978800418, 111461.69967934325, 111661.62917032282, 111150.83684055152, 110447.64346595886, 110839.86033921866, 110924.63986089831, 111103.29679704654, 111706.70194169896, 111514.7777334126, 110831.59759009113, 110874.45567331763, 110843.62750940038, 110765.17184932192, 111408.67792736943, 111187.14474966697, 111026.4123679263, 110802.66319977435, 111029.71240920573, 112092.71568661678, 110948.60877118615, 107495.69218506056, 105970.35994139357, 106666.251503091, 106092.04981751148, 109153.8441960395, 112723.17685027172, 112769.29114754446, 110730.78552444982, 108940.77182294913, 111354.68304715697, 112111.76999278725, 111487.32821202035, 112101.75149305927, 110487.20505645544, 106976.698607093, 106785.97215795227, 107793.75968000817, 106799.33387130656, 106949.97815388844, 106905.57794311781, 106188.33340170872, 106892.63477810798, 106479.59760720572, 106135.48302127606, 108877.77031946648, 109069.97601146826, 110314.6298170386, 111642.14973760118, 111773.79196001084, 108099.49769222192, 106541.73154635324, 107346.38638283398 ], - "backlog" : [ -38533, -42591, -41516, -44574, -37752, -42814, -41964, -41644, -41900, -40115, -40088, -41513, -41524, -41534, -41592, -41676, -41025, -41718, -40346, -38679, -41977, -41143, -39176, -40716, -43129, -39963, -42586, -38359, -40200, -40734, -41620, -41949, -41978, -41052, -37653, -42199, -40694, -39594, -40383, -44946, -40336, -41211, -39370, -38674, -35402, -37581, -35941, -35426, -37073, -41232, -41581, -41800, -40305, -42895, -41897, -39204, -42098, -40101, -37841, -40424 ], - "publishLatencyAvg" : [ 1428.5086809694437, 1440.56949942234, 1422.7495733217163, 1425.4422182492594, 1426.2625266784178, 1468.3871561229744, 1439.1682594733595, 1430.2602405054943, 1426.7579197361345, 1425.7844974472437, 1426.4876534192408, 1435.8521476181238, 1432.1942772921725, 1431.8341881524952, 1424.8037670061988, 1419.9345542516376, 1422.144500867112, 1429.3298918368691, 1431.9911872853743, 1430.0081915305082, 1431.9840038474424, 1424.4319034659839, 1423.1466472832178, 1423.1716684247035, 1437.4268407707575, 1428.2637350802504, 1426.278379511752, 1424.384670580595, 1464.635136396634, 1471.683049287948, 1483.8068490616154, 1498.0179555099112, 1455.516868109606, 1415.662597620163, 1405.2557059203568, 1429.6510261117776, 1454.5317413582054, 1422.9162381654385, 1414.7344411519446, 1429.2469241028512, 1419.5970813288307, 1430.2620618536346, 1455.433599163206, 1474.8914174120964, 1440.753414349185, 1382.805822396168, 1410.103372348747, 1401.541455162689, 1406.6498175430472, 1458.2488151911605, 1496.0952913173546, 1498.3385397080367, 1453.940690964299, 1453.1424593920074, 1445.0737412864764, 1424.6383011165588, 1417.6116167521495, 1468.1036810369408, 1453.522231553389, 1471.3282555954943 ], - "publishLatency50pct" : [ 1555.647, 1551.175, 1548.951, 1548.847, 1516.687, 1592.559, 1587.103, 1576.375, 1558.071, 1537.175, 1538.279, 1598.719, 1570.383, 1589.631, 1564.391, 1565.943, 1568.407, 1585.751, 1575.567, 1596.951, 1603.551, 1600.439, 1565.335, 1576.543, 1576.863, 1549.431, 1516.879, 1510.655, 1562.071, 1631.383, 1678.135, 1722.799, 1658.303, 1601.903, 1578.423, 1578.559, 1596.175, 1540.615, 1547.039, 1556.135, 1535.503, 1538.543, 1586.535, 1635.375, 1594.559, 1464.551, 1521.175, 1499.135, 1507.375, 1635.679, 1700.255, 1676.431, 1628.199, 1633.695, 1560.215, 1542.823, 1529.943, 1605.991, 1602.231, 1652.567 ], - "publishLatency75pct" : [ 1971.263, 1990.055, 1950.055, 1952.271, 1986.423, 2031.559, 1960.487, 1954.031, 1956.015, 1965.687, 1963.903, 1951.367, 1960.023, 1949.479, 1943.663, 1923.831, 1931.535, 1938.383, 1952.639, 1930.591, 1926.735, 1934.743, 1937.439, 1933.983, 1969.535, 1975.895, 1979.255, 1975.191, 2022.423, 1970.191, 1974.191, 1989.103, 1944.959, 1906.679, 1905.919, 1955.151, 1981.207, 1950.327, 1948.319, 1977.847, 1954.511, 1970.727, 1965.815, 1977.191, 1915.943, 1884.599, 1884.135, 1878.103, 1888.223, 1940.143, 1993.439, 2017.983, 1959.687, 1954.503, 1993.943, 1969.303, 1952.911, 2002.911, 1945.903, 1964.159 ], - "publishLatency95pct" : [ 2158.863, 2190.431, 2146.863, 2143.343, 2163.727, 2217.423, 2161.231, 2134.943, 2133.311, 2134.847, 2129.519, 2141.951, 2123.919, 2118.431, 2117.183, 2118.223, 2111.887, 2125.839, 2126.975, 2110.799, 2109.727, 2104.335, 2108.543, 2123.775, 2123.439, 2120.751, 2118.319, 2135.071, 2210.319, 2236.527, 2214.719, 2204.335, 2151.471, 2096.511, 2087.895, 2133.951, 2178.255, 2119.167, 2096.823, 2118.095, 2101.983, 2138.239, 2234.783, 2203.599, 2203.967, 2244.223, 2238.895, 2237.439, 2262.447, 2240.847, 2216.447, 2219.775, 2149.791, 2158.463, 2157.135, 2121.263, 2116.783, 2184.671, 2233.023, 2224.031 ], - "publishLatency99pct" : [ 2242.751, 2273.471, 2232.751, 2211.855, 2235.359, 2291.071, 2226.591, 2200.463, 2202.447, 2191.807, 2186.063, 2200.943, 2181.663, 2196.879, 2174.191, 2183.663, 2177.103, 2187.087, 2196.415, 2164.943, 2165.567, 2159.823, 2167.295, 2188.223, 2184.863, 2165.183, 2191.663, 2189.183, 2274.703, 2312.799, 2302.799, 2281.615, 2224.079, 2171.855, 2140.175, 2219.135, 2250.575, 2195.551, 2145.967, 2163.071, 2157.247, 2221.007, 2309.775, 2272.623, 2269.423, 2320.511, 2309.551, 2302.767, 2330.047, 2311.407, 2292.527, 2287.471, 2227.887, 2230.719, 2228.751, 2170.063, 2174.623, 2246.207, 2299.695, 2286.815 ], - "publishLatency999pct" : [ 2328.255, 2338.943, 2319.279, 2259.119, 2281.743, 2357.599, 2268.575, 2254.511, 2271.183, 2238.991, 2235.087, 2257.263, 2259.215, 2254.703, 2221.455, 2251.487, 2224.175, 2244.543, 2250.927, 2210.863, 2213.055, 2216.591, 2217.263, 2251.935, 2245.759, 2201.343, 2264.207, 2248.287, 2321.247, 2362.063, 2361.407, 2354.239, 2280.975, 2261.391, 2186.975, 2268.287, 2302.655, 2244.895, 2188.639, 2208.735, 2196.463, 2276.063, 2352.127, 2333.103, 2331.135, 2362.271, 2364.223, 2355.375, 2374.783, 2346.943, 2340.047, 2335.823, 2287.551, 2294.623, 2282.383, 2211.551, 2226.223, 2292.431, 2347.919, 2327.071 ], - "publishLatency9999pct" : [ 2367.487, 2391.247, 2386.415, 2292.575, 2302.559, 2397.615, 2286.287, 2294.207, 2291.919, 2284.543, 2261.071, 2317.247, 2292.607, 2285.599, 2261.919, 2280.815, 2279.407, 2298.367, 2285.471, 2229.727, 2241.263, 2244.895, 2244.367, 2271.967, 2288.223, 2253.967, 2317.615, 2285.871, 2358.399, 2380.383, 2388.495, 2384.591, 2311.839, 2308.511, 2207.135, 2289.311, 2323.487, 2267.039, 2215.279, 2253.935, 2216.623, 2297.567, 2384.239, 2373.887, 2380.575, 2386.639, 2383.775, 2385.567, 2399.407, 2370.207, 2395.887, 2362.335, 2371.007, 2342.975, 2319.903, 2243.471, 2270.863, 2333.263, 2370.543, 2345.311 ], - "publishLatencyMax" : [ 2382.591, 2413.599, 2410.111, 2301.375, 2311.071, 2413.839, 2291.903, 2309.775, 2302.015, 2294.959, 2289.455, 2335.887, 2313.327, 2301.663, 2274.415, 2307.023, 2295.487, 2308.047, 2298.591, 2259.071, 2251.647, 2273.215, 2264.495, 2278.383, 2311.215, 2274.831, 2334.607, 2298.927, 2367.999, 2435.711, 2400.415, 2421.183, 2378.095, 2319.087, 2223.279, 2300.975, 2333.807, 2287.631, 2230.191, 2263.183, 2230.095, 2310.287, 2397.775, 2383.167, 2390.511, 2398.175, 2409.871, 2400.783, 2414.111, 2386.895, 2404.543, 2374.255, 2375.167, 2371.471, 2354.303, 2254.335, 2279.679, 2342.079, 2389.423, 2354.639 ], - "aggregatedPublishLatencyAvg" : 1437.1671318883568, - "aggregatedPublishLatency50pct" : 1580.087, - "aggregatedPublishLatency75pct" : 1957.023, - "aggregatedPublishLatency95pct" : 2158.079, - "aggregatedPublishLatency99pct" : 2255.231, - "aggregatedPublishLatency999pct" : 2330.271, - "aggregatedPublishLatency9999pct" : 2371.455, - "aggregatedPublishLatencyMax" : 2435.711, - "aggregatedPublishLatencyQuantiles" : { - "1.4968835259211205E-6" : 131.072, - "0.5000069979304836" : 223.435, - "1.000022977162123" : 249.862, - "1.500000037422088" : 268.645, - "2.0000504449748235" : 284.821, - "2.5000005613313223" : 299.587, - "3.0000330062817464" : 313.189, - "3.500042997979282" : 326.325, - "4.000005089403988" : 339.647, - "4.500024062402679" : 352.791, - "5.000028066566111" : 365.765, - "5.5000275800789655" : 379.039, - "6.000019609174189" : 392.839, - "6.500005650735311" : 407.019, - "7.000008158015216" : 421.393, - "7.500019646596278" : 435.877, - "8.000025147643235" : 450.837, - "8.500021667389039" : 466.045, - "9.000040640387729" : 481.547, - "9.5000296757159" : 497.011, - "10.000062120666326" : 512.809, - "10.500045168460394" : 528.735, - "11.000050669507353" : 544.947, - "11.500138499148235" : 561.519, - "12.000034727697802" : 578.047, - "12.500052203812967" : 594.515, - "13.000002320169465" : 611.679, - "13.500055721489252" : 629.359, - "14.00002829109864" : 645.835, - "14.500113126972472" : 662.367, - "15.000108149834748" : 678.567, - "15.500095688279394" : 693.923, - "16.000045804635892" : 709.031, - "16.500145609344983" : 724.399, - "17.000083750633276" : 739.247, - "17.500015904387464" : 754.015, - "18.000123193514185" : 768.171, - "18.50012869456114" : 781.611, - "19.000006960508397" : 794.811, - "19.500019945972983" : 807.355, - "20.000130228866755" : 818.991, - "20.500134233030188" : 830.251, - "21.00002297716212" : 841.155, - "21.500004528072665" : 851.799, - "22.000186661375682" : 861.823, - "22.500213118792004" : 871.555, - "23.000107850458043" : 881.163, - "23.500129817223787" : 890.623, - "24.000093405532017" : 899.699, - "24.500161775687065" : 908.383, - "25.00020469882217" : 916.927, - "25.500115896206996" : 925.199, - "26.000076490748175" : 933.455, - "26.5000281039882" : 941.687, - "27.000036598802208" : 949.815, - "27.500244179125165" : 957.879, - "28.000183817296982" : 965.995, - "28.500041126874876" : 973.999, - "29.00010650326287" : 982.019, - "29.50001171311359" : 990.131, - "30.000011226626444" : 998.567, - "30.500117018869638" : 1007.479, - "31.0001285074507" : 1017.119, - "31.50005916432136" : 1027.755, - "32.00001526821197" : 1039.743, - "32.50018392956325" : 1054.599, - "33.00013254903622" : 1075.327, - "33.50001530563405" : 1115.407, - "34.000065713186785" : 1264.351, - "34.50013108957478" : 1311.239, - "35.00006024956192" : 1334.703, - "35.500044794239514" : 1351.551, - "36.00028979665062" : 1365.095, - "36.50028781327995" : 1376.751, - "37.0003741460373" : 1387.079, - "37.500367672016054" : 1396.679, - "38.0001935470399" : 1405.559, - "38.50021401692212" : 1413.807, - "39.00005186701417" : 1421.751, - "39.50002593350709" : 1429.479, - "40.00024548889825" : 1436.999, - "40.50040217518133" : 1444.183, - "41.00020709383581" : 1451.311, - "41.50025899827207" : 1458.407, - "42.0004995100326" : 1465.423, - "42.50039124793159" : 1472.271, - "43.00003899381585" : 1479.103, - "43.50055044149457" : 1486.023, - "44.0004736139476" : 1492.935, - "44.50041325211942" : 1499.935, - "45.00043072823458" : 1506.943, - "45.50010990867289" : 1513.999, - "46.00010343465164" : 1521.151, - "46.50033047446043" : 1528.407, - "47.00037639136259" : 1535.695, - "47.500239688474586" : 1542.903, - "48.00039787164119" : 1550.223, - "48.500282125122546" : 1557.695, - "49.000218769527315" : 1565.159, - "49.50016738900029" : 1572.599, - "50.00000823285939" : 1580.087, - "50.25037098387086" : 1583.807, - "50.50022928513408" : 1587.591, - "50.75018488382649" : 1591.319, - "51.00019437032584" : 1595.015, - "51.25008111237606" : 1598.735, - "51.5002058589069" : 1602.431, - "51.75030964906838" : 1606.183, - "52.00023381320675" : 1610.015, - "52.250451366516195" : 1613.831, - "52.50026476127365" : 1617.599, - "52.75000630562185" : 1621.407, - "53.00047832913071" : 1625.263, - "53.25049530004768" : 1629.183, - "53.50029222908635" : 1633.103, - "53.75013107086374" : 1637.031, - "54.00025731427811" : 1641.007, - "54.250455408101715" : 1644.991, - "54.50041400056118" : 1648.999, - "54.75030972391256" : 1653.023, - "55.00042399225872" : 1657.095, - "55.25040503797107" : 1661.191, - "55.50012861971697" : 1665.271, - "55.750470414359064" : 1669.351, - "56.00017154285207" : 1673.423, - "56.25003433476588" : 1677.503, - "56.50027583821174" : 1681.583, - "56.750315262381605" : 1685.679, - "57.00030079874453" : 1689.799, - "57.25022645976643" : 1693.919, - "57.50029731849033" : 1698.047, - "57.750240942114544" : 1702.175, - "58.000043858687306" : 1706.191, - "58.250303324735484" : 1710.343, - "58.50005085661779" : 1714.511, - "58.75006034311714" : 1718.703, - "59.000179102113876" : 1722.863, - "59.25038318347159" : 1727.071, - "59.500392669970935" : 1731.199, - "59.750137208086194" : 1735.375, - "60.00039966790142" : 1739.519, - "60.250371732312615" : 1743.687, - "60.50047402559057" : 1747.807, - "60.75012276316017" : 1751.863, - "61.00044809208349" : 1755.999, - "61.25040219389237" : 1760.127, - "61.50033384244837" : 1764.223, - "61.75045559521216" : 1768.343, - "62.000254021134346" : 1772.439, - "62.250208122943235" : 1776.567, - "62.50029844115298" : 1780.655, - "62.750144767348" : 1784.647, - "63.000230594907165" : 1788.671, - "63.25015625592906" : 1792.695, - "63.50034387156799" : 1796.743, - "63.7500105717399" : 1800.799, - "64.00049606720049" : 1804.895, - "64.25043969082469" : 1808.999, - "64.5002096759599" : 1813.007, - "64.75030448482022" : 1816.967, - "65.00049210045914" : 1820.839, - "65.25000911227846" : 1824.719, - "65.50024762195727" : 1828.663, - "65.75040979057627" : 1832.503, - "66.00019624143025" : 1836.335, - "66.250084480364" : 1840.167, - "66.50018827052547" : 1844.055, - "66.75044623969012" : 1847.895, - "67.00006953023978" : 1851.783, - "67.25049664724285" : 1855.551, - "67.50036542669076" : 1859.263, - "67.75006056764967" : 1862.975, - "68.00029009602733" : 1866.655, - "68.25016037235876" : 1870.359, - "68.50001567985494" : 1874.031, - "68.75036944956524" : 1877.615, - "69.00046874907615" : 1881.167, - "69.250334534757" : 1884.647, - "69.50022127680722" : 1888.087, - "69.7505855247022" : 1891.519, - "70.00043933531485" : 1894.847, - "70.25039942465784" : 1898.175, - "70.50043136441008" : 1901.519, - "70.75047078857995" : 1904.871, - "71.00055212548854" : 1908.215, - "71.25053466808441" : 1911.495, - "71.50018639942107" : 1914.743, - "71.75008811030655" : 1917.983, - "72.00056462446598" : 1921.159, - "72.2504289132633" : 1924.263, - "72.50062551020339" : 1927.311, - "72.75035058883282" : 1930.351, - "73.00061454553156" : 1933.439, - "73.25022137036244" : 1936.511, - "73.50056765565512" : 1939.559, - "73.75001880459929" : 1942.575, - "74.00041448704833" : 1945.559, - "74.25065000296009" : 1948.479, - "74.50001433265976" : 1951.343, - "74.75030822702904" : 1954.207, - "75.00049434578443" : 1957.023, - "75.1257580498841" : 1958.423, - "75.25021942441386" : 1959.791, - "75.37510292009793" : 1961.183, - "75.50068546038861" : 1962.575, - "75.62548063994466" : 1963.967, - "75.75058417750704" : 1965.343, - "75.8751667996024" : 1966.711, - "76.0007852650977" : 1968.095, - "76.12567774208293" : 1969.463, - "76.25046094657077" : 1970.815, - "76.37549712437448" : 1972.143, - "76.50046145176896" : 1973.487, - "76.62528656899552" : 1974.831, - "76.75074037730296" : 1976.167, - "76.87533647135007" : 1977.479, - "77.00067501962602" : 1978.807, - "77.12527710120722" : 1980.135, - "77.25005581504448" : 1981.463, - "77.37577307485249" : 1982.799, - "77.50076733991747" : 1984.087, - "77.6254921659478" : 1985.399, - "77.75054031881973" : 1986.703, - "77.87573816004424" : 1987.991, - "78.00050489881329" : 1989.271, - "78.12534199110806" : 1990.543, - "78.25026739953086" : 1991.799, - "78.37550266284353" : 1993.071, - "78.50065110691169" : 1994.335, - "78.62573668187176" : 1995.591, - "78.75062317132289" : 1996.847, - "78.87528512824512" : 1998.079, - "79.00037070320519" : 1999.343, - "79.12530958357972" : 2000.583, - "79.25043258062794" : 2001.847, - "79.37514543159007" : 2003.063, - "79.50034926034868" : 2004.303, - "79.62576414968446" : 2005.527, - "79.75008332027926" : 2006.759, - "79.8751030323642" : 2007.967, - "80.00054785937049" : 2009.191, - "80.1251559284858" : 2010.415, - "80.25016965303662" : 2011.639, - "80.37507410509005" : 2012.839, - "80.5005279133975" : 2014.055, - "80.62580508944889" : 2015.279, - "80.75036974894195" : 2016.487, - "80.87572326605316" : 2017.711, - "81.00026098164274" : 2018.895, - "81.12584202504989" : 2020.111, - "81.25034231855133" : 2021.287, - "81.37576319542121" : 2022.471, - "81.50034132686599" : 2023.655, - "81.6257637006194" : 2024.839, - "81.75074149996561" : 2025.991, - "81.87523131528236" : 2027.159, - "82.00059680746179" : 2028.335, - "82.12520337969356" : 2029.511, - "82.25053594043541" : 2030.695, - "82.37597178614055" : 2031.871, - "82.50071158100613" : 2033.031, - "82.62527025296508" : 2034.199, - "82.7506013168234" : 2035.351, - "82.87574976089157" : 2036.519, - "83.00020664477076" : 2037.655, - "83.12554668993023" : 2038.823, - "83.2504062354779" : 2039.975, - "83.37523135270445" : 2041.111, - "83.50074653323647" : 2042.247, - "83.62542345899396" : 2043.359, - "83.7503862895049" : 2044.495, - "83.87542396419215" : 2045.615, - "84.00035985079963" : 2046.727, - "84.12581365910708" : 2047.831, - "84.25076152078277" : 2048.935, - "84.37584859262637" : 2050.039, - "84.50019171335758" : 2051.159, - "84.62511562489685" : 2052.271, - "84.75025059701328" : 2053.367, - "84.87500985136471" : 2054.463, - "85.00071064545394" : 2055.591, - "85.12583513938567" : 2056.679, - "85.2503923144611" : 2057.767, - "85.375756309757" : 2058.887, - "85.5004107822616" : 2060.007, - "85.62539606602543" : 2061.135, - "85.75006700424883" : 2062.247, - "85.87511515712076" : 2063.367, - "86.00003457800945" : 2064.487, - "86.1255692180273" : 2065.607, - "86.25048564514894" : 2066.719, - "86.37563259233357" : 2067.823, - "86.50056548517401" : 2068.927, - "86.62517804493989" : 2070.039, - "86.75055850595457" : 2071.175, - "86.87580574433544" : 2072.303, - "87.00039136019785" : 2073.439, - "87.12553830738248" : 2074.567, - "87.25052658491337" : 2075.671, - "87.37589656774337" : 2076.807, - "87.50040733942949" : 2077.919, - "87.56262380630088" : 2078.487, - "87.62553931777887" : 2079.063, - "87.68838447573114" : 2079.631, - "87.75037042253953" : 2080.191, - "87.81250605770052" : 2080.743, - "87.87510123610396" : 2081.311, - "87.9379044813175" : 2081.879, - "88.00016884846173" : 2082.439, - "88.0630080188799" : 2083.015, - "88.12513317585619" : 2083.583, - "88.18750232484723" : 2084.159, - "88.25020827263158" : 2084.743, - "88.31320760958702" : 2085.327, - "88.37540461697257" : 2085.903, - "88.43822283102138" : 2086.479, - "88.50082699072598" : 2087.055, - "88.56308836410315" : 2087.623, - "88.62537069384967" : 2088.183, - "88.68840296224269" : 2088.743, - "88.75082749592417" : 2089.311, - "88.81292720588054" : 2089.871, - "88.87533527384323" : 2090.431, - "88.93809361255101" : 2091.007, - "89.00081452917063" : 2091.599, - "89.06315673425819" : 2092.175, - "89.1255303738998" : 2092.759, - "89.18773785947003" : 2093.343, - "89.2505710423541" : 2093.943, - "89.31263183333878" : 2094.519, - "89.37518360211998" : 2095.111, - "89.43789853120549" : 2095.695, - "89.5002317549919" : 2096.295, - "89.5626338354205" : 2096.887, - "89.62502543766442" : 2097.487, - "89.68791250835541" : 2098.095, - "89.75065887199497" : 2098.703, - "89.81383933185705" : 2099.327, - "89.8766021612154" : 2099.935, - "89.93791600732065" : 2100.527, - "90.00169971124369" : 2101.135, - "90.06265280841919" : 2101.727, - "90.12572249890036" : 2102.319, - "90.1882084048064" : 2102.927, - "90.25049672208704" : 2103.535, - "90.31379543574766" : 2104.159, - "90.37646845209446" : 2104.767, - "90.437857142376" : 2105.375, - "90.5000631310627" : 2105.999, - "90.56307294620282" : 2106.623, - "90.62560375861466" : 2107.247, - "90.68844292903283" : 2107.871, - "90.7501220147184" : 2108.479, - "90.81347311930244" : 2109.119, - "90.87569707059146" : 2109.743, - "90.93778630236314" : 2110.367, - "91.00096227157464" : 2110.991, - "91.06326705457406" : 2111.615, - "91.12601940574771" : 2112.255, - "91.18852626802314" : 2112.879, - "91.25156602083378" : 2113.503, - "91.31320020001358" : 2114.127, - "91.37505891172226" : 2114.767, - "91.43780677224535" : 2115.423, - "91.50106507005079" : 2116.079, - "91.56303155737334" : 2116.719, - "91.6264245746961" : 2117.375, - "91.68773842080135" : 2118.015, - "91.75097426535389" : 2118.671, - "91.81394965217292" : 2119.327, - "91.87521559800534" : 2119.983, - "91.93886308552752" : 2120.655, - "92.00051373042609" : 2121.295, - "92.06290383578649" : 2121.967, - "92.12595107301476" : 2122.655, - "92.18752537685353" : 2123.327, - "92.25029419374597" : 2124.015, - "92.31339232501414" : 2124.687, - "92.3761042603326" : 2125.375, - "92.43799590347885" : 2126.063, - "92.50096979341436" : 2126.767, - "92.56297819347564" : 2127.455, - "92.6256901287941" : 2128.175, - "92.6888421478692" : 2128.895, - "92.75128314726946" : 2129.599, - "92.81323765952381" : 2130.303, - "92.87519965619579" : 2131.007, - "92.93864057379137" : 2131.743, - "93.00050527303418" : 2132.463, - "93.06354053519424" : 2133.183, - "93.12534236532895" : 2133.887, - "93.18754386336506" : 2134.607, - "93.250456381076" : 2135.343, - "93.3136084001511" : 2136.063, - "93.3758952205482" : 2136.799, - "93.43803684324328" : 2137.551, - "93.50110054619034" : 2138.319, - "93.56343227309323" : 2139.071, - "93.62613073645996" : 2139.855, - "93.68829630929146" : 2140.607, - "93.75088849392786" : 2141.375, - "93.7815551467234" : 2141.759, - "93.81264392067325" : 2142.143, - "93.84422666618667" : 2142.543, - "93.87546662537264" : 2142.927, - "93.90687573239704" : 2143.327, - "93.93784774943188" : 2143.727, - "93.9695816801814" : 2144.127, - "94.00010313527494" : 2144.511, - "94.03174575612938" : 2144.911, - "94.06353806533642" : 2145.311, - "94.09413436460625" : 2145.695, - "94.12609881541877" : 2146.111, - "94.15693760981979" : 2146.495, - "94.18773149771505" : 2146.895, - "94.21969445164405" : 2147.311, - "94.25066497179535" : 2147.727, - "94.28160555427614" : 2148.127, - "94.31315387146844" : 2148.543, - "94.34454651277407" : 2148.959, - "94.3758538317187" : 2149.375, - "94.40639774006513" : 2149.791, - "94.43810023626061" : 2150.223, - "94.46950934328501" : 2150.623, - "94.50084959366723" : 2151.039, - "94.5318530452561" : 2151.455, - "94.56251969805164" : 2151.871, - "94.59460389954624" : 2152.319, - "94.62529749624525" : 2152.751, - "94.6569116763127" : 2153.183, - "94.6879510531062" : 2153.615, - "94.7197867719355" : 2154.063, - "94.75073783260098" : 2154.495, - "94.7812592876945" : 2154.927, - "94.81265492276717" : 2155.375, - "94.84477954011696" : 2155.839, - "94.875359373668" : 2156.271, - "94.9068313498005" : 2156.719, - "94.93809675600642" : 2157.167, - "94.969227442695" : 2157.615, - "95.00051230838675" : 2158.079, - "95.0313585872054" : 2158.543, - "95.06255663365265" : 2159.007, - "95.0938699401314" : 2159.471, - "95.12603946398697" : 2159.951, - "95.15679892356111" : 2160.399, - "95.1882125212361" : 2160.879, - "95.21941206456687" : 2161.343, - "95.25013410205288" : 2161.823, - "95.28154320907728" : 2162.303, - "95.31331007126438" : 2162.799, - "95.34444075795297" : 2163.279, - "95.37504005098984" : 2163.759, - "95.40691917944139" : 2164.271, - "95.43821751708487" : 2164.767, - "95.46926886894657" : 2165.263, - "95.50015406673691" : 2165.759, - "95.53153024232374" : 2166.271, - "95.56304862184554" : 2166.751, - "95.59458047331906" : 2167.247, - "95.6251603068701" : 2167.743, - "95.65656791701097" : 2168.255, - "95.68757436236692" : 2168.751, - "95.71897897874074" : 2169.247, - "95.75071141260673" : 2169.775, - "95.78131070564362" : 2170.319, - "95.81312995875412" : 2170.863, - "95.84399270329156" : 2171.391, - "95.87566376493301" : 2171.935, - "95.90646364036236" : 2172.463, - "95.93803590769109" : 2173.007, - "95.96876093894414" : 2173.551, - "96.00010717686045" : 2174.111, - "96.03205665883772" : 2174.687, - "96.06330110867427" : 2175.247, - "96.09432701351604" : 2175.807, - "96.12520622377227" : 2176.367, - "96.1566347902825" : 2176.943, - "96.18828489555457" : 2177.535, - "96.21896352341832" : 2178.095, - "96.25037861797684" : 2178.655, - "96.28144194490675" : 2179.231, - "96.31292439922393" : 2179.839, - "96.3440550859125" : 2180.447, - "96.37572165690337" : 2181.039, - "96.40663828924774" : 2181.631, - "96.43750851820282" : 2182.207, - "96.46914964217373" : 2182.799, - "96.50024440365769" : 2183.407, - "96.53196186868844" : 2184.015, - "96.56251924898659" : 2184.623, - "96.59416037295752" : 2185.247, - "96.62571018703335" : 2185.871, - "96.65678997968205" : 2186.495, - "96.68766619617122" : 2187.119, - "96.71934474223029" : 2187.759, - "96.75032873433334" : 2188.399, - "96.78177975409646" : 2189.023, - "96.8127173428102" : 2189.631, - "96.84416237503923" : 2190.271, - "96.87529006796076" : 2190.895, - "96.89064360228613" : 2191.215, - "96.90696861401983" : 2191.567, - "96.92198984020244" : 2191.887, - "96.93818611995292" : 2192.223, - "96.95328518407888" : 2192.543, - "96.96938566328369" : 2192.895, - "96.98484248257235" : 2193.231, - "97.00018104806246" : 2193.567, - "97.01618872048866" : 2193.919, - "97.03160063327154" : 2194.255, - "97.04752298333676" : 2194.607, - "97.06325073854362" : 2194.943, - "97.07851445985744" : 2195.279, - "97.09398924174842" : 2195.631, - "97.10974394085873" : 2195.967, - "97.12540433630691" : 2196.303, - "97.14101533459875" : 2196.655, - "97.15640928477931" : 2197.007, - "97.1721445244038" : 2197.359, - "97.18815369371353" : 2197.711, - "97.20324527342187" : 2198.047, - "97.21891015952063" : 2198.399, - "97.23447325753963" : 2198.751, - "97.25011718726904" : 2199.103, - "97.26629999506777" : 2199.487, - "97.28126583655992" : 2199.855, - "97.29706095152545" : 2200.239, - "97.31306113953401" : 2200.607, - "97.32859280299898" : 2200.975, - "97.34387748068215" : 2201.327, - "97.35953039171271" : 2201.695, - "97.37507552712941" : 2202.063, - "97.39095446757237" : 2202.447, - "97.40668521654628" : 2202.831, - "97.42199384436587" : 2203.215, - "97.43764226474586" : 2203.583, - "97.45364245275442" : 2203.983, - "97.46932380457197" : 2204.367, - "97.48502012522478" : 2204.751, - "97.50029133095623" : 2205.119, - "97.51565534346629" : 2205.487, - "97.5313980675084" : 2205.887, - "97.54754045945194" : 2206.287, - "97.56250480406057" : 2206.655, - "97.57835530371655" : 2207.055, - "97.59424023169362" : 2207.455, - "97.6094261150641" : 2207.839, - "97.62503861023944" : 2208.239, - "97.64063164592896" : 2208.639, - "97.65642526401096" : 2209.039, - "97.67201081528285" : 2209.455, - "97.68799603445616" : 2209.871, - "97.70348129453181" : 2210.287, - "97.71923599364214" : 2210.703, - "97.73450420560653" : 2211.119, - "97.75011520389836" : 2211.535, - "97.76589834379567" : 2211.967, - "97.78140605712422" : 2212.383, - "97.79744666098799" : 2212.831, - "97.81267894774776" : 2213.231, - "97.82850699415086" : 2213.663, - "97.84402967631465" : 2214.095, - "97.85964366837354" : 2214.543, - "97.87519928197491" : 2214.975, - "97.89105277539794" : 2215.423, - "97.90681046827531" : 2215.871, - "97.9219574326741" : 2216.303, - "97.93782290116535" : 2216.767, - "97.95357760027566" : 2217.215, - "97.96904040709843" : 2217.647, - "97.98476816230529" : 2218.095, - "98.0001187028636" : 2218.543, - "98.01597219628664" : 2219.007, - "98.0317119265617" : 2219.455, - "98.04719868352088" : 2219.903, - "98.06257317421561" : 2220.367, - "98.0783263764424" : 2220.847, - "98.0939239027825" : 2221.327, - "98.10958878888127" : 2221.807, - "98.12505159570404" : 2222.303, - "98.1410517837126" : 2222.783, - "98.15665829135386" : 2223.247, - "98.17203278204859" : 2223.727, - "98.18790423807394" : 2224.191, - "98.2035466709198" : 2224.703, - "98.21894511175097" : 2225.215, - "98.23469382332718" : 2225.727, - "98.25013567378058" : 2226.239, - "98.26563141204092" : 2226.751, - "98.28159417796134" : 2227.279, - "98.29711386635809" : 2227.823, - "98.3125392510927" : 2228.351, - "98.32817569640447" : 2228.927, - "98.34389447031018" : 2229.503, - "98.35959228784651" : 2230.047, - "98.37529160226637" : 2230.591, - "98.39100438863797" : 2231.151, - "98.40637738244918" : 2231.695, - "98.42227428549445" : 2232.271, - "98.4377191297149" : 2232.815, - "98.4453876640182" : 2233.087, - "98.4534887976605" : 2233.375, - "98.46127408887881" : 2233.647, - "98.46907285204885" : 2233.919, - "98.47659768553366" : 2234.175, - "98.48474372568172" : 2234.463, - "98.49256643898819" : 2234.751, - "98.50030981746778" : 2235.023, - "98.5081879154647" : 2235.311, - "98.51585495288447" : 2235.599, - "98.52366569112273" : 2235.903, - "98.53154229223613" : 2236.191, - "98.53921980784057" : 2236.463, - "98.54691827981438" : 2236.751, - "98.55478739651015" : 2237.055, - "98.56287356131718" : 2237.343, - "98.57048671093001" : 2237.615, - "98.57820314550614" : 2237.903, - "98.58594053645162" : 2238.207, - "98.59393389448005" : 2238.511, - "98.60192575562493" : 2238.799, - "98.60948950808141" : 2239.071, - "98.61756968535434" : 2239.375, - "98.62510799079087" : 2239.663, - "98.63286933187277" : 2239.967, - "98.64092555900928" : 2240.287, - "98.64856116187501" : 2240.575, - "98.65643626610488" : 2240.879, - "98.6644131584145" : 2241.183, - "98.67219545586578" : 2241.487, - "98.68006606944506" : 2241.775, - "98.68757443721108" : 2242.047, - "98.69558426095828" : 2242.367, - "98.70316447913356" : 2242.671, - "98.71107101791748" : 2242.975, - "98.71891917824388" : 2243.279, - "98.72680775442548" : 2243.599, - "98.73441042585364" : 2243.903, - "98.74249808754419" : 2244.223, - "98.75002292102899" : 2244.543, - "98.75811207960307" : 2244.863, - "98.765961736813" : 2245.199, - "98.7735494394059" : 2245.487, - "98.78140658103345" : 2245.807, - "98.78941640478065" : 2246.143, - "98.7970999079192" : 2246.447, - "98.8048717271858" : 2246.751, - "98.81263456515121" : 2247.055, - "98.82046476287532" : 2247.391, - "98.82852548066239" : 2247.743, - "98.83626287160789" : 2248.063, - "98.84397780930048" : 2248.383, - "98.85180501325752" : 2248.719, - "98.85958581382526" : 2249.055, - "98.86727979514849" : 2249.407, - "98.87501718609398" : 2249.727, - "98.88313927610562" : 2250.047, - "98.89097246759678" : 2250.367, - "98.89854370447088" : 2250.703, - "98.90628558606694" : 2251.039, - "98.91424002512369" : 2251.391, - "98.92195047216572" : 2251.727, - "98.92977019170513" : 2252.079, - "98.93770816504309" : 2252.431, - "98.94565062903162" : 2252.783, - "98.9531859407011" : 2253.119, - "98.9611718143119" : 2253.471, - "98.96879544210941" : 2253.807, - "98.9766825214075" : 2254.159, - "98.98448577522812" : 2254.511, - "98.99252104599526" : 2254.879, - "99.00010425793758" : 2255.231, - "99.00789403980647" : 2255.599, - "99.01582452872681" : 2255.967, - "99.02351252251593" : 2256.335, - "99.03138463297876" : 2256.703, - "99.03921483070285" : 2257.071, - "99.04713484143849" : 2257.439, - "99.05469709701146" : 2257.807, - "99.06280122442078" : 2258.191, - "99.07053113094864" : 2258.575, - "99.0783942601103" : 2258.943, - "99.08612865728874" : 2259.311, - "99.09384509186486" : 2259.695, - "99.10164834568549" : 2260.079, - "99.10943962443791" : 2260.463, - "99.11750333599205" : 2260.863, - "99.12520779549996" : 2261.231, - "99.1328553734339" : 2261.615, - "99.14088016601636" : 2261.999, - "99.14862204761242" : 2262.399, - "99.1564163201319" : 2262.799, - "99.16406689183287" : 2263.183, - "99.17206474051187" : 2263.583, - "99.17984554107962" : 2263.983, - "99.18753203798522" : 2264.367, - "99.1954999489937" : 2264.751, - "99.20340349401056" : 2265.151, - "99.2111558537913" : 2265.551, - "99.219050417507" : 2265.983, - "99.22273574474782" : 2266.191, - "99.22685367132763" : 2266.415, - "99.23058839572481" : 2266.623, - "99.23453418069914" : 2266.847, - "99.23842907163359" : 2267.055, - "99.24230599996572" : 2267.279, - "99.24619490336606" : 2267.487, - "99.25011673820397" : 2267.695, - "99.25400115095374" : 2267.903, - "99.25788706058704" : 2268.111, - "99.26187625518361" : 2268.319, - "99.26566486738773" : 2268.527, - "99.26974237811233" : 2268.751, - "99.27358338123985" : 2268.959, - "99.2775127004954" : 2269.167, - "99.28150788262607" : 2269.407, - "99.28524709767382" : 2269.615, - "99.28918539823052" : 2269.823, - "99.29325243077045" : 2270.063, - "99.29704253985808" : 2270.271, - "99.30084612089745" : 2270.495, - "99.30494458799141" : 2270.735, - "99.30871823136026" : 2270.943, - "99.31274185427795" : 2271.183, - "99.3166606953488" : 2271.407, - "99.32050618912689" : 2271.647, - "99.32438162057551" : 2271.887, - "99.32822262370301" : 2272.111, - "99.33219535258081" : 2272.351, - "99.33596151153203" : 2272.575, - "99.33998663133323" : 2272.815, - "99.34376626223619" : 2273.039, - "99.34792909532177" : 2273.295, - "99.35171171999177" : 2273.519, - "99.35559014520743" : 2273.727, - "99.35938923559623" : 2273.951, - "99.36331705796823" : 2274.191, - "99.36730325879776" : 2274.431, - "99.37115923076054" : 2274.671, - "99.37524422590278" : 2274.927, - "99.37899541601874" : 2275.167, - "99.38299808256704" : 2275.407, - "99.38675076956653" : 2275.631, - "99.3908372615923" : 2275.871, - "99.39465730835045" : 2276.111, - "99.39845340497219" : 2276.351, - "99.40252792192975" : 2276.607, - "99.40635844687257" : 2276.863, - "99.41023387832118" : 2277.103, - "99.41424402928712" : 2277.359, - "99.41815089528978" : 2277.615, - "99.42200087971845" : 2277.871, - "99.42585385791416" : 2278.127, - "99.4299328655223" : 2278.399, - "99.43371848395935" : 2278.655, - "99.43765828139958" : 2278.927, - "99.44154419103288" : 2279.199, - "99.44546303210373" : 2279.471, - "99.4494282765639" : 2279.759, - "99.45313006952351" : 2280.031, - "99.4571087859354" : 2280.319, - "99.46101116128747" : 2280.591, - "99.46496592756296" : 2280.879, - "99.4688892592844" : 2281.151, - "99.47281857853994" : 2281.423, - "99.47666107855099" : 2281.679, - "99.48065476379814" : 2281.951, - "99.48452570459618" : 2282.223, - "99.48837868279189" : 2282.495, - "99.49226908307577" : 2282.783, - "99.49625977455587" : 2283.087, - "99.5001307153539" : 2283.391, - "99.50403907824008" : 2283.695, - "99.50792947852395" : 2284.015, - "99.51172407826216" : 2284.319, - "99.51566237881886" : 2284.607, - "99.51971294564" : 2284.927, - "99.523524011097" : 2285.231, - "99.52744734281843" : 2285.503, - "99.53135271193756" : 2285.775, - "99.5352700561249" : 2286.079, - "99.53912004055357" : 2286.367, - "99.54317210425823" : 2286.687, - "99.54700562296811" : 2286.991, - "99.55097086742829" : 2287.295, - "99.55479540483701" : 2287.599, - "99.55873071162667" : 2287.919, - "99.56262560256111" : 2288.223, - "99.5665055246603" : 2288.543, - "99.57042286884763" : 2288.879, - "99.57443152293004" : 2289.215, - "99.5782051662989" : 2289.519, - "99.58218687647785" : 2289.839, - "99.58607877364524" : 2290.159, - "99.58998414276437" : 2290.495, - "99.59387304616472" : 2290.847, - "99.59776344644858" : 2291.215, - "99.60171521895701" : 2291.567, - "99.60556670026921" : 2291.887, - "99.60944063483429" : 2292.207, - "99.61144645875902" : 2292.367, - "99.61331456939938" : 2292.527, - "99.61540272191803" : 2292.703, - "99.61725586372313" : 2292.847, - "99.61930509727011" : 2293.007, - "99.62117919544457" : 2293.167, - "99.62307874063896" : 2293.327, - "99.62507258949549" : 2293.503, - "99.62707841342022" : 2293.679, - "99.62894502717704" : 2293.855, - "99.6309867763064" : 2294.047, - "99.632898296569" : 2294.223, - "99.63488765477496" : 2294.399, - "99.63679468438697" : 2294.575, - "99.6387481173883" : 2294.735, - "99.64064915946622" : 2294.911, - "99.64274180263546" : 2295.103, - "99.64461440392638" : 2295.295, - "99.64656783692772" : 2295.471, - "99.648518276162" : 2295.647, - "99.65057798789366" : 2295.839, - "99.65236676370714" : 2295.999, - "99.65436510321423" : 2296.175, - "99.65636943025544" : 2296.367, - "99.6582150876429" : 2296.543, - "99.6601670237607" : 2296.735, - "99.66216087261724" : 2296.927, - "99.66412777757029" : 2297.103, - "99.6660916887563" : 2297.295, - "99.66804961240821" : 2297.503, - "99.67002699554595" : 2297.711, - "99.67201785063543" : 2297.919, - "99.67383357035237" : 2298.095, - "99.67588879143345" : 2298.319, - "99.67780180857959" : 2298.511, - "99.67982260133958" : 2298.703, - "99.6817356184857" : 2298.895, - "99.68359774159195" : 2299.087, - "99.68558260914732" : 2299.279, - "99.68750311071108" : 2299.487, - "99.68955084737453" : 2299.695, - "99.69143692061719" : 2299.887, - "99.69338436608442" : 2300.079, - "99.69536623987274" : 2300.303, - "99.69733763547637" : 2300.527, - "99.69927310587539" : 2300.735, - "99.70119360743915" : 2300.943, - "99.70319045006273" : 2301.151, - "99.70517082696752" : 2301.375, - "99.70705690021019" : 2301.583, - "99.70904625841614" : 2301.775, - "99.71098172881516" : 2301.967, - "99.71289324907775" : 2302.159, - "99.7149230231389" : 2302.351, - "99.71681209014861" : 2302.559, - "99.7188268953745" : 2302.767, - "99.72076086889" : 2302.959, - "99.72271579877484" : 2303.167, - "99.72468270372791" : 2303.359, - "99.72659721775756" : 2303.551, - "99.72863747000339" : 2303.791, - "99.73058491547062" : 2303.999, - "99.7324500323439" : 2304.191, - "99.73453668797904" : 2304.415, - "99.73640030796882" : 2304.623, - "99.73829236874558" : 2304.847, - "99.74029819267031" : 2305.071, - "99.74228156334216" : 2305.295, - "99.74415117086603" : 2305.487, - "99.74617346050955" : 2305.727, - "99.74813138416145" : 2305.951, - "99.75007733274516" : 2306.175, - "99.75206369718406" : 2306.383, - "99.75401563330186" : 2306.623, - "99.75591667537978" : 2306.847, - "99.75785064889527" : 2307.087, - "99.7598220444989" : 2307.327, - "99.76182637154011" : 2307.599, - "99.76379028272612" : 2307.823, - "99.76570479675577" : 2308.063, - "99.76767918612646" : 2308.335, - "99.76960866899138" : 2308.607, - "99.77156958641034" : 2308.879, - "99.77344518146832" : 2309.103, - "99.77548842748119" : 2309.375, - "99.77739246332617" : 2309.631, - "99.77934439944397" : 2309.887, - "99.78136369532044" : 2310.127, - "99.78320336517379" : 2310.335, - "99.78525708937136" : 2310.607, - "99.78714166573049" : 2310.847, - "99.78908012989656" : 2311.119, - "99.7910575130343" : 2311.375, - "99.79302591487088" : 2311.615, - "99.79496587592048" : 2311.871, - "99.79693128399002" : 2312.143, - "99.7988877107584" : 2312.399, - "99.80079623725395" : 2312.671, - "99.80273470142001" : 2312.975, - "99.80470160637307" : 2313.263, - "99.80572098405422" : 2313.407, - "99.80668797081196" : 2313.551, - "99.80768489524023" : 2313.695, - "99.80867433525087" : 2313.839, - "99.80958743420167" : 2313.983, - "99.81059633369814" : 2314.127, - "99.81163367398162" : 2314.287, - "99.8125452760489" : 2314.415, - "99.81358860386646" : 2314.575, - "99.8144567963115" : 2314.703, - "99.81544623632213" : 2314.847, - "99.81650004232438" : 2314.991, - "99.81741613504225" : 2315.135, - "99.81846245662686" : 2315.295, - "99.81943243715166" : 2315.439, - "99.82038894572473" : 2315.583, - "99.82134994494837" : 2315.727, - "99.8223857883483" : 2315.871, - "99.8233437938049" : 2316.015, - "99.82432275563085" : 2316.159, - "99.82521190444524" : 2316.287, - "99.82619086627119" : 2316.431, - "99.82724916292402" : 2316.607, - "99.8281667525254" : 2316.751, - "99.82913224239962" : 2316.911, - "99.83016509203252" : 2317.071, - "99.83113058190673" : 2317.215, - "99.83211403438327" : 2317.343, - "99.83306455542223" : 2317.487, - "99.83404202036465" : 2317.647, - "99.83500751023887" : 2317.807, - "99.83603886298823" : 2317.983, - "99.83697591207546" : 2318.127, - "99.83790397986152" : 2318.303, - "99.83887994792043" : 2318.479, - "99.83990830690274" : 2318.655, - "99.84082140585355" : 2318.799, - "99.84185126171938" : 2318.959, - "99.84283172042886" : 2319.135, - "99.84380768848776" : 2319.295, - "99.84481958175128" : 2319.471, - "99.84580602799487" : 2319.631, - "99.84670415811041" : 2319.759, - "99.84769659188811" : 2319.919, - "99.84864711292707" : 2320.063, - "99.84967397502585" : 2320.223, - "99.85062898671538" : 2320.367, - "99.85163189867775" : 2320.527, - "99.85254948827914" : 2320.671, - "99.85356736907677" : 2320.847, - "99.85456579038856" : 2321.023, - "99.8555791805356" : 2321.183, - "99.85653119845809" : 2321.343, - "99.8574383098748" : 2321.519, - "99.85843972495364" : 2321.695, - "99.85940671171139" : 2321.871, - "99.86041561120786" : 2322.063, - "99.86136912601387" : 2322.255, - "99.86234958472335" : 2322.463, - "99.86330908706346" : 2322.639, - "99.86431199902583" : 2322.831, - "99.86529245773531" : 2323.039, - "99.86628189774594" : 2323.215, - "99.86727133775658" : 2323.391, - "99.86825329334958" : 2323.567, - "99.8691843549027" : 2323.743, - "99.87022019830263" : 2323.935, - "99.87114377543813" : 2324.111, - "99.87211076219587" : 2324.287, - "99.87312415234292" : 2324.479, - "99.87403425752669" : 2324.655, - "99.87504615079021" : 2324.863, - "99.87603559080084" : 2325.087, - "99.876998086908" : 2325.295, - "99.87793064534466" : 2325.503, - "99.8789664887446" : 2325.711, - "99.8799364692694" : 2325.919, - "99.88086004640489" : 2326.111, - "99.88185697083316" : 2326.335, - "99.88285389526142" : 2326.527, - "99.88382836643679" : 2326.703, - "99.88477439682516" : 2326.895, - "99.88581173710864" : 2327.087, - "99.88672932671003" : 2327.279, - "99.88777564829464" : 2327.519, - "99.88868275971134" : 2327.743, - "99.88972908129597" : 2327.967, - "99.89069606805371" : 2328.159, - "99.89164958285973" : 2328.383, - "99.89259411636458" : 2328.607, - "99.89361499092927" : 2328.831, - "99.89457299638585" : 2329.071, - "99.89556243639649" : 2329.295, - "99.89650098236723" : 2329.487, - "99.89752485069897" : 2329.679, - "99.89849483122376" : 2329.903, - "99.8994154145922" : 2330.127, - "99.90048568631323" : 2330.367, - "99.90142273540046" : 2330.575, - "99.90235828760416" : 2330.799, - "99.90284028409951" : 2330.911, - "99.90333126189601" : 2331.023, - "99.90383122099367" : 2331.135, - "99.90429974553729" : 2331.247, - "99.9048146734702" : 2331.359, - "99.90533858270427" : 2331.487, - "99.90577567269385" : 2331.599, - "99.90628910374323" : 2331.727, - "99.90674415633511" : 2331.855, - "99.90723214036457" : 2331.967, - "99.90775305583159" : 2332.095, - "99.90824103986104" : 2332.223, - "99.90876644597863" : 2332.351, - "99.90922898298814" : 2332.463, - "99.9097229545517" : 2332.575, - "99.91019297597883" : 2332.687, - "99.91066299740598" : 2332.799, - "99.91120037859179" : 2332.911, - "99.91162549351314" : 2333.007, - "99.91215539028131" : 2333.119, - "99.91266582756366" : 2333.247, - "99.91310441443676" : 2333.343, - "99.9136208392532" : 2333.455, - "99.91409834509797" : 2333.567, - "99.91460578861326" : 2333.711, - "99.9150593443216" : 2333.839, - "99.91556828472042" : 2333.983, - "99.9160293248464" : 2334.095, - "99.91656670603221" : 2334.239, - "99.9170457087605" : 2334.351, - "99.91752321460527" : 2334.479, - "99.91802167681941" : 2334.623, - "99.91851115773238" : 2334.751, - "99.91894675083843" : 2334.863, - "99.91948562890775" : 2335.007, - "99.91993918461611" : 2335.135, - "99.92042866552909" : 2335.279, - "99.92091066202443" : 2335.423, - "99.92141511177266" : 2335.567, - "99.92188812696686" : 2335.695, - "99.92238060164689" : 2335.823, - "99.9228611012587" : 2335.967, - "99.9233805198422" : 2336.095, - "99.92384006308465" : 2336.239, - "99.92434301594938" : 2336.399, - "99.92481902491062" : 2336.511, - "99.92532347465885" : 2336.655, - "99.92580098050361" : 2336.783, - "99.92632039908712" : 2336.927, - "99.92679491116483" : 2337.103, - "99.92728588896134" : 2337.247, - "99.92774094155321" : 2337.359, - "99.9282364100003" : 2337.519, - "99.92876031923436" : 2337.663, - "99.92920189987451" : 2337.791, - "99.92974526859442" : 2337.951, - "99.93021529002155" : 2338.079, - "99.93072423042037" : 2338.175, - "99.9311882643134" : 2338.271, - "99.93164331690528" : 2338.399, - "99.93215375418762" : 2338.559, - "99.93262676938181" : 2338.703, - "99.93315965991704" : 2338.847, - "99.93361471250893" : 2338.975, - "99.93412365290774" : 2339.135, - "99.93461762447129" : 2339.279, - "99.93507118017965" : 2339.407, - "99.93557413304435" : 2339.567, - "99.93605912330675" : 2339.743, - "99.9365291447339" : 2339.887, - "99.93707700410438" : 2340.047, - "99.93753355357978" : 2340.191, - "99.93800357500693" : 2340.351, - "99.93850203722106" : 2340.559, - "99.93899600878461" : 2340.735, - "99.939480999047" : 2340.879, - "99.93994353605652" : 2341.087, - "99.94047193594118" : 2341.263, - "99.94092848541658" : 2341.423, - "99.9414374258154" : 2341.615, - "99.94191193789311" : 2341.807, - "99.9424193814084" : 2341.999, - "99.94288491218495" : 2342.159, - "99.94339684635082" : 2342.319, - "99.94388033972969" : 2342.495, - "99.9443832925944" : 2342.639, - "99.94488175480853" : 2342.783, - "99.94533081986631" : 2342.911, - "99.94582778519691" : 2343.087, - "99.9463472037804" : 2343.231, - "99.94679028130408" : 2343.391, - "99.94729772481936" : 2343.567, - "99.94779169638292" : 2343.743, - "99.94827369287827" : 2343.871, - "99.94874371430541" : 2344.047, - "99.94924816405364" : 2344.239, - "99.94971070106315" : 2344.431, - "99.95023161653017" : 2344.623, - "99.95069115977263" : 2344.799, - "99.95117465315151" : 2344.991, - "99.95142313581681" : 2345.103, - "99.95166114029743" : 2345.199, - "99.95192010114741" : 2345.295, - "99.95217307446329" : 2345.407, - "99.95241706647802" : 2345.519, - "99.95263860523985" : 2345.631, - "99.95289457232279" : 2345.727, - "99.95315053940573" : 2345.839, - "99.95339602830397" : 2345.951, - "99.9536175670658" : 2346.063, - "99.95388999986753" : 2346.191, - "99.95411153862936" : 2346.271, - "99.95435253687704" : 2346.351, - "99.95459952265881" : 2346.431, - "99.95486297415937" : 2346.527, - "99.95508750668826" : 2346.607, - "99.95533748623708" : 2346.735, - "99.95557698760123" : 2346.863, - "99.95582996091711" : 2346.975, - "99.95607544981537" : 2347.087, - "99.95632692624773" : 2347.215, - "99.95655295566014" : 2347.295, - "99.95681191651012" : 2347.391, - "99.9570529147578" : 2347.487, - "99.95727744728669" : 2347.583, - "99.95752892371904" : 2347.679, - "99.95780285340429" : 2347.759, - "99.95801690774849" : 2347.823, - "99.95829832185136" : 2347.919, - "99.95851536996263" : 2347.983, - "99.95877732457966" : 2348.063, - "99.95898988204034" : 2348.143, - "99.95923537093859" : 2348.255, - "99.95948085983684" : 2348.383, - "99.95972934250214" : 2348.479, - "99.9599927940027" : 2348.591, - "99.9602233140657" : 2348.703, - "99.96048227491568" : 2348.831, - "99.960702316794" : 2348.943, - "99.96096726517808" : 2349.071, - "99.96120826342576" : 2349.167, - "99.96143279595464" : 2349.263, - "99.9616902599211" : 2349.391, - "99.96195670518871" : 2349.519, - "99.96216477199881" : 2349.647, - "99.96240726713002" : 2349.759, - "99.96265125914474" : 2349.903, - "99.96292668571351" : 2350.047, - "99.96315271512593" : 2350.175, - "99.96338173830539" : 2350.255, - "99.96363770538832" : 2350.367, - "99.9639131319571" : 2350.479, - "99.96413467071893" : 2350.575, - "99.96437417208308" : 2350.703, - "99.96462564851544" : 2350.815, - "99.9648486841608" : 2350.895, - "99.96512560761309" : 2351.039, - "99.96535014014198" : 2351.135, - "99.9656001196908" : 2351.247, - "99.9658486023561" : 2351.375, - "99.96606565046737" : 2351.471, - "99.96631113936562" : 2351.615, - "99.96657159709913" : 2351.759, - "99.96681109846328" : 2351.871, - "99.9670431154098" : 2351.967, - "99.967285610541" : 2352.095, - "99.96754157762393" : 2352.239, - "99.96780203535744" : 2352.367, - "99.96801908346869" : 2352.479, - "99.96829301315394" : 2352.639, - "99.96852353321692" : 2352.799, - "99.96876153769755" : 2352.927, - "99.96900253594522" : 2353.071, - "99.96924952172701" : 2353.199, - "99.9694860293241" : 2353.327, - "99.96973900263998" : 2353.487, - "99.96998000088765" : 2353.663, - "99.97023596797058" : 2353.807, - "99.97048894128646" : 2353.951, - "99.97073742395177" : 2354.063, - "99.97094848452892" : 2354.175, - "99.97121642668006" : 2354.287, - "99.97144544985953" : 2354.447, - "99.97169692629188" : 2354.639, - "99.97195139649129" : 2354.815, - "99.97217592902018" : 2354.959, - "99.97243189610312" : 2355.151, - "99.97268337253547" : 2355.311, - "99.97290940194787" : 2355.455, - "99.97315638772966" : 2355.615, - "99.97339289532675" : 2355.807, - "99.97364886240969" : 2355.999, - "99.97389435130793" : 2356.143, - "99.97412187760388" : 2356.303, - "99.97437036026918" : 2356.511, - "99.97461435228391" : 2356.687, - "99.97485834429862" : 2356.831, - "99.97511580826509" : 2356.975, - "99.97534632832807" : 2357.103, - "99.97559181722633" : 2357.247, - "99.97573551804481" : 2357.343, - "99.97583730612457" : 2357.407, - "99.97597951005955" : 2357.519, - "99.9760753106052" : 2357.567, - "99.97620553947196" : 2357.647, - "99.97633876210577" : 2357.743, - "99.97644504083611" : 2357.807, - "99.9765887416546" : 2357.871, - "99.9767099892202" : 2357.935, - "99.97680728664938" : 2357.983, - "99.97693901239965" : 2358.095, - "99.97705427243116" : 2358.207, - "99.97718450129791" : 2358.319, - "99.97730724574704" : 2358.415, - "99.97743148707968" : 2358.495, - "99.97755423152881" : 2358.607, - "99.97766799467678" : 2358.703, - "99.97779223600944" : 2358.767, - "99.97793144617735" : 2358.847, - "99.97804520932532" : 2358.927, - "99.97817992884265" : 2359.023, - "99.97828471068946" : 2359.087, - "99.97840895202211" : 2359.167, - "99.97852271517009" : 2359.247, - "99.97863797520158" : 2359.327, - "99.97876820406833" : 2359.423, - "99.97890741423625" : 2359.519, - "99.97901818361716" : 2359.615, - "99.97913044988161" : 2359.695, - "99.97925469121427" : 2359.823, - "99.9793953982657" : 2359.935, - "99.97950317387956" : 2360.031, - "99.97963489962984" : 2360.143, - "99.97974716589428" : 2360.223, - "99.97986392280932" : 2360.319, - "99.98000013921016" : 2360.415, - "99.9801064179405" : 2360.479, - "99.98024263434137" : 2360.591, - "99.9803653787905" : 2360.687, - "99.98050159519136" : 2360.767, - "99.98059589885348" : 2360.831, - "99.98072014018614" : 2360.975, - "99.98085036905289" : 2361.135, - "99.98096113843381" : 2361.231, - "99.98108388288294" : 2361.375, - "99.98122009928379" : 2361.487, - "99.98132787489766" : 2361.599, - "99.98144912246326" : 2361.695, - "99.98159132639822" : 2361.791, - "99.98169610824503" : 2361.903, - "99.98181885269416" : 2362.031, - "99.98194309402682" : 2362.143, - "99.98205685717478" : 2362.239, - "99.98220504864385" : 2362.335, - "99.98231581802477" : 2362.399, - "99.98242808428921" : 2362.527, - "99.98255981003949" : 2362.655, - "99.98267357318747" : 2362.783, - "99.98279482075306" : 2362.879, - "99.98292654650335" : 2363.023, - "99.98304629718541" : 2363.151, - "99.98316455098397" : 2363.231, - "99.98327681724841" : 2363.343, - "99.98340105858107" : 2363.455, - "99.9835357780984" : 2363.567, - "99.98364954124636" : 2363.695, - "99.98376779504491" : 2363.791, - "99.98390401144577" : 2363.919, - "99.98402076836079" : 2364.015, - "99.98413303462523" : 2364.127, - "99.98425727595789" : 2364.239, - "99.98437552975643" : 2364.383, - "99.98450426173966" : 2364.495, - "99.98462999995584" : 2364.607, - "99.98474376310381" : 2364.751, - "99.9848814763882" : 2364.863, - "99.98499973018674" : 2364.959, - "99.98510900268414" : 2365.071, - "99.98524372220147" : 2365.263, - "99.98535898223297" : 2365.391, - "99.9854817266821" : 2365.583, - "99.9856029742477" : 2365.711, - "99.98572272492976" : 2365.823, - "99.98584247561183" : 2365.951, - "99.98598018889622" : 2366.047, - "99.98609095827715" : 2366.175, - "99.98620921207569" : 2366.303, - "99.98632896275777" : 2366.479, - "99.98645769474099" : 2366.591, - "99.98657744542307" : 2366.719, - "99.9867121649404" : 2366.863, - "99.98683191562247" : 2366.991, - "99.9869486725375" : 2367.087, - "99.98706542945251" : 2367.215, - "99.98719266455223" : 2367.375, - "99.98730792458372" : 2367.519, - "99.98743366279989" : 2367.631, - "99.98756239478313" : 2367.823, - "99.98767915169815" : 2367.983, - "99.98780189614727" : 2368.095, - "99.98786626213888" : 2368.159, - "99.98792613747992" : 2368.223, - "99.98798002528686" : 2368.271, - "99.98803840374437" : 2368.351, - "99.98810276973597" : 2368.447, - "99.98816863261112" : 2368.511, - "99.98822701106863" : 2368.607, - "99.98829437082729" : 2368.735, - "99.98834376798365" : 2368.799, - "99.98840663709174" : 2368.895, - "99.98846950619983" : 2368.975, - "99.9885308784244" : 2369.071, - "99.98859225064895" : 2369.167, - "99.98864763533942" : 2369.295, - "99.98871798886513" : 2369.375, - "99.9887913361579" : 2369.423, - "99.98884971461541" : 2369.471, - "99.98889312423766" : 2369.519, - "99.9889529995787" : 2369.599, - "99.98901736557032" : 2369.743, - "99.98908023467841" : 2369.855, - "99.98914160690296" : 2369.999, - "99.98919848847696" : 2370.079, - "99.98926135758504" : 2370.255, - "99.98932422669313" : 2370.351, - "99.9893915864518" : 2370.431, - "99.9894439773752" : 2370.495, - "99.98950534959977" : 2370.591, - "99.9895652249408" : 2370.703, - "99.98962510028184" : 2370.799, - "99.98969994445814" : 2370.911, - "99.98975832291565" : 2371.007, - "99.98980772007201" : 2371.087, - "99.98989304243298" : 2371.231, - "99.98993944582229" : 2371.311, - "99.98999033986216" : 2371.439, - "99.99005320897025" : 2371.519, - "99.99011458119482" : 2371.583, - "99.990183437837" : 2371.711, - "99.99024481006157" : 2371.791, - "99.99029720098498" : 2371.871, - "99.99035857320955" : 2371.935, - "99.99041844855059" : 2371.999, - "99.99048580830924" : 2372.111, - "99.99054418676675" : 2372.175, - "99.99060256522426" : 2372.223, - "99.99067142186647" : 2372.303, - "99.99072830344045" : 2372.415, - "99.99079865696616" : 2372.527, - "99.99084955100605" : 2372.607, - "99.99091242011413" : 2372.703, - "99.9909678048046" : 2372.767, - "99.99103516456326" : 2372.863, - "99.9910950399043" : 2372.959, - "99.99116090277944" : 2373.087, - "99.99121329370284" : 2373.183, - "99.99127915657799" : 2373.295, - "99.99133903191903" : 2373.375, - "99.99139741037654" : 2373.487, - "99.99145728571757" : 2373.631, - "99.99151716105861" : 2373.743, - "99.99158901146785" : 2373.807, - "99.9916384086242" : 2373.887, - "99.99170427149934" : 2373.967, - "99.99176714060744" : 2374.063, - "99.9918345003661" : 2374.127, - "99.99188240063893" : 2374.175, - "99.99195275416464" : 2374.239, - "99.99200664197159" : 2374.351, - "99.99208148614788" : 2374.447, - "99.99213238018775" : 2374.511, - "99.99219375241232" : 2374.607, - "99.99226560282156" : 2374.687, - "99.9923135030944" : 2374.735, - "99.99237487531896" : 2374.831, - "99.99243774442705" : 2374.943, - "99.99249761976809" : 2375.039, - "99.99255749510912" : 2375.151, - "99.99262784863484" : 2375.263, - "99.99268473020882" : 2375.343, - "99.99274011489928" : 2375.471, - "99.99279849335679" : 2375.583, - "99.99286435623193" : 2375.711, - "99.99292722534003" : 2375.791, - "99.99298410691401" : 2375.839, - "99.99304398225505" : 2375.951, - "99.99310685136314" : 2376.063, - "99.99317720488885" : 2376.207, - "99.99323708022989" : 2376.271, - "99.99328947115329" : 2376.335, - "99.99335533402844" : 2376.447, - "99.99341520936947" : 2376.543, - "99.99347209094346" : 2376.671, - "99.99353496005155" : 2376.799, - "99.99359932604317" : 2376.927, - "99.9936592013842" : 2377.071, - "99.99371458607466" : 2377.247, - "99.99377745518275" : 2377.407, - "99.99384032429083" : 2377.503, - "99.99389720586483" : 2377.631, - "99.99392714353534" : 2377.695, - "99.99396157185643" : 2377.775, - "99.99399150952695" : 2377.839, - "99.99401995031394" : 2377.919, - "99.99405437863504" : 2377.983, - "99.9940813225385" : 2378.031, - "99.99411275709255" : 2378.111, - "99.99415466983127" : 2378.207, - "99.9941846075018" : 2378.239, - "99.99421155140526" : 2378.303, - "99.99423250777463" : 2378.351, - "99.99426693609573" : 2378.447, - "99.99429687376625" : 2378.511, - "99.99432531455324" : 2378.559, - "99.99435525222376" : 2378.607, - "99.9943866867778" : 2378.735, - "99.99441812133183" : 2378.815, - "99.99444656211884" : 2378.879, - "99.99448099043992" : 2378.975, - "99.99451242499397" : 2379.039, - "99.99454685331507" : 2379.103, - "99.99457529410206" : 2379.151, - "99.99460223800553" : 2379.215, - "99.99462918190899" : 2379.295, - "99.99466510711362" : 2379.391, - "99.99469654166766" : 2379.471, - "99.99472049180407" : 2379.535, - "99.99475342324165" : 2379.615, - "99.99478635467922" : 2379.695, - "99.99481329858268" : 2379.759, - "99.99484772690379" : 2379.823, - "99.9948776645743" : 2379.903, - "99.99490760224482" : 2379.967, - "99.99493604303181" : 2380.063, - "99.99496897446937" : 2380.143, - "99.99499741525638" : 2380.207, - "99.99503334046099" : 2380.303, - "99.99506178124798" : 2380.335, - "99.9950917189185" : 2380.383, - "99.99512465035608" : 2380.447, - "99.9951545880266" : 2380.511, - "99.99519350699826" : 2380.559, - "99.99521146960058" : 2380.607, - "99.99524290415462" : 2380.687, - "99.99527134494161" : 2380.719, - "99.99530427637919" : 2380.815, - "99.99533571093323" : 2380.895, - "99.99536415172022" : 2380.975, - "99.99540157380837" : 2381.007, - "99.99543300836241" : 2381.039, - "99.99545995226588" : 2381.087, - "99.99548689616935" : 2381.231, - "99.99551533695634" : 2381.343, - "99.99555275904449" : 2381.455, - "99.99557970294795" : 2381.503, - "99.99560814373494" : 2381.535, - "99.99563808140546" : 2381.583, - "99.99566652219247" : 2381.647, - "99.99569945363002" : 2381.791, - "99.99572939130054" : 2381.855, - "99.99576082585459" : 2381.903, - "99.99579375729216" : 2381.967, - "99.99582519184621" : 2382.111, - "99.99585063886614" : 2382.191, - "99.99588057653666" : 2382.287, - "99.99591350797424" : 2382.383, - "99.99594344564476" : 2382.495, - "99.99597637708233" : 2382.607, - "99.99600332098579" : 2382.719, - "99.99603325865631" : 2382.863, - "99.99606619009388" : 2382.959, - "99.9960961277644" : 2383.055, - "99.99612606543492" : 2383.199, - "99.99615600310544" : 2383.295, - "99.99619192831005" : 2383.423, - "99.99621737532999" : 2383.551, - "99.99624731300051" : 2383.631, - "99.99628323820514" : 2383.711, - "99.9963101821086" : 2383.791, - "99.99634311354617" : 2383.855, - "99.99637454810022" : 2383.983, - "99.99640448577074" : 2384.079, - "99.9964314296742" : 2384.175, - "99.99646885176236" : 2384.303, - "99.99649280189877" : 2384.431, - "99.99652124268576" : 2384.479, - "99.99655716789039" : 2384.591, - "99.99658560867738" : 2384.639, - "99.99661255258084" : 2384.703, - "99.99664548401842" : 2384.783, - "99.99667542168893" : 2384.879, - "99.9967083531265" : 2384.959, - "99.99674128456407" : 2385.039, - "99.99676822846753" : 2385.103, - "99.99679666925452" : 2385.215, - "99.99682660692504" : 2385.279, - "99.99686253212967" : 2385.391, - "99.99689546356724" : 2385.471, - "99.99691941370365" : 2385.519, - "99.99695234514122" : 2385.647, - "99.99696581709296" : 2385.679, - "99.99698078592822" : 2385.711, - "99.99700024541406" : 2385.759, - "99.99701072359873" : 2385.807, - "99.997025692434" : 2385.871, - "99.99704066126925" : 2385.903, - "99.99705563010451" : 2385.919, - "99.9970720958233" : 2385.983, - "99.99709604595971" : 2386.047, - "99.9971065241444" : 2386.079, - "99.99711700232908" : 2386.127, - "99.99713646181492" : 2386.175, - "99.99714993376665" : 2386.223, - "99.997170890136" : 2386.271, - "99.99718286520422" : 2386.303, - "99.99719783403948" : 2386.319, - "99.99721280287473" : 2386.335, - "99.99722328105942" : 2386.351, - "99.99723824989468" : 2386.383, - "99.99725471561347" : 2386.415, - "99.99726968444872" : 2386.479, - "99.99728914393455" : 2386.575, - "99.99729962211924" : 2386.591, - "99.99731758472154" : 2386.639, - "99.9973325535568" : 2386.735, - "99.99734602550855" : 2386.831, - "99.99736398811085" : 2386.959, - "99.99737596317907" : 2387.055, - "99.99739991331548" : 2387.103, - "99.99740889461663" : 2387.135, - "99.99742236656836" : 2387.199, - "99.99743733540362" : 2387.279, - "99.9974538011224" : 2387.327, - "99.99748074502587" : 2387.375, - "99.99748673255998" : 2387.391, - "99.99750020451171" : 2387.439, - "99.99751517334697" : 2387.567, - "99.9975286452987" : 2387.679, - "99.99754361413396" : 2387.775, - "99.99756007985275" : 2387.855, - "99.99758402998917" : 2387.951, - "99.99759001752327" : 2387.967, - "99.99760798012558" : 2388.111, - "99.99762145207731" : 2388.239, - "99.99763492402904" : 2388.367, - "99.99765138974783" : 2388.479, - "99.99766635858309" : 2388.527, - "99.99768282430188" : 2388.639, - "99.99769779313714" : 2388.687, - "99.99771425885592" : 2388.719, - "99.99772922769118" : 2388.767, - "99.99775018406054" : 2388.831, - "99.9977591653617" : 2388.847, - "99.99778461238164" : 2388.895, - "99.99778760614869" : 2388.911, - "99.997805568751" : 2388.959, - "99.99782203446979" : 2388.991, - "99.997834009538" : 2389.007, - "99.99785346902382" : 2389.055, - "99.99786394720851" : 2389.071, - "99.99788190981081" : 2389.135, - "99.99789987241313" : 2389.167, - "99.99791334436486" : 2389.215, - "99.99792981008365" : 2389.247, - "99.9979447789189" : 2389.295, - "99.99795675398711" : 2389.327, - "99.99797920724001" : 2389.375, - "99.99799118230821" : 2389.391, - "99.99800615114347" : 2389.455, - "99.99801812621168" : 2389.535, - "99.99803608881399" : 2389.695, - "99.99805105764925" : 2389.775, - "99.99807201401862" : 2389.823, - "99.99807800155271" : 2389.839, - "99.99809297038797" : 2389.871, - "99.99811392675734" : 2389.967, - "99.99812590182555" : 2390.031, - "99.9981408706608" : 2390.143, - "99.99815434261254" : 2390.223, - "99.9981693114478" : 2390.303, - "99.99818428028306" : 2390.479, - "99.9982037397689" : 2390.607, - "99.9982157148371" : 2390.751, - "99.99823068367236" : 2390.847, - "99.99824714939115" : 2390.927, - "99.99826062134288" : 2391.039, - "99.99827708706167" : 2391.183, - "99.99829205589693" : 2391.231, - "99.99831301226628" : 2391.295, - "99.99832349045097" : 2391.327, - "99.99834145305329" : 2391.359, - "99.99835941565559" : 2391.487, - "99.99837288760732" : 2391.535, - "99.99838336579201" : 2391.599, - "99.99839833462727" : 2391.759, - "99.9984177941131" : 2391.823, - "99.99843126606484" : 2391.887, - "99.99844473801657" : 2391.983, - "99.99845970685183" : 2392.047, - "99.99847617257062" : 2392.319, - "99.99848216010471" : 2392.415, - "99.99848964452235" : 2392.527, - "99.99850461335761" : 2392.639, - "99.99851209777523" : 2392.655, - "99.99851658842582" : 2392.671, - "99.99852107907638" : 2392.703, - "99.99853006037755" : 2392.735, - "99.99853604791164" : 2392.751, - "99.99854353232928" : 2392.783, - "99.99855401051396" : 2392.847, - "99.99856299181512" : 2392.895, - "99.99856598558216" : 2392.927, - "99.99857646376685" : 2392.991, - "99.99858095441742" : 2393.023, - "99.99858993571858" : 2393.119, - "99.9985974201362" : 2393.151, - "99.9986078983209" : 2393.263, - "99.998613885855" : 2393.295, - "99.9986198733891" : 2393.439, - "99.99862735780673" : 2393.487, - "99.99863633910789" : 2393.519, - "99.99864382352551" : 2393.599, - "99.99864981105962" : 2393.631, - "99.99865729547724" : 2393.759, - "99.99866777366194" : 2393.983, - "99.99867376119603" : 2394.063, - "99.99868723314776" : 2394.127, - "99.99869172379834" : 2394.159, - "99.99869621444893" : 2394.175, - "99.99870818951713" : 2394.303, - "99.99871268016771" : 2394.319, - "99.99871866770181" : 2394.335, - "99.99872764900297" : 2394.479, - "99.99873363653707" : 2394.511, - "99.99874261783823" : 2394.591, - "99.99875309602291" : 2394.703, - "99.99875758667349" : 2394.735, - "99.99876806485817" : 2394.799, - "99.99877255550875" : 2394.895, - "99.99878003992637" : 2394.927, - "99.99878752434401" : 2395.039, - "99.99879650564516" : 2395.119, - "99.99880249317927" : 2395.151, - "99.99880997759689" : 2395.183, - "99.99881746201453" : 2395.327, - "99.9988279401992" : 2395.439, - "99.99883841838388" : 2395.455, - "99.99884141215094" : 2395.487, - "99.99885338721914" : 2395.519, - "99.99885787786972" : 2395.535, - "99.99886536228735" : 2395.583, - "99.99887134982146" : 2395.599, - "99.9988803311226" : 2395.647, - "99.99888931242377" : 2395.663, - "99.99889979060845" : 2395.711, - "99.99890428125903" : 2395.727, - "99.99891026879313" : 2395.791, - "99.99891925009429" : 2395.855, - "99.99892523762838" : 2395.871, - "99.99893272204602" : 2395.903, - "99.99894020646364" : 2395.967, - "99.99895068464834" : 2396.063, - "99.9989551752989" : 2396.143, - "99.99896265971654" : 2396.319, - "99.99897014413416" : 2396.431, - "99.99898511296942" : 2396.463, - "99.99898810673648" : 2396.479, - "99.99899409427059" : 2396.527, - "99.99900457245526" : 2396.671, - "99.99901055998937" : 2396.703, - "99.99901654752347" : 2396.799, - "99.9990240319411" : 2396.895, - "99.99903301324225" : 2396.943, - "99.9990419945434" : 2397.007, - "99.99904648519399" : 2397.023, - "99.99905396961162" : 2397.071, - "99.9990644477963" : 2397.167, - "99.99907043533041" : 2397.391, - "99.99907941663156" : 2397.535, - "99.99908690104918" : 2397.567, - "99.99909737923387" : 2397.615, - "99.99910037300093" : 2397.647, - "99.99911234806913" : 2397.775, - "99.99911534183619" : 2397.871, - "99.99912582002086" : 2397.919, - "99.99913180755496" : 2397.967, - "99.99914078885612" : 2398.031, - "99.99914827327375" : 2398.095, - "99.99915575769138" : 2398.175, - "99.99916174522548" : 2398.207, - "99.99917072652664" : 2398.351, - "99.99917671406074" : 2398.479, - "99.9991856953619" : 2398.559, - "99.999191682896" : 2398.655, - "99.99919916731363" : 2398.751, - "99.99920665173126" : 2398.831, - "99.99921712991595" : 2398.911, - "99.99922311745004" : 2398.959, - "99.99923060186768" : 2399.023, - "99.9992380862853" : 2399.055, - "99.99924257693588" : 2399.087, - "99.99924557070294" : 2399.119, - "99.99925006135351" : 2399.199, - "99.99925305512056" : 2399.279, - "99.99925754577114" : 2399.295, - "99.9992605395382" : 2399.311, - "99.99926503018877" : 2399.343, - "99.99926952083935" : 2399.391, - "99.9992725146064" : 2399.439, - "99.99927550837346" : 2399.503, - "99.99928149590755" : 2399.567, - "99.99928299279108" : 2399.583, - "99.99928898032519" : 2399.759, - "99.99929047720872" : 2399.775, - "99.99929496785929" : 2399.855, - "99.99930245227692" : 2399.903, - "99.9993069429275" : 2399.919, - "99.99930993669454" : 2399.983, - "99.99931592422865" : 2399.999, - "99.99931891799571" : 2400.015, - "99.99932191176276" : 2400.031, - "99.99932789929686" : 2400.047, - "99.99932939618039" : 2400.063, - "99.99933388683097" : 2400.191, - "99.99933987436506" : 2400.223, - "99.99934137124859" : 2400.271, - "99.99935035254975" : 2400.415, - "99.99935184943328" : 2400.463, - "99.9993593338509" : 2400.527, - "99.99936382450149" : 2400.591, - "99.99936681826854" : 2400.607, - "99.99937130891911" : 2400.671, - "99.99937579956969" : 2400.719, - "99.99937879333675" : 2400.751, - "99.99938627775437" : 2400.847, - "99.99939076840495" : 2400.959, - "99.999393762172" : 2400.975, - "99.99939825282257" : 2401.039, - "99.99940124658963" : 2401.135, - "99.99940573724021" : 2401.215, - "99.99940873100726" : 2401.263, - "99.99941322165783" : 2401.391, - "99.99942070607547" : 2401.583, - "99.99942519672605" : 2401.711, - "99.99942819049309" : 2401.807, - "99.99943268114367" : 2401.839, - "99.99943717179426" : 2401.935, - "99.99944166244484" : 2401.983, - "99.99944315932835" : 2402.015, - "99.99944914686246" : 2402.079, - "99.99945214062951" : 2402.335, - "99.99945513439657" : 2402.383, - "99.99945962504714" : 2402.447, - "99.99946411569772" : 2402.463, - "99.99946710946477" : 2402.623, - "99.99947160011536" : 2402.671, - "99.9994745938824" : 2402.703, - "99.99947908453298" : 2402.719, - "99.99948207830003" : 2402.767, - "99.99948507206709" : 2402.815, - "99.99949105960118" : 2402.991, - "99.99949405336824" : 2403.007, - "99.99949704713529" : 2403.071, - "99.99950303466939" : 2403.199, - "99.99951051908702" : 2403.231, - "99.9995150097376" : 2403.247, - "99.99951650662113" : 2403.263, - "99.99952249415523" : 2403.279, - "99.99952997857287" : 2403.295, - "99.99953746299049" : 2403.311, - "99.99953895987402" : 2403.327, - "99.9995434505246" : 2403.343, - "99.9995494380587" : 2403.359, - "99.99955243182575" : 2403.375, - "99.9995554255928" : 2403.391, - "99.99956291001043" : 2403.407, - "99.99956889754453" : 2403.423, - "99.99957189131159" : 2403.439, - "99.99957338819512" : 2403.471, - "99.99957787884568" : 2403.583, - "99.99958236949627" : 2403.647, - "99.99958536326332" : 2403.791, - "99.9995898539139" : 2403.919, - "99.99959284768094" : 2404.031, - "99.99959733833153" : 2404.287, - "99.99960182898211" : 2404.367, - "99.9996078165162" : 2404.383, - "99.99961380405031" : 2404.463, - "99.9996182947009" : 2404.527, - "99.99962128846794" : 2404.543, - "99.99962278535146" : 2404.559, - "99.99962577911852" : 2404.751, - "99.99962727600204" : 2404.831, - "99.99962877288557" : 2404.863, - "99.9996302697691" : 2404.927, - "99.99963326353615" : 2404.943, - "99.99963775418672" : 2404.959, - "99.99964074795378" : 2405.375, - "99.9996422448373" : 2405.391, - "99.99964374172083" : 2405.471, - "99.99964523860436" : 2405.487, - "99.99964823237141" : 2405.535, - "99.99964972925494" : 2405.695, - "99.99965122613845" : 2405.855, - "99.99965421990551" : 2405.999, - "99.99965571678904" : 2406.015, - "99.99965721367256" : 2406.351, - "99.99965871055609" : 2406.431, - "99.99966170432315" : 2406.735, - "99.99966320120667" : 2406.767, - "99.9996646980902" : 2406.879, - "99.99966769185724" : 2407.039, - "99.99966918874077" : 2407.231, - "99.99967367939135" : 2407.247, - "99.99967517627488" : 2407.263, - "99.99967817004193" : 2407.279, - "99.99968116380897" : 2407.295, - "99.99969014511014" : 2407.311, - "99.99969313887719" : 2407.327, - "99.99969613264423" : 2407.343, - "99.99969762952776" : 2407.359, - "99.99969912641129" : 2407.391, - "99.99970062329481" : 2407.535, - "99.99970361706187" : 2407.711, - "99.9997051139454" : 2407.727, - "99.99970661082892" : 2407.823, - "99.99970960459598" : 2407.935, - "99.99971110147949" : 2408.095, - "99.99971259836302" : 2408.175, - "99.99971409524655" : 2408.207, - "99.9997170890136" : 2408.367, - "99.99971858589713" : 2408.431, - "99.99972008278066" : 2408.511, - "99.99972457343124" : 2408.607, - "99.99972607031475" : 2408.671, - "99.99972756719828" : 2408.687, - "99.99973205784886" : 2408.911, - "99.99973355473239" : 2409.007, - "99.99973505161591" : 2409.135, - "99.99973804538297" : 2409.311, - "99.9997395422665" : 2409.343, - "99.99974253603354" : 2409.471, - "99.99974552980059" : 2409.615, - "99.99974702668412" : 2409.631, - "99.99975002045117" : 2409.743, - "99.99975301421823" : 2409.759, - "99.99975451110176" : 2409.775, - "99.99975600798527" : 2409.823, - "99.99975900175232" : 2410.095, - "99.99976049863585" : 2410.111, - "99.99976498928643" : 2410.223, - "99.99976947993702" : 2410.239, - "99.99977397058758" : 2410.399, - "99.99977546747111" : 2410.415, - "99.99977696435464" : 2410.431, - "99.99978145500522" : 2410.575, - "99.99978295188875" : 2410.687, - "99.99978744253931" : 2411.807, - "99.99978893942284" : 2412.863, - "99.99979043630637" : 2413.087, - "99.99979343007342" : 2413.247, - "99.999797920724" : 2413.263, - "99.99980241137457" : 2413.279, - "99.9998039082581" : 2413.487, - "99.99980989579221" : 2413.503, - "99.99981139267574" : 2413.535, - "99.99981288955927" : 2413.567, - "99.9998158833263" : 2413.599, - "99.99981738020983" : 2413.743, - "99.99982037397689" : 2413.759, - "99.99982486462747" : 2413.775, - "99.99982785839453" : 2413.791, - "99.99982935527804" : 2413.807, - "99.99983234904509" : 2413.823, - "99.99983534281215" : 2413.839, - "99.9998383365792" : 2413.935, - "99.99983983346273" : 2414.079, - "99.99984133034626" : 2414.111, - "99.99984282722978" : 2414.271, - "99.99984582099682" : 2414.463, - "99.99984731788035" : 2415.103, - "99.99984881476388" : 2415.263, - "99.9998503116474" : 2416.111, - "99.99985480229799" : 2416.239, - "99.99985929294856" : 2416.543, - "99.99986078983208" : 2416.559, - "99.99986228671561" : 2417.279, - "99.99986378359914" : 2417.295, - "99.99986827424972" : 2417.439, - "99.99986977113325" : 2417.551, - "99.99987126801678" : 2417.663, - "99.9998727649003" : 2417.775, - "99.99987575866734" : 2418.223, - "99.99987725555087" : 2418.239, - "99.9998787524344" : 2418.255, - "99.99988024931793" : 2418.495, - "99.99988174620145" : 2418.703, - "99.99988324308498" : 2419.055, - "99.99988473996851" : 2419.071, - "99.99988623685203" : 2419.231, - "99.99988773373556" : 2419.471, - "99.99988923061908" : 2419.583, - "99.9998907275026" : 2419.743, - "99.99989222438613" : 2419.775, - "99.99989372126966" : 2419.999, - "99.99989671503671" : 2420.015, - "99.99989970880377" : 2420.463, - "99.99990569633786" : 2420.479, - "99.99990719322139" : 2421.055, - "99.99990869010492" : 2421.183, - "99.99991018698844" : 2421.407, - "99.99991168387197" : 2421.663, - "99.99991617452255" : 2423.951, - "99.99992066517312" : 2423.967, - "99.99992665270723" : 2424.335, - "99.99992814959076" : 2424.431, - "99.99992964647429" : 2424.815, - "99.99993114335781" : 2424.895, - "99.99993264024134" : 2425.439, - "99.99993413712485" : 2425.455, - "99.99993563400838" : 2425.519, - "99.99993713089191" : 2425.919, - "99.99994012465896" : 2426.095, - "99.99994162154249" : 2426.415, - "99.99994311842602" : 2426.527, - "99.99994461530954" : 2427.119, - "99.99995060284364" : 2427.519, - "99.99995209972717" : 2428.063, - "99.9999535966107" : 2428.591, - "99.99995509349422" : 2428.767, - "99.99995659037775" : 2429.311, - "99.99995808726128" : 2429.647, - "99.9999595841448" : 2429.679, - "99.99996108102833" : 2429.887, - "99.99996257791186" : 2430.207, - "99.99996407479537" : 2430.271, - "99.99996706856243" : 2430.527, - "99.99996856544595" : 2430.815, - "99.99997155921301" : 2430.831, - "99.99997455298006" : 2431.583, - "99.99997604986359" : 2431.775, - "99.99997754674712" : 2432.143, - "99.99997904363063" : 2432.287, - "99.99998054051416" : 2432.911, - "99.99998203739769" : 2433.407, - "99.99998353428121" : 2433.439, - "99.99998503116474" : 2433.535, - "99.99998652804827" : 2433.663, - "99.9999880249318" : 2433.759, - "99.99998952181532" : 2434.463, - "99.99999101869885" : 2434.687, - "99.99999251558238" : 2435.343, - "99.99999401246589" : 2435.439, - "99.99999700623295" : 2435.583, - "100.0" : 2435.711 - }, - "endToEndLatencyAvg" : [ 1547.1443479629543, 1555.6536496156768, 1556.46429279882, 1557.6593165819195, 1544.662990814589, 1586.855993225005, 1547.4322507843733, 1552.5721375162163, 1561.7095663818893, 1546.5088753885775, 1551.4171267652735, 1569.8000130911203, 1556.6344293511181, 1551.952925737284, 1551.9009691067129, 1544.5963678918306, 1542.9836685892492, 1557.3178978984963, 1561.4459174251172, 1554.6456428793906, 1556.5964763908678, 1554.4455490489684, 1554.6298047151818, 1550.9091928390858, 1568.137636736496, 1552.6758846300083, 1561.8188246642405, 1557.954501759818, 1587.0631853396205, 1589.6181394636865, 1609.3864618438208, 1606.2324216386369, 1574.8452563796873, 1545.1254518773112, 1542.6120460348684, 1558.2831246629864, 1587.7545992224732, 1553.9643210472088, 1548.9838504714755, 1563.7539613856604, 1546.9935594391936, 1556.309890894479, 1587.8338037465232, 1602.0025258148448, 1576.4318088833886, 1550.4531241878863, 1567.2449573017593, 1562.960380249266, 1566.834048565064, 1586.7043181572017, 1606.4561560165682, 1614.740439410866, 1581.014689753227, 1573.4710404282011, 1572.7662553727819, 1552.0654181080256, 1545.7358596833062, 1591.0987696260142, 1590.8545720488835, 1593.9935422848087 ], - "endToEndLatency50pct" : [ 1530.007, 1535.007, 1545.007, 1548.007, 1546.007, 1559.007, 1529.007, 1543.007, 1553.007, 1544.007, 1538.007, 1549.007, 1532.007, 1518.007, 1536.007, 1526.007, 1541.007, 1552.007, 1552.007, 1549.007, 1556.007, 1547.007, 1537.007, 1547.007, 1565.007, 1549.007, 1569.007, 1543.007, 1531.007, 1515.007, 1524.007, 1528.007, 1523.007, 1533.007, 1535.007, 1541.007, 1564.007, 1539.007, 1536.007, 1555.007, 1550.007, 1547.007, 1520.007, 1532.007, 1516.007, 1476.007, 1498.007, 1492.007, 1486.007, 1497.007, 1506.007, 1537.007, 1525.007, 1524.007, 1551.007, 1550.007, 1532.007, 1531.007, 1526.007, 1542.007 ], - "endToEndLatency75pct" : [ 1911.007, 1933.007, 1915.007, 1916.007, 1911.007, 1983.007, 1903.007, 1912.007, 1903.007, 1898.007, 1909.007, 1931.007, 1921.007, 1918.007, 1908.007, 1913.007, 1904.007, 1925.007, 1928.007, 1917.007, 1908.007, 1914.007, 1915.007, 1915.007, 1933.007, 1917.007, 1928.007, 1934.007, 1993.007, 2024.007, 2081.007, 2048.007, 1962.007, 1907.007, 1895.007, 1920.007, 1957.007, 1926.007, 1919.007, 1918.007, 1898.007, 1923.007, 1998.007, 2014.007, 1973.007, 1926.007, 1942.007, 1962.007, 1969.007, 2019.007, 2075.007, 2075.007, 1994.007, 1973.007, 1951.007, 1911.007, 1908.007, 1991.007, 1992.007, 2000.007 ], - "endToEndLatency95pct" : [ 2464.015, 2474.015, 2455.007, 2456.015, 2404.015, 2567.007, 2454.015, 2395.007, 2403.007, 2452.015, 2497.007, 2498.015, 2510.015, 2524.015, 2446.015, 2479.007, 2431.007, 2457.007, 2477.007, 2390.015, 2387.007, 2409.007, 2471.007, 2459.007, 2466.015, 2428.015, 2388.015, 2447.007, 2690.015, 2686.015, 2731.007, 2712.015, 2615.007, 2424.015, 2354.015, 2455.007, 2508.015, 2500.015, 2476.015, 2461.007, 2380.015, 2452.015, 2672.015, 2688.015, 2674.015, 2684.015, 2715.007, 2703.007, 2713.007, 2698.015, 2739.007, 2749.007, 2648.015, 2607.007, 2512.015, 2389.007, 2409.007, 2657.007, 2694.015, 2649.007 ], - "endToEndLatency99pct" : [ 2747.007, 2753.007, 2709.007, 2713.007, 2703.007, 2874.015, 2744.015, 2697.007, 2656.015, 2719.007, 2805.007, 2805.007, 2823.007, 2831.007, 2734.015, 2795.007, 2751.007, 2764.015, 2820.015, 2681.007, 2665.007, 2711.007, 2801.007, 2782.015, 2753.007, 2743.007, 2669.007, 2730.015, 3008.015, 2974.015, 2971.007, 2968.015, 2881.007, 2684.015, 2627.007, 2768.015, 2832.015, 2797.007, 2750.015, 2748.015, 2632.015, 2723.007, 3003.007, 2957.007, 2965.007, 3000.015, 3057.007, 3049.007, 3071.007, 2999.007, 3017.007, 3033.007, 2920.015, 2889.007, 2809.007, 2657.007, 2679.007, 2954.015, 3013.007, 2929.007 ], - "endToEndLatency999pct" : [ 2924.015, 2921.007, 2890.015, 2862.015, 2916.015, 3084.015, 2929.007, 2919.007, 2889.007, 2872.015, 3018.015, 3021.007, 3024.015, 3023.007, 2957.007, 3025.007, 2975.007, 3004.015, 3040.015, 2914.015, 2954.015, 2951.007, 3025.007, 3025.007, 2996.015, 2947.007, 2898.015, 2871.007, 3184.015, 3161.007, 3197.007, 3140.015, 3050.015, 2841.007, 2774.015, 3061.007, 3085.007, 3074.015, 2955.007, 2943.007, 2822.015, 2970.015, 3181.007, 3157.007, 3146.015, 3213.007, 3209.007, 3211.007, 3243.007, 3210.015, 3204.015, 3228.015, 3081.007, 3043.007, 3011.007, 2846.015, 2860.015, 3114.015, 3193.007, 3154.015 ], - "endToEndLatency9999pct" : [ 2995.007, 2975.007, 2981.007, 2914.015, 2990.015, 3185.007, 3010.015, 2984.015, 2986.015, 2920.015, 3076.015, 3079.007, 3079.007, 3102.015, 3031.007, 3135.007, 3055.007, 3118.015, 3162.015, 2984.015, 3006.015, 3098.015, 3195.007, 3113.007, 3142.015, 3052.015, 2988.015, 2956.015, 3238.015, 3235.007, 3246.015, 3232.015, 3145.007, 2961.007, 2815.007, 3140.015, 3205.007, 3181.007, 3056.015, 3018.015, 2948.015, 3042.015, 3251.007, 3246.015, 3248.015, 3290.015, 3287.007, 3274.015, 3311.007, 3265.007, 3294.015, 3306.015, 3175.007, 3121.007, 3075.007, 2936.015, 2988.015, 3156.015, 3249.007, 3212.015 ], - "endToEndLatencyMax" : [ 3008.015, 2989.007, 3011.007, 3016.015, 3013.007, 3219.007, 3052.015, 3057.007, 3003.007, 2994.015, 3108.015, 3118.015, 3102.015, 3118.015, 3051.007, 3159.007, 3065.007, 3133.007, 3184.015, 2994.015, 3040.015, 3137.007, 3208.015, 3137.007, 3168.015, 3070.015, 3001.007, 2973.007, 3250.015, 3249.007, 3352.015, 3258.015, 3171.007, 3006.015, 2875.007, 3179.007, 3230.015, 3200.015, 3105.007, 3068.015, 2968.015, 3069.007, 3288.015, 3305.007, 3271.007, 3330.015, 3316.015, 3295.007, 3324.015, 3286.015, 3322.015, 3326.015, 3201.007, 3220.015, 3098.015, 2956.015, 3019.007, 3194.015, 3276.015, 3242.015 ], - "aggregatedEndToEndLatencyQuantiles" : { - "1.1975938722355061E-5" : 155.0, - "0.5045118675489919" : 382.001, - "1.0079833254214794" : 443.001, - "1.5065102175939744" : 489.001, - "2.0088813860963453" : 528.003, - "2.513758519776369" : 563.003, - "3.013183607353041" : 594.003, - "3.5037659611755934" : 621.003, - "4.006644610081325" : 646.003, - "4.5199842414610325" : 670.003, - "5.016367440602226" : 692.003, - "5.514142842619893" : 713.003, - "6.0181726786353105" : 733.003, - "6.516891185827363" : 752.003, - "7.008186108003896" : 770.003, - "7.526597549432521" : 788.003, - "8.014783218518263" : 804.003, - "8.519283110128532" : 820.003, - "9.007872967146152" : 835.003, - "9.515880311809733" : 850.003, - "10.00842073161339" : 864.003, - "10.52288909521768" : 878.003, - "11.017755841118156" : 891.003, - "11.525393428673683" : 904.003, - "12.003716912221563" : 916.003, - "12.539146162574655" : 929.003, - "13.042210438530583" : 941.003, - "13.520095303322758" : 952.003, - "14.010463587240649" : 963.003, - "14.513426067717436" : 974.003, - "15.029014181592267" : 985.003, - "15.512256781970356" : 995.003, - "16.00253524634783" : 1005.003, - "16.503316608984807" : 1015.003, - "17.025864240249668" : 1025.003, - "17.503985629831607" : 1034.003, - "18.044786088701677" : 1044.003, - "18.53734896339044" : 1053.007, - "19.03167230107139" : 1062.007, - "19.53522010555323" : 1071.007, - "20.049908527031544" : 1080.007, - "20.51345070821136" : 1088.007, - "21.036082171047273" : 1097.007, - "21.503196175951032" : 1105.007, - "22.038586504503275" : 1114.007, - "22.520095587751303" : 1122.007, - "23.00723635618352" : 1130.007, - "23.559653475614272" : 1139.007, - "24.051702881930314" : 1147.007, - "24.54880463739485" : 1155.007, - "25.049127920375696" : 1163.007, - "25.551171247555544" : 1171.007, - "26.05850644265833" : 1179.007, - "26.503993399221855" : 1186.007, - "27.018563558305285" : 1194.007, - "27.538175587590825" : 1202.007, - "28.05835946795036" : 1210.007, - "28.516536428582558" : 1217.007, - "29.04372174211765" : 1225.007, - "29.507067817300886" : 1232.007, - "30.037660285402488" : 1240.007, - "30.505425481974275" : 1247.007, - "31.03676045827666" : 1255.007, - "31.503208301588987" : 1262.007, - "32.04155818399799" : 1270.007, - "32.51069462555349" : 1277.007, - "33.05108191453763" : 1285.007, - "33.525360524782045" : 1292.007, - "34.00251785129684" : 1299.007, - "34.54532278291056" : 1307.007, - "35.01802356322829" : 1314.007, - "35.563889844177915" : 1322.007, - "36.038574139346544" : 1329.007, - "36.51127042868726" : 1336.007, - "37.052865790490024" : 1344.007, - "37.52694380376083" : 1351.007, - "38.00072092157124" : 1358.007, - "38.54342555469816" : 1366.007, - "39.017452670229396" : 1373.007, - "39.55732050287146" : 1381.007, - "40.032185934113265" : 1388.007, - "40.508424107331116" : 1395.007, - "41.04894911961057" : 1403.007, - "41.52120080222622" : 1410.007, - "42.06416591202035" : 1418.007, - "42.535514908254804" : 1425.007, - "43.00789383521938" : 1432.007, - "43.54804160542908" : 1440.007, - "44.01864509947806" : 1447.007, - "44.560357226683365" : 1455.007, - "45.03517325717794" : 1462.007, - "45.51042940342056" : 1469.007, - "46.05434360635844" : 1477.007, - "46.52925694135513" : 1484.007, - "47.00130203902782" : 1491.007, - "47.53981359660958" : 1499.007, - "48.009593744871395" : 1506.007, - "48.55079539768867" : 1514.007, - "49.02351264492214" : 1521.007, - "49.5597652410624" : 1529.007, - "50.02765468799843" : 1536.007, - "50.29855341588278" : 1540.007, - "50.56609139596317" : 1544.007, - "50.76618088915926" : 1547.007, - "51.0334718655035" : 1551.007, - "51.29955476902913" : 1555.007, - "51.56564815150114" : 1559.007, - "51.76867474366888" : 1562.007, - "52.03531602533744" : 1566.007, - "52.30159653185198" : 1570.007, - "52.50242254527949" : 1573.007, - "52.7710682996917" : 1577.007, - "53.03567367177745" : 1581.007, - "53.29985240104622" : 1585.007, - "53.563885922057985" : 1589.007, - "53.760447004308" : 1592.007, - "54.02491465309845" : 1596.007, - "54.288439196714506" : 1600.007, - "54.55054459159197" : 1604.007, - "54.81049132351473" : 1608.007, - "55.00757485609151" : 1611.007, - "55.267310512094284" : 1615.007, - "55.52718688537705" : 1619.007, - "55.784721962639594" : 1623.007, - "56.043209127030565" : 1627.007, - "56.30095228622841" : 1631.007, - "56.55783467483059" : 1635.007, - "56.75145865810894" : 1638.007, - "57.00891439477745" : 1642.007, - "57.26444050831932" : 1646.007, - "57.523863292922975" : 1650.007, - "57.7818399829259" : 1654.007, - "58.03756968742605" : 1658.007, - "58.294378723403554" : 1662.007, - "58.55049614891984" : 1666.007, - "58.80773332470667" : 1670.007, - "59.00169712524627" : 1673.007, - "59.258446281530155" : 1677.007, - "59.513801737945236" : 1681.007, - "59.7707544851874" : 1685.007, - "60.02605754687057" : 1689.007, - "60.28252826257916" : 1693.007, - "60.53997801127831" : 1697.007, - "60.7952077203368" : 1701.007, - "61.05460056509365" : 1705.007, - "61.31070900865589" : 1709.007, - "61.50212043725529" : 1712.007, - "61.75780223800056" : 1716.007, - "62.01284632000885" : 1720.007, - "62.26707005021466" : 1724.007, - "62.52050785944182" : 1728.007, - "62.77548607378714" : 1732.007, - "63.02726521550125" : 1736.007, - "63.28187966070789" : 1740.007, - "63.53362886257519" : 1744.007, - "63.78491848779402" : 1748.007, - "64.03805689855312" : 1752.007, - "64.28952316886812" : 1756.007, - "64.54006280092446" : 1760.007, - "64.7913673960667" : 1764.007, - "65.04037710195126" : 1768.007, - "65.28995566492515" : 1772.007, - "65.53952374895265" : 1776.007, - "65.78801848947215" : 1780.007, - "66.03344289870172" : 1784.007, - "66.2767879855706" : 1788.007, - "66.5222842504325" : 1792.007, - "66.76748111682635" : 1796.007, - "67.01330073203374" : 1800.007, - "67.25809939846506" : 1804.007, - "67.50122742144461" : 1808.007, - "67.80596266719664" : 1813.007, - "68.04903230747492" : 1817.007, - "68.28932203297727" : 1821.007, - "68.52960427351792" : 1825.007, - "68.76753174510729" : 1829.007, - "69.00860140361894" : 1833.007, - "69.30755376796041" : 1838.007, - "69.54693182512752" : 1842.007, - "69.77952401601608" : 1846.007, - "70.01703232975017" : 1850.007, - "70.25299275340438" : 1854.007, - "70.54399010044953" : 1859.007, - "70.77597750643261" : 1863.007, - "71.00528679311891" : 1867.007, - "71.28926025210339" : 1872.007, - "71.51585848566141" : 1876.007, - "71.79942775671401" : 1881.007, - "72.02376253785351" : 1885.007, - "72.3026911326512" : 1890.007, - "72.52450497868963" : 1894.007, - "72.80402787944642" : 1899.007, - "73.02770548094854" : 1903.007, - "73.25245343197395" : 1907.007, - "73.5311799328057" : 1912.007, - "73.75327671039646" : 1916.007, - "74.02677122299887" : 1921.007, - "74.29718043438795" : 1926.007, - "74.51409312750427" : 1930.007, - "74.78602777408811" : 1935.007, - "75.00107222076373" : 1939.007, - "75.15982526446727" : 1942.007, - "75.266286868732" : 1944.007, - "75.42507284626701" : 1947.007, - "75.52965123416764" : 1949.007, - "75.63423710702996" : 1951.007, - "75.79066532162904" : 1954.007, - "75.89600118765384" : 1956.007, - "76.0012232822608" : 1958.007, - "76.1576455088905" : 1961.007, - "76.26268946140895" : 1963.007, - "76.41780481372558" : 1966.007, - "76.52070507321272" : 1968.007, - "76.67503749853537" : 1971.007, - "76.77683896564476" : 1973.007, - "76.87757457420786" : 1975.007, - "77.02798787358361" : 1978.007, - "77.12662619587795" : 1980.007, - "77.27815625153956" : 1983.007, - "77.37617332201268" : 1985.007, - "77.52410161410354" : 1988.007, - "77.67050147701498" : 1991.007, - "77.76828801066769" : 1993.007, - "77.91296034441842" : 1996.007, - "78.00886665569172" : 1998.007, - "78.15235786248596" : 2001.007, - "78.2939583679544" : 2004.007, - "78.38841409364996" : 2006.007, - "78.52726163020459" : 2009.007, - "78.66550887283078" : 2012.007, - "78.75794066488226" : 2014.007, - "78.89590796994081" : 2017.007, - "79.03486328994396" : 2020.007, - "79.12578311973174" : 2022.007, - "79.26067410553098" : 2025.007, - "79.39457557939329" : 2028.007, - "79.52717766390423" : 2031.007, - "79.66026327694108" : 2034.007, - "79.7910405277892" : 2037.007, - "79.87877625486918" : 2039.007, - "80.00994422071811" : 2042.007, - "80.14171098350316" : 2045.007, - "80.27216338701344" : 2048.007, - "80.4035259618666" : 2051.007, - "80.53375231953349" : 2054.007, - "80.66171073380484" : 2057.007, - "80.7906691389595" : 2060.007, - "80.87660548124643" : 2062.007, - "81.0014366785189" : 2065.007, - "81.12723792682789" : 2068.007, - "81.2518999639659" : 2071.007, - "81.37638535600776" : 2074.007, - "81.5404961352972" : 2078.007, - "81.66227945616484" : 2081.007, - "81.78337116657126" : 2084.007, - "81.90466646793594" : 2087.007, - "82.02448872883778" : 2090.007, - "82.14552055955059" : 2093.007, - "82.26668861656636" : 2096.007, - "82.38679081503584" : 2099.007, - "82.50615948725857" : 2102.015, - "82.66374637392902" : 2106.015, - "82.78226176051778" : 2109.007, - "82.89879662624034" : 2112.015, - "83.01507999724973" : 2115.007, - "83.13096217431192" : 2118.015, - "83.28496376432736" : 2122.015, - "83.3992097287616" : 2125.007, - "83.51246019328956" : 2128.015, - "83.62534688867882" : 2131.007, - "83.7752631865976" : 2135.007, - "83.88723521966693" : 2138.015, - "84.03506770424802" : 2142.015, - "84.14712057490374" : 2145.007, - "84.25889799896885" : 2148.015, - "84.40705083991075" : 2152.015, - "84.51575493870124" : 2155.007, - "84.62503388255038" : 2158.015, - "84.76971519825516" : 2162.015, - "84.87982347586083" : 2165.007, - "85.02431317654604" : 2169.007, - "85.1299334711155" : 2172.015, - "85.27088877288529" : 2176.015, - "85.3768189448692" : 2179.007, - "85.51693742792075" : 2183.007, - "85.65694513353912" : 2187.007, - "85.76018371329519" : 2190.015, - "85.89800880408141" : 2194.015, - "86.0006725387788" : 2197.007, - "86.13861439496756" : 2201.007, - "86.27387214389019" : 2205.007, - "86.37537720651619" : 2208.015, - "86.50772480232928" : 2212.015, - "86.64144364312607" : 2216.015, - "86.77598433271768" : 2220.015, - "86.87574989024426" : 2223.007, - "87.00872622284028" : 2227.007, - "87.14080885100913" : 2231.007, - "87.2729259100018" : 2235.007, - "87.40256694366364" : 2239.007, - "87.53179480743955" : 2243.007, - "87.56445468932776" : 2244.015, - "87.62987774557564" : 2246.015, - "87.6950358341793" : 2248.015, - "87.75930770331749" : 2250.015, - "87.82484902196026" : 2252.015, - "87.8888214926304" : 2254.015, - "87.95297659636606" : 2256.015, - "88.01559728295291" : 2258.015, - "88.07924340929287" : 2260.015, - "88.1428775596941" : 2262.015, - "88.20677218676255" : 2264.015, - "88.26937341244899" : 2266.015, - "88.33300456886553" : 2268.015, - "88.39586028324982" : 2270.015, - "88.45908575474215" : 2272.015, - "88.52189356537154" : 2274.015, - "88.58505167220856" : 2276.015, - "88.64720230320056" : 2278.015, - "88.70882000491942" : 2280.015, - "88.76931945336007" : 2282.015, - "88.82930693042034" : 2284.015, - "88.88862674889685" : 2286.015, - "88.94868458459713" : 2288.015, - "89.00820200606255" : 2290.015, - "89.06823289590069" : 2292.015, - "89.12680421820706" : 2294.015, - "89.2155608940631" : 2297.007, - "89.27369958558312" : 2299.007, - "89.33137570646998" : 2301.007, - "89.39007726710994" : 2303.007, - "89.44879080368864" : 2305.007, - "89.50738607787244" : 2307.007, - "89.56613554226729" : 2309.007, - "89.6537949227379" : 2312.015, - "89.70994261444532" : 2314.015, - "89.7677789135126" : 2316.015, - "89.82505084646758" : 2318.015, - "89.88145751784988" : 2320.015, - "89.96570225879228" : 2323.007, - "90.02134696107336" : 2325.007, - "90.07862338500537" : 2327.007, - "90.13458694665493" : 2329.007, - "90.1905729631896" : 2331.007, - "90.27272640583261" : 2334.015, - "90.32917798698512" : 2336.015, - "90.3850158012781" : 2338.015, - "90.44039852989962" : 2340.015, - "90.5233304085596" : 2343.007, - "90.57850056426881" : 2345.007, - "90.6341452665499" : 2347.007, - "90.68908338844635" : 2349.007, - "90.77076677549452" : 2352.015, - "90.82523933277315" : 2354.015, - "90.87940201263734" : 2356.015, - "90.96076803730936" : 2359.007, - "91.01416425709532" : 2361.007, - "91.06713533105663" : 2363.007, - "91.14529629512809" : 2366.015, - "91.19865209612087" : 2368.015, - "91.25134023852986" : 2370.015, - "91.32936497629835" : 2373.007, - "91.38174174430057" : 2375.007, - "91.46005240760604" : 2378.015, - "91.51174954108578" : 2380.015, - "91.58822638877439" : 2383.007, - "91.63946095162096" : 2385.007, - "91.690864674602" : 2387.007, - "91.76692386142767" : 2390.015, - "91.8175177115526" : 2392.015, - "91.89369815475784" : 2395.007, - "91.94439529735425" : 2397.007, - "92.01912365798941" : 2400.015, - "92.0679405782064" : 2402.015, - "92.14149829083145" : 2405.007, - "92.1911864605905" : 2407.007, - "92.26471573036108" : 2410.015, - "92.31260301833476" : 2412.015, - "92.38447960856165" : 2415.007, - "92.45513914401589" : 2418.015, - "92.50219859522538" : 2420.015, - "92.57339704792213" : 2423.007, - "92.64415688186315" : 2426.015, - "92.69196632623515" : 2428.015, - "92.76369321722801" : 2431.007, - "92.83407580909929" : 2434.015, - "92.8799137145591" : 2436.015, - "92.9484355449514" : 2439.007, - "93.01695887233603" : 2442.015, - "93.08404059609695" : 2445.007, - "93.12872881143943" : 2447.007, - "93.19615933441565" : 2450.015, - "93.26218867256135" : 2453.007, - "93.32824795055386" : 2456.015, - "93.3940482488715" : 2459.007, - "93.45863448640117" : 2462.015, - "93.50119098465105" : 2464.015, - "93.56491495459271" : 2467.007, - "93.62871976212074" : 2470.015, - "93.69319372522487" : 2473.007, - "93.75616321102702" : 2476.015, - "93.79891132429645" : 2478.015, - "93.8199665215627" : 2479.007, - "93.86197661760838" : 2481.007, - "93.88277882316912" : 2482.015, - "93.92494610341052" : 2484.015, - "93.94619141870398" : 2485.007, - "93.98853983501857" : 2487.007, - "94.00904563609592" : 2488.015, - "94.05068148405653" : 2490.015, - "94.07188488356446" : 2491.007, - "94.1140865946297" : 2493.007, - "94.13475107689513" : 2494.015, - "94.1760066888013" : 2496.015, - "94.1964511131927" : 2497.007, - "94.23720223868018" : 2499.007, - "94.257375707458" : 2500.015, - "94.29782593748509" : 2502.015, - "94.31808174084162" : 2503.007, - "94.35819814157682" : 2505.007, - "94.3779359855836" : 2506.015, - "94.41722155556995" : 2508.015, - "94.45695023528903" : 2510.015, - "94.47693508303195" : 2511.007, - "94.51637184924466" : 2513.007, - "94.53585819853828" : 2514.015, - "94.57413778967195" : 2516.015, - "94.61304012961918" : 2518.015, - "94.63258037063704" : 2519.007, - "94.67091984146433" : 2521.007, - "94.69009631334349" : 2522.015, - "94.72835943756141" : 2524.015, - "94.76680220086017" : 2526.015, - "94.78603106747126" : 2527.007, - "94.82476424728404" : 2529.007, - "94.84387185751555" : 2530.015, - "94.88187899604328" : 2532.015, - "94.91919003313278" : 2534.015, - "94.9376659125967" : 2535.007, - "94.97505329629554" : 2537.007, - "95.01278199424799" : 2539.007, - "95.0318372097476" : 2540.015, - "95.0699955445017" : 2542.015, - "95.10817184316389" : 2544.015, - "95.12707286845244" : 2545.007, - "95.16429408600152" : 2547.007, - "95.20180572006461" : 2549.007, - "95.22065135663658" : 2550.015, - "95.25807466815161" : 2552.015, - "95.29467762786415" : 2554.015, - "95.3133226674625" : 2555.007, - "95.35019209181162" : 2557.007, - "95.38663786732843" : 2559.007, - "95.4232977127499" : 2561.007, - "95.44145024186831" : 2562.015, - "95.47756069110089" : 2564.015, - "95.51257534194038" : 2566.015, - "95.54813938896875" : 2568.015, - "95.56604940532803" : 2569.007, - "95.6011898035241" : 2571.007, - "95.63660864229546" : 2573.007, - "95.6713688044371" : 2575.007, - "95.68879529227047" : 2576.015, - "95.7235479694504" : 2578.015, - "95.75841292105585" : 2580.015, - "95.79333775235492" : 2582.015, - "95.82776109122" : 2584.015, - "95.8450109339572" : 2585.007, - "95.87922768787931" : 2587.007, - "95.913424980901" : 2589.007, - "95.94759532806056" : 2591.007, - "95.98134651736484" : 2593.007, - "96.01472495557638" : 2595.007, - "96.047259090108" : 2597.007, - "96.06388618403165" : 2598.015, - "96.0961284050569" : 2600.015, - "96.12900535083445" : 2602.015, - "96.16166074174564" : 2604.015, - "96.19379967029941" : 2606.015, - "96.22585476728214" : 2608.015, - "96.25824668754143" : 2610.015, - "96.2908496837207" : 2612.015, - "96.32229550482093" : 2614.015, - "96.35406018528963" : 2616.015, - "96.38558085600687" : 2618.015, - "96.41683805607221" : 2620.015, - "96.44790513811034" : 2622.015, - "96.4792446727544" : 2624.015, - "96.51023840216786" : 2626.015, - "96.54045219857203" : 2628.015, - "96.57077527541702" : 2630.015, - "96.60094715603566" : 2632.015, - "96.63157711631042" : 2634.015, - "96.66161875859545" : 2636.015, - "96.69147028285326" : 2638.015, - "96.72149246423787" : 2640.015, - "96.75056555247872" : 2642.015, - "96.79399330027066" : 2645.007, - "96.82259932690134" : 2647.007, - "96.85150924297712" : 2649.007, - "96.87978593129293" : 2651.007, - "96.89420047053763" : 2652.015, - "96.90868836240699" : 2653.007, - "96.92293523850958" : 2654.015, - "96.95146791251558" : 2656.015, - "96.96561748411605" : 2657.007, - "96.97980298353268" : 2658.015, - "96.99400794384974" : 2659.007, - "97.00818895228934" : 2660.015, - "97.02201966452132" : 2661.007, - "97.0358653466767" : 2662.015, - "97.04979935138016" : 2663.007, - "97.06330970725132" : 2664.015, - "97.09038730470256" : 2666.015, - "97.10388269065032" : 2667.007, - "97.11737508261339" : 2668.015, - "97.1311803459756" : 2669.007, - "97.14482543115737" : 2670.015, - "97.15857380881063" : 2671.007, - "97.17224733684688" : 2672.015, - "97.1990300268071" : 2674.015, - "97.2122379902255" : 2675.007, - "97.22547888747542" : 2676.015, - "97.2389533155304" : 2677.007, - "97.25239331276157" : 2678.015, - "97.26563421001147" : 2679.007, - "97.2921833691666" : 2681.007, - "97.3053314528914" : 2682.015, - "97.31813223439325" : 2683.007, - "97.33096445273425" : 2684.015, - "97.35660643453116" : 2686.015, - "97.36912278748837" : 2687.007, - "97.3818262644881" : 2688.015, - "97.39458962118145" : 2689.007, - "97.4076987831054" : 2690.015, - "97.43347399722059" : 2692.015, - "97.44650531554285" : 2693.007, - "97.45955310078087" : 2694.015, - "97.47201705900615" : 2695.007, - "97.48447652625443" : 2696.015, - "97.50942839458246" : 2698.015, - "97.52185343100689" : 2699.007, - "97.53415571405944" : 2700.015, - "97.5583845350871" : 2702.015, - "97.5707781346724" : 2703.007, - "97.58306395080919" : 2704.015, - "97.59518809177324" : 2705.007, - "97.61871182940862" : 2707.007, - "97.63034795086973" : 2708.015, - "97.64233586553081" : 2709.007, - "97.66598085954575" : 2711.007, - "97.67777715918727" : 2712.015, - "97.68961387762198" : 2713.007, - "97.71268702056294" : 2715.007, - "97.72452523598999" : 2716.015, - "97.73641285216426" : 2717.007, - "97.75980036349668" : 2719.007, - "97.77140355112631" : 2720.015, - "97.78286901546062" : 2721.007, - "97.80534785244248" : 2723.007, - "97.81623248374876" : 2724.015, - "97.83795384260644" : 2726.015, - "97.84861691904635" : 2727.007, - "97.86983528847769" : 2729.007, - "97.88077979947758" : 2730.015, - "97.89152071951919" : 2731.007, - "97.91334686784069" : 2733.007, - "97.9240877878823" : 2734.015, - "97.94564447758253" : 2736.015, - "97.95656503670497" : 2737.007, - "97.97831483841712" : 2739.007, - "97.98902731560426" : 2740.015, - "98.00979359334883" : 2742.015, - "98.02001206306367" : 2743.007, - "98.04023642958106" : 2745.007, - "98.05056867071376" : 2746.015, - "98.07114782441579" : 2748.015, - "98.0814276708166" : 2749.007, - "98.10175832379014" : 2751.007, - "98.11224325814155" : 2752.015, - "98.13230744647852" : 2754.015, - "98.14219358389383" : 2755.007, - "98.16184011136785" : 2757.007, - "98.18067526899343" : 2759.007, - "98.19035781545045" : 2760.015, - "98.21013458125809" : 2762.015, - "98.22009856227508" : 2763.007, - "98.23943521233467" : 2765.007, - "98.25866108496106" : 2767.007, - "98.26818944120704" : 2768.015, - "98.28783896266575" : 2770.015, - "98.29759935272446" : 2771.007, - "98.31652432989047" : 2773.007, - "98.33582056115686" : 2775.007, - "98.3452845467322" : 2776.015, - "98.36451491033563" : 2778.015, - "98.3834353965246" : 2780.015, - "98.39273620993485" : 2781.007, - "98.41149352395874" : 2783.007, - "98.42949036587376" : 2785.007, - "98.43831363872745" : 2786.015, - "98.4475246325973" : 2787.007, - "98.45658443024075" : 2788.015, - "98.46534333242381" : 2789.007, - "98.47416510828516" : 2790.015, - "98.48315754127331" : 2791.007, - "98.49209608253722" : 2792.015, - "98.50076965615688" : 2793.007, - "98.5095270613476" : 2794.015, - "98.51798506807026" : 2795.007, - "98.5263637341989" : 2796.015, - "98.53487114166879" : 2797.007, - "98.54337854913868" : 2798.015, - "98.55176020925198" : 2799.007, - "98.56021372499762" : 2800.015, - "98.56864478585817" : 2801.007, - "98.57739470608719" : 2802.015, - "98.58604881880643" : 2803.007, - "98.5945068255291" : 2804.015, - "98.60301423299899" : 2805.007, - "98.61156954422377" : 2806.015, - "98.6199931201226" : 2807.007, - "98.62841969000613" : 2808.015, - "98.63679985312709" : 2809.007, - "98.64504678392977" : 2810.015, - "98.65321138015373" : 2811.007, - "98.66142687411727" : 2812.015, - "98.66957200944081" : 2813.007, - "98.67774558761882" : 2814.015, - "98.68584431617981" : 2815.007, - "98.6936496342421" : 2816.015, - "98.70139956358781" : 2817.007, - "98.70903871550033" : 2818.015, - "98.71665092155072" : 2819.007, - "98.72418827798411" : 2820.015, - "98.73156096526006" : 2821.007, - "98.73931688257512" : 2822.015, - "98.74716860739997" : 2823.007, - "98.75480626232016" : 2824.015, - "98.76240798942416" : 2825.007, - "98.77010402704562" : 2826.015, - "98.77763539550965" : 2827.007, - "98.7852610744911" : 2828.015, - "98.79282387979427" : 2829.007, - "98.8003447693119" : 2830.015, - "98.80785218589848" : 2831.007, - "98.81525631001358" : 2832.015, - "98.82252420782571" : 2833.007, - "98.82993881088719" : 2834.015, - "98.83718125982953" : 2835.007, - "98.84450155237357" : 2836.015, - "98.85172154643081" : 2837.007, - "98.86619446837678" : 2839.007, - "98.87375128571058" : 2840.015, - "98.88093385495931" : 2841.007, - "98.88829905727357" : 2842.015, - "98.89558491899378" : 2843.007, - "98.9025998251004" : 2844.015, - "98.90963119812275" : 2845.007, - "98.9168212523332" : 2846.015, - "98.92369993213684" : 2847.007, - "98.93060555780262" : 2848.015, - "98.94411591367378" : 2850.015, - "98.95080148146553" : 2851.007, - "98.957569383836" : 2852.015, - "98.96425195764309" : 2853.007, - "98.97094501039653" : 2854.015, - "98.97780123531508" : 2855.007, - "98.98454967678514" : 2856.015, - "98.99790284846055" : 2858.015, - "99.00404201404811" : 2859.007, - "99.01031890293096" : 2860.015, - "99.01673052112444" : 2861.007, - "99.02353734529576" : 2862.015, - "99.03653722677888" : 2864.015, - "99.04289645024045" : 2865.007, - "99.04933501429605" : 2866.015, - "99.05566130392613" : 2867.007, - "99.0680683764425" : 2869.007, - "99.07423448789217" : 2870.015, - "99.08040209633418" : 2871.007, - "99.0866370694315" : 2872.015, - "99.09913845246531" : 2874.015, - "99.10539288646305" : 2875.007, - "99.11168624226165" : 2876.015, - "99.11803199279215" : 2877.007, - "99.1305573277034" : 2879.007, - "99.1365123632331" : 2880.015, - "99.14256021228789" : 2881.007, - "99.14860357036565" : 2882.015, - "99.16051663540972" : 2884.015, - "99.16638035440666" : 2885.007, - "99.17231293505124" : 2886.015, - "99.18410025273872" : 2888.015, - "99.18992055895778" : 2889.007, - "99.19583816967896" : 2890.015, - "99.20700872652223" : 2892.015, - "99.21273771620855" : 2893.007, - "99.22474658876239" : 2895.007, - "99.23064922956017" : 2896.015, - "99.23622402903543" : 2897.007, - "99.24186769015833" : 2898.015, - "99.24748889639613" : 2899.007, - "99.25303824700161" : 2900.015, - "99.25861604046155" : 2901.007, - "99.26423425271467" : 2902.015, - "99.26967132889462" : 2903.007, - "99.27507696823542" : 2904.015, - "99.2802625497022" : 2905.007, - "99.28539423944473" : 2906.015, - "99.29065467052853" : 2907.007, - "99.29578636027105" : 2908.015, - "99.30056775380595" : 2909.007, - "99.30542848793489" : 2910.015, - "99.31032514988" : 2911.007, - "99.31503468778256" : 2912.015, - "99.31983404522555" : 2913.007, - "99.32456304402854" : 2914.015, - "99.32932647365536" : 2915.007, - "99.33417074086854" : 2916.015, - "99.33892967951834" : 2917.007, - "99.34381137154004" : 2918.015, - "99.34873947032429" : 2919.007, - "99.35357176159876" : 2920.015, - "99.35836363408005" : 2921.007, - "99.36307616596729" : 2922.015, - "99.36795336701196" : 2923.007, - "99.37284404098772" : 2924.015, - "99.37744878942645" : 2925.007, - "99.38216581229072" : 2926.015, - "99.38674511185968" : 2927.007, - "99.3912226159495" : 2928.015, - "99.3956028155372" : 2929.007, - "99.40026295269254" : 2930.015, - "99.40485572519256" : 2931.007, - "99.40954580219471" : 2932.015, - "99.41415803559515" : 2933.007, - "99.41865799457008" : 2934.015, - "99.42328968887095" : 2935.007, - "99.4277162952212" : 2936.015, - "99.43228661283612" : 2937.007, - "99.43666381843914" : 2938.015, - "99.44091677367791" : 2939.007, - "99.4453299070971" : 2940.015, - "99.44973854953928" : 2941.007, - "99.45406336041039" : 2942.015, - "99.45832080662618" : 2943.007, - "99.46260819268878" : 2944.015, - "99.46683719605011" : 2945.007, - "99.47093596107784" : 2946.015, - "99.47514849752343" : 2947.007, - "99.4793864828388" : 2948.015, - "99.48368434784778" : 2949.007, - "99.48774568806701" : 2950.015, - "99.4915944553739" : 2951.007, - "99.49555250312164" : 2952.015, - "99.49969168694255" : 2953.007, - "99.50366021363668" : 2954.015, - "99.50758083657591" : 2955.007, - "99.51146104072195" : 2956.015, - "99.51523196442714" : 2957.007, - "99.51882175205918" : 2958.015, - "99.52241453367589" : 2959.007, - "99.52610312280237" : 2960.015, - "99.52978871794417" : 2961.007, - "99.53354616871832" : 2962.015, - "99.53719883002863" : 2963.007, - "99.54093981388702" : 2964.015, - "99.54477510826285" : 2965.007, - "99.54843076355786" : 2966.015, - "99.55206695795243" : 2967.007, - "99.55566872152318" : 2968.015, - "99.55920312043862" : 2969.007, - "99.5626462028213" : 2970.015, - "99.57008475776021" : 2972.015, - "99.57381077169521" : 2973.007, - "99.57748139691361" : 2974.015, - "99.58112807025456" : 2975.007, - "99.58480618043467" : 2976.015, - "99.58852021843094" : 2977.007, - "99.59226569326636" : 2978.015, - "99.59593931246944" : 2979.007, - "99.59958149483337" : 2980.015, - "99.60330750876837" : 2981.007, - "99.60696466105571" : 2982.015, - "99.61053049681028" : 2983.007, - "99.6142385468372" : 2984.015, - "99.61778043071433" : 2985.007, - "99.6211561484417" : 2986.015, - "99.62440462182013" : 2987.007, - "99.62767105910666" : 2988.015, - "99.63101533999487" : 2989.007, - "99.63448686523202" : 2990.015, - "99.63770090778664" : 2991.007, - "99.64112752325357" : 2992.015, - "99.6442906680686" : 2993.007, - "99.64743884296026" : 2994.015, - "99.65045677951828" : 2995.007, - "99.65345974615292" : 2996.015, - "99.65652708345817" : 2997.007, - "99.65955250497791" : 2998.015, - "99.66255696860489" : 2999.007, - "99.66554945629314" : 3000.015, - "99.66851350112691" : 3001.007, - "99.67136527153518" : 3002.015, - "99.67431434644556" : 3003.007, - "99.67732479804188" : 3004.015, - "99.68020800528929" : 3005.007, - "99.68305229073586" : 3006.015, - "99.685806756642" : 3007.007, - "99.68858517442558" : 3008.015, - "99.69124083883726" : 3009.007, - "99.69400877767447" : 3010.015, - "99.69670036990232" : 3011.007, - "99.6994189079923" : 3012.015, - "99.70230361223204" : 3013.007, - "99.70505658114584" : 3014.015, - "99.707670329772" : 3015.007, - "99.71023916862794" : 3016.015, - "99.71303405332726" : 3017.007, - "99.71560438917555" : 3018.015, - "99.71819717990894" : 3019.007, - "99.72074356387978" : 3020.015, - "99.72323156514935" : 3021.007, - "99.72586627166827" : 3022.015, - "99.72848750525613" : 3023.007, - "99.73105784110442" : 3024.015, - "99.73366859574588" : 3025.007, - "99.7361880338546" : 3026.015, - "99.73856076671397" : 3027.007, - "99.74106074392226" : 3028.015, - "99.74340802791184" : 3029.007, - "99.74572387506228" : 3030.015, - "99.7480576861208" : 3031.007, - "99.75045736484229" : 3032.015, - "99.75284207364038" : 3033.007, - "99.755198339584" : 3034.015, - "99.75750969575742" : 3035.007, - "99.75999470304231" : 3036.015, - "99.76229857425402" : 3037.007, - "99.76454256577212" : 3038.015, - "99.76673266556597" : 3039.007, - "99.76901408189258" : 3040.015, - "99.77133591701238" : 3041.007, - "99.77357541755346" : 3042.015, - "99.77582390004858" : 3043.007, - "99.77804244269689" : 3044.015, - "99.78026098534521" : 3045.007, - "99.78256635354926" : 3046.015, - "99.78474896838141" : 3047.007, - "99.78700044486122" : 3048.015, - "99.78928186118782" : 3049.007, - "99.79157225946847" : 3050.015, - "99.79385367579508" : 3051.007, - "99.79612611016765" : 3052.015, - "99.79838956258617" : 3053.007, - "99.80063205711194" : 3054.015, - "99.80284610878323" : 3055.007, - "99.80500626873028" : 3056.015, - "99.80712301589945" : 3057.007, - "99.8093280856167" : 3058.015, - "99.81142836587014" : 3059.007, - "99.81347176041464" : 3060.015, - "99.81544928729616" : 3061.007, - "99.81739837132324" : 3062.015, - "99.81920973205499" : 3063.007, - "99.82116031307439" : 3064.015, - "99.82317077378741" : 3065.007, - "99.82513033676085" : 3066.015, - "99.82709439071132" : 3067.007, - "99.8289806010601" : 3068.015, - "99.8308757933629" : 3069.007, - "99.83276948867338" : 3070.015, - "99.83462875316002" : 3071.007, - "99.83644310787646" : 3072.015, - "99.83831285130948" : 3073.007, - "99.84016163684974" : 3074.015, - "99.84197748855853" : 3075.007, - "99.84370651471157" : 3076.015, - "99.8454130859795" : 3077.007, - "99.8471780399487" : 3078.015, - "99.84892503000984" : 3079.007, - "99.85073040277223" : 3080.015, - "99.85239206426995" : 3081.007, - "99.85412258741533" : 3082.015, - "99.8558710744688" : 3083.007, - "99.85746686830355" : 3084.015, - "99.8591554756634" : 3085.007, - "99.86082761610751" : 3086.015, - "99.86255514526822" : 3087.007, - "99.86421980075062" : 3088.015, - "99.86587697127132" : 3089.007, - "99.86758953050862" : 3090.015, - "99.86912993562679" : 3091.007, - "99.87068231668367" : 3092.015, - "99.87223918871757" : 3093.007, - "99.87385743743744" : 3094.015, - "99.87543077638708" : 3095.007, - "99.87699213939801" : 3096.015, - "99.87847715579959" : 3097.007, - "99.87998911806328" : 3098.015, - "99.88149060138059" : 3099.007, - "99.88294268395067" : 3100.015, - "99.88427949811056" : 3101.007, - "99.88568816790279" : 3102.015, - "99.88711629859542" : 3103.007, - "99.88854293229572" : 3104.015, - "99.88986627352455" : 3105.007, - "99.89120308768443" : 3106.015, - "99.89237373569453" : 3107.007, - "99.89362372429868" : 3108.015, - "99.89493808357346" : 3109.007, - "99.89632280148824" : 3110.015, - "99.89763416677833" : 3111.007, - "99.89894702906076" : 3112.015, - "99.90017605977215" : 3113.007, - "99.90143802431501" : 3114.015, - "99.90263861217193" : 3115.007, - "99.90388111581437" : 3116.015, - "99.90516703223469" : 3117.007, - "99.90638857798437" : 3118.015, - "99.90763257861916" : 3119.007, - "99.90883915444543" : 3120.015, - "99.9100861490649" : 3121.007, - "99.91137955044691" : 3122.015, - "99.9126609758902" : 3123.007, - "99.913834617885" : 3124.015, - "99.91500227191042" : 3125.007, - "99.91620285976734" : 3126.015, - "99.91726273034428" : 3127.007, - "99.91838098362247" : 3128.015, - "99.91949474592364" : 3129.007, - "99.92065341799504" : 3130.015, - "99.92183454495152" : 3131.007, - "99.92302016288504" : 3132.015, - "99.92417883495644" : 3133.007, - "99.92533151905846" : 3134.015, - "99.926451269329" : 3135.007, - "99.9275770075689" : 3136.015, - "99.92869975182411" : 3137.007, - "99.92972519157722" : 3138.015, - "99.9307760802001" : 3139.007, - "99.93190331543235" : 3140.015, - "99.9330305506646" : 3141.007, - "99.93409042124152" : 3142.015, - "99.93504550235463" : 3143.007, - "99.93591974588136" : 3144.015, - "99.93678650444639" : 3145.007, - "99.93769218481226" : 3146.015, - "99.93869217569558" : 3147.007, - "99.93963827485464" : 3148.015, - "99.9406023379218" : 3149.007, - "99.94155292805789" : 3150.015, - "99.9423852557991" : 3151.007, - "99.94327896022625" : 3152.015, - "99.9441951195385" : 3153.007, - "99.94510828486608" : 3154.015, - "99.94601396523197" : 3155.007, - "99.94693461552124" : 3156.015, - "99.9478208349867" : 3157.007, - "99.9486681326513" : 3158.015, - "99.94951543031591" : 3159.007, - "99.9503432670801" : 3160.015, - "99.95109625422727" : 3161.007, - "99.95181331355826" : 3162.015, - "99.95256630070543" : 3163.007, - "99.95335222168409" : 3164.015, - "99.95414562762444" : 3165.007, - "99.95495100950352" : 3166.015, - "99.95573094251282" : 3167.007, - "99.95644051688211" : 3168.015, - "99.95720248598333" : 3169.007, - "99.95790607238327" : 3170.015, - "99.95864109562234" : 3171.007, - "99.95937611886143" : 3172.015, - "99.96012311803923" : 3173.007, - "99.96085963827066" : 3174.015, - "99.96155274572422" : 3175.007, - "99.96223986520842" : 3176.015, - "99.96293896063133" : 3177.007, - "99.96368895379382" : 3178.015, - "99.9643640973393" : 3179.007, - "99.96497487021414" : 3180.015, - "99.96562905586684" : 3181.007, - "99.96623833174934" : 3182.015, - "99.9668386256778" : 3183.007, - "99.96739999780542" : 3184.015, - "99.96792843610153" : 3185.007, - "99.96845687439766" : 3186.015, - "99.96902273750229" : 3187.007, - "99.96956015775245" : 3188.015, - "99.9700077584622" : 3189.007, - "99.97049128698812" : 3190.015, - "99.97098529446042" : 3191.007, - "99.97152870267995" : 3192.015, - "99.97205564398372" : 3193.007, - "99.9725676153641" : 3194.015, - "99.97312299952236" : 3195.007, - "99.97369035961933" : 3196.015, - "99.97426969565502" : 3197.007, - "99.97478017004306" : 3198.015, - "99.97534902713237" : 3199.007, - "99.97583554964297" : 3200.015, - "99.97636698192377" : 3201.007, - "99.97682955255692" : 3202.015, - "99.97729960815178" : 3203.007, - "99.97776816675429" : 3204.015, - "99.97825618625723" : 3205.007, - "99.97874869673718" : 3206.015, - "99.97920527940097" : 3207.007, - "99.97966785003412" : 3208.015, - "99.98011395375153" : 3209.007, - "99.98053161461448" : 3210.015, - "99.98097173036251" : 3211.007, - "99.98145525888843" : 3212.015, - "99.98192531448329" : 3213.007, - "99.9823938730858" : 3214.015, - "99.98282201289513" : 3215.007, - "99.98322320684233" : 3216.015, - "99.98361841282016" : 3217.007, - "99.9840360736831" : 3218.015, - "99.98449115935455" : 3219.007, - "99.98492678412558" : 3220.015, - "99.98531600213406" : 3221.007, - "99.98571719608125" : 3222.015, - "99.98610192311271" : 3223.007, - "99.98648365615948" : 3224.015, - "99.98679652755861" : 3225.007, - "99.9871198779041" : 3226.015, - "99.98740280945643" : 3227.007, - "99.98776059062575" : 3228.015, - "99.98814382066487" : 3229.007, - "99.98853303867334" : 3230.015, - "99.98887135894225" : 3231.007, - "99.98924860101201" : 3232.015, - "99.98956296940347" : 3233.007, - "99.98987733779492" : 3234.015, - "99.99014829340852" : 3235.007, - "99.99048062570807" : 3236.015, - "99.99079948507655" : 3237.007, - "99.9911213384297" : 3238.015, - "99.99142073689778" : 3239.007, - "99.99174558423562" : 3240.015, - "99.99203749774198" : 3241.007, - "99.9923099503479" : 3242.015, - "99.99257940896916" : 3243.007, - "99.99283988563637" : 3244.015, - "99.9930973683189" : 3245.007, - "99.99334886303207" : 3246.015, - "99.99359287278354" : 3247.007, - "99.99381592464225" : 3248.015, - "99.99403298853159" : 3249.007, - "99.99425753738264" : 3250.015, - "99.99444466142516" : 3251.007, - "99.99466172531451" : 3252.015, - "99.99484585537236" : 3253.007, - "99.99502100347618" : 3254.015, - "99.99521710947276" : 3255.007, - "99.99538626960721" : 3256.015, - "99.99557039966507" : 3257.007, - "99.99572458987612" : 3258.015, - "99.99585782219441" : 3259.007, - "99.99598207255865" : 3260.015, - "99.9960988379612" : 3261.007, - "99.9962440462182" : 3262.015, - "99.99633386575861" : 3263.007, - "99.99641919432202" : 3264.015, - "99.99651350483946" : 3265.007, - "99.99663625821135" : 3266.015, - "99.99673805369049" : 3267.007, - "99.99685182510837" : 3268.015, - "99.9969760754726" : 3269.007, - "99.9970688889977" : 3270.015, - "99.99713924763769" : 3271.007, - "99.99720511530067" : 3272.015, - "99.99727397694832" : 3273.007, - "99.99736679047342" : 3274.015, - "99.99744613106746" : 3275.007, - "99.99752996263851" : 3276.015, - "99.99761229721723" : 3277.007, - "99.99768115886488" : 3278.015, - "99.99777397238998" : 3279.007, - "99.99783984005296" : 3280.015, - "99.99790570771593" : 3281.007, - "99.99797606635592" : 3282.015, - "99.99803295206485" : 3283.007, - "99.99810031672017" : 3284.015, - "99.99817516633718" : 3285.007, - "99.99825899790824" : 3286.015, - "99.9983323505329" : 3287.007, - "99.99839971518823" : 3288.015, - "99.99844163097376" : 3289.007, - "99.99848803773631" : 3290.015, - "99.99853893547588" : 3291.007, - "99.9986107911082" : 3292.015, - "99.9986661798248" : 3293.007, - "99.99870959260267" : 3294.015, - "99.9987589933499" : 3295.007, - "99.99881737605116" : 3296.015, - "99.99887875273711" : 3297.007, - "99.99893563844606" : 3298.015, - "99.99896857227753" : 3299.007, - "99.99901647603242" : 3300.015, - "99.99905839181795" : 3301.007, - "99.99908833166477" : 3302.015, - "99.99911078654986" : 3303.007, - "99.99915569632007" : 3304.015, - "99.99920060609028" : 3305.007, - "99.99925150382985" : 3306.015, - "99.99928743164602" : 3307.007, - "99.99931587450048" : 3308.015, - "99.99935928727835" : 3309.007, - "99.99940270005622" : 3310.015, - "99.99944162185707" : 3311.007, - "99.99946407674217" : 3312.015, - "99.99950150155068" : 3313.007, - "99.99955239929025" : 3314.015, - "99.99960778800684" : 3315.007, - "99.99965269777705" : 3316.015, - "99.9996916195779" : 3317.007, - "99.99971257747066" : 3318.015, - "99.99974251731747" : 3319.007, - "99.99976197821789" : 3320.015, - "99.99978892408002" : 3321.007, - "99.9998143729498" : 3322.015, - "99.99983682783491" : 3323.007, - "99.99984431279661" : 3324.015, - "99.99985479174299" : 3325.007, - "99.99986077971235" : 3326.015, - "99.99986676768171" : 3329.007, - "99.99987574963576" : 3330.015, - "99.99988024061278" : 3331.007, - "99.99988323459746" : 3332.015, - "99.9998847315898" : 3333.007, - "99.99989371354384" : 3334.015, - "99.99989820452086" : 3335.007, - "99.99990568948256" : 3337.007, - "99.99991317444426" : 3338.015, - "99.99991916241362" : 3339.007, - "99.99992515038298" : 3340.015, - "99.99993862331405" : 3341.007, - "99.99994910226043" : 3342.015, - "99.99995509022979" : 3343.007, - "99.99996407218383" : 3344.015, - "99.99997006015319" : 3345.007, - "99.99997604812256" : 3346.015, - "99.99998652706894" : 3347.007, - "99.99998952105362" : 3348.015, - "99.99999550902298" : 3351.007, - "100.0" : 3352.015 - }, - "aggregatedEndToEndLatencyAvg" : 1565.5565077427962, - "aggregatedEndToEndLatency50pct" : 1536.007, - "aggregatedEndToEndLatency75pct" : 1939.007, - "aggregatedEndToEndLatency95pct" : 2539.007, - "aggregatedEndToEndLatency99pct" : 2859.007, - "aggregatedEndToEndLatency999pct" : 3113.007, - "aggregatedEndToEndLatency9999pct" : 3235.007, - "aggregatedEndToEndLatencyMax" : 3352.015 -} \ No newline at end of file diff --git a/blog/results/rabbitmq/throughput/mirrored.json b/blog/results/rabbitmq/throughput/mirrored.json deleted file mode 100644 index f02c54db..00000000 --- a/blog/results/rabbitmq/throughput/mirrored.json +++ /dev/null @@ -1,2795 +0,0 @@ -{ - "workload" : "100-partitions-1000K-rate-4-producer", - "driver" : "RabbitMQ", - "publishRate" : [ 38806.905153275446, 37590.5349984129, 38092.49336280616, 38628.72495444629, 38068.51661870986, 38442.39844915135, 38372.20833488729, 38179.4606602778, 38248.32979034836, 38472.045270700015, 38634.770430334625, 38420.255888762935, 38324.63329075359, 37693.102907569766, 38241.233055844335, 38532.87307544118, 38454.64221078833, 38321.004209827326, 38141.80935083568, 38175.89409938954, 38480.00167848969, 38537.82011328924, 38723.74978030153, 38561.51499660959, 38510.56231751731, 38127.142480281036, 37734.95749484554, 37234.0700292295, 38206.80941620177, 38342.5522102417, 38137.09648672577, 37985.05022694814, 38530.82538052945, 38941.26302828275, 38535.936026155854, 38407.20526577688, 38585.535826327505, 38280.922907382774, 38111.00226346417, 38183.326021508066, 38401.94652664137, 38423.07474559204, 38173.3252775811, 38259.95177781455, 37982.1949786789, 38419.1552456563, 38294.076957321995, 37775.42294477361, 38223.69750934418, 38385.56649173995, 38146.678130946675, 38193.74617884816, 38631.369712479616, 38391.92561995427, 38376.60008232276, 38222.27755443783, 38114.2200857134, 38075.128901374126, 38243.20482782305, 38495.038553052545 ], - "consumeRate" : [ 38810.380952862324, 37545.33238255552, 38138.09269595271, 38662.03156119702, 38046.21334475562, 38417.71063394626, 38358.23187995356, 38171.828316689905, 38286.31017497095, 38431.69822796934, 38635.662505181645, 38459.111886916704, 38322.15502896835, 37644.240670295156, 38285.93889151452, 38531.98090426555, 38409.95907651753, 38367.662000302065, 38138.63889194717, 38160.83508315395, 38445.425959117085, 38528.9035184504, 38685.30928151614, 38615.58917844796, 38536.81659194849, 38076.20904774872, 37791.93319624813, 37204.24718395022, 38192.93987935794, 38397.44562131993, 38145.12363835408, 37935.10836065786, 38517.45026822373, 38965.34274560796, 38563.480590940206, 38407.30434151502, 38589.59855689385, 38261.00541603658, 38128.83456760051, 38186.59635519535, 38366.08074652216, 38432.290765810496, 38190.072049532915, 38238.45402785718, 38015.68609431913, 38396.46464209962, 38268.50885716261, 37795.13923585563, 38161.57657015714, 38501.272497552694, 38088.519551184516, 38201.573375268636, 38640.582682385124, 38369.88634339047, 38389.48299124223, 38189.774943637625, 38126.11229082755, 38086.125972287446, 38271.5400995961, 38467.30080685512 ], - "backlog" : [ -5783, -5327, -5787, -6123, -5898, -5649, -5508, -5431, -5814, -5407, -5416, -5808, -5783, -5290, -5741, -5732, -5281, -5752, -5720, -5568, -5219, -5129, -4741, -5288, -5553, -5039, -5614, -5313, -5173, -5727, -5808, -5304, -5169, -5412, -5690, -5691, -5732, -5531, -5711, -5744, -5382, -5475, -5644, -5427, -5765, -5536, -5278, -5477, -4850, -6018, -5431, -5510, -5603, -5380, -5510, -5182, -5302, -5413, -5699, -5419 ], - "publishLatencyAvg" : [ 839.6382725331976, 850.3016779881414, 838.3809050794799, 826.5228079372655, 836.9530821525099, 833.9747546729876, 828.9414669833619, 838.4966800697939, 833.5816466605668, 827.830504149014, 828.5838561994751, 836.2054245305898, 834.1886190478654, 847.261748426168, 836.4655209495324, 830.7036082063155, 861.7983462698872, 882.6274312569311, 886.4738232546176, 883.0717290459672, 880.0401545990122, 875.7825157639825, 869.6532366801076, 868.948186368215, 878.0161008078833, 884.8824596974351, 891.9735180015177, 907.8867718307087, 882.6202268731947, 877.8033510125811, 886.7572486318776, 888.814511013779, 876.8443849994729, 865.4647232729374, 875.3411319597807, 878.3023528203911, 875.7578859052129, 882.375277200993, 886.868073811566, 888.1203364587632, 885.5466518561892, 882.8107157168723, 888.1347585509579, 884.4118494724167, 891.8617267831564, 884.5044237489232, 885.34133538163, 894.5434220039602, 884.2632502158017, 881.9798060046606, 888.288530349197, 887.1788388709189, 875.4309315362858, 877.3366339390757, 881.7448710673715, 884.4499086461301, 899.7652185261056, 940.1320185208799, 938.367409456631, 936.304876269878 ], - "publishLatency50pct" : [ 852.939, 871.331, 852.499, 842.691, 846.127, 843.879, 842.407, 853.787, 847.919, 838.927, 841.487, 850.523, 848.751, 863.707, 854.543, 846.435, 862.363, 878.463, 901.199, 881.947, 878.635, 881.819, 877.987, 875.687, 887.183, 900.203, 905.439, 919.563, 878.191, 886.723, 878.215, 891.571, 879.823, 865.791, 870.667, 886.019, 887.003, 891.423, 881.107, 866.231, 872.599, 878.675, 872.859, 875.287, 894.215, 893.611, 886.815, 897.999, 896.911, 870.423, 889.811, 882.455, 877.039, 879.771, 885.143, 896.103, 913.851, 932.647, 932.723, 921.859 ], - "publishLatency75pct" : [ 959.319, 960.623, 962.051, 936.963, 955.435, 957.479, 946.447, 952.923, 949.875, 944.347, 949.219, 955.295, 951.623, 957.363, 952.431, 946.495, 968.019, 983.023, 981.915, 987.455, 981.531, 975.435, 966.331, 958.567, 970.163, 979.775, 986.691, 1000.839, 979.899, 970.779, 986.527, 983.847, 973.615, 956.663, 974.863, 969.847, 974.467, 980.035, 986.323, 993.463, 994.763, 985.823, 995.323, 989.707, 989.419, 989.119, 988.287, 988.331, 972.099, 982.103, 981.563, 981.683, 964.531, 964.875, 969.603, 975.951, 976.107, 1030.043, 1021.319, 1028.843 ], - "publishLatency95pct" : [ 1030.231, 1060.327, 1025.411, 1021.307, 1028.335, 1031.663, 1001.343, 1036.779, 991.943, 1008.507, 1013.987, 1023.147, 1010.511, 1046.175, 1009.171, 1012.099, 1201.607, 1269.151, 1180.167, 1253.591, 1263.087, 1187.767, 1219.055, 1235.343, 1247.919, 1209.543, 1259.295, 1297.439, 1275.279, 1253.527, 1280.743, 1267.335, 1244.855, 1234.959, 1264.295, 1246.567, 1238.023, 1254.407, 1268.039, 1275.967, 1288.855, 1270.319, 1274.207, 1284.935, 1274.943, 1233.351, 1269.159, 1287.743, 1276.671, 1290.039, 1281.111, 1282.887, 1250.143, 1253.783, 1268.247, 1254.687, 1285.967, 1376.047, 1354.407, 1375.135 ], - "publishLatency99pct" : [ 1065.359, 1113.351, 1058.903, 1060.455, 1076.311, 1060.407, 1026.727, 1073.791, 1018.559, 1045.035, 1047.615, 1052.527, 1036.459, 1104.583, 1043.479, 1043.587, 1400.743, 1352.439, 1347.735, 1333.455, 1358.175, 1324.239, 1285.311, 1319.863, 1355.703, 1316.535, 1350.799, 1409.383, 1395.039, 1372.231, 1358.703, 1365.391, 1335.455, 1329.735, 1362.415, 1377.975, 1301.031, 1328.103, 1366.975, 1421.311, 1377.599, 1352.967, 1344.207, 1369.127, 1372.863, 1326.879, 1353.711, 1370.423, 1388.927, 1419.663, 1354.871, 1395.623, 1347.895, 1395.479, 1416.063, 1356.919, 1421.135, 1479.247, 1465.791, 1467.799 ], - "publishLatency999pct" : [ 1183.911, 1144.191, 1085.263, 1157.095, 1174.559, 1181.095, 1103.791, 1120.127, 1151.639, 1155.199, 1126.599, 1133.247, 1081.615, 1262.455, 1144.143, 1115.119, 1484.223, 1462.863, 1438.855, 1423.879, 1443.175, 1401.983, 1406.927, 1375.727, 1400.479, 1390.087, 1439.815, 1475.215, 1478.927, 1422.247, 1456.207, 1461.991, 1418.639, 1398.495, 1423.255, 1422.063, 1396.719, 1427.495, 1445.743, 1494.855, 1476.351, 1441.255, 1432.783, 1437.167, 1448.799, 1398.303, 1441.847, 1463.311, 1457.215, 1495.871, 1455.831, 1454.799, 1450.063, 1439.031, 1451.255, 1416.335, 1484.919, 1519.295, 1503.895, 1529.711 ], - "publishLatency9999pct" : [ 1200.463, 1236.215, 1123.087, 1183.087, 1196.655, 1203.135, 1142.111, 1197.279, 1172.831, 1198.031, 1194.455, 1173.671, 1184.551, 1277.287, 1159.983, 1151.863, 1505.031, 1475.567, 1472.367, 1454.175, 1461.623, 1425.959, 1423.271, 1408.463, 1414.287, 1457.687, 1462.391, 1503.191, 1513.543, 1436.351, 1480.303, 1518.727, 1469.143, 1427.151, 1444.535, 1434.015, 1409.527, 1440.863, 1471.983, 1515.895, 1488.047, 1460.839, 1459.927, 1464.031, 1461.751, 1464.343, 1452.591, 1497.575, 1502.479, 1510.463, 1497.591, 1498.407, 1500.111, 1468.127, 1466.527, 1439.703, 1621.871, 1640.559, 1560.319, 1543.599 ], - "publishLatencyMax" : [ 1204.855, 1240.031, 1137.647, 1193.919, 1201.143, 1210.879, 1147.191, 1215.119, 1178.807, 1201.415, 1198.383, 1196.343, 1191.567, 1282.431, 1164.031, 1157.239, 1507.863, 1477.575, 1483.527, 1458.783, 1471.535, 1430.863, 1426.159, 1413.495, 1415.895, 1463.015, 1468.719, 1510.255, 1515.687, 1438.583, 1485.471, 1537.751, 1476.735, 1430.047, 1448.359, 1440.799, 1413.903, 1443.727, 1474.199, 1594.887, 1489.991, 1465.607, 1462.695, 1478.727, 1467.919, 1466.127, 1455.855, 1513.519, 1505.879, 1516.207, 1499.583, 1508.807, 1505.655, 1484.503, 1472.703, 1442.463, 1624.463, 1650.487, 1564.927, 1546.903 ], - "aggregatedPublishLatencyAvg" : 872.9138031403544, - "aggregatedPublishLatency50pct" : 873.815, - "aggregatedPublishLatency75pct" : 974.023, - "aggregatedPublishLatency95pct" : 1236.631, - "aggregatedPublishLatency99pct" : 1360.871, - "aggregatedPublishLatency999pct" : 1466.631, - "aggregatedPublishLatency9999pct" : 1512.543, - "aggregatedPublishLatencyMax" : 1650.487, - "aggregatedPublishLatencyQuantiles" : { - "4.3146336105902506E-6" : 388.275, - "0.5000315183985253" : 560.595, - "1.0001104977667672" : 572.579, - "1.5001420161652925" : 580.187, - "2.0003547491754627" : 585.931, - "2.5001877944279007" : 590.663, - "3.000253829895311" : 594.823, - "3.500155909285519" : 598.595, - "4.000040730141284" : 602.207, - "4.500477824099205" : 605.667, - "5.000371274222191" : 609.079, - "5.500243151177125" : 612.427, - "6.000214264705102" : 615.715, - "6.500284614806122" : 618.991, - "7.000147862493835" : 622.319, - "7.500421000374553" : 625.691, - "8.000504294376405" : 629.203, - "8.500095720146652" : 632.835, - "9.000463779966802" : 636.667, - "9.500188959378976" : 640.767, - "10.00035423141943" : 645.055, - "10.500079410831603" : 649.571, - "11.000404324315648" : 654.275, - "11.50018559396476" : 659.067, - "12.000126505057462" : 663.951, - "12.50031766489958" : 668.755, - "13.000306036962" : 673.511, - "13.500221060253038" : 677.979, - "14.000386332293493" : 682.307, - "14.500120140972887" : 686.499, - "15.000345817883888" : 690.567, - "15.500088255830505" : 694.403, - "16.000206066901242" : 698.079, - "16.50047489014835" : 701.551, - "17.000458947577158" : 704.823, - "17.50003742944657" : 707.911, - "18.000478838038102" : 710.843, - "18.500346400359426" : 713.663, - "19.00009315293965" : 716.359, - "19.500482785927858" : 718.971, - "20.000734350640524" : 721.551, - "20.500291259341882" : 724.067, - "21.000434958214285" : 726.559, - "21.500595915621126" : 729.027, - "22.000627434019652" : 731.463, - "22.500072162247136" : 733.863, - "23.000116624546493" : 736.239, - "23.50065295507746" : 738.587, - "24.000468741795455" : 740.923, - "24.50036650655205" : 743.263, - "25.000026966460066" : 745.591, - "25.50004554095776" : 747.923, - "26.00025827396793" : 750.275, - "26.50046669234449" : 752.675, - "27.000562930247174" : 755.119, - "27.50023201942241" : 757.575, - "28.000621652410615" : 760.055, - "28.500553934236095" : 762.615, - "29.00014536000634" : 765.207, - "29.500746410041465" : 767.847, - "30.00070889430222" : 770.575, - "30.500373668843846" : 773.379, - "31.000629548190123" : 776.303, - "31.500579088550044" : 779.303, - "32.00023091919084" : 782.383, - "32.50063349607988" : 785.551, - "33.00016020234596" : 788.855, - "33.50036862072252" : 792.247, - "34.00027070011273" : 795.687, - "34.500095116097945" : 799.111, - "35.000579671025584" : 802.467, - "35.50018835533027" : 805.775, - "36.00037520053878" : 808.975, - "36.50052321404479" : 812.003, - "37.00046412513749" : 814.887, - "37.50072863375099" : 817.635, - "38.00029848635318" : 820.283, - "38.5003688364542" : 822.867, - "39.00078004261046" : 825.355, - "39.50041892935042" : 827.755, - "40.00043750384811" : 830.075, - "40.50040861737609" : 832.355, - "41.00050054064516" : 834.559, - "41.500872915098924" : 836.739, - "42.00006307994339" : 838.887, - "42.500862603124595" : 840.995, - "43.00063524350649" : 843.079, - "43.50087817895193" : 845.147, - "44.00027976084331" : 847.207, - "44.50085060844316" : 849.291, - "45.000286707403426" : 851.367, - "45.500283708733065" : 853.451, - "46.00017284422244" : 855.539, - "46.50013101384958" : 857.651, - "47.000693232182215" : 859.823, - "47.50053490670187" : 862.039, - "48.000096130036844" : 864.279, - "48.50013627770259" : 866.587, - "49.00014622293306" : 868.975, - "49.50005261695688" : 871.383, - "50.000066876820966" : 873.815, - "50.25003517505051" : 875.055, - "50.500258036663084" : 876.311, - "50.75059739338314" : 877.575, - "51.00063472575045" : 878.847, - "51.2505641922775" : 880.139, - "51.50001041984017" : 881.431, - "51.750259169254406" : 882.727, - "52.00044751379809" : 884.043, - "52.25023459741599" : 885.351, - "52.500056198102776" : 886.655, - "52.75027474508174" : 887.971, - "53.0002085262424" : 889.287, - "53.250237229342495" : 890.607, - "53.50064993483393" : 891.943, - "53.75005301606049" : 893.279, - "54.000016999656424" : 894.623, - "54.25077919047032" : 895.951, - "54.500462722881565" : 897.275, - "54.75041376257667" : 898.595, - "55.00056327541786" : 899.887, - "55.25005696395024" : 901.183, - "55.500159015821716" : 902.463, - "55.7502653823268" : 903.755, - "56.00015601715136" : 905.023, - "56.250404766565595" : 906.287, - "56.500424840398466" : 907.543, - "56.75048806056745" : 908.791, - "57.0006634612103" : 910.023, - "57.25064038870707" : 911.247, - "57.50057848450134" : 912.435, - "57.750335365683966" : 913.627, - "58.000036156629655" : 914.819, - "58.250552413327746" : 916.007, - "58.50043010425147" : 917.175, - "58.750381143946576" : 918.323, - "59.000073305625044" : 919.459, - "59.25056798915508" : 920.595, - "59.50084262637098" : 921.699, - "59.75082818313497" : 922.775, - "60.0002183204607" : 923.843, - "60.250764779594064" : 924.899, - "60.5008107412286" : 925.935, - "60.75046838583818" : 926.971, - "61.00095012546739" : 927.983, - "61.250931367597765" : 928.987, - "61.500675304879564" : 930.007, - "61.75011290317501" : 931.019, - "62.00055581110172" : 932.007, - "62.250977145860375" : 932.979, - "62.50066067827162" : 933.927, - "62.75009396193345" : 934.859, - "63.000312508912415" : 935.779, - "63.250664809533305" : 936.683, - "63.501025739421415" : 937.567, - "63.750899115711526" : 938.443, - "64.00028493840364" : 939.319, - "64.25005907812071" : 940.191, - "64.50032077143578" : 941.051, - "64.75062129645335" : 941.903, - "65.00072766295843" : 942.747, - "65.25031627343024" : 943.583, - "65.50084978866278" : 944.411, - "65.7507706259226" : 945.239, - "66.00027294372221" : 946.043, - "66.25084097602362" : 946.855, - "66.50073161084818" : 947.663, - "66.75113568707239" : 948.471, - "67.00041364392425" : 949.275, - "67.25097304695845" : 950.083, - "67.50050556719331" : 950.891, - "67.75037462884983" : 951.687, - "68.00113250503011" : 952.479, - "68.2503888887139" : 953.275, - "68.50059017715843" : 954.075, - "68.75108917532208" : 954.867, - "69.00050951508308" : 955.655, - "69.2501024401885" : 956.439, - "69.50120980169125" : 957.207, - "69.75015121712147" : 957.979, - "70.00045174213903" : 958.755, - "70.25127433782347" : 959.523, - "70.50015966301676" : 960.287, - "70.75011933197908" : 961.059, - "71.00100664716769" : 961.835, - "71.25030186255398" : 962.603, - "71.50067142170931" : 963.367, - "71.75108844183436" : 964.143, - "72.00109988640001" : 964.911, - "72.25102072365983" : 965.679, - "72.50065248046776" : 966.435, - "72.75077179087369" : 967.199, - "73.00130530610622" : 967.955, - "73.2506005214925" : 968.707, - "73.50001223198629" : 969.467, - "73.75055437648604" : 970.239, - "74.00045364057782" : 970.995, - "74.25138841673613" : 971.767, - "74.50015293218833" : 972.519, - "74.75109633761387" : 973.279, - "75.00076692612429" : 974.023, - "75.12610271787833" : 974.407, - "75.25016137808362" : 974.775, - "75.37607533074147" : 975.159, - "75.50112635667722" : 975.535, - "75.62549135586886" : 975.915, - "75.75042588669712" : 976.299, - "75.87554163213701" : 976.679, - "76.00026906055196" : 977.055, - "76.12557464987071" : 977.431, - "76.25018558317818" : 977.811, - "76.37519777741142" : 978.187, - "76.50062849110489" : 978.563, - "76.62608077796641" : 978.939, - "76.75018689914143" : 979.315, - "76.87574705184322" : 979.695, - "77.00071178510674" : 980.075, - "77.12637980364879" : 980.447, - "77.25052044189269" : 980.823, - "77.3760503921592" : 981.203, - "77.50110573272855" : 981.587, - "77.62584610504433" : 981.967, - "77.75046566761901" : 982.343, - "77.87569790816639" : 982.731, - "78.00055046095603" : 983.119, - "78.12597254538228" : 983.507, - "78.25087255914165" : 983.895, - "78.37598830458155" : 984.283, - "78.50098755491396" : 984.671, - "78.62528783460145" : 985.059, - "78.75014470202471" : 985.451, - "78.87567896692484" : 985.851, - "79.00066527335642" : 986.247, - "79.12511656522028" : 986.647, - "79.25090539350343" : 987.047, - "79.37609448771471" : 987.447, - "79.50114551365044" : 987.847, - "79.62561837868236" : 988.251, - "79.75026814369231" : 988.655, - "79.87622955731989" : 989.055, - "80.00112525644565" : 989.467, - "80.12532629956009" : 989.875, - "80.25025651575473" : 990.287, - "80.37554916117266" : 990.703, - "80.50022049935068" : 991.115, - "80.62527583992002" : 991.539, - "80.75122862428037" : 991.959, - "80.87545124056287" : 992.375, - "81.0006619079422" : 992.803, - "81.12535050465465" : 993.227, - "81.25092360125727" : 993.655, - "81.37612995400299" : 994.087, - "81.50112488970179" : 994.523, - "81.6255546083976" : 994.959, - "81.75037695875197" : 995.399, - "81.87566528953629" : 995.839, - "82.00049626915789" : 996.283, - "82.12556023899445" : 996.735, - "82.25032649911189" : 997.191, - "82.37517042263433" : 997.635, - "82.50065722656473" : 998.099, - "82.62591966954739" : 998.563, - "82.75097501011673" : 999.027, - "82.875421987347" : 999.491, - "83.00054636205411" : 999.959, - "83.1257009391965" : 1000.427, - "83.25067430172724" : 1000.903, - "83.37541035940941" : 1001.383, - "83.50018524879407" : 1001.867, - "83.62534845520368" : 1002.351, - "83.7509992152113" : 1002.843, - "83.8752649778299" : 1003.331, - "84.00016067695566" : 1003.831, - "84.12513835412001" : 1004.331, - "84.25041805563711" : 1004.835, - "84.37536984499981" : 1005.343, - "84.50065817578412" : 1005.859, - "84.62510083838077" : 1006.379, - "84.75022089845427" : 1006.911, - "84.8756731853158" : 1007.439, - "85.00039629909713" : 1007.975, - "85.12528768358928" : 1008.507, - "85.25070976801553" : 1009.055, - "85.37529912815494" : 1009.607, - "85.50066943697784" : 1010.179, - "85.6257247775472" : 1010.755, - "85.75083189371988" : 1011.335, - "85.87523572461403" : 1011.911, - "86.00000629936507" : 1012.511, - "86.1251306740722" : 1013.119, - "86.2501299244046" : 1013.727, - "86.37524566984449" : 1014.351, - "86.50009822263415" : 1014.971, - "86.62551167779317" : 1015.595, - "86.75013986963508" : 1016.235, - "86.87537211018245" : 1016.887, - "87.00026780930821" : 1017.539, - "87.12531452061033" : 1018.211, - "87.25051655872244" : 1018.883, - "87.37544677491708" : 1019.571, - "87.5000447643237" : 1020.279, - "87.56296075163334" : 1020.639, - "87.62511304879389" : 1021.003, - "87.68776152881966" : 1021.379, - "87.75004757962213" : 1021.751, - "87.81304123033676" : 1022.123, - "87.87533591040646" : 1022.499, - "87.9378118050878" : 1022.883, - "88.0001064851575" : 1023.267, - "88.06254786276997" : 1023.667, - "88.1254638500796" : 1024.059, - "88.18777147405014" : 1024.451, - "88.25030777360203" : 1024.855, - "88.3127146341456" : 1025.267, - "88.375212101995" : 1025.687, - "88.4380374819988" : 1026.115, - "88.50058241081793" : 1026.543, - "88.56265272993987" : 1026.979, - "88.62549536847813" : 1027.411, - "88.68807481436612" : 1027.871, - "88.75036517980222" : 1028.307, - "88.81265985987191" : 1028.759, - "88.87521341795825" : 1029.219, - "88.93781875164792" : 1029.679, - "89.00032053413094" : 1030.155, - "89.06287409221727" : 1030.631, - "89.12543196493722" : 1031.115, - "89.18770075720525" : 1031.607, - "89.25003858361106" : 1032.099, - "89.31270863680489" : 1032.611, - "89.37505940711152" : 1033.131, - "89.43777260664146" : 1033.659, - "89.500002567207" : 1034.191, - "89.5625388667589" : 1034.739, - "89.6254073930988" : 1035.299, - "89.68752517319047" : 1035.855, - "89.75016502394902" : 1036.447, - "89.81292136981506" : 1037.043, - "89.87504346454034" : 1037.639, - "89.9378127543072" : 1038.263, - "90.00005565877358" : 1038.907, - "90.0627257119674" : 1039.571, - "90.12536124809233" : 1040.235, - "90.18765592816204" : 1040.907, - "90.250058474072" : 1041.607, - "90.312715583365" : 1042.311, - "90.37512244390858" : 1043.043, - "90.43766305809409" : 1043.791, - "90.50026839178375" : 1044.571, - "90.56252855478456" : 1045.371, - "90.62533667625392" : 1046.175, - "90.68763567095723" : 1046.983, - "90.75002095833277" : 1047.807, - "90.81268238225937" : 1048.663, - "90.87504609646683" : 1049.559, - "90.93777655453121" : 1050.479, - "91.00033442725116" : 1051.399, - "91.06286641216944" : 1052.375, - "91.12509637273499" : 1053.367, - "91.18762835765327" : 1054.383, - "91.25024232061016" : 1055.415, - "91.31257583238235" : 1056.487, - "91.37519410997285" : 1057.575, - "91.43765274611975" : 1058.679, - "91.50004234812889" : 1059.847, - "91.56256138914634" : 1061.087, - "91.62527890330988" : 1062.367, - "91.68772028092235" : 1063.663, - "91.75026520974146" : 1064.983, - "91.81271090198753" : 1066.343, - "91.87534212347886" : 1067.719, - "91.93779213035855" : 1069.143, - "92.00003503482492" : 1070.671, - "92.06255407584237" : 1072.255, - "92.1251852973337" : 1073.919, - "92.18752312373951" : 1075.703, - "92.25012845742917" : 1077.615, - "92.31264318381301" : 1079.663, - "92.37514928092963" : 1081.807, - "92.43759065854209" : 1084.007, - "92.50013558736121" : 1086.311, - "92.56255970643923" : 1088.711, - "92.62500971331892" : 1091.295, - "92.68770133968079" : 1093.999, - "92.75001327828494" : 1096.727, - "92.81270059001321" : 1099.439, - "92.87510745055678" : 1102.271, - "92.93757903060451" : 1105.327, - "93.00016279112613" : 1108.663, - "93.06255670776888" : 1112.159, - "93.12504554635105" : 1115.671, - "93.1875645873685" : 1119.431, - "93.25011814545485" : 1123.511, - "93.31258109623536" : 1127.735, - "93.3750958226192" : 1132.279, - "93.43760623436943" : 1137.071, - "93.50005624124911" : 1141.711, - "93.56257959690018" : 1146.631, - "93.62507706474958" : 1151.863, - "93.68756590333176" : 1157.255, - "93.75001159557783" : 1162.391, - "93.78131857705627" : 1164.975, - "93.81256083903055" : 1167.495, - "93.84378152783678" : 1170.119, - "93.87503673371191" : 1172.847, - "93.90625742251814" : 1175.551, - "93.93752125766046" : 1178.215, - "93.96880666597086" : 1180.791, - "94.00008344501403" : 1183.295, - "94.0313213923547" : 1185.775, - "94.06252482262649" : 1188.287, - "94.09385337727299" : 1190.647, - "94.12503091974311" : 1192.983, - "94.15634221585516" : 1195.359, - "94.18754564612695" : 1197.607, - "94.21880516663568" : 1199.863, - "94.25003448470913" : 1202.023, - "94.28129400521786" : 1204.111, - "94.31257941352825" : 1206.263, - "94.34377852916643" : 1208.295, - "94.37512865698098" : 1210.151, - "94.40633208725276" : 1211.871, - "94.43752257362372" : 1213.631, - "94.468842499003" : 1215.351, - "94.50008476097727" : 1216.927, - "94.53130976441712" : 1218.503, - "94.56259517272751" : 1220.007, - "94.59392804200762" : 1221.391, - "94.62514441618023" : 1222.759, - "94.65639099278813" : 1224.031, - "94.68761599622798" : 1225.287, - "94.71891003380559" : 1226.487, - "94.75019544211598" : 1227.719, - "94.78127806264666" : 1228.887, - "94.81263681972844" : 1230.047, - "94.84398694754299" : 1231.215, - "94.87517743391395" : 1232.311, - "94.90629025687991" : 1233.391, - "94.93765332859529" : 1234.471, - "94.96877046619487" : 1235.551, - "95.0000774476733" : 1236.631, - "95.03144914865591" : 1237.695, - "95.06273887159992" : 1238.711, - "95.09376540189366" : 1239.655, - "95.1251500467771" : 1240.623, - "95.15629307217834" : 1241.567, - "95.18762594145845" : 1242.519, - "95.21897175463938" : 1243.439, - "95.25025284831617" : 1244.343, - "95.2815598297946" : 1245.215, - "95.31251301131698" : 1246.071, - "95.34389334156681" : 1246.943, - "95.37504499623526" : 1247.759, - "95.40633040454566" : 1248.583, - "95.43772367869632" : 1249.391, - "95.46888396263199" : 1250.183, - "95.50024271971377" : 1250.983, - "95.5312994524428" : 1251.743, - "95.56257191685235" : 1252.527, - "95.59391773003328" : 1253.319, - "95.62508232860259" : 1254.087, - "95.65630301740882" : 1254.839, - "95.68774375252919" : 1255.583, - "95.71882205842627" : 1256.319, - "95.75026279354664" : 1257.047, - "95.78132815554288" : 1257.799, - "95.81280340773215" : 1258.527, - "95.84401115263755" : 1259.279, - "95.87534833655126" : 1260.007, - "95.90657765462471" : 1260.703, - "95.93759124101763" : 1261.423, - "95.96894568346579" : 1262.151, - "96.00002830399649" : 1262.871, - "96.03135685864298" : 1263.607, - "96.06263363768615" : 1264.351, - "96.09407437280652" : 1265.079, - "96.12504912749695" : 1265.799, - "96.15640788457871" : 1266.527, - "96.18769329288911" : 1267.247, - "96.21890103779451" : 1267.927, - "96.25032451438044" : 1268.623, - "96.28149774221696" : 1269.319, - "96.3126839139543" : 1270.015, - "96.34387440032525" : 1270.687, - "96.37511234766593" : 1271.383, - "96.40631577793772" : 1272.047, - "96.43777808622615" : 1272.735, - "96.46901603356682" : 1273.399, - "96.50018926140334" : 1274.071, - "96.5316688282262" : 1274.751, - "96.56256160487803" : 1275.439, - "96.59385564245564" : 1276.151, - "96.62505907272742" : 1276.847, - "96.65640488590836" : 1277.535, - "96.68772912592125" : 1278.239, - "96.71892392692581" : 1278.927, - "96.75029562790841" : 1279.639, - "96.78158966548602" : 1280.311, - "96.81271974698643" : 1280.975, - "96.84376353581463" : 1281.655, - "96.87525604653833" : 1282.343, - "96.89067223242897" : 1282.703, - "96.90662774752093" : 1283.055, - "96.92199647244185" : 1283.391, - "96.93779234609022" : 1283.735, - "96.95348035389833" : 1284.087, - "96.96898283246118" : 1284.439, - "96.98444216468792" : 1284.775, - "97.00035021881017" : 1285.119, - "97.01575346079998" : 1285.471, - "97.03129045643172" : 1285.815, - "97.04694826180454" : 1286.175, - "97.0627786525218" : 1286.527, - "97.07824661401577" : 1286.847, - "97.09383969988444" : 1287.183, - "97.10944141502034" : 1287.535, - "97.12511647892761" : 1287.887, - "97.14073545259795" : 1288.239, - "97.15654858478077" : 1288.615, - "97.17205106334362" : 1288.967, - "97.18769592481561" : 1289.327, - "97.20338393262372" : 1289.687, - "97.2187785453463" : 1290.031, - "97.23473406043827" : 1290.391, - "97.25026674143639" : 1290.735, - "97.2657131297623" : 1291.095, - "97.28151763267789" : 1291.463, - "97.29692518930132" : 1291.815, - "97.31281167025551" : 1292.183, - "97.32832709271919" : 1292.527, - "97.34389860541981" : 1292.903, - "97.35950894982292" : 1293.263, - "97.37530050883768" : 1293.607, - "97.39096262884412" : 1293.967, - "97.40627526352812" : 1294.327, - "97.42208408107732" : 1294.695, - "97.43758224500655" : 1295.071, - "97.45325730891383" : 1295.439, - "97.46896257525638" : 1295.823, - "97.48437876114701" : 1296.191, - "97.50011422992485" : 1296.575, - "97.51578929383211" : 1296.959, - "97.5313047162958" : 1297.335, - "97.54703587044001" : 1297.719, - "97.56272819288172" : 1298.087, - "97.57837736898733" : 1298.487, - "97.59402654509294" : 1298.871, - "97.60974044070272" : 1299.263, - "97.625337841205" : 1299.647, - "97.64093524170728" : 1300.039, - "97.65635142759793" : 1300.431, - "97.67204806467325" : 1300.839, - "97.68759368957221" : 1301.239, - "97.70326012421226" : 1301.655, - "97.7189999076237" : 1302.071, - "97.73453690325543" : 1302.495, - "97.75028531593408" : 1302.919, - "97.76570150182472" : 1303.343, - "97.78130321696062" : 1303.799, - "97.79692650526457" : 1304.287, - "97.81268354721044" : 1304.751, - "97.82828957697994" : 1305.231, - "97.84377479700835" : 1305.727, - "97.85952752432063" : 1306.207, - "97.87515512725818" : 1306.695, - "97.89082156189824" : 1307.191, - "97.90628089412498" : 1307.687, - "97.92209402630779" : 1308.207, - "97.93754472926732" : 1308.719, - "97.95339669315263" : 1309.247, - "97.96894231805157" : 1309.783, - "97.98453108928663" : 1310.279, - "98.00021909709474" : 1310.831, - "98.0158855317348" : 1311.367, - "98.03137506639682" : 1311.895, - "98.04708033273937" : 1312.447, - "98.06255692350055" : 1312.991, - "98.0781370654684" : 1313.519, - "98.09391999521594" : 1314.079, - "98.10956917132154" : 1314.631, - "98.12520540352632" : 1315.223, - "98.1406345333178" : 1315.791, - "98.15645629476784" : 1316.407, - "98.17204938063651" : 1316.991, - "98.18761657870351" : 1317.583, - "98.20323986700745" : 1318.231, - "98.21889335774668" : 1318.855, - "98.23439583630953" : 1319.495, - "98.25020465385873" : 1320.103, - "98.2657545933913" : 1320.711, - "98.28138651096248" : 1321.343, - "98.29692782122781" : 1321.991, - "98.31260288513509" : 1322.671, - "98.32831246611126" : 1323.327, - "98.34387966417826" : 1324.039, - "98.35945117687888" : 1324.735, - "98.37505289201478" : 1325.447, - "98.39077973152537" : 1326.143, - "98.4063943905621" : 1326.847, - "98.421918442293" : 1327.559, - "98.43759350620027" : 1328.263, - "98.44539867840184" : 1328.623, - "98.45331171644366" : 1328.999, - "98.46101333743856" : 1329.351, - "98.46890480231234" : 1329.703, - "98.4766711428114" : 1330.071, - "98.48448925891378" : 1330.423, - "98.49229874574895" : 1330.751, - "98.50008234478246" : 1331.095, - "98.50799969745789" : 1331.463, - "98.51580918429306" : 1331.799, - "98.52349786138713" : 1332.167, - "98.53127714578703" : 1332.503, - "98.539254903333" : 1332.871, - "98.54696083896152" : 1333.239, - "98.55475738189585" : 1333.639, - "98.5626402175024" : 1334.047, - "98.57037204093258" : 1334.423, - "98.57823761800469" : 1334.823, - "98.58609456580957" : 1335.231, - "98.59390405264475" : 1335.631, - "98.60159704437243" : 1336.023, - "98.6094065312076" : 1336.423, - "98.61719875950833" : 1336.839, - "98.62502119024433" : 1337.247, - "98.63282204781227" : 1337.663, - "98.64066605171632" : 1338.087, - "98.64858340439176" : 1338.535, - "98.65634111562359" : 1338.959, - "98.66419374879487" : 1339.391, - "98.6719514600267" : 1339.815, - "98.67974368832743" : 1340.271, - "98.68754886052899" : 1340.711, - "98.69545758393721" : 1341.151, - "98.70324549760433" : 1341.599, - "98.7109773210345" : 1342.039, - "98.71886015664104" : 1342.503, - "98.72673004834677" : 1342.951, - "98.73443166934167" : 1343.415, - "98.74227998787933" : 1343.879, - "98.75010241861533" : 1344.327, - "98.757950737153" : 1344.759, - "98.76573865082011" : 1345.215, - "98.77350067668556" : 1345.679, - "98.78134468058961" : 1346.143, - "98.78906356011896" : 1346.623, - "98.79693776645829" : 1347.095, - "98.80469547769013" : 1347.631, - "98.81252653769334" : 1348.095, - "98.82041800256712" : 1348.591, - "98.82818434306618" : 1349.063, - "98.83603697623745" : 1349.567, - "98.84385077770624" : 1350.063, - "98.8517034108775" : 1350.559, - "98.85943523430768" : 1351.023, - "98.86722746260841" : 1351.543, - "98.87509735431414" : 1352.063, - "98.88282054847708" : 1352.591, - "98.89066023774753" : 1353.111, - "98.89849129775075" : 1353.631, - "98.90634824555563" : 1354.159, - "98.91406281045137" : 1354.703, - "98.92195858995875" : 1355.255, - "98.92969041338893" : 1355.799, - "98.93755167582742" : 1356.327, - "98.9454086236323" : 1356.887, - "98.95312750316165" : 1357.455, - "98.96103191193626" : 1358.023, - "98.96881119633615" : 1358.591, - "98.97658185146882" : 1359.135, - "98.98444311390732" : 1359.695, - "98.99227848854416" : 1360.271, - "99.00004482904322" : 1360.871, - "99.00785863051199" : 1361.439, - "99.01565948807993" : 1362.007, - "99.0234689749151" : 1362.583, - "99.0312525739486" : 1363.151, - "99.03918718515848" : 1363.727, - "99.04688880615339" : 1364.287, - "99.05476301249271" : 1364.879, - "99.06250346519012" : 1365.423, - "99.07035178372779" : 1366.031, - "99.07816989983017" : 1366.623, - "99.08594486959646" : 1367.215, - "99.09375435643162" : 1367.807, - "99.10165013593901" : 1368.455, - "99.10945962277417" : 1369.023, - "99.11722164863963" : 1369.615, - "99.12510448424618" : 1370.215, - "99.1328147345083" : 1370.783, - "99.14065873841236" : 1371.407, - "99.14844233744586" : 1372.039, - "99.15626908281547" : 1372.639, - "99.16409151355147" : 1373.255, - "99.17189237111941" : 1373.871, - "99.17977952135958" : 1374.455, - "99.1875674350267" : 1375.055, - "99.19532514625853" : 1375.663, - "99.20315620626175" : 1376.343, - "99.21097432236414" : 1376.999, - "99.21883558480263" : 1377.679, - "99.22268855261689" : 1378.047, - "99.2265630935992" : 1378.399, - "99.23054550042178" : 1378.767, - "99.23445887310658" : 1379.103, - "99.23830321165362" : 1379.439, - "99.24225541604092" : 1379.807, - "99.24609543995435" : 1380.151, - "99.2500735321433" : 1380.551, - "99.25392218532396" : 1380.911, - "99.25788733361209" : 1381.303, - "99.2618007062969" : 1381.695, - "99.26566661801198" : 1382.063, - "99.26957136142957" : 1382.463, - "99.27350630728242" : 1382.863, - "99.27739810679918" : 1383.223, - "99.28129422094953" : 1383.615, - "99.2851903350999" : 1383.999, - "99.28911665168555" : 1384.375, - "99.29302570973674" : 1384.767, - "99.29691319461988" : 1385.151, - "99.30083951120551" : 1385.543, - "99.30471836682143" : 1385.903, - "99.30871371754485" : 1386.279, - "99.31251059512216" : 1386.679, - "99.3164369117078" : 1387.047, - "99.32038480146149" : 1387.391, - "99.32428523024547" : 1387.783, - "99.32821586146471" : 1388.167, - "99.33206882927897" : 1388.511, - "99.33596494342933" : 1388.911, - "99.33984379904525" : 1389.287, - "99.34382189123421" : 1389.679, - "99.34775683708708" : 1390.063, - "99.35165295123744" : 1390.455, - "99.35549297515087" : 1390.799, - "99.35946675270621" : 1391.223, - "99.36331109125325" : 1391.583, - "99.36722014930444" : 1391.975, - "99.37114215125646" : 1392.383, - "99.37502963613962" : 1392.775, - "99.37892143565637" : 1393.167, - "99.38283480834117" : 1393.535, - "99.38681721516375" : 1393.959, - "99.39066155371079" : 1394.351, - "99.39456198249475" : 1394.799, - "99.39850987224844" : 1395.199, - "99.40235421079548" : 1395.623, - "99.40625463957946" : 1396.007, - "99.4102284171348" : 1396.407, - "99.41412453128517" : 1396.863, - "99.41801633080192" : 1397.295, - "99.42188224251701" : 1397.703, - "99.42578267130098" : 1398.143, - "99.42976507812357" : 1398.583, - "99.43362236057143" : 1399.015, - "99.43757025032512" : 1399.439, - "99.44141027423855" : 1399.847, - "99.44533227619057" : 1400.255, - "99.4492585927762" : 1400.663, - "99.45315470692657" : 1401.111, - "99.4570810235122" : 1401.503, - "99.46105480106756" : 1401.887, - "99.46485599327849" : 1402.255, - "99.4687693659633" : 1402.687, - "99.47273019961781" : 1403.071, - "99.47657453816485" : 1403.471, - "99.48051811328493" : 1403.871, - "99.48440991280168" : 1404.247, - "99.48831897085289" : 1404.663, - "99.49222802890408" : 1405.055, - "99.49610256988639" : 1405.463, - "99.50002457183841" : 1405.879, - "99.50391205672156" : 1406.239, - "99.50786857574246" : 1406.655, - "99.51174743135839" : 1407.015, - "99.51563491624152" : 1407.399, - "99.51960437916327" : 1407.839, - "99.52353932501613" : 1408.271, - "99.52739229283038" : 1408.679, - "99.53131429478242" : 1409.111, - "99.53517157723029" : 1409.519, - "99.53908063528148" : 1409.959, - "99.54298537869906" : 1410.455, - "99.54695052698719" : 1410.927, - "99.55082938260311" : 1411.343, - "99.55476001382236" : 1411.759, - "99.55863886943828" : 1412.215, - "99.56250909578698" : 1412.567, - "99.5665130757776" : 1412.999, - "99.5703833021263" : 1413.447, - "99.57423195530696" : 1413.855, - "99.57814964262538" : 1414.303, - "99.58205438604296" : 1414.743, - "99.58595912946053" : 1415.223, - "99.5898940753134" : 1415.703, - "99.59379881873097" : 1416.295, - "99.59766473044607" : 1416.751, - "99.60162124946699" : 1417.231, - "99.60546990264763" : 1417.711, - "99.60939621923326" : 1418.223, - "99.61134643362526" : 1418.447, - "99.61334842362056" : 1418.719, - "99.61524686240922" : 1418.967, - "99.61721433533566" : 1419.215, - "99.61919906679653" : 1419.463, - "99.62116653972295" : 1419.719, - "99.62304771997717" : 1419.967, - "99.62502382217082" : 1420.271, - "99.6269697219292" : 1420.511, - "99.62896739729091" : 1420.815, - "99.63086583607956" : 1421.063, - "99.63286351144127" : 1421.295, - "99.63478783803158" : 1421.559, - "99.63674236705718" : 1421.799, - "99.63870983998362" : 1422.095, - "99.64064711047477" : 1422.319, - "99.64262752730203" : 1422.535, - "99.64456048315958" : 1422.775, - "99.64649343901712" : 1423.023, - "99.64844796804272" : 1423.327, - "99.6504370141372" : 1423.647, - "99.65235702609391" : 1423.903, - "99.65435901608923" : 1424.183, - "99.6562617695115" : 1424.455, - "99.6582162985371" : 1424.711, - "99.66023986170046" : 1425.007, - "99.66214261512273" : 1425.311, - "99.6640885148811" : 1425.535, - "99.66604735854031" : 1425.839, - "99.66800188756591" : 1426.095, - "99.66998661902679" : 1426.359, - "99.67192820415156" : 1426.647, - "99.67386547464271" : 1426.895, - "99.67582863293552" : 1427.143, - "99.6777745326939" : 1427.415, - "99.67973337635311" : 1427.655, - "99.6816835907451" : 1427.927, - "99.68361223196902" : 1428.175, - "99.68557107562823" : 1428.471, - "99.68758169489077" : 1428.719, - "99.68945856051138" : 1428.983, - "99.69144329197225" : 1429.287, - "99.69342802343311" : 1429.591, - "99.69531351832094" : 1429.919, - "99.69727667661377" : 1430.167, - "99.69926572270825" : 1430.463, - "99.70119436393219" : 1430.735, - "99.70316183685861" : 1431.023, - "99.70513362441865" : 1431.351, - "99.7070708949098" : 1431.655, - "99.70901248003457" : 1431.927, - "99.71098426759461" : 1432.295, - "99.71290859418494" : 1432.607, - "99.7148501793097" : 1432.895, - "99.71683922540419" : 1433.231, - "99.71876786662811" : 1433.527, - "99.72070945175288" : 1433.879, - "99.72270712711459" : 1434.239, - "99.72461419517046" : 1434.599, - "99.72660755589855" : 1434.903, - "99.72852325322167" : 1435.239, - "99.73048209688086" : 1435.527, - "99.73246682834174" : 1435.831, - "99.73438684029846" : 1436.199, - "99.73635431322488" : 1436.479, - "99.73830884225048" : 1436.791, - "99.74030220297857" : 1437.103, - "99.74220927103445" : 1437.391, - "99.74418105859449" : 1437.727, - "99.74614421688732" : 1438.031, - "99.74806854347763" : 1438.311, - "99.75000581396878" : 1438.671, - "99.75197760152884" : 1438.967, - "99.75392781592082" : 1439.271, - "99.75590823274808" : 1439.583, - "99.75789296420895" : 1439.879, - "99.75978708836399" : 1440.175, - "99.76173298812238" : 1440.479, - "99.76369183178159" : 1440.775, - "99.76563773153995" : 1441.071, - "99.76760088983278" : 1441.423, - "99.76954247495755" : 1441.759, - "99.77150131861676" : 1442.079, - "99.77343858910791" : 1442.431, - "99.77540174740072" : 1442.759, - "99.77736922032716" : 1443.127, - "99.77931943471914" : 1443.439, - "99.78126533447751" : 1443.751, - "99.78322417813672" : 1444.095, - "99.78516576326149" : 1444.431, - "99.78712029228709" : 1444.767, - "99.7890791359463" : 1445.095, - "99.79102503570468" : 1445.431, - "99.79298819399749" : 1445.775, - "99.79493840838948" : 1446.095, - "99.79687999351424" : 1446.431, - "99.7988604103415" : 1446.767, - "99.80078905156543" : 1447.095, - "99.80276515375908" : 1447.471, - "99.80473262668552" : 1447.815, - "99.8057077338815" : 1447.951, - "99.80666558254306" : 1448.151, - "99.80764500437266" : 1448.351, - "99.80860716766783" : 1448.511, - "99.80960816266548" : 1448.679, - "99.81057032596064" : 1448.831, - "99.81153248925581" : 1449.007, - "99.81255505742152" : 1449.199, - "99.81351290608306" : 1449.343, - "99.81448801327906" : 1449.487, - "99.81544586194062" : 1449.663, - "99.81645548620548" : 1449.839, - "99.81740039096621" : 1450.031, - "99.81837981279581" : 1450.223, - "99.81940669559513" : 1450.415, - "99.82031276865335" : 1450.575, - "99.82129650511658" : 1450.783, - "99.82226729767896" : 1450.959, - "99.82325534877577" : 1451.127, - "99.82422614133816" : 1451.287, - "99.82522282170221" : 1451.439, - "99.82618067036375" : 1451.591, - "99.82716440682698" : 1451.727, - "99.82813519938937" : 1451.887, - "99.82912325048618" : 1452.047, - "99.830111301583" : 1452.207, - "99.83107777951179" : 1452.351, - "99.83205720134139" : 1452.535, - "99.8330409378046" : 1452.687, - "99.83400310109977" : 1452.871, - "99.83497820829575" : 1453.047, - "99.83595331549175" : 1453.207, - "99.83697588365746" : 1453.383, - "99.83789921525012" : 1453.519, - "99.83889589561417" : 1453.687, - "99.83988826134461" : 1453.879, - "99.84084611000615" : 1454.031, - "99.84184710500381" : 1454.199, - "99.8427747512301" : 1454.383, - "99.84377574622775" : 1454.575, - "99.84476811195819" : 1454.767, - "99.84575616305501" : 1454.951, - "99.84678736048794" : 1455.135, - "99.84768048964533" : 1455.287, - "99.84867717000938" : 1455.479, - "99.8496220747701" : 1455.679, - "99.85058855269887" : 1455.863, - "99.85156365989486" : 1456.063, - "99.85255171099169" : 1456.271, - "99.85355270598934" : 1456.455, - "99.85450192538367" : 1456.615, - "99.85548566184688" : 1456.855, - "99.85647371294371" : 1457.015, - "99.85744019087248" : 1457.231, - "99.85844981513736" : 1457.439, - "99.85937746136364" : 1457.631, - "99.86036119782686" : 1457.807, - "99.86136219282452" : 1457.975, - "99.86231141221884" : 1458.199, - "99.86331672185011" : 1458.407, - "99.86427457051167" : 1458.591, - "99.86524104844044" : 1458.743, - "99.86621184100282" : 1458.951, - "99.86719989209965" : 1459.175, - "99.86818794319647" : 1459.327, - "99.86916305039246" : 1459.535, - "99.87012952832123" : 1459.759, - "99.87110032088361" : 1459.967, - "99.87209700124767" : 1460.231, - "99.87306347917644" : 1460.455, - "99.87405153027326" : 1460.663, - "99.87501369356842" : 1460.879, - "99.8759844861308" : 1461.103, - "99.87698979576207" : 1461.303, - "99.87795627369084" : 1461.519, - "99.87892275161961" : 1461.767, - "99.87992374661728" : 1461.991, - "99.88086433674438" : 1462.231, - "99.88184375857399" : 1462.423, - "99.8828274950372" : 1462.663, - "99.88379397296598" : 1462.863, - "99.88479065333001" : 1463.071, - "99.88574418735796" : 1463.287, - "99.88674949698922" : 1463.543, - "99.88770303101717" : 1463.727, - "99.88870402601482" : 1463.951, - "99.88970933564609" : 1464.159, - "99.89067149894126" : 1464.407, - "99.89161640370197" : 1464.663, - "99.89258719626436" : 1464.855, - "99.89360544979645" : 1465.103, - "99.89453741065634" : 1465.311, - "99.89551251785234" : 1465.535, - "99.89651351284999" : 1465.767, - "99.89748862004599" : 1465.967, - "99.89848530041003" : 1466.239, - "99.89942157590353" : 1466.463, - "99.90041825626757" : 1466.719, - "99.90138904882996" : 1466.951, - "99.90235552675873" : 1467.247, - "99.90284308035673" : 1467.367, - "99.90332631932111" : 1467.511, - "99.9038095582855" : 1467.655, - "99.90430142651711" : 1467.791, - "99.90480623864954" : 1467.911, - "99.90528516298032" : 1468.015, - "99.90576840194471" : 1468.151, - "99.90628184334437" : 1468.279, - "99.90677371157598" : 1468.431, - "99.90722674810509" : 1468.607, - "99.9077186163367" : 1468.743, - "99.9082104845683" : 1468.919, - "99.90870666743352" : 1469.095, - "99.90918990639791" : 1469.263, - "99.90968177462952" : 1469.367, - "99.9101650135939" : 1469.511, - "99.91067414035994" : 1469.671, - "99.91115306469072" : 1469.807, - "99.91164493292233" : 1469.967, - "99.91211091335228" : 1470.119, - "99.9126114108511" : 1470.271, - "99.91308602054826" : 1470.399, - "99.91359946194792" : 1470.535, - "99.91408701554593" : 1470.703, - "99.91455299597587" : 1470.879, - "99.91504917884109" : 1471.015, - "99.91553673243908" : 1471.175, - "99.91601997140347" : 1471.335, - "99.9165204689023" : 1471.487, - "99.91701233713391" : 1471.671, - "99.9174998907319" : 1471.807, - "99.9179874443299" : 1471.983, - "99.91846205402706" : 1472.111, - "99.91897549542672" : 1472.215, - "99.91943716122306" : 1472.359, - "99.91993334408828" : 1472.503, - "99.92041226841906" : 1472.687, - "99.92091708055149" : 1472.903, - "99.92139600488227" : 1473.055, - "99.92188355848026" : 1473.167, - "99.92237974134548" : 1473.351, - "99.92285866567626" : 1473.527, - "99.92335484854148" : 1473.679, - "99.92383808750586" : 1473.871, - "99.92432564110386" : 1473.991, - "99.92482613860268" : 1474.159, - "99.92530074829985" : 1474.327, - "99.92581850433312" : 1474.503, - "99.92627154086223" : 1474.631, - "99.92677203836107" : 1474.807, - "99.92726390659267" : 1474.991, - "99.92773851628984" : 1475.183, - "99.92822606988783" : 1475.303, - "99.92873519665388" : 1475.471, - "99.92921843561827" : 1475.655, - "99.92969304531543" : 1475.831, - "99.93019785744787" : 1476.007, - "99.93067678177864" : 1476.167, - "99.93116433537665" : 1476.335, - "99.93165620360826" : 1476.487, - "99.93215238647346" : 1476.615, - "99.93261836690341" : 1476.743, - "99.93311454976863" : 1476.943, - "99.93361073263385" : 1477.111, - "99.93410260086546" : 1477.271, - "99.93459446909706" : 1477.463, - "99.93506476416061" : 1477.607, - "99.935548003125" : 1477.831, - "99.93603987135661" : 1477.999, - "99.93654036885543" : 1478.215, - "99.93702360781982" : 1478.351, - "99.93750684678422" : 1478.535, - "99.93800302964942" : 1478.735, - "99.93850352714826" : 1478.919, - "99.9389651929446" : 1479.071, - "99.9394570611762" : 1479.255, - "99.93994461477419" : 1479.503, - "99.9404753147083" : 1479.703, - "99.9409240366038" : 1479.927, - "99.94142453410262" : 1480.095, - "99.94189482916619" : 1480.231, - "99.94239532666501" : 1480.399, - "99.942882880263" : 1480.655, - "99.94339200702906" : 1480.879, - "99.94385367282538" : 1481.055, - "99.9443498556906" : 1481.263, - "99.944833094655" : 1481.471, - "99.94532927752022" : 1481.631, - "99.94581683111821" : 1481.879, - "99.94629144081537" : 1482.071, - "99.9467962529478" : 1482.263, - "99.94727517727858" : 1482.503, - "99.94775410160936" : 1482.727, - "99.94825028447458" : 1482.895, - "99.94875941124063" : 1483.079, - "99.94922539167058" : 1483.255, - "99.94973883307023" : 1483.495, - "99.95019618423295" : 1483.679, - "99.95069236709817" : 1483.887, - "99.95117560606256" : 1484.151, - "99.95143016944559" : 1484.247, - "99.95169336209584" : 1484.359, - "99.95190477914275" : 1484.479, - "99.9521722864266" : 1484.615, - "99.95240096200797" : 1484.743, - "99.95264258149017" : 1484.871, - "99.95288851560596" : 1484.967, - "99.95315170825621" : 1485.039, - "99.9533890131048" : 1485.127, - "99.95365652038865" : 1485.247, - "99.95386362280196" : 1485.367, - "99.9541225008186" : 1485.495, - "99.95435980566718" : 1485.551, - "99.95459279588215" : 1485.711, - "99.95485167389879" : 1485.807, - "99.95508034948014" : 1485.895, - "99.9553435421304" : 1486.047, - "99.95557221771175" : 1486.159, - "99.95581815182756" : 1486.295, - "99.95605977130975" : 1486.415, - "99.95630570542555" : 1486.511, - "99.95654732490775" : 1486.591, - "99.95678894438994" : 1486.679, - "99.95705213704018" : 1486.823, - "99.95728081262155" : 1486.927, - "99.95753537600457" : 1487.047, - "99.95776405158593" : 1487.175, - "99.95803155886979" : 1487.279, - "99.95826023445115" : 1487.391, - "99.95850616856696" : 1487.503, - "99.95874778804915" : 1487.655, - "99.95901960996662" : 1487.775, - "99.95923102701353" : 1487.863, - "99.95948559039655" : 1487.999, - "99.95971858061154" : 1488.103, - "99.95996451472733" : 1488.247, - "99.96021907811036" : 1488.431, - "99.96046932685977" : 1488.559, - "99.96069368780752" : 1488.623, - "99.96095688045777" : 1488.767, - "99.96119849993997" : 1488.863, - "99.96143149015494" : 1489.007, - "99.96169468280517" : 1489.135, - "99.96191472911931" : 1489.231, - "99.96217792176957" : 1489.383, - "99.96241954125176" : 1489.495, - "99.96264821683312" : 1489.647, - "99.96290278021614" : 1489.767, - "99.96314008506472" : 1489.871, - "99.96339033381415" : 1489.943, - "99.96363195329633" : 1490.055, - "99.96386925814491" : 1490.151, - "99.96412382152795" : 1490.319, - "99.96436975564374" : 1490.439, - "99.964632948294" : 1490.567, - "99.96485730924174" : 1490.615, - "99.96509029945672" : 1490.743, - "99.96533623357251" : 1490.887, - "99.96557785305471" : 1491.079, - "99.96582810180412" : 1491.207, - "99.9660654066527" : 1491.351, - "99.96631134076851" : 1491.439, - "99.96656590415154" : 1491.583, - "99.9667988943665" : 1491.687, - "99.96707071628397" : 1491.823, - "99.96729939186534" : 1491.903, - "99.96753238208031" : 1492.031, - "99.96779557473056" : 1492.167, - "99.9680199356783" : 1492.327, - "99.96828744296216" : 1492.455, - "99.96851180390992" : 1492.519, - "99.96875773802572" : 1492.687, - "99.96899935750791" : 1492.791, - "99.96927117942538" : 1492.879, - "99.96950848427396" : 1493.071, - "99.9697285305881" : 1493.191, - "99.9699744647039" : 1493.279, - "99.97022471345332" : 1493.447, - "99.9704620183019" : 1493.543, - "99.9707036377841" : 1493.663, - "99.97096251580072" : 1493.847, - "99.97120413528292" : 1494.015, - "99.97143712549789" : 1494.167, - "99.97170463278175" : 1494.327, - "99.9719289937295" : 1494.543, - "99.97217061321169" : 1494.711, - "99.9724165473275" : 1494.919, - "99.9726624814433" : 1495.087, - "99.97291704482633" : 1495.399, - "99.97316297894213" : 1495.527, - "99.9733959691571" : 1495.727, - "99.97363758863929" : 1495.967, - "99.9738878373887" : 1496.143, - "99.97413808613813" : 1496.439, - "99.97436676171948" : 1496.599, - "99.9746170104689" : 1496.951, - "99.97485431531749" : 1497.127, - "99.97510024943328" : 1497.367, - "99.97534618354909" : 1497.543, - "99.97558780303127" : 1497.719, - "99.97570861277238" : 1497.783, - "99.97583373714708" : 1497.911, - "99.97595886152179" : 1498.031, - "99.97608830053011" : 1498.159, - "99.9762047956376" : 1498.263, - "99.9763299200123" : 1498.375, - "99.97644641511978" : 1498.447, - "99.97656722486089" : 1498.599, - "99.97669234923559" : 1498.703, - "99.97680884434308" : 1498.759, - "99.97692965408417" : 1498.839, - "99.9770677223597" : 1498.943, - "99.97717558819998" : 1499.055, - "99.97729639794107" : 1499.199, - "99.97741720768217" : 1499.343, - "99.97755959059133" : 1499.511, - "99.9776760856988" : 1499.583, - "99.97778826617268" : 1499.655, - "99.97791339054739" : 1499.799, - "99.97802988565488" : 1499.863, - "99.9781593246632" : 1499.999, - "99.97827150513707" : 1500.111, - "99.97841820267983" : 1500.199, - "99.97852175388648" : 1500.311, - "99.97863824899397" : 1500.423, - "99.97878494653673" : 1500.535, - "99.97888418310977" : 1500.647, - "99.97901362211809" : 1500.767, - "99.97915600502724" : 1500.807, - "99.97925092696667" : 1500.839, - "99.97937605134138" : 1500.959, - "99.97950117571608" : 1501.167, - "99.97964787325884" : 1501.255, - "99.97973848056466" : 1501.319, - "99.97985929030577" : 1501.455, - "99.97998441468047" : 1501.583, - "99.98010522442156" : 1501.767, - "99.9802389780635" : 1501.847, - "99.98038136097264" : 1501.887, - "99.98047628291208" : 1501.935, - "99.98059277801957" : 1502.071, - "99.98071358776066" : 1502.207, - "99.98083871213537" : 1502.343, - "99.98096383651007" : 1502.487, - "99.98108033161756" : 1502.599, - "99.98120545599227" : 1502.719, - "99.98132626573337" : 1502.823, - "99.98144707547446" : 1502.975, - "99.9815808291164" : 1503.047, - "99.9817059534911" : 1503.135, - "99.98181813396498" : 1503.239, - "99.98193462907246" : 1503.391, - "99.98206838271439" : 1503.495, - "99.98220645098992" : 1503.623, - "99.98230568756297" : 1503.719, - "99.98242218267046" : 1503.839, - "99.98254730704517" : 1503.895, - "99.98266811678626" : 1504.047, - "99.98279755579458" : 1504.199, - "99.98292268016928" : 1504.279, - "99.98304780454399" : 1504.375, - "99.98315567038425" : 1504.439, - "99.98327648012535" : 1504.615, - "99.98341023376729" : 1504.775, - "99.98353535814199" : 1504.879, - "99.98364753861587" : 1504.927, - "99.98376834835696" : 1504.999, - "99.98389778736528" : 1505.063, - "99.98401428247276" : 1505.191, - "99.98414803611469" : 1505.287, - "99.98426021658857" : 1505.391, - "99.98438534096327" : 1505.527, - "99.98449752143715" : 1505.663, - "99.98462264581185" : 1505.783, - "99.98474345555296" : 1505.895, - "99.98486426529405" : 1505.999, - "99.98499370430237" : 1506.127, - "99.98511019940986" : 1506.303, - "99.98523100915095" : 1506.503, - "99.98535181889204" : 1506.623, - "99.98547694326675" : 1506.775, - "99.98560206764147" : 1506.935, - "99.98571856274894" : 1507.127, - "99.98584800175726" : 1507.279, - "99.98596449686475" : 1507.423, - "99.98608530660584" : 1507.583, - "99.98621043098055" : 1507.719, - "99.98633986998887" : 1507.903, - "99.98645636509636" : 1508.039, - "99.98659011873829" : 1508.111, - "99.98671092847938" : 1508.231, - "99.98683173822047" : 1508.279, - "99.98695686259519" : 1508.367, - "99.98706472843546" : 1508.623, - "99.98718985281016" : 1508.727, - "99.98731497718487" : 1508.895, - "99.98743578692596" : 1509.063, - "99.98755659666706" : 1509.143, - "99.98767309177454" : 1509.263, - "99.98780684541647" : 1509.487, - "99.9878586210198" : 1509.559, - "99.98793628442479" : 1509.695, - "99.9879794307609" : 1509.719, - "99.98804415026505" : 1509.759, - "99.9881045551356" : 1509.943, - "99.98816496000615" : 1509.975, - "99.98822105024308" : 1510.079, - "99.98829871364808" : 1510.111, - "99.9883461746178" : 1510.215, - "99.98840657948834" : 1510.303, - "99.98847129899251" : 1510.399, - "99.98852738922945" : 1510.431, - "99.98860505263443" : 1510.471, - "99.98865251360415" : 1510.503, - "99.98870860384109" : 1510.607, - "99.98877332334524" : 1510.759, - "99.98883804284941" : 1510.879, - "99.98889413308635" : 1510.943, - "99.9889588525905" : 1511.023, - "99.98901925746105" : 1511.095, - "99.98907534769799" : 1511.167, - "99.98913575256853" : 1511.223, - "99.9892004720727" : 1511.327, - "99.98926087694323" : 1511.383, - "99.98932991108101" : 1511.495, - "99.98939031595155" : 1511.543, - "99.98945503545572" : 1511.663, - "99.98950249642543" : 1511.743, - "99.9895672159296" : 1511.839, - "99.98964487933458" : 1512.015, - "99.9896923403043" : 1512.135, - "99.98976137444207" : 1512.167, - "99.98980883541178" : 1512.199, - "99.98986924028233" : 1512.367, - "99.9899339597865" : 1512.423, - "99.98999867929065" : 1512.527, - "99.99005476952759" : 1512.671, - "99.99011517439814" : 1512.855, - "99.99017557926868" : 1512.967, - "99.99023598413923" : 1513.079, - "99.9903007036434" : 1513.183, - "99.99035679388034" : 1513.359, - "99.99042151338449" : 1513.511, - "99.99050349142308" : 1513.543, - "99.9905466377592" : 1513.567, - "99.99061135726336" : 1513.631, - "99.99066313286669" : 1513.679, - "99.99072353773722" : 1513.815, - "99.99078394260778" : 1513.879, - "99.99084866211194" : 1513.911, - "99.99090906698248" : 1514.047, - "99.99096947185303" : 1514.127, - "99.99102987672359" : 1514.223, - "99.99109028159413" : 1514.407, - "99.99115500109829" : 1514.527, - "99.99121109133523" : 1514.591, - "99.99128875474022" : 1514.759, - "99.99133621570994" : 1514.791, - "99.99139662058049" : 1514.943, - "99.99145702545103" : 1515.327, - "99.9915217449552" : 1515.471, - "99.99158214982573" : 1515.575, - "99.99164255469628" : 1515.639, - "99.99170295956684" : 1515.767, - "99.99176336443739" : 1515.887, - "99.99184102784237" : 1516.023, - "99.99188417417848" : 1516.183, - "99.99194457904903" : 1516.295, - "99.99200929855319" : 1516.471, - "99.99206970342374" : 1516.607, - "99.99214736682873" : 1516.703, - "99.99219051316483" : 1516.847, - "99.99225091803538" : 1517.039, - "99.99231132290593" : 1517.183, - "99.99237172777647" : 1517.391, - "99.99243644728064" : 1517.687, - "99.99249685215118" : 1517.783, - "99.99255725702173" : 1517.951, - "99.99263492042672" : 1518.151, - "99.99267806676283" : 1518.359, - "99.99274278626699" : 1518.543, - "99.99280319113754" : 1518.743, - "99.99286791064169" : 1519.023, - "99.99292400087863" : 1519.263, - "99.9929887203828" : 1519.655, - "99.99304912525334" : 1519.791, - "99.9931138447575" : 1519.839, - "99.99316562036083" : 1520.039, - "99.99322602523138" : 1520.151, - "99.99329074473553" : 1520.551, - "99.99335114960608" : 1520.695, - "99.99342018374385" : 1520.871, - "99.99347195934718" : 1521.071, - "99.99353667885134" : 1521.375, - "99.99359276908827" : 1521.615, - "99.99365317395882" : 1521.815, - "99.99371789346299" : 1521.991, - "99.99378692760075" : 1522.223, - "99.99384301783769" : 1522.423, - "99.99390342270824" : 1522.711, - "99.9939293105099" : 1522.759, - "99.99395951294517" : 1522.871, - "99.99398971538045" : 1523.015, - "99.99401991781572" : 1523.207, - "99.99405012025099" : 1523.423, - "99.99408032268627" : 1523.615, - "99.99411483975516" : 1523.703, - "99.99414072755683" : 1523.823, - "99.99417524462571" : 1524.023, - "99.99420544706098" : 1524.175, - "99.99423564949625" : 1524.327, - "99.99427016656513" : 1524.463, - "99.9942960543668" : 1524.551, - "99.9943348860693" : 1524.735, - "99.99435645923735" : 1524.879, - "99.99438666167262" : 1525.015, - "99.99441686410789" : 1525.143, - "99.99444706654317" : 1525.287, - "99.99447726897844" : 1525.575, - "99.99450747141371" : 1525.679, - "99.994537673849" : 1525.863, - "99.99456787628426" : 1525.943, - "99.99460239335315" : 1526.103, - "99.99463691042203" : 1526.239, - "99.9946627982237" : 1526.415, - "99.99469300065897" : 1526.527, - "99.99473614699508" : 1526.815, - "99.99475772016314" : 1526.943, - "99.99478360796479" : 1527.095, - "99.99481381040007" : 1527.191, - "99.99484401283534" : 1527.359, - "99.99487852990423" : 1527.703, - "99.9949044177059" : 1527.903, - "99.99493462014117" : 1528.191, - "99.99496482257643" : 1528.431, - "99.99499933964533" : 1528.807, - "99.99503817134782" : 1528.951, - "99.99505974451587" : 1529.047, - "99.99508994695115" : 1529.495, - "99.99512014938642" : 1529.711, - "99.9951546664553" : 1529.927, - "99.99518918352419" : 1529.967, - "99.99521075669225" : 1530.191, - "99.99524095912751" : 1530.343, - "99.9952711615628" : 1530.951, - "99.99530567863168" : 1531.063, - "99.99533156643334" : 1531.183, - "99.99536176886862" : 1531.279, - "99.99539197130389" : 1531.527, - "99.99542648837277" : 1531.967, - "99.99545669080806" : 1532.007, - "99.99548689324332" : 1532.175, - "99.9955170956786" : 1532.535, - "99.99554729811388" : 1532.719, - "99.99559044444997" : 1533.039, - "99.99560770298442" : 1533.127, - "99.9956379054197" : 1533.327, - "99.99566810785497" : 1533.591, - "99.99570693955746" : 1533.791, - "99.99572851272552" : 1533.983, - "99.99575871516079" : 1534.015, - "99.99578891759606" : 1534.207, - "99.99582343466494" : 1534.455, - "99.99585363710023" : 1534.767, - "99.99588815416911" : 1534.895, - "99.99591835660438" : 1534.975, - "99.99594855903966" : 1535.095, - "99.99597444684132" : 1535.119, - "99.9960046492766" : 1535.199, - "99.99603485171187" : 1535.415, - "99.99606505414714" : 1535.495, - "99.99609525658242" : 1535.647, - "99.99612545901769" : 1535.711, - "99.99615566145296" : 1535.975, - "99.99619017852184" : 1536.127, - "99.99621606632351" : 1536.159, - "99.99625489802601" : 1536.431, - "99.99628078582766" : 1536.655, - "99.99631530289656" : 1536.815, - "99.99634119069822" : 1537.007, - "99.99637139313349" : 1537.255, - "99.99640159556877" : 1537.311, - "99.99643179800404" : 1537.647, - "99.99646631507292" : 1537.807, - "99.99649220287459" : 1538.015, - "99.99652671994347" : 1538.039, - "99.99655260774514" : 1538.199, - "99.99658281018041" : 1538.319, - "99.99661301261568" : 1538.735, - "99.99664752968457" : 1539.103, - "99.99667773211985" : 1539.471, - "99.99670793455512" : 1539.735, - "99.99673813699039" : 1540.399, - "99.99676833942567" : 1540.647, - "99.99680717112817" : 1541.247, - "99.99683305892982" : 1541.607, - "99.9968632613651" : 1541.791, - "99.99688914916676" : 1542.247, - "99.99691935160205" : 1542.375, - "99.99694955403731" : 1542.399, - "99.99697112720537" : 1542.983, - "99.9969840711062" : 1543.103, - "99.99700132964064" : 1543.231, - "99.99700995890787" : 1543.247, - "99.99702721744231" : 1543.567, - "99.99704016134314" : 1543.583, - "99.99705741987758" : 1543.599, - "99.9970703637784" : 1543.831, - "99.99709625158007" : 1543.863, - "99.99711351011452" : 1544.223, - "99.99711782474813" : 1544.231, - "99.99713939791617" : 1544.335, - "99.9971480271834" : 1544.591, - "99.99716528571784" : 1544.623, - "99.99719117351951" : 1544.647, - "99.99719548815311" : 1544.655, - "99.99720843205395" : 1544.919, - "99.9972256905884" : 1545.383, - "99.99723863448922" : 1545.439, - "99.99725589302366" : 1545.759, - "99.9972731515581" : 1546.055, - "99.99728609545893" : 1546.903, - "99.99730335399339" : 1548.303, - "99.99731629789422" : 1548.839, - "99.99733355642866" : 1550.247, - "99.99734650032948" : 1550.687, - "99.99736375886393" : 1553.199, - "99.99738533203198" : 1553.695, - "99.99739396129921" : 1554.327, - "99.99740690520004" : 1554.351, - "99.99742416373448" : 1555.399, - "99.9974371076353" : 1555.583, - "99.99745436616975" : 1555.807, - "99.99746731007059" : 1556.543, - "99.99749319787225" : 1556.559, - "99.99750614177307" : 1556.575, - "99.9975147710403" : 1556.791, - "99.99753202957474" : 1556.975, - "99.99754497347557" : 1557.327, - "99.99756223201001" : 1557.407, - "99.99757517591085" : 1557.439, - "99.9975967490789" : 1557.823, - "99.99760537834612" : 1557.847, - "99.99762263688056" : 1558.143, - "99.99763558078139" : 1558.159, - "99.99765283931583" : 1559.103, - "99.99766578321668" : 1559.375, - "99.99768735638473" : 1559.719, - "99.99770461491917" : 1559.855, - "99.99771755882" : 1559.967, - "99.99773050272083" : 1560.183, - "99.99774344662166" : 1560.319, - "99.99776933442332" : 1560.591, - "99.99777364905694" : 1560.815, - "99.997795222225" : 1561.063, - "99.99780385149221" : 1561.175, - "99.99782111002665" : 1561.351, - "99.99783405392748" : 1561.567, - "99.99785562709553" : 1562.487, - "99.99786425636276" : 1563.471, - "99.99788582953082" : 1563.735, - "99.99789445879803" : 1564.895, - "99.99791171733247" : 1589.655, - "99.99792897586691" : 1591.807, - "99.99794623440135" : 1591.815, - "99.9979591783022" : 1592.831, - "99.99797643683664" : 1593.487, - "99.99798938073747" : 1594.303, - "99.99800232463829" : 1598.919, - "99.99801958317273" : 1601.295, - "99.99804115634079" : 1601.311, - "99.99804978560802" : 1601.375, - "99.99806272950885" : 1601.447, - "99.99807998804329" : 1601.503, - "99.99809293194411" : 1601.991, - "99.99811019047856" : 1602.631, - "99.998127449013" : 1602.975, - "99.99814039291384" : 1603.559, - "99.9981662807155" : 1603.863, - "99.99817059534911" : 1604.175, - "99.99818785388355" : 1604.367, - "99.99820079778438" : 1604.807, - "99.99821805631882" : 1605.327, - "99.99823100021966" : 1605.967, - "99.9982482587541" : 1606.559, - "99.99826120265493" : 1606.863, - "99.99827846118937" : 1608.663, - "99.9982914050902" : 1608.671, - "99.99830866362466" : 1609.559, - "99.9983259221591" : 1609.575, - "99.99833886605992" : 1609.591, - "99.99835612459437" : 1610.311, - "99.99838632702964" : 1610.687, - "99.99840358556408" : 1610.703, - "99.99842084409852" : 1611.095, - "99.99843378799936" : 1611.455, - "99.9984510465338" : 1611.599, - "99.99845967580102" : 1612.215, - "99.99847693433546" : 1612.223, - "99.99848556360269" : 1612.239, - "99.99850282213713" : 1612.455, - "99.99851576603795" : 1613.263, - "99.99852870993878" : 1613.271, - "99.99855028310684" : 1614.143, - "99.99855459774045" : 1614.431, - "99.99855891237407" : 1615.063, - "99.99857185627489" : 1615.071, - "99.9985761709085" : 1615.079, - "99.99858480017572" : 1616.343, - "99.99859774407656" : 1616.351, - "99.99861068797739" : 1616.783, - "99.998615002611" : 1616.791, - "99.99863226114545" : 1616.911, - "99.99864089041266" : 1617.071, - "99.9986538343135" : 1617.079, - "99.9986581489471" : 1617.295, - "99.99867109284794" : 1617.375, - "99.99867540748154" : 1617.383, - "99.99868835138238" : 1617.775, - "99.9986969806496" : 1617.847, - "99.99870560991683" : 1617.855, - "99.99871423918404" : 1618.239, - "99.99871855381765" : 1618.263, - "99.99872718308488" : 1618.271, - "99.9987358123521" : 1618.383, - "99.99874444161932" : 1618.391, - "99.99875307088654" : 1618.519, - "99.99876601478738" : 1618.735, - "99.99877464405459" : 1618.855, - "99.99878758795542" : 1618.871, - "99.99879621722265" : 1618.903, - "99.99880484648986" : 1619.167, - "99.9988177903907" : 1619.175, - "99.99882641965792" : 1619.303, - "99.99883504892514" : 1619.479, - "99.99884799282597" : 1619.487, - "99.9988566220932" : 1619.679, - "99.99886525136041" : 1619.687, - "99.99887388062764" : 1619.695, - "99.99888250989486" : 1619.911, - "99.99888682452847" : 1619.919, - "99.99889545379568" : 1619.991, - "99.99890408306291" : 1620.263, - "99.99891271233012" : 1620.423, - "99.99892134159735" : 1620.591, - "99.99893428549818" : 1620.599, - "99.99894291476541" : 1620.615, - "99.99894722939902" : 1620.623, - "99.99895585866624" : 1620.727, - "99.99896448793346" : 1620.879, - "99.99897311720068" : 1621.055, - "99.9989860611015" : 1621.095, - "99.99899900500235" : 1621.191, - "99.99900331963596" : 1621.215, - "99.99901194890317" : 1621.463, - "99.99901626353679" : 1621.479, - "99.999024892804" : 1621.591, - "99.99904215133844" : 1621.663, - "99.99905509523929" : 1621.671, - "99.99907235377373" : 1621.871, - "99.99908098304094" : 1622.095, - "99.99908529767455" : 1622.111, - "99.99909392694178" : 1622.327, - "99.999102556209" : 1622.415, - "99.99911118547622" : 1622.423, - "99.99911550010982" : 1622.655, - "99.99912412937705" : 1622.863, - "99.99913275864427" : 1622.959, - "99.9991457025451" : 1623.039, - "99.99915864644593" : 1623.047, - "99.99916296107955" : 1623.055, - "99.99917159034676" : 1623.119, - "99.99918021961399" : 1623.151, - "99.9991845342476" : 1623.215, - "99.99919747814843" : 1623.311, - "99.99920179278205" : 1623.391, - "99.99921473668287" : 1623.503, - "99.99922336595009" : 1623.791, - "99.99924062448454" : 1623.799, - "99.99924493911814" : 1623.807, - "99.99925788301898" : 1623.815, - "99.99927082691981" : 1623.967, - "99.99927514155343" : 1624.135, - "99.99928808545425" : 1624.327, - "99.99929240008787" : 1624.335, - "99.99930102935508" : 1624.391, - "99.9993053439887" : 1624.399, - "99.99930965862231" : 1624.415, - "99.99931397325592" : 1624.463, - "99.99931828788952" : 1624.783, - "99.99932260252314" : 1624.943, - "99.99932691715675" : 1625.079, - "99.99934417569119" : 1625.087, - "99.9993484903248" : 1625.095, - "99.9993528049584" : 1625.103, - "99.99935711959202" : 1625.111, - "99.99936574885925" : 1625.231, - "99.99937006349285" : 1625.679, - "99.99937437812646" : 1626.231, - "99.9993873220273" : 1626.295, - "99.9993916366609" : 1626.599, - "99.99940026592813" : 1626.607, - "99.99940889519534" : 1626.847, - "99.99941320982896" : 1627.135, - "99.99942615372979" : 1627.455, - "99.99943478299701" : 1627.791, - "99.99944772689784" : 1627.799, - "99.99945204153146" : 1627.807, - "99.99945635616507" : 1628.199, - "99.99946067079868" : 1628.207, - "99.99946498543228" : 1628.623, - "99.9994693000659" : 1628.639, - "99.99947792933312" : 1628.647, - "99.99948224396672" : 1628.655, - "99.99948655860034" : 1629.079, - "99.99949087323395" : 1629.087, - "99.99949950250117" : 1629.095, - "99.99950381713478" : 1629.103, - "99.9995081317684" : 1629.687, - "99.99951676103561" : 1631.839, - "99.99952107566922" : 1634.543, - "99.99952539030284" : 1635.047, - "99.99953401957005" : 1635.055, - "99.9995555927381" : 1635.871, - "99.99955990737172" : 1635.887, - "99.99956422200533" : 1636.407, - "99.99956853663895" : 1636.439, - "99.99957285127255" : 1636.887, - "99.99957716590616" : 1637.295, - "99.99958579517339" : 1637.303, - "99.99959010980699" : 1637.311, - "99.9995944244406" : 1637.319, - "99.99959873907422" : 1637.447, - "99.99960305370783" : 1637.455, - "99.99961168297504" : 1637.799, - "99.99961599760866" : 1637.807, - "99.99962462687589" : 1638.047, - "99.99962894150949" : 1638.063, - "99.99963757077671" : 1638.079, - "99.99964620004393" : 1638.087, - "99.99965914394477" : 1638.239, - "99.99966777321198" : 1638.519, - "99.9996720878456" : 1638.551, - "99.99968934638004" : 1638.695, - "99.99969366101365" : 1638.703, - "99.99970660491448" : 1638.791, - "99.9997152341817" : 1638.799, - "99.9997195488153" : 1638.807, - "99.99972386344892" : 1638.839, - "99.99973249271615" : 1639.175, - "99.99974112198336" : 1639.183, - "99.99975406588419" : 1639.191, - "99.9997583805178" : 1639.519, - "99.99976269515142" : 1639.527, - "99.99976700978503" : 1639.543, - "99.99977132441865" : 1639.639, - "99.99977563905225" : 1639.839, - "99.99977995368586" : 1639.855, - "99.99978426831947" : 1639.863, - "99.99978858295309" : 1639.871, - "99.99979289758669" : 1639.887, - "99.9997972122203" : 1639.911, - "99.99980584148753" : 1640.119, - "99.99981015612113" : 1640.191, - "99.99981447075474" : 1640.487, - "99.99982310002197" : 1640.495, - "99.99983172928918" : 1640.503, - "99.9998360439228" : 1640.559, - "99.99984035855641" : 1640.943, - "99.99985330245724" : 1640.951, - "99.99985761709085" : 1640.967, - "99.99986624635807" : 1643.911, - "99.99987056099168" : 1643.919, - "99.99988350489251" : 1644.279, - "99.99989213415974" : 1644.287, - "99.99989644879335" : 1644.303, - "99.99990076342695" : 1645.439, - "99.99990507806056" : 1645.447, - "99.99991370732779" : 1645.455, - "99.99992665122862" : 1645.463, - "99.99993528049585" : 1646.383, - "99.99993959512945" : 1646.391, - "99.99994390976306" : 1646.399, - "99.99994822439668" : 1646.407, - "99.9999611682975" : 1647.591, - "99.99996979756473" : 1648.391, - "99.99998274146556" : 1648.399, - "99.99999137073277" : 1649.495, - "100.0" : 1650.487 - }, - "endToEndLatencyAvg" : [ 1188.5883396881418, 1194.6058477675049, 1189.0546891004476, 1181.7552756878474, 1197.3203134901821, 1186.0978481625407, 1186.337564815102, 1190.2208971727302, 1183.2124476086105, 1178.9820411335045, 1187.1035993404084, 1183.0913415130183, 1190.4412722124387, 1200.3988212004572, 1187.8690732278124, 1183.7253111630337, 1211.8952429405924, 1237.2087842180285, 1238.6214016398337, 1234.0857767409366, 1229.132701841433, 1232.7870080973116, 1225.410629058533, 1226.9392412322688, 1234.0571072430237, 1240.2302173488947, 1249.703422332389, 1261.204180149996, 1234.8551215107966, 1235.1610475895593, 1239.5436973272647, 1239.4063689430477, 1231.2811921711204, 1225.0768950170288, 1228.0200588038826, 1230.216409609402, 1231.1504982578845, 1239.4018036149603, 1240.0321300488515, 1242.563322887103, 1236.340011358207, 1229.7011093760877, 1244.632279179385, 1232.0437835189564, 1243.7382452289653, 1235.943392761598, 1239.9693913731771, 1247.4807544310834, 1242.1669900865706, 1240.1962765143624, 1240.1473720965932, 1235.8838602829612, 1231.043073762379, 1235.815007508768, 1239.7968391550262, 1244.428972306527, 1262.3434966357104, 1293.3772870486246, 1299.3659686093777, 1291.5035148478405 ], - "endToEndLatency50pct" : [ 1188.007, 1196.007, 1194.007, 1183.007, 1199.007, 1188.007, 1185.007, 1189.007, 1179.007, 1179.007, 1186.007, 1179.007, 1189.007, 1204.007, 1192.007, 1185.007, 1215.007, 1239.007, 1238.007, 1234.007, 1228.007, 1233.007, 1223.007, 1224.007, 1238.007, 1245.007, 1253.007, 1263.007, 1232.007, 1237.007, 1239.007, 1238.007, 1228.007, 1220.007, 1229.007, 1233.007, 1235.007, 1243.007, 1242.007, 1244.007, 1237.007, 1228.007, 1241.007, 1230.007, 1240.007, 1237.007, 1242.007, 1249.007, 1246.007, 1240.007, 1241.007, 1237.007, 1230.007, 1233.007, 1234.007, 1242.007, 1265.007, 1299.007, 1300.007, 1294.007 ], - "endToEndLatency75pct" : [ 1439.007, 1447.007, 1437.007, 1428.007, 1453.007, 1440.007, 1440.007, 1441.007, 1433.007, 1430.007, 1438.007, 1435.007, 1438.007, 1449.007, 1431.007, 1437.007, 1465.007, 1491.007, 1489.007, 1486.007, 1481.007, 1481.007, 1474.007, 1476.007, 1479.007, 1487.007, 1499.007, 1515.007, 1489.007, 1486.007, 1491.007, 1489.007, 1482.007, 1473.007, 1478.007, 1475.007, 1478.007, 1496.007, 1496.007, 1493.007, 1489.007, 1482.007, 1495.007, 1479.007, 1490.007, 1484.007, 1485.007, 1493.007, 1494.007, 1494.007, 1491.007, 1487.007, 1482.007, 1482.007, 1487.007, 1493.007, 1508.007, 1542.007, 1545.007, 1546.007 ], - "endToEndLatency95pct" : [ 1657.007, 1664.007, 1652.007, 1643.007, 1675.007, 1653.007, 1657.007, 1662.007, 1657.007, 1646.007, 1658.007, 1650.007, 1658.007, 1673.007, 1655.007, 1641.007, 1700.007, 1717.007, 1721.007, 1733.007, 1724.007, 1727.007, 1705.007, 1702.007, 1719.007, 1728.007, 1733.007, 1747.007, 1747.007, 1730.007, 1736.007, 1732.007, 1721.007, 1717.007, 1720.007, 1716.007, 1709.007, 1723.007, 1733.007, 1738.007, 1745.007, 1721.007, 1745.007, 1736.007, 1734.007, 1727.007, 1726.007, 1733.007, 1732.007, 1747.007, 1734.007, 1732.007, 1725.007, 1732.007, 1743.007, 1728.007, 1776.007, 1873.007, 1905.007, 1896.007 ], - "endToEndLatency99pct" : [ 1746.007, 1759.007, 1739.007, 1741.007, 1755.007, 1739.007, 1730.007, 1748.007, 1721.007, 1728.007, 1733.007, 1720.007, 1740.007, 1754.007, 1731.007, 1725.007, 1964.007, 1950.007, 1901.007, 1964.007, 1910.007, 1933.007, 1889.007, 1925.007, 1963.007, 1955.007, 1976.007, 1965.007, 2002.007, 1946.007, 1982.007, 1998.007, 1979.007, 1974.007, 1945.007, 1978.007, 1919.007, 1961.007, 1963.007, 1941.007, 2005.007, 1915.007, 1985.007, 1990.007, 2003.007, 1977.007, 1956.007, 1983.007, 2006.007, 2023.007, 1985.007, 1996.007, 1962.007, 1988.007, 2017.007, 1931.007, 2029.007, 2080.007, 2080.007, 2076.007 ], - "endToEndLatency999pct" : [ 1803.007, 1822.007, 1800.007, 1835.007, 1847.007, 1773.007, 1794.007, 1799.007, 1763.007, 1852.007, 1797.007, 1785.007, 1881.007, 1841.007, 1805.007, 1782.007, 2124.015, 2089.007, 2040.007, 2122.015, 2045.007, 2042.007, 2046.007, 2072.007, 2109.007, 2066.007, 2140.015, 2102.015, 2188.015, 2111.007, 2105.007, 2143.007, 2066.007, 2109.007, 2065.007, 2115.007, 2052.007, 2067.007, 2126.015, 2144.015, 2141.007, 2075.007, 2167.007, 2119.007, 2156.015, 2086.007, 2116.015, 2122.015, 2174.015, 2177.007, 2063.007, 2086.007, 2074.007, 2103.007, 2198.015, 2095.007, 2223.007, 2239.007, 2200.015, 2274.015 ], - "endToEndLatency9999pct" : [ 1896.007, 1874.007, 1826.007, 1858.007, 1919.007, 1780.007, 1839.007, 1819.007, 1775.007, 1875.007, 1895.007, 1843.007, 1917.007, 1953.007, 1856.007, 1798.007, 2188.015, 2144.015, 2059.007, 2161.007, 2055.007, 2052.007, 2077.007, 2083.007, 2141.007, 2224.015, 2174.015, 2152.015, 2203.007, 2133.007, 2155.007, 2230.015, 2102.015, 2184.015, 2110.015, 2144.015, 2092.007, 2195.007, 2162.015, 2170.015, 2196.015, 2092.007, 2181.007, 2145.007, 2181.007, 2122.015, 2150.015, 2142.015, 2211.007, 2230.015, 2168.015, 2107.007, 2119.007, 2117.007, 2214.015, 2108.015, 2241.007, 2283.007, 2216.015, 2297.007 ], - "endToEndLatencyMax" : [ 1900.007, 1876.007, 1829.007, 1862.007, 1921.007, 1782.007, 1842.007, 1896.007, 1826.007, 1879.007, 1897.007, 1846.007, 1922.007, 1956.007, 1859.007, 1802.007, 2191.007, 2172.015, 2060.007, 2166.015, 2059.007, 2054.007, 2079.007, 2086.007, 2143.007, 2227.007, 2178.015, 2155.007, 2207.007, 2135.007, 2159.007, 2234.015, 2103.007, 2186.015, 2112.015, 2147.007, 2099.007, 2200.015, 2165.007, 2256.015, 2232.015, 2094.007, 2183.007, 2175.007, 2184.015, 2125.007, 2152.015, 2146.015, 2214.015, 2233.007, 2172.015, 2110.015, 2122.015, 2120.015, 2218.015, 2113.007, 2244.015, 2286.015, 2232.015, 2301.007 ], - "aggregatedEndToEndLatencyQuantiles" : { - "4.314694858307578E-6" : 426.001, - "0.5175821658128604" : 619.003, - "1.0033003100971194" : 640.003, - "1.5002452904026948" : 657.003, - "2.013068347786842" : 672.003, - "2.5321045657669523" : 686.003, - "3.009698139633018" : 698.003, - "3.5033078608131216" : 709.003, - "4.0527367893751505" : 720.003, - "4.552197236783119" : 729.003, - "5.038480606093816" : 737.003, - "5.504502168349901" : 744.003, - "6.065999298430616" : 752.003, - "6.517225772017564" : 758.003, - "7.0695369167449424" : 765.003, - "7.55010763006324" : 771.003, - "8.032607011983202" : 777.003, - "8.535005766589679" : 783.003, - "9.049494296189133" : 789.003, - "9.563827496773687" : 795.003, - "10.000401266621823" : 800.003, - "10.522578582458781" : 806.003, - "11.042059214009296" : 812.003, - "11.568905029682943" : 818.003, - "12.013292711919474" : 823.003, - "12.54954887707909" : 829.003, - "13.086879401258424" : 835.003, - "13.528440958362763" : 840.003, - "14.05918725818832" : 846.003, - "14.586373934755773" : 852.003, - "15.029846901682342" : 857.003, - "15.569442640662288" : 863.003, - "16.018969124475063" : 868.003, - "16.55060425144143" : 874.003, - "17.08478073367934" : 880.003, - "17.526212849937934" : 885.003, - "18.065623057038973" : 891.003, - "18.515973647569684" : 896.003, - "19.059185100840892" : 902.003, - "19.515136165297687" : 907.003, - "20.061398107833718" : 913.003, - "20.509371301497502" : 918.003, - "21.05283300707049" : 924.003, - "21.506264289730034" : 929.003, - "22.051663293294403" : 935.003, - "22.502760326035602" : 940.003, - "23.05463137188743" : 946.003, - "23.52253414110174" : 951.003, - "24.08240463122087" : 957.003, - "24.550065777523116" : 962.003, - "25.006482829024606" : 967.003, - "25.547869166370752" : 973.003, - "26.002159073307098" : 978.003, - "26.549888012094954" : 984.003, - "27.005636285893406" : 989.003, - "27.55314517524349" : 995.003, - "28.01305712958021" : 1000.003, - "28.567525621736742" : 1006.003, - "29.02417998145544" : 1011.003, - "29.571106386999652" : 1017.003, - "30.032925436463746" : 1022.003, - "30.501678200565138" : 1027.003, - "31.0568888202373" : 1033.003, - "31.5301633845502" : 1038.003, - "32.00744198569161" : 1043.003, - "32.578504794273194" : 1049.007, - "33.046567207197256" : 1054.007, - "33.52249962354287" : 1059.007, - "34.09452892377272" : 1065.007, - "34.57081514509672" : 1070.007, - "35.054086857396314" : 1075.007, - "35.553806186495784" : 1080.007, - "36.04598342898293" : 1085.007, - "36.53093355758241" : 1090.007, - "37.009994127700296" : 1095.007, - "37.57998689195702" : 1101.007, - "38.0598241071494" : 1106.007, - "38.55228180480234" : 1111.007, - "39.04177530708762" : 1116.007, - "39.53346498905578" : 1121.007, - "40.0263584708894" : 1126.007, - "40.516421512895974" : 1131.007, - "41.000068603648245" : 1136.007, - "41.585822948222365" : 1142.007, - "42.08238392068555" : 1147.007, - "42.57337893678152" : 1152.007, - "43.06601353692365" : 1157.007, - "43.56029203580679" : 1162.007, - "44.05255988688596" : 1167.007, - "44.55140333292919" : 1172.007, - "45.044676507910346" : 1177.007, - "45.545975015327954" : 1182.007, - "46.044684705830576" : 1187.007, - "46.54472332234956" : 1192.007, - "47.04033937663878" : 1197.007, - "47.54203915067821" : 1202.007, - "48.03513973786503" : 1207.007, - "48.53183878056368" : 1212.007, - "49.029547461859174" : 1217.007, - "49.527627206912484" : 1222.007, - "50.030414284056214" : 1227.007, - "50.33050562614636" : 1230.007, - "50.528817631223895" : 1232.007, - "50.82607421879214" : 1235.007, - "51.02578418500376" : 1237.007, - "51.3275841462578" : 1240.007, - "51.532359564233076" : 1242.007, - "51.829404731753264" : 1245.007, - "52.029114697964886" : 1247.007, - "52.32984892958893" : 1250.007, - "52.53175076078857" : 1252.007, - "52.830422568270336" : 1255.007, - "53.02900208442909" : 1257.007, - "53.32669877087287" : 1260.007, - "53.52599884107296" : 1262.007, - "53.8306551303232" : 1265.007, - "54.03020976751993" : 1267.007, - "54.3334033752132" : 1270.007, - "54.53929629915678" : 1272.007, - "54.84005641894997" : 1275.007, - "55.040284148544586" : 1277.007, - "55.337471700995096" : 1280.007, - "55.5368321769232" : 1282.007, - "55.840582380253196" : 1285.007, - "56.04457683845912" : 1287.007, - "56.3473044591077" : 1290.007, - "56.5464060533443" : 1292.007, - "56.84043956385339" : 1295.007, - "57.038574666441725" : 1297.007, - "57.32950159665283" : 1300.007, - "57.52412453762651" : 1302.007, - "57.8142877668477" : 1305.007, - "58.01025257792231" : 1307.007, - "58.30889418254007" : 1310.007, - "58.51087799294202" : 1312.007, - "58.812319834522825" : 1315.007, - "59.01612876084984" : 1317.007, - "59.322299507995346" : 1320.007, - "59.52597899347661" : 1322.007, - "59.82651043444231" : 1325.007, - "60.02872723836661" : 1327.007, - "60.33303835202819" : 1330.007, - "60.53794752554407" : 1332.007, - "60.84270305277605" : 1335.007, - "61.04280134152493" : 1337.007, - "61.345196730669414" : 1340.007, - "61.54415162528083" : 1342.007, - "61.84391073586689" : 1345.007, - "62.039746106095755" : 1347.007, - "62.34210266298652" : 1350.007, - "62.54267125347495" : 1352.007, - "62.839996876160924" : 1355.007, - "63.040858865899715" : 1357.007, - "63.35030446644268" : 1360.007, - "63.5536258322507" : 1362.007, - "63.756256846881406" : 1364.007, - "64.06190983064391" : 1367.007, - "64.26474795062781" : 1369.007, - "64.56171545364055" : 1372.007, - "64.76051501923706" : 1374.007, - "65.05494979636798" : 1377.007, - "65.35097669590161" : 1380.007, - "65.54777424308386" : 1382.007, - "65.84245064312684" : 1385.007, - "66.04361466150571" : 1387.007, - "66.34612223271652" : 1390.007, - "66.54745020950001" : 1392.007, - "66.75021066497645" : 1394.007, - "67.05703293104557" : 1397.007, - "67.26228296545526" : 1399.007, - "67.56306034402787" : 1402.007, - "67.76389213090266" : 1404.007, - "68.06833700010485" : 1407.007, - "68.27242638159765" : 1409.007, - "68.57590907384643" : 1412.007, - "68.77268073285956" : 1414.007, - "69.07201268865464" : 1417.007, - "69.26648030061342" : 1419.007, - "69.56245110911388" : 1422.007, - "69.75700070027497" : 1424.007, - "70.05260475971248" : 1427.007, - "70.3483210012163" : 1430.007, - "70.54519189821117" : 1432.007, - "70.84439872785536" : 1435.007, - "71.04795740188061" : 1437.007, - "71.25285363131191" : 1439.007, - "71.55319091100898" : 1442.007, - "71.75299580050749" : 1444.007, - "72.05364805292922" : 1447.007, - "72.25079077570015" : 1449.007, - "72.55755695073611" : 1452.007, - "72.76111562476135" : 1454.007, - "73.06405898015284" : 1457.007, - "73.26685826788301" : 1459.007, - "73.56729047086696" : 1462.007, - "73.7672161718215" : 1464.007, - "74.06772172461805" : 1467.007, - "74.26523982584166" : 1469.007, - "74.56379945125711" : 1472.007, - "74.76532590400409" : 1474.007, - "75.06612917074585" : 1477.007, - "75.16557857253498" : 1478.007, - "75.26521782089787" : 1479.007, - "75.46529453617246" : 1481.007, - "75.56391983124365" : 1482.007, - "75.66002534451759" : 1483.007, - "75.7579559737166" : 1484.007, - "75.95629818165814" : 1486.007, - "76.05460418930983" : 1487.007, - "76.15580104251657" : 1488.007, - "76.25451694617979" : 1489.007, - "76.4544038148806" : 1491.007, - "76.55377123746743" : 1492.007, - "76.65576630922297" : 1493.007, - "76.75405074340036" : 1494.007, - "76.95428278768983" : 1496.007, - "77.05660146155974" : 1497.007, - "77.15796658786596" : 1498.007, - "77.25927562313902" : 1499.007, - "77.45977517850972" : 1501.007, - "77.56044995363861" : 1502.007, - "77.66123259613896" : 1503.007, - "77.75964215646724" : 1504.007, - "77.96385666411093" : 1506.007, - "78.06497585281022" : 1507.007, - "78.16477043018803" : 1508.007, - "78.26403430009825" : 1509.007, - "78.46434400889518" : 1511.007, - "78.565812687878" : 1512.007, - "78.66743669587571" : 1513.007, - "78.7668386360214" : 1514.007, - "78.96805443073858" : 1516.007, - "79.06816829553588" : 1517.007, - "79.16833825136635" : 1518.007, - "79.26881023583691" : 1519.007, - "79.46512022250019" : 1521.007, - "79.56356861508219" : 1522.007, - "79.66082183718844" : 1523.007, - "79.75876109577716" : 1524.007, - "79.95539468455482" : 1526.007, - "80.0532864815001" : 1527.007, - "80.15447039062227" : 1528.007, - "80.2528756362557" : 1529.007, - "80.44973790386084" : 1531.007, - "80.55149566739915" : 1532.007, - "80.64942629659816" : 1533.007, - "80.75173634107836" : 1534.007, - "80.95172676245576" : 1536.007, - "81.0512797169215" : 1537.007, - "81.15121667922962" : 1538.007, - "81.25359144413268" : 1539.007, - "81.45734427942654" : 1541.007, - "81.55842463587211" : 1542.007, - "81.65993214710866" : 1543.007, - "81.76074067777816" : 1544.007, - "81.96554629861744" : 1546.007, - "82.06800735741767" : 1547.007, - "82.1714737401199" : 1548.007, - "82.27348175595999" : 1549.007, - "82.37505830231427" : 1550.007, - "82.5798596084587" : 1552.007, - "82.68053438358758" : 1553.007, - "82.78062236021576" : 1554.007, - "82.88155601703615" : 1555.007, - "83.07710661740435" : 1557.007, - "83.17417862232656" : 1558.007, - "83.27295061702294" : 1559.007, - "83.46998547242241" : 1561.007, - "83.56581484522542" : 1562.007, - "83.66027645975835" : 1563.007, - "83.75889312543983" : 1564.007, - "83.95016786320346" : 1566.007, - "84.04651931408434" : 1567.007, - "84.14064869711316" : 1568.007, - "84.33330845192631" : 1570.007, - "84.42811524204791" : 1571.007, - "84.52360375395712" : 1572.007, - "84.71436072833775" : 1574.007, - "84.81159237696971" : 1575.007, - "84.90850473818216" : 1576.007, - "85.00420467013942" : 1577.007, - "85.1918636936118" : 1579.007, - "85.28793900402172" : 1580.007, - "85.38147727385498" : 1581.007, - "85.57006827141674" : 1583.007, - "85.66278243453206" : 1584.007, - "85.75623009577328" : 1585.007, - "85.94378556656905" : 1587.007, - "86.03615023940084" : 1588.007, - "86.1296151594215" : 1589.007, - "86.30943869703118" : 1591.007, - "86.39889526552848" : 1592.007, - "86.58235177620885" : 1594.007, - "86.67407787420161" : 1595.007, - "86.7644362139243" : 1596.007, - "86.94342701542632" : 1598.007, - "87.03280591941618" : 1599.007, - "87.20996297560342" : 1601.007, - "87.29707235009779" : 1602.007, - "87.38272335773006" : 1603.007, - "87.55624744084662" : 1605.007, - "87.6442240690075" : 1606.007, - "87.72933573978248" : 1607.007, - "87.816440799582" : 1608.007, - "87.90311007520081" : 1609.007, - "87.99086233922908" : 1610.007, - "88.07617248596753" : 1611.007, - "88.16062400842918" : 1612.007, - "88.24607222540311" : 1613.007, - "88.33065750340538" : 1614.007, - "88.41386207905298" : 1615.007, - "88.49496539830459" : 1616.007, - "88.58031006260191" : 1617.007, - "88.66230652368918" : 1618.007, - "88.74337532538192" : 1619.007, - "88.82595427027508" : 1620.007, - "88.90759692638397" : 1621.007, - "88.98740583717809" : 1622.007, - "89.06429801424798" : 1623.007, - "89.14396454011178" : 1624.007, - "89.22010164558147" : 1625.007, - "89.29764102688011" : 1626.007, - "89.37285478765014" : 1627.007, - "89.45122690505643" : 1628.007, - "89.52727771662896" : 1629.007, - "89.60199528749028" : 1630.007, - "89.67795549047078" : 1631.007, - "89.75341518884773" : 1632.007, - "89.82836143853652" : 1633.007, - "89.90336377925848" : 1634.007, - "89.9788881980583" : 1635.007, - "90.05329511088982" : 1636.007, - "90.12640761526384" : 1637.007, - "90.20014575039231" : 1638.007, - "90.27146334170529" : 1639.007, - "90.34349285766987" : 1640.007, - "90.41610917213518" : 1641.007, - "90.48809985584604" : 1642.007, - "90.56103545773088" : 1643.007, - "90.6335482195196" : 1644.007, - "90.7056683440762" : 1645.007, - "90.78023921531233" : 1646.007, - "90.85400323860996" : 1647.007, - "90.92734010711662" : 1648.007, - "90.99964144885728" : 1649.007, - "91.07184786731105" : 1650.007, - "91.14358398402527" : 1651.007, - "91.21474193162848" : 1652.007, - "91.2853605423744" : 1653.007, - "91.35544413095789" : 1654.007, - "91.42718024767211" : 1655.007, - "91.49817855156556" : 1656.007, - "91.57014334710728" : 1657.007, - "91.64070586682004" : 1658.007, - "91.71236863372167" : 1659.007, - "91.78171009478953" : 1660.007, - "91.8512672906003" : 1661.007, - "91.92085037458024" : 1662.007, - "91.98837534911274" : 1663.007, - "92.05675894792206" : 1664.007, - "92.12528061696685" : 1665.007, - "92.19082083186454" : 1666.007, - "92.25630927042393" : 1667.007, - "92.32237587809433" : 1668.007, - "92.38762700843652" : 1669.007, - "92.4520195145019" : 1670.007, - "92.51619628582438" : 1671.007, - "92.58020909874223" : 1672.007, - "92.64312597916606" : 1673.007, - "92.70853675321801" : 1674.007, - "92.77539726474234" : 1675.007, - "92.84393619256656" : 1676.007, - "92.90923478455218" : 1677.007, - "92.97131461417351" : 1678.007, - "93.03404596271845" : 1679.007, - "93.09707502520861" : 1680.007, - "93.16138986676654" : 1681.007, - "93.22531638578722" : 1682.007, - "93.28828935724422" : 1683.007, - "93.35014913742778" : 1684.007, - "93.41255256916348" : 1685.007, - "93.47348900464736" : 1686.007, - "93.53334676641666" : 1687.007, - "93.59281189095385" : 1688.007, - "93.65216483342473" : 1689.007, - "93.71178528697682" : 1690.007, - "93.77109939719398" : 1691.007, - "93.82962823294693" : 1692.007, - "93.88818295686902" : 1693.007, - "93.9483729501424" : 1694.007, - "94.00811852984539" : 1695.007, - "94.06742832536769" : 1696.007, - "94.12719547854496" : 1697.007, - "94.18659588265929" : 1698.007, - "94.24466304606239" : 1699.007, - "94.30437842290137" : 1700.007, - "94.36286842640058" : 1701.007, - "94.42102188370085" : 1702.007, - "94.4765390624427" : 1703.007, - "94.53149964554781" : 1704.007, - "94.58828965927286" : 1705.007, - "94.64255126181094" : 1706.007, - "94.69623038054314" : 1707.007, - "94.74987498171647" : 1708.007, - "94.80254014715699" : 1709.007, - "94.85498094846486" : 1710.007, - "94.90733977057042" : 1711.007, - "94.96028970587156" : 1712.007, - "95.01143178402708" : 1713.007, - "95.06278959692553" : 1714.007, - "95.11271924582586" : 1715.007, - "95.16240295711927" : 1716.007, - "95.2121470741407" : 1717.007, - "95.26124830162824" : 1718.007, - "95.30889116225367" : 1719.007, - "95.35713376546441" : 1720.007, - "95.4043667300783" : 1721.007, - "95.45065477651822" : 1722.007, - "95.4959029814973" : 1723.007, - "95.54003368050806" : 1724.007, - "95.58322809073458" : 1725.007, - "95.62599966086498" : 1726.007, - "95.66757606051964" : 1727.007, - "95.7090575368874" : 1728.007, - "95.74934384277942" : 1729.007, - "95.78877152439463" : 1730.007, - "95.82805682107953" : 1731.007, - "95.86645329062361" : 1732.007, - "95.90337844922101" : 1733.007, - "95.94042873396928" : 1734.007, - "95.97661607974591" : 1735.007, - "96.01228997683441" : 1736.007, - "96.04764027180852" : 1737.007, - "96.08302939903636" : 1738.007, - "96.11784467184803" : 1739.007, - "96.1533546105319" : 1740.007, - "96.18756582606343" : 1741.007, - "96.22033161881743" : 1742.007, - "96.25345553124464" : 1743.007, - "96.28635507953925" : 1744.007, - "96.31775311402315" : 1745.007, - "96.34827958014567" : 1746.007, - "96.37811569509087" : 1747.007, - "96.40790866308748" : 1748.007, - "96.46620019062321" : 1750.007, - "96.4947332677212" : 1751.007, - "96.52290391045109" : 1752.007, - "96.5502029848196" : 1753.007, - "96.57809748707857" : 1754.007, - "96.60430925834278" : 1755.007, - "96.62921367706494" : 1756.007, - "96.67821135187587" : 1758.007, - "96.70270155989164" : 1759.007, - "96.72633314363058" : 1760.007, - "96.77031282832131" : 1762.007, - "96.79238680721642" : 1763.007, - "96.81353312671698" : 1764.007, - "96.85591637431014" : 1766.007, - "96.87635508385394" : 1767.007, - "96.89662552029827" : 1768.007, - "96.9165852987128" : 1769.007, - "96.93707146990005" : 1770.007, - "96.95747997657983" : 1771.007, - "96.97715929982857" : 1772.007, - "96.99650639157323" : 1773.007, - "97.01573267186184" : 1774.007, - "97.03431174792172" : 1775.007, - "97.05176037392872" : 1776.007, - "97.06853590753782" : 1777.007, - "97.08553149058469" : 1778.007, - "97.10254864710585" : 1779.007, - "97.11967367099848" : 1780.007, - "97.13643194582815" : 1781.007, - "97.15212017633294" : 1782.007, - "97.16716551730387" : 1783.007, - "97.18214613785192" : 1784.007, - "97.197338178448" : 1785.007, - "97.21187870012051" : 1786.007, - "97.22652708916446" : 1787.007, - "97.24147319215363" : 1788.007, - "97.25632868655079" : 1789.007, - "97.2701227660128" : 1790.007, - "97.28472800810817" : 1791.007, - "97.29828477935298" : 1792.007, - "97.32441025672003" : 1794.007, - "97.33759596420701" : 1795.007, - "97.35011720868583" : 1796.007, - "97.36298794344816" : 1797.007, - "97.37532797074292" : 1798.007, - "97.39993467551984" : 1800.007, - "97.41184754802363" : 1801.007, - "97.4238251409503" : 1802.007, - "97.44706408745714" : 1804.007, - "97.458213258971" : 1805.007, - "97.46922436024941" : 1806.007, - "97.49124224811135" : 1808.007, - "97.50231375511777" : 1809.007, - "97.52387428532474" : 1811.007, - "97.53449274937103" : 1812.007, - "97.55553983088986" : 1814.007, - "97.566710575878" : 1815.007, - "97.58874140782453" : 1817.007, - "97.59916139590734" : 1818.007, - "97.60968062197189" : 1819.007, - "97.63056805978096" : 1821.007, - "97.64150149655191" : 1822.007, - "97.66302319450514" : 1824.007, - "97.6737710993972" : 1825.007, - "97.69627223308326" : 1827.007, - "97.70712800534677" : 1828.007, - "97.7293745720362" : 1830.007, - "97.73991968626991" : 1831.007, - "97.75062444421337" : 1832.007, - "97.77220223319976" : 1834.007, - "97.78359734232056" : 1835.007, - "97.80539518074472" : 1837.007, - "97.81607405051903" : 1838.007, - "97.83837670824163" : 1840.007, - "97.84946547402748" : 1841.007, - "97.86062758962592" : 1842.007, - "97.88372415120244" : 1844.007, - "97.89505885459522" : 1845.007, - "97.91642522353355" : 1847.007, - "97.92783759143377" : 1848.007, - "97.93836544688804" : 1849.007, - "97.95995617995902" : 1851.007, - "97.97096728123742" : 1852.007, - "97.99221715341459" : 1854.007, - "98.00352165394335" : 1855.007, - "98.02612634030602" : 1857.007, - "98.03722805017645" : 1858.007, - "98.04853255070522" : 1859.007, - "98.07100348152728" : 1861.007, - "98.08235544369948" : 1862.007, - "98.10400226780362" : 1864.007, - "98.11488824293113" : 1865.007, - "98.12635670186451" : 1866.007, - "98.14853423343621" : 1868.007, - "98.15964888739121" : 1869.007, - "98.18322869479186" : 1871.007, - "98.19457634226922" : 1872.007, - "98.20545800270186" : 1873.007, - "98.2265352870847" : 1875.007, - "98.23656695263026" : 1876.007, - "98.25717824996839" : 1878.007, - "98.26763707030493" : 1879.007, - "98.28836054970938" : 1881.007, - "98.29867267042074" : 1882.007, - "98.31947381433264" : 1884.007, - "98.33011385185323" : 1885.007, - "98.35080712839367" : 1887.007, - "98.36148599816798" : 1888.007, - "98.38173054644317" : 1890.007, - "98.39154216255095" : 1891.007, - "98.4104966170635" : 1893.007, - "98.43026223420941" : 1895.007, - "98.44016014421436" : 1896.007, - "98.45001059257588" : 1897.007, - "98.4597057119225" : 1898.007, - "98.46921961408506" : 1899.007, - "98.47871194277334" : 1900.007, - "98.48784183709351" : 1901.007, - "98.49714863390288" : 1902.007, - "98.5063691368151" : 1903.007, - "98.51569750709875" : 1904.007, - "98.52519415048188" : 1905.007, - "98.5342377509049" : 1906.007, - "98.54321231621017" : 1907.007, - "98.55285134452363" : 1908.007, - "98.56217540011244" : 1909.007, - "98.5720733101174" : 1910.007, - "98.58167782087199" : 1911.007, - "98.59120035242428" : 1912.007, - "98.60047694636964" : 1913.007, - "98.60987003707618" : 1914.007, - "98.6194184567976" : 1915.007, - "98.62807804937823" : 1916.007, - "98.63752723111793" : 1917.007, - "98.64651042581292" : 1918.007, - "98.65581290792743" : 1919.007, - "98.66536995703858" : 1920.007, - "98.67445670441018" : 1921.007, - "98.6834787313589" : 1922.007, - "98.69260862567909" : 1923.007, - "98.70205349272392" : 1924.007, - "98.71151561854818" : 1925.007, - "98.72104246479533" : 1926.007, - "98.73075052822652" : 1927.007, - "98.73992788419014" : 1928.007, - "98.74925625447379" : 1929.007, - "98.75869680682378" : 1930.007, - "98.76784827461825" : 1931.007, - "98.77665888151891" : 1932.007, - "98.78546085902985" : 1933.007, - "98.7948021733981" : 1934.007, - "98.80371633297536" : 1935.007, - "98.81258734560404" : 1936.007, - "98.82163094602706" : 1937.007, - "98.83023013287966" : 1938.007, - "98.83885952259627" : 1939.007, - "98.84758815029463" : 1940.007, - "98.85626500165469" : 1941.007, - "98.86500225874276" : 1942.007, - "98.87370499827196" : 1943.007, - "98.88217474427883" : 1944.007, - "98.89105438629721" : 1945.007, - "98.8993342857303" : 1946.007, - "98.90774362600915" : 1947.007, - "98.91639458920007" : 1948.007, - "98.924678803328" : 1949.007, - "98.93307519952228" : 1950.007, - "98.94126449036334" : 1951.007, - "98.94976443923422" : 1952.007, - "98.95796667415985" : 1953.007, - "98.96592297147858" : 1954.007, - "98.97356861076749" : 1955.007, - "98.98127034108957" : 1956.007, - "98.98912308573169" : 1957.007, - "98.99739867046992" : 1958.007, - "99.00588136056136" : 1959.007, - "99.01415263060474" : 1960.007, - "99.02251882393499" : 1961.007, - "99.03070811477606" : 1962.007, - "99.03856517411305" : 1963.007, - "99.04665091227751" : 1964.007, - "99.05473233574712" : 1965.007, - "99.06283964738587" : 1966.007, - "99.07112817620869" : 1967.007, - "99.07914487925542" : 1968.007, - "99.08771386324402" : 1969.007, - "99.09678766653104" : 1970.007, - "99.10545157380652" : 1971.007, - "99.11425355131747" : 1972.007, - "99.12283116469578" : 1973.007, - "99.13186613572908" : 1974.007, - "99.14130668807906" : 1975.007, - "99.1501604419283" : 1976.007, - "99.15942840648395" : 1977.007, - "99.16857124488871" : 1978.007, - "99.17751129263512" : 1979.007, - "99.18680083066505" : 1980.007, - "99.19587894864694" : 1981.007, - "99.20462052042987" : 1982.007, - "99.21368569432717" : 1983.007, - "99.22219427258776" : 1984.007, - "99.23114726441874" : 1985.007, - "99.23975508066107" : 1986.007, - "99.24861314920517" : 1987.007, - "99.25711309807603" : 1988.007, - "99.26547497671143" : 1989.007, - "99.27359954712962" : 1990.007, - "99.28196142576503" : 1991.007, - "99.2906771093788" : 1992.007, - "99.29915979947025" : 1993.007, - "99.30756051035937" : 1994.007, - "99.31603025636622" : 1995.007, - "99.32398655368495" : 1996.007, - "99.33220604739002" : 1997.007, - "99.3403435618928" : 1998.007, - "99.347980571792" : 1999.007, - "99.35577722540096" : 2000.007, - "99.36393199868316" : 2001.007, - "99.37207814257565" : 2002.007, - "99.38001286642007" : 2003.007, - "99.38796484904393" : 2004.007, - "99.39612825171585" : 2005.007, - "99.40398962574768" : 2006.007, - "99.41192434959211" : 2007.007, - "99.41997125550286" : 2008.007, - "99.42788009117812" : 2009.007, - "99.435314310419" : 2010.007, - "99.442744214965" : 2011.007, - "99.45043300120251" : 2012.007, - "99.45791468208681" : 2013.007, - "99.4659356998284" : 2014.007, - "99.47342169540757" : 2015.007, - "99.48094652324046" : 2016.007, - "99.48857490374995" : 2017.007, - "99.49613856383655" : 2018.007, - "99.50396110561466" : 2019.007, - "99.51144278649898" : 2020.007, - "99.51931278992053" : 2021.007, - "99.52635005723442" : 2022.007, - "99.5328220995219" : 2023.007, - "99.53936317692708" : 2024.007, - "99.54623648583636" : 2025.007, - "99.5523590378403" : 2026.007, - "99.55850316331853" : 2027.007, - "99.56494068804713" : 2028.007, - "99.5712876041837" : 2029.007, - "99.57741878557735" : 2030.007, - "99.58374844293449" : 2031.007, - "99.59005652681734" : 2032.007, - "99.5963732400899" : 2033.007, - "99.6023447777738" : 2034.007, - "99.60804448968162" : 2035.007, - "99.61413252412669" : 2036.007, - "99.61985812420367" : 2037.007, - "99.62556215080635" : 2038.007, - "99.63088216956665" : 2039.007, - "99.63629711161381" : 2040.007, - "99.64148337483351" : 2041.007, - "99.64679044950923" : 2042.007, - "99.65192062169575" : 2043.007, - "99.65700764693369" : 2044.007, - "99.66231903630427" : 2045.007, - "99.66744489379595" : 2046.007, - "99.67222557569895" : 2047.007, - "99.67689839023049" : 2048.007, - "99.68189480687641" : 2049.007, - "99.68677472676116" : 2050.007, - "99.69218966880834" : 2051.007, - "99.69714293850568" : 2052.007, - "99.70179849425779" : 2053.007, - "99.70660074963509" : 2054.007, - "99.71096290613683" : 2055.007, - "99.71541998592546" : 2056.007, - "99.71983823346038" : 2057.007, - "99.72414429892896" : 2058.007, - "99.72861000810731" : 2059.007, - "99.73287724132217" : 2060.007, - "99.7370452365553" : 2061.007, - "99.74121754648328" : 2062.007, - "99.74510077185576" : 2063.007, - "99.74913932624314" : 2064.007, - "99.75316493654594" : 2065.007, - "99.75709993825672" : 2066.007, - "99.76111260447495" : 2067.007, - "99.76506486496515" : 2068.007, - "99.7690861605731" : 2069.007, - "99.77277090998209" : 2070.007, - "99.77650312103452" : 2071.007, - "99.78023964678182" : 2072.007, - "99.78397185783426" : 2073.007, - "99.78777310400443" : 2074.007, - "99.7915743501746" : 2075.007, - "99.79528498775274" : 2076.007, - "99.79882303753655" : 2077.007, - "99.80209357623914" : 2078.007, - "99.80512680672454" : 2079.007, - "99.80814709312536" : 2080.007, - "99.81133565262564" : 2081.007, - "99.81472700278427" : 2082.007, - "99.8182521084835" : 2083.007, - "99.82163051455757" : 2084.007, - "99.82498303246247" : 2085.007, - "99.82837869731596" : 2086.007, - "99.83161471845969" : 2087.007, - "99.83472129875767" : 2088.007, - "99.83803929910371" : 2089.007, - "99.84134004067032" : 2090.007, - "99.84433443890198" : 2091.007, - "99.84744533389483" : 2092.007, - "99.8503663823139" : 2093.007, - "99.85339961279928" : 2094.007, - "99.85635949347208" : 2095.007, - "99.85910795409683" : 2096.007, - "99.86228356951254" : 2097.007, - "99.86529954121849" : 2098.015, - "99.86800916958951" : 2099.007, - "99.87071879796054" : 2100.015, - "99.87344999980584" : 2101.007, - "99.8762804396329" : 2102.015, - "99.87904615903706" : 2103.007, - "99.88178599027209" : 2104.015, - "99.88414181366473" : 2105.007, - "99.88668748363112" : 2106.015, - "99.88923315359753" : 2107.007, - "99.89167095619247" : 2108.015, - "99.89391891221365" : 2109.007, - "99.8960244833045" : 2110.015, - "99.8985183769326" : 2111.007, - "99.90079653581779" : 2112.015, - "99.90278992484232" : 2113.007, - "99.90481351673088" : 2114.015, - "99.90680690575542" : 2115.007, - "99.90899445604857" : 2116.015, - "99.91094038342968" : 2117.007, - "99.91294240184392" : 2118.015, - "99.91473300021012" : 2119.007, - "99.91628197566426" : 2120.015, - "99.91764973393434" : 2121.007, - "99.91910378610159" : 2122.015, - "99.92063550277629" : 2123.007, - "99.92233117785561" : 2124.015, - "99.92385426514059" : 2125.007, - "99.92547659040731" : 2126.015, - "99.92685729276197" : 2127.007, - "99.92823799511663" : 2128.015, - "99.92972225014789" : 2129.007, - "99.9310770643334" : 2130.015, - "99.93241461973948" : 2131.007, - "99.93343288772603" : 2132.015, - "99.93439074998457" : 2133.007, - "99.93538744449684" : 2134.015, - "99.93634530675538" : 2135.007, - "99.93726002206535" : 2136.015, - "99.93806255530899" : 2137.007, - "99.93881331221434" : 2138.015, - "99.93951660747625" : 2139.007, - "99.94028030846617" : 2140.015, - "99.94101380659208" : 2141.007, - "99.94182065453057" : 2142.015, - "99.94272242575596" : 2143.007, - "99.94347749735617" : 2144.015, - "99.94431023346382" : 2145.007, - "99.94521631938407" : 2146.015, - "99.94604474079686" : 2147.007, - "99.9468170711765" : 2148.015, - "99.94764980728415" : 2149.007, - "99.94856452259411" : 2150.015, - "99.94930665010975" : 2151.007, - "99.9500660364048" : 2152.015, - "99.95087719903817" : 2153.007, - "99.95181348782242" : 2154.015, - "99.95282312641926" : 2155.007, - "99.95365586252692" : 2156.015, - "99.95459215131118" : 2157.007, - "99.95551549601085" : 2158.015, - "99.95644315540538" : 2159.007, - "99.95728883559761" : 2160.015, - "99.95809568353611" : 2161.007, - "99.95876877593402" : 2162.015, - "99.95954542100851" : 2163.007, - "99.960291863219" : 2164.015, - "99.96097789970146" : 2165.007, - "99.96159921576107" : 2166.015, - "99.96225073468467" : 2167.007, - "99.96294540055685" : 2168.015, - "99.96373498971593" : 2169.007, - "99.96442534089326" : 2170.015, - "99.96504665695285" : 2171.007, - "99.9657240640456" : 2172.015, - "99.96641441522293" : 2173.007, - "99.96719537499229" : 2174.015, - "99.96795476128734" : 2175.007, - "99.9686537418544" : 2176.015, - "99.96936135181116" : 2177.007, - "99.97009916463193" : 2178.015, - "99.97089738318071" : 2179.007, - "99.9716136225272" : 2180.015, - "99.97249382027829" : 2181.007, - "99.97336970333453" : 2182.015, - "99.97402985164784" : 2183.007, - "99.97476766446862" : 2184.015, - "99.97535446296935" : 2185.007, - "99.97602324067239" : 2186.015, - "99.97661003917311" : 2187.007, - "99.97726587279158" : 2188.015, - "99.97786561537688" : 2189.007, - "99.97843515509818" : 2190.015, - "99.97903058298863" : 2191.007, - "99.97956991984591" : 2192.015, - "99.98007042444948" : 2193.007, - "99.98058818783248" : 2194.015, - "99.98106280426688" : 2195.007, - "99.98157193826017" : 2196.015, - "99.98211990450717" : 2197.007, - "99.98269375892333" : 2198.015, - "99.98327192803434" : 2199.007, - "99.98374654446876" : 2200.015, - "99.98407446127798" : 2201.007, - "99.98441963686665" : 2202.015, - "99.98480364470905" : 2203.007, - "99.98518765255143" : 2204.015, - "99.985688157155" : 2205.007, - "99.98614551480998" : 2206.015, - "99.9866805369724" : 2207.007, - "99.9871163211531" : 2208.015, - "99.98743560857261" : 2209.007, - "99.98775489599213" : 2210.015, - "99.98816047730881" : 2211.007, - "99.98860489087922" : 2212.015, - "99.98891123421414" : 2213.007, - "99.98921757754908" : 2214.015, - "99.98952392088403" : 2215.007, - "99.98987772586241" : 2216.015, - "99.9902099573665" : 2217.007, - "99.9904904125323" : 2218.015, - "99.99078812647751" : 2219.007, - "99.99109878450732" : 2220.015, - "99.99140512784226" : 2221.007, - "99.9917114711772" : 2222.015, - "99.992052332071" : 2223.007, - "99.99236730479565" : 2224.015, - "99.99269090691003" : 2225.007, - "99.99295841799125" : 2226.015, - "99.99320435559817" : 2227.007, - "99.99337694339249" : 2228.015, - "99.9936142516097" : 2229.007, - "99.99386881860634" : 2230.015, - "99.99408455334925" : 2231.007, - "99.99425714114359" : 2232.015, - "99.99444698771735" : 2233.007, - "99.99453759630939" : 2234.015, - "99.9946282049014" : 2235.007, - "99.99474038696772" : 2236.015, - "99.9948568837289" : 2237.007, - "99.99496475110035" : 2238.015, - "99.99506830377696" : 2239.007, - "99.99516322706384" : 2240.015, - "99.99534012955303" : 2241.007, - "99.99547388509363" : 2242.015, - "99.99557312307537" : 2243.007, - "99.99570687861599" : 2244.015, - "99.995767284344" : 2245.007, - "99.99584494885146" : 2246.015, - "99.99590966927433" : 2247.007, - "99.99598301908692" : 2248.015, - "99.99609520115324" : 2249.007, - "99.99618580974526" : 2250.015, - "99.99628073303214" : 2251.007, - "99.99638428570874" : 2252.015, - "99.99650509716477" : 2253.007, - "99.99662159392595" : 2254.015, - "99.99669494373853" : 2255.007, - "99.99675534946655" : 2256.015, - "99.99679849641514" : 2257.007, - "99.99684595805857" : 2258.015, - "99.99692362256603" : 2259.007, - "99.9969883429889" : 2260.015, - "99.99704874871692" : 2261.007, - "99.99710915444493" : 2262.015, - "99.99716524547809" : 2263.007, - "99.9972170218164" : 2264.015, - "99.99726879815469" : 2265.007, - "99.99732488918785" : 2266.015, - "99.99739392430558" : 2267.007, - "99.9974543300336" : 2268.015, - "99.9975061063719" : 2269.007, - "99.99757082679477" : 2270.015, - "99.9976614353868" : 2271.007, - "99.99773478519938" : 2272.015, - "99.99781244970684" : 2273.007, - "99.99790305829886" : 2274.015, - "99.99797209341659" : 2275.007, - "99.9980756460932" : 2276.015, - "99.99817919876979" : 2277.007, - "99.99830432492068" : 2278.015, - "99.99839061881785" : 2279.007, - "99.99850280088417" : 2280.015, - "99.99861066825562" : 2281.007, - "99.99869696215279" : 2282.015, - "99.99879188543967" : 2283.007, - "99.99892132628543" : 2284.015, - "99.99904213774145" : 2285.007, - "99.99911117285919" : 2286.015, - "99.99915000511291" : 2287.007, - "99.99920609614607" : 2288.015, - "99.99925787248438" : 2289.007, - "99.99931396351752" : 2290.015, - "99.9993786839404" : 2291.007, - "99.99944340436328" : 2292.015, - "99.99951675417587" : 2293.007, - "99.99960736276789" : 2294.015, - "99.99965050971647" : 2295.007, - "99.99978426525709" : 2296.015, - "99.99987055915425" : 2297.007, - "99.99990507671312" : 2298.015, - "99.99995253835655" : 2299.007, - "99.99999137061029" : 2300.015, - "100.0" : 2301.007 - }, - "aggregatedEndToEndLatencyAvg" : 1226.890877794164, - "aggregatedEndToEndLatency50pct" : 1227.007, - "aggregatedEndToEndLatency75pct" : 1477.007, - "aggregatedEndToEndLatency95pct" : 1713.007, - "aggregatedEndToEndLatency99pct" : 1959.007, - "aggregatedEndToEndLatency999pct" : 2112.015, - "aggregatedEndToEndLatency9999pct" : 2217.007, - "aggregatedEndToEndLatencyMax" : 2301.007 -} \ No newline at end of file diff --git a/blog/workloads/1-topic-100-partitions-1kb-4-producers-1000k-rate.yaml b/blog/workloads/1-topic-100-partitions-1kb-4-producers-1000k-rate.yaml deleted file mode 100644 index 6a61a35d..00000000 --- a/blog/workloads/1-topic-100-partitions-1kb-4-producers-1000k-rate.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -name: 100-partitions-1000K-rate-4-producer - -topics: 1 -partitionsPerTopic: 100 -messageSize: 1024 -payloadFile: "payload/payload-1Kb.data" -subscriptionsPerTopic: 1 -consumerPerSubscription: 4 -producersPerTopic: 4 -producerRate: 1000000 -consumerBacklogSizeGB: 0 -testDurationMinutes: 10 diff --git a/blog/workloads/1-topic-100-partitions-1kb-4-producers-100k-rate.yaml b/blog/workloads/1-topic-100-partitions-1kb-4-producers-100k-rate.yaml deleted file mode 100644 index c7e66698..00000000 --- a/blog/workloads/1-topic-100-partitions-1kb-4-producers-100k-rate.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -name: 100-partitions-100K-rate-4-producer - -topics: 1 -partitionsPerTopic: 100 -messageSize: 1024 -payloadFile: "payload/payload-1Kb.data" -subscriptionsPerTopic: 1 -consumerPerSubscription: 4 -producersPerTopic: 4 -producerRate: 100000 -consumerBacklogSizeGB: 0 -testDurationMinutes: 10 diff --git a/blog/workloads/1-topic-100-partitions-1kb-4-producers-10k-rate.yaml b/blog/workloads/1-topic-100-partitions-1kb-4-producers-10k-rate.yaml deleted file mode 100644 index 2d0dd57e..00000000 --- a/blog/workloads/1-topic-100-partitions-1kb-4-producers-10k-rate.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -name: 100-partitions-10K-rate-4-producer - -topics: 1 -partitionsPerTopic: 100 -messageSize: 1024 -payloadFile: "payload/payload-1Kb.data" -subscriptionsPerTopic: 1 -consumerPerSubscription: 4 -producersPerTopic: 4 -producerRate: 10000 -consumerBacklogSizeGB: 0 -testDurationMinutes: 10 diff --git a/blog/workloads/1-topic-100-partitions-1kb-4-producers-200k-rate.yaml b/blog/workloads/1-topic-100-partitions-1kb-4-producers-200k-rate.yaml deleted file mode 100644 index 99f54f16..00000000 --- a/blog/workloads/1-topic-100-partitions-1kb-4-producers-200k-rate.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -name: 100-partitions-200K-rate-4-producer - -topics: 1 -partitionsPerTopic: 100 -messageSize: 1024 -payloadFile: "payload/payload-1Kb.data" -subscriptionsPerTopic: 1 -consumerPerSubscription: 4 -producersPerTopic: 4 -producerRate: 200000 -consumerBacklogSizeGB: 0 -testDurationMinutes: 10 diff --git a/blog/workloads/1-topic-100-partitions-1kb-4-producers-40k-rate.yaml b/blog/workloads/1-topic-100-partitions-1kb-4-producers-40k-rate.yaml deleted file mode 100644 index 5ac29359..00000000 --- a/blog/workloads/1-topic-100-partitions-1kb-4-producers-40k-rate.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -name: 100-partitions-40K-rate-4-producer - -topics: 1 -partitionsPerTopic: 100 -messageSize: 1024 -payloadFile: "payload/payload-1Kb.data" -subscriptionsPerTopic: 1 -consumerPerSubscription: 4 -producersPerTopic: 4 -producerRate: 40000 -consumerBacklogSizeGB: 0 -testDurationMinutes: 10 diff --git a/blog/workloads/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml b/blog/workloads/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml deleted file mode 100644 index 8e40a479..00000000 --- a/blog/workloads/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -name: 100-partitions-500K-rate-4-producer - -topics: 1 -partitionsPerTopic: 100 -messageSize: 1024 -payloadFile: "payload/payload-1Kb.data" -subscriptionsPerTopic: 1 -consumerPerSubscription: 4 -producersPerTopic: 4 -producerRate: 500000 -consumerBacklogSizeGB: 0 -testDurationMinutes: 10 diff --git a/blog/workloads/1-topic-100-partitions-1kb-4-producers-50k-rate.yaml b/blog/workloads/1-topic-100-partitions-1kb-4-producers-50k-rate.yaml deleted file mode 100644 index ed6be664..00000000 --- a/blog/workloads/1-topic-100-partitions-1kb-4-producers-50k-rate.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -name: 100-partitions-50K-rate-4-producer - -topics: 1 -partitionsPerTopic: 100 -messageSize: 1024 -payloadFile: "payload/payload-1Kb.data" -subscriptionsPerTopic: 1 -consumerPerSubscription: 4 -producersPerTopic: 4 -producerRate: 50000 -consumerBacklogSizeGB: 0 -testDurationMinutes: 10 diff --git a/blog/workloads/1-topic-100-partitions-1kb-4-producers-75k-rate.yaml b/blog/workloads/1-topic-100-partitions-1kb-4-producers-75k-rate.yaml deleted file mode 100644 index 499fe750..00000000 --- a/blog/workloads/1-topic-100-partitions-1kb-4-producers-75k-rate.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -name: 100-partitions-75K-rate-4-producer - -topics: 1 -partitionsPerTopic: 100 -messageSize: 1024 -payloadFile: "payload/payload-1Kb.data" -subscriptionsPerTopic: 1 -consumerPerSubscription: 4 -producersPerTopic: 4 -producerRate: 75000 -consumerBacklogSizeGB: 0 -testDurationMinutes: 10 diff --git a/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-1000k-rate.yaml b/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-1000k-rate.yaml deleted file mode 100644 index 6a61a35d..00000000 --- a/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-1000k-rate.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -name: 100-partitions-1000K-rate-4-producer - -topics: 1 -partitionsPerTopic: 100 -messageSize: 1024 -payloadFile: "payload/payload-1Kb.data" -subscriptionsPerTopic: 1 -consumerPerSubscription: 4 -producersPerTopic: 4 -producerRate: 1000000 -consumerBacklogSizeGB: 0 -testDurationMinutes: 10 diff --git a/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-100k-rate.yaml b/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-100k-rate.yaml deleted file mode 100644 index 07396ede..00000000 --- a/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-100k-rate.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -name: 100-partitions-100K-rate-4-producer - -topics: 1 -partitionsPerTopic: 24 -messageSize: 1024 -payloadFile: "payload/payload-1Kb.data" -subscriptionsPerTopic: 1 -consumerPerSubscription: 24 -producersPerTopic: 24 -producerRate: 100000 -consumerBacklogSizeGB: 0 -testDurationMinutes: 10 diff --git a/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-10k-rate.yaml b/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-10k-rate.yaml deleted file mode 100644 index 3c01c7b1..00000000 --- a/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-10k-rate.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -name: 100-partitions-10K-rate-4-producer - -topics: 1 -partitionsPerTopic: 24 -messageSize: 1024 -payloadFile: "payload/payload-1Kb.data" -subscriptionsPerTopic: 1 -consumerPerSubscription: 24 -producersPerTopic: 24 -producerRate: 10000 -consumerBacklogSizeGB: 0 -testDurationMinutes: 10 diff --git a/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-200k-rate.yaml b/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-200k-rate.yaml deleted file mode 100644 index 4c18faa4..00000000 --- a/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-200k-rate.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -name: 100-partitions-200K-rate-4-producer - -topics: 1 -partitionsPerTopic: 24 -messageSize: 1024 -payloadFile: "payload/payload-1Kb.data" -subscriptionsPerTopic: 1 -consumerPerSubscription: 24 -producersPerTopic: 24 -producerRate: 200000 -consumerBacklogSizeGB: 0 -testDurationMinutes: 10 diff --git a/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml b/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml deleted file mode 100644 index 958e43b8..00000000 --- a/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -name: 100-partitions-500K-rate-4-producer - -topics: 1 -partitionsPerTopic: 24 -messageSize: 1024 -payloadFile: "payload/payload-1Kb.data" -subscriptionsPerTopic: 1 -consumerPerSubscription: 24 -producersPerTopic: 24 -producerRate: 500000 -consumerBacklogSizeGB: 0 -testDurationMinutes: 10 diff --git a/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-50k-rate.yaml b/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-50k-rate.yaml deleted file mode 100644 index f1349304..00000000 --- a/blog/workloads/rabbitmq/1-topic-100-partitions-1kb-4-producers-50k-rate.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -name: 100-partitions-50K-rate-4-producer - -topics: 1 -partitionsPerTopic: 24 -messageSize: 1024 -payloadFile: "payload/payload-1Kb.data" -subscriptionsPerTopic: 1 -consumerPerSubscription: 24 -producersPerTopic: 24 -producerRate: 50000 -consumerBacklogSizeGB: 0 -testDurationMinutes: 10 From 315d6d6ca666bfea4dc84e890f384e9311c0eb56 Mon Sep 17 00:00:00 2001 From: Roko Kruze Date: Thu, 18 Feb 2021 14:22:46 -0800 Subject: [PATCH 29/47] Updates to workloads - Updated all to run for 60 minutes - On the 1250k workload, added more producers/consumers --- ...partitions-1kb-4-producers-1000k-rate.yaml | 2 +- ...-partitions-1kb-4-producers-100k-rate.yaml | 2 +- ...0-partitions-1kb-4-producers-10k-rate.yaml | 2 +- ...partitions-1kb-4-producers-1250k-rate.yaml | 31 +++++++++++++++++++ ...-partitions-1kb-4-producers-200k-rate.yaml | 2 +- ...0-partitions-1kb-4-producers-40k-rate.yaml | 2 +- ...-partitions-1kb-4-producers-500k-rate.yaml | 2 +- ...0-partitions-1kb-4-producers-50k-rate.yaml | 2 +- ...0-partitions-1kb-4-producers-75k-rate.yaml | 2 +- 9 files changed, 39 insertions(+), 8 deletions(-) create mode 100644 workloads/blog/1-topic-100-partitions-1kb-4-producers-1250k-rate.yaml diff --git a/workloads/blog/1-topic-100-partitions-1kb-4-producers-1000k-rate.yaml b/workloads/blog/1-topic-100-partitions-1kb-4-producers-1000k-rate.yaml index 6a61a35d..ef73a36f 100644 --- a/workloads/blog/1-topic-100-partitions-1kb-4-producers-1000k-rate.yaml +++ b/workloads/blog/1-topic-100-partitions-1kb-4-producers-1000k-rate.yaml @@ -28,4 +28,4 @@ consumerPerSubscription: 4 producersPerTopic: 4 producerRate: 1000000 consumerBacklogSizeGB: 0 -testDurationMinutes: 10 +testDurationMinutes: 60 diff --git a/workloads/blog/1-topic-100-partitions-1kb-4-producers-100k-rate.yaml b/workloads/blog/1-topic-100-partitions-1kb-4-producers-100k-rate.yaml index c7e66698..aa28eaec 100644 --- a/workloads/blog/1-topic-100-partitions-1kb-4-producers-100k-rate.yaml +++ b/workloads/blog/1-topic-100-partitions-1kb-4-producers-100k-rate.yaml @@ -28,4 +28,4 @@ consumerPerSubscription: 4 producersPerTopic: 4 producerRate: 100000 consumerBacklogSizeGB: 0 -testDurationMinutes: 10 +testDurationMinutes: 60 diff --git a/workloads/blog/1-topic-100-partitions-1kb-4-producers-10k-rate.yaml b/workloads/blog/1-topic-100-partitions-1kb-4-producers-10k-rate.yaml index 2d0dd57e..c5e28148 100644 --- a/workloads/blog/1-topic-100-partitions-1kb-4-producers-10k-rate.yaml +++ b/workloads/blog/1-topic-100-partitions-1kb-4-producers-10k-rate.yaml @@ -28,4 +28,4 @@ consumerPerSubscription: 4 producersPerTopic: 4 producerRate: 10000 consumerBacklogSizeGB: 0 -testDurationMinutes: 10 +testDurationMinutes: 60 diff --git a/workloads/blog/1-topic-100-partitions-1kb-4-producers-1250k-rate.yaml b/workloads/blog/1-topic-100-partitions-1kb-4-producers-1250k-rate.yaml new file mode 100644 index 00000000..db9c9067 --- /dev/null +++ b/workloads/blog/1-topic-100-partitions-1kb-4-producers-1250k-rate.yaml @@ -0,0 +1,31 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: 100-partitions-1000K-rate-4-producer + +topics: 1 +partitionsPerTopic: 100 +messageSize: 1024 +payloadFile: "payload/payload-1Kb.data" +subscriptionsPerTopic: 1 +consumerPerSubscription: 16 +producersPerTopic: 16 +producerRate: 1250000 +consumerBacklogSizeGB: 0 +testDurationMinutes: 60 diff --git a/workloads/blog/1-topic-100-partitions-1kb-4-producers-200k-rate.yaml b/workloads/blog/1-topic-100-partitions-1kb-4-producers-200k-rate.yaml index 99f54f16..53f485da 100644 --- a/workloads/blog/1-topic-100-partitions-1kb-4-producers-200k-rate.yaml +++ b/workloads/blog/1-topic-100-partitions-1kb-4-producers-200k-rate.yaml @@ -28,4 +28,4 @@ consumerPerSubscription: 4 producersPerTopic: 4 producerRate: 200000 consumerBacklogSizeGB: 0 -testDurationMinutes: 10 +testDurationMinutes: 60 diff --git a/workloads/blog/1-topic-100-partitions-1kb-4-producers-40k-rate.yaml b/workloads/blog/1-topic-100-partitions-1kb-4-producers-40k-rate.yaml index 5ac29359..612c4978 100644 --- a/workloads/blog/1-topic-100-partitions-1kb-4-producers-40k-rate.yaml +++ b/workloads/blog/1-topic-100-partitions-1kb-4-producers-40k-rate.yaml @@ -28,4 +28,4 @@ consumerPerSubscription: 4 producersPerTopic: 4 producerRate: 40000 consumerBacklogSizeGB: 0 -testDurationMinutes: 10 +testDurationMinutes: 60 diff --git a/workloads/blog/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml b/workloads/blog/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml index 8e40a479..a2024ea8 100644 --- a/workloads/blog/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml +++ b/workloads/blog/1-topic-100-partitions-1kb-4-producers-500k-rate.yaml @@ -28,4 +28,4 @@ consumerPerSubscription: 4 producersPerTopic: 4 producerRate: 500000 consumerBacklogSizeGB: 0 -testDurationMinutes: 10 +testDurationMinutes: 60 diff --git a/workloads/blog/1-topic-100-partitions-1kb-4-producers-50k-rate.yaml b/workloads/blog/1-topic-100-partitions-1kb-4-producers-50k-rate.yaml index ed6be664..887b0f2f 100644 --- a/workloads/blog/1-topic-100-partitions-1kb-4-producers-50k-rate.yaml +++ b/workloads/blog/1-topic-100-partitions-1kb-4-producers-50k-rate.yaml @@ -28,4 +28,4 @@ consumerPerSubscription: 4 producersPerTopic: 4 producerRate: 50000 consumerBacklogSizeGB: 0 -testDurationMinutes: 10 +testDurationMinutes: 60 diff --git a/workloads/blog/1-topic-100-partitions-1kb-4-producers-75k-rate.yaml b/workloads/blog/1-topic-100-partitions-1kb-4-producers-75k-rate.yaml index 499fe750..a4520e52 100644 --- a/workloads/blog/1-topic-100-partitions-1kb-4-producers-75k-rate.yaml +++ b/workloads/blog/1-topic-100-partitions-1kb-4-producers-75k-rate.yaml @@ -28,4 +28,4 @@ consumerPerSubscription: 4 producersPerTopic: 4 producerRate: 75000 consumerBacklogSizeGB: 0 -testDurationMinutes: 10 +testDurationMinutes: 60 From 3fe3a786bea96ed96249ad0189d859d4534c94fd Mon Sep 17 00:00:00 2001 From: Roko Kruze Date: Thu, 18 Feb 2021 14:25:58 -0800 Subject: [PATCH 30/47] Changed the warm up time from 1 minute to 30 minutes --- .../main/java/io/openmessaging/benchmark/WorkloadGenerator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmark-framework/src/main/java/io/openmessaging/benchmark/WorkloadGenerator.java b/benchmark-framework/src/main/java/io/openmessaging/benchmark/WorkloadGenerator.java index 38abc925..7ace88ef 100644 --- a/benchmark-framework/src/main/java/io/openmessaging/benchmark/WorkloadGenerator.java +++ b/benchmark-framework/src/main/java/io/openmessaging/benchmark/WorkloadGenerator.java @@ -112,7 +112,7 @@ public TestResult run() throws Exception { worker.startLoad(producerWorkAssignment); - printAndCollectStats(1, TimeUnit.MINUTES); + printAndCollectStats(30, TimeUnit.MINUTES); if (workload.consumerBacklogSizeGB > 0) { executor.execute(() -> { From 0a795990b3588bc22b9bb99c5af2d48440939c39 Mon Sep 17 00:00:00 2001 From: Roko Kruze Date: Thu, 18 Feb 2021 14:42:18 -0800 Subject: [PATCH 31/47] Deployment changes - Increased the number of clients - Used i3en.6xlarge to reduce being capped by the network - Updated to the latest Ubuntu 20.04 image --- driver-redpanda/deploy/terraform.tfvars | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/driver-redpanda/deploy/terraform.tfvars b/driver-redpanda/deploy/terraform.tfvars index 4328c3e8..4a655cbe 100644 --- a/driver-redpanda/deploy/terraform.tfvars +++ b/driver-redpanda/deploy/terraform.tfvars @@ -1,16 +1,16 @@ public_key_path = "~/.ssh/redpanda_aws.pub" region = "us-west-2" -ami = "ami-02f147dfb8be58a10" +ami = "ami-0928f4202481dfdf6" profile = "default" instance_types = { - "redpanda" = "i3en.2xlarge" - "client" = "c5n.4xlarge" + "redpanda" = "i3en.6xlarge" + "client" = "m5n.8xlarge" "prometheus" = "c5.2xlarge" } num_instances = { - "client" = 1 + "client" = 2 "redpanda" = 3 "prometheus" = 1 } From 006009a452ca5b4c629e232663682121b57eb78b Mon Sep 17 00:00:00 2001 From: Roko Kruze Date: Thu, 18 Feb 2021 15:01:59 -0800 Subject: [PATCH 32/47] Ansible Changes - Fixed Redhat Issue - Added the clients to node exporter --- driver-redpanda/deploy/deploy.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/driver-redpanda/deploy/deploy.yaml b/driver-redpanda/deploy/deploy.yaml index a63007e0..b8deda09 100644 --- a/driver-redpanda/deploy/deploy.yaml +++ b/driver-redpanda/deploy/deploy.yaml @@ -39,10 +39,11 @@ - chrony - git - gcc + - tuned state: present update_cache: true - name: Install Java Redhat - when: ansible_os_family == 'Redhat' + when: ansible_os_family == 'RedHat' package: name: - java-11 @@ -289,7 +290,7 @@ # Install the monitoring stack - name: Install Node Exporter - hosts: redpanda + hosts: redpanda, client roles: - cloudalchemy.node-exporter @@ -337,6 +338,7 @@ - job_name: "node" static_configs: - targets: "{{ groups['redpanda'] | map('extract', hostvars, ['ansible_default_ipv4','address']) | map('regex_replace', '^(.*)$','\\1:9100') | list }}" + - targets: "{{ groups['client'] | map('extract', hostvars, ['ansible_default_ipv4','address']) | map('regex_replace', '^(.*)$','\\1:9100') | list }}" - job_name: "client - jmx" static_configs: - targets: "{{ groups['client'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^(.*)$', '\\1:9090') | list }}" From fd77cb79d961746953849d172243e0dd6f76d790 Mon Sep 17 00:00:00 2001 From: Roko Kruze Date: Thu, 18 Feb 2021 15:02:47 -0800 Subject: [PATCH 33/47] Terraform updates - Update top reduce errors in the provisioning of resources --- .../deploy/provision-redpanda-aws.tf | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/driver-redpanda/deploy/provision-redpanda-aws.tf b/driver-redpanda/deploy/provision-redpanda-aws.tf index ba9de1b0..9d343e59 100644 --- a/driver-redpanda/deploy/provision-redpanda-aws.tf +++ b/driver-redpanda/deploy/provision-redpanda-aws.tf @@ -1,5 +1,5 @@ provider "aws" { - region = "${var.region}" + region = var.region version = "~> 2.7" profile = var.profile } @@ -34,11 +34,11 @@ variable "ami" {} variable "profile" {} variable "instance_types" { - type = "map" + type = map } variable "num_instances" { - type = "map" + type = map } # Create a VPC to launch our instances into @@ -52,19 +52,19 @@ resource "aws_vpc" "benchmark_vpc" { # Create an internet gateway to give our subnet access to the outside world resource "aws_internet_gateway" "redpanda" { - vpc_id = "${aws_vpc.benchmark_vpc.id}" + vpc_id = aws_vpc.benchmark_vpc.id } # Grant the VPC internet access on its main route table resource "aws_route" "internet_access" { - route_table_id = "${aws_vpc.benchmark_vpc.main_route_table_id}" + route_table_id = aws_vpc.benchmark_vpc.main_route_table_id destination_cidr_block = "0.0.0.0/0" gateway_id = "${aws_internet_gateway.redpanda.id}" } # Create a subnet to launch our instances into resource "aws_subnet" "benchmark_subnet" { - vpc_id = "${aws_vpc.benchmark_vpc.id}" + vpc_id = aws_vpc.benchmark_vpc.id cidr_block = "10.0.0.0/24" map_public_ip_on_launch = true availability_zone = "us-west-2b" @@ -77,7 +77,7 @@ data "http" "myip" { resource "aws_security_group" "benchmark_security_group" { name = "terraform-redpanda-${random_id.hash.hex}" - vpc_id = "${aws_vpc.benchmark_vpc.id}" + vpc_id = aws_vpc.benchmark_vpc.id # SSH access from anywhere # ingress { @@ -191,7 +191,10 @@ output "redpanda" { } output "prometheus_host" { - value = "${aws_instance.prometheus.0.public_ip}" + value = { + for instance in aws_instance.prometheus : + instance.public_ip => instance.private_ip + } } output "client_ssh_host" { From d71d3a334ae3f5ec42dfef072dfbe4105f705e93 Mon Sep 17 00:00:00 2001 From: Roko Kruze Date: Thu, 18 Feb 2021 15:05:00 -0800 Subject: [PATCH 34/47] Kafka Deployment Changes - Added node exporter to clients - Other ansible warning fixes - Updated to Kafka 2.7.0 --- driver-kafka/deploy/deploy.yaml | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/driver-kafka/deploy/deploy.yaml b/driver-kafka/deploy/deploy.yaml index 236cd650..4418b3c3 100644 --- a/driver-kafka/deploy/deploy.yaml +++ b/driver-kafka/deploy/deploy.yaml @@ -21,7 +21,7 @@ hosts: kafka, client become: true tags: - - profile + - ["never", "profile"] tasks: - set_fact: time: "{{ ansible_date_time.epoch }}" @@ -119,6 +119,7 @@ - chrony - git - gcc + - make - name: Kafka installation hosts: kafka, zookeeper @@ -130,7 +131,7 @@ - set_fact: zookeeperServers: "{{ groups['zookeeper'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^(.*)$', '\\1:2181') | join(',') }}" boostrapServers: "{{ groups['kafka'] | map('extract', hostvars, ['private_ip']) | map('regex_replace', '^(.*)$', '\\1:9092') | join(',') }}" - kafkaVersion: "2.6.0" + kafkaVersion: "2.7.0" - debug: msg: "zookeeper servers: {{ zookeeperServers }}\nboostrap servers: {{ boostrapServers }}" @@ -231,7 +232,11 @@ repo: "https://github.com/sysstat/sysstat" dest: "/opt/sysstat" - name: Compile and install sysstat from source - command: cd /opt/sysstat && ./configure && make -j`nproc` && sudo make install + shell: | + cd /opt/sysstat + ./configure + make -j`nproc` + sudo make install - name: Chrony setup hosts: client @@ -319,7 +324,7 @@ # Install the monitoring stack - name: Install Node Exporter - hosts: kafka + hosts: kafka, client roles: - cloudalchemy.node-exporter @@ -334,6 +339,7 @@ - job_name: "node" static_configs: - targets: "{{ groups['kafka'] | map('extract', hostvars, ['ansible_default_ipv4','address']) | map('regex_replace', '^(.*)$','\\1:9100') | list }}" + - targets: "{{ groups['client'] | map('extract', hostvars, ['ansible_default_ipv4','address']) | map('regex_replace', '^(.*)$','\\1:9100') | list }}" - job_name: "client - jmx" static_configs: - targets: "{{ groups['client'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^(.*)$', '\\1:9090') | list }}" From ddf49d62fc8f70438da5914cda371525a2ccaba0 Mon Sep 17 00:00:00 2001 From: Roko Kruze Date: Thu, 18 Feb 2021 16:04:52 -0800 Subject: [PATCH 35/47] Changes to Kafka Deployment - Upgraded to Redhat 8.3 - Using i3en.6xlarge - Using m5n.8xlarge for clients --- driver-kafka/deploy/terraform.tfvars | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/driver-kafka/deploy/terraform.tfvars b/driver-kafka/deploy/terraform.tfvars index d3f88618..d6a9d9c4 100644 --- a/driver-kafka/deploy/terraform.tfvars +++ b/driver-kafka/deploy/terraform.tfvars @@ -1,17 +1,17 @@ public_key_path = "~/.ssh/kafka_aws.pub" region = "us-west-2" -ami = "ami-9fa343e7" // RHEL-7.4 +ami = "ami-01e78c5619c5e68b4" profile = "default" instance_types = { - "kafka" = "i3en.2xlarge" - "zookeeper" = "t2.small" - "client" = "c5n.2xlarge" + "kafka" = "i3en.6xlarge" + "zookeeper" = "c5.xlarge" + "client" = "m5n.8xlarge" "prometheus" = "c5.2xlarge" } num_instances = { - "client" = 1 + "client" = 2 "kafka" = 3 "zookeeper" = 3 "prometheus" = 1 From bc985c6a166fc81e7a296e5db61dcb49bd3e7032 Mon Sep 17 00:00:00 2001 From: Roko Kruze Date: Fri, 19 Feb 2021 10:11:33 -0800 Subject: [PATCH 36/47] Updates for newer version of terraform Updates to use io1 for block devices for zookeeper --- driver-kafka/deploy/provision-kafka-aws.tf | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/driver-kafka/deploy/provision-kafka-aws.tf b/driver-kafka/deploy/provision-kafka-aws.tf index 8675b545..1f56b17a 100644 --- a/driver-kafka/deploy/provision-kafka-aws.tf +++ b/driver-kafka/deploy/provision-kafka-aws.tf @@ -144,6 +144,12 @@ resource "aws_instance" "zookeeper" { count = "${var.num_instances["zookeeper"]}" monitoring = true + root_block_device { + volume_size = 100 + volume_type = "io1" + iops = 1000 + } + tags = { Name = "zk-${count.index}" } @@ -185,6 +191,10 @@ resource "aws_instance" "prometheus" { vpc_security_group_ids = ["${aws_security_group.benchmark_security_group.id}"] count = "${var.num_instances["prometheus"]}" + root_block_device { + volume_size = 20 + } + tags = { Name = "prometheus-${count.index}" } @@ -212,5 +222,12 @@ output "zookeeper" { } output "prometheus_host" { - value = "${aws_instance.prometheus.0.public_ip}" + value = { + for instance in aws_instance.prometheus : + instance.public_ip => instance.private_ip + } } + +#output "client_ssh_host" { +# value = "${aws_instance.client.0.public_ip}" +#} From c28da2c73a54a85fce26fd4444ca25677af41c54 Mon Sep 17 00:00:00 2001 From: Roko Kruze Date: Fri, 19 Feb 2021 10:12:36 -0800 Subject: [PATCH 37/47] Increased thread counts for larger machines --- driver-kafka/deploy/templates/server.properties | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/driver-kafka/deploy/templates/server.properties b/driver-kafka/deploy/templates/server.properties index cb8d3271..d5ec0f61 100644 --- a/driver-kafka/deploy/templates/server.properties +++ b/driver-kafka/deploy/templates/server.properties @@ -26,12 +26,13 @@ log.dirs=/mnt/data-1,/mnt/data-2 zookeeper.connect={{ zookeeperServers }} -num.replica.fetchers=8 +num.replica.fetchers=16 message.max.bytes=10485760 replica.fetch.max.bytes=10485760 -num.network.threads=8 +num.network.threads=16 + +num.io.threads=16 -log.flush.interval.messages=1 From 6868e7dccf369773faa5bc50c146a3fdfda652d0 Mon Sep 17 00:00:00 2001 From: Patrick Angeles Date: Tue, 20 Jul 2021 18:15:43 -0400 Subject: [PATCH 38/47] Fixed repos. Also codealchemy node-exporter is now node_exporter. --- driver-redpanda/README.md | 4 ++-- driver-redpanda/deploy/deploy.yaml | 6 +++--- driver-redpanda/deploy/requirements.yaml | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/driver-redpanda/README.md b/driver-redpanda/README.md index c2731f98..fe444962 100644 --- a/driver-redpanda/README.md +++ b/driver-redpanda/README.md @@ -24,7 +24,7 @@ 4. To setup the deployed nodes. Run: ansible-playbook \ - --user fedora \ + --user ubuntu \ --inventory `which terraform-inventory` \ deploy.yaml @@ -32,7 +32,7 @@ 1. SSH to the client machine. - ssh -i ~/.ssh/redpanda_aws fedora@$(terraform output client_ssh_host) + ssh -i ~/.ssh/redpanda_aws ubuntu@$(terraform output client_ssh_host) 2. Change into the benchmark directory diff --git a/driver-redpanda/deploy/deploy.yaml b/driver-redpanda/deploy/deploy.yaml index b8deda09..03e3be02 100644 --- a/driver-redpanda/deploy/deploy.yaml +++ b/driver-redpanda/deploy/deploy.yaml @@ -135,13 +135,13 @@ - name: add the redpanda yum repo when: ansible_os_family == 'RedHat' shell: | - curl -s https://ceba06f0585fdd548c3106334751dcd75abf0d043320fab5:@packagecloud.io/install/repositories/vectorizedio/v/script.rpm.sh | sudo bash + curl -1sLf 'https://packages.vectorized.io/nzc4ZYQK3WRGd9sy/redpanda/cfg/setup/bash.rpm.sh' | sudo -E bash args: warn: no - name: add the repanda apt repo when: ansible_os_family == 'Debian' shell: | - curl -s https://ceba06f0585fdd548c3106334751dcd75abf0d043320fab5:@packagecloud.io/install/repositories/vectorizedio/v/script.deb.sh | sudo bash + curl -1sLf 'https://packages.vectorized.io/nzc4ZYQK3WRGd9sy/redpanda/cfg/setup/bash.deb.sh' | sudo -E bash args: warn: no - name: install redpanda @@ -292,7 +292,7 @@ - name: Install Node Exporter hosts: redpanda, client roles: - - cloudalchemy.node-exporter + - cloudalchemy.node_exporter - name: create a local tmp directory hosts: localhost diff --git a/driver-redpanda/deploy/requirements.yaml b/driver-redpanda/deploy/requirements.yaml index 8c57768f..dcb57378 100644 --- a/driver-redpanda/deploy/requirements.yaml +++ b/driver-redpanda/deploy/requirements.yaml @@ -20,4 +20,4 @@ - src: mrlesmithjr.mdadm - src: cloudalchemy.prometheus - src: cloudalchemy.grafana -- src: cloudalchemy.node-exporter \ No newline at end of file +- src: cloudalchemy.node_exporter From c42ccb26c9acc30ac3b055dbcd2762fdeef6c1d9 Mon Sep 17 00:00:00 2001 From: Patrick Angeles Date: Wed, 28 Jul 2021 07:33:28 -0400 Subject: [PATCH 39/47] Update README.md --- driver-redpanda/README.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/driver-redpanda/README.md b/driver-redpanda/README.md index fe444962..215a7524 100644 --- a/driver-redpanda/README.md +++ b/driver-redpanda/README.md @@ -28,6 +28,25 @@ --inventory `which terraform-inventory` \ deploy.yaml +Note: you might encounter the following error: + +``` +[WARNING]: * Failed to parse /opt/homebrew/bin/terraform-inventory with script plugin: Inventory script (/opt/homebrew/bin/terraform-inventory) had an execution error: Error reading tfstate file: +0.12 format error: ; pre-0.12 format error: (nil error means no content/modules found in the respective format) +[WARNING]: * Failed to parse /opt/homebrew/bin/terraform-inventory with yaml plugin: 'utf-8' codec can't encode characters in position 0-3: surrogates not allowed +[WARNING]: * Failed to parse /opt/homebrew/bin/terraform-inventory with ini plugin: /opt/homebrew/bin/terraform-inventory:3: Expected key=value host variable assignment, got: +[WARNING]: Unable to parse /opt/homebrew/bin/terraform-inventory as an inventory source + +``` + +In that case, we've found this workaround setting the TF_STATE environment variable helps: + +``` +export TF_STATE=./ +``` + +Then try running the ansible command again. + ## Running the benchmark 1. SSH to the client machine. From 9e364ff623ba8fe3705f1c788127d1eb982df09f Mon Sep 17 00:00:00 2001 From: James Kinley Date: Sun, 14 Nov 2021 07:46:49 +0000 Subject: [PATCH 40/47] Configurable warm-up duration --- .../src/main/java/io/openmessaging/benchmark/Workload.java | 3 ++- .../java/io/openmessaging/benchmark/WorkloadGenerator.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/benchmark-framework/src/main/java/io/openmessaging/benchmark/Workload.java b/benchmark-framework/src/main/java/io/openmessaging/benchmark/Workload.java index b67ce8d1..71769e79 100644 --- a/benchmark-framework/src/main/java/io/openmessaging/benchmark/Workload.java +++ b/benchmark-framework/src/main/java/io/openmessaging/benchmark/Workload.java @@ -53,10 +53,11 @@ public class Workload { */ public long consumerBacklogSizeGB = 0; + public int warmupDurationMinutes = 30; public int testDurationMinutes; /** - * Consumer only tests. The warn-up phase will be run w/ the specified producer + * Consumer only tests. The warm-up phase will be run w/ the specified producer * configuration until the specified backlog is built. Following that, the * producers are shut off and the consumers are run until the backlog is drained */ diff --git a/benchmark-framework/src/main/java/io/openmessaging/benchmark/WorkloadGenerator.java b/benchmark-framework/src/main/java/io/openmessaging/benchmark/WorkloadGenerator.java index 7ace88ef..1fa2ac31 100644 --- a/benchmark-framework/src/main/java/io/openmessaging/benchmark/WorkloadGenerator.java +++ b/benchmark-framework/src/main/java/io/openmessaging/benchmark/WorkloadGenerator.java @@ -112,7 +112,7 @@ public TestResult run() throws Exception { worker.startLoad(producerWorkAssignment); - printAndCollectStats(30, TimeUnit.MINUTES); + printAndCollectStats(workload.warmupDurationMinutes, TimeUnit.MINUTES); if (workload.consumerBacklogSizeGB > 0) { executor.execute(() -> { From 2a114bf9d85fc4de3f9f67b2c073fccae75a3ce7 Mon Sep 17 00:00:00 2001 From: Patrick Angeles Date: Fri, 18 Mar 2022 17:51:50 -0400 Subject: [PATCH 41/47] MSK! --- driver-msk/README.md | 3 + driver-msk/deploy/alicloud/ansible.cfg | 8 + driver-msk/deploy/alicloud/deploy.yaml | 184 + .../alicloud/provision-kafka-alicloud.tf | 107 + driver-msk/deploy/alicloud/terraform.tfvars | 19 + driver-msk/deploy/ansible.cfg | 8 + driver-msk/deploy/deploy.yaml | 504 + driver-msk/deploy/monitoring/Dockerfile | 54 + driver-msk/deploy/monitoring/README.md | 3 + driver-msk/deploy/monitoring/dashboards.yaml | 45 + .../deploy/monitoring/dashboards/jvm.json | 2557 +++ .../deploy/monitoring/dashboards/perf.json | 878 + .../monitoring/dashboards/prometheus.json | 719 + .../monitoring/dashboards/pulsar_perf.json | 1036 ++ .../monitoring/dashboards/rabbit_perf.json | 892 + .../deploy/monitoring/dashboards/system.json | 14051 ++++++++++++++++ .../monitoring/dashboards/zookeeper.json | 953 ++ driver-msk/deploy/monitoring/grafana.ini | 39 + .../deploy/monitoring/jmx_exporter/client.yml | 22 + .../jmx_prometheus_javaagent-0.13.0.jar | Bin 0 -> 374371 bytes .../monitoring/jmx_exporter/metrics.yml | 122 + .../monitoring/jmx_exporter/zookeeper.yml | 123 + driver-msk/deploy/monitoring/start.sh | 39 + driver-msk/deploy/provision-msk.tf | 260 + .../deploy/templates/benchmark-worker.service | 14 + driver-msk/deploy/templates/chrony.conf | 54 + .../deploy/templates/kafka-dashboard.service | 16 + driver-msk/deploy/templates/kafka.service | 19 + driver-msk/deploy/templates/myid | 1 + .../deploy/templates/prometheus.service | 13 + driver-msk/deploy/templates/prometheus.yml | 83 + driver-msk/deploy/templates/server.properties | 38 + driver-msk/deploy/templates/workers.yaml | 24 + .../deploy/templates/zookeeper.properties | 49 + driver-msk/deploy/templates/zookeeper.service | 14 + driver-msk/deploy/terraform.tfvars | 15 + driver-msk/kafka-0.yaml | 40 + driver-msk/kafka-1.yaml | 40 + driver-msk/kafka-all.yaml | 41 + driver-msk/kafka-exactly-once.yaml | 43 + driver-msk/kafka-group-all.yaml | 42 + driver-msk/kafka-sync-0.yaml | 44 + driver-msk/kafka-sync-1.yaml | 44 + driver-msk/kafka-sync-all.yaml | 44 + driver-msk/kafka-sync-group-all-1ms.yaml | 41 + driver-msk/kafka-sync-group-all.yaml | 42 + driver-msk/pom.xml | 70 + .../benchmark/driver/kafka/Config.java | 33 + .../driver/kafka/KafkaBenchmarkConsumer.java | 84 + .../driver/kafka/KafkaBenchmarkDriver.java | 183 + .../driver/kafka/KafkaBenchmarkProducer.java | 61 + 51 files changed, 23818 insertions(+) create mode 100644 driver-msk/README.md create mode 100644 driver-msk/deploy/alicloud/ansible.cfg create mode 100644 driver-msk/deploy/alicloud/deploy.yaml create mode 100644 driver-msk/deploy/alicloud/provision-kafka-alicloud.tf create mode 100644 driver-msk/deploy/alicloud/terraform.tfvars create mode 100644 driver-msk/deploy/ansible.cfg create mode 100644 driver-msk/deploy/deploy.yaml create mode 100644 driver-msk/deploy/monitoring/Dockerfile create mode 100644 driver-msk/deploy/monitoring/README.md create mode 100644 driver-msk/deploy/monitoring/dashboards.yaml create mode 100644 driver-msk/deploy/monitoring/dashboards/jvm.json create mode 100644 driver-msk/deploy/monitoring/dashboards/perf.json create mode 100644 driver-msk/deploy/monitoring/dashboards/prometheus.json create mode 100644 driver-msk/deploy/monitoring/dashboards/pulsar_perf.json create mode 100644 driver-msk/deploy/monitoring/dashboards/rabbit_perf.json create mode 100644 driver-msk/deploy/monitoring/dashboards/system.json create mode 100644 driver-msk/deploy/monitoring/dashboards/zookeeper.json create mode 100644 driver-msk/deploy/monitoring/grafana.ini create mode 100644 driver-msk/deploy/monitoring/jmx_exporter/client.yml create mode 100644 driver-msk/deploy/monitoring/jmx_exporter/jmx_prometheus_javaagent-0.13.0.jar create mode 100644 driver-msk/deploy/monitoring/jmx_exporter/metrics.yml create mode 100644 driver-msk/deploy/monitoring/jmx_exporter/zookeeper.yml create mode 100755 driver-msk/deploy/monitoring/start.sh create mode 100644 driver-msk/deploy/provision-msk.tf create mode 100644 driver-msk/deploy/templates/benchmark-worker.service create mode 100644 driver-msk/deploy/templates/chrony.conf create mode 100644 driver-msk/deploy/templates/kafka-dashboard.service create mode 100644 driver-msk/deploy/templates/kafka.service create mode 100644 driver-msk/deploy/templates/myid create mode 100644 driver-msk/deploy/templates/prometheus.service create mode 100644 driver-msk/deploy/templates/prometheus.yml create mode 100644 driver-msk/deploy/templates/server.properties create mode 100644 driver-msk/deploy/templates/workers.yaml create mode 100644 driver-msk/deploy/templates/zookeeper.properties create mode 100644 driver-msk/deploy/templates/zookeeper.service create mode 100644 driver-msk/deploy/terraform.tfvars create mode 100644 driver-msk/kafka-0.yaml create mode 100644 driver-msk/kafka-1.yaml create mode 100644 driver-msk/kafka-all.yaml create mode 100644 driver-msk/kafka-exactly-once.yaml create mode 100644 driver-msk/kafka-group-all.yaml create mode 100644 driver-msk/kafka-sync-0.yaml create mode 100644 driver-msk/kafka-sync-1.yaml create mode 100644 driver-msk/kafka-sync-all.yaml create mode 100644 driver-msk/kafka-sync-group-all-1ms.yaml create mode 100644 driver-msk/kafka-sync-group-all.yaml create mode 100644 driver-msk/pom.xml create mode 100644 driver-msk/src/main/java/io/openmessaging/benchmark/driver/kafka/Config.java create mode 100644 driver-msk/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkConsumer.java create mode 100644 driver-msk/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkDriver.java create mode 100644 driver-msk/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkProducer.java diff --git a/driver-msk/README.md b/driver-msk/README.md new file mode 100644 index 00000000..6ec3eba6 --- /dev/null +++ b/driver-msk/README.md @@ -0,0 +1,3 @@ +# Apache Kafka benchmarks + +For instructions on running the OpenMessaging bencmarks for Kafka, see the [official documentation](http://openmessaging.cloud/docs/benchmarks/kafka). diff --git a/driver-msk/deploy/alicloud/ansible.cfg b/driver-msk/deploy/alicloud/ansible.cfg new file mode 100644 index 00000000..5e22902d --- /dev/null +++ b/driver-msk/deploy/alicloud/ansible.cfg @@ -0,0 +1,8 @@ +[defaults] +host_key_checking=false +private_key_file=benchmark_message_alicloud.pem + +[privilege_escalation] +become=true +become_method='sudo' +become_user='root' diff --git a/driver-msk/deploy/alicloud/deploy.yaml b/driver-msk/deploy/alicloud/deploy.yaml new file mode 100644 index 00000000..8cd0ed1d --- /dev/null +++ b/driver-msk/deploy/alicloud/deploy.yaml @@ -0,0 +1,184 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +- name: Format and mount disks for Kafka hosts + hosts: kafka + connection: ssh + become: true + tasks: + - command: > + tuned-adm profile latency-performance + - name: Format disks + filesystem: + fstype: xfs + dev: '{{ item }}' + with_items: + - '/dev/vdb' + - '/dev/vdc' + - name: Mount disks + mount: + path: "{{ item.path }}" + src: "{{ item.src }}" + fstype: xfs + opts: defaults,noatime,nodiscard + state: mounted + with_items: + - { path: "/mnt/data-1", src: "/dev/vdb" } + - { path: "/mnt/data-2", src: "/dev/vdc" } + +- name: Kafka setup + hosts: all + connection: ssh + become: true + tasks: + - name: Install RPM packages + yum: pkg={{ item }} state=latest + with_items: + - wget + - java + - sysstat + - vim + - file: path=/opt/kafka state=absent + - file: path=/opt/kafka state=directory + - set_fact: + zookeeperServers: "{{ groups['zookeeper'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^(.*)$', '\\1:2181') | join(',') }}" + boostrapServers: "{{ groups['kafka'] | map('extract', hostvars, ['private_ip']) | map('regex_replace', '^(.*)$', '\\1:9092') | join(',') }}" + kafkaVersion: "2.0.0" + - debug: + msg: "zookeeper servers: {{ zookeeperServers }}\nboostrap servers: {{ boostrapServers }}" + - name: Download Kafka package + unarchive: + src: http://mirrors.ocf.berkeley.edu/apache/kafka/{{ kafkaVersion }}/kafka_2.11-{{ kafkaVersion }}.tgz + remote_src: yes + dest: /opt/kafka + extra_opts: ["--strip-components=1"] + - set_fact: + privateIp: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" + - name: Change locale to en_US.utf-8 + shell: | + echo 'LANG=en_US.utf-8 + LC_ALL=en_US.utf-8' > /etc/environment + +- name: Setup ZooKeeper + hosts: zookeeper + connection: ssh + become: true + tasks: + - set_fact: + zid: "{{ groups['zookeeper'].index(inventory_hostname) }}" + - file: + path: "/opt/kafka/data/zookeeper" + state: directory + - template: + src: "../templates/zookeeper.properties" + dest: "/opt/kafka/config/zookeeper.properties" + - template: + src: ../templates/myid + dest: "/opt/kafka/data/zookeeper/myid" + - template: + src: "../templates/zookeeper.service" + dest: "/etc/systemd/system/zookeeper.service" + - systemd: + state: restarted + daemon_reload: yes + name: "zookeeper" + +- name: Setup Kafka + hosts: kafka + connection: ssh + become: true + tasks: + - set_fact: + brokerId: "{{ groups['kafka'].index(inventory_hostname) }}" + - name: Set up broker + template: + src: "../templates/server.properties" + dest: "/opt/kafka/config/server.properties" + - template: + src: "../templates/kafka.service" + dest: "/etc/systemd/system/kafka.service" + - systemd: + state: restarted + daemon_reload: yes + name: "kafka" + +- name: Setup Benchmark client + hosts: client + connection: ssh + become: true + tasks: + - file: path=/opt/benchmark state=absent + - name: Copy benchmark code + unarchive: + src: ../../../package/target/openmessaging-benchmark-0.0.1-SNAPSHOT-bin.tar.gz + dest: /opt + - shell: mv /opt/openmessaging-benchmark-0.0.1-SNAPSHOT /opt/benchmark + - shell: tuned-adm profile latency-performance + + - name: Get list of driver config files + raw: ls -1 /opt/benchmark/driver-kafka/*.yaml + register: drivers_list + + - name: Configure URL + lineinfile: + dest: /opt/benchmark/driver-kafka/kafka.yaml + regexp: '^ bootstrap.servers=' + line: ' bootstrap.servers={{ boostrapServers }}' + with_items: '{{ drivers_list.stdout_lines }}' + - name: Configure memory + lineinfile: + dest: /opt/benchmark/bin/benchmark-worker + regexp: '^JVM_MEM=' + line: 'JVM_MEM="-Xms12G -Xmx12G -XX:+UseG1GC -XX:MaxGCPauseMillis=10 -XX:+ParallelRefProcEnabled -XX:+UnlockExperimentalVMOptions -XX:+AggressiveOpts -XX:+DoEscapeAnalysis -XX:ParallelGCThreads=32 -XX:ConcGCThreads=32 -XX:G1NewSizePercent=50 -XX:+DisableExplicitGC -XX:-ResizePLAB -XX:+PerfDisableSharedMem -XX:+AlwaysPreTouch -XX:-UseBiasedLocking"' + - name: Configure memory + lineinfile: + dest: /opt/benchmark/bin/benchmark + regexp: '^JVM_MEM=' + line: 'JVM_MEM="-Xmx1G"' + - template: + src: "../templates/workers.yaml" + dest: "/opt/benchmark/workers.yaml" + - name: Install benchmark systemd service + template: + src: "../templates/benchmark-worker.service" + dest: "/etc/systemd/system/benchmark-worker.service" + - systemd: + state: restarted + daemon_reload: yes + name: "benchmark-worker" + - name: wait worker + wait_for: + host: '*' + port: 8080 + state: started + timeout: 300 + +- name: Hosts addresses + hosts: localhost + become: false + tasks: + - debug: + msg: "Zookeeper servers {{ item }}" + with_items: "{{ groups['zookeeper'] }}" + - debug: + msg: "Kafka brokers {{ item }}" + with_items: "{{ groups['kafka'] }}" + - debug: + msg: "Benchmark clients {{ item }}" + with_items: "{{ groups['client'] }}" diff --git a/driver-msk/deploy/alicloud/provision-kafka-alicloud.tf b/driver-msk/deploy/alicloud/provision-kafka-alicloud.tf new file mode 100644 index 00000000..01ec2892 --- /dev/null +++ b/driver-msk/deploy/alicloud/provision-kafka-alicloud.tf @@ -0,0 +1,107 @@ +# Define variables + +variable "region" {} +variable "private_key_file" {} +variable "key_name" {} +variable "image_id" {} +variable "availability_zone" {} +variable "instance_types" { + type = "map" +} + +variable "num_instances" { + type = "map" +} + +# Configure the Alicloud Provider +provider "alicloud" { + region = "${var.region}" +} + + +# Create zookeeper +resource "alicloud_instance" "zookeeper" { + provider = "alicloud" + image_id = "${var.image_id}" + availability_zone = "${var.availability_zone}" + + internet_charge_type = "PayByBandwidth" + + instance_type = "${var.instance_types["zookeeper"]}" + security_groups = ["${alicloud_security_group.default.id}"] + instance_name = "zookeeper" + internet_max_bandwidth_out = "1" + system_disk_category = "cloud_ssd" + system_disk_size = "64" + description = "developer_native_compare=message" + count = "${var.num_instances["zookeeper"]}" + key_name = "${alicloud_key_pair.key_pair.id}" + tags { + Name = "zk-${count.index}" + } +} + +# Create kafka +resource "alicloud_instance" "kafka" { + provider = "alicloud" + image_id = "${var.image_id}" + + internet_charge_type = "PayByBandwidth" + + instance_type = "${var.instance_types["kafka"]}" + security_groups = ["${alicloud_security_group.default.id}"] + instance_name = "kafka" + internet_max_bandwidth_out = "1" + description = "developer_native_compare=message" + count = "${var.num_instances["kafka"]}" + key_name = "${alicloud_key_pair.key_pair.id}" + tags { + Name = "kafka-${count.index}" + } +} + +# Create client +resource "alicloud_instance" "client" { + provider = "alicloud" + image_id = "${var.image_id}" + + internet_charge_type = "PayByBandwidth" + + instance_type = "${var.instance_types["client"]}" + security_groups = ["${alicloud_security_group.default.id}"] + instance_name = "client" + internet_max_bandwidth_out = "1" + description = "developer_native_compare=message" + count = "${var.num_instances["client"]}" + key_name = "${alicloud_key_pair.key_pair.id}" + tags { + Name = "kafka-client-${count.index}" + } +} + +# Create security group +resource "alicloud_security_group" "default" { + name = "default" + provider = "alicloud" + description = "default" +} + +resource "alicloud_security_group_rule" "allow_all_tcp" { + type = "ingress" + ip_protocol = "tcp" + nic_type = "internet" + policy = "accept" + port_range = "1/65535" + priority = 1 + security_group_id = "${alicloud_security_group.default.id}" + cidr_ip = "0.0.0.0/0" +} + +resource "alicloud_key_pair" "key_pair" { + key_name = "${var.key_name}" + key_file = "${var.private_key_file}" +} + +output "client_ssh_host" { + value = "${alicloud_instance.client.0.public_ip}" +} diff --git a/driver-msk/deploy/alicloud/terraform.tfvars b/driver-msk/deploy/alicloud/terraform.tfvars new file mode 100644 index 00000000..bae1c6af --- /dev/null +++ b/driver-msk/deploy/alicloud/terraform.tfvars @@ -0,0 +1,19 @@ +region = "cn-shenzhen" +availability_zone = "cn-shenzhen-b" +private_key_file = "benchmark_message_alicloud.pem" +key_name = "key-pair-from-terraform-benchmark-kafka" +image_id = "centos_7_04_64_20G_alibase_201701015.vhd" + + + +instance_types = { + "kafka" = "ecs.i1.xlarge" + "zookeeper" = "ecs.se1.xlarge" + "client" = "ecs.se1.xlarge" +} + +num_instances = { + "client" = 4 + "kafka" = 3 + "zookeeper" = 3 +} diff --git a/driver-msk/deploy/ansible.cfg b/driver-msk/deploy/ansible.cfg new file mode 100644 index 00000000..d1fac48c --- /dev/null +++ b/driver-msk/deploy/ansible.cfg @@ -0,0 +1,8 @@ +[defaults] +host_key_checking=false +private_key_file=~/.ssh/kafka_aws + +[privilege_escalation] +become=true +become_method='sudo' +become_user='root' \ No newline at end of file diff --git a/driver-msk/deploy/deploy.yaml b/driver-msk/deploy/deploy.yaml new file mode 100644 index 00000000..4418b3c3 --- /dev/null +++ b/driver-msk/deploy/deploy.yaml @@ -0,0 +1,504 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +- name: Collect profiles + hosts: kafka, client + become: true + tags: + - ["never", "profile"] + tasks: + - set_fact: + time: "{{ ansible_date_time.epoch }}" + - name: Generate Flame graph + tags: + - flame + shell: | + /tmp/profiler.sh -d 120 `pidof java` -f /tmp/flame.svg + - name: Fetch flame graph + tags: + - flame + fetch: + src: /tmp/flame.svg + dest: results/{{ group_names[0] }}/{{ time }}/{{ inventory_hostname }}/flame.svg + flat: yes + + # - name: Dump & compress heap + # tags: + # - heap + # shell: | + # jattach `pidof java` dumpheap /tmp/heap + # chmod 777 /tmp/heap + # tar -cvzf /tmp/heap.tar /tmp/heap + # - name: Fetch heap dump + # tags: + # - heap + # fetch: + # src: /tmp/heap.tar + # dest: results/{{ group_names[0] }}/{{ time }}/{{ inventory_hostname }}/heap.tar + # flat: yes + + - name: Heap allocation profile + tags: + - heap + shell: | + /tmp/profiler.sh -d 60 -e alloc -o svg -f /tmp/heap.svg 1 `pidof java` + chmod 777 /tmp/heap.svg + - name: Fetch heap dump + tags: + - heap + fetch: + src: /tmp/heap.svg + dest: results/{{ group_names[0] }}/{{ time }}/{{ inventory_hostname }}/heap.svg + flat: yes + +- name: Format and mount disks for Kafka hosts + hosts: kafka + connection: ssh + become: true + tasks: + - command: > + tuned-adm profile latency-performance + - name: Format disks + filesystem: + fstype: xfs + dev: "{{ item }}" + with_items: + - "/dev/nvme1n1" + - "/dev/nvme2n1" + - name: Mount disks + mount: + path: "{{ item.path }}" + src: "{{ item.src }}" + fstype: xfs + opts: defaults,noatime,nodiscard + state: mounted + with_items: + - { path: "/mnt/data-1", src: "/dev/nvme1n1" } + - { path: "/mnt/data-2", src: "/dev/nvme2n1" } + +- name: Store server lists + hosts: all + connection: ssh + tasks: + - set_fact: + zookeeperServers: "{{ groups['zookeeper'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^(.*)$', '\\1:2181') | join(',') }}" + boostrapServers: "{{ groups['kafka'] | map('extract', hostvars, ['private_ip']) | map('regex_replace', '^(.*)$', '\\1:9092') | join(',') }}" + +- name: Setup common packages + hosts: all + connection: ssh + become: true + tasks: + - name: Remove sysstat + yum: pkg={{ item }} state=absent + with_items: + - sysstat + - name: Install RPM packages + yum: pkg={{ item }} state=latest + with_items: + - wget + - java-11 + - sysstat + - vim + - chrony + - git + - gcc + - make + +- name: Kafka installation + hosts: kafka, zookeeper + connection: ssh + become: true + tasks: + - file: path=/opt/kafka state=absent + - file: path=/opt/kafka state=directory + - set_fact: + zookeeperServers: "{{ groups['zookeeper'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^(.*)$', '\\1:2181') | join(',') }}" + boostrapServers: "{{ groups['kafka'] | map('extract', hostvars, ['private_ip']) | map('regex_replace', '^(.*)$', '\\1:9092') | join(',') }}" + kafkaVersion: "2.7.0" + - debug: + msg: "zookeeper servers: {{ zookeeperServers }}\nboostrap servers: {{ boostrapServers }}" + + #################### Release #################### + - name: Download Kafka package + unarchive: + src: http://mirrors.ocf.berkeley.edu/apache/kafka/{{ kafkaVersion }}/kafka_2.13-{{ kafkaVersion }}.tgz + remote_src: yes + dest: /opt/kafka + extra_opts: ["--strip-components=1"] + + #################### Staging #################### + # # https://access.redhat.com/articles/5117881 + # - name: Fix Sectigo Root CA expiration issue + # shell: | + # trust dump --filter "pkcs11:id=%ad%bd%98%7a%34%b4%26%f7%fa%c4%26%54%ef%03%bd%e0%24%cb%54%1a;type=cert" > /etc/pki/ca-trust/source/blacklist/addtrust-external-root.p11-kit + # update-ca-trust + # - name: Download Kafka package + # unarchive: + # src: https://home.apache.org/~rhauch/kafka-2.6.0-rc2/kafka_2.13-2.6.0.tgz + # remote_src: yes + # dest: /opt/kafka + # extra_opts: ["--strip-components=1"] + + #################### Custom build #################### + # - name: Copy Kafka + # unarchive: + # src: /Users/anikhil/offsets_patch/core/build/distributions/kafka_2.13-2.7.0-SNAPSHOT.tgz + # dest: /opt/kafka + # extra_opts: ["--strip-components=1"] + + - set_fact: + privateIp: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" + - name: Change locale to en_US.utf-8 + shell: | + echo 'LANG=en_US.utf-8 + LC_ALL=en_US.utf-8' > /etc/environment + - name: Setup JMX for Prometheus + copy: + src: "monitoring/jmx_exporter/jmx_prometheus_javaagent-0.13.0.jar" + dest: "/opt/kafka/jmx_prometheus_javaagent-0.13.0.jar" + - name: Configure JMX for Prometheus (Kafka) + template: + src: "monitoring/jmx_exporter/metrics.yml" + dest: "/opt/kafka/metrics.yml" + - name: Configure JMX for Prometheus (Zookeeper) + template: + src: "monitoring/jmx_exporter/zookeeper.yml" + dest: "/opt/kafka/zookeeper.yml" + +- name: Setup ZooKeeper + hosts: zookeeper + connection: ssh + become: true + tasks: + - set_fact: + zid: "{{ groups['zookeeper'].index(inventory_hostname) }}" + - file: + path: "/opt/kafka/data/zookeeper" + state: directory + - template: + src: "templates/zookeeper.properties" + dest: "/opt/kafka/config/zookeeper.properties" + - template: + src: templates/myid + dest: "/opt/kafka/data/zookeeper/myid" + - template: + src: "templates/zookeeper.service" + dest: "/etc/systemd/system/zookeeper.service" + - systemd: + state: restarted + daemon_reload: yes + name: "zookeeper" + +- name: Setup Kafka + hosts: kafka + connection: ssh + become: true + tags: + - configure + tasks: + - set_fact: + brokerId: "{{ groups['kafka'].index(inventory_hostname) }}" + privateIp: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" + zookeeperServers: "{{ groups['zookeeper'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^(.*)$', '\\1:2181') | join(',') }}" + - name: Set up broker + template: + src: "templates/server.properties" + dest: "/opt/kafka/config/server.properties" + - template: + src: "templates/kafka.service" + dest: "/etc/systemd/system/kafka.service" + - systemd: + state: restarted + daemon_reload: yes + name: "kafka" + - git: + repo: "https://github.com/sysstat/sysstat" + dest: "/opt/sysstat" + - name: Compile and install sysstat from source + shell: | + cd /opt/sysstat + ./configure + make -j`nproc` + sudo make install + +- name: Chrony setup + hosts: client + connection: ssh + become: true + tasks: + - name: Set up chronyd + template: + src: "templates/chrony.conf" + dest: "/etc/chrony.conf" + - systemd: + state: restarted + daemon_reload: yes + name: "chronyd" + +- name: Setup Benchmark client + hosts: client + connection: ssh + become: true + tasks: + - file: path=/opt/benchmark state=absent + - name: Copy benchmark code + unarchive: + src: ../../package/target/openmessaging-benchmark-0.0.1-SNAPSHOT-bin.tar.gz + dest: /opt + - shell: mv /opt/openmessaging-benchmark-0.0.1-SNAPSHOT /opt/benchmark + - shell: tuned-adm profile latency-performance + + - name: Get list of driver config files + raw: ls -1 /opt/benchmark/driver-kafka/*.yaml + register: drivers_list + + - name: Configure URL + lineinfile: + dest: "{{ item }}" + regexp: "^ bootstrap.servers=" + line: " bootstrap.servers={{ boostrapServers }}" + with_items: "{{ drivers_list.stdout_lines }}" + - name: Configure memory + lineinfile: + dest: /opt/benchmark/bin/benchmark-worker + regexp: "^JVM_MEM=" + line: 'JVM_MEM="-Xms16G -Xmx16G -XX:+UseG1GC -XX:MaxGCPauseMillis=10 -XX:+ParallelRefProcEnabled -XX:+UnlockExperimentalVMOptions -XX:+AggressiveOpts -XX:+DoEscapeAnalysis -XX:ParallelGCThreads=32 -XX:ConcGCThreads=32 -XX:G1NewSizePercent=50 -XX:+DisableExplicitGC -XX:-ResizePLAB -XX:+PerfDisableSharedMem -XX:+AlwaysPreTouch -XX:-UseBiasedLocking"' + - name: Configure memory + lineinfile: + dest: /opt/benchmark/bin/benchmark + regexp: "^JVM_MEM=" + line: 'JVM_MEM="-Xmx1G"' + - name: Setup JMX for Producer/Consumer clients + copy: + src: "monitoring/jmx_exporter/jmx_prometheus_javaagent-0.13.0.jar" + dest: "/opt/benchmark/jmx_prometheus_javaagent-0.13.0.jar" + - name: Configure JMX for Prometheus (Client) + template: + src: "monitoring/jmx_exporter/client.yml" + dest: "/opt/benchmark/metrics.yml" + - template: + src: "templates/workers.yaml" + dest: "/opt/benchmark/workers.yaml" + - name: Install benchmark systemd service + template: + src: "templates/benchmark-worker.service" + dest: "/etc/systemd/system/benchmark-worker.service" + - name: "Restart benchmark worker" + tags: + - configure + systemd: + state: restarted + daemon_reload: yes + name: "benchmark-worker" + +- name: Hosts addresses + hosts: localhost + become: false + tasks: + - debug: + msg: "Zookeeper servers {{ item }}" + with_items: "{{ groups['zookeeper'] }}" + - debug: + msg: "Kafka brokers {{ item }}" + with_items: "{{ groups['kafka'] }}" + - debug: + msg: "Benchmark clients {{ item }}" + with_items: "{{ groups['client'] }}" + +# Install the monitoring stack +- name: Install Node Exporter + hosts: kafka, client + roles: + - cloudalchemy.node-exporter + +- hosts: prometheus + roles: + - cloudalchemy.prometheus + vars: + prometheus_scrape_configs: + - job_name: "broker" + static_configs: + - targets: "{{ groups['kafka'] | map('extract', hostvars, ['ansible_default_ipv4','address']) | map('regex_replace', '^(.*)$','\\1:8080') | list }}" + - job_name: "node" + static_configs: + - targets: "{{ groups['kafka'] | map('extract', hostvars, ['ansible_default_ipv4','address']) | map('regex_replace', '^(.*)$','\\1:9100') | list }}" + - targets: "{{ groups['client'] | map('extract', hostvars, ['ansible_default_ipv4','address']) | map('regex_replace', '^(.*)$','\\1:9100') | list }}" + - job_name: "client - jmx" + static_configs: + - targets: "{{ groups['client'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^(.*)$', '\\1:9090') | list }}" + - job_name: "client" + static_configs: + - targets: "{{ groups['client'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^(.*)$', '\\1:8081') | list }}" + +#- name: jmx export setup +# hosts: prometheus +# connection: ssh +# become: true +# tasks: +# - template: +# src: "templates/kafka-dashboard.service" +# dest: "/etc/systemd/system/kafka-dashboard.service" +# - systemd: +# state: restarted +# daemon_reload: yes +# name: "kafka-dashboard" + +- hosts: prometheus + roles: + - cloudalchemy.grafana + vars: + grafana_version: 6.7.3 + grafana_security: + admin_user: admin + admin_password: enter_your_secure_password + grafana_datasources: + - name: prometheus + type: prometheus + access: proxy + url: 'http://localhost:9090' + basicAuth: false + grafana_dashboards: + - dashboard_id: 1860 + revision_id: 21 + datasource: prometheus + +# Setup the Prometheus/Grafana monitoring stack +#- name: Prometheus installation +# hosts: prometheus +# connection: ssh +# become: true +# tasks: +# - name: Add Extras Repo +# shell: yum-config-manager --enable rhui-REGION-rhel-server-extras +# - name: Install RPM packages +# yum: pkg={{ item }} state=latest +# with_items: +# - docker +# - set_fact: +# prometheusVersion: "2.19.3" +# - file: path=/opt/prometheus state=absent +# - file: path=/opt/prometheus state=directory +# - name: Download Prometheus Binary Package +# unarchive: +# src: "https://github.com/prometheus/prometheus/releases/download/v{{ prometheusVersion }}/prometheus-{{ prometheusVersion }}.linux-amd64.tar.gz" +# remote_src: yes +# dest: /opt/prometheus +# extra_opts: ["--strip-components=1"] +# - set_fact: +# private_ip: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" +# +#- name: Prometheus setup +# hosts: prometheus +# connection: ssh +# become: true +# tasks: +# - file: +# path: "/opt/prometheus/{{ item }}" +# state: directory +# with_items: +# - data +# - template: +# src: "templates/prometheus.service" +# dest: "/etc/systemd/system/prometheus.service" +# - template: +# src: "templates/kafka-dashboard.service" +# dest: "/etc/systemd/system/kafka-dashboard.service" +# - template: +# src: "templates/prometheus.yml" +# dest: "/opt/prometheus/prometheus.yml" +# - systemd: +# state: restarted +# daemon_reload: yes +# name: "kafka-dashboard" +# +#- name: Install Node exporter on Brokers to collect system metrics +# hosts: kafka +# become: true +# tasks: +# - name: Add user node_exporter +# user: +# name: node_exporter +# shell: /bin/false +# system: true +# create_home: no +# +# - name: Download and extract +# unarchive: +# src: https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz +# dest: /tmp +# remote_src: yes +# +# - name: Copy bin node_exporter to /usr/local/bin +# copy: +# src: /tmp/node_exporter-1.0.1.linux-amd64/node_exporter +# remote_src: yes +# dest: /usr/local/bin/ +# owner: node_exporter +# group: node_exporter +# mode: u+x,g+x,o+x +# +# - name: Create service node_exporter.service +# blockinfile: +# path: /etc/systemd/system/node_exporter.service +# block: | +# [Unit] +# Description=Prometheus Node Exporter +# Wants=network-online.target +# After=network-online.target +# [Service] +# User=node_exporter +# Group=node_exporter +# Type=simple +# ExecStart=/usr/local/bin/node_exporter +# [Install] +# WantedBy=multi-user.target +# create: true +# +# - name: systemctl daemon_reload +# systemd: +# daemon_reload: yes +# +# - name: Start and Enable node_exporter +# service: +# name: node_exporter +# state: started +# enabled: yes +# +# - name: Check whether port 9100 is available +# wait_for: +# port: 9100 +# state: started +# timeout: 5 + +- name: Install jattach and async-profiler + hosts: all + become: true + tasks: + - name: Download and extract async-profiler + unarchive: + src: https://github.com/jvm-profiling-tools/async-profiler/releases/download/v1.7.1/async-profiler-1.7.1-linux-x64.tar.gz + dest: /tmp + remote_src: yes + + - name: Download and install jattach + get_url: + url: https://github.com/apangin/jattach/releases/download/v1.5/jattach + dest: /usr/bin/jattach + mode: "0755" diff --git a/driver-msk/deploy/monitoring/Dockerfile b/driver-msk/deploy/monitoring/Dockerfile new file mode 100644 index 00000000..0ae4874d --- /dev/null +++ b/driver-msk/deploy/monitoring/Dockerfile @@ -0,0 +1,54 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +FROM grafana/grafana:7.0.5 + +USER root + +# Install the Grafana Image Rendering Plugin +ENV GF_PATHS_PLUGINS="/var/lib/grafana-plugins" +RUN mkdir -p "$GF_PATHS_PLUGINS" && \ + chown -R grafana:grafana "$GF_PATHS_PLUGINS" +RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories && \ + echo "http://dl-cdn.alpinelinux.org/alpine/edge/main" >> /etc/apk/repositories && \ + echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories && \ + apk --no-cache upgrade && \ + apk add --no-cache udev ttf-opensans chromium && \ + rm -rf /tmp/* && \ + rm -rf /usr/share/grafana/tools/phantomjs; +USER grafana +ENV GF_RENDERER_PLUGIN_CHROME_BIN="/usr/bin/chromium-browser" +RUN grafana-cli \ + --pluginsDir "$GF_PATHS_PLUGINS" \ + --pluginUrl https://github.com/grafana/grafana-image-renderer/releases/latest/download/plugin-linux-x64-glibc-no-chromium.zip \ + plugins install grafana-image-renderer; + +USER root +COPY dashboards.yaml /etc/grafana/provisioning/dashboards/dashboards.yaml +RUN apk add curl +USER grafana +COPY grafana.ini /etc/grafana/grafana.ini +COPY dashboards/* /var/lib/grafana/dashboards/ +COPY start.sh /start.sh + +EXPOSE 3000 + +ENV PROMETHEUS_URL http://prometheus:9090 + +ENTRYPOINT ["/start.sh"] diff --git a/driver-msk/deploy/monitoring/README.md b/driver-msk/deploy/monitoring/README.md new file mode 100644 index 00000000..1db30933 --- /dev/null +++ b/driver-msk/deploy/monitoring/README.md @@ -0,0 +1,3 @@ +# Kafka dashboard for the Open Messaging Benchmark using the Prometheus/Grafana stack + +- Builds a docker image diff --git a/driver-msk/deploy/monitoring/dashboards.yaml b/driver-msk/deploy/monitoring/dashboards.yaml new file mode 100644 index 00000000..4a9c9c4a --- /dev/null +++ b/driver-msk/deploy/monitoring/dashboards.yaml @@ -0,0 +1,45 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +apiVersion: 1 + +providers: + # an unique provider name. Required + - name: "Default Dashboards" + # Org id. Default to 1 + orgId: 1 + # name of the dashboard folder. + folder: "" + # folder UID. will be automatically generated if not specified + folderUid: "" + # provider type. Default to 'file' + type: file + # disable dashboard deletion + disableDeletion: true + # enable dashboard editing + editable: true + # how often Grafana will scan for changed dashboards + updateIntervalSeconds: 10 + # allow updating provisioned dashboards from the UI + allowUiUpdates: true + options: + # path to dashboard files on disk. Required when using the 'file' type + path: /var/lib/grafana/dashboards + # use folder names from filesystem to create folders in Grafana + foldersFromFilesStructure: true diff --git a/driver-msk/deploy/monitoring/dashboards/jvm.json b/driver-msk/deploy/monitoring/dashboards/jvm.json new file mode 100644 index 00000000..8d5ee19b --- /dev/null +++ b/driver-msk/deploy/monitoring/dashboards/jvm.json @@ -0,0 +1,2557 @@ +{ + "annotations": { + "list": [] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "hideControls": false, + "id": 2, + "links": [], + "refresh": "1m", + "rows": [ + { + "collapse": false, + "height": 221, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 1, + "fill": 1, + "id": 4, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-232tg", + "value": "bookie-232tg" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(process_cpu_seconds_total{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]) * 100\n\n", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "process_cpu_seconds_total", + "refId": "A", + "step": 20 + } + ], + "thresholds": [ + { + "colorMode": "ok", + "fill": false, + "line": true, + "op": "gt", + "value": 100 + } + ], + "timeFrom": null, + "timeShift": null, + "title": "CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percent", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "id": 1, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": false, + "max": false, + "min": false, + "rightSide": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-232tg", + "value": "bookie-232tg" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(jvm_memory_bytes_committed{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Heap size", + "metric": "jvm_memory_bytes_committed", + "refId": "A", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_bytes_used", + "refId": "B", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_bytes_max", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Heap Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 2, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-232tg", + "value": "bookie-232tg" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "jvm_memory_direct_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_direct_bytes_used", + "refId": "A", + "step": 20 + }, + { + "expr": "jvm_memory_direct_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_direct_bytes_max", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Direct Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 3, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-232tg", + "value": "bookie-232tg" + } + }, + "seriesOverrides": [ + { + "alias": "old count", + "yaxis": 2 + }, + { + "alias": "young count", + "yaxis": 2 + } + ], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(increase(jvm_gc_collection_seconds_sum{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]))", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Pause", + "metric": "jvm_gc_collection_seconds_count", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "GC Pauses", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": false + } + ] + } + ], + "repeat": "instance", + "repeatIteration": null, + "repeatRowId": null, + "showTitle": true, + "title": "$component $instance", + "titleSize": "h4" + }, + { + "collapse": false, + "height": 221, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 1, + "fill": 1, + "id": 5, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-44jrt", + "value": "bookie-44jrt" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(process_cpu_seconds_total{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]) * 100\n\n", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "process_cpu_seconds_total", + "refId": "A", + "step": 20 + } + ], + "thresholds": [ + { + "colorMode": "ok", + "fill": false, + "line": true, + "op": "gt", + "value": 100 + } + ], + "timeFrom": null, + "timeShift": null, + "title": "CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percent", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "id": 6, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": false, + "max": false, + "min": false, + "rightSide": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-44jrt", + "value": "bookie-44jrt" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(jvm_memory_bytes_committed{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Heap size", + "metric": "jvm_memory_bytes_committed", + "refId": "A", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_bytes_used", + "refId": "B", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_bytes_max", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Heap Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 7, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-44jrt", + "value": "bookie-44jrt" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "jvm_memory_direct_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_direct_bytes_used", + "refId": "A", + "step": 20 + }, + { + "expr": "jvm_memory_direct_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_direct_bytes_max", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Direct Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 8, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-44jrt", + "value": "bookie-44jrt" + } + }, + "seriesOverrides": [ + { + "alias": "old count", + "yaxis": 2 + }, + { + "alias": "young count", + "yaxis": 2 + } + ], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(increase(jvm_gc_collection_seconds_sum{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]))", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Pause", + "metric": "jvm_gc_collection_seconds_count", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "GC Pauses", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": false + } + ] + } + ], + "repeat": null, + "repeatIteration": 1496162786419, + "repeatRowId": 1, + "showTitle": true, + "title": "$component $instance", + "titleSize": "h4" + }, + { + "collapse": false, + "height": 221, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 1, + "fill": 1, + "id": 9, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-73k0d", + "value": "bookie-73k0d" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(process_cpu_seconds_total{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]) * 100\n\n", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "process_cpu_seconds_total", + "refId": "A", + "step": 20 + } + ], + "thresholds": [ + { + "colorMode": "ok", + "fill": false, + "line": true, + "op": "gt", + "value": 100 + } + ], + "timeFrom": null, + "timeShift": null, + "title": "CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percent", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "id": 10, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": false, + "max": false, + "min": false, + "rightSide": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-73k0d", + "value": "bookie-73k0d" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(jvm_memory_bytes_committed{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Heap size", + "metric": "jvm_memory_bytes_committed", + "refId": "A", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_bytes_used", + "refId": "B", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_bytes_max", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Heap Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 11, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-73k0d", + "value": "bookie-73k0d" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "jvm_memory_direct_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_direct_bytes_used", + "refId": "A", + "step": 20 + }, + { + "expr": "jvm_memory_direct_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_direct_bytes_max", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Direct Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 12, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-73k0d", + "value": "bookie-73k0d" + } + }, + "seriesOverrides": [ + { + "alias": "old count", + "yaxis": 2 + }, + { + "alias": "young count", + "yaxis": 2 + } + ], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(increase(jvm_gc_collection_seconds_sum{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]))", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Pause", + "metric": "jvm_gc_collection_seconds_count", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "GC Pauses", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": false + } + ] + } + ], + "repeat": null, + "repeatIteration": 1496162786419, + "repeatRowId": 1, + "showTitle": true, + "title": "$component $instance", + "titleSize": "h4" + }, + { + "collapse": false, + "height": 221, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 1, + "fill": 1, + "id": 13, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-h2q4k", + "value": "bookie-h2q4k" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(process_cpu_seconds_total{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]) * 100\n\n", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "process_cpu_seconds_total", + "refId": "A", + "step": 20 + } + ], + "thresholds": [ + { + "colorMode": "ok", + "fill": false, + "line": true, + "op": "gt", + "value": 100 + } + ], + "timeFrom": null, + "timeShift": null, + "title": "CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percent", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "id": 14, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": false, + "max": false, + "min": false, + "rightSide": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-h2q4k", + "value": "bookie-h2q4k" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(jvm_memory_bytes_committed{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Heap size", + "metric": "jvm_memory_bytes_committed", + "refId": "A", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_bytes_used", + "refId": "B", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_bytes_max", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Heap Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 15, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-h2q4k", + "value": "bookie-h2q4k" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "jvm_memory_direct_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_direct_bytes_used", + "refId": "A", + "step": 20 + }, + { + "expr": "jvm_memory_direct_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_direct_bytes_max", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Direct Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 16, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-h2q4k", + "value": "bookie-h2q4k" + } + }, + "seriesOverrides": [ + { + "alias": "old count", + "yaxis": 2 + }, + { + "alias": "young count", + "yaxis": 2 + } + ], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(increase(jvm_gc_collection_seconds_sum{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]))", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Pause", + "metric": "jvm_gc_collection_seconds_count", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "GC Pauses", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": false + } + ] + } + ], + "repeat": null, + "repeatIteration": 1496162786419, + "repeatRowId": 1, + "showTitle": true, + "title": "$component $instance", + "titleSize": "h4" + }, + { + "collapse": false, + "height": 221, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 1, + "fill": 1, + "id": 17, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-m2bp9", + "value": "bookie-m2bp9" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(process_cpu_seconds_total{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]) * 100\n\n", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "process_cpu_seconds_total", + "refId": "A", + "step": 20 + } + ], + "thresholds": [ + { + "colorMode": "ok", + "fill": false, + "line": true, + "op": "gt", + "value": 100 + } + ], + "timeFrom": null, + "timeShift": null, + "title": "CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percent", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "id": 18, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": false, + "max": false, + "min": false, + "rightSide": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-m2bp9", + "value": "bookie-m2bp9" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(jvm_memory_bytes_committed{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Heap size", + "metric": "jvm_memory_bytes_committed", + "refId": "A", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_bytes_used", + "refId": "B", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_bytes_max", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Heap Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 19, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-m2bp9", + "value": "bookie-m2bp9" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "jvm_memory_direct_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_direct_bytes_used", + "refId": "A", + "step": 20 + }, + { + "expr": "jvm_memory_direct_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_direct_bytes_max", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Direct Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 20, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-m2bp9", + "value": "bookie-m2bp9" + } + }, + "seriesOverrides": [ + { + "alias": "old count", + "yaxis": 2 + }, + { + "alias": "young count", + "yaxis": 2 + } + ], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(increase(jvm_gc_collection_seconds_sum{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]))", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Pause", + "metric": "jvm_gc_collection_seconds_count", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "GC Pauses", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": false + } + ] + } + ], + "repeat": null, + "repeatIteration": 1496162786419, + "repeatRowId": 1, + "showTitle": true, + "title": "$component $instance", + "titleSize": "h4" + }, + { + "collapse": false, + "height": 221, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 1, + "fill": 1, + "id": 21, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-z6djd", + "value": "bookie-z6djd" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(process_cpu_seconds_total{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]) * 100\n\n", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "process_cpu_seconds_total", + "refId": "A", + "step": 20 + } + ], + "thresholds": [ + { + "colorMode": "ok", + "fill": false, + "line": true, + "op": "gt", + "value": 100 + } + ], + "timeFrom": null, + "timeShift": null, + "title": "CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percent", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "id": 22, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": false, + "max": false, + "min": false, + "rightSide": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-z6djd", + "value": "bookie-z6djd" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(jvm_memory_bytes_committed{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Heap size", + "metric": "jvm_memory_bytes_committed", + "refId": "A", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_bytes_used", + "refId": "B", + "step": 20 + }, + { + "expr": "sum(jvm_memory_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_bytes_max", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Heap Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 23, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-z6djd", + "value": "bookie-z6djd" + } + }, + "seriesOverrides": [], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "jvm_memory_direct_bytes_used{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "jvm_memory_direct_bytes_used", + "refId": "A", + "step": 20 + }, + { + "expr": "jvm_memory_direct_bytes_max{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "metric": "jvm_memory_direct_bytes_max", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Direct Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "id": 24, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "scopedVars": { + "instance": { + "selected": false, + "text": "bookie-z6djd", + "value": "bookie-z6djd" + } + }, + "seriesOverrides": [ + { + "alias": "old count", + "yaxis": 2 + }, + { + "alias": "young count", + "yaxis": 2 + } + ], + "spaceLength": 10, + "span": 3, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(increase(jvm_gc_collection_seconds_sum{cluster=\"$cluster\", kubernetes_pod_name=~\"$instance\"}[30s]))", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Pause", + "metric": "jvm_gc_collection_seconds_count", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "GC Pauses", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": false + } + ] + } + ], + "repeat": null, + "repeatIteration": 1496162786419, + "repeatRowId": 1, + "showTitle": true, + "title": "$component $instance", + "titleSize": "h4" + } + ], + "schemaVersion": 14, + "style": "dark", + "tags": [ + "kafka" + ], + "templating": { + "list": [ + { + "allValue": null, + "current": { + "text": "us-central", + "value": "us-central" + }, + "datasource": "Prometheus", + "hide": 0, + "includeAll": false, + "label": "Cluster", + "multi": false, + "name": "cluster", + "options": [], + "query": "{cluster=~\".+\"}", + "refresh": 1, + "regex": "/.*[^_]cluster=\\\"([^\\\"]+)\\\".*/", + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": { + "tags": [], + "text": "bookkeeper", + "value": "bookkeeper" + }, + "datasource": "Prometheus", + "hide": 0, + "includeAll": false, + "label": "Component", + "multi": false, + "name": "component", + "options": [], + "query": "{job=~\".+\"}", + "refresh": 1, + "regex": "/.*[^_]job=\\\"([^\\\"]+)\\\".*/", + "sort": 1, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Prometheus", + "hide": 0, + "includeAll": true, + "label": "Pod", + "multi": true, + "name": "instance", + "options": [], + "query": "jvm_memory_bytes_used{cluster=~\"$cluster\", job=~\"$component\", kubernetes_pod_name=~\".+\"}", + "refresh": 2, + "regex": "/.*[^_]kubernetes_pod_name=\\\"([^\\\"]+)\\\".*/", + "sort": 1, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "browser", + "title": "Kafka - JVM", + "version": 27 +} \ No newline at end of file diff --git a/driver-msk/deploy/monitoring/dashboards/perf.json b/driver-msk/deploy/monitoring/dashboards/perf.json new file mode 100644 index 00000000..04e503da --- /dev/null +++ b/driver-msk/deploy/monitoring/dashboards/perf.json @@ -0,0 +1,878 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "id": 6, + "links": [], + "panels": [ + { + "aliasColors": { + "Broker - Read": "#66cc69", + "Broker - Write": "#00afba", + "Consume rate": "blue", + "DD - Max throughput": "#d8365d", + "Produce rate": "#d8365d", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "fill": 5, + "fillGradient": 0, + "gridPos": { + "h": 11, + "w": 12, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "id": 12, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": false, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pluginVersion": "7.0.5", + "pointradius": 2, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Consume rate", + "dashes": true, + "fill": 0, + "linewidth": 2, + "yaxis": 1 + }, + { + "alias": "Produce rate", + "dashes": true, + "fill": 0, + "linewidth": 2, + "yaxis": 1 + }, + { + "alias": "DD - Max throughput", + "fill": 0, + "lines": true, + "linewidth": 3, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (instance) (rate(node_disk_written_bytes_total{device=~\"nvme1n1|nvme2n1\"}[1m]))", + "hide": false, + "interval": "", + "intervalFactor": 1, + "legendFormat": "Broker - {{instance}} - Write", + "refId": "A" + }, + { + "expr": "sum(rate(node_disk_read_bytes_total{device=~\"nvme1n1|nvme2n1\"}[1m]))", + "hide": true, + "interval": "", + "legendFormat": "Broker - Read", + "refId": "B" + }, + { + "expr": "sum(rate(benchmark_producer_bytes_sent[1m]))", + "hide": false, + "interval": "", + "legendFormat": "Produce rate", + "refId": "C" + }, + { + "expr": "sum(rate(benchmark_consumer_bytes_recv[1m]))", + "hide": false, + "interval": "", + "legendFormat": "Consume rate", + "refId": "D" + }, + { + "expr": "655000000", + "interval": "", + "legendFormat": "DD - Max throughput", + "refId": "E" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O throughput + Producer/Consume Throughput", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 0 + }, + "hiddenSeries": false, + "id": 6, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (instance) (delta(node_disk_written_bytes_total{device=~\"nvme1n1|nvme2n1\"}[1m])/60)", + "interval": "", + "intervalFactor": 1, + "legendFormat": "Broker - {{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O throughput", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 9 + }, + "hiddenSeries": false, + "id": 5, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(delta(benchmark_producer_bytes_sent[1m])/60)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Publish throughput (MB/sec)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 11 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "delta(node_disk_io_time_seconds_total{device=~\"nvme1n1|nvme2n1\"}[1m])/60", + "interval": "", + "intervalFactor": 1, + "legendFormat": "Broker - {{instance}} ➝ Disk - {{device}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O Utilization", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percentunit", + "label": null, + "logBase": 1, + "max": "1", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 20 + }, + "hiddenSeries": false, + "id": 4, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(delta(benchmark_producer_messages_sent[1m])/60)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Publish rate (messages/sec)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 28 + }, + "hiddenSeries": false, + "id": 10, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(kafka_log_logflushstats_logflushrateandtimems{quantile=\"0.99\"}[1m])", + "interval": "", + "legendFormat": "Broker - {{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Log Flush Time (p99)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Idle - Waiting for something to happen": "#052B51", + "Iowait - Waiting for I/O to complete": "blue", + "Nice - Niced processes executing in user mode": "yellow", + "Softirq - Servicing softirqs": "yellow", + "System - Processes executing in kernel mode": "dark-purple", + "User - Normal processes executing in user mode": "red", + "guest": "#9AC48A", + "idle": "#052B51", + "iowait": "#EAB839", + "irq": "#BF1B00", + "nice": "#C15C17", + "softirq": "#E24D42", + "steal": "#FCE2DE", + "system": "#508642", + "user": "#5195CE" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 2, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 13, + "w": 24, + "x": 0, + "y": 36 + }, + "hiddenSeries": false, + "id": 8, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 250, + "sort": null, + "sortDesc": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": true, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"user\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "User - Normal processes executing in user mode", + "refId": "B", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"system\"}[5m])) * 100", + "format": "time_series", + "interval": "10s", + "intervalFactor": 2, + "legendFormat": "System - Processes executing in kernel mode", + "refId": "A", + "step": 20 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"iowait\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Iowait - Waiting for I/O to complete", + "refId": "E", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"softirq\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Softirq - Servicing softirqs", + "refId": "G", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"idle\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Idle - Waiting for something to happen", + "refId": "D", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU Usage across all Brokers", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "percentage", + "logBase": 1, + "max": "100", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "refresh": false, + "schemaVersion": 25, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ] + }, + "timezone": "utc", + "title": "Performance Metrics - Kafka", + "uid": "vYWrwI7Mkafka", + "version": 5 +} \ No newline at end of file diff --git a/driver-msk/deploy/monitoring/dashboards/prometheus.json b/driver-msk/deploy/monitoring/dashboards/prometheus.json new file mode 100644 index 00000000..40ebcf83 --- /dev/null +++ b/driver-msk/deploy/monitoring/dashboards/prometheus.json @@ -0,0 +1,719 @@ +{ + "annotations": { + "list": [] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "hideControls": true, + "id": 1, + "links": [ + { + "icon": "info", + "tags": [], + "targetBlank": true, + "title": "Grafana Docs", + "tooltip": "", + "type": "link", + "url": "http://docs.grafana.org/" + }, + { + "icon": "info", + "tags": [], + "targetBlank": true, + "title": "Prometheus Docs", + "type": "link", + "url": "http://prometheus.io/docs/introduction/overview/" + } + ], + "refresh": false, + "revision": "1.0", + "rows": [ + { + "collapse": false, + "height": 178, + "panels": [ + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "Prometheus", + "decimals": 1, + "editable": true, + "error": false, + "format": "s", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "id": 5, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "span": 3, + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "tableColumn": "", + "targets": [ + { + "expr": "(time() - process_start_time_seconds{job=\"prometheus\"})", + "intervalFactor": 2, + "refId": "A", + "step": 4 + } + ], + "thresholds": "", + "title": "Uptime", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(50, 172, 45, 0.97)", + "rgba(237, 129, 40, 0.89)", + "rgba(245, 54, 54, 0.9)" + ], + "datasource": "Prometheus", + "editable": true, + "error": false, + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "id": 6, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "span": 3, + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "tableColumn": "", + "targets": [ + { + "expr": "prometheus_local_storage_memory_series", + "intervalFactor": 2, + "refId": "A", + "step": 4 + } + ], + "thresholds": "1,5", + "title": "Local Storage Memory Series", + "type": "singlestat", + "valueFontSize": "70%", + "valueMaps": [], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": true, + "colors": [ + "rgba(50, 172, 45, 0.97)", + "rgba(237, 129, 40, 0.89)", + "rgba(245, 54, 54, 0.9)" + ], + "datasource": "Prometheus", + "editable": true, + "error": false, + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "id": 7, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "span": 3, + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "tableColumn": "", + "targets": [ + { + "expr": "prometheus_local_storage_indexing_queue_length", + "intervalFactor": 2, + "refId": "A", + "step": 4 + } + ], + "thresholds": "500,4000", + "title": "Internal Storage Queue Length", + "type": "singlestat", + "valueFontSize": "70%", + "valueMaps": [ + { + "op": "=", + "text": "Empty", + "value": "0" + } + ], + "valueName": "current" + }, + { + "content": "\"Prometheus\nPrometheus\n\n

You're using Prometheus, an open-source systems monitoring and alerting toolkit originally built at SoundCloud. For more information, check out the Grafana and Prometheus projects.

", + "editable": true, + "error": false, + "id": 9, + "links": [], + "mode": "html", + "span": 3, + "style": {}, + "title": "", + "transparent": true, + "type": "text" + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "New row", + "titleSize": "h6" + }, + { + "collapse": false, + "height": 227, + "panels": [ + { + "aliasColors": { + "prometheus": "#C15C17", + "{instance=\"localhost:9090\",job=\"prometheus\"}": "#C15C17" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "editable": true, + "error": false, + "fill": 1, + "grid": {}, + "id": 3, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 9, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(prometheus_local_storage_ingested_samples_total[5m])", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{job}}", + "metric": "", + "refId": "A", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Samples ingested (rate-5m)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "content": "#### Samples Ingested\nThis graph displays the count of samples ingested by the Prometheus server, as measured over the last 5 minutes, per time series in the range vector. When troubleshooting an issue on IRC or Github, this is often the first stat requested by the Prometheus team. ", + "editable": true, + "error": false, + "id": 8, + "links": [], + "mode": "markdown", + "span": 2.995914043583536, + "style": {}, + "title": "", + "transparent": true, + "type": "text" + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "New row", + "titleSize": "h6" + }, + { + "collapse": false, + "height": "250px", + "panels": [ + { + "aliasColors": { + "prometheus": "#F9BA8F", + "{instance=\"localhost:9090\",interval=\"5s\",job=\"prometheus\"}": "#F9BA8F" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "editable": true, + "error": false, + "fill": 1, + "grid": {}, + "id": 2, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 5, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(prometheus_target_interval_length_seconds_count[5m])", + "intervalFactor": 2, + "legendFormat": "{{job}}", + "refId": "A", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Target Scrapes (last 5m)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "editable": true, + "error": false, + "fill": 1, + "grid": {}, + "id": 14, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 4, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "prometheus_target_interval_length_seconds{quantile!=\"0.01\", quantile!=\"0.05\"}", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{quantile}} ({{interval}})", + "metric": "", + "refId": "A", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Scrape Duration", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "content": "#### Scrapes\nPrometheus scrapes metrics from instrumented jobs, either directly or via an intermediary push gateway for short-lived jobs. Target scrapes will show how frequently targets are scraped, as measured over the last 5 minutes, per time series in the range vector. Scrape Duration will show how long the scrapes are taking, with percentiles available as series. ", + "editable": true, + "error": false, + "id": 11, + "links": [], + "mode": "markdown", + "span": 3, + "style": {}, + "title": "", + "transparent": true, + "type": "text" + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "New row", + "titleSize": "h6" + }, + { + "collapse": false, + "height": "250px", + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": null, + "editable": true, + "error": false, + "fill": 1, + "grid": {}, + "id": 12, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 9, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "prometheus_evaluator_duration_seconds{quantile!=\"0.01\", quantile!=\"0.05\"}", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{quantile}}", + "refId": "A", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Rule Eval Duration", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percentunit", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "content": "#### Rule Evaluation Duration\nThis graph panel plots the duration for all evaluations to execute. The 50th percentile, 90th percentile and 99th percentile are shown as three separate series to help identify outliers that may be skewing the data.", + "editable": true, + "error": false, + "id": 15, + "links": [], + "mode": "markdown", + "span": 3, + "style": {}, + "title": "", + "transparent": true, + "type": "text" + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "New row", + "titleSize": "h6" + } + ], + "schemaVersion": 14, + "style": "dark", + "tags": [ + "prometheus" + ], + "templating": { + "list": [] + }, + "time": { + "from": "now-5m", + "to": "now" + }, + "timepicker": { + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "browser", + "title": "Prometheus Stats", + "version": 0 +} \ No newline at end of file diff --git a/driver-msk/deploy/monitoring/dashboards/pulsar_perf.json b/driver-msk/deploy/monitoring/dashboards/pulsar_perf.json new file mode 100644 index 00000000..069dcf21 --- /dev/null +++ b/driver-msk/deploy/monitoring/dashboards/pulsar_perf.json @@ -0,0 +1,1036 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "id": 2, + "links": [], + "panels": [ + { + "aliasColors": { + "Bookie Add Entry Latency (p99)": "#d8365d", + "Broker - Read": "#66cc69", + "Broker - Write": "#00afba", + "Consume rate": "#173361", + "DD - Max throughput": "#d8365d", + "Produce rate": "#d8365d", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "fill": 5, + "fillGradient": 0, + "gridPos": { + "h": 11, + "w": 12, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "id": 12, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pluginVersion": "7.0.5", + "pointradius": 2, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Consume rate", + "dashes": true, + "fill": 0, + "linewidth": 2, + "yaxis": 1 + }, + { + "alias": "Produce rate", + "dashes": true, + "fill": 0, + "linewidth": 2, + "yaxis": 1 + }, + { + "alias": "DD - Max throughput", + "fill": 0, + "lines": true, + "linewidth": 3, + "points": false + }, + { + "alias": "Bookie Add Entry Rate", + "lines": true + }, + { + "alias": "Bookie Add Entry Latency (p99)", + "dashes": true, + "linewidth": 2, + "points": false, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (instance) (rate(node_disk_written_bytes_total{device=~\"nvme1n1|nvme2n1\"}[1m]))", + "hide": true, + "interval": "", + "intervalFactor": 1, + "legendFormat": "Broker - {{instance}} - Write", + "refId": "A" + }, + { + "expr": "sum(rate(node_disk_read_bytes_total{device=~\"nvme1n1|nvme2n1\"}[1m]))", + "hide": true, + "interval": "", + "legendFormat": "Broker - Read", + "refId": "B" + }, + { + "expr": "sum(pulsar_throughput_in)", + "hide": false, + "interval": "", + "legendFormat": "Produce rate", + "refId": "C" + }, + { + "expr": "sum(pulsar_throughput_out)", + "hide": false, + "interval": "", + "legendFormat": "Consume rate", + "refId": "D" + }, + { + "expr": "655000000", + "hide": true, + "interval": "", + "legendFormat": "DD - Max throughput", + "refId": "E" + }, + { + "expr": "sum(rate(bookie_WRITE_BYTES[30s]))", + "hide": false, + "interval": "", + "legendFormat": "Bookie Add Entry Rate", + "refId": "F" + }, + { + "expr": "avg(bookkeeper_server_ADD_ENTRY_REQUEST{success=\"true\", quantile=\"0.99\"})", + "hide": false, + "interval": "", + "legendFormat": "Bookie Add Entry Latency (p99)", + "refId": "G" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O throughput + Producer/Consume Throughput", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": "Throughput", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "ms", + "label": "Latency", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Bookie Add Entry Latency (p99)": "#d8365d", + "Broker - Read": "#66cc69", + "Broker - Write": "#00afba", + "Consume rate": "#173361", + "DD - Max throughput": "#d8365d", + "Produce rate": "#d8365d", + "Value": "#d8365d", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "fill": 5, + "fillGradient": 0, + "gridPos": { + "h": 11, + "w": 12, + "x": 12, + "y": 0 + }, + "hiddenSeries": false, + "id": 13, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pluginVersion": "7.0.5", + "pointradius": 2, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "bookie_journal_JOURNAL_CB_QUEUE_SIZE", + "interval": "", + "legendFormat": "Number of entries - {{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Journal Callback Queue Length", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "Entries", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "ms", + "label": "Latency", + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 11 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "delta(node_disk_io_time_seconds_total{device=~\"nvme1n1|nvme2n1\"}[1m])/60", + "interval": "", + "intervalFactor": 1, + "legendFormat": "Broker - {{instance}} ➝ Disk - {{device}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O Utilization", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percentunit", + "label": null, + "logBase": 1, + "max": "1", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 11 + }, + "hiddenSeries": false, + "id": 6, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (instance) (delta(node_disk_written_bytes_total{device=~\"nvme1n1|nvme2n1\"}[1m])/60)", + "interval": "", + "intervalFactor": 1, + "legendFormat": "Broker - {{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O throughput", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 20 + }, + "hiddenSeries": false, + "id": 4, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(delta(benchmark_producer_messages_sent[1m])/60)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Publish rate (messages/sec)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 20 + }, + "hiddenSeries": false, + "id": 5, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(delta(benchmark_producer_bytes_sent[1m])/60)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Publish throughput (MB/sec)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 28 + }, + "hiddenSeries": false, + "id": 10, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(kafka_log_logflushstats_logflushrateandtimems{quantile=\"0.99\"}[1m])", + "interval": "", + "legendFormat": "Broker - {{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Log Flush Time (p99)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Idle - Waiting for something to happen": "#052B51", + "Iowait - Waiting for I/O to complete": "blue", + "Nice - Niced processes executing in user mode": "yellow", + "Softirq - Servicing softirqs": "yellow", + "System - Processes executing in kernel mode": "dark-purple", + "User - Normal processes executing in user mode": "red", + "guest": "#9AC48A", + "idle": "#052B51", + "iowait": "#EAB839", + "irq": "#BF1B00", + "nice": "#C15C17", + "softirq": "#E24D42", + "steal": "#FCE2DE", + "system": "#508642", + "user": "#5195CE" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 2, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 13, + "w": 24, + "x": 0, + "y": 36 + }, + "hiddenSeries": false, + "id": 8, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 250, + "sort": null, + "sortDesc": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": true, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"user\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "User - Normal processes executing in user mode", + "refId": "B", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"system\"}[5m])) * 100", + "format": "time_series", + "interval": "10s", + "intervalFactor": 2, + "legendFormat": "System - Processes executing in kernel mode", + "refId": "A", + "step": 20 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"iowait\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Iowait - Waiting for I/O to complete", + "refId": "E", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"softirq\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Softirq - Servicing softirqs", + "refId": "G", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"idle\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Idle - Waiting for something to happen", + "refId": "D", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU Usage across all Brokers", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "percentage", + "logBase": 1, + "max": "100", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "refresh": false, + "schemaVersion": 25, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ] + }, + "timezone": "utc", + "title": "Performance Metrics - Pulsar", + "uid": "vYWrwI7Mk", + "version": 8 +} \ No newline at end of file diff --git a/driver-msk/deploy/monitoring/dashboards/rabbit_perf.json b/driver-msk/deploy/monitoring/dashboards/rabbit_perf.json new file mode 100644 index 00000000..c2e5a017 --- /dev/null +++ b/driver-msk/deploy/monitoring/dashboards/rabbit_perf.json @@ -0,0 +1,892 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "id": 7, + "links": [], + "panels": [ + { + "aliasColors": { + "Broker - Read": "#66cc69", + "Broker - Write": "#00afba", + "CPU Usage": "#66cc69", + "Consume rate": "#ffc40c", + "DD - Max throughput": "#d8365d", + "Produce rate": "#173361", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "fill": 5, + "fillGradient": 0, + "gridPos": { + "h": 11, + "w": 12, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "id": 12, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": false, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pluginVersion": "7.0.5", + "pointradius": 2, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Consume rate", + "dashes": true, + "fill": 0, + "linewidth": 2, + "yaxis": 1 + }, + { + "alias": "Produce rate", + "dashes": true, + "fill": 0, + "linewidth": 2, + "yaxis": 1 + }, + { + "alias": "DD - Max throughput", + "fill": 0, + "lines": true, + "linewidth": 3, + "points": false + }, + { + "alias": "CPU Usage", + "lines": true, + "points": false, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (instance) (rate(node_disk_written_bytes_total{device=~\"nvme1n1|nvme2n1\"}[1m]))", + "hide": true, + "interval": "", + "intervalFactor": 1, + "legendFormat": "Broker - {{instance}} - Write", + "refId": "A" + }, + { + "expr": "sum(rate(node_disk_read_bytes_total{device=~\"nvme1n1|nvme2n1\"}[1m]))", + "hide": true, + "interval": "", + "legendFormat": "Broker - Read", + "refId": "B" + }, + { + "expr": "sum(rate(benchmark_producer_bytes_sent[1m]))", + "hide": false, + "interval": "", + "legendFormat": "Produce rate", + "refId": "C" + }, + { + "expr": "sum(rate(benchmark_consumer_bytes_recv[1m]))", + "hide": false, + "interval": "", + "legendFormat": "Consume rate", + "refId": "D" + }, + { + "expr": "655000000", + "hide": true, + "interval": "", + "legendFormat": "DD - Max throughput", + "refId": "E" + }, + { + "expr": "(((count(count(avg(node_cpu_seconds_total)) by (cpu))) - avg(sum by (mode)(avg(irate(node_cpu_seconds_total{mode='idle'}[5m]))))) * 100) / count(count(avg(node_cpu_seconds_total)) by (cpu))", + "interval": "", + "legendFormat": "CPU Usage", + "refId": "F" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Producer/Consume Throughput + CPU Usage", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": "I/O throughput", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "percent", + "label": "CPU Usage", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 0 + }, + "hiddenSeries": false, + "id": 6, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (instance) (delta(node_disk_written_bytes_total{device=~\"nvme1n1|nvme2n1\"}[1m])/60)", + "interval": "", + "intervalFactor": 1, + "legendFormat": "Broker - {{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O throughput", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 9 + }, + "hiddenSeries": false, + "id": 5, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(delta(benchmark_producer_bytes_sent[1m])/60)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Publish throughput (MB/sec)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "green", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "yellow", + "{device=\"nvme1n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "red", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.207:9100\", job=\"kafka\"}": "blue", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.212:9100\", job=\"kafka\"}": "orange", + "{device=\"nvme2n1\", group=\"broker-os\", instance=\"10.0.0.5:9100\", job=\"kafka\"}": "purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 11 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "delta(node_disk_io_time_seconds_total{device=~\"nvme1n1|nvme2n1\"}[1m])/60", + "interval": "", + "intervalFactor": 1, + "legendFormat": "Broker - {{instance}} ➝ Disk - {{device}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O Utilization", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percentunit", + "label": null, + "logBase": 1, + "max": "1", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 20 + }, + "hiddenSeries": false, + "id": 4, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(delta(benchmark_producer_messages_sent[1m])/60)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Publish rate (messages/sec)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 28 + }, + "hiddenSeries": false, + "id": 10, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(kafka_log_logflushstats_logflushrateandtimems{quantile=\"0.99\"}[1m])", + "interval": "", + "legendFormat": "Broker - {{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Log Flush Time (p99)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Idle - Waiting for something to happen": "#052B51", + "Iowait - Waiting for I/O to complete": "blue", + "Nice - Niced processes executing in user mode": "yellow", + "Softirq - Servicing softirqs": "yellow", + "System - Processes executing in kernel mode": "dark-purple", + "User - Normal processes executing in user mode": "red", + "guest": "#9AC48A", + "idle": "#052B51", + "iowait": "#EAB839", + "irq": "#BF1B00", + "nice": "#C15C17", + "softirq": "#E24D42", + "steal": "#FCE2DE", + "system": "#508642", + "user": "#5195CE" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 2, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 13, + "w": 24, + "x": 0, + "y": 36 + }, + "hiddenSeries": false, + "id": 8, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 250, + "sort": null, + "sortDesc": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": true, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"user\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "User - Normal processes executing in user mode", + "refId": "B", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"system\"}[5m])) * 100", + "format": "time_series", + "interval": "10s", + "intervalFactor": 2, + "legendFormat": "System - Processes executing in kernel mode", + "refId": "A", + "step": 20 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"iowait\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Iowait - Waiting for I/O to complete", + "refId": "E", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"softirq\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Softirq - Servicing softirqs", + "refId": "G", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"idle\"}[5m])) * 100", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Idle - Waiting for something to happen", + "refId": "D", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU Usage across all Brokers", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "percentage", + "logBase": 1, + "max": "100", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "refresh": false, + "schemaVersion": 25, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ] + }, + "timezone": "utc", + "title": "Performance Metrics - RabbitMQ", + "uid": "vYWrwI7Mkrabbit", + "version": 3 +} \ No newline at end of file diff --git a/driver-msk/deploy/monitoring/dashboards/system.json b/driver-msk/deploy/monitoring/dashboards/system.json new file mode 100644 index 00000000..aa51c95f --- /dev/null +++ b/driver-msk/deploy/monitoring/dashboards/system.json @@ -0,0 +1,14051 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "gnetId": 1860, + "graphTooltip": 0, + "id": 2, + "iteration": 1597269377076, + "links": [], + "panels": [ + { + "aliasColors": { + "benchmark_producer_produce_latency{group=\"client\", instance=\"10.0.0.23:8081\", job=\"kafka\", quantile=\"0.99\", success=\"true\"}": "blue", + "benchmark_producer_produce_latency{group=\"client\", instance=\"10.0.0.61:8081\", job=\"kafka\", quantile=\"0.99\", success=\"true\"}": "yellow" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "id": 317, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": false, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 0.5, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "benchmark_producer_produce_latency{quantile=\"0.99\"}", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Publish latency - p99", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 8 + }, + "id": 261, + "panels": [ + { + "cacheTimeout": null, + "datasource": "${DS_PROMETHEUS}", + "description": "Busy state of all CPU cores together", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": {}, + "mappings": [ + { + "id": 0, + "op": "=", + "text": "N/A", + "type": 1, + "value": "null" + } + ], + "max": 100, + "min": 0, + "nullValueMode": "null", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 85 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 95 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 0, + "y": 9 + }, + "id": 20, + "links": [], + "options": { + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true + }, + "pluginVersion": "7.0.5", + "targets": [ + { + "expr": "(((count(count(node_cpu_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}) by (cpu))) - avg(sum by (mode)(irate(node_cpu_seconds_total{mode='idle',instance=~\"$node:$port\",job=~\"$job\"}[5m])))) * 100) / count(count(node_cpu_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}) by (cpu))", + "hide": false, + "intervalFactor": 1, + "legendFormat": "", + "refId": "A", + "step": 900 + } + ], + "title": "CPU Busy", + "type": "gauge" + }, + { + "cacheTimeout": null, + "datasource": "${DS_PROMETHEUS}", + "description": "Busy state of all CPU cores together (5 min average)", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": {}, + "mappings": [ + { + "id": 0, + "op": "=", + "text": "N/A", + "type": 1, + "value": "null" + } + ], + "max": 100, + "min": 0, + "nullValueMode": "null", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 85 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 95 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 3, + "y": 9 + }, + "id": 155, + "links": [], + "options": { + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true + }, + "pluginVersion": "7.0.5", + "targets": [ + { + "expr": "avg(node_load5{instance=~\"$node:$port\",job=~\"$job\"}) / count(count(node_cpu_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}) by (cpu)) * 100", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "refId": "A", + "step": 900 + } + ], + "title": "Sys Load (5m avg)", + "type": "gauge" + }, + { + "cacheTimeout": null, + "datasource": "${DS_PROMETHEUS}", + "description": "Busy state of all CPU cores together (15 min average)", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": {}, + "mappings": [ + { + "id": 0, + "op": "=", + "text": "N/A", + "type": 1, + "value": "null" + } + ], + "max": 100, + "min": 0, + "nullValueMode": "null", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 85 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 95 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 6, + "y": 9 + }, + "id": 19, + "links": [], + "options": { + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true + }, + "pluginVersion": "7.0.5", + "targets": [ + { + "expr": "avg(node_load15{instance=~\"$node:$port\",job=~\"$job\"}) / count(count(node_cpu_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}) by (cpu)) * 100", + "hide": false, + "intervalFactor": 1, + "refId": "A", + "step": 900 + } + ], + "title": "Sys Load (15m avg)", + "type": "gauge" + }, + { + "cacheTimeout": null, + "datasource": "${DS_PROMETHEUS}", + "description": "Non available RAM memory", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": {}, + "decimals": 0, + "mappings": [], + "max": 100, + "min": 0, + "nullValueMode": "null", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 80 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 90 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 9, + "y": 9 + }, + "hideTimeOverride": false, + "id": 16, + "links": [], + "options": { + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true + }, + "pluginVersion": "7.0.5", + "targets": [ + { + "expr": "((node_memory_MemTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_MemFree_bytes{instance=~\"$node:$port\",job=~\"$job\"}) / (node_memory_MemTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"} )) * 100", + "format": "time_series", + "hide": true, + "intervalFactor": 1, + "refId": "A", + "step": 900 + }, + { + "expr": "100 - ((node_memory_MemAvailable_bytes{instance=~\"$node:$port\",job=~\"$job\"} * 100) / node_memory_MemTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"})", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "refId": "B", + "step": 900 + } + ], + "title": "RAM Used", + "type": "gauge" + }, + { + "cacheTimeout": null, + "datasource": "${DS_PROMETHEUS}", + "description": "Used Swap", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": {}, + "mappings": [ + { + "id": 0, + "op": "=", + "text": "N/A", + "type": 1, + "value": "null" + } + ], + "max": 100, + "min": 0, + "nullValueMode": "null", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 25 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 12, + "y": 9 + }, + "id": 21, + "links": [], + "options": { + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true + }, + "pluginVersion": "7.0.5", + "targets": [ + { + "expr": "((node_memory_SwapTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_SwapFree_bytes{instance=~\"$node:$port\",job=~\"$job\"}) / (node_memory_SwapTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"} )) * 100", + "intervalFactor": 1, + "refId": "A", + "step": 900 + } + ], + "title": "SWAP Used", + "type": "gauge" + }, + { + "cacheTimeout": null, + "datasource": "${DS_PROMETHEUS}", + "description": "Used Root FS", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": {}, + "mappings": [ + { + "id": 0, + "op": "=", + "text": "N/A", + "type": 1, + "value": "null" + } + ], + "max": 100, + "min": 0, + "nullValueMode": "null", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 80 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 90 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 15, + "y": 9 + }, + "id": 154, + "links": [], + "options": { + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true + }, + "pluginVersion": "7.0.5", + "targets": [ + { + "expr": "100 - ((node_filesystem_avail_bytes{instance=~\"$node:$port\",job=~\"$job\",mountpoint=\"/\",fstype!=\"rootfs\"} * 100) / node_filesystem_size_bytes{instance=~\"$node:$port\",job=~\"$job\",mountpoint=\"/\",fstype!=\"rootfs\"})", + "format": "time_series", + "intervalFactor": 1, + "refId": "A", + "step": 900 + } + ], + "title": "Root FS Used", + "type": "gauge" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "${DS_PROMETHEUS}", + "description": "Total number of CPU cores", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "short", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 2, + "w": 2, + "x": 18, + "y": 9 + }, + "id": 14, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "maxPerRow": 6, + "nullPointMode": "null", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "tableColumn": "", + "targets": [ + { + "expr": "count(count(node_cpu_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}) by (cpu))", + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A", + "step": 900 + } + ], + "thresholds": "", + "title": "CPU Cores", + "type": "singlestat", + "valueFontSize": "50%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "${DS_PROMETHEUS}", + "decimals": 1, + "description": "System uptime", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "s", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 2, + "w": 4, + "x": 20, + "y": 9 + }, + "hideTimeOverride": true, + "id": 15, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "null", + "nullText": null, + "postfix": "s", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "tableColumn": "{group=\"broker-os\", instance=\"10.0.0.15:9100\", job=\"kafka\"}", + "targets": [ + { + "expr": "node_time_seconds{instance=~\"$node:$port\",job=~\"$job\"} - node_boot_time_seconds{instance=~\"$node:$port\",job=~\"$job\"}", + "intervalFactor": 2, + "refId": "A", + "step": 1800 + } + ], + "thresholds": "", + "title": "Uptime", + "type": "singlestat", + "valueFontSize": "50%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(50, 172, 45, 0.97)", + "rgba(237, 129, 40, 0.89)", + "rgba(245, 54, 54, 0.9)" + ], + "datasource": "${DS_PROMETHEUS}", + "decimals": 0, + "description": "Total RootFS", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "bytes", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 2, + "w": 2, + "x": 18, + "y": 11 + }, + "id": 23, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "maxPerRow": 6, + "nullPointMode": "null", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "tableColumn": "node_filesystem_size_bytes{device=\"/dev/nvme0n1p2\", fstype=\"xfs\", group=\"broker-os\", instance=\"10.0.0.15:9100\", job=\"kafka\", mountpoint=\"/\"}", + "targets": [ + { + "expr": "node_filesystem_size_bytes{instance=~\"$node:$port\",job=~\"$job\",mountpoint=\"/\",fstype!=\"rootfs\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "refId": "A", + "step": 900 + } + ], + "thresholds": "70,90", + "title": "RootFS Total", + "type": "singlestat", + "valueFontSize": "50%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "${DS_PROMETHEUS}", + "decimals": 0, + "description": "Total RAM", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "bytes", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 2, + "w": 2, + "x": 20, + "y": 11 + }, + "id": 75, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "maxPerRow": 6, + "nullPointMode": "null", + "nullText": null, + "postfix": "", + "postfixFontSize": "70%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "tableColumn": "node_memory_MemTotal_bytes{group=\"broker-os\", instance=\"10.0.0.15:9100\", job=\"kafka\"}", + "targets": [ + { + "expr": "node_memory_MemTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "intervalFactor": 1, + "refId": "A", + "step": 900 + } + ], + "thresholds": "", + "title": "RAM Total", + "type": "singlestat", + "valueFontSize": "50%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "${DS_PROMETHEUS}", + "decimals": 0, + "description": "Total SWAP", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "bytes", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 2, + "w": 2, + "x": 22, + "y": 11 + }, + "id": 18, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "maxPerRow": 6, + "nullPointMode": "null", + "nullText": null, + "postfix": "", + "postfixFontSize": "70%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "tableColumn": "node_memory_SwapTotal_bytes{group=\"broker-os\", instance=\"10.0.0.15:9100\", job=\"kafka\"}", + "targets": [ + { + "expr": "node_memory_SwapTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "intervalFactor": 1, + "refId": "A", + "step": 900 + } + ], + "thresholds": "", + "title": "SWAP Total", + "type": "singlestat", + "valueFontSize": "50%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + } + ], + "repeat": null, + "title": "Quick CPU / Mem / Disk", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 9 + }, + "id": 263, + "panels": [ + { + "aliasColors": { + "Busy": "#EAB839", + "Busy Iowait": "#890F02", + "Busy other": "#1F78C1", + "Idle": "#052B51", + "Idle - Waiting for something to happen": "#052B51", + "guest": "#9AC48A", + "idle": "#052B51", + "iowait": "#EAB839", + "irq": "#BF1B00", + "nice": "#C15C17", + "softirq": "#E24D42", + "steal": "#FCE2DE", + "system": "#508642", + "user": "#5195CE" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "description": "Basic CPU info", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 10 + }, + "hiddenSeries": false, + "id": 77, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "sideWidth": 250, + "sort": null, + "sortDesc": null, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": true, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Busy Iowait", + "color": "#890F02" + }, + { + "alias": "Idle", + "color": "#7EB26D" + }, + { + "alias": "Busy System", + "color": "#EAB839" + }, + { + "alias": "Busy User", + "color": "#0A437C" + }, + { + "alias": "Busy Other", + "color": "#6D1F62" + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (instance)(irate(node_cpu_seconds_total{mode=\"system\",instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Busy System", + "refId": "A", + "step": 240 + }, + { + "expr": "sum by (instance)(irate(node_cpu_seconds_total{mode='user',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Busy User", + "refId": "B", + "step": 240 + }, + { + "expr": "sum by (instance)(irate(node_cpu_seconds_total{mode='iowait',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Busy Iowait", + "refId": "C", + "step": 240 + }, + { + "expr": "sum by (instance)(irate(node_cpu_seconds_total{mode=~\".*irq\",instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Busy IRQs", + "refId": "D", + "step": 240 + }, + { + "expr": "sum (irate(node_cpu_seconds_total{mode!='idle',mode!='user',mode!='system',mode!='iowait',mode!='irq',mode!='softirq',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Busy Other", + "refId": "E", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='idle',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Idle", + "refId": "F", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU Basic", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "", + "logBase": 1, + "max": "100", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "SWAP Used": "#BF1B00", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap Used": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "description": "Basic memory usage", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 10 + }, + "hiddenSeries": false, + "id": 78, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "RAM Total", + "color": "#E0F9D7", + "fill": 0, + "stack": false + }, + { + "alias": "RAM Cache + Buffer", + "color": "#052B51" + }, + { + "alias": "RAM Free", + "color": "#7EB26D" + }, + { + "alias": "Avaliable", + "color": "#DEDAF7", + "fill": 0, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_MemTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "RAM Total", + "refId": "A", + "step": 240 + }, + { + "expr": "node_memory_MemTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_MemFree_bytes{instance=~\"$node:$port\",job=~\"$job\"} - (node_memory_Cached_bytes{instance=~\"$node:$port\",job=~\"$job\"} + node_memory_Buffers_bytes{instance=~\"$node:$port\",job=~\"$job\"})", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "RAM Used", + "refId": "B", + "step": 240 + }, + { + "expr": "node_memory_Cached_bytes{instance=~\"$node:$port\",job=~\"$job\"} + node_memory_Buffers_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "RAM Cache + Buffer", + "refId": "C", + "step": 240 + }, + { + "expr": "node_memory_MemFree_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "RAM Free", + "refId": "D", + "step": 240 + }, + { + "expr": "(node_memory_SwapTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_SwapFree_bytes{instance=~\"$node:$port\",job=~\"$job\"})", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "SWAP Used", + "refId": "E", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Basic", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Recv_bytes_eth2": "#7EB26D", + "Recv_bytes_lo": "#0A50A1", + "Recv_drop_eth2": "#6ED0E0", + "Recv_drop_lo": "#E0F9D7", + "Recv_errs_eth2": "#BF1B00", + "Recv_errs_lo": "#CCA300", + "Trans_bytes_eth2": "#7EB26D", + "Trans_bytes_lo": "#0A50A1", + "Trans_drop_eth2": "#6ED0E0", + "Trans_drop_lo": "#E0F9D7", + "Trans_errs_eth2": "#BF1B00", + "Trans_errs_lo": "#CCA300", + "recv_bytes_lo": "#0A50A1", + "recv_drop_eth0": "#99440A", + "recv_drop_lo": "#967302", + "recv_errs_eth0": "#BF1B00", + "recv_errs_lo": "#890F02", + "trans_bytes_eth0": "#7EB26D", + "trans_bytes_lo": "#0A50A1", + "trans_drop_eth0": "#99440A", + "trans_drop_lo": "#967302", + "trans_errs_eth0": "#BF1B00", + "trans_errs_lo": "#890F02" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "Basic network info per interface", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 17 + }, + "hiddenSeries": false, + "id": 74, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_receive_bytes_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])*8", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "recv {{device}}", + "refId": "A", + "step": 240 + }, + { + "expr": "irate(node_network_transmit_bytes_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])*8", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "trans {{device}} ", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Basic", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "pps", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 3, + "description": "Disk space used of all filesystems mounted", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 17 + }, + "height": "", + "hiddenSeries": false, + "id": 152, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "100 - ((node_filesystem_avail_bytes{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'} * 100) / node_filesystem_size_bytes{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'})", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{mountpoint}}", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk Space Used Basic", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percent", + "label": null, + "logBase": 1, + "max": "100", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Basic CPU / Mem / Net / Disk", + "type": "row" + }, + { + "collapsed": false, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 10 + }, + "id": 265, + "panels": [], + "repeat": null, + "title": "CPU / Memory / Net / Disk", + "type": "row" + }, + { + "aliasColors": { + "Idle - Waiting for something to happen": "#052B51", + "guest": "#9AC48A", + "idle": "#052B51", + "iowait": "#EAB839", + "irq": "#BF1B00", + "nice": "#C15C17", + "softirq": "#E24D42", + "steal": "#FCE2DE", + "system": "#508642", + "user": "#5195CE" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 12, + "w": 12, + "x": 0, + "y": 11 + }, + "hiddenSeries": false, + "id": 3, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 250, + "sort": null, + "sortDesc": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": true, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"system\",instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "interval": "10s", + "intervalFactor": 2, + "legendFormat": "System - Processes executing in kernel mode", + "refId": "A", + "step": 20 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='user',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "User - Normal processes executing in user mode", + "refId": "B", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='nice',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Nice - Niced processes executing in user mode", + "refId": "C", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='idle',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Idle - Waiting for something to happen", + "refId": "D", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='iowait',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Iowait - Waiting for I/O to complete", + "refId": "E", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='irq',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Irq - Servicing interrupts", + "refId": "F", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='softirq',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Softirq - Servicing softirqs", + "refId": "G", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='steal',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Steal - Time spent in other operating systems when running in a virtualized environment", + "refId": "H", + "step": 240 + }, + { + "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='guest',instance=~\"$node:$port\",job=~\"$job\"}[5m])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Guest - Time spent running a virtual CPU for a guest operating system", + "refId": "I", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "percentage", + "logBase": 1, + "max": "100", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap - Swap memory usage": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839", + "Unused - Free memory unassigned": "#052B51" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 12, + "w": 12, + "x": 12, + "y": 11 + }, + "hiddenSeries": false, + "id": 24, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": null, + "sortDesc": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Hardware Corrupted - *./", + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_MemTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_MemFree_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_Buffers_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_Cached_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_Slab_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_PageTables_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_SwapCached_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Apps - Memory used by user-space applications", + "refId": "A", + "step": 240 + }, + { + "expr": "node_memory_PageTables_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "PageTables - Memory used to map between virtual and physical memory addresses", + "refId": "B", + "step": 240 + }, + { + "expr": "node_memory_SwapCached_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "SwapCache - Memory that keeps track of pages that have been fetched from swap but not yet been modified", + "refId": "C", + "step": 240 + }, + { + "expr": "node_memory_Slab_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Slab - Memory used by the kernel to cache data structures for its own use (caches like inode, dentry, etc)", + "refId": "D", + "step": 240 + }, + { + "expr": "node_memory_Cached_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Cache - Parked file data (file content) cache", + "refId": "E", + "step": 240 + }, + { + "expr": "node_memory_Buffers_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Buffers - Block device (e.g. harddisk) cache", + "refId": "F", + "step": 240 + }, + { + "expr": "node_memory_MemFree_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Unused - Free memory unassigned", + "refId": "G", + "step": 240 + }, + { + "expr": "(node_memory_SwapTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"} - node_memory_SwapFree_bytes{instance=~\"$node:$port\",job=~\"$job\"})", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Swap - Swap space used", + "refId": "H", + "step": 240 + }, + { + "expr": "node_memory_HardwareCorrupted_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working", + "refId": "I", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Stack", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "receive_packets_eth0": "#7EB26D", + "receive_packets_lo": "#E24D42", + "transmit_packets_eth0": "#7EB26D", + "transmit_packets_lo": "#E24D42" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 12, + "w": 12, + "x": 0, + "y": 23 + }, + "hiddenSeries": false, + "id": 84, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_receive_bytes_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])*8", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive", + "refId": "A", + "step": 240 + }, + { + "expr": "irate(node_network_transmit_bytes_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])*8", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Transmit", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bps", + "label": "bits out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 3, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 12, + "w": 12, + "x": 12, + "y": 23 + }, + "height": "", + "hiddenSeries": false, + "id": 156, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": false, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_filesystem_size_bytes{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'} - node_filesystem_avail_bytes{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{mountpoint}}", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk Space Used", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 12, + "w": 12, + "x": 0, + "y": 35 + }, + "hiddenSeries": false, + "id": 229, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Read.*/", + "transform": "negative-Y" + }, + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_reads_completed_total{instance=~\"$node:$port\"}[5m])", + "interval": "", + "intervalFactor": 4, + "legendFormat": "{{device}} - Reads completed", + "refId": "A", + "step": 480 + }, + { + "expr": "irate(node_disk_writes_completed_total{instance=~\"$node:$port\"}[5m])", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{device}} - Writes completed", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk IOps", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "iops", + "label": "IO read (-) / write (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "io time": "#890F02" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 3, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 12, + "w": 12, + "x": 12, + "y": 35 + }, + "hiddenSeries": false, + "id": 42, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": null, + "sortDesc": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*read*./", + "transform": "negative-Y" + }, + { + "alias": "/.*sda.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde.*/", + "color": "#E24D42" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_read_bytes_total{instance=~\"$node:$port\"}[5m])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{device}} - Successfully read bytes", + "refId": "A", + "step": 240 + }, + { + "expr": "irate(node_disk_written_bytes_total{instance=~\"$node:$port\"}[5m])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{device}} - Successfully written bytes", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O Usage Read / Write", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": false, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes read (-) / write (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "ms", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "io time": "#890F02" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 3, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 12, + "w": 12, + "x": 0, + "y": 47 + }, + "hiddenSeries": false, + "id": 127, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": null, + "sortDesc": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_io_time_seconds_total{instance=~\"$node:$port\"} [5m])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{device}} - Time spent doing I/Os", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O Usage Times", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": false, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "time", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "s", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 59 + }, + "id": 266, + "panels": [ + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 12 + }, + "hiddenSeries": false, + "id": 136, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_Inactive_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Inactive - Memory which has been less recently used. It is more eligible to be reclaimed for other purposes", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_Active_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Active - Memory that has been used more recently and usually not reclaimed unless absolutely necessary", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Active / Inactive", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 12 + }, + "hiddenSeries": false, + "id": 135, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Committed_AS - *./" + }, + { + "alias": "/.*CommitLimit - *./", + "color": "#BF1B00", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_Committed_AS_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Committed_AS - Amount of memory presently allocated on the system", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_CommitLimit_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "CommitLimit - Amount of memory currently available to be allocated on the system", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Commited", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 22 + }, + "hiddenSeries": false, + "id": 191, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_Inactive_file_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Inactive_file - File-backed memory on inactive LRU list", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_Inactive_anon_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Inactive_anon - Anonymous and swap cache on inactive LRU list, including tmpfs (shmem)", + "refId": "B", + "step": 4 + }, + { + "expr": "node_memory_Active_file_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Active_file - File-backed memory on active LRU list", + "refId": "C", + "step": 4 + }, + { + "expr": "node_memory_Active_anon_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Active_anon - Anonymous and swap cache on active least-recently-used (LRU) list, including tmpfs", + "refId": "D", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Active / Inactive Detail", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "bytes", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "Total Swap": "#614D93", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 22 + }, + "hiddenSeries": false, + "id": 130, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_Writeback_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Writeback - Memory which is actively being written back to disk", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_WritebackTmp_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "WritebackTmp - Memory used by FUSE for temporary writeback buffers", + "refId": "B", + "step": 4 + }, + { + "expr": "node_memory_Dirty_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Dirty - Memory which is waiting to get written back to the disk", + "refId": "C", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Writeback and Dirty", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 32 + }, + "hiddenSeries": false, + "id": 138, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "ShmemHugePages - Memory used by shared memory (shmem) and tmpfs allocated with huge pages", + "fill": 0 + }, + { + "alias": "ShmemHugePages - Memory used by shared memory (shmem) and tmpfs allocated with huge pages", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_Mapped_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Mapped - Used memory in mapped pages files which have been mmaped, such as libraries", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_Shmem_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Shmem - Used shared memory (shared between several processes, thus including RAM disks)", + "refId": "B", + "step": 4 + }, + { + "expr": "node_memory_ShmemHugePages_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "ShmemHugePages - Memory used by shared memory (shmem) and tmpfs allocated with huge pages", + "refId": "C", + "step": 4 + }, + { + "expr": "node_memory_ShmemPmdMapped_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "ShmemPmdMapped - Ammount of shared (shmem/tmpfs) memory backed by huge pages", + "refId": "D", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Shared and Mapped", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "Total Swap": "#614D93", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 32 + }, + "hiddenSeries": false, + "id": 131, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_SUnreclaim_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "SUnreclaim - Part of Slab, that cannot be reclaimed on memory pressure", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_SReclaimable_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "SReclaimable - Part of Slab, that might be reclaimed, such as caches", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Slab", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 42 + }, + "hiddenSeries": false, + "id": 70, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_VmallocChunk_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "VmallocChunk - Largest contigious block of vmalloc area which is free", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_VmallocTotal_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "VmallocTotal - Total size of vmalloc memory area", + "refId": "B", + "step": 4 + }, + { + "expr": "node_memory_VmallocUsed_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "VmallocUsed - Amount of vmalloc area which is used", + "refId": "C", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Vmalloc", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 42 + }, + "hiddenSeries": false, + "id": 159, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_Bounce_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Bounce - Memory used for block device bounce buffers", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Bounce", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 52 + }, + "hiddenSeries": false, + "id": 129, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Inactive *./", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_AnonHugePages_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "AnonHugePages - Memory in anonymous huge pages", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_AnonPages_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "AnonPages - Memory in user pages not backed by files", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Anonymous", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 52 + }, + "hiddenSeries": false, + "id": 160, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_KernelStack_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "KernelStack - Kernel memory stack. This is not reclaimable", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_Percpu_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "PerCPU - Per CPU memory allocated dynamically by loadable modules", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Kernel / CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#806EB7", + "Total RAM + Swap": "#806EB7", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 62 + }, + "hiddenSeries": false, + "id": 140, + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_HugePages_Free{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "HugePages_Free - Huge pages in the pool that are not yet allocated", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_HugePages_Rsvd{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "HugePages_Rsvd - Huge pages for which a commitment to allocate from the pool has been made, but no allocation has yet been made", + "refId": "B", + "step": 4 + }, + { + "expr": "node_memory_HugePages_Surp{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "HugePages_Surp - Huge pages in the pool above the value in /proc/sys/vm/nr_hugepages", + "refId": "C", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory HugePages Counter", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "pages", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#806EB7", + "Total RAM + Swap": "#806EB7", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 62 + }, + "hiddenSeries": false, + "id": 71, + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_HugePages_Total{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "HugePages - Total size of the pool of huge pages", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_Hugepagesize_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Hugepagesize - Huge Page size", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory HugePages Size", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 72 + }, + "hiddenSeries": false, + "id": 128, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_DirectMap1G_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "DirectMap1G - Amount of pages mapped as this size", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_DirectMap2M_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "DirectMap2M - Amount of pages mapped as this size", + "refId": "B", + "step": 4 + }, + { + "expr": "node_memory_DirectMap4k_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "DirectMap4K - Amount of pages mapped as this size", + "refId": "C", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory DirectMap", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 72 + }, + "hiddenSeries": false, + "id": 137, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_Unevictable_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Unevictable - Amount of unevictable memory that can't be swapped out for a variety of reasons", + "refId": "A", + "step": 4 + }, + { + "expr": "node_memory_Mlocked_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "MLocked - Size of pages locked to memory using the mlock() system call", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Unevictable and MLocked", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "Total Swap": "#614D93", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 82 + }, + "hiddenSeries": false, + "id": 132, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_NFS_Unstable_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "NFS Unstable - Memory in NFS pages sent to the server, but not yet commited to the storage", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory NFS", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Memory Meminfo", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 60 + }, + "id": 267, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 23 + }, + "hiddenSeries": false, + "id": 176, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*out/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_vmstat_pgpgin{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Pagesin - Page in operations", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_vmstat_pgpgout{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Pagesout - Page out operations", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Pages In / Out", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "pages out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 23 + }, + "hiddenSeries": false, + "id": 22, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*out/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_vmstat_pswpin{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Pswpin - Pages swapped in", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_vmstat_pswpout{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Pswpout - Pages swapped out", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Pages Swap In / Out", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "pages out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 33 + }, + "hiddenSeries": false, + "id": 175, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Pgfault - Page major and minor fault operations", + "fill": 0, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_vmstat_pgfault{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Pgfault - Page major and minor fault operations", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_vmstat_pgmajfault{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Pgmajfault - Major page fault operations", + "refId": "B", + "step": 4 + }, + { + "expr": "irate(node_vmstat_pgfault{instance=~\"$node:$port\",job=~\"$job\"}[5m]) - irate(node_vmstat_pgmajfault{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Pgminfault - Minor page fault operations", + "refId": "C", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Page Faults", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "faults", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "Total Swap": "#614D93", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 2, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 33 + }, + "hiddenSeries": false, + "id": 307, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_vmstat_oom_kill{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "oom killer invocations ", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "OOM Killer", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Memory Vmstat", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 61 + }, + "id": 293, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 24 + }, + "hiddenSeries": false, + "id": 260, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Variation*./", + "color": "#890F02" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_timex_estimated_error_seconds{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Estimated error in seconds", + "refId": "A", + "step": 240 + }, + { + "expr": "node_timex_offset_seconds{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Time offset in between local system and reference clock", + "refId": "B", + "step": 240 + }, + { + "expr": "node_timex_maxerror_seconds{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Maximum error in seconds", + "refId": "C", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Time Syncronized Drift", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "seconds", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 24 + }, + "hiddenSeries": false, + "id": 291, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_timex_loop_time_constant{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Phase-locked loop time adjust", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Time PLL Adjust", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 34 + }, + "hiddenSeries": false, + "id": 168, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Variation*./", + "color": "#890F02" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_timex_sync_status{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Is clock synchronized to a reliable server (1 = yes, 0 = no)", + "refId": "A", + "step": 240 + }, + { + "expr": "node_timex_frequency_adjustment_ratio{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Local clock frequency adjustment", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Time Syncronized Status", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 34 + }, + "hiddenSeries": false, + "id": 294, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_timex_tick_seconds{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Seconds between clock ticks", + "refId": "A", + "step": 240 + }, + { + "expr": "node_timex_tai_offset_seconds{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "International Atomic Time (TAI) offset", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Time Misc", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "seconds", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "title": "System Timesync", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 62 + }, + "id": 312, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 7 + }, + "hiddenSeries": false, + "id": 62, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_procs_blocked{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Processes blocked waiting for I/O to complete", + "refId": "A", + "step": 240 + }, + { + "expr": "node_procs_running{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Processes in runnable state", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Processes Status", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 7 + }, + "hiddenSeries": false, + "id": 315, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_processes_state{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ state }}", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Processes State", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 17 + }, + "hiddenSeries": false, + "id": 148, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_forks_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Processes forks second", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Processes Forks", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "forks / sec", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 17 + }, + "hiddenSeries": false, + "id": 149, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Max.*/", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(process_virtual_memory_bytes{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Processes virtual memory size in bytes", + "refId": "A", + "step": 240 + }, + { + "expr": "process_resident_memory_max_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Maximum amount of virtual memory available in bytes", + "refId": "B", + "step": 240 + }, + { + "expr": "irate(process_virtual_memory_bytes{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Processes virtual memory size in bytes", + "refId": "C", + "step": 240 + }, + { + "expr": "irate(process_virtual_memory_max_bytes{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Maximum amount of virtual memory available in bytes", + "refId": "D", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Processes Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 27 + }, + "hiddenSeries": false, + "id": 313, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "PIDs limit", + "color": "#F2495C", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_processes_pids{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Number of PIDs", + "refId": "A", + "step": 240 + }, + { + "expr": "node_processes_max_processes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "PIDs limit", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "PIDs Number and Limit", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 27 + }, + "hiddenSeries": false, + "id": 305, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*waiting.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_schedstat_running_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "CPU {{ cpu }} - seconds spent running a process", + "refId": "A", + "step": 240 + }, + { + "expr": "irate(node_schedstat_waiting_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "CPU {{ cpu }} - seconds spent by processing waiting for this CPU", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Process schdeule stats Running / Waiting", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "seconds", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 37 + }, + "hiddenSeries": false, + "id": 314, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Threads limit", + "color": "#F2495C", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_processes_threads{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Allocated threads", + "refId": "A", + "step": 240 + }, + { + "expr": "node_processes_max_threads{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Threads limit", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Threads Number and Limit", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "title": "System Processes", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 63 + }, + "id": 269, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 64 + }, + "hiddenSeries": false, + "id": 8, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_context_switches_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Context switches", + "refId": "A", + "step": 240 + }, + { + "expr": "irate(node_intr_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Interrupts", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Context Switches / Interrupts", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 64 + }, + "hiddenSeries": false, + "id": 7, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_load1{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 4, + "legendFormat": "Load 1m", + "refId": "A", + "step": 480 + }, + { + "expr": "node_load5{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 4, + "legendFormat": "Load 5m", + "refId": "B", + "step": 480 + }, + { + "expr": "node_load15{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 4, + "legendFormat": "Load 15m", + "refId": "C", + "step": 480 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "System Load", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 74 + }, + "hiddenSeries": false, + "id": 259, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Critical*./", + "color": "#E24D42", + "fill": 0 + }, + { + "alias": "/.*Max*./", + "color": "#EF843C", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_interrupts_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ type }} - {{ info }}", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Interrupts Detail", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 74 + }, + "hiddenSeries": false, + "id": 306, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_schedstat_timeslices_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "CPU {{ cpu }}", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Schedule timeslices executed by each cpu", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 84 + }, + "hiddenSeries": false, + "id": 151, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_entropy_available_bits{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Entropy available to random number generators", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Entropy", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 84 + }, + "hiddenSeries": false, + "id": 308, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(process_cpu_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Time spent", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU time spent in user and system contexts", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "seconds", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 94 + }, + "hiddenSeries": false, + "id": 64, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Max*./", + "color": "#890F02", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "process_max_fds{instance=~\"$node:$port\",job=~\"$job\"}", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Maximum open file descriptors", + "refId": "A", + "step": 240 + }, + { + "expr": "process_open_fds{instance=~\"$node:$port\",job=~\"$job\"}", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Open file descriptors", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "File Descriptors", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "System Misc", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 64 + }, + "id": 304, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 17 + }, + "hiddenSeries": false, + "id": 158, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Critical*./", + "color": "#E24D42", + "fill": 0 + }, + { + "alias": "/.*Max*./", + "color": "#EF843C", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_hwmon_temp_celsius{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ chip }} {{ sensor }} temp", + "refId": "A", + "step": 240 + }, + { + "expr": "node_hwmon_temp_crit_alarm_celsius{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": true, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ chip }} {{ sensor }} Critical Alarm", + "refId": "B", + "step": 240 + }, + { + "expr": "node_hwmon_temp_crit_celsius{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ chip }} {{ sensor }} Critical", + "refId": "C", + "step": 240 + }, + { + "expr": "node_hwmon_temp_crit_hyst_celsius{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": true, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ chip }} {{ sensor }} Critical Historical", + "refId": "D", + "step": 240 + }, + { + "expr": "node_hwmon_temp_max_celsius{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": true, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ chip }} {{ sensor }} Max", + "refId": "E", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Hardware temperature monitor", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "celsius", + "label": "temperature", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 17 + }, + "hiddenSeries": false, + "id": 300, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Max*./", + "color": "#EF843C", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_cooling_device_cur_state{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Current {{ name }} in {{ type }}", + "refId": "A", + "step": 240 + }, + { + "expr": "node_cooling_device_max_state{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max {{ name }} in {{ type }}", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Throttle cooling device", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 27 + }, + "hiddenSeries": false, + "id": 302, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_power_supply_online{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ power_supply }} online", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Power supply", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "title": "Hardware Misc", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 65 + }, + "id": 296, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 10 + }, + "hiddenSeries": false, + "id": 297, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_systemd_socket_accepted_connections_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ name }} Connections", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Systemd Sockets", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 10 + }, + "hiddenSeries": false, + "id": 298, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Failed", + "color": "#F2495C" + }, + { + "alias": "Inactive", + "color": "#FF9830" + }, + { + "alias": "Active", + "color": "#73BF69" + }, + { + "alias": "Deactivating", + "color": "#FFCB7D" + }, + { + "alias": "Activating", + "color": "#C8F2C2" + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_systemd_units{instance=~\"$node:$port\",job=~\"$job\",state=\"activating\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Activating", + "refId": "A", + "step": 240 + }, + { + "expr": "node_systemd_units{instance=~\"$node:$port\",job=~\"$job\",state=\"active\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Active", + "refId": "B", + "step": 240 + }, + { + "expr": "node_systemd_units{instance=~\"$node:$port\",job=~\"$job\",state=\"deactivating\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Deactivating", + "refId": "C", + "step": 240 + }, + { + "expr": "node_systemd_units{instance=~\"$node:$port\",job=~\"$job\",state=\"failed\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Failed", + "refId": "D", + "step": 240 + }, + { + "expr": "node_systemd_units{instance=~\"$node:$port\",job=~\"$job\",state=\"inactive\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Inactive", + "refId": "E", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Systemd Units State", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "title": "Systemd", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 66 + }, + "id": 270, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 29 + }, + "hiddenSeries": false, + "id": 9, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [ + { + "alias": "/.*Read.*/", + "transform": "negative-Y" + }, + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_reads_completed_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "intervalFactor": 4, + "legendFormat": "{{device}} - Reads completed", + "refId": "A", + "step": 8 + }, + { + "expr": "irate(node_disk_writes_completed_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "intervalFactor": 2, + "legendFormat": "{{device}} - Writes completed", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk IOps Completed", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "iops", + "label": "IO read (-) / write (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 29 + }, + "hiddenSeries": false, + "id": 33, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Read.*/", + "transform": "negative-Y" + }, + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_read_bytes_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 4, + "legendFormat": "{{device}} - Read bytes", + "refId": "A", + "step": 8 + }, + { + "expr": "irate(node_disk_written_bytes_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Written bytes", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk R/W Data", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": "bytes read (-) / write (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 3, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 39 + }, + "hiddenSeries": false, + "id": 37, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Read.*/", + "transform": "negative-Y" + }, + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_read_time_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "hide": false, + "intervalFactor": 4, + "legendFormat": "{{device}} - Read time", + "refId": "A", + "step": 8 + }, + { + "expr": "irate(node_disk_write_time_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{device}} - Write time", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk R/W Time", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "time. read (-) / write (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 39 + }, + "hiddenSeries": false, + "id": 35, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_io_time_weighted_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "intervalFactor": 4, + "legendFormat": "{{device}} - IO time weighted", + "refId": "A", + "step": 8 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk IOs Weighted", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "time", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 49 + }, + "hiddenSeries": false, + "id": 133, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Read.*/", + "transform": "negative-Y" + }, + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_reads_merged_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "intervalFactor": 2, + "legendFormat": "{{device}} - Read merged", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_disk_writes_merged_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "intervalFactor": 2, + "legendFormat": "{{device}} - Write merged", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk R/W Merged", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "iops", + "label": "I/Os", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 3, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 49 + }, + "hiddenSeries": false, + "id": 36, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_io_time_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "intervalFactor": 4, + "legendFormat": "{{device}} - IO time", + "refId": "A", + "step": 8 + }, + { + "expr": "irate(node_disk_discard_time_seconds_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "interval": "", + "intervalFactor": 4, + "legendFormat": "{{device}} - discard time", + "refId": "B", + "step": 8 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Time Spent Doing I/Os", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "time", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 59 + }, + "hiddenSeries": false, + "id": 34, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_disk_io_now{instance=~\"$node:$port\",job=~\"$job\"}", + "interval": "", + "intervalFactor": 4, + "legendFormat": "{{device}} - IO now", + "refId": "A", + "step": 8 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk IOs Current in Progress", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "iops", + "label": "I/Os", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 59 + }, + "hiddenSeries": false, + "id": 301, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null as zero", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_disk_discards_completed_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "interval": "", + "intervalFactor": 4, + "legendFormat": "{{device}} - Discards completed", + "refId": "A", + "step": 8 + }, + { + "expr": "irate(node_disk_discards_merged_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{device}} - Discards merged", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk IOps Discards completed / merged", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "iops", + "label": "IOs", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Storage Disk", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 67 + }, + "id": 271, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 3, + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 29 + }, + "hiddenSeries": false, + "id": 43, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_filesystem_avail_bytes{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{mountpoint}} - Available", + "metric": "", + "refId": "A", + "step": 4 + }, + { + "expr": "node_filesystem_free_bytes{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'}", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{mountpoint}} - Free", + "refId": "B", + "step": 2 + }, + { + "expr": "node_filesystem_size_bytes{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'}", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{mountpoint}} - Size", + "refId": "C", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Filesystem space available", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 29 + }, + "hiddenSeries": false, + "id": 41, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_filesystem_files_free{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{mountpoint}} - Free file nodes", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "File Nodes Free", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "file nodes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 39 + }, + "hiddenSeries": false, + "id": 28, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_filefd_maximum{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 4, + "legendFormat": "Max open files", + "refId": "A", + "step": 8 + }, + { + "expr": "node_filefd_allocated{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Open files", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "File Descriptor", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "files", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 39 + }, + "hiddenSeries": false, + "id": 219, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_filesystem_files{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{mountpoint}} - File nodes total", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "File Nodes Size", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "file Nodes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "/ ReadOnly": "#890F02" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": null, + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 49 + }, + "hiddenSeries": false, + "id": 44, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_filesystem_readonly{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{mountpoint}} - ReadOnly", + "refId": "A", + "step": 4 + }, + { + "expr": "node_filesystem_device_error{instance=~\"$node:$port\",job=~\"$job\",device!~'rootfs'}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{mountpoint}} - Device error", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Filesystem in ReadOnly / Error", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": "1", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Storage Filesystem", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 68 + }, + "id": 272, + "panels": [ + { + "aliasColors": { + "receive_packets_eth0": "#7EB26D", + "receive_packets_lo": "#E24D42", + "transmit_packets_eth0": "#7EB26D", + "transmit_packets_lo": "#E24D42" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 109 + }, + "hiddenSeries": false, + "id": 60, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_receive_packets_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_network_transmit_packets_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{device}} - Transmit", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic by Packets", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "pps", + "label": "packets out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 109 + }, + "hiddenSeries": false, + "id": 142, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_receive_errs_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive errors", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_network_transmit_errs_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Rransmit errors", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Errors", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "pps", + "label": "packets out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 119 + }, + "hiddenSeries": false, + "id": 143, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_receive_drop_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive drop", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_network_transmit_drop_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Transmit drop", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Drop", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "pps", + "label": "packets out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 119 + }, + "hiddenSeries": false, + "id": 141, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_receive_compressed_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive compressed", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_network_transmit_compressed_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Transmit compressed", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Compressed", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "pps", + "label": "packets out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 129 + }, + "hiddenSeries": false, + "id": 146, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_receive_multicast_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive multicast", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Multicast", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "pps", + "label": "packets out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 129 + }, + "hiddenSeries": false, + "id": 144, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_receive_fifo_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive fifo", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_network_transmit_fifo_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Transmit fifo", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Fifo", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "pps", + "label": "packets out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 139 + }, + "hiddenSeries": false, + "id": 145, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_receive_frame_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive frame", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Frame", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "pps", + "label": "packets out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 139 + }, + "hiddenSeries": false, + "id": 231, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_transmit_carrier_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Statistic transmit_carrier", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Carrier", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 149 + }, + "hiddenSeries": false, + "id": 232, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_transmit_colls_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Transmit colls", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Colls", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 149 + }, + "hiddenSeries": false, + "id": 61, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "NF conntrack limit", + "color": "#890F02", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_nf_conntrack_entries{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "NF conntrack entries", + "refId": "A", + "step": 4 + }, + { + "expr": "node_nf_conntrack_entries_limit{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "NF conntrack limit", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "NF Contrack", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "entries", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 159 + }, + "hiddenSeries": false, + "id": 230, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_arp_entries{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ device }} - ARP entries", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "ARP Entries", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "Entries", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 159 + }, + "hiddenSeries": false, + "id": 288, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_network_mtu_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ device }} - Bytes", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "MTU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 169 + }, + "hiddenSeries": false, + "id": 280, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_network_speed_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ device }} - Speed", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Speed", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 169 + }, + "hiddenSeries": false, + "id": 289, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_network_transmit_queue_length{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ device }} - Interface transmit queue length", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Queue Length", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "none", + "label": "packets", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 179 + }, + "hiddenSeries": false, + "id": 290, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Dropped.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_softnet_processed_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "CPU {{cpu}} - Processed", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_softnet_dropped_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "CPU {{cpu}} - Dropped", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Softnet Packets", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "packetes drop (-) / process (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 179 + }, + "hiddenSeries": false, + "id": 310, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_softnet_times_squeezed_total{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "CPU {{cpu}} - Squeezed", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Softnet Out of Quota", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 189 + }, + "hiddenSeries": false, + "id": 309, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_network_up{operstate=\"up\",instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{interface}} - Operational state UP", + "refId": "A", + "step": 4 + }, + { + "expr": "node_network_carrier{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "instant": false, + "legendFormat": "{{device}} - Physical link state", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Operational Status", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Network Traffic", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 69 + }, + "id": 273, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 13 + }, + "hiddenSeries": false, + "id": 63, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_sockstat_TCP_alloc{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "TCP_alloc - Allocated sockets", + "refId": "A", + "step": 240 + }, + { + "expr": "node_sockstat_TCP_inuse{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "TCP_inuse - Tcp sockets currently in use", + "refId": "B", + "step": 240 + }, + { + "expr": "node_sockstat_TCP_mem{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": true, + "interval": "", + "intervalFactor": 2, + "legendFormat": "TCP_mem - Used memory for tcp", + "refId": "C", + "step": 240 + }, + { + "expr": "node_sockstat_TCP_orphan{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "TCP_orphan - Orphan sockets", + "refId": "D", + "step": 240 + }, + { + "expr": "node_sockstat_TCP_tw{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "TCP_tw - Sockets wating close", + "refId": "E", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Sockstat TCP", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 13 + }, + "hiddenSeries": false, + "id": 124, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_sockstat_UDPLITE_inuse{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "UDPLITE_inuse - Udplite sockets currently in use", + "refId": "A", + "step": 240 + }, + { + "expr": "node_sockstat_UDP_inuse{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "UDP_inuse - Udp sockets currently in use", + "refId": "B", + "step": 240 + }, + { + "expr": "node_sockstat_UDP_mem{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "UDP_mem - Used memory for udp", + "refId": "C", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Sockstat UDP", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 23 + }, + "hiddenSeries": false, + "id": 126, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_sockstat_sockets_used{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Sockets_used - Sockets currently in use", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Sockstat Used", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "sockets", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 23 + }, + "hiddenSeries": false, + "id": 220, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_sockstat_TCP_mem_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "mem_bytes - TCP sockets in that state", + "refId": "A", + "step": 240 + }, + { + "expr": "node_sockstat_UDP_mem_bytes{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "mem_bytes - UDP sockets in that state", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Sockstat Memory Size", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 33 + }, + "hiddenSeries": false, + "id": 125, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_sockstat_FRAG_inuse{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "FRAG_inuse - Frag sockets currently in use", + "refId": "A", + "step": 240 + }, + { + "expr": "node_sockstat_FRAG_memory{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "FRAG_memory - Used memory for frag", + "refId": "B", + "step": 240 + }, + { + "expr": "node_sockstat_RAW_inuse{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "RAW_inuse - Raw sockets currently in use", + "refId": "C", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Sockstat FRAG / RAW", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Network Sockstat", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 70 + }, + "id": 274, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 32 + }, + "height": "", + "hiddenSeries": false, + "id": 221, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Out.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_IpExt_InOctets{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "InOctets - Received octets", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_netstat_IpExt_OutOctets{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "OutOctets - Sent octets", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Netstat IP In / Out Octets", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "octects out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 32 + }, + "height": "", + "hiddenSeries": false, + "id": 81, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_Ip_Forwarding{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Forwarding - IP forwarding", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Netstat IP Forwarding", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "datagrams", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": null, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 42 + }, + "height": "", + "hiddenSeries": false, + "id": 115, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Out.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_Icmp_InMsgs{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "InMsgs - Messages which the entity received. Note that this counter includes all those counted by icmpInErrors", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_netstat_Icmp_OutMsgs{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "OutMsgs - Messages which this entity attempted to send. Note that this counter includes all those counted by icmpOutErrors", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "ICMP In / Out", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "messages out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": null, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 42 + }, + "height": "", + "hiddenSeries": false, + "id": 50, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Out.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_Icmp_InErrors{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "InErrors - Messages which the entity received but determined as having ICMP-specific errors (bad ICMP checksums, bad length, etc.)", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "ICMP Errors", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "messages out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": null, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 52 + }, + "height": "", + "hiddenSeries": false, + "id": 55, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Out.*/", + "transform": "negative-Y" + }, + { + "alias": "/.*Snd.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_Udp_InDatagrams{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "InDatagrams - Datagrams received", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_netstat_Udp_OutDatagrams{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "OutDatagrams - Datagrams sent", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "UDP In / Out", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "datagrams out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 52 + }, + "height": "", + "hiddenSeries": false, + "id": 109, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_Udp_InErrors{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "InErrors - UDP Datagrams that could not be delivered to an application", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_netstat_Udp_NoPorts{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "NoPorts - UDP Datagrams received on a port with no listener", + "refId": "B", + "step": 4 + }, + { + "expr": "irate(node_netstat_UdpLite_InErrors{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "interval": "", + "legendFormat": "InErrors Lite - UDPLite Datagrams that could not be delivered to an application", + "refId": "C" + }, + { + "expr": "irate(node_netstat_Udp_RcvbufErrors{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "RcvbufErrors - UDP buffer errors received", + "refId": "D", + "step": 4 + }, + { + "expr": "irate(node_netstat_Udp_SndbufErrors{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "SndbufErrors - UDP buffer errors send", + "refId": "E", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "UDP Errors", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "datagrams", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": null, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 62 + }, + "height": "", + "hiddenSeries": false, + "id": 299, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Out.*/", + "transform": "negative-Y" + }, + { + "alias": "/.*Snd.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_Tcp_InSegs{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "instant": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "InSegs - Segments received, including those received in error. This count includes segments received on currently established connections", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_netstat_Tcp_OutSegs{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "OutSegs - Segments sent, including those on current connections but excluding those containing only retransmitted octets", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "TCP In / Out", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "datagrams out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 62 + }, + "height": "", + "hiddenSeries": false, + "id": 104, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_TcpExt_ListenOverflows{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "ListenOverflows - Times the listen queue of a socket overflowed", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_netstat_TcpExt_ListenDrops{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "ListenDrops - SYNs to LISTEN sockets ignored", + "refId": "B", + "step": 4 + }, + { + "expr": "irate(node_netstat_TcpExt_TCPSynRetrans{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "TCPSynRetrans - SYN-SYN/ACK retransmits to break down retransmissions in SYN, fast/timeout retransmits", + "refId": "C", + "step": 4 + }, + { + "expr": "irate(node_netstat_Tcp_RetransSegs{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "interval": "", + "legendFormat": "RetransSegs - Segments retransmitted - that is, the number of TCP segments transmitted containing one or more previously transmitted octets", + "refId": "D" + }, + { + "expr": "irate(node_netstat_Tcp_InErrs{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "interval": "", + "legendFormat": "InErrs - Segments received in error (e.g., bad TCP checksums)", + "refId": "E" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "TCP Errors", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 72 + }, + "height": "", + "hiddenSeries": false, + "id": 85, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*MaxConn *./", + "color": "#890F02", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_netstat_Tcp_CurrEstab{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "CurrEstab - TCP connections for which the current state is either ESTABLISHED or CLOSE- WAIT", + "refId": "A", + "step": 4 + }, + { + "expr": "node_netstat_Tcp_MaxConn{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "MaxConn - Limit on the total number of TCP connections the entity can support (Dinamic is \"-1\")", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "TCP Connections", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "connections", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 72 + }, + "height": "", + "hiddenSeries": false, + "id": 91, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Sent.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_TcpExt_SyncookiesFailed{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "SyncookiesFailed - Invalid SYN cookies received", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_netstat_TcpExt_SyncookiesRecv{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "SyncookiesRecv - SYN cookies received", + "refId": "B", + "step": 4 + }, + { + "expr": "irate(node_netstat_TcpExt_SyncookiesSent{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "SyncookiesSent - SYN cookies sent", + "refId": "C", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "TCP SynCookie", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 82 + }, + "height": "", + "hiddenSeries": false, + "id": 82, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_netstat_Tcp_ActiveOpens{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "ActiveOpens - TCP connections that have made a direct transition to the SYN-SENT state from the CLOSED state", + "refId": "A", + "step": 4 + }, + { + "expr": "irate(node_netstat_Tcp_PassiveOpens{instance=~\"$node:$port\",job=~\"$job\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "PassiveOpens - TCP connections that have made a direct transition to the SYN-RCVD state from the LISTEN state", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "TCP Direct Transition", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "connections", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Network Netstat", + "type": "row" + }, + { + "collapsed": true, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 71 + }, + "id": 279, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 154 + }, + "hiddenSeries": false, + "id": 40, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_scrape_collector_duration_seconds{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{collector}} - Scrape duration", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Node Exporter Scrape Time", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "seconds", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 154 + }, + "hiddenSeries": false, + "id": 157, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*error.*/", + "color": "#F2495C", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_scrape_collector_success{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{collector}} - Scrape success", + "refId": "A", + "step": 4 + }, + { + "expr": "node_textfile_scrape_error{instance=~\"$node:$port\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{collector}} - Scrape textfile error (1 = true)", + "refId": "B", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Node Exporter Scrape", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Node Exporter", + "type": "row" + } + ], + "refresh": false, + "schemaVersion": 25, + "style": "dark", + "tags": [ + "linux" + ], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "Prometheus", + "value": "Prometheus" + }, + "hide": 0, + "includeAll": false, + "label": "datasource", + "multi": false, + "name": "DS_PROMETHEUS", + "options": [], + "query": "prometheus", + "queryValue": "", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "type": "datasource" + }, + { + "allValue": null, + "current": { + "selected": false, + "text": "kafka", + "value": "kafka" + }, + "datasource": "${DS_PROMETHEUS}", + "definition": "", + "hide": 0, + "includeAll": false, + "label": "Job", + "multi": false, + "name": "job", + "options": [], + "query": "label_values(node_uname_info, job)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": { + "selected": false, + "text": "ip-10-0-0-15.us-west-2.compute.internal", + "value": "ip-10-0-0-15.us-west-2.compute.internal" + }, + "datasource": "${DS_PROMETHEUS}", + "definition": "", + "hide": 0, + "includeAll": false, + "label": "Host:", + "multi": false, + "name": "name", + "options": [], + "query": "label_values(node_uname_info{job=~\"$job\"}, nodename)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": { + "selected": false, + "text": "10.0.0.15", + "value": "10.0.0.15" + }, + "datasource": "${DS_PROMETHEUS}", + "definition": "", + "hide": 2, + "includeAll": false, + "label": "Host:", + "multi": false, + "name": "node", + "options": [], + "query": "label_values(node_uname_info{nodename=\"$name\"}, instance)", + "refresh": 1, + "regex": "/([^:]+):.*/", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": { + "selected": false, + "text": "9100", + "value": "9100" + }, + "datasource": "${DS_PROMETHEUS}", + "definition": "", + "hide": 0, + "includeAll": false, + "label": "Port", + "multi": false, + "name": "port", + "options": [], + "query": "label_values(node_uname_info{instance=~\"$node:(.*)\"}, instance)", + "refresh": 1, + "regex": "/[^:]+:(.*)/", + "skipUrlSync": false, + "sort": 3, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-3h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "browser", + "title": "Node Exporter Full", + "uid": "rYdddlPWk", + "version": 4 +} \ No newline at end of file diff --git a/driver-msk/deploy/monitoring/dashboards/zookeeper.json b/driver-msk/deploy/monitoring/dashboards/zookeeper.json new file mode 100644 index 00000000..d8a4ab43 --- /dev/null +++ b/driver-msk/deploy/monitoring/dashboards/zookeeper.json @@ -0,0 +1,953 @@ +{ + "annotations": { + "list": [] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "hideControls": false, + "id": 3, + "links": [], + "rows": [ + { + "collapse": false, + "height": 236, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 1, + "description": "All write operations (create / setData / ...)", + "fill": 0, + "id": 1, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(zookeeper_server_requests_latency_ms_count{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\", type=\"write\"}[30s])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Write Requests", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "writes / s", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "description": "All read operations (getData / getChildren / ...)", + "fill": 0, + "id": 2, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(zookeeper_server_requests_latency_ms_count{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\", type=\"read\"}[30s])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Read Requests", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "reads / s", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "Dashboard Row", + "titleSize": "h6" + }, + { + "collapse": false, + "height": 250, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "description": "All write operations (create / setData / ...)", + "fill": 0, + "id": 4, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null as zero", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "zookeeper_server_requests_latency_ms{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\", type=\"write\", quantile=\"0.99\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Write Latency - 99pct", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 1, + "description": "All write operations (create / setData / ...)", + "fill": 0, + "id": 5, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "zookeeper_server_requests_latency_ms{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\", type=\"read\", quantile=\"0.99\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Read Latency - 99pct", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "Dashboard Row", + "titleSize": "h6" + }, + { + "collapse": false, + "height": 250, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 1, + "description": "", + "fill": 1, + "id": 6, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 12, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum(irate(zookeeper_server_requests{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\"}[30s])) by (type)", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{type}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Request Types", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "Dashboard Row", + "titleSize": "h6" + }, + { + "collapse": false, + "height": 250, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "description": "", + "fill": 0, + "id": 7, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "zookeeper_server_znode_count{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{cluster}} - {{kubernetes_pod_name}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Z-Nodes count", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "description": "Size of the data stored in a ZK server", + "fill": 0, + "id": 8, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "zookeeper_server_data_size_bytes{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{cluster}} - {{kubernetes_pod_name}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Data set size", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "Dashboard Row", + "titleSize": "h6" + }, + { + "collapse": false, + "height": 250, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "description": "Number of opened connections", + "fill": 1, + "id": 9, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 4, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "zookeeper_server_connections{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{cluster}} - {{kubernetes_pod_name}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Connections", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "description": "", + "fill": 1, + "id": 10, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 4, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "zookeeper_server_watches_count{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{cluster}} - {{kubernetes_pod_name}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Number of watches", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "description": "", + "fill": 0, + "id": 11, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 4, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "zookeeper_server_ephemerals_count{cluster=~\"$cluster\", kubernetes_pod_name=~\"$server\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{cluster}} - {{kubernetes_pod_name}}", + "metric": "zookeeper_server_requests_latency_ms_count", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Number of ephemerals", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "Dashboard Row", + "titleSize": "h6" + } + ], + "schemaVersion": 14, + "style": "dark", + "tags": [ + "zookeeper" + ], + "templating": { + "list": [ + { + "allValue": null, + "current": { + "text": "us-central", + "value": "us-central" + }, + "datasource": "Prometheus", + "hide": 0, + "includeAll": false, + "label": "Cluster", + "multi": false, + "name": "cluster", + "options": [], + "query": "{cluster=~\".+\"}", + "refresh": 1, + "regex": "/.*[^_]cluster=\\\"([^\\\"]+)\\\".*/", + "sort": 1, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Prometheus", + "hide": 0, + "includeAll": true, + "label": "ZK Server", + "multi": false, + "name": "server", + "options": [], + "query": "zookeeper_server_requests_latency_ms_count{cluster=~\"$cluster\", kubernetes_pod_name=~\".+\"}", + "refresh": 2, + "regex": "/.*[^_]kubernetes_pod_name=\\\"([^\\\"]+)\\\".*/", + "sort": 1, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "browser", + "title": "ZooKeeper", + "version": 11 +} \ No newline at end of file diff --git a/driver-msk/deploy/monitoring/grafana.ini b/driver-msk/deploy/monitoring/grafana.ini new file mode 100644 index 00000000..e28ca88b --- /dev/null +++ b/driver-msk/deploy/monitoring/grafana.ini @@ -0,0 +1,39 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +[users] +# disable user signup / registration +allow_sign_up = false + +# Default UI theme ("dark" or "light") +default_theme = dark + +[auth.anonymous] +# enable anonymous access +enabled = true + +# specify organization name that should be used for unauthenticated users +org_name = Main Org. + +# specify role for unauthenticated users +org_role = Viewer + +[dashboards] +enabled = true +path = /var/lib/grafana/dashboards \ No newline at end of file diff --git a/driver-msk/deploy/monitoring/jmx_exporter/client.yml b/driver-msk/deploy/monitoring/jmx_exporter/client.yml new file mode 100644 index 00000000..792f8af8 --- /dev/null +++ b/driver-msk/deploy/monitoring/jmx_exporter/client.yml @@ -0,0 +1,22 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +lowercaseOutputLabelNames: false +lowercaseOutputName: true +## Export everything diff --git a/driver-msk/deploy/monitoring/jmx_exporter/jmx_prometheus_javaagent-0.13.0.jar b/driver-msk/deploy/monitoring/jmx_exporter/jmx_prometheus_javaagent-0.13.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..c55a92e5434fc28d56bb3b9d3757de4acf812617 GIT binary patch literal 374371 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%0D}{!jx%7==Q?V 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
xa{Bc*B-TB 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

9khd); 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 VI%?a8sA-lxt3+6CqUBEwETmCdqR^K%F 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 + name: kafka_server_$1_$2 + type: GAUGE + labels: + clientId: "$3" + topic: "$4" + partition: "$5" + - pattern: kafka.server<>Value + name: kafka_server_$1_$2 + type: GAUGE + labels: + clientId: "$3" + broker: "$4:$5" + - pattern: kafka.coordinator.(\w+)<>Value + name: kafka_coordinator_$1_$2_$3 + type: GAUGE + + # Generic per-second counters with 0-2 key/value pairs + - pattern: kafka.(\w+)<>Count + name: kafka_$1_$2_$3_total + type: COUNTER + labels: + "$4": "$5" + "$6": "$7" + - pattern: kafka.(\w+)<>Count + name: kafka_$1_$2_$3_total + type: COUNTER + labels: + "$4": "$5" + - pattern: kafka.(\w+)<>Count + name: kafka_$1_$2_$3_total + type: COUNTER + + - pattern: kafka.server<>([a-z-]+) + name: kafka_server_quota_$3 + type: GAUGE + labels: + resource: "$1" + clientId: "$2" + + - pattern: kafka.server<>([a-z-]+) + name: kafka_server_quota_$4 + type: GAUGE + labels: + resource: "$1" + user: "$2" + clientId: "$3" + + # Generic gauges with 0-2 key/value pairs + - pattern: kafka.(\w+)<>Value + name: kafka_$1_$2_$3 + type: GAUGE + labels: + "$4": "$5" + "$6": "$7" + - pattern: kafka.(\w+)<>Value + name: kafka_$1_$2_$3 + type: GAUGE + labels: + "$4": "$5" + - pattern: kafka.(\w+)<>Value + name: kafka_$1_$2_$3 + type: GAUGE + + # Emulate Prometheus 'Summary' metrics for the exported 'Histogram's. + # + # Note that these are missing the '_sum' metric! + - pattern: kafka.(\w+)<>Count + name: kafka_$1_$2_$3_count + type: COUNTER + labels: + "$4": "$5" + "$6": "$7" + - pattern: kafka.(\w+)<>(\d+)thPercentile + name: kafka_$1_$2_$3 + type: GAUGE + labels: + "$4": "$5" + "$6": "$7" + quantile: "0.$8" + - pattern: kafka.(\w+)<>Count + name: kafka_$1_$2_$3_count + type: COUNTER + labels: + "$4": "$5" + - pattern: kafka.(\w+)<>(\d+)thPercentile + name: kafka_$1_$2_$3 + type: GAUGE + labels: + "$4": "$5" + quantile: "0.$6" + - pattern: kafka.(\w+)<>Count + name: kafka_$1_$2_$3_count + type: COUNTER + - pattern: kafka.(\w+)<>(\d+)thPercentile + name: kafka_$1_$2_$3 + type: GAUGE + labels: + quantile: "0.$4" diff --git a/driver-msk/deploy/monitoring/jmx_exporter/zookeeper.yml b/driver-msk/deploy/monitoring/jmx_exporter/zookeeper.yml new file mode 100644 index 00000000..22b82b72 --- /dev/null +++ b/driver-msk/deploy/monitoring/jmx_exporter/zookeeper.yml @@ -0,0 +1,123 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +lowercaseOutputLabelNames: false +lowercaseOutputName: true +## Export everything +# rules: +# # Special cases and very specific rules +# - pattern: kafka.server<>Value +# name: kafka_server_$1_$2 +# type: GAUGE +# labels: +# clientId: "$3" +# topic: "$4" +# partition: "$5" +# - pattern: kafka.server<>Value +# name: kafka_server_$1_$2 +# type: GAUGE +# labels: +# clientId: "$3" +# broker: "$4:$5" +# - pattern: kafka.coordinator.(\w+)<>Value +# name: kafka_coordinator_$1_$2_$3 +# type: GAUGE + +# # Generic per-second counters with 0-2 key/value pairs +# - pattern: kafka.(\w+)<>Count +# name: kafka_$1_$2_$3_total +# type: COUNTER +# labels: +# "$4": "$5" +# "$6": "$7" +# - pattern: kafka.(\w+)<>Count +# name: kafka_$1_$2_$3_total +# type: COUNTER +# labels: +# "$4": "$5" +# - pattern: kafka.(\w+)<>Count +# name: kafka_$1_$2_$3_total +# type: COUNTER + +# - pattern: kafka.server<>([a-z-]+) +# name: kafka_server_quota_$3 +# type: GAUGE +# labels: +# resource: "$1" +# clientId: "$2" + +# - pattern: kafka.server<>([a-z-]+) +# name: kafka_server_quota_$4 +# type: GAUGE +# labels: +# resource: "$1" +# user: "$2" +# clientId: "$3" + +# # Generic gauges with 0-2 key/value pairs +# - pattern: kafka.(\w+)<>Value +# name: kafka_$1_$2_$3 +# type: GAUGE +# labels: +# "$4": "$5" +# "$6": "$7" +# - pattern: kafka.(\w+)<>Value +# name: kafka_$1_$2_$3 +# type: GAUGE +# labels: +# "$4": "$5" +# - pattern: kafka.(\w+)<>Value +# name: kafka_$1_$2_$3 +# type: GAUGE + +# # Emulate Prometheus 'Summary' metrics for the exported 'Histogram's. +# # +# # Note that these are missing the '_sum' metric! +# - pattern: kafka.(\w+)<>Count +# name: kafka_$1_$2_$3_count +# type: COUNTER +# labels: +# "$4": "$5" +# "$6": "$7" +# - pattern: kafka.(\w+)<>(\d+)thPercentile +# name: kafka_$1_$2_$3 +# type: GAUGE +# labels: +# "$4": "$5" +# "$6": "$7" +# quantile: "0.$8" +# - pattern: kafka.(\w+)<>Count +# name: kafka_$1_$2_$3_count +# type: COUNTER +# labels: +# "$4": "$5" +# - pattern: kafka.(\w+)<>(\d+)thPercentile +# name: kafka_$1_$2_$3 +# type: GAUGE +# labels: +# "$4": "$5" +# quantile: "0.$6" +# - pattern: kafka.(\w+)<>Count +# name: kafka_$1_$2_$3_count +# type: COUNTER +# - pattern: kafka.(\w+)<>(\d+)thPercentile +# name: kafka_$1_$2_$3 +# type: GAUGE +# labels: +# quantile: "0.$4" diff --git a/driver-msk/deploy/monitoring/start.sh b/driver-msk/deploy/monitoring/start.sh new file mode 100755 index 00000000..8cc5a499 --- /dev/null +++ b/driver-msk/deploy/monitoring/start.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + + +echo 'Starting Grafana...' + +/run.sh "$@" & + +AddDataSource() { + curl 'http://admin:admin@localhost:3000/api/datasources' \ + -X POST \ + -H 'Content-Type: application/json;charset=UTF-8' \ + --data-binary \ + "{\"name\":\"Prometheus\",\"type\":\"prometheus\",\"url\":\"$PROMETHEUS_URL\",\"access\":\"proxy\",\"isDefault\":true}" +} + +until AddDataSource; do + echo 'Configuring Grafana...' + sleep 1 +done + echo 'Done!' +wait \ No newline at end of file diff --git a/driver-msk/deploy/provision-msk.tf b/driver-msk/deploy/provision-msk.tf new file mode 100644 index 00000000..79f83a9e --- /dev/null +++ b/driver-msk/deploy/provision-msk.tf @@ -0,0 +1,260 @@ +provider "aws" { + region = "${var.region}" +} + +provider "random" { +} + +variable "public_key_path" {} + +variable "key_name" { + default = "kafka-benchmark-key" + description = "Desired name prefix for the AWS key pair" +} + +variable "region" {} + +variable "ami" {} + +variable "profile" {} + +variable "kafka_version" {} + +variable "instance_types" { + type = map(string) +} + +variable "num_instances" { + type = map(number) +} + +data "aws_availability_zones" "azs" { + state = "available" +} + +resource "random_id" "hash" { + byte_length = 8 +} + +resource "aws_vpc" "vpc" { + cidr_block = "192.168.0.0/22" +} + +# Create an internet gateway to give our subnet access to the outside world +resource "aws_internet_gateway" "msk-bench" { + vpc_id = "${aws_vpc.vpc.id}" +} + +# Grant the VPC internet access on its main route table +resource "aws_route" "internet_access" { + route_table_id = "${aws_vpc.vpc.main_route_table_id}" + destination_cidr_block = "0.0.0.0/0" + gateway_id = "${aws_internet_gateway.msk-bench.id}" +} + +resource "aws_subnet" "subnet_az1" { + availability_zone = data.aws_availability_zones.azs.names[0] + cidr_block = "192.168.0.0/24" + vpc_id = aws_vpc.vpc.id +} + +resource "aws_subnet" "subnet_az2" { + availability_zone = data.aws_availability_zones.azs.names[1] + cidr_block = "192.168.1.0/24" + vpc_id = aws_vpc.vpc.id +} + +resource "aws_subnet" "subnet_az3" { + availability_zone = data.aws_availability_zones.azs.names[2] + cidr_block = "192.168.2.0/24" + vpc_id = aws_vpc.vpc.id +} + +#resource "aws_subnet" "subnet_clients" { +# availability_zone = data.aws_availability_zones.azs.names[0] +# cidr_block = "192.168.3.0/24" +# vpc_id = aws_vpc.vpc.id +# map_public_ip_on_launch = true +#} + +resource "aws_security_group" "sg" { + vpc_id = aws_vpc.vpc.id + name = "omb-sg-${random_id.hash.hex}" + + # SSH access from anywhere + ingress { + from_port = 22 + to_port = 22 + protocol = "tcp" + cidr_blocks = ["0.0.0.0/0"] + } + + # All ports open within the VPC + ingress { + from_port = 0 + to_port = 65535 + protocol = "tcp" + cidr_blocks = ["10.0.0.0/16"] + } + + # outbound internet access + egress { + from_port = 0 + to_port = 0 + protocol = "-1" + cidr_blocks = ["0.0.0.0/0"] + } + + ingress { + from_port = 0 + to_port = 0 + protocol = "-1" + security_groups = [aws_security_group.sg-client.id] + } +} + +resource "aws_security_group" "sg-client" { + vpc_id = aws_vpc.vpc.id + name = "omb-client-sg-${random_id.hash.hex}" + + # SSH access from anywhere + ingress { + from_port = 22 + to_port = 22 + protocol = "tcp" + cidr_blocks = ["0.0.0.0/0"] + } + + # All ports open within the VPC + ingress { + from_port = 0 + to_port = 65535 + protocol = "tcp" + cidr_blocks = ["10.0.0.0/16"] + } + + # All ports open to this machine + ingress { + from_port = 0 + to_port = 65535 + protocol = "tcp" + cidr_blocks = ["${chomp(data.http.myip.body)}/32"] + } + + # Prometheus/Dashboard access + ingress { + from_port = 3000 + to_port = 3000 + protocol = "tcp" + cidr_blocks = ["0.0.0.0/0"] + } + + # outbound internet access + egress { + from_port = 0 + to_port = 0 + protocol = "-1" + cidr_blocks = ["0.0.0.0/0"] + } + + tags = { + Name = "Benchmark-Security-Group-${random_id.hash.hex}" + } +} + +resource "aws_kms_key" "kms" { + description = "example" +} + +resource "aws_cloudwatch_log_group" "test" { + name = "msk_broker_logs" +} + +resource "aws_msk_cluster" "bench" { + cluster_name = "bench" + kafka_version = var.kafka_version + number_of_broker_nodes = "${var.num_instances["broker"]}" + + broker_node_group_info { + instance_type = "${var.instance_types["broker"]}" + + ebs_volume_size = 4000 + client_subnets = [ + aws_subnet.subnet_az1.id, + aws_subnet.subnet_az2.id, + aws_subnet.subnet_az3.id, + ] + security_groups = [aws_security_group.sg.id] + } + + encryption_info { + encryption_at_rest_kms_key_arn = aws_kms_key.kms.arn + } + + open_monitoring { + prometheus { + jmx_exporter { + enabled_in_broker = true + } + node_exporter { + enabled_in_broker = true + } + } + } + + tags = { + owner = "user" + } +} + +output "zookeeper_connect_string" { + value = aws_msk_cluster.bench.zookeeper_connect_string +} + +output "bootstrap_brokers_tls" { + description = "TLS connection host:port pairs" + value = aws_msk_cluster.bench.bootstrap_brokers_tls +} + + +### +# Get public IP of this machine +data "http" "myip" { + url = "http://ipv4.icanhazip.com" +} + +resource "aws_key_pair" "auth" { + key_name = "${var.key_name}-${random_id.hash.hex}" + public_key = "${file(var.public_key_path)}" +} + +resource "aws_instance" "client" { + ami = "${var.ami}" + instance_type = "${var.instance_types["client"]}" + key_name = "${aws_key_pair.auth.id}" +# subnet_id = aws_subnet.subnet_clients.id + subnet_id = aws_subnet.subnet_az1.id + associate_public_ip_address = true + vpc_security_group_ids = [aws_security_group.sg-client.id] + count = "${var.num_instances["client"]}" + monitoring = true + + tags = { + Name = "kafka-client-${count.index}" + } + + root_block_device { + volume_size = 100 + } +} + +output "clients" { + value = { + for instance in aws_instance.client : + instance.public_ip => instance.private_ip + } +} + +#output "client_ssh_host" { +# value = "${aws_instance.client.0.public_ip}" +#} diff --git a/driver-msk/deploy/templates/benchmark-worker.service b/driver-msk/deploy/templates/benchmark-worker.service new file mode 100644 index 00000000..0a75fa8b --- /dev/null +++ b/driver-msk/deploy/templates/benchmark-worker.service @@ -0,0 +1,14 @@ +[Unit] +Description=Benchmark worker +After=network.target + +[Service] +ExecStart=/opt/benchmark/bin/benchmark-worker +WorkingDirectory=/opt/benchmark +RestartSec=1s +Restart=on-failure +Type=simple +LimitNOFILE=300000 + +[Install] +WantedBy=multi-user.target diff --git a/driver-msk/deploy/templates/chrony.conf b/driver-msk/deploy/templates/chrony.conf new file mode 100644 index 00000000..0e68c66a --- /dev/null +++ b/driver-msk/deploy/templates/chrony.conf @@ -0,0 +1,54 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# Use public servers from the pool.ntp.org project. +# Please consider joining the pool (http://www.pool.ntp.org/join.html). +server 169.254.169.123 prefer iburst + +# Record the rate at which the system clock gains/losses time. +driftfile /var/lib/chrony/drift + +# Allow the system clock to be stepped in the first three updates +# if its offset is larger than 1 second. +makestep 1.0 3 + +# Enable kernel synchronization of the real-time clock (RTC). +rtcsync + +# Enable hardware timestamping on all interfaces that support it. +#hwtimestamp * + +# Increase the minimum number of selectable sources required to adjust +# the system clock. +#minsources 2 + +# Allow NTP client access from local network. +#allow 192.168.0.0/16 + +# Serve time even if not synchronized to a time source. +#local stratum 10 + +# Specify file containing keys for NTP authentication. +#keyfile /etc/chrony.keys + +# Specify directory for log files. +logdir /var/log/chrony + +# Select which information is logged. +#log measurements statistics tracking diff --git a/driver-msk/deploy/templates/kafka-dashboard.service b/driver-msk/deploy/templates/kafka-dashboard.service new file mode 100644 index 00000000..8b00e459 --- /dev/null +++ b/driver-msk/deploy/templates/kafka-dashboard.service @@ -0,0 +1,16 @@ +[Unit] +Description=Kafka Dashboard +After=docker.service +Requires=docker.service +After=prometheus.service +Requires=prometheus.service + +[Service] +ExecStartPre=/usr/bin/docker pull aloknnikhil/omb-kafka-dashboard:latest +ExecStart=/usr/bin/docker run --restart=always --name=systemd_kafka_dashboard -p3000:3000 -e PROMETHEUS_URL=http://{{ hostvars[groups['prometheus'][0]].private_ip }}:9090/ aloknnikhil/omb-kafka-dashboard:latest +ExecStop=/usr/bin/docker stop systemd_kafka_dashboard +ExecStopPost=/usr/bin/docker rm -f systemd_kafka_dashboard +ExecReload=/usr/bin/docker restart systemd_kafka_dashboard + +[Install] +WantedBy=multi-user.target diff --git a/driver-msk/deploy/templates/kafka.service b/driver-msk/deploy/templates/kafka.service new file mode 100644 index 00000000..3ed876d3 --- /dev/null +++ b/driver-msk/deploy/templates/kafka.service @@ -0,0 +1,19 @@ +[Unit] +Description=Kafka +After=network.target + +[Service] +ExecStart=/opt/kafka/bin/kafka-server-start.sh config/server.properties +Environment=JMX_PORT=9999 +Environment="KAFKA_OPTS=-javaagent:/opt/kafka/jmx_prometheus_javaagent-0.13.0.jar=8080:/opt/kafka/metrics.yml" +Environment="KAFKA_JMX_OPTS=-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=prod-kafka-001 -Djava.net.preferIPv4Stack=true" +Environment='KAFKA_HEAP_OPTS=-Xms6g -Xmx6g -XX:MetaspaceSize=96m' +Environment='KAFKA_JVM_PERFORMANCE_OPTS=-server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSize=16M -XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80 -Djava.awt.headless=true" +WorkingDirectory=/opt/kafka +RestartSec=1s +Restart=on-failure +Type=simple +LimitNOFILE=300000 + +[Install] +WantedBy=multi-user.target diff --git a/driver-msk/deploy/templates/myid b/driver-msk/deploy/templates/myid new file mode 100644 index 00000000..6b8ddbb2 --- /dev/null +++ b/driver-msk/deploy/templates/myid @@ -0,0 +1 @@ +{{ zid }} diff --git a/driver-msk/deploy/templates/prometheus.service b/driver-msk/deploy/templates/prometheus.service new file mode 100644 index 00000000..8f1effac --- /dev/null +++ b/driver-msk/deploy/templates/prometheus.service @@ -0,0 +1,13 @@ +[Unit] +Description=Prometheus server +After=network.target + +[Service] +WorkingDirectory=/opt/prometheus +ExecStart=/opt/prometheus/prometheus \ + --web.enable-admin-api \ + --storage.tsdb.path=/opt/prometheus/data \ + --config.file=/opt/prometheus/prometheus.yml + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/driver-msk/deploy/templates/prometheus.yml b/driver-msk/deploy/templates/prometheus.yml new file mode 100644 index 00000000..13462e8c --- /dev/null +++ b/driver-msk/deploy/templates/prometheus.yml @@ -0,0 +1,83 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# my global config +global: + scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. + evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. + # scrape_timeout is set to the global default (10s). + +# Alertmanager configuration +alerting: + alertmanagers: + - static_configs: + - targets: + # - alertmanager:9093 + +# Load rules once and periodically evaluate them according to the global 'evaluation_interval'. +rule_files: + # - "first_rules.yml" + # - "second_rules.yml" + +# A scrape configuration containing exactly one endpoint to scrape: +# Here it's Prometheus itself. +scrape_configs: + # The job name is added as a label `job=` to any timeseries scraped from this config. + - job_name: 'kafka' + + # metrics_path defaults to '/metrics' + # scheme defaults to 'http'. + + static_configs: + - targets: +{% for worker in groups['kafka'] %} + - {{ hostvars[worker].private_ip }}:8080 +{% endfor %} + labels: + group: 'broker' + - targets: +{% for worker in groups['client'] %} + - {{ hostvars[worker].private_ip }}:8081 +{% endfor %} + labels: + group: 'client' + - targets: +{% for worker in groups['kafka'] %} + - {{ hostvars[worker].private_ip }}:9100 +{% endfor %} + labels: + group: 'broker-os' + - targets: +{% for worker in groups['zookeeper'] %} + - {{ hostvars[worker].private_ip }}:7070 +{% endfor %} + labels: + group: 'zookeeper-jmx' + - targets: +{% for worker in groups['zookeeper'] %} + - {{ hostvars[worker].private_ip }}:8000 +{% endfor %} + labels: + group: 'zookeeper' + - targets: +{% for worker in groups['client'] %} + - {{ hostvars[worker].private_ip }}:9090 +{% endfor %} + labels: + group: 'client - jmx' diff --git a/driver-msk/deploy/templates/server.properties b/driver-msk/deploy/templates/server.properties new file mode 100644 index 00000000..d5ec0f61 --- /dev/null +++ b/driver-msk/deploy/templates/server.properties @@ -0,0 +1,38 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + + +broker.id={{ brokerId }} + +advertised.listeners=PLAINTEXT://{{ privateIp }}:9092 + +log.dirs=/mnt/data-1,/mnt/data-2 + +zookeeper.connect={{ zookeeperServers }} + +num.replica.fetchers=16 + +message.max.bytes=10485760 + +replica.fetch.max.bytes=10485760 + +num.network.threads=16 + +num.io.threads=16 + diff --git a/driver-msk/deploy/templates/workers.yaml b/driver-msk/deploy/templates/workers.yaml new file mode 100644 index 00000000..c9ef4e45 --- /dev/null +++ b/driver-msk/deploy/templates/workers.yaml @@ -0,0 +1,24 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + + +workers: +{% for worker in groups['client'] %} + - http://{{ hostvars[worker].private_ip }}:8080 +{% endfor %} diff --git a/driver-msk/deploy/templates/zookeeper.properties b/driver-msk/deploy/templates/zookeeper.properties new file mode 100644 index 00000000..b33cad81 --- /dev/null +++ b/driver-msk/deploy/templates/zookeeper.properties @@ -0,0 +1,49 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# The number of milliseconds of each tick +tickTime=2000 +# The number of ticks that the initial +# synchronization phase can take +initLimit=10 +# The number of ticks that can pass between +# sending a request and getting an acknowledgement +syncLimit=5 +# the directory where the snapshot is stored. +dataDir=data/zookeeper +# the port at which the clients will connect +clientPort=2181 +# the maximum number of client connections. +# increase this if you need to handle more clients +#maxClientCnxns=60 +# +# Be sure to read the maintenance section of the +# administrator guide before turning on autopurge. +# +# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance +# +# The number of snapshots to retain in dataDir +autopurge.snapRetainCount=3 +# Purge task interval in hours +# Set to "0" to disable auto purge feature +autopurge.purgeInterval=1 + +{% for zk in groups['zookeeper'] %} +server.{{ hostvars[zk].zid }}={{ hostvars[zk].private_ip }}:2888:3888 +{% endfor %} diff --git a/driver-msk/deploy/templates/zookeeper.service b/driver-msk/deploy/templates/zookeeper.service new file mode 100644 index 00000000..13dbf8e9 --- /dev/null +++ b/driver-msk/deploy/templates/zookeeper.service @@ -0,0 +1,14 @@ +[Unit] +Description=ZooKeeper +After=network.target + +[Service] +Environment="EXTRA_ARGS=-javaagent:/opt/kafka/jmx_prometheus_javaagent-0.13.0.jar=7070:/opt/kafka/zookeeper.yml" +ExecStart=/opt/kafka/bin/zookeeper-server-start.sh config/zookeeper.properties +WorkingDirectory=/opt/kafka +RestartSec=1s +Restart=on-failure +Type=simple + +[Install] +WantedBy=multi-user.target diff --git a/driver-msk/deploy/terraform.tfvars b/driver-msk/deploy/terraform.tfvars new file mode 100644 index 00000000..52f6f97c --- /dev/null +++ b/driver-msk/deploy/terraform.tfvars @@ -0,0 +1,15 @@ +public_key_path = "~/.ssh/id_rsa.pub" +region = "us-east-2" +ami = "ami-03d64741867e7bb94" +profile = "default" +kafka_version = "2.6.2" + +instance_types = { + "client" = "m5.4xlarge" + "broker" = "kafka.m5.4xlarge" +} + +num_instances = { + "client" = 2 + "broker" = 3 +} diff --git a/driver-msk/kafka-0.yaml b/driver-msk/kafka-0.yaml new file mode 100644 index 00000000..7b9082f2 --- /dev/null +++ b/driver-msk/kafka-0.yaml @@ -0,0 +1,40 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: Kafka +driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver + +# Kafka client-specific configuration +replicationFactor: 3 +reset: true + +topicConfig: | + min.insync.replicas=2 + +commonConfig: | + bootstrap.servers=localhost:9092 + +producerConfig: | + acks=0 + linger.ms=1 + batch.size=131072 + +consumerConfig: | + auto.offset.reset=earliest + enable.auto.commit=false diff --git a/driver-msk/kafka-1.yaml b/driver-msk/kafka-1.yaml new file mode 100644 index 00000000..5abf8242 --- /dev/null +++ b/driver-msk/kafka-1.yaml @@ -0,0 +1,40 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: Kafka +driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver + +# Kafka client-specific configuration +replicationFactor: 3 +reset: true + +topicConfig: | + min.insync.replicas=2 + +commonConfig: | + bootstrap.servers=localhost:9092 + +producerConfig: | + acks=1 + linger.ms=1 + batch.size=131072 + +consumerConfig: | + auto.offset.reset=earliest + enable.auto.commit=false diff --git a/driver-msk/kafka-all.yaml b/driver-msk/kafka-all.yaml new file mode 100644 index 00000000..c78f99c0 --- /dev/null +++ b/driver-msk/kafka-all.yaml @@ -0,0 +1,41 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: Kafka +driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver + +# Kafka client-specific configuration +replicationFactor: 3 +reset: true + +topicConfig: | + min.insync.replicas=2 + +commonConfig: | + bootstrap.servers=localhost:9092 + +producerConfig: | + acks=all + linger.ms=100 + batch.size=1048576 + +consumerConfig: | + auto.offset.reset=earliest + enable.auto.commit=false + max.partition.fetch.bytes=10485760 diff --git a/driver-msk/kafka-exactly-once.yaml b/driver-msk/kafka-exactly-once.yaml new file mode 100644 index 00000000..a7407661 --- /dev/null +++ b/driver-msk/kafka-exactly-once.yaml @@ -0,0 +1,43 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: Kafka-exactly-once +driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver + +# Kafka client-specific configuration +replicationFactor: 3 +reset: true + +topicConfig: | + min.insync.replicas=2 + +commonConfig: | + bootstrap.servers=localhost:9092 + +producerConfig: | + enable.idempotence=true + max.in.flight.requests.per.connection=1 + retries=2147483647 + acks=all + linger.ms=1 + batch.size=131072 + +consumerConfig: | + auto.offset.reset=earliest + enable.auto.commit=false diff --git a/driver-msk/kafka-group-all.yaml b/driver-msk/kafka-group-all.yaml new file mode 100644 index 00000000..b8944d36 --- /dev/null +++ b/driver-msk/kafka-group-all.yaml @@ -0,0 +1,42 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: Kafka +driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver + +# Kafka client-specific configuration +replicationFactor: 3 +reset: true + +topicConfig: | + min.insync.replicas=2 + +commonConfig: | + bootstrap.servers=localhost:9092 + request.timeout.ms=120000 +producerConfig: | + acks=all + linger.ms=10 + batch.size=1048576 + +consumerConfig: | + group.id=benchGroup + auto.offset.reset=earliest + enable.auto.commit=false + max.partition.fetch.bytes=1048576 diff --git a/driver-msk/kafka-sync-0.yaml b/driver-msk/kafka-sync-0.yaml new file mode 100644 index 00000000..a4e03180 --- /dev/null +++ b/driver-msk/kafka-sync-0.yaml @@ -0,0 +1,44 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# Kafka driver profile that is configuring to sync all +# published messages to disk to achieve durability +name: Kafka +driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver + +# Kafka client-specific configuration +replicationFactor: 3 +reset: true + +topicConfig: | + min.insync.replicas=2 + flush.messages=1 + flush.ms=0 + +commonConfig: | + bootstrap.servers=localhost:9092 + +producerConfig: | + acks=0 + linger.ms=1 + batch.size=131072 + +consumerConfig: | + auto.offset.reset=earliest + enable.auto.commit=false diff --git a/driver-msk/kafka-sync-1.yaml b/driver-msk/kafka-sync-1.yaml new file mode 100644 index 00000000..3bf6d7d1 --- /dev/null +++ b/driver-msk/kafka-sync-1.yaml @@ -0,0 +1,44 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# Kafka driver profile that is configuring to sync all +# published messages to disk to achieve durability +name: Kafka +driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver + +# Kafka client-specific configuration +replicationFactor: 3 +reset: true + +topicConfig: | + min.insync.replicas=2 + flush.messages=1 + flush.ms=0 + +commonConfig: | + bootstrap.servers=localhost:9092 + +producerConfig: | + acks=1 + linger.ms=1 + batch.size=131072 + +consumerConfig: | + auto.offset.reset=earliest + enable.auto.commit=false diff --git a/driver-msk/kafka-sync-all.yaml b/driver-msk/kafka-sync-all.yaml new file mode 100644 index 00000000..a4fb4955 --- /dev/null +++ b/driver-msk/kafka-sync-all.yaml @@ -0,0 +1,44 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# Kafka driver profile that is configuring to sync all +# published messages to disk to achieve durability +name: Kafka +driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver + +# Kafka client-specific configuration +replicationFactor: 3 +reset: true + +topicConfig: | + min.insync.replicas=2 + flush.messages=1 + flush.ms=0 + +commonConfig: | + bootstrap.servers=localhost:9092 + +producerConfig: | + acks=all + linger.ms=1 + batch.size=131072 + +consumerConfig: | + auto.offset.reset=earliest + enable.auto.commit=false diff --git a/driver-msk/kafka-sync-group-all-1ms.yaml b/driver-msk/kafka-sync-group-all-1ms.yaml new file mode 100644 index 00000000..fcda5030 --- /dev/null +++ b/driver-msk/kafka-sync-group-all-1ms.yaml @@ -0,0 +1,41 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: Kafka +driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver +# Kafka client-specific configuration +replicationFactor: 3 +reset: true + +topicConfig: | + min.insync.replicas=2 + flush.messages=1 + flush.ms=0 +commonConfig: | + bootstrap.servers=localhost:9092 + request.timeout.ms=120000 +producerConfig: | + acks=all + linger.ms=1 + batch.size=131072 +consumerConfig: | + group.id=benchGroup + auto.offset.reset=earliest + enable.auto.commit=false + max.partition.fetch.bytes=131072 diff --git a/driver-msk/kafka-sync-group-all.yaml b/driver-msk/kafka-sync-group-all.yaml new file mode 100644 index 00000000..dbd91136 --- /dev/null +++ b/driver-msk/kafka-sync-group-all.yaml @@ -0,0 +1,42 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: Kafka +driverClass: io.openmessaging.benchmark.driver.kafka.KafkaBenchmarkDriver +# Kafka client-specific configuration +replicationFactor: 3 +reset: true + +# Configuration (flush.messages; flush.ms) enabled only for tests that fsync every message +topicConfig: | + min.insync.replicas=2 + flush.messages=1 + flush.ms=0 +commonConfig: | + bootstrap.servers=localhost:9092 + request.timeout.ms=120000 +producerConfig: | + acks=all + linger.ms=10 + batch.size=1048576 +consumerConfig: | + group.id=benchGroup + auto.offset.reset=earliest + enable.auto.commit=false + max.partition.fetch.bytes=1048576 diff --git a/driver-msk/pom.xml b/driver-msk/pom.xml new file mode 100644 index 00000000..9c044ae8 --- /dev/null +++ b/driver-msk/pom.xml @@ -0,0 +1,70 @@ + + + 4.0.0 + + io.openmessaging.benchmark + messaging-benchmark + 0.0.1-SNAPSHOT + .. + + driver-kafka + + + + + + + Kafka Public Repo + https://repository.apache.org/content/groups/public/ + + + + + + ${project.groupId} + driver-api + ${project.version} + + + + org.apache.kafka + kafka-clients + 2.6.0 + + + + + + + \ No newline at end of file diff --git a/driver-msk/src/main/java/io/openmessaging/benchmark/driver/kafka/Config.java b/driver-msk/src/main/java/io/openmessaging/benchmark/driver/kafka/Config.java new file mode 100644 index 00000000..da59b963 --- /dev/null +++ b/driver-msk/src/main/java/io/openmessaging/benchmark/driver/kafka/Config.java @@ -0,0 +1,33 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package io.openmessaging.benchmark.driver.kafka; + +public class Config { + public short replicationFactor; + + public boolean reset; + + public String topicConfig; + + public String commonConfig; + + public String producerConfig; + + public String consumerConfig; +} diff --git a/driver-msk/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkConsumer.java b/driver-msk/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkConsumer.java new file mode 100644 index 00000000..c5a4f13f --- /dev/null +++ b/driver-msk/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkConsumer.java @@ -0,0 +1,84 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package io.openmessaging.benchmark.driver.kafka; + +import java.time.Duration; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; + +import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.apache.kafka.clients.consumer.KafkaConsumer; +import org.apache.kafka.clients.consumer.OffsetAndMetadata; +import org.apache.kafka.common.TopicPartition; + +import io.openmessaging.benchmark.driver.BenchmarkConsumer; +import io.openmessaging.benchmark.driver.ConsumerCallback; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class KafkaBenchmarkConsumer implements BenchmarkConsumer { + + private static final Logger log = LoggerFactory.getLogger(KafkaBenchmarkConsumer.class); + + private final KafkaConsumer consumer; + + private final ExecutorService executor; + private final Future consumerTask; + private volatile boolean closing = false; + + public KafkaBenchmarkConsumer(KafkaConsumer consumer, ConsumerCallback callback) { + this.consumer = consumer; + this.executor = Executors.newSingleThreadExecutor(); + + this.consumerTask = this.executor.submit(() -> { + while (!closing) { + try { + ConsumerRecords records = consumer.poll(Duration.ofMillis(100)); + Map offsetMap = new HashMap<>(); + for (ConsumerRecord record : records) { + callback.messageReceived(record.value(), TimeUnit.MILLISECONDS.toNanos(record.timestamp())); + offsetMap.put(new TopicPartition(record.topic(), record.partition()), + new OffsetAndMetadata(record.offset())); + } + + if (!records.isEmpty()) { + // Async commit all messages polled so far + consumer.commitAsync(offsetMap, null); + } + } catch (Exception e) { + log.error("exception occur while consuming message", e); + } + } + }); + } + + @Override + public void close() throws Exception { + closing = true; + executor.shutdown(); + consumerTask.get(); + consumer.close(); + } + +} diff --git a/driver-msk/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkDriver.java b/driver-msk/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkDriver.java new file mode 100644 index 00000000..8d708c31 --- /dev/null +++ b/driver-msk/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkDriver.java @@ -0,0 +1,183 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package io.openmessaging.benchmark.driver.kafka; + +import java.io.File; +import java.io.IOException; +import java.io.StringReader; +import java.util.*; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; + +import org.apache.bookkeeper.stats.StatsLogger; +import org.apache.kafka.clients.admin.AdminClient; +import org.apache.kafka.clients.admin.DeleteTopicsResult; +import org.apache.kafka.clients.admin.ListTopicsResult; +import org.apache.kafka.clients.admin.NewTopic; +import org.apache.kafka.clients.consumer.ConsumerConfig; +import org.apache.kafka.clients.consumer.KafkaConsumer; +import org.apache.kafka.clients.producer.KafkaProducer; +import org.apache.kafka.clients.producer.ProducerConfig; +import org.apache.kafka.common.serialization.ByteArrayDeserializer; +import org.apache.kafka.common.serialization.ByteArraySerializer; +import org.apache.kafka.common.serialization.StringDeserializer; +import org.apache.kafka.common.serialization.StringSerializer; + +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; + +import io.openmessaging.benchmark.driver.BenchmarkConsumer; +import io.openmessaging.benchmark.driver.BenchmarkDriver; +import io.openmessaging.benchmark.driver.BenchmarkProducer; +import io.openmessaging.benchmark.driver.ConsumerCallback; + +public class KafkaBenchmarkDriver implements BenchmarkDriver { + + private Config config; + + private List producers = Collections.synchronizedList(new ArrayList<>()); + private List consumers = Collections.synchronizedList(new ArrayList<>()); + + private Properties topicProperties; + private Properties producerProperties; + private Properties consumerProperties; + + private AdminClient admin; + + @Override + public void initialize(File configurationFile, StatsLogger statsLogger) throws IOException { + config = mapper.readValue(configurationFile, Config.class); + + Properties commonProperties = new Properties(); + commonProperties.load(new StringReader(config.commonConfig)); + + producerProperties = new Properties(); + commonProperties.forEach((key, value) -> producerProperties.put(key, value)); + producerProperties.load(new StringReader(config.producerConfig)); + producerProperties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); + producerProperties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, ByteArraySerializer.class.getName()); + + consumerProperties = new Properties(); + commonProperties.forEach((key, value) -> consumerProperties.put(key, value)); + consumerProperties.load(new StringReader(config.consumerConfig)); + consumerProperties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); + consumerProperties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, ByteArrayDeserializer.class.getName()); + + topicProperties = new Properties(); + topicProperties.load(new StringReader(config.topicConfig)); + + admin = AdminClient.create(commonProperties); + + if (config.reset) { + // List existing topics + ListTopicsResult result = admin.listTopics(); + try { + Set topics = result.names().get(); + // Delete all existing topics + DeleteTopicsResult deletes = admin.deleteTopics(topics); + deletes.all().get(); + } catch (InterruptedException | ExecutionException e) { + e.printStackTrace(); + throw new IOException(e); + } + } + } + + @Override + public String getTopicNamePrefix() { + return "test-topic"; + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Override + public CompletableFuture createTopic(String topic, int partitions) { + return CompletableFuture.runAsync(() -> { + try { + NewTopic newTopic = new NewTopic(topic, partitions, config.replicationFactor); + newTopic.configs(new HashMap<>((Map) topicProperties)); + admin.createTopics(Arrays.asList(newTopic)).all().get(); + } catch (InterruptedException | ExecutionException e) { + throw new RuntimeException(e); + } + }); + } + + @Override + public CompletableFuture notifyTopicCreation(String topic, int partitions) { + // No-op + return CompletableFuture.completedFuture(null); + } + + @Override + public CompletableFuture createProducer(String topic) { + KafkaProducer kafkaProducer = new KafkaProducer<>(producerProperties); + BenchmarkProducer benchmarkProducer = new KafkaBenchmarkProducer(kafkaProducer, topic); + try { + // Add to producer list to close later + producers.add(benchmarkProducer); + return CompletableFuture.completedFuture(benchmarkProducer); + } catch (Throwable t) { + kafkaProducer.close(); + CompletableFuture future = new CompletableFuture<>(); + future.completeExceptionally(t); + return future; + } + } + + @Override + public CompletableFuture createConsumer(String topic, String subscriptionName, + Optional partition, ConsumerCallback consumerCallback) { + Properties properties = new Properties(); + consumerProperties.forEach((key, value) -> properties.put(key, value)); + properties.put(ConsumerConfig.GROUP_ID_CONFIG, subscriptionName); + KafkaConsumer kafkaConsumer = new KafkaConsumer<>(properties); + try { + // Subscribe + kafkaConsumer.subscribe(Arrays.asList(topic)); + + // Start polling + BenchmarkConsumer benchmarkConsumer = new KafkaBenchmarkConsumer(kafkaConsumer, consumerCallback); + + // Add to consumer list to close later + consumers.add(benchmarkConsumer); + return CompletableFuture.completedFuture(benchmarkConsumer); + } catch (Throwable t) { + kafkaConsumer.close(); + CompletableFuture future = new CompletableFuture<>(); + future.completeExceptionally(t); + return future; + } + } + + @Override + public void close() throws Exception { + for (BenchmarkProducer producer : producers) { + producer.close(); + } + + for (BenchmarkConsumer consumer : consumers) { + consumer.close(); + } + admin.close(); + } + + private static final ObjectMapper mapper = new ObjectMapper(new YAMLFactory()) + .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); +} diff --git a/driver-msk/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkProducer.java b/driver-msk/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkProducer.java new file mode 100644 index 00000000..dcd487b8 --- /dev/null +++ b/driver-msk/src/main/java/io/openmessaging/benchmark/driver/kafka/KafkaBenchmarkProducer.java @@ -0,0 +1,61 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package io.openmessaging.benchmark.driver.kafka; + +import java.util.Optional; +import java.util.concurrent.CompletableFuture; + +import org.apache.kafka.clients.producer.KafkaProducer; +import org.apache.kafka.clients.producer.ProducerRecord; + +import io.openmessaging.benchmark.driver.BenchmarkProducer; + +public class KafkaBenchmarkProducer implements BenchmarkProducer { + + private final KafkaProducer producer; + private final String topic; + + public KafkaBenchmarkProducer(KafkaProducer producer, String topic) { + this.producer = producer; + this.topic = topic; + } + + @Override + public CompletableFuture sendAsync(Optional key, byte[] payload) { + ProducerRecord record = new ProducerRecord<>(topic, key.orElse(null), payload); + + CompletableFuture future = new CompletableFuture<>(); + + producer.send(record, (metadata, exception) -> { + if (exception != null) { + future.completeExceptionally(exception); + } else { + future.complete(null); + } + }); + + return future; + } + + @Override + public void close() throws Exception { + producer.close(); + } + +} From 9abef5f221aef30b23a75d03ae3da32a4a078933 Mon Sep 17 00:00:00 2001 From: Patrick Angeles Date: Tue, 22 Mar 2022 10:05:24 -0400 Subject: [PATCH 42/47] Fixes for security group --- driver-msk/deploy/deploy.yaml | 209 +++++------------------------ driver-msk/deploy/provision-msk.tf | 61 +++++---- driver-msk/deploy/terraform.tfvars | 4 +- 3 files changed, 72 insertions(+), 202 deletions(-) diff --git a/driver-msk/deploy/deploy.yaml b/driver-msk/deploy/deploy.yaml index 4418b3c3..fd004eec 100644 --- a/driver-msk/deploy/deploy.yaml +++ b/driver-msk/deploy/deploy.yaml @@ -18,7 +18,7 @@ # - name: Collect profiles - hosts: kafka, client + hosts: client become: true tags: - ["never", "profile"] @@ -67,38 +67,18 @@ dest: results/{{ group_names[0] }}/{{ time }}/{{ inventory_hostname }}/heap.svg flat: yes -- name: Format and mount disks for Kafka hosts - hosts: kafka - connection: ssh - become: true - tasks: - - command: > - tuned-adm profile latency-performance - - name: Format disks - filesystem: - fstype: xfs - dev: "{{ item }}" - with_items: - - "/dev/nvme1n1" - - "/dev/nvme2n1" - - name: Mount disks - mount: - path: "{{ item.path }}" - src: "{{ item.src }}" - fstype: xfs - opts: defaults,noatime,nodiscard - state: mounted - with_items: - - { path: "/mnt/data-1", src: "/dev/nvme1n1" } - - { path: "/mnt/data-2", src: "/dev/nvme2n1" } - - name: Store server lists hosts: all connection: ssh tasks: - set_fact: - zookeeperServers: "{{ groups['zookeeper'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^(.*)$', '\\1:2181') | join(',') }}" - boostrapServers: "{{ groups['kafka'] | map('extract', hostvars, ['private_ip']) | map('regex_replace', '^(.*)$', '\\1:9092') | join(',') }}" +# zookeeperServers: "{{ groups['zookeeper'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^(.*)$', '\\1:2181') | join(',') }}" +# boostrapServers: "{{ groups['kafka'] | map('extract', hostvars, ['private_ip']) | map('regex_replace', '^(.*)$', '\\1:9092') | join(',') }}" +# zookeeperServers: "{{ map('extract', hostvars, ['zookeeperServers']) }}" +# boostrapServers: "{{ map('extract', hostvars, ['boostrapServers']) }}" + #boostrapServers: "{{ groups['all'] | map('extract', hostvars, ['vars']) }}" + zookeeperServers: "{{ groups['all'] | map('extract', hostvars, ['zookeeperServers']) }}" + boostrapServers: "{{ groups['all'] | map('extract', hostvars, ['boostrapServers']) }}" - name: Setup common packages hosts: all @@ -121,123 +101,6 @@ - gcc - make -- name: Kafka installation - hosts: kafka, zookeeper - connection: ssh - become: true - tasks: - - file: path=/opt/kafka state=absent - - file: path=/opt/kafka state=directory - - set_fact: - zookeeperServers: "{{ groups['zookeeper'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^(.*)$', '\\1:2181') | join(',') }}" - boostrapServers: "{{ groups['kafka'] | map('extract', hostvars, ['private_ip']) | map('regex_replace', '^(.*)$', '\\1:9092') | join(',') }}" - kafkaVersion: "2.7.0" - - debug: - msg: "zookeeper servers: {{ zookeeperServers }}\nboostrap servers: {{ boostrapServers }}" - - #################### Release #################### - - name: Download Kafka package - unarchive: - src: http://mirrors.ocf.berkeley.edu/apache/kafka/{{ kafkaVersion }}/kafka_2.13-{{ kafkaVersion }}.tgz - remote_src: yes - dest: /opt/kafka - extra_opts: ["--strip-components=1"] - - #################### Staging #################### - # # https://access.redhat.com/articles/5117881 - # - name: Fix Sectigo Root CA expiration issue - # shell: | - # trust dump --filter "pkcs11:id=%ad%bd%98%7a%34%b4%26%f7%fa%c4%26%54%ef%03%bd%e0%24%cb%54%1a;type=cert" > /etc/pki/ca-trust/source/blacklist/addtrust-external-root.p11-kit - # update-ca-trust - # - name: Download Kafka package - # unarchive: - # src: https://home.apache.org/~rhauch/kafka-2.6.0-rc2/kafka_2.13-2.6.0.tgz - # remote_src: yes - # dest: /opt/kafka - # extra_opts: ["--strip-components=1"] - - #################### Custom build #################### - # - name: Copy Kafka - # unarchive: - # src: /Users/anikhil/offsets_patch/core/build/distributions/kafka_2.13-2.7.0-SNAPSHOT.tgz - # dest: /opt/kafka - # extra_opts: ["--strip-components=1"] - - - set_fact: - privateIp: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" - - name: Change locale to en_US.utf-8 - shell: | - echo 'LANG=en_US.utf-8 - LC_ALL=en_US.utf-8' > /etc/environment - - name: Setup JMX for Prometheus - copy: - src: "monitoring/jmx_exporter/jmx_prometheus_javaagent-0.13.0.jar" - dest: "/opt/kafka/jmx_prometheus_javaagent-0.13.0.jar" - - name: Configure JMX for Prometheus (Kafka) - template: - src: "monitoring/jmx_exporter/metrics.yml" - dest: "/opt/kafka/metrics.yml" - - name: Configure JMX for Prometheus (Zookeeper) - template: - src: "monitoring/jmx_exporter/zookeeper.yml" - dest: "/opt/kafka/zookeeper.yml" - -- name: Setup ZooKeeper - hosts: zookeeper - connection: ssh - become: true - tasks: - - set_fact: - zid: "{{ groups['zookeeper'].index(inventory_hostname) }}" - - file: - path: "/opt/kafka/data/zookeeper" - state: directory - - template: - src: "templates/zookeeper.properties" - dest: "/opt/kafka/config/zookeeper.properties" - - template: - src: templates/myid - dest: "/opt/kafka/data/zookeeper/myid" - - template: - src: "templates/zookeeper.service" - dest: "/etc/systemd/system/zookeeper.service" - - systemd: - state: restarted - daemon_reload: yes - name: "zookeeper" - -- name: Setup Kafka - hosts: kafka - connection: ssh - become: true - tags: - - configure - tasks: - - set_fact: - brokerId: "{{ groups['kafka'].index(inventory_hostname) }}" - privateIp: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" - zookeeperServers: "{{ groups['zookeeper'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^(.*)$', '\\1:2181') | join(',') }}" - - name: Set up broker - template: - src: "templates/server.properties" - dest: "/opt/kafka/config/server.properties" - - template: - src: "templates/kafka.service" - dest: "/etc/systemd/system/kafka.service" - - systemd: - state: restarted - daemon_reload: yes - name: "kafka" - - git: - repo: "https://github.com/sysstat/sysstat" - dest: "/opt/sysstat" - - name: Compile and install sysstat from source - shell: | - cd /opt/sysstat - ./configure - make -j`nproc` - sudo make install - - name: Chrony setup hosts: client connection: ssh @@ -312,40 +175,40 @@ hosts: localhost become: false tasks: - - debug: - msg: "Zookeeper servers {{ item }}" - with_items: "{{ groups['zookeeper'] }}" - - debug: - msg: "Kafka brokers {{ item }}" - with_items: "{{ groups['kafka'] }}" +# - debug: +# msg: "Zookeeper servers {{ item }}" +# with_items: "{{ groups['zookeeper'] }}" +# - debug: +# msg: "Kafka brokers {{ item }}" +# with_items: "{{ groups['kafka'] }}" - debug: msg: "Benchmark clients {{ item }}" with_items: "{{ groups['client'] }}" # Install the monitoring stack -- name: Install Node Exporter - hosts: kafka, client - roles: - - cloudalchemy.node-exporter +#- name: Install Node Exporter +# hosts: client +# roles: +# - cloudalchemy.node-exporter -- hosts: prometheus - roles: - - cloudalchemy.prometheus - vars: - prometheus_scrape_configs: - - job_name: "broker" - static_configs: - - targets: "{{ groups['kafka'] | map('extract', hostvars, ['ansible_default_ipv4','address']) | map('regex_replace', '^(.*)$','\\1:8080') | list }}" - - job_name: "node" - static_configs: - - targets: "{{ groups['kafka'] | map('extract', hostvars, ['ansible_default_ipv4','address']) | map('regex_replace', '^(.*)$','\\1:9100') | list }}" - - targets: "{{ groups['client'] | map('extract', hostvars, ['ansible_default_ipv4','address']) | map('regex_replace', '^(.*)$','\\1:9100') | list }}" - - job_name: "client - jmx" - static_configs: - - targets: "{{ groups['client'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^(.*)$', '\\1:9090') | list }}" - - job_name: "client" - static_configs: - - targets: "{{ groups['client'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^(.*)$', '\\1:8081') | list }}" +#- hosts: prometheus +# roles: +# - cloudalchemy.prometheus +# vars: +# prometheus_scrape_configs: +# - job_name: "broker" +# static_configs: +# - targets: "{{ groups['kafka'] | map('extract', hostvars, ['ansible_default_ipv4','address']) | map('regex_replace', '^(.*)$','\\1:8080') | list }}" +# - job_name: "node" +# static_configs: +# - targets: "{{ groups['kafka'] | map('extract', hostvars, ['ansible_default_ipv4','address']) | map('regex_replace', '^(.*)$','\\1:9100') | list }}" +# - targets: "{{ groups['client'] | map('extract', hostvars, ['ansible_default_ipv4','address']) | map('regex_replace', '^(.*)$','\\1:9100') | list }}" +# - job_name: "client - jmx" +# static_configs: +# - targets: "{{ groups['client'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^(.*)$', '\\1:9090') | list }}" +# - job_name: "client" +# static_configs: +# - targets: "{{ groups['client'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^(.*)$', '\\1:8081') | list }}" #- name: jmx export setup # hosts: prometheus diff --git a/driver-msk/deploy/provision-msk.tf b/driver-msk/deploy/provision-msk.tf index 79f83a9e..4cb66ef2 100644 --- a/driver-msk/deploy/provision-msk.tf +++ b/driver-msk/deploy/provision-msk.tf @@ -162,14 +162,6 @@ resource "aws_security_group" "sg-client" { } } -resource "aws_kms_key" "kms" { - description = "example" -} - -resource "aws_cloudwatch_log_group" "test" { - name = "msk_broker_logs" -} - resource "aws_msk_cluster" "bench" { cluster_name = "bench" kafka_version = var.kafka_version @@ -188,7 +180,10 @@ resource "aws_msk_cluster" "bench" { } encryption_info { - encryption_at_rest_kms_key_arn = aws_kms_key.kms.arn + encryption_in_transit { + client_broker = "PLAINTEXT" + in_cluster = false + } } open_monitoring { @@ -207,16 +202,6 @@ resource "aws_msk_cluster" "bench" { } } -output "zookeeper_connect_string" { - value = aws_msk_cluster.bench.zookeeper_connect_string -} - -output "bootstrap_brokers_tls" { - description = "TLS connection host:port pairs" - value = aws_msk_cluster.bench.bootstrap_brokers_tls -} - - ### # Get public IP of this machine data "http" "myip" { @@ -229,15 +214,14 @@ resource "aws_key_pair" "auth" { } resource "aws_instance" "client" { - ami = "${var.ami}" - instance_type = "${var.instance_types["client"]}" - key_name = "${aws_key_pair.auth.id}" -# subnet_id = aws_subnet.subnet_clients.id - subnet_id = aws_subnet.subnet_az1.id + ami = "${var.ami}" + instance_type = "${var.instance_types["client"]}" + key_name = "${aws_key_pair.auth.id}" + subnet_id = aws_subnet.subnet_az1.id associate_public_ip_address = true - vpc_security_group_ids = [aws_security_group.sg-client.id] - count = "${var.num_instances["client"]}" - monitoring = true + vpc_security_group_ids = [aws_security_group.sg-client.id] + count = "${var.num_instances["client"]}" + monitoring = true tags = { Name = "kafka-client-${count.index}" @@ -255,6 +239,29 @@ output "clients" { } } +output "zookeeperServers" { + value = aws_msk_cluster.bench.zookeeper_connect_string +} + +output "boostrapServers" { + value = aws_msk_cluster.bench.bootstrap_brokers +} + +output "zookeeper" { + value = { + for instance in "${split (",", aws_msk_cluster.bench.zookeeper_connect_string)}" : + "${element (split (":",instance),0)}" => "${element (split (":",instance),0)}" + } +} + +output "brokers" { + value = { + for instance in "${split (",", aws_msk_cluster.bench.bootstrap_brokers)}" : + "${element (split (":",instance),0)}" => "${element (split (":",instance),0)}" + } +} + + #output "client_ssh_host" { # value = "${aws_instance.client.0.public_ip}" #} diff --git a/driver-msk/deploy/terraform.tfvars b/driver-msk/deploy/terraform.tfvars index 52f6f97c..acae1045 100644 --- a/driver-msk/deploy/terraform.tfvars +++ b/driver-msk/deploy/terraform.tfvars @@ -6,10 +6,10 @@ kafka_version = "2.6.2" instance_types = { "client" = "m5.4xlarge" - "broker" = "kafka.m5.4xlarge" + "broker" = "kafka.m5.2xlarge" } num_instances = { "client" = 2 - "broker" = 3 + "broker" = 9 } From d43fe5534fc689c7c2564d2255a86456591d2552 Mon Sep 17 00:00:00 2001 From: Patrick Angeles Date: Wed, 23 Mar 2022 13:14:39 -0400 Subject: [PATCH 43/47] fixed vpc cidr --- driver-msk/deploy/provision-msk.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/driver-msk/deploy/provision-msk.tf b/driver-msk/deploy/provision-msk.tf index 4cb66ef2..69b42557 100644 --- a/driver-msk/deploy/provision-msk.tf +++ b/driver-msk/deploy/provision-msk.tf @@ -94,7 +94,7 @@ resource "aws_security_group" "sg" { from_port = 0 to_port = 65535 protocol = "tcp" - cidr_blocks = ["10.0.0.0/16"] + cidr_blocks = ["192.168.0.0/22"] } # outbound internet access @@ -130,7 +130,7 @@ resource "aws_security_group" "sg-client" { from_port = 0 to_port = 65535 protocol = "tcp" - cidr_blocks = ["10.0.0.0/16"] + cidr_blocks = ["192.168.0.0/22"] } # All ports open to this machine From 005110cdeee6aa9e1fc8978047671041615b8798 Mon Sep 17 00:00:00 2001 From: tmgstevens Date: Fri, 20 May 2022 11:25:22 +0000 Subject: [PATCH 44/47] Change default instance sizes and region --- driver-redpanda/deploy/deploy.yaml | 2 +- driver-redpanda/deploy/provision-redpanda-aws.tf | 2 +- driver-redpanda/deploy/terraform.tfvars | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/driver-redpanda/deploy/deploy.yaml b/driver-redpanda/deploy/deploy.yaml index 03e3be02..93049c6c 100644 --- a/driver-redpanda/deploy/deploy.yaml +++ b/driver-redpanda/deploy/deploy.yaml @@ -247,7 +247,7 @@ lineinfile: dest: /opt/benchmark/bin/benchmark-worker regexp: "^JVM_MEM=" - line: 'JVM_MEM="-Xms16G -Xmx16G -XX:+UseG1GC -XX:MaxGCPauseMillis=10 -XX:+ParallelRefProcEnabled -XX:+UnlockExperimentalVMOptions -XX:+AggressiveOpts -XX:+DoEscapeAnalysis -XX:ParallelGCThreads=32 -XX:ConcGCThreads=32 -XX:G1NewSizePercent=50 -XX:+DisableExplicitGC -XX:-ResizePLAB -XX:+PerfDisableSharedMem -XX:+AlwaysPreTouch -XX:-UseBiasedLocking"' + line: 'JVM_MEM="-Xms2G -Xmx4G -XX:+UseG1GC -XX:MaxGCPauseMillis=10 -XX:+ParallelRefProcEnabled -XX:+UnlockExperimentalVMOptions -XX:+AggressiveOpts -XX:+DoEscapeAnalysis -XX:ParallelGCThreads=32 -XX:ConcGCThreads=32 -XX:G1NewSizePercent=50 -XX:+DisableExplicitGC -XX:-ResizePLAB -XX:+PerfDisableSharedMem -XX:+AlwaysPreTouch -XX:-UseBiasedLocking"' - name: Configure memory lineinfile: dest: /opt/benchmark/bin/benchmark diff --git a/driver-redpanda/deploy/provision-redpanda-aws.tf b/driver-redpanda/deploy/provision-redpanda-aws.tf index 9d343e59..a39ad83e 100644 --- a/driver-redpanda/deploy/provision-redpanda-aws.tf +++ b/driver-redpanda/deploy/provision-redpanda-aws.tf @@ -67,7 +67,7 @@ resource "aws_subnet" "benchmark_subnet" { vpc_id = aws_vpc.benchmark_vpc.id cidr_block = "10.0.0.0/24" map_public_ip_on_launch = true - availability_zone = "us-west-2b" + availability_zone = "us-west-2a" } # Get public IP of this machine diff --git a/driver-redpanda/deploy/terraform.tfvars b/driver-redpanda/deploy/terraform.tfvars index 4a655cbe..7f2ca8d1 100644 --- a/driver-redpanda/deploy/terraform.tfvars +++ b/driver-redpanda/deploy/terraform.tfvars @@ -1,11 +1,12 @@ public_key_path = "~/.ssh/redpanda_aws.pub" region = "us-west-2" +az = "us-west-2a" ami = "ami-0928f4202481dfdf6" profile = "default" instance_types = { "redpanda" = "i3en.6xlarge" - "client" = "m5n.8xlarge" + "client" = "m5n.4xlarge" "prometheus" = "c5.2xlarge" } From b485915bba8fba432fe0aa7bb504d5a8461e3814 Mon Sep 17 00:00:00 2001 From: Tristan Stevens Date: Fri, 27 May 2022 17:14:54 +0100 Subject: [PATCH 45/47] Changes to support coordinated omission (#10) * Cherry-pick 64eff253ddb5be19a8333a7cc894c5ca37a0cefe Fixes #247 Fix Coordinated Omission (#248) * Update README.md Correct the terraform output command to remove quotes * Updated RedPanda docker org * Add error messages for preconditions * Change default instance sizes and region --- .../openmessaging/benchmark/TestResult.java | 41 +++++++++- .../benchmark/WorkloadGenerator.java | 62 ++++++++++++--- .../benchmark/utils/UniformRateLimiter.java | 79 +++++++++++++++++++ .../worker/DistributedWorkersEnsemble.java | 20 ++++- .../benchmark/worker/LocalWorker.java | 41 +++++++--- .../benchmark/worker/WorkerHandler.java | 12 +++ .../worker/commands/CumulativeLatencies.java | 4 + .../worker/commands/PeriodStats.java | 5 ++ bin/create_charts.py | 22 +++++- docker/pom.xml | 2 +- driver-redpanda/README.md | 2 +- 11 files changed, 258 insertions(+), 32 deletions(-) create mode 100644 benchmark-framework/src/main/java/io/openmessaging/benchmark/utils/UniformRateLimiter.java diff --git a/benchmark-framework/src/main/java/io/openmessaging/benchmark/TestResult.java b/benchmark-framework/src/main/java/io/openmessaging/benchmark/TestResult.java index ac2dbdb0..e2d7491f 100644 --- a/benchmark-framework/src/main/java/io/openmessaging/benchmark/TestResult.java +++ b/benchmark-framework/src/main/java/io/openmessaging/benchmark/TestResult.java @@ -26,6 +26,11 @@ public class TestResult { public String workload; public String driver; + public long messageSize; + public int topics; + public int partitions; + public int producersPerTopic; + public int consumersPerTopic; public List publishRate = new ArrayList<>(); public List consumeRate = new ArrayList<>(); @@ -40,6 +45,15 @@ public class TestResult { public List publishLatency9999pct = new ArrayList<>(); public List publishLatencyMax = new ArrayList<>(); + public List publishDelayLatencyAvg = new ArrayList<>(); + public List publishDelayLatency50pct = new ArrayList<>(); + public List publishDelayLatency75pct = new ArrayList<>(); + public List publishDelayLatency95pct = new ArrayList<>(); + public List publishDelayLatency99pct = new ArrayList<>(); + public List publishDelayLatency999pct = new ArrayList<>(); + public List publishDelayLatency9999pct = new ArrayList<>(); + public List publishDelayLatencyMax = new ArrayList<>(); + public double aggregatedPublishLatencyAvg; public double aggregatedPublishLatency50pct; public double aggregatedPublishLatency75pct; @@ -49,10 +63,21 @@ public class TestResult { public double aggregatedPublishLatency9999pct; public double aggregatedPublishLatencyMax; + public double aggregatedPublishDelayLatencyAvg; + public long aggregatedPublishDelayLatency50pct; + public long aggregatedPublishDelayLatency75pct; + public long aggregatedPublishDelayLatency95pct; + public long aggregatedPublishDelayLatency99pct; + public long aggregatedPublishDelayLatency999pct; + public long aggregatedPublishDelayLatency9999pct; + public long aggregatedPublishDelayLatencyMax; + public Map aggregatedPublishLatencyQuantiles = new TreeMap<>(); + public Map aggregatedPublishDelayLatencyQuantiles = new TreeMap<>(); + // End to end latencies (from producer to consumer) - // Latencies are expressed in milliseconds + // Latencies are expressed in milliseconds (without decimals) public List endToEndLatencyAvg = new ArrayList<>(); public List endToEndLatency50pct = new ArrayList<>(); @@ -73,4 +98,16 @@ public class TestResult { public double aggregatedEndToEndLatency999pct; public double aggregatedEndToEndLatency9999pct; public double aggregatedEndToEndLatencyMax; -} + + public int getTopics() { + return topics; + } + + public int getPartitions() { + return partitions; + } + + public long getMessageSize() { + return messageSize; + } +} \ No newline at end of file diff --git a/benchmark-framework/src/main/java/io/openmessaging/benchmark/WorkloadGenerator.java b/benchmark-framework/src/main/java/io/openmessaging/benchmark/WorkloadGenerator.java index 1fa2ac31..45abd05a 100644 --- a/benchmark-framework/src/main/java/io/openmessaging/benchmark/WorkloadGenerator.java +++ b/benchmark-framework/src/main/java/io/openmessaging/benchmark/WorkloadGenerator.java @@ -125,7 +125,7 @@ public TestResult run() throws Exception { } worker.resetStats(); - log.info("----- Starting benchmark traffic ------"); + log.info("----- Starting benchmark traffic ({}m)------", workload.testDurationMinutes); TestResult result = printAndCollectStats(workload.testDurationMinutes, TimeUnit.MINUTES); runCompleted = true; @@ -383,6 +383,11 @@ private TestResult printAndCollectStats(long testDurations, TimeUnit unit) throw TestResult result = new TestResult(); result.workload = workload.name; result.driver = driverName; + result.topics = workload.topics; + result.partitions = workload.partitionsPerTopic; + result.messageSize = workload.messageSize; + result.producersPerTopic = workload.producersPerTopic; + result.consumersPerTopic = workload.consumerPerSubscription; while (true) { try { @@ -406,7 +411,7 @@ private TestResult printAndCollectStats(long testDurations, TimeUnit unit) throw - stats.totalMessagesReceived; log.info( - "Pub rate {} msg/s / {} Mb/s | Cons rate {} msg/s / {} Mb/s | Backlog: {} K | Pub Latency (ms) avg: {} - 50%: {} - 99%: {} - 99.9%: {} - Max: {}", + "Pub rate {} msg/s / {} MB/s | Cons rate {} msg/s / {} MB/s | Backlog: {} K | Pub Latency (ms) avg: {} - 50%: {} - 99%: {} - 99.9%: {} - Max: {} | Pub Delay Latency (us) avg: {} - 50%: {} - 99%: {} - 99.9%: {} - Max: {}", rateFormat.format(publishRate), throughputFormat.format(publishThroughput), rateFormat.format(consumeRate), throughputFormat.format(consumeThroughput), dec.format(currentBacklog / 1000.0), // @@ -414,7 +419,12 @@ private TestResult printAndCollectStats(long testDurations, TimeUnit unit) throw dec.format(microsToMillis(stats.publishLatency.getValueAtPercentile(50))), dec.format(microsToMillis(stats.publishLatency.getValueAtPercentile(99))), dec.format(microsToMillis(stats.publishLatency.getValueAtPercentile(99.9))), - throughputFormat.format(microsToMillis(stats.publishLatency.getMaxValue()))); + throughputFormat.format(microsToMillis(stats.publishLatency.getMaxValue())), + dec.format(stats.publishDelayLatency.getMean()), + dec.format(stats.publishDelayLatency.getValueAtPercentile(50)), + dec.format(stats.publishDelayLatency.getValueAtPercentile(99)), + dec.format(stats.publishDelayLatency.getValueAtPercentile(99.9)), + throughputFormat.format(stats.publishDelayLatency.getMaxValue())); log.info("E2E Latency (ms) avg: {} - 50%: {} - 99%: {} - 99.9%: {} - Max: {}", dec.format(microsToMillis(stats.endToEndLatency.getMean())), @@ -435,6 +445,16 @@ private TestResult printAndCollectStats(long testDurations, TimeUnit unit) throw result.publishLatency9999pct.add(microsToMillis(stats.publishLatency.getValueAtPercentile(99.99))); result.publishLatencyMax.add(microsToMillis(stats.publishLatency.getMaxValue())); + result.publishDelayLatencyAvg.add(stats.publishDelayLatency.getMean()); + result.publishDelayLatency50pct.add(stats.publishDelayLatency.getValueAtPercentile(50)); + result.publishDelayLatency75pct.add(stats.publishDelayLatency.getValueAtPercentile(75)); + result.publishDelayLatency95pct.add(stats.publishDelayLatency.getValueAtPercentile(95)); + result.publishDelayLatency99pct.add(stats.publishDelayLatency.getValueAtPercentile(99)); + result.publishDelayLatency999pct.add(stats.publishDelayLatency.getValueAtPercentile(99.9)); + result.publishDelayLatency9999pct.add(stats.publishDelayLatency.getValueAtPercentile(99.99)); + result.publishDelayLatencyMax.add(stats.publishDelayLatency.getMaxValue()); + + result.endToEndLatencyAvg.add(microsToMillis(stats.endToEndLatency.getMean())); result.endToEndLatency50pct.add(microsToMillis(stats.endToEndLatency.getValueAtPercentile(50))); result.endToEndLatency75pct.add(microsToMillis(stats.endToEndLatency.getValueAtPercentile(75))); @@ -464,14 +484,21 @@ private TestResult printAndCollectStats(long testDurations, TimeUnit unit) throw } log.info( - "----- Aggregated Pub Latency (ms) avg: {} - 50%: {} - 95%: {} - 99%: {} - 99.9%: {} - 99.99%: {} - Max: {}", - dec.format(microsToMillis(agg.publishLatency.getMean())), - dec.format(microsToMillis(agg.publishLatency.getValueAtPercentile(50))), - dec.format(microsToMillis(agg.publishLatency.getValueAtPercentile(95))), - dec.format(microsToMillis(agg.publishLatency.getValueAtPercentile(99))), - dec.format(microsToMillis(agg.publishLatency.getValueAtPercentile(99.9))), - dec.format(microsToMillis(agg.publishLatency.getValueAtPercentile(99.99))), - throughputFormat.format(microsToMillis(agg.publishLatency.getMaxValue()))); + "----- Aggregated Pub Latency (ms) avg: {} - 50%: {} - 95%: {} - 99%: {} - 99.9%: {} - 99.99%: {} - Max: {} | Pub Delay (us) avg: {} - 50%: {} - 95%: {} - 99%: {} - 99.9%: {} - 99.99%: {} - Max: {}", + dec.format(agg.publishLatency.getMean() / 1000.0), + dec.format(agg.publishLatency.getValueAtPercentile(50) / 1000.0), + dec.format(agg.publishLatency.getValueAtPercentile(95) / 1000.0), + dec.format(agg.publishLatency.getValueAtPercentile(99) / 1000.0), + dec.format(agg.publishLatency.getValueAtPercentile(99.9) / 1000.0), + dec.format(agg.publishLatency.getValueAtPercentile(99.99) / 1000.0), + throughputFormat.format(agg.publishLatency.getMaxValue() / 1000.0), + dec.format(agg.publishDelayLatency.getMean()), + dec.format(agg.publishDelayLatency.getValueAtPercentile(50)), + dec.format(agg.publishDelayLatency.getValueAtPercentile(95)), + dec.format(agg.publishDelayLatency.getValueAtPercentile(99)), + dec.format(agg.publishDelayLatency.getValueAtPercentile(99.9)), + dec.format(agg.publishDelayLatency.getValueAtPercentile(99.99)), + throughputFormat.format(agg.publishDelayLatency.getMaxValue())); result.aggregatedPublishLatencyAvg = microsToMillis(agg.publishLatency.getMean()); result.aggregatedPublishLatency50pct = microsToMillis(agg.publishLatency.getValueAtPercentile(50)); @@ -491,12 +518,25 @@ private TestResult printAndCollectStats(long testDurations, TimeUnit unit) throw result.aggregatedEndToEndLatency9999pct = microsToMillis( agg.endToEndLatency.getValueAtPercentile(99.99)); result.aggregatedEndToEndLatencyMax = microsToMillis(agg.endToEndLatency.getMaxValue()); + result.aggregatedPublishDelayLatencyAvg = agg.publishDelayLatency.getMean(); + result.aggregatedPublishDelayLatency50pct = agg.publishDelayLatency.getValueAtPercentile(50); + result.aggregatedPublishDelayLatency75pct = agg.publishDelayLatency.getValueAtPercentile(75); + result.aggregatedPublishDelayLatency95pct = agg.publishDelayLatency.getValueAtPercentile(95); + result.aggregatedPublishDelayLatency99pct = agg.publishDelayLatency.getValueAtPercentile(99); + result.aggregatedPublishDelayLatency999pct = agg.publishDelayLatency.getValueAtPercentile(99.9); + result.aggregatedPublishDelayLatency9999pct = agg.publishDelayLatency.getValueAtPercentile(99.99); + result.aggregatedPublishDelayLatencyMax = agg.publishDelayLatency.getMaxValue(); agg.publishLatency.percentiles(100).forEach(value -> { result.aggregatedPublishLatencyQuantiles.put(value.getPercentile(), microsToMillis(value.getValueIteratedTo())); }); + agg.publishDelayLatency.percentiles(100).forEach(value -> { + result.aggregatedPublishDelayLatencyQuantiles.put(value.getPercentile(), + value.getValueIteratedTo()); + }); + agg.endToEndLatency.percentiles(100).forEach(value -> { result.aggregatedEndToEndLatencyQuantiles.put(value.getPercentile(), microsToMillis(value.getValueIteratedTo())); diff --git a/benchmark-framework/src/main/java/io/openmessaging/benchmark/utils/UniformRateLimiter.java b/benchmark-framework/src/main/java/io/openmessaging/benchmark/utils/UniformRateLimiter.java new file mode 100644 index 00000000..2c31cb1c --- /dev/null +++ b/benchmark-framework/src/main/java/io/openmessaging/benchmark/utils/UniformRateLimiter.java @@ -0,0 +1,79 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package io.openmessaging.benchmark.utils; + +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicLongFieldUpdater; +import java.util.concurrent.locks.LockSupport; + +/** + * Provides a next operation time for rate limited operation streams.
+ * The rate limiter is thread safe and can be shared by all threads. + */ +public final class UniformRateLimiter { + + private static final AtomicLongFieldUpdater V_TIME_UPDATER = + AtomicLongFieldUpdater.newUpdater(UniformRateLimiter.class, "virtualTime"); + private static final AtomicLongFieldUpdater START_UPDATER = + AtomicLongFieldUpdater.newUpdater(UniformRateLimiter.class, "start"); + private static final double ONE_SEC_IN_NS = TimeUnit.SECONDS.toNanos(1); + private volatile long start = Long.MIN_VALUE; + private volatile long virtualTime; + private final double opsPerSec; + private final long intervalNs; + + public UniformRateLimiter(final double opsPerSec) { + if (Double.isNaN(opsPerSec) || Double.isInfinite(opsPerSec)) { + throw new IllegalArgumentException("opsPerSec cannot be Nan or Infinite"); + } + if (opsPerSec <= 0) { + throw new IllegalArgumentException("opsPerSec must be greater then 0"); + } + this.opsPerSec = opsPerSec; + intervalNs = Math.round(ONE_SEC_IN_NS / opsPerSec); + } + + public double getOpsPerSec() { + return opsPerSec; + } + + public long getIntervalNs() { + return intervalNs; + } + + public long acquire() { + final long currOpIndex = V_TIME_UPDATER.getAndIncrement(this); + long start = this.start; + if (start == Long.MIN_VALUE) { + start = System.nanoTime(); + if (!START_UPDATER.compareAndSet(this, Long.MIN_VALUE, start)) { + start = this.start; + assert start != Long.MIN_VALUE; + } + } + return start + currOpIndex * intervalNs; + } + + public static void uninterruptibleSleepNs(final long intendedTime) { + long sleepNs; + while ((sleepNs = (intendedTime - System.nanoTime())) > 0) { + LockSupport.parkNanos(sleepNs); + } + } +} diff --git a/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/DistributedWorkersEnsemble.java b/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/DistributedWorkersEnsemble.java index d4ad4774..a2c4958e 100644 --- a/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/DistributedWorkersEnsemble.java +++ b/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/DistributedWorkersEnsemble.java @@ -73,7 +73,7 @@ public class DistributedWorkersEnsemble implements Worker { private int numberOfUsedProducerWorkers; public DistributedWorkersEnsemble(List workers) { - Preconditions.checkArgument(workers.size() > 1); + Preconditions.checkArgument(workers.size() > 1, "Workers must be > 1"); this.workers = workers; List> partitions = Lists.partition(workers, workers.size() / 2); @@ -233,6 +233,9 @@ public PeriodStats getPeriodStats() { stats.publishLatency.add(Histogram.decodeFromCompressedByteBuffer( ByteBuffer.wrap(is.publishLatencyBytes), TimeUnit.SECONDS.toMicros(30))); + stats.publishDelayLatency.add(Histogram.decodeFromCompressedByteBuffer( + ByteBuffer.wrap(is.publishDelayLatencyBytes), TimeUnit.SECONDS.toMicros(30))); + stats.endToEndLatency.add(Histogram.decodeFromCompressedByteBuffer( ByteBuffer.wrap(is.endToEndLatencyBytes), TimeUnit.HOURS.toMicros(12))); } catch (ArrayIndexOutOfBoundsException | DataFormatException e) { @@ -257,6 +260,15 @@ public CumulativeLatencies getCumulativeLatencies() { throw new RuntimeException(e); } + try { + stats.publishDelayLatency.add(Histogram.decodeFromCompressedByteBuffer( + ByteBuffer.wrap(is.publishDelayLatencyBytes), TimeUnit.SECONDS.toMicros(30))); + } catch (Exception e) { + log.error("Failed to decode publish delay latency: {}", + ByteBufUtil.prettyHexDump(Unpooled.wrappedBuffer(is.publishDelayLatencyBytes))); + throw new RuntimeException(e); + } + try { stats.endToEndLatency.add(Histogram.decodeFromCompressedByteBuffer( ByteBuffer.wrap(is.endToEndLatencyBytes), TimeUnit.HOURS.toMicros(12))); @@ -302,7 +314,7 @@ private CompletableFuture sendPost(String host, String path, byte[] body) log.error("Failed to do HTTP post request to {}{} -- code: {} error: {}", host, path, x.getStatusCode(), x.getResponseBody()); } - Preconditions.checkArgument(x.getStatusCode() == 200); + Preconditions.checkArgument(x.getStatusCode() == 200, "Status should be 200"); return (Void) null; }); } @@ -328,7 +340,7 @@ private CompletableFuture get(String host, String path, Class clazz) { log.error("Failed to do HTTP get request to {}{} -- code: {}", host, path, response.getStatusCode()); } - Preconditions.checkArgument(response.getStatusCode() == 200); + Preconditions.checkArgument(response.getStatusCode() == 200, "Status should be 200"); return mapper.readValue(response.getResponseBody(), clazz); } catch (IOException e) { throw new RuntimeException(e); @@ -343,7 +355,7 @@ private CompletableFuture post(String host, String path, byte[] body, Typ log.error("Failed to do HTTP post request to {}{} -- code: {}", host, path, response.getStatusCode()); } - Preconditions.checkArgument(response.getStatusCode() == 200); + Preconditions.checkArgument(response.getStatusCode() == 200, "Status should be 200"); return mapper.readValue(response.getResponseBody(), type); } catch (IOException e) { throw new RuntimeException(e); diff --git a/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/LocalWorker.java b/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/LocalWorker.java index 3cbb105e..b2d0afe4 100644 --- a/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/LocalWorker.java +++ b/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/LocalWorker.java @@ -18,6 +18,7 @@ */ package io.openmessaging.benchmark.worker; +import static io.openmessaging.benchmark.utils.UniformRateLimiter.*; import static java.util.stream.Collectors.toList; import java.io.File; @@ -32,6 +33,7 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.LongAdder; @@ -42,6 +44,7 @@ import com.google.common.base.Preconditions; import io.openmessaging.benchmark.utils.RateLimiter; +import io.openmessaging.benchmark.utils.UniformRateLimiter; import org.HdrHistogram.Recorder; import org.apache.bookkeeper.stats.Counter; import org.apache.bookkeeper.stats.NullStatsLogger; @@ -73,7 +76,7 @@ public class LocalWorker implements Worker, ConsumerCallback { private List producers = new ArrayList<>(); private List consumers = new ArrayList<>(); - private final RateLimiter rateLimiter = RateLimiter.create(1.0); + private volatile UniformRateLimiter rateLimiter = new UniformRateLimiter(1.0); private final ExecutorService executor = Executors.newCachedThreadPool(new DefaultThreadFactory("local-worker")); @@ -98,6 +101,10 @@ public class LocalWorker implements Worker, ConsumerCallback { private final Recorder cumulativePublishLatencyRecorder = new Recorder(TimeUnit.SECONDS.toMicros(60), 5); private final OpStatsLogger publishLatencyStats; + private final Recorder publishDelayLatencyRecorder = new Recorder(TimeUnit.SECONDS.toMicros(60), 5); + private final Recorder cumulativePublishDelayLatencyRecorder = new Recorder(TimeUnit.SECONDS.toMicros(60), 5); + private final OpStatsLogger publishDelayLatencyStats; + private final Recorder endToEndLatencyRecorder = new Recorder(TimeUnit.HOURS.toMicros(12), 5); private final Recorder endToEndCumulativeLatencyRecorder = new Recorder(TimeUnit.HOURS.toMicros(12), 5); private final OpStatsLogger endToEndLatencyStats; @@ -118,6 +125,7 @@ public LocalWorker(StatsLogger statsLogger) { StatsLogger producerStatsLogger = statsLogger.scope("producer"); this.messagesSentCounter = producerStatsLogger.getCounter("messages_sent"); this.bytesSentCounter = producerStatsLogger.getCounter("bytes_sent"); + this.publishDelayLatencyStats = producerStatsLogger.getOpStatsLogger("producer_delay_latency"); this.publishLatencyStats = producerStatsLogger.getOpStatsLogger("produce_latency"); StatsLogger consumerStatsLogger = statsLogger.scope("consumer"); @@ -203,7 +211,7 @@ public void createConsumers(ConsumerAssignment consumerAssignment) { public void startLoad(ProducerWorkAssignment producerWorkAssignment) { int processors = Runtime.getRuntime().availableProcessors(); - rateLimiter.setRate(producerWorkAssignment.publishRate); + rateLimiter = new UniformRateLimiter(producerWorkAssignment.publishRate); Map> processorAssignemnt = new TreeMap<>(); @@ -227,6 +235,7 @@ public void probeProducers() throws IOException { private void submitProducersToExecutor(List producers, KeyDistributor keyDistributor, byte[] payloadData) { executor.submit(() -> { + ThreadLocalRandom r = ThreadLocalRandom.current(); try { while (!testCompleted) { while (producersArePaused) { @@ -238,7 +247,8 @@ private void submitProducersToExecutor(List producers, KeyDis } producers.forEach(producer -> { - rateLimiter.acquire(); + final long intendedSendTime = rateLimiter.acquire(); + uninterruptibleSleepNs(intendedSendTime); final long sendTime = System.nanoTime(); producer.sendAsync(Optional.ofNullable(keyDistributor.next()), payloadData).thenRun(() -> { messagesSent.increment(); @@ -247,10 +257,15 @@ private void submitProducersToExecutor(List producers, KeyDis bytesSent.add(payloadData.length); bytesSentCounter.add(payloadData.length); - long microTime = TimeUnit.NANOSECONDS.toMicros(System.nanoTime() - sendTime); - publishLatencyRecorder.recordValue(microTime); - cumulativePublishLatencyRecorder.recordValue(microTime); - publishLatencyStats.registerSuccessfulEvent(microTime, TimeUnit.MICROSECONDS); + long latencyMicros = TimeUnit.NANOSECONDS.toMicros(System.nanoTime() - sendTime); + publishLatencyRecorder.recordValue(latencyMicros); + cumulativePublishLatencyRecorder.recordValue(latencyMicros); + publishLatencyStats.registerSuccessfulEvent(latencyMicros, TimeUnit.MICROSECONDS); + + final long sendDelayMicros = TimeUnit.NANOSECONDS.toMicros(sendTime - intendedSendTime); + publishDelayLatencyRecorder.recordValue(sendDelayMicros); + cumulativePublishDelayLatencyRecorder.recordValue(sendDelayMicros); + publishDelayLatencyStats.registerSuccessfulEvent(sendDelayMicros, TimeUnit.MICROSECONDS); }).exceptionally(ex -> { log.warn("Write error on message", ex); return null; @@ -265,11 +280,11 @@ private void submitProducersToExecutor(List producers, KeyDis @Override public void adjustPublishRate(double publishRate) { - if (publishRate < 1.0) { - rateLimiter.setRate(1.0); + if(publishRate < 1.0) { + rateLimiter = new UniformRateLimiter(1.0); return; } - rateLimiter.setRate(publishRate); + rateLimiter = new UniformRateLimiter(publishRate); } @Override @@ -286,6 +301,7 @@ public PeriodStats getPeriodStats() { stats.totalMessagesReceived = totalMessagesReceived.sum(); stats.publishLatency = publishLatencyRecorder.getIntervalHistogram(); + stats.publishDelayLatency = publishDelayLatencyRecorder.getIntervalHistogram(); stats.endToEndLatency = endToEndLatencyRecorder.getIntervalHistogram(); return stats; } @@ -294,6 +310,7 @@ public PeriodStats getPeriodStats() { public CumulativeLatencies getCumulativeLatencies() { CumulativeLatencies latencies = new CumulativeLatencies(); latencies.publishLatency = cumulativePublishLatencyRecorder.getIntervalHistogram(); + latencies.publishDelayLatency = cumulativePublishDelayLatencyRecorder.getIntervalHistogram(); latencies.endToEndLatency = endToEndCumulativeLatencyRecorder.getIntervalHistogram(); return latencies; } @@ -350,6 +367,8 @@ public void resumeConsumers() throws IOException { public void resetStats() throws IOException { publishLatencyRecorder.reset(); cumulativePublishLatencyRecorder.reset(); + publishDelayLatencyRecorder.reset(); + cumulativePublishDelayLatencyRecorder.reset(); endToEndLatencyRecorder.reset(); endToEndCumulativeLatencyRecorder.reset(); } @@ -362,6 +381,8 @@ public void stopAll() throws IOException { publishLatencyRecorder.reset(); cumulativePublishLatencyRecorder.reset(); + publishDelayLatencyRecorder.reset(); + cumulativePublishDelayLatencyRecorder.reset(); endToEndLatencyRecorder.reset(); endToEndCumulativeLatencyRecorder.reset(); diff --git a/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/WorkerHandler.java b/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/WorkerHandler.java index 713e79f6..a2db2eb4 100644 --- a/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/WorkerHandler.java +++ b/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/WorkerHandler.java @@ -160,6 +160,12 @@ private void handlePeriodStats(Context ctx) throws Exception { histogramSerializationBuffer.flip(); histogramSerializationBuffer.get(stats.publishLatencyBytes); + histogramSerializationBuffer.clear(); + stats.publishDelayLatency.encodeIntoCompressedByteBuffer(histogramSerializationBuffer); + stats.publishDelayLatencyBytes = new byte[histogramSerializationBuffer.position()]; + histogramSerializationBuffer.flip(); + histogramSerializationBuffer.get(stats.publishDelayLatencyBytes); + histogramSerializationBuffer.clear(); stats.endToEndLatency.encodeIntoCompressedByteBuffer(histogramSerializationBuffer); stats.endToEndLatencyBytes = new byte[histogramSerializationBuffer.position()]; @@ -181,6 +187,12 @@ private void handleCumulativeLatencies(Context ctx) throws Exception { histogramSerializationBuffer.flip(); histogramSerializationBuffer.get(stats.publishLatencyBytes); + histogramSerializationBuffer.clear(); + stats.publishDelayLatency.encodeIntoCompressedByteBuffer(histogramSerializationBuffer); + stats.publishDelayLatencyBytes = new byte[histogramSerializationBuffer.position()]; + histogramSerializationBuffer.flip(); + histogramSerializationBuffer.get(stats.publishDelayLatencyBytes); + histogramSerializationBuffer.clear(); stats.endToEndLatency.encodeIntoCompressedByteBuffer(histogramSerializationBuffer); stats.endToEndLatencyBytes = new byte[histogramSerializationBuffer.position()]; diff --git a/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/commands/CumulativeLatencies.java b/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/commands/CumulativeLatencies.java index 7cff435f..cc5e5b6b 100644 --- a/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/commands/CumulativeLatencies.java +++ b/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/commands/CumulativeLatencies.java @@ -30,6 +30,10 @@ public class CumulativeLatencies { public Histogram publishLatency = new Histogram(TimeUnit.SECONDS.toMicros(60), 5); public byte[] publishLatencyBytes; + @JsonIgnore + public Histogram publishDelayLatency = new Histogram(TimeUnit.SECONDS.toMicros(60), 5); + public byte[] publishDelayLatencyBytes; + @JsonIgnore public Histogram endToEndLatency = new Histogram(TimeUnit.HOURS.toMicros(12), 5); public byte[] endToEndLatencyBytes; diff --git a/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/commands/PeriodStats.java b/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/commands/PeriodStats.java index f5b5704a..9ce4ff33 100644 --- a/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/commands/PeriodStats.java +++ b/benchmark-framework/src/main/java/io/openmessaging/benchmark/worker/commands/PeriodStats.java @@ -38,6 +38,11 @@ public class PeriodStats { public Histogram publishLatency = new Histogram(TimeUnit.SECONDS.toMicros(60), 5); public byte[] publishLatencyBytes; + @JsonIgnore + public Histogram publishDelayLatency = new Histogram(TimeUnit.SECONDS.toMicros(60), 5); + public byte[] publishDelayLatencyBytes; + + @JsonIgnore public Histogram endToEndLatency = new Histogram(TimeUnit.HOURS.toMicros(12), 5); public byte[] endToEndLatencyBytes; diff --git a/bin/create_charts.py b/bin/create_charts.py index 2a2c98cf..9e872f99 100755 --- a/bin/create_charts.py +++ b/bin/create_charts.py @@ -43,22 +43,38 @@ def create_charts(test_results): y_label='Latency (ms)', time_series=[(x['driver'], x['publishLatency99pct']) for x in results]) + create_chart(workload, 'Publish Delay latency 99pct', + y_label='Latency (us)', + time_series=[(x['driver'], x['publishDelayLatency99pct']) for x in results]) + create_chart(workload, 'Publish rate', y_label='Rate (msg/s)', time_series=[(x['driver'], x['publishRate']) for x in results]) + create_chart(workload, 'End To End Latency 95pct', + y_label='Latency (ms)', + time_series=[(x['driver'], x['endToEndLatency95pct']) for x in results]) + create_chart(workload, 'Consume rate', y_label='Rate (msg/s)', time_series=[(x['driver'], x['consumeRate']) for x in results]) - create_chart(workload, 'endToEndLatencyAvg', - y_label='LatencyAvg msec', + create_chart(workload, 'End To End Latency Avg', + y_label='Latency Avg (msec)', time_series=[(x['driver'], x['endToEndLatencyAvg']) for x in results]) - create_quantile_chart(workload, 'Publish latency quantiles', + create_quantile_chart(workload, 'Publish Latency Quantiles', y_label='Latency (ms)', time_series=[(x['driver'], x['aggregatedPublishLatencyQuantiles']) for x in results]) + create_quantile_chart(workload, 'Publish Delay Latency Quantiles', + y_label='Latency (us)', + time_series=[(x['driver'], x['aggregatedPublishDelayLatencyQuantiles']) for x in results]) + + create_quantile_chart(workload, 'End To End Latency Quantiles', + y_label='Latency (ms)', + time_series=[(x['driver'], x['aggregatedEndToEndLatencyQuantiles']) for x in results]) + def create_chart(workload, title, y_label, time_series): chart = pygal.XY(dots_size=.3, diff --git a/docker/pom.xml b/docker/pom.xml index 3b72c526..08bb8960 100644 --- a/docker/pom.xml +++ b/docker/pom.xml @@ -34,7 +34,7 @@ 1.3.7 - openmessaging + vectorized diff --git a/driver-redpanda/README.md b/driver-redpanda/README.md index 215a7524..fc8f1505 100644 --- a/driver-redpanda/README.md +++ b/driver-redpanda/README.md @@ -51,7 +51,7 @@ Then try running the ansible command again. 1. SSH to the client machine. - ssh -i ~/.ssh/redpanda_aws ubuntu@$(terraform output client_ssh_host) + ssh -i ~/.ssh/redpanda_aws ubuntu@$(terraform output --raw client_ssh_host) 2. Change into the benchmark directory From cde313756faa1ebd0114a35d6fc3b09198559738 Mon Sep 17 00:00:00 2001 From: Roman Ilgovskiy <34962941+ZeDRoman@users.noreply.github.com> Date: Sat, 28 May 2022 22:53:44 +0300 Subject: [PATCH 46/47] Ducktape testing (#9) * Accept zero producer rate to use max rate * Configurable warm-up duration --- .../src/main/java/io/openmessaging/benchmark/Workload.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmark-framework/src/main/java/io/openmessaging/benchmark/Workload.java b/benchmark-framework/src/main/java/io/openmessaging/benchmark/Workload.java index 71769e79..a618c2cb 100644 --- a/benchmark-framework/src/main/java/io/openmessaging/benchmark/Workload.java +++ b/benchmark-framework/src/main/java/io/openmessaging/benchmark/Workload.java @@ -72,7 +72,7 @@ public void validate() throws IllegalArgumentException { throw new IllegalArgumentException("Consumer only tests need a backlog specification"); } - if (producerRate <= 0) { + if (producerRate < 0) { throw new IllegalArgumentException("Producer rate should be > 0"); } } From d103189219de224fbbd7d8d537d0b3c0e8ce589b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Jun 2022 20:42:27 +0000 Subject: [PATCH 47/47] Bump jackson-databind from 2.9.10.1 to 2.12.6.1 Bumps [jackson-databind](https://github.com/FasterXML/jackson) from 2.9.10.1 to 2.12.6.1. - [Release notes](https://github.com/FasterXML/jackson/releases) - [Commits](https://github.com/FasterXML/jackson/commits) --- updated-dependencies: - dependency-name: com.fasterxml.jackson.core:jackson-databind dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index bfc2d293..33e34951 100644 --- a/pom.xml +++ b/pom.xml @@ -120,7 +120,7 @@ com.fasterxml.jackson.core jackson-databind - 2.9.10.1 + 2.12.6.1