From 87c7401eb853678da804ff503e266daeef5ad126 Mon Sep 17 00:00:00 2001 From: Abu Kashem Date: Wed, 13 Oct 2021 10:14:30 -0400 Subject: [PATCH 1/3] apf: include queue sum stats in debug --- .../pkg/util/flowcontrol/apf_controller_debug.go | 13 ++++++++++++- .../apiserver/pkg/util/flowcontrol/debug/dump.go | 7 +++++++ .../util/flowcontrol/fairqueuing/queueset/types.go | 9 ++++++++- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/apf_controller_debug.go b/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/apf_controller_debug.go index 3c2c9fc744d..8d2bc7b36db 100644 --- a/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/apf_controller_debug.go +++ b/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/apf_controller_debug.go @@ -19,6 +19,7 @@ package flowcontrol import ( "fmt" "io" + "k8s.io/apiserver/pkg/util/flowcontrol/debug" "net/http" "strconv" "strings" @@ -103,6 +104,9 @@ func (cfgCtlr *configController) dumpQueues(w http.ResponseWriter, r *http.Reque "PendingRequests", // 3 "ExecutingRequests", // 4 "VirtualStart", // 5 + "InitialSeatsSum", // 6 + "MaxSeatsSum", // 7 + "TotalWorkSum", // 8 } tabPrint(tabWriter, rowForHeaders(columnHeaders)) endLine(tabWriter) @@ -114,6 +118,9 @@ func (cfgCtlr *configController) dumpQueues(w http.ResponseWriter, r *http.Reque "", // 3 "", // 4 "", // 5 + "", // 6 + "", // 7 + "", // 8 )) endLine(tabWriter) continue @@ -126,6 +133,7 @@ func (cfgCtlr *configController) dumpQueues(w http.ResponseWriter, r *http.Reque len(q.Requests), // 3 q.ExecutingRequests, // 4 q.VirtualStart, // 5 + q.QueueSum, // 6, 7, 8 )) endLine(tabWriter) } @@ -229,13 +237,16 @@ func rowForPriorityLevel(plName string, activeQueues int, isIdle, isQuiescing bo ) } -func rowForQueue(plName string, index, waitingRequests, executingRequests int, virtualStart float64) string { +func rowForQueue(plName string, index, waitingRequests, executingRequests int, virtualStart float64, sum debug.QueueSum) string { return row( plName, strconv.Itoa(index), strconv.Itoa(waitingRequests), strconv.Itoa(executingRequests), fmt.Sprintf("%.4f", virtualStart), + strconv.Itoa(sum.InitialSeatsSum), + strconv.Itoa(sum.MaxSeatsSum), + sum.TotalWorkSum, ) } diff --git a/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/debug/dump.go b/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/debug/dump.go index 9d50c3e21a2..3cac2730905 100644 --- a/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/debug/dump.go +++ b/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/debug/dump.go @@ -32,12 +32,19 @@ type QueueSetDump struct { // QueueDump is an instant dump of one queue in a queue-set. type QueueDump struct { + QueueSum QueueSum Requests []RequestDump VirtualStart float64 ExecutingRequests int SeatsInUse int } +type QueueSum struct { + InitialSeatsSum int + MaxSeatsSum int + TotalWorkSum string +} + // RequestDump is an instant dump of one requests pending in the queue. type RequestDump struct { MatchedFlowSchema string diff --git a/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/fairqueuing/queueset/types.go b/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/fairqueuing/queueset/types.go index b2e36f635a8..6c3cf2b1f89 100644 --- a/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/fairqueuing/queueset/types.go +++ b/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/fairqueuing/queueset/types.go @@ -173,12 +173,19 @@ func (q *queue) dump(includeDetails bool) debug.QueueDump { return true }) - // TODO: change QueueDump to include queueSum stats + sum := q.requests.QueueSum() + queueSum := debug.QueueSum{ + InitialSeatsSum: sum.InitialSeatsSum, + MaxSeatsSum: sum.MaxSeatsSum, + TotalWorkSum: sum.TotalWorkSum.String(), + } + return debug.QueueDump{ VirtualStart: q.nextDispatchR.ToFloat(), // TODO: change QueueDump to use SeatSeconds Requests: digest, ExecutingRequests: q.requestsExecuting, SeatsInUse: q.seatsInUse, + QueueSum: queueSum, } } From 3ef5752edf5b3f7076041368b1c1b5396ee534d7 Mon Sep 17 00:00:00 2001 From: Abu Kashem Date: Wed, 13 Oct 2021 10:22:41 -0400 Subject: [PATCH 2/3] apf: change QueueDump to use SeatSeconds --- .../pkg/util/flowcontrol/apf_controller_debug.go | 8 ++++---- .../k8s.io/apiserver/pkg/util/flowcontrol/debug/dump.go | 2 +- .../pkg/util/flowcontrol/fairqueuing/queueset/types.go | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/apf_controller_debug.go b/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/apf_controller_debug.go index 8d2bc7b36db..fbf48e836dd 100644 --- a/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/apf_controller_debug.go +++ b/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/apf_controller_debug.go @@ -103,7 +103,7 @@ func (cfgCtlr *configController) dumpQueues(w http.ResponseWriter, r *http.Reque "Index", // 2 "PendingRequests", // 3 "ExecutingRequests", // 4 - "VirtualStart", // 5 + "NextDispatchR", // 5 "InitialSeatsSum", // 6 "MaxSeatsSum", // 7 "TotalWorkSum", // 8 @@ -132,7 +132,7 @@ func (cfgCtlr *configController) dumpQueues(w http.ResponseWriter, r *http.Reque i, // 2 len(q.Requests), // 3 q.ExecutingRequests, // 4 - q.VirtualStart, // 5 + q.NextDispatchR, // 5 q.QueueSum, // 6, 7, 8 )) endLine(tabWriter) @@ -237,13 +237,13 @@ func rowForPriorityLevel(plName string, activeQueues int, isIdle, isQuiescing bo ) } -func rowForQueue(plName string, index, waitingRequests, executingRequests int, virtualStart float64, sum debug.QueueSum) string { +func rowForQueue(plName string, index, waitingRequests, executingRequests int, nextDispatchR string, sum debug.QueueSum) string { return row( plName, strconv.Itoa(index), strconv.Itoa(waitingRequests), strconv.Itoa(executingRequests), - fmt.Sprintf("%.4f", virtualStart), + nextDispatchR, strconv.Itoa(sum.InitialSeatsSum), strconv.Itoa(sum.MaxSeatsSum), sum.TotalWorkSum, diff --git a/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/debug/dump.go b/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/debug/dump.go index 3cac2730905..ecc5cf5ff03 100644 --- a/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/debug/dump.go +++ b/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/debug/dump.go @@ -34,7 +34,7 @@ type QueueSetDump struct { type QueueDump struct { QueueSum QueueSum Requests []RequestDump - VirtualStart float64 + NextDispatchR string ExecutingRequests int SeatsInUse int } diff --git a/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/fairqueuing/queueset/types.go b/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/fairqueuing/queueset/types.go index 6c3cf2b1f89..26bbe5ebab5 100644 --- a/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/fairqueuing/queueset/types.go +++ b/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/fairqueuing/queueset/types.go @@ -181,7 +181,7 @@ func (q *queue) dump(includeDetails bool) debug.QueueDump { } return debug.QueueDump{ - VirtualStart: q.nextDispatchR.ToFloat(), // TODO: change QueueDump to use SeatSeconds + NextDispatchR: q.nextDispatchR.String(), Requests: digest, ExecutingRequests: q.requestsExecuting, SeatsInUse: q.seatsInUse, From edf657a33a70ff942d9a0695f602bed13e5e9628 Mon Sep 17 00:00:00 2001 From: Abu Kashem Date: Wed, 13 Oct 2021 10:39:37 -0400 Subject: [PATCH 3/3] apf: include seats in use in queue dump --- .../util/flowcontrol/apf_controller_debug.go | 41 ++++++++----------- 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/apf_controller_debug.go b/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/apf_controller_debug.go index fbf48e836dd..ff534236a4f 100644 --- a/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/apf_controller_debug.go +++ b/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/apf_controller_debug.go @@ -19,7 +19,6 @@ package flowcontrol import ( "fmt" "io" - "k8s.io/apiserver/pkg/util/flowcontrol/debug" "net/http" "strconv" "strings" @@ -103,10 +102,11 @@ func (cfgCtlr *configController) dumpQueues(w http.ResponseWriter, r *http.Reque "Index", // 2 "PendingRequests", // 3 "ExecutingRequests", // 4 - "NextDispatchR", // 5 - "InitialSeatsSum", // 6 - "MaxSeatsSum", // 7 - "TotalWorkSum", // 8 + "SeatsInUse", // 5 + "NextDispatchR", // 6 + "InitialSeatsSum", // 7 + "MaxSeatsSum", // 8 + "TotalWorkSum", // 9 } tabPrint(tabWriter, rowForHeaders(columnHeaders)) endLine(tabWriter) @@ -121,19 +121,23 @@ func (cfgCtlr *configController) dumpQueues(w http.ResponseWriter, r *http.Reque "", // 6 "", // 7 "", // 8 + "", // 9 )) endLine(tabWriter) continue } queueSetDigest := plState.queues.Dump(false) for i, q := range queueSetDigest.Queues { - tabPrint(tabWriter, rowForQueue( - plState.pl.Name, // 1 - i, // 2 - len(q.Requests), // 3 - q.ExecutingRequests, // 4 - q.NextDispatchR, // 5 - q.QueueSum, // 6, 7, 8 + tabPrint(tabWriter, row( + plState.pl.Name, // 1 - "PriorityLevelName" + strconv.Itoa(i), // 2 - "Index" + strconv.Itoa(len(q.Requests)), // 3 - "PendingRequests" + strconv.Itoa(q.ExecutingRequests), // 4 - "ExecutingRequests" + strconv.Itoa(q.SeatsInUse), // 5 - "SeatsInUse" + q.NextDispatchR, // 6 - "NextDispatchR" + strconv.Itoa(q.QueueSum.InitialSeatsSum), // 7 - "InitialSeatsSum" + strconv.Itoa(q.QueueSum.MaxSeatsSum), // 8 - "MaxSeatsSum" + q.QueueSum.TotalWorkSum, // 9 - "TotalWorkSum" )) endLine(tabWriter) } @@ -237,19 +241,6 @@ func rowForPriorityLevel(plName string, activeQueues int, isIdle, isQuiescing bo ) } -func rowForQueue(plName string, index, waitingRequests, executingRequests int, nextDispatchR string, sum debug.QueueSum) string { - return row( - plName, - strconv.Itoa(index), - strconv.Itoa(waitingRequests), - strconv.Itoa(executingRequests), - nextDispatchR, - strconv.Itoa(sum.InitialSeatsSum), - strconv.Itoa(sum.MaxSeatsSum), - sum.TotalWorkSum, - ) -} - func rowForRequest(plName, fsName string, queueIndex, requestIndex int, flowDistinguisher string, arriveTime time.Time) string { return row( plName,