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