Skip to content

Commit abfa3be

Browse files
authored
HDDS-12442. Add latency metrics for OM deletion services (apache#7986)
1 parent 14db15c commit abfa3be

File tree

3 files changed

+32
-3
lines changed

3 files changed

+32
-3
lines changed

hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMPerformanceMetrics.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.apache.hadoop.metrics2.annotation.Metric;
2222
import org.apache.hadoop.metrics2.lib.DefaultMetricsSystem;
2323
import org.apache.hadoop.metrics2.lib.MutableGaugeFloat;
24+
import org.apache.hadoop.metrics2.lib.MutableGaugeLong;
2425
import org.apache.hadoop.metrics2.lib.MutableRate;
2526

2627
/**
@@ -151,6 +152,15 @@ public static void unregister() {
151152
@Metric(about = "ACLs check in getObjectTagging")
152153
private MutableRate getObjectTaggingAclCheckLatencyNs;
153154

155+
@Metric(about = "Latency of each iteration of DirectoryDeletingService in ms")
156+
private MutableGaugeLong directoryDeletingServiceLatencyMs;
157+
158+
@Metric(about = "Latency of each iteration of KeyDeletingService in ms")
159+
private MutableGaugeLong keyDeletingServiceLatencyMs;
160+
161+
@Metric(about = "Latency of each iteration of OpenKeyCleanupService in ms")
162+
private MutableGaugeLong openKeyCleanupServiceLatencyMs;
163+
154164
public void addLookupLatency(long latencyInNs) {
155165
lookupLatencyNs.add(latencyInNs);
156166
}
@@ -299,4 +309,16 @@ public MutableRate getGetObjectTaggingAclCheckLatencyNs() {
299309
public void addGetObjectTaggingLatencyNs(long latencyInNs) {
300310
getObjectTaggingAclCheckLatencyNs.add(latencyInNs);
301311
}
312+
313+
public void setDirectoryDeletingServiceLatencyMs(long latencyInMs) {
314+
directoryDeletingServiceLatencyMs.set(latencyInMs);
315+
}
316+
317+
public void setKeyDeletingServiceLatencyMs(long latencyInMs) {
318+
keyDeletingServiceLatencyMs.set(latencyInMs);
319+
}
320+
321+
public void setOpenKeyCleanupServiceLatencyMs(long latencyInMs) {
322+
openKeyCleanupServiceLatencyMs.set(latencyInMs);
323+
}
302324
}

hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/service/AbstractKeyDeletingService.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
import org.apache.hadoop.ozone.om.KeyManager;
4848
import org.apache.hadoop.ozone.om.OMConfigKeys;
4949
import org.apache.hadoop.ozone.om.OMMetadataManager;
50+
import org.apache.hadoop.ozone.om.OMPerformanceMetrics;
5051
import org.apache.hadoop.ozone.om.OzoneManager;
5152
import org.apache.hadoop.ozone.om.helpers.OmBucketInfo;
5253
import org.apache.hadoop.ozone.om.helpers.OmKeyInfo;
@@ -73,6 +74,7 @@ public abstract class AbstractKeyDeletingService extends BackgroundService
7374

7475
private final OzoneManager ozoneManager;
7576
private final DeletingServiceMetrics metrics;
77+
private final OMPerformanceMetrics perfMetrics;
7678
private final ScmBlockLocationProtocol scmClient;
7779
private final ClientId clientId = ClientId.randomId();
7880
private final AtomicLong deletedDirsCount;
@@ -94,6 +96,7 @@ public AbstractKeyDeletingService(String serviceName, long interval,
9496
this.movedFilesCount = new AtomicLong(0);
9597
this.runCount = new AtomicLong(0);
9698
this.metrics = ozoneManager.getDeletionMetrics();
99+
this.perfMetrics = ozoneManager.getPerfMetrics();
97100
}
98101

99102
protected int processKeyDeletes(List<BlockGroup> keyBlocksList,
@@ -119,14 +122,15 @@ protected int processKeyDeletes(List<BlockGroup> keyBlocksList,
119122
LOG.info("{} BlockGroup deletion are acked by SCM in {} ms",
120123
keyBlocksList.size(), Time.monotonicNow() - startTime);
121124
if (blockDeletionResults != null) {
122-
startTime = Time.monotonicNow();
125+
long purgeStartTime = Time.monotonicNow();
123126
delCount = submitPurgeKeysRequest(blockDeletionResults,
124127
keysToModify, snapTableKey, expectedPreviousSnapshotId);
125128
int limit = ozoneManager.getConfiguration().getInt(OMConfigKeys.OZONE_KEY_DELETING_LIMIT_PER_TASK,
126129
OMConfigKeys.OZONE_KEY_DELETING_LIMIT_PER_TASK_DEFAULT);
127130
LOG.info("Blocks for {} (out of {}) keys are deleted from DB in {} ms. Limit per task is {}.",
128-
delCount, blockDeletionResults.size(), Time.monotonicNow() - startTime, limit);
131+
delCount, blockDeletionResults.size(), Time.monotonicNow() - purgeStartTime, limit);
129132
}
133+
perfMetrics.setKeyDeletingServiceLatencyMs(Time.monotonicNow() - startTime);
130134
return delCount;
131135
}
132136

@@ -416,6 +420,7 @@ public void optimizeDirDeletesAndSubmitRequest(
416420
dirNum, subdirDelNum, subFileNum, (subDirNum - subdirDelNum),
417421
timeTakenInIteration, rnCnt);
418422
metrics.incrementDirectoryDeletionTotalMetrics(dirNum + subdirDelNum, subDirNum, subFileNum);
423+
perfMetrics.setDirectoryDeletingServiceLatencyMs(timeTakenInIteration);
419424
}
420425
}
421426

hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/service/OpenKeyCleanupService.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,9 +237,11 @@ public BackgroundTaskResult call() throws Exception {
237237
});
238238
}
239239

240+
long timeTaken = Time.monotonicNow() - startTime;
240241
LOG.info("Number of expired open keys submitted for deletion: {},"
241242
+ " for commit: {}, cleanupLimit: {}, elapsed time: {}ms",
242-
numOpenKeys, numHsyncKeys, cleanupLimitPerTask, Time.monotonicNow() - startTime);
243+
numOpenKeys, numHsyncKeys, cleanupLimitPerTask, timeTaken);
244+
ozoneManager.getPerfMetrics().setOpenKeyCleanupServiceLatencyMs(timeTaken);
243245
final int numKeys = numOpenKeys + numHsyncKeys;
244246
submittedOpenKeyCount.addAndGet(numKeys);
245247
return () -> numKeys;

0 commit comments

Comments
 (0)