This is an automated email from the ASF dual-hosted git repository.
siyao pushed a commit to branch HDDS-7593
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/HDDS-7593 by this push:
new f3b90fb6df HDDS-11185. Fix ContainerOpsLatencies metrics (#6947)
f3b90fb6df is described below
commit f3b90fb6dfc035e326bd39a289ff0696849b5989
Author: Duong Nguyen <[email protected]>
AuthorDate: Tue Jul 16 16:24:18 2024 -0700
HDDS-11185. Fix ContainerOpsLatencies metrics (#6947)
---
.../ozone/container/common/helpers/ContainerMetrics.java | 11 +++++------
.../hadoop/ozone/container/common/impl/HddsDispatcher.java | 12 ++++++------
.../hadoop/ozone/container/keyvalue/KeyValueHandler.java | 3 +++
.../ozone/container/keyvalue/impl/StreamDataChannelBase.java | 4 ++--
.../src/main/java/org/apache/ozone/test/MetricsAsserts.java | 2 +-
5 files changed, 17 insertions(+), 15 deletions(-)
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/helpers/ContainerMetrics.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/helpers/ContainerMetrics.java
index 4efa935bc8..883f6cd851 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/helpers/ContainerMetrics.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/helpers/ContainerMetrics.java
@@ -78,13 +78,13 @@ public class ContainerMetrics {
"num" + type, "number of " + type + " ops", (long) 0));
opsBytesArray.put(type, registry.newCounter(
"bytes" + type, "bytes used by " + type + "op", (long) 0));
- opsLatency.put(type, registry.newRate("latency" + type, type + " op"));
+ opsLatency.put(type, registry.newRate("latencyNs" + type, type + " op"));
for (int j = 0; j < len; j++) {
int interval = intervals[j];
String quantileName = type + "Nanos" + interval + "s";
latQuantiles[j] = registry.newQuantiles(quantileName,
- "latency of Container ops", "ops", "latency", interval);
+ "latency of Container ops", "ops", "latencyNs", interval);
}
opsLatQuantiles.put(type, latQuantiles);
}
@@ -110,11 +110,10 @@ public class ContainerMetrics {
numOpsArray.get(type).incr();
}
- public void incContainerOpsLatencies(ContainerProtos.Type type,
- long latencyMillis) {
- opsLatency.get(type).add(latencyMillis);
+ public void incContainerOpsLatencies(ContainerProtos.Type type, long
latencyNs) {
+ opsLatency.get(type).add(latencyNs);
for (MutableQuantiles q: opsLatQuantiles.get(type)) {
- q.add(latencyMillis);
+ q.add(latencyNs);
}
}
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/impl/HddsDispatcher.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/impl/HddsDispatcher.java
index 89cedf8374..740dfa4e41 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/impl/HddsDispatcher.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/impl/HddsDispatcher.java
@@ -214,7 +214,7 @@ public class HddsDispatcher implements ContainerDispatcher,
Auditor {
ContainerType containerType;
ContainerCommandResponseProto responseProto = null;
- long startTime = Time.monotonicNow();
+ long startTime = Time.monotonicNowNanos();
Type cmdType = msg.getCmdType();
long containerID = msg.getContainerID();
metrics.incContainerOpsMetrics(cmdType);
@@ -290,7 +290,7 @@ public class HddsDispatcher implements ContainerDispatcher,
Auditor {
responseProto = createContainer(msg);
metrics.incContainerOpsMetrics(Type.CreateContainer);
metrics.incContainerOpsLatencies(Type.CreateContainer,
- Time.monotonicNow() - startTime);
+ Time.monotonicNowNanos() - startTime);
if (responseProto.getResult() != Result.SUCCESS) {
StorageContainerException sce = new StorageContainerException(
@@ -343,9 +343,9 @@ public class HddsDispatcher implements ContainerDispatcher,
Auditor {
}
perf.appendPreOpLatencyMs(Time.monotonicNow() - startTime);
responseProto = handler.handle(msg, container, dispatcherContext);
- long oPLatencyMS = Time.monotonicNow() - startTime;
+ long opLatencyNs = Time.monotonicNowNanos() - startTime;
if (responseProto != null) {
- metrics.incContainerOpsLatencies(cmdType, oPLatencyMS);
+ metrics.incContainerOpsLatencies(cmdType, opLatencyNs);
// If the request is of Write Type and the container operation
// is unsuccessful, it implies the applyTransaction on the container
@@ -418,8 +418,8 @@ public class HddsDispatcher implements ContainerDispatcher,
Auditor {
audit(action, eventType, msg, AuditEventStatus.FAILURE,
new Exception(responseProto.getMessage()));
}
- perf.appendOpLatencyMs(oPLatencyMS);
- performanceAudit(action, msg, perf, oPLatencyMS);
+ perf.appendOpLatencyMs(opLatencyNs);
+ performanceAudit(action, msg, perf, opLatencyNs);
return responseProto;
} else {
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueHandler.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueHandler.java
index 4f314df19f..c83b93e412 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueHandler.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueHandler.java
@@ -122,6 +122,7 @@ import static
org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos
import static
org.apache.hadoop.ozone.ClientVersion.EC_REPLICA_INDEX_REQUIRED_IN_BLOCK_REQUEST;
import static
org.apache.hadoop.ozone.container.common.interfaces.Container.ScanResult;
+import org.apache.hadoop.util.Time;
import org.apache.ratis.statemachine.StateMachine;
import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
import org.slf4j.Logger;
@@ -882,6 +883,7 @@ public class KeyValueHandler extends Handler {
final boolean isCommit = dispatcherContext.getStage().isCommit();
if (isCommit && writeChunk.hasBlock()) {
+ long startTime = Time.monotonicNowNanos();
metrics.incContainerOpsMetrics(Type.PutBlock);
BlockData blockData = BlockData.getFromProtoBuf(
writeChunk.getBlock().getBlockData());
@@ -898,6 +900,7 @@ public class KeyValueHandler extends Handler {
blockDataProto = blockData.getProtoBufMessage();
final long numBytes = blockDataProto.getSerializedSize();
metrics.incContainerBytesStats(Type.PutBlock, numBytes);
+ metrics.incContainerOpsLatencies(Type.PutBlock,
Time.monotonicNowNanos() - startTime);
}
// We should increment stats after writeChunk
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/impl/StreamDataChannelBase.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/impl/StreamDataChannelBase.java
index a88f452167..8df856d4b9 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/impl/StreamDataChannelBase.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/impl/StreamDataChannelBase.java
@@ -130,11 +130,11 @@ abstract class StreamDataChannelBase
final int writeFileChannel(ByteBuffer src) throws IOException {
try {
- final long startTime = Time.monotonicNow();
+ final long startTime = Time.monotonicNowNanos();
final int writeBytes = getChannel().write(src);
metrics.incContainerBytesStats(getType(), writeBytes);
containerData.updateWriteStats(writeBytes, false);
- metrics.incContainerOpsLatencies(getType(), Time.monotonicNow() -
startTime);
+ metrics.incContainerOpsLatencies(getType(), Time.monotonicNowNanos() -
startTime);
return writeBytes;
} catch (IOException e) {
checkVolume();
diff --git
a/hadoop-hdds/test-utils/src/main/java/org/apache/ozone/test/MetricsAsserts.java
b/hadoop-hdds/test-utils/src/main/java/org/apache/ozone/test/MetricsAsserts.java
index 83cc846516..f2c65d1496 100644
---
a/hadoop-hdds/test-utils/src/main/java/org/apache/ozone/test/MetricsAsserts.java
+++
b/hadoop-hdds/test-utils/src/main/java/org/apache/ozone/test/MetricsAsserts.java
@@ -396,7 +396,7 @@ public final class MetricsAsserts {
*/
public static void assertQuantileGauges(String prefix,
MetricsRecordBuilder rb) {
- assertQuantileGauges(prefix, rb, "Latency");
+ assertQuantileGauges(prefix, rb, "LatencyNs");
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]