You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@yunikorn.apache.org by ma...@apache.org on 2023/10/03 11:32:57 UTC
[yunikorn-core] branch master updated: [YUNIKORN-1994] fix release containers metrix in queue (#665)
This is an automated email from the ASF dual-hosted git repository.
mani pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/yunikorn-core.git
The following commit(s) were added to refs/heads/master by this push:
new 2e63209b [YUNIKORN-1994] fix release containers metrix in queue (#665)
2e63209b is described below
commit 2e63209b5e6464cb15ec0e2ab96d053aedad6945
Author: PoAn Yang <pa...@apache.org>
AuthorDate: Tue Oct 3 17:02:45 2023 +0530
[YUNIKORN-1994] fix release containers metrix in queue (#665)
Closes: #665
Signed-off-by: Manikandan R <ma...@gmail.com>
---
pkg/metrics/init.go | 1 +
pkg/metrics/queue.go | 4 ++++
pkg/metrics/queue_test.go | 8 ++++++++
pkg/scheduler/partition.go | 6 ++----
4 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/pkg/metrics/init.go b/pkg/metrics/init.go
index 341bb230..e7cdeb56 100644
--- a/pkg/metrics/init.go
+++ b/pkg/metrics/init.go
@@ -54,6 +54,7 @@ type CoreQueueMetrics interface {
IncQueueApplicationsCompleted()
IncAllocatedContainer()
IncReleasedContainer()
+ AddReleasedContainers(value int)
SetQueueGuaranteedResourceMetrics(resourceName string, value float64)
SetQueueMaxResourceMetrics(resourceName string, value float64)
SetQueueAllocatedResourceMetrics(resourceName string, value float64)
diff --git a/pkg/metrics/queue.go b/pkg/metrics/queue.go
index 3d55eb0b..a4030d81 100644
--- a/pkg/metrics/queue.go
+++ b/pkg/metrics/queue.go
@@ -108,6 +108,10 @@ func (m *QueueMetrics) IncReleasedContainer() {
m.appMetrics.With(prometheus.Labels{"state": "released"}).Inc()
}
+func (m *QueueMetrics) AddReleasedContainers(value int) {
+ m.appMetrics.With(prometheus.Labels{"state": "released"}).Add(float64(value))
+}
+
func (m *QueueMetrics) SetQueueGuaranteedResourceMetrics(resourceName string, value float64) {
m.ResourceMetrics.With(prometheus.Labels{"state": "guaranteed", "resource": resourceName}).Set(value)
}
diff --git a/pkg/metrics/queue_test.go b/pkg/metrics/queue_test.go
index 7ede358e..ae17ed17 100644
--- a/pkg/metrics/queue_test.go
+++ b/pkg/metrics/queue_test.go
@@ -86,6 +86,14 @@ func TestReleasedContainers(t *testing.T) {
verifyAppMetrics(t, "released")
}
+func TestAddReleasedContainers(t *testing.T) {
+ cqm = getQueueMetrics()
+ defer unregisterQueueMetrics(t)
+
+ cqm.AddReleasedContainers(1)
+ verifyAppMetrics(t, "released")
+}
+
func TestQueueGuaranteedResourceMetrics(t *testing.T) {
cqm = getQueueMetrics()
defer unregisterQueueMetrics(t)
diff --git a/pkg/scheduler/partition.go b/pkg/scheduler/partition.go
index f4bde125..f08558d1 100644
--- a/pkg/scheduler/partition.go
+++ b/pkg/scheduler/partition.go
@@ -768,8 +768,6 @@ func (pc *PartitionContext) removeNodeAllocations(node *objects.Node) ([]*object
log.Log(log.SchedPartition).Warn("failed to release resources from queue",
zap.String("appID", alloc.GetApplicationID()),
zap.Error(err))
- } else {
- metrics.GetQueueMetrics(queue.GetQueuePath()).IncReleasedContainer()
}
// remove preempted resources
if alloc.IsPreempted() {
@@ -781,6 +779,7 @@ func (pc *PartitionContext) removeNodeAllocations(node *objects.Node) ([]*object
// the allocation is removed so add it to the list that we return
released = append(released, alloc)
+ metrics.GetQueueMetrics(queue.GetQueuePath()).IncReleasedContainer()
log.Log(log.SchedPartition).Info("allocation removed from node",
zap.String("nodeID", node.NodeID),
zap.String("allocationId", allocID))
@@ -1356,8 +1355,6 @@ func (pc *PartitionContext) removeAllocation(release *si.AllocationRelease) ([]*
zap.String("appID", appID),
zap.String("allocationId", uuid),
zap.Error(err))
- } else {
- metrics.GetQueueMetrics(queue.GetQueuePath()).IncReleasedContainer()
}
}
if resources.StrictlyGreaterThanZero(totalPreempting) {
@@ -1371,6 +1368,7 @@ func (pc *PartitionContext) removeAllocation(release *si.AllocationRelease) ([]*
}
// track the number of allocations, when we replace the result is no change
pc.updateAllocationCount(-len(released))
+ metrics.GetQueueMetrics(queue.GetQueuePath()).AddReleasedContainers(len(released))
// if the termination type is timeout, we don't notify the shim, because it's
// originated from that side
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@yunikorn.apache.org
For additional commands, e-mail: issues-help@yunikorn.apache.org