apf: include queue sum stats in debug

This commit is contained in:
Abu Kashem 2021-10-13 10:14:30 -04:00
parent f0e80a6f10
commit 87c7401eb8
No known key found for this signature in database
GPG Key ID: 33A4FA7088DB68A9
3 changed files with 27 additions and 2 deletions

View File

@ -19,6 +19,7 @@ package flowcontrol
import ( import (
"fmt" "fmt"
"io" "io"
"k8s.io/apiserver/pkg/util/flowcontrol/debug"
"net/http" "net/http"
"strconv" "strconv"
"strings" "strings"
@ -103,6 +104,9 @@ func (cfgCtlr *configController) dumpQueues(w http.ResponseWriter, r *http.Reque
"PendingRequests", // 3 "PendingRequests", // 3
"ExecutingRequests", // 4 "ExecutingRequests", // 4
"VirtualStart", // 5 "VirtualStart", // 5
"InitialSeatsSum", // 6
"MaxSeatsSum", // 7
"TotalWorkSum", // 8
} }
tabPrint(tabWriter, rowForHeaders(columnHeaders)) tabPrint(tabWriter, rowForHeaders(columnHeaders))
endLine(tabWriter) endLine(tabWriter)
@ -114,6 +118,9 @@ func (cfgCtlr *configController) dumpQueues(w http.ResponseWriter, r *http.Reque
"<none>", // 3 "<none>", // 3
"<none>", // 4 "<none>", // 4
"<none>", // 5 "<none>", // 5
"<none>", // 6
"<none>", // 7
"<none>", // 8
)) ))
endLine(tabWriter) endLine(tabWriter)
continue continue
@ -126,6 +133,7 @@ func (cfgCtlr *configController) dumpQueues(w http.ResponseWriter, r *http.Reque
len(q.Requests), // 3 len(q.Requests), // 3
q.ExecutingRequests, // 4 q.ExecutingRequests, // 4
q.VirtualStart, // 5 q.VirtualStart, // 5
q.QueueSum, // 6, 7, 8
)) ))
endLine(tabWriter) 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( return row(
plName, plName,
strconv.Itoa(index), strconv.Itoa(index),
strconv.Itoa(waitingRequests), strconv.Itoa(waitingRequests),
strconv.Itoa(executingRequests), strconv.Itoa(executingRequests),
fmt.Sprintf("%.4f", virtualStart), fmt.Sprintf("%.4f", virtualStart),
strconv.Itoa(sum.InitialSeatsSum),
strconv.Itoa(sum.MaxSeatsSum),
sum.TotalWorkSum,
) )
} }

View File

@ -32,12 +32,19 @@ type QueueSetDump struct {
// QueueDump is an instant dump of one queue in a queue-set. // QueueDump is an instant dump of one queue in a queue-set.
type QueueDump struct { type QueueDump struct {
QueueSum QueueSum
Requests []RequestDump Requests []RequestDump
VirtualStart float64 VirtualStart float64
ExecutingRequests int ExecutingRequests int
SeatsInUse int SeatsInUse int
} }
type QueueSum struct {
InitialSeatsSum int
MaxSeatsSum int
TotalWorkSum string
}
// RequestDump is an instant dump of one requests pending in the queue. // RequestDump is an instant dump of one requests pending in the queue.
type RequestDump struct { type RequestDump struct {
MatchedFlowSchema string MatchedFlowSchema string

View File

@ -173,12 +173,19 @@ func (q *queue) dump(includeDetails bool) debug.QueueDump {
return true 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{ return debug.QueueDump{
VirtualStart: q.nextDispatchR.ToFloat(), // TODO: change QueueDump to use SeatSeconds VirtualStart: q.nextDispatchR.ToFloat(), // TODO: change QueueDump to use SeatSeconds
Requests: digest, Requests: digest,
ExecutingRequests: q.requestsExecuting, ExecutingRequests: q.requestsExecuting,
SeatsInUse: q.seatsInUse, SeatsInUse: q.seatsInUse,
QueueSum: queueSum,
} }
} }