You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by xi...@apache.org on 2022/07/07 03:20:27 UTC

[iotdb] branch multileader_restart_test updated: add stepTracker

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

xingtanzjr pushed a commit to branch multileader_restart_test
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/multileader_restart_test by this push:
     new c59904343e add stepTracker
c59904343e is described below

commit c59904343ed3901ffd813628f6f782d53124ae3e
Author: Jinrui.Zhang <xi...@gmail.com>
AuthorDate: Thu Jul 7 11:19:39 2022 +0800

    add stepTracker
---
 .../multileader/logdispatcher/LogDispatcher.java   |  3 +++
 .../org/apache/iotdb/commons}/StepTracker.java     | 24 +++++++++++++++++-----
 .../java/org/apache/iotdb/db/wal/io/WALReader.java |  3 +++
 3 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/consensus/src/main/java/org/apache/iotdb/consensus/multileader/logdispatcher/LogDispatcher.java b/consensus/src/main/java/org/apache/iotdb/consensus/multileader/logdispatcher/LogDispatcher.java
index b26ec2e18e..811396c196 100644
--- a/consensus/src/main/java/org/apache/iotdb/consensus/multileader/logdispatcher/LogDispatcher.java
+++ b/consensus/src/main/java/org/apache/iotdb/consensus/multileader/logdispatcher/LogDispatcher.java
@@ -20,6 +20,7 @@
 package org.apache.iotdb.consensus.multileader.logdispatcher;
 
 import org.apache.iotdb.common.rpc.thrift.TEndPoint;
+import org.apache.iotdb.commons.StepTracker;
 import org.apache.iotdb.commons.client.IClientManager;
 import org.apache.iotdb.commons.concurrent.IoTDBThreadPoolFactory;
 import org.apache.iotdb.consensus.common.Peer;
@@ -187,8 +188,10 @@ public class LogDispatcher {
         while (!Thread.interrupted() && !stopped) {
           while ((batch = getBatch()).isEmpty()) {
             // we may block here if there is no requests in the queue
+            long startTime = System.nanoTime();
             IndexedConsensusRequest request =
                 pendingRequest.poll(PENDING_REQUEST_TAKING_TIME_OUT_IN_SEC, TimeUnit.SECONDS);
+            StepTracker.trace("MultiLeaderPoll", 50, startTime, System.nanoTime());
             if (request != null) {
               bufferedRequest.add(request);
               // If write pressure is low, we simply sleep a little to reduce the number of RPC
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/StepTracker.java b/node-commons/src/main/java/org/apache/iotdb/commons/StepTracker.java
similarity index 76%
rename from server/src/main/java/org/apache/iotdb/db/mpp/plan/StepTracker.java
rename to node-commons/src/main/java/org/apache/iotdb/commons/StepTracker.java
index b5e1fc88ad..f11c2a122f 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/StepTracker.java
+++ b/node-commons/src/main/java/org/apache/iotdb/commons/StepTracker.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.iotdb.db.mpp.plan;
+package org.apache.iotdb.commons;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -27,18 +27,24 @@ import java.util.Map;
 
 class Metric {
   private static final Logger logger = LoggerFactory.getLogger(Metric.class);
-  private static final int PRINT_RATE = 1000;
+  private static final int DEFAULT_PRINT_RATE = 1000;
 
   public String stepName;
   public long invokeCount;
   public long totalTime;
   public long lastCycleTime;
+  public int printRate;
 
   public Metric(String stepName) {
+    this(stepName, DEFAULT_PRINT_RATE);
+  }
+
+  public Metric(String stepName, int printRate) {
     this.stepName = stepName;
     this.invokeCount = 0;
     this.totalTime = 0;
     this.lastCycleTime = 0;
+    this.printRate = printRate;
   }
 
   public void trace(long startTime, long endTime) {
@@ -47,7 +53,7 @@ class Metric {
   }
 
   public void tryPrint() {
-    if (invokeCount % PRINT_RATE == 0) {
+    if (invokeCount % printRate == 0) {
       logger.info(
           String.format(
               "step metrics [%d]-[%s] - Total: %d, SUM: %.2fms, AVG: %fms, Last%dAVG: %fms",
@@ -56,8 +62,8 @@ class Metric {
               invokeCount,
               totalTime * 1.0 / 1000000,
               totalTime * 1.0 / 1000000 / invokeCount,
-              PRINT_RATE,
-              (totalTime * 1.0 - lastCycleTime) / 1000000 / PRINT_RATE));
+              printRate,
+              (totalTime * 1.0 - lastCycleTime) / 1000000 / printRate));
       lastCycleTime = totalTime;
     }
   }
@@ -74,6 +80,14 @@ public class StepTracker {
     metrics.get().get(stepName).tryPrint();
   }
 
+  public static void trace(String stepName, int printRate, long startTime, long endTime) {
+    if (metrics.get() == null) {
+      metrics.set(new HashMap<>());
+    }
+    metrics.get().computeIfAbsent(stepName, key -> new Metric(stepName, printRate)).trace(startTime, endTime);
+    metrics.get().get(stepName).tryPrint();
+  }
+
   public static void cleanup() {
     metrics.set(null);
   }
diff --git a/server/src/main/java/org/apache/iotdb/db/wal/io/WALReader.java b/server/src/main/java/org/apache/iotdb/db/wal/io/WALReader.java
index 41a0cf145d..c4c7a95cc1 100644
--- a/server/src/main/java/org/apache/iotdb/db/wal/io/WALReader.java
+++ b/server/src/main/java/org/apache/iotdb/db/wal/io/WALReader.java
@@ -18,6 +18,7 @@
  */
 package org.apache.iotdb.db.wal.io;
 
+import org.apache.iotdb.commons.StepTracker;
 import org.apache.iotdb.commons.exception.IllegalPathException;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.wal.buffer.WALEntry;
@@ -77,7 +78,9 @@ public class WALReader implements Closeable {
       }
       walEntries.clear();
       while (walEntries.size() < BATCH_LIMIT) {
+        long startTime = System.nanoTime();
         WALEntry walEntry = WALEntry.deserialize(logStream);
+        StepTracker.trace("walEntryDeserialize", 1000, startTime, System.nanoTime());
         walEntries.add(walEntry);
       }
     } catch (EOFException e) {