You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ratis.apache.org by lj...@apache.org on 2019/09/30 11:10:45 UTC

[incubator-ratis] branch master updated: RATIS-679. Add counters for append entries and number of times raft log is flushed.

This is an automated email from the ASF dual-hosted git repository.

ljain pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-ratis.git


The following commit(s) were added to refs/heads/master by this push:
     new fb56bcb  RATIS-679. Add counters for append entries and number of times raft log is flushed.
fb56bcb is described below

commit fb56bcbe7e058619458ad8bc7fc5cde3f3b8ffec
Author: Lokesh Jain <lj...@apache.org>
AuthorDate: Mon Sep 30 16:39:17 2019 +0530

    RATIS-679. Add counters for append entries and number of times raft log is flushed.
---
 .../ratis/server/metrics/RaftLogMetrics.java       | 24 +++++++++-----------
 .../ratis/server/metrics/RatisMetricNames.java     |  6 +++++
 .../raftlog/segmented/SegmentedRaftLogWorker.java  |  2 ++
 .../ratis/server/raftlog/TestRaftLogMetrics.java   | 26 ++++++++++++----------
 4 files changed, 32 insertions(+), 26 deletions(-)

diff --git a/ratis-server/src/main/java/org/apache/ratis/server/metrics/RaftLogMetrics.java b/ratis-server/src/main/java/org/apache/ratis/server/metrics/RaftLogMetrics.java
index dde0d2b..2066c11 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/metrics/RaftLogMetrics.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/metrics/RaftLogMetrics.java
@@ -18,20 +18,6 @@
 
 package org.apache.ratis.server.metrics;
 
-import static org.apache.ratis.server.metrics.RatisMetricNames.RAFT_LOG_APPEND_ENTRY_LATENCY;
-import static org.apache.ratis.server.metrics.RatisMetricNames.RAFT_LOG_CACHE_HIT_COUNT;
-import static org.apache.ratis.server.metrics.RatisMetricNames.RAFT_LOG_CACHE_MISS_COUNT;
-import static org.apache.ratis.server.metrics.RatisMetricNames.RAFT_LOG_DATA_QUEUE_SIZE;
-import static org.apache.ratis.server.metrics.RatisMetricNames.RAFT_LOG_FLUSH_TIME;
-import static org.apache.ratis.server.metrics.RatisMetricNames.RAFT_LOG_LOAD_SEGMENT_LATENCY;
-import static org.apache.ratis.server.metrics.RatisMetricNames.RAFT_LOG_READ_ENTRY_LATENCY;
-import static org.apache.ratis.server.metrics.RatisMetricNames.RAFT_LOG_SYNC_BATCH_SIZE;
-import static org.apache.ratis.server.metrics.RatisMetricNames.RAFT_LOG_SYNC_TIME;
-import static org.apache.ratis.server.metrics.RatisMetricNames.RAFT_LOG_TASK_ENQUEUE_DELAY;
-import static org.apache.ratis.server.metrics.RatisMetricNames.RAFT_LOG_TASK_EXECUTION_TIME;
-import static org.apache.ratis.server.metrics.RatisMetricNames.RAFT_LOG_TASK_QUEUE_TIME;
-import static org.apache.ratis.server.metrics.RatisMetricNames.RAFT_LOG_WORKER_QUEUE_SIZE;
-
 import java.util.Queue;
 
 import org.apache.ratis.metrics.RatisMetricRegistry;
@@ -41,6 +27,8 @@ import com.codahale.metrics.Gauge;
 import com.codahale.metrics.MetricRegistry;
 import com.codahale.metrics.Timer;
 
+import static org.apache.ratis.server.metrics.RatisMetricNames.*;
+
 public class RaftLogMetrics {
 
   private RatisMetricRegistry registry = null;
@@ -88,6 +76,14 @@ public class RaftLogMetrics {
     registry.counter(RAFT_LOG_CACHE_MISS_COUNT).inc();
   }
 
+  public void onRaftLogFlush() {
+    registry.counter(RAFT_LOG_FLUSH_COUNT).inc();
+  }
+
+  public void onRaftLogAppendEntry() {
+    registry.counter(RAFT_LOG_APPEND_ENTRY_COUNT).inc();
+  }
+
   public Timer getRaftLogAppendEntryTimer() {
     return getTimer(RAFT_LOG_APPEND_ENTRY_LATENCY);
   }
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/metrics/RatisMetricNames.java b/ratis-server/src/main/java/org/apache/ratis/server/metrics/RatisMetricNames.java
index 65b8298..7bf4404 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/metrics/RatisMetricNames.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/metrics/RatisMetricNames.java
@@ -42,6 +42,9 @@ public final class RatisMetricNames {
   // Time taken to flush log.
   public static final String RAFT_LOG_FLUSH_TIME = "flushTime";
 
+  // Number of times raft log is flushed
+  public static final String RAFT_LOG_FLUSH_COUNT = "flushCount";
+
   // Time taken to sync raft log.
   public static final String RAFT_LOG_SYNC_TIME = "syncTime";
 
@@ -73,6 +76,9 @@ public final class RatisMetricNames {
   // Time taken for a Raft log operation to complete execution.
   public static final String RAFT_LOG_TASK_EXECUTION_TIME = "ExecutionTime";
 
+  // Number of entries appended to the raft log
+  public static final String RAFT_LOG_APPEND_ENTRY_COUNT = "appendEntryCount";
+
   //////////////////////////////
   // Raft Log Read Path Metrics
   /////////////////////////////
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogWorker.java b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogWorker.java
index dcd4adb..d0edf95 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogWorker.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogWorker.java
@@ -482,6 +482,7 @@ class SegmentedRaftLogWorker implements Runnable {
         stateMachineDataPolicy.getFromFuture(stateMachineFuture, () -> this + "-writeStateMachineData");
       }
 
+      raftLogMetrics.onRaftLogAppendEntry();
       Preconditions.assertTrue(out != null);
       Preconditions.assertTrue(lastWrittenIndex + 1 == entry.getIndex(),
           "lastWrittenIndex == %s, entry == %s", lastWrittenIndex, entry);
@@ -489,6 +490,7 @@ class SegmentedRaftLogWorker implements Runnable {
       lastWrittenIndex = entry.getIndex();
       pendingFlushNum++;
       if (shouldFlush()) {
+        raftLogMetrics.onRaftLogFlush();
         flushWrites();
       }
     }
diff --git a/ratis-test/src/test/java/org/apache/ratis/server/raftlog/TestRaftLogMetrics.java b/ratis-test/src/test/java/org/apache/ratis/server/raftlog/TestRaftLogMetrics.java
index e3f16bc..5e3df55 100644
--- a/ratis-test/src/test/java/org/apache/ratis/server/raftlog/TestRaftLogMetrics.java
+++ b/ratis-test/src/test/java/org/apache/ratis/server/raftlog/TestRaftLogMetrics.java
@@ -17,9 +17,6 @@
  */
 package org.apache.ratis.server.raftlog;
 
-import static org.apache.ratis.server.metrics.RatisMetricNames.RAFT_LOG_FLUSH_TIME;
-import static org.apache.ratis.server.metrics.RatisMetricNames.RAFT_LOG_SYNC_TIME;
-
 import com.codahale.metrics.Timer;
 import org.apache.log4j.Level;
 import org.apache.ratis.BaseTest;
@@ -43,6 +40,8 @@ import java.lang.management.ManagementFactory;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import static org.apache.ratis.server.metrics.RatisMetricNames.*;
+
 public class TestRaftLogMetrics extends BaseTest
     implements MiniRaftClusterWithSimulatedRpc.FactoryGet {
 
@@ -142,26 +141,29 @@ public class TestRaftLogMetrics extends BaseTest
         ((Long) ManagementFactory.getPlatformMBeanServer().getAttribute(oname, "Count"))
             .intValue());
 
-    long cacheMissCount = ratisMetricRegistry.counter("cacheMissCount").getCount();
+    long cacheMissCount = ratisMetricRegistry.counter(RAFT_LOG_CACHE_MISS_COUNT).getCount();
     Assert.assertTrue(cacheMissCount == 0);
 
-    long cacheHitsCount = ratisMetricRegistry.counter("cacheHitCount").getCount();
+    long cacheHitsCount = ratisMetricRegistry.counter(RAFT_LOG_CACHE_HIT_COUNT).getCount();
     Assert.assertTrue(cacheHitsCount > 0);
 
-    Timer appendLatencyTimer = ratisMetricRegistry.timer("appendEntryLatency");
+    Assert.assertTrue(ratisMetricRegistry.counter(RAFT_LOG_FLUSH_COUNT).getCount() > 0);
+    Assert.assertTrue(ratisMetricRegistry.counter(RAFT_LOG_APPEND_ENTRY_COUNT).getCount() > 0);
+
+    Timer appendLatencyTimer = ratisMetricRegistry.timer(RAFT_LOG_APPEND_ENTRY_LATENCY);
     Assert.assertTrue(appendLatencyTimer.getMeanRate() > 0);
 
-    Timer enqueuedTimer = ratisMetricRegistry.timer("enqueuedTime");
+    Timer enqueuedTimer = ratisMetricRegistry.timer(RAFT_LOG_TASK_QUEUE_TIME);
     Assert.assertTrue(enqueuedTimer.getMeanRate() > 0);
 
-    Timer queueingDelayTimer = ratisMetricRegistry.timer("queueingDelay");
+    Timer queueingDelayTimer = ratisMetricRegistry.timer(RAFT_LOG_TASK_ENQUEUE_DELAY);
     Assert.assertTrue(queueingDelayTimer.getMeanRate() > 0);
 
-    Timer executionTimer = ratisMetricRegistry.timer("writelogExecutionTime");
+    Timer executionTimer = ratisMetricRegistry.timer("writelog" + RAFT_LOG_TASK_EXECUTION_TIME);
     Assert.assertTrue(executionTimer.getMeanRate() > 0);
 
-    Assert.assertNotNull(ratisMetricRegistry.get("dataQueueSize"));
-    Assert.assertNotNull(ratisMetricRegistry.get("workerQueueSize"));
-    Assert.assertNotNull(ratisMetricRegistry.get("syncBatchSize"));
+    Assert.assertNotNull(ratisMetricRegistry.get(RAFT_LOG_DATA_QUEUE_SIZE));
+    Assert.assertNotNull(ratisMetricRegistry.get(RAFT_LOG_WORKER_QUEUE_SIZE));
+    Assert.assertNotNull(ratisMetricRegistry.get(RAFT_LOG_SYNC_BATCH_SIZE));
   }
 }
\ No newline at end of file