Skip to content

Commit 33ff694

Browse files
committed
YARN-10502. Add backlogs metric for CapacityScheduler
1 parent 3d2193c commit 33ff694

File tree

3 files changed

+20
-2
lines changed

3 files changed

+20
-2
lines changed

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacityScheduler.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -676,8 +676,8 @@ public void suspendSchedule() {
676676

677677
static class ResourceCommitterService extends Thread {
678678
private final CapacityScheduler cs;
679-
private BlockingQueue<ResourceCommitRequest<FiCaSchedulerApp, FiCaSchedulerNode>>
680-
backlogs = new LinkedBlockingQueue<>();
679+
private final BlockingQueue<ResourceCommitRequest<FiCaSchedulerApp,
680+
FiCaSchedulerNode>> backlogs = new LinkedBlockingQueue<>();
681681

682682
public ResourceCommitterService(CapacityScheduler cs) {
683683
this.cs = cs;
@@ -690,6 +690,7 @@ public void run() {
690690
try {
691691
ResourceCommitRequest<FiCaSchedulerApp, FiCaSchedulerNode> request =
692692
backlogs.take();
693+
CapacitySchedulerMetrics.getMetrics().decrBacklogs();
693694
cs.writeLock.lock();
694695
try {
695696
cs.tryCommit(cs.getClusterResource(), request, true);
@@ -708,6 +709,7 @@ public void run() {
708709
public void addNewCommitRequest(
709710
ResourceCommitRequest<FiCaSchedulerApp, FiCaSchedulerNode> proposal) {
710711
backlogs.add(proposal);
712+
CapacitySchedulerMetrics.getMetrics().incrBacklogs();
711713
}
712714

713715
public int getPendingBacklogs() {

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacitySchedulerMetrics.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
package org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity;
2020

21+
import org.apache.hadoop.metrics2.lib.MutableGaugeLong;
2122
import org.apache.hadoop.thirdparty.com.google.common.annotations.VisibleForTesting;
2223
import org.apache.hadoop.classification.InterfaceAudience;
2324
import org.apache.hadoop.metrics2.MetricsInfo;
@@ -47,6 +48,7 @@ public class CapacitySchedulerMetrics {
4748
"Metrics for the Yarn Capacity Scheduler");
4849

4950
@Metric("Scheduler allocate containers") MutableRate allocate;
51+
@Metric("Scheduler commit backlogs") MutableGaugeLong backlogs;
5052
@Metric("Scheduler commit success") MutableRate commitSuccess;
5153
@Metric("Scheduler commit failure") MutableRate commitFailure;
5254
@Metric("Scheduler node update") MutableRate nodeUpdate;
@@ -93,6 +95,14 @@ public void addAllocate(long latency) {
9395
this.allocate.add(latency);
9496
}
9597

98+
public void incrBacklogs() {
99+
this.backlogs.incr();
100+
}
101+
102+
public void decrBacklogs() {
103+
this.backlogs.decr();
104+
}
105+
96106
public void addCommitSuccess(long latency) {
97107
this.commitSuccess.add(latency);
98108
}
@@ -128,4 +138,9 @@ public void addSchedulerNodeHBInterval(long heartbeatInterval) {
128138
public long getNumOfSchedulerNodeHBInterval() {
129139
return this.schedulerNodeHBInterval.getEstimator().getCount();
130140
}
141+
142+
@VisibleForTesting
143+
public long getSizeOfBacklogs() {
144+
return backlogs.value();
145+
}
131146
}

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestCapacitySchedulerMetrics.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ public RMNodeLabelsManager createNodeLabelManager() {
7979
}
8080

8181
Assert.assertEquals(0, csMetrics.getNumOfAllocates());
82+
Assert.assertEquals(0, csMetrics.getSizeOfBacklogs());
8283
Assert.assertEquals(0, csMetrics.getNumOfCommitSuccess());
8384

8485
RMApp rmApp = MockRMAppSubmitter.submit(rm,

0 commit comments

Comments
 (0)