Skip to content

Commit

Permalink
koordlet: export mid resource metrics (#1874)
Browse files Browse the repository at this point in the history
Signed-off-by: j4ckstraw <j4ckstraw@foxmail.com>
  • Loading branch information
j4ckstraw committed Jan 30, 2024
1 parent 83a18bf commit b547abb
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 0 deletions.
42 changes: 42 additions & 0 deletions pkg/koordlet/metrics/metrics_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -163,12 +163,16 @@ func TestResourceSummaryCollectors(t *testing.T) {
corev1.ResourceMemory: resource.MustParse("200Gi"),
apiext.BatchCPU: resource.MustParse("50000"),
apiext.BatchMemory: resource.MustParse("80Gi"),
apiext.MidCPU: resource.MustParse("50000"),
apiext.MidMemory: resource.MustParse("80Gi"),
},
Capacity: corev1.ResourceList{
corev1.ResourceCPU: resource.MustParse("100"),
corev1.ResourceMemory: resource.MustParse("200Gi"),
apiext.BatchCPU: resource.MustParse("50000"),
apiext.BatchMemory: resource.MustParse("80Gi"),
apiext.MidCPU: resource.MustParse("50000"),
apiext.MidMemory: resource.MustParse("80Gi"),
},
},
}
Expand Down Expand Up @@ -236,19 +240,57 @@ func TestResourceSummaryCollectors(t *testing.T) {
},
},
}
testingMidPod := &corev1.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "test_mid_pod",
Namespace: "test_mid_pod_namespace",
UID: "mid01",
},
Spec: corev1.PodSpec{
Containers: []corev1.Container{
{
Name: "test_mid_container",
Resources: corev1.ResourceRequirements{
Requests: corev1.ResourceList{
apiext.MidCPU: resource.MustParse("1000"),
apiext.MidMemory: resource.MustParse("2Gi"),
},
Limits: corev1.ResourceList{
apiext.MidCPU: resource.MustParse("1000"),
apiext.MidMemory: resource.MustParse("2Gi"),
},
},
},
},
},
Status: corev1.PodStatus{
ContainerStatuses: []corev1.ContainerStatus{
{
Name: "test_mid_container",
ContainerID: "containerd://midxxx",
},
},
},
}

t.Run("test not panic", func(t *testing.T) {
Register(testingNode)
defer Register(nil)

RecordNodeResourceAllocatable(string(apiext.BatchCPU), UnitInteger, float64(util.QuantityPtr(testingNode.Status.Allocatable[apiext.BatchCPU]).Value()))
RecordNodeResourceAllocatable(string(apiext.BatchMemory), UnitByte, float64(util.QuantityPtr(testingNode.Status.Allocatable[apiext.BatchMemory]).Value()))
RecordNodeResourceAllocatable(string(apiext.MidCPU), UnitInteger, float64(util.QuantityPtr(testingNode.Status.Allocatable[apiext.MidCPU]).Value()))
RecordNodeResourceAllocatable(string(apiext.MidMemory), UnitByte, float64(util.QuantityPtr(testingNode.Status.Allocatable[apiext.MidMemory]).Value()))
RecordContainerResourceRequests(string(corev1.ResourceCPU), UnitCore, &testingPod.Status.ContainerStatuses[0], testingPod, float64(testingPod.Spec.Containers[0].Resources.Requests.Cpu().Value()))
RecordContainerResourceRequests(string(corev1.ResourceMemory), UnitByte, &testingPod.Status.ContainerStatuses[0], testingPod, float64(testingPod.Spec.Containers[0].Resources.Requests.Memory().Value()))
RecordContainerResourceRequests(string(apiext.BatchCPU), UnitInteger, &testingBatchPod.Status.ContainerStatuses[0], testingBatchPod, float64(util.QuantityPtr(testingBatchPod.Spec.Containers[0].Resources.Requests[apiext.BatchCPU]).Value()))
RecordContainerResourceRequests(string(apiext.BatchMemory), UnitByte, &testingBatchPod.Status.ContainerStatuses[0], testingBatchPod, float64(util.QuantityPtr(testingBatchPod.Spec.Containers[0].Resources.Requests[apiext.BatchMemory]).Value()))
RecordContainerResourceRequests(string(apiext.MidCPU), UnitInteger, &testingMidPod.Status.ContainerStatuses[0], testingMidPod, float64(util.QuantityPtr(testingMidPod.Spec.Containers[0].Resources.Requests[apiext.MidCPU]).Value()))
RecordContainerResourceRequests(string(apiext.MidMemory), UnitByte, &testingMidPod.Status.ContainerStatuses[0], testingMidPod, float64(util.QuantityPtr(testingMidPod.Spec.Containers[0].Resources.Requests[apiext.MidMemory]).Value()))
RecordContainerResourceLimits(string(apiext.BatchCPU), UnitInteger, &testingBatchPod.Status.ContainerStatuses[0], testingBatchPod, float64(util.QuantityPtr(testingBatchPod.Spec.Containers[0].Resources.Limits[apiext.BatchCPU]).Value()))
RecordContainerResourceLimits(string(apiext.BatchMemory), UnitByte, &testingBatchPod.Status.ContainerStatuses[0], testingBatchPod, float64(util.QuantityPtr(testingBatchPod.Spec.Containers[0].Resources.Limits[apiext.BatchMemory]).Value()))
RecordContainerResourceLimits(string(apiext.MidCPU), UnitInteger, &testingMidPod.Status.ContainerStatuses[0], testingMidPod, float64(util.QuantityPtr(testingMidPod.Spec.Containers[0].Resources.Limits[apiext.MidCPU]).Value()))
RecordContainerResourceLimits(string(apiext.MidMemory), UnitByte, &testingMidPod.Status.ContainerStatuses[0], testingMidPod, float64(util.QuantityPtr(testingMidPod.Spec.Containers[0].Resources.Limits[apiext.MidMemory]).Value()))

ResetContainerResourceRequests()
ResetContainerResourceLimits()
Expand Down
6 changes: 6 additions & 0 deletions pkg/koordlet/statesinformer/impl/states_node.go
Original file line number Diff line number Diff line change
Expand Up @@ -206,4 +206,10 @@ func recordNodeResources(node *corev1.Node) {
metrics.RecordNodeResourceAllocatable(string(apiext.BatchCPU), metrics.UnitInteger, float64(batchCPU.Value()))
batchMemory := node.Status.Allocatable.Name(apiext.BatchMemory, resource.BinarySI)
metrics.RecordNodeResourceAllocatable(string(apiext.BatchMemory), metrics.UnitByte, float64(batchMemory.Value()))

// record node allocatable of MidCPU & MidMemory
midCPU := node.Status.Allocatable.Name(apiext.MidCPU, resource.DecimalSI)
metrics.RecordNodeResourceAllocatable(string(apiext.MidCPU), metrics.UnitInteger, float64(midCPU.Value()))
midMemory := node.Status.Allocatable.Name(apiext.MidMemory, resource.BinarySI)
metrics.RecordNodeResourceAllocatable(string(apiext.MidMemory), metrics.UnitByte, float64(midMemory.Value()))
}
13 changes: 13 additions & 0 deletions pkg/koordlet/statesinformer/impl/states_pods.go
Original file line number Diff line number Diff line change
Expand Up @@ -291,4 +291,17 @@ func recordContainerResourceMetrics(container *corev1.Container, containerStatus
if q, ok := container.Resources.Limits[apiext.BatchMemory]; ok {
metrics.RecordContainerResourceLimits(string(apiext.BatchMemory), metrics.UnitByte, containerStatus, pod, float64(util.QuantityPtr(q).Value()))
}
// record pod requests/limits of MidCPU & MidMemory
if q, ok := container.Resources.Requests[apiext.MidCPU]; ok {
metrics.RecordContainerResourceRequests(string(apiext.MidCPU), metrics.UnitInteger, containerStatus, pod, float64(util.QuantityPtr(q).Value()))
}
if q, ok := container.Resources.Requests[apiext.MidMemory]; ok {
metrics.RecordContainerResourceRequests(string(apiext.MidMemory), metrics.UnitInteger, containerStatus, pod, float64(util.QuantityPtr(q).Value()))
}
if q, ok := container.Resources.Limits[apiext.MidCPU]; ok {
metrics.RecordContainerResourceLimits(string(apiext.MidCPU), metrics.UnitByte, containerStatus, pod, float64(util.QuantityPtr(q).Value()))
}
if q, ok := container.Resources.Limits[apiext.MidMemory]; ok {
metrics.RecordContainerResourceLimits(string(apiext.MidMemory), metrics.UnitByte, containerStatus, pod, float64(util.QuantityPtr(q).Value()))
}
}

0 comments on commit b547abb

Please sign in to comment.