You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by yu...@apache.org on 2020/09/07 09:13:08 UTC
[incubator-iotdb] branch cluster_performance updated: timer
This is an automated email from the ASF dual-hosted git repository.
yuyuankang pushed a commit to branch cluster_performance
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git
The following commit(s) were added to refs/heads/cluster_performance by this push:
new eaf6615 timer
eaf6615 is described below
commit eaf6615c72450ac2b52ee7578df076026baf107a
Author: Ring-k <yu...@hotmail.com>
AuthorDate: Mon Sep 7 17:12:38 2020 +0800
timer
---
.../apache/iotdb/cluster/log/LogDispatcher.java | 3 +-
.../org/apache/iotdb/cluster/server/Timer.java | 171 +++++++++------------
.../cluster/server/member/DataGroupMember.java | 9 +-
.../cluster/server/member/MetaGroupMember.java | 9 +-
.../iotdb/cluster/server/member/RaftMember.java | 42 ++---
5 files changed, 91 insertions(+), 143 deletions(-)
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/log/LogDispatcher.java b/cluster/src/main/java/org/apache/iotdb/cluster/log/LogDispatcher.java
index b9df92d..9c4a879 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/log/LogDispatcher.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/log/LogDispatcher.java
@@ -142,8 +142,7 @@ public class LogDispatcher {
private void sendLog(SendLogRequest logRequest) {
long inQueueTime = System.nanoTime() - logRequest.enqueueTime;
- Timer.logDispatcherLogInQueueCounter.incrementAndGet();
- Timer.logDispatcherLogInQueueMS.addAndGet(inQueueTime);
+ Timer.logDispatcherLogInQueue.add(inQueueTime);
member.sendLogToFollower(logRequest.log, logRequest.voteCounter, receiver,
logRequest.leaderShipStale, logRequest.newLeaderTerm, logRequest.appendEntryRequest);
}
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/server/Timer.java b/cluster/src/main/java/org/apache/iotdb/cluster/server/Timer.java
index 4f853b8..661622e 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/server/Timer.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/server/Timer.java
@@ -42,12 +42,53 @@ public class Timer {
public static AtomicLong raftMemberCommitLogResultCounter = new AtomicLong(0);
public static AtomicLong raftMemberAppendLogResultMS = new AtomicLong(0);
public static AtomicLong raftMemberAppendLogResultCounter = new AtomicLong(0);
- public static AtomicLong indexDiff = new AtomicLong(0);
+// public static AtomicLong indexDiff = new AtomicLong(0);
public static AtomicLong indexDiffCounter = new AtomicLong(0);
public static AtomicLong logDispatcherLogInQueueMS = new AtomicLong(0);
public static AtomicLong logDispatcherLogInQueueCounter = new AtomicLong(0);
- class Statistic {
+ public static Statistic dataGroupMemberProcessPlanLocally = new Statistic(
+ "Data group member - process plan locally: ", 1000000L);
+ public static Statistic dataGroupMemberWaitLeader = new Statistic(
+ "Data group member - wait leader: ", 1000000L);
+ public static Statistic metaGroupMemberExecuteNonQuery = new Statistic(
+ "Meta group member - execute non query: ", 1000000L);
+ public static Statistic metaGroupMemberExecuteNonQueryInLocalGroup = new Statistic(
+ "Meta group member - execute in local group: ", 1000000L);
+ public static Statistic metaGroupMemberExecuteNonQueryInRemoteGroup = new Statistic(
+ "Meta group member - execute in remote group: ", 1000000L);
+ public static Statistic raftMemberAppendLog = new Statistic("Raft member - append log: ",
+ 1000000L);
+ public static Statistic raftMemberSendLogToFollower = new Statistic(
+ "Raft member - send log to follower: ", 1000000L);
+ public static Statistic raftMemberCommitLog = new Statistic("Raft member - commit log: ",
+ 1000000L);
+ public static Statistic raftFollowerAppendEntry = new Statistic(
+ "Raft member - follower append entry: ", 1000000L);
+ public static Statistic dataGroupMemberForwardPlan = new Statistic(
+ "Data group member - forward plan: ", 1000000L);
+ public static Statistic raftMemberWaitForPrevLog = new Statistic(
+ "Raft member - wait for prev log: ", 1000000L);
+ public static Statistic raftMemberSendLogAync = new Statistic("Raft member - send log aync: ",
+ 1000000L);
+ public static Statistic raftMemberVoteCounter = new Statistic("Raft member - vote counter: ",
+ 1000000L);
+ public static Statistic raftMemberLogParse = new Statistic("Raft member - log parse: ", 1000000L);
+ public static Statistic rafTMemberReceiverWaitForPrevLog = new Statistic(
+ "Raft member - receiver wait for prev log: ", 1000000L);
+ public static Statistic rafTMemberMayBeAppend = new Statistic("rafTMemberMayBeAppendMS",
+ 1000000L);
+ public static Statistic raftMemberOfferLog = new Statistic("Raft member - offer log: ", 1000000L);
+ public static Statistic raftMemberCommitLogResult = new Statistic(
+ "aft member - commit log result: ", 1000000L);
+ public static Statistic raftMemberAppendLogResult = new Statistic(
+ "Raft member - append log result: ", 1000000L);
+ public static Statistic indexDiff = new Statistic("Raft member - index diff: ", 1L);
+ public static Statistic logDispatcherLogInQueue = new Statistic("Log dispatcher - in queue: ",
+ 1000000L);
+
+
+ public static class Statistic {
String name;
AtomicLong sum = new AtomicLong(0);
@@ -59,116 +100,44 @@ public class Timer {
this.scale = scale;
}
- void add(long val) {
+ public void add(long val) {
sum.addAndGet(val);
counter.incrementAndGet();
}
@Override
public String toString() {
- return getOneLine(name, sum, counter, scale);
+ return name
+ + sum.get() / scale + ", "
+ + counter + ", "
+ + (double) sum.get() / scale
+ / counter.get();
}
}
-
- private static final String dataGroupMemberProcessPlanLocallyMSString = "Data group member - process plan locally : ";
- private static final String dataGroupMemberWaitLeaderMSString = "Data group member - wait leader: ";
- private static final String metaGroupMemberExecuteNonQueryMSString = "Meta group member - execute non query: ";
- private static final String metaGroupMemberExecuteNonQueryInLocalGroupMSString = "Meta group member - execute in local group: ";
- private static final String metaGroupMemberExecuteNonQueryInRemoteGroupMSString = "Meta group member - execute in remote group: ";
- private static final String raftMemberAppendLogMSString = "Raft member - append log: ";
- private static final String raftMemberSendLogToFollowerMSString = "Raft member - send log to follower: ";
- private static final String raftMemberCommitLogMSString = "Raft member - commit log: ";
- private static final String raftFollowerAppendEntryString = "Raft member - follower append entry: ";
- private static final String dataGroupMemberForwardPlanString = "Data group member - forward plan: ";
- private static final String raftMemberWaitForPrevLogString = "Raft member - wait for prev log: ";
- private static final String raftMemberSendLogAyncString = "Raft member - send log aync: ";
- private static final String raftMemberVoteCounterString = "Raft member - vote counter: ";
- private static final String raftMemberLogParseString = "Raft member - log parse: ";
- private static final String rafTMemberReceiverWaitForPrevLogString = "Raft member - receiver wait for prev log: ";
- private static final String rafTMemberMayBeAppendString = "Raft member - maybe append: ";
- private static final String rafTMemberOfferLogString = "Raft member - offer log: ";
- private static final String raftMemberCommitLogResultString = "Raft member - commit log result: ";
- private static final String raftMemberAppendLogResultString = "Raft member - append log result: ";
- private static final String indexDiffString = "Raft member - index diff: ";
- private static final String logDispatcherLogInQueueString = "Log dispatcher - in queue: ";
-
-
- public static String getOneLine(String name, AtomicLong period, AtomicLong counter, long scale) {
- return name
- + period.get() / scale + ", "
- + counter + ", "
- + (double) period.get() / scale
- / counter.get();
- }
-
public static String getReport() {
String result = "\n";
- result +=
- getOneLine(dataGroupMemberProcessPlanLocallyMSString, dataGroupMemberProcessPlanLocallyMS,
- dataGroupMemberProcessPlanLocallyCounter, 1000000L)
- + "\n";
- result += getOneLine(dataGroupMemberWaitLeaderMSString, dataGroupMemberWaitLeaderMS,
- dataGroupMemberWaitLeaderCounter, 1000000L)
- + "\n";
- result += getOneLine(metaGroupMemberExecuteNonQueryMSString, metaGroupMemberExecuteNonQueryMS,
- metaGroupMemberExecuteNonQueryCounter, 1000000L)
- + "\n";
- result += getOneLine(metaGroupMemberExecuteNonQueryInLocalGroupMSString,
- metaGroupMemberExecuteNonQueryInLocalGroupMS,
- metaGroupMemberExecuteNonQueryInLocalGroupCounter, 1000000L)
- + "\n";
- result += getOneLine(metaGroupMemberExecuteNonQueryInRemoteGroupMSString,
- metaGroupMemberExecuteNonQueryInRemoteGroupMS,
- metaGroupMemberExecuteNonQueryInRemoteGroupCounter, 1000000L)
- + "\n";
- result +=
- getOneLine(raftMemberAppendLogMSString, raftMemberAppendLogMS, raftMemberAppendLogCounter, 1000000L)
- + "\n";
- result += getOneLine(raftMemberSendLogToFollowerMSString, raftMemberSendLogToFollowerMS,
- raftMemberSendLogToFollowerCounter,1000000L)
- + "\n";
- result +=
- getOneLine(raftMemberCommitLogMSString, raftMemberCommitLogMS, raftMemberCommitLogCounter,1000000L)
- + "\n";
- result += getOneLine(raftFollowerAppendEntryString, raftFollowerAppendEntryMS,
- raftFollowerAppendEntryCounter, 1000000L)
- + "\n";
- result += getOneLine(dataGroupMemberForwardPlanString, dataGroupMemberForwardPlanMS,
- dataGroupMemberForwardPlanCounter, 1000000L)
- + "\n";
- result += getOneLine(raftMemberWaitForPrevLogString, raftMemberWaitForPrevLogMS,
- raftMemberWaitForPrevLogCounter, 1000000L)
- + "\n";
- result += getOneLine(raftMemberSendLogAyncString, raftMemberSendLogAyncMS,
- raftMemberSendLogAyncCounter,1000000L)
- + "\n";
- result += getOneLine(raftMemberVoteCounterString, raftMemberVoteCounterMS,
- raftMemberVoteCounterCounter, 1000000L)
- + "\n";
- result += getOneLine(raftMemberLogParseString, raftMemberLogParseMS, raftMemberLogParseCounter, 1000000L)
- + "\n";
- result += getOneLine(rafTMemberReceiverWaitForPrevLogString, rafTMemberReceiverWaitForPrevLogMS,
- rafTMemberReceiverWaitForPrevLogCounter, 1000000L)
- + "\n";
- result += getOneLine(rafTMemberMayBeAppendString, rafTMemberMayBeAppendMS,
- rafTMemberMayBeAppendCounter, 1000000L)
- + "\n";
- result += getOneLine(rafTMemberOfferLogString, raftMemberOfferLogMS, raftMemberOfferLogCounter, 1000000L)
- + "\n";
- result += getOneLine(raftMemberAppendLogResultString, raftMemberAppendLogResultMS,
- raftMemberAppendLogResultCounter, 1000000L)
- + "\n";
- result += getOneLine(raftMemberCommitLogResultString, raftMemberCommitLogResultMS,
- raftMemberCommitLogResultCounter, 1000000L)
- + "\n";
- result += getOneLine(logDispatcherLogInQueueString, logDispatcherLogInQueueMS,
- logDispatcherLogInQueueCounter, 1000000L)
- + "\n";
- result += indexDiffString
- + indexDiff.get() + ", "
- + indexDiffCounter + ", "
- + (double) indexDiff.get() / indexDiffCounter.get() + "\n";
+ result += dataGroupMemberProcessPlanLocally.toString() + "\n";
+ result += dataGroupMemberWaitLeader.toString() + "\n";
+ result += metaGroupMemberExecuteNonQuery.toString() + "\n";
+ result += metaGroupMemberExecuteNonQueryInLocalGroup.toString() + "\n";
+ result += metaGroupMemberExecuteNonQueryInRemoteGroup.toString() + "\n";
+ result += raftMemberAppendLog.toString() + "\n";
+ result += raftMemberSendLogToFollower.toString() + "\n";
+ result += raftMemberCommitLog.toString() + "\n";
+ result += raftFollowerAppendEntry.toString() + "\n";
+ result += dataGroupMemberForwardPlan.toString() + "\n";
+ result += raftMemberWaitForPrevLog.toString() + "\n";
+ result += raftMemberSendLogAync.toString() + "\n";
+ result += raftMemberVoteCounter.toString() + "\n";
+ result += raftMemberLogParse.toString() + "\n";
+ result += rafTMemberReceiverWaitForPrevLog.toString() + "\n";
+ result += rafTMemberMayBeAppend.toString() + "\n";
+ result += raftMemberOfferLog.toString() + "\n";
+ result += raftMemberAppendLogResult.toString() + "\n";
+ result += raftMemberCommitLogResult.toString() + "\n";
+ result += logDispatcherLogInQueue.toString() + "\n";
+ result += indexDiff.toString() + "\n";
return result;
}
}
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/server/member/DataGroupMember.java b/cluster/src/main/java/org/apache/iotdb/cluster/server/member/DataGroupMember.java
index af98b40..8c837d3 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/server/member/DataGroupMember.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/server/member/DataGroupMember.java
@@ -1110,23 +1110,20 @@ public class DataGroupMember extends RaftMember {
if (character == NodeCharacter.LEADER) {
long start = System.nanoTime();
TSStatus status = processPlanLocally(plan);
- Timer.dataGroupMemberProcessPlanLocallyMS.addAndGet(System.nanoTime() - start);
- Timer.dataGroupMemberProcessPlanLocallyCounter.incrementAndGet();
+ Timer.dataGroupMemberForwardPlan.add(System.nanoTime() - start);
if (status != null) {
return status;
}
} else if (leader != null) {
long start = System.nanoTime();
TSStatus result = forwardPlan(plan, leader, getHeader());
- Timer.dataGroupMemberForwardPlanMS.addAndGet(System.nanoTime() - start);
- Timer.dataGroupMemberForwardPlanCounter.incrementAndGet();
+ Timer.dataGroupMemberForwardPlan.add(System.nanoTime() - start);
return result;
}
long start = System.nanoTime();
waitLeader();
- Timer.dataGroupMemberWaitLeaderMS.addAndGet(System.nanoTime() - start);
- Timer.dataGroupMemberWaitLeaderCounter.incrementAndGet();
+ Timer.dataGroupMemberWaitLeader.add(System.nanoTime() - start);
// the leader can be itself after waiting
if (character == NodeCharacter.LEADER) {
TSStatus status = processPlanLocally(plan);
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/server/member/MetaGroupMember.java b/cluster/src/main/java/org/apache/iotdb/cluster/server/member/MetaGroupMember.java
index ab3f1a8..308906f 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/server/member/MetaGroupMember.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/server/member/MetaGroupMember.java
@@ -1414,8 +1414,7 @@ public class MetaGroupMember extends RaftMember {
result = status;
}
}
- Timer.metaGroupMemberExecuteNonQueryMS.addAndGet(System.nanoTime() - start);
- Timer.metaGroupMemberExecuteNonQueryCounter.incrementAndGet();
+ Timer.metaGroupMemberExecuteNonQuery.add(System.nanoTime() - start);
return result;
}
@@ -1695,8 +1694,7 @@ public class MetaGroupMember extends RaftMember {
entry.getValue().getHeader());
result = getLocalDataMember(entry.getValue().getHeader())
.executeNonQuery(entry.getKey());
- Timer.metaGroupMemberExecuteNonQueryInLocalGroupMS.addAndGet(System.nanoTime() - start);
- Timer.metaGroupMemberExecuteNonQueryInLocalGroupCounter.incrementAndGet();
+ Timer.metaGroupMemberExecuteNonQueryInLocalGroup.add(System.nanoTime() - start);
} else {
// forward the query to the group that should handle it
@@ -1704,8 +1702,7 @@ public class MetaGroupMember extends RaftMember {
logger.debug("Forward {} to a remote group of {}", entry.getKey(),
entry.getValue().getHeader());
result = forwardPlan(entry.getKey(), entry.getValue());
- Timer.metaGroupMemberExecuteNonQueryInRemoteGroupMS.addAndGet(System.nanoTime() - start);
- Timer.metaGroupMemberExecuteNonQueryInRemoteGroupCounter.incrementAndGet();
+ Timer.metaGroupMemberExecuteNonQueryInRemoteGroup.add(System.nanoTime() - start);
}
return result;
}
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/server/member/RaftMember.java b/cluster/src/main/java/org/apache/iotdb/cluster/server/member/RaftMember.java
index 9f2dadc..06bd657 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/server/member/RaftMember.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/server/member/RaftMember.java
@@ -455,15 +455,13 @@ public abstract class RaftMember {
long start = System.nanoTime();
long lastLogIndex = logManager.getLastLogIndex();
if (lastLogIndex < prevLogIndex) {
- Timer.indexDiffCounter.incrementAndGet();
- Timer.indexDiff.addAndGet(prevLogIndex - lastLogIndex);
+ Timer.indexDiff.add(prevLogIndex - lastLogIndex);
if (!waitForPrevLog(prevLogIndex)) {
return Response.RESPONSE_LOG_MISMATCH;
}
}
- Timer.rafTMemberReceiverWaitForPrevLogMS.addAndGet(System.nanoTime() - start);
- Timer.rafTMemberReceiverWaitForPrevLogCounter.incrementAndGet();
+ Timer.rafTMemberReceiverWaitForPrevLog.add(System.nanoTime() - start);
start = System.nanoTime();
synchronized (logManager) {
@@ -476,8 +474,7 @@ public abstract class RaftMember {
resp = Response.RESPONSE_LOG_MISMATCH;
}
}
- Timer.rafTMemberMayBeAppendMS.addAndGet(System.nanoTime() - start);
- Timer.rafTMemberMayBeAppendCounter.incrementAndGet();
+ Timer.rafTMemberMayBeAppend.add(System.nanoTime() - start);
return resp;
}
@@ -517,8 +514,7 @@ public abstract class RaftMember {
long start1 = System.nanoTime();
Log log = LogParser.getINSTANCE().parse(request.entry);
- Timer.raftMemberLogParseMS.addAndGet(System.nanoTime() - start1);
- Timer.raftMemberLogParseCounter.incrementAndGet();
+ Timer.raftMemberLogParse.add(System.nanoTime() - start1);
// if (log instanceof PhysicalPlanLog) {
// PhysicalPlanLog physicalPlanLog = (PhysicalPlanLog) log;
@@ -532,8 +528,7 @@ public abstract class RaftMember {
log);
logger.debug("{} AppendEntryRequest of {} completed", name, log);
- Timer.raftFollowerAppendEntryMS.addAndGet(System.nanoTime() - start);
- Timer.raftFollowerAppendEntryCounter.incrementAndGet();
+ Timer.raftFollowerAppendEntry.add(System.nanoTime() - start);
return result;
}
@@ -703,8 +698,7 @@ public abstract class RaftMember {
}
}
}
- Timer.raftMemberVoteCounterMS.addAndGet(System.nanoTime() - start);
- Timer.raftMemberVoteCounterCounter.incrementAndGet();
+ Timer.raftMemberVoteCounter.add(System.nanoTime() - start);
// some node has a larger term than the local node, this node is no longer a valid leader
if (leaderShipStale.get()) {
@@ -735,8 +729,7 @@ public abstract class RaftMember {
logger.warn("{}: node {} timed out when appending {}", name, node, log);
return;
}
- Timer.raftMemberWaitForPrevLogMS.addAndGet(System.nanoTime() - start);
- Timer.raftMemberWaitForPrevLogCounter.incrementAndGet();
+ Timer.raftMemberWaitForPrevLog.add(System.nanoTime() - start);
if (character != NodeCharacter.LEADER) {
return;
@@ -748,8 +741,7 @@ public abstract class RaftMember {
} else {
sendLogSync(log, voteCounter, node, leaderShipStale, newLeaderTerm, request, peer);
}
- Timer.raftMemberSendLogAyncMS.addAndGet(System.nanoTime() - start);
- Timer.raftMemberSendLogAyncCounter.incrementAndGet();
+ Timer.raftMemberSendLogAync.add(System.nanoTime() - start);
}
@@ -1295,8 +1287,7 @@ public abstract class RaftMember {
log.setPlan(plan);
logManager.append(log);
}
- Timer.raftMemberAppendLogMS.addAndGet(System.nanoTime() - start);
- Timer.raftMemberAppendLogCounter.incrementAndGet();
+ Timer.raftMemberAppendLog.add(System.nanoTime() - start);
try {
if (appendLogInGroup(log)) {
@@ -1328,8 +1319,7 @@ public abstract class RaftMember {
sendLogRequest = buildSendLogRequest(log);
getLogDispatcher().offer(sendLogRequest);
}
- Timer.raftMemberOfferLogMS.addAndGet(System.nanoTime() - start);
- Timer.raftMemberOfferLogCounter.incrementAndGet();
+ Timer.raftMemberOfferLog.add(System.nanoTime() - start);
try {
@@ -1337,16 +1327,14 @@ public abstract class RaftMember {
AppendLogResult appendLogResult = waitAppendResult(sendLogRequest.voteCounter,
sendLogRequest.leaderShipStale,
sendLogRequest.newLeaderTerm);
- Timer.raftMemberAppendLogResultMS.addAndGet(System.nanoTime() - start);
- Timer.raftMemberAppendLogResultCounter.incrementAndGet();
+ Timer.raftMemberAppendLogResult.add(System.nanoTime() - start);
switch (appendLogResult) {
case OK:
logger.debug("{}: log {} is accepted", name, log);
start = System.nanoTime();
commitLog(log);
- Timer.raftMemberCommitLogResultMS.addAndGet(System.nanoTime() - start);
- Timer.raftMemberCommitLogResultCounter.incrementAndGet();
+ Timer.raftMemberCommitLogResult.add(System.nanoTime() - start);
return StatusUtils.OK;
case TIME_OUT:
logger.debug("{}: log {} timed out, retrying...", name, log);
@@ -1434,15 +1422,13 @@ public abstract class RaftMember {
long start = System.nanoTime();
logger.debug("{}: Send log {} to other nodes, retry times: {}", name, log, retryTime);
AppendLogResult result = sendLogToFollowers(log, allNodes.size() / 2);
- Timer.raftMemberSendLogToFollowerMS.addAndGet(System.nanoTime() - start);
- Timer.raftMemberSendLogToFollowerCounter.incrementAndGet();
+ Timer.raftMemberSendLogToFollower.add(System.nanoTime() - start);
switch (result) {
case OK:
start = System.nanoTime();
logger.debug("{}: log {} is accepted", name, log);
commitLog(log);
- Timer.raftMemberCommitLogMS.addAndGet(System.nanoTime() - start);
- Timer.raftMemberCommitLogCounter.incrementAndGet();
+ Timer.raftMemberCommitLog.add(System.nanoTime() - start);
return true;
case TIME_OUT:
logger.debug("{}: log {} timed out, retrying...", name, log);