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) {