Merge pull request #118960 from MikeSpreitzer/add-seat-occupancy-metric
Introduce apiserver_flowcontrol_current_executing_seats metric Kubernetes-commit: fbb2f89668bd07a96adc8a1f4f0819e769255703
This commit is contained in:
commit
24d5ac4b98
4
go.mod
4
go.mod
|
|
@ -44,7 +44,7 @@ require (
|
|||
k8s.io/api v0.0.0-20230706062605-a69cc64b8aea
|
||||
k8s.io/apimachinery v0.0.0-20230628220152-83d6d372b1a4
|
||||
k8s.io/client-go v0.0.0-20230706063706-5d8fd6bf0a71
|
||||
k8s.io/component-base v0.0.0-20230629215145-b8f9f7cc1db2
|
||||
k8s.io/component-base v0.0.0-20230706070231-63369697f0ec
|
||||
k8s.io/klog/v2 v2.100.1
|
||||
k8s.io/kms v0.0.0-20230619011758-484bb0d20287
|
||||
k8s.io/kube-openapi v0.0.0-20230601164746-7562a1006961
|
||||
|
|
@ -128,6 +128,6 @@ replace (
|
|||
k8s.io/api => k8s.io/api v0.0.0-20230706062605-a69cc64b8aea
|
||||
k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20230628220152-83d6d372b1a4
|
||||
k8s.io/client-go => k8s.io/client-go v0.0.0-20230706063706-5d8fd6bf0a71
|
||||
k8s.io/component-base => k8s.io/component-base v0.0.0-20230629215145-b8f9f7cc1db2
|
||||
k8s.io/component-base => k8s.io/component-base v0.0.0-20230706070231-63369697f0ec
|
||||
k8s.io/kms => k8s.io/kms v0.0.0-20230619011758-484bb0d20287
|
||||
)
|
||||
|
|
|
|||
4
go.sum
4
go.sum
|
|
@ -674,8 +674,8 @@ k8s.io/apimachinery v0.0.0-20230628220152-83d6d372b1a4 h1:ntS2ZHGzNY/ISRKPPU937L
|
|||
k8s.io/apimachinery v0.0.0-20230628220152-83d6d372b1a4/go.mod h1:tAiIbF8KB8+Ri2DfUWwZGwNOThIwM0fhXLnOymriu+4=
|
||||
k8s.io/client-go v0.0.0-20230706063706-5d8fd6bf0a71 h1:g8LfyE9Rv2qb4Oen12UgefQtqtR6UzN4fXGnhGNJjow=
|
||||
k8s.io/client-go v0.0.0-20230706063706-5d8fd6bf0a71/go.mod h1:ZpAEvaNK1G5zw2NdLfh0nDbdNijaDGbP6OO9ftDqPpk=
|
||||
k8s.io/component-base v0.0.0-20230629215145-b8f9f7cc1db2 h1:res0K6caIh79PJuWtgXA20Z1LU1x/5HuleTMfTRK60A=
|
||||
k8s.io/component-base v0.0.0-20230629215145-b8f9f7cc1db2/go.mod h1:L3xI7trKI8CnqSv3XAzcYPs5OUTxutc6qDyXt75tJvY=
|
||||
k8s.io/component-base v0.0.0-20230706070231-63369697f0ec h1:Jp8V9IROgsd7hlRayWEwme9biJBB2cibC0CpP2HGveU=
|
||||
k8s.io/component-base v0.0.0-20230706070231-63369697f0ec/go.mod h1:aiE+qizM73R49NuVbaxClSQu2Yj+zIDCEN6OY8Zcp3w=
|
||||
k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg=
|
||||
k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
|
||||
k8s.io/kms v0.0.0-20230619011758-484bb0d20287 h1:Vg6e1YgSgGMHIh3drUHYjKG3ppnI7w4dVC7zxJQ8oB4=
|
||||
|
|
|
|||
|
|
@ -726,7 +726,7 @@ func (qs *queueSet) dispatchSansQueueLocked(ctx context.Context, workEstimate *f
|
|||
qs.totRequestsExecuting++
|
||||
qs.totSeatsInUse += req.MaxSeats()
|
||||
metrics.AddRequestsExecuting(ctx, qs.qCfg.Name, fsName, 1)
|
||||
metrics.AddRequestConcurrencyInUse(qs.qCfg.Name, fsName, req.MaxSeats())
|
||||
metrics.AddSeatConcurrencyInUse(qs.qCfg.Name, fsName, req.MaxSeats())
|
||||
qs.reqsGaugePair.RequestsExecuting.Add(1)
|
||||
qs.execSeatsGauge.Add(float64(req.MaxSeats()))
|
||||
qs.seatDemandIntegrator.Set(float64(qs.totSeatsInUse + qs.totSeatsWaiting))
|
||||
|
|
@ -771,7 +771,7 @@ func (qs *queueSet) dispatchLocked() bool {
|
|||
queue.requestsExecuting++
|
||||
queue.seatsInUse += request.MaxSeats()
|
||||
metrics.AddRequestsExecuting(request.ctx, qs.qCfg.Name, request.fsName, 1)
|
||||
metrics.AddRequestConcurrencyInUse(qs.qCfg.Name, request.fsName, request.MaxSeats())
|
||||
metrics.AddSeatConcurrencyInUse(qs.qCfg.Name, request.fsName, request.MaxSeats())
|
||||
qs.reqsGaugePair.RequestsExecuting.Add(1)
|
||||
qs.execSeatsGauge.Add(float64(request.MaxSeats()))
|
||||
qs.seatDemandIntegrator.Set(float64(qs.totSeatsInUse + qs.totSeatsWaiting))
|
||||
|
|
@ -938,7 +938,7 @@ func (qs *queueSet) finishRequestLocked(r *request) {
|
|||
defer qs.removeQueueIfEmptyLocked(r)
|
||||
|
||||
qs.totSeatsInUse -= r.MaxSeats()
|
||||
metrics.AddRequestConcurrencyInUse(qs.qCfg.Name, r.fsName, -r.MaxSeats())
|
||||
metrics.AddSeatConcurrencyInUse(qs.qCfg.Name, r.fsName, -r.MaxSeats())
|
||||
qs.execSeatsGauge.Add(-float64(r.MaxSeats()))
|
||||
qs.seatDemandIntegrator.Set(float64(qs.totSeatsInUse + qs.totSeatsWaiting))
|
||||
if r.queue != nil {
|
||||
|
|
|
|||
|
|
@ -241,16 +241,27 @@ var (
|
|||
},
|
||||
[]string{priorityLevel, flowSchema},
|
||||
)
|
||||
apiserverRequestConcurrencyInUse = compbasemetrics.NewGaugeVec(
|
||||
apiserverCurrentExecutingSeats = compbasemetrics.NewGaugeVec(
|
||||
&compbasemetrics.GaugeOpts{
|
||||
Namespace: namespace,
|
||||
Subsystem: subsystem,
|
||||
Name: "request_concurrency_in_use",
|
||||
Name: "current_executing_seats",
|
||||
Help: "Concurrency (number of seats) occupied by the currently executing (initial stage for a WATCH, any stage otherwise) requests in the API Priority and Fairness subsystem",
|
||||
StabilityLevel: compbasemetrics.ALPHA,
|
||||
},
|
||||
[]string{priorityLevel, flowSchema},
|
||||
)
|
||||
apiserverRequestConcurrencyInUse = compbasemetrics.NewGaugeVec(
|
||||
&compbasemetrics.GaugeOpts{
|
||||
Namespace: namespace,
|
||||
Subsystem: subsystem,
|
||||
Name: "request_concurrency_in_use",
|
||||
Help: "Concurrency (number of seats) occupied by the currently executing (initial stage for a WATCH, any stage otherwise) requests in the API Priority and Fairness subsystem",
|
||||
DeprecatedVersion: "1.28.0",
|
||||
StabilityLevel: compbasemetrics.ALPHA,
|
||||
},
|
||||
[]string{priorityLevel, flowSchema},
|
||||
)
|
||||
apiserverRequestWaitingSeconds = compbasemetrics.NewHistogramVec(
|
||||
&compbasemetrics.HistogramOpts{
|
||||
Namespace: namespace,
|
||||
|
|
@ -444,6 +455,7 @@ var (
|
|||
apiserverRequestQueueLength,
|
||||
apiserverRequestConcurrencyLimit,
|
||||
apiserverRequestConcurrencyInUse,
|
||||
apiserverCurrentExecutingSeats,
|
||||
apiserverCurrentExecutingRequests,
|
||||
apiserverRequestWaitingSeconds,
|
||||
apiserverRequestExecutionSeconds,
|
||||
|
|
@ -523,9 +535,10 @@ func SetDispatchMetrics(priorityLevel string, r, s, sMin, sMax, discountedSMin,
|
|||
apiserverNextDiscountedSBounds.WithLabelValues(priorityLevel, "max").Set(discountedSMax)
|
||||
}
|
||||
|
||||
// AddRequestConcurrencyInUse adds the given delta to the gauge of concurrency in use by
|
||||
// AddSeatConcurrencyInUse adds the given delta to the gauge of seats in use by
|
||||
// the currently executing requests of the given flowSchema and priorityLevel
|
||||
func AddRequestConcurrencyInUse(priorityLevel, flowSchema string, delta int) {
|
||||
func AddSeatConcurrencyInUse(priorityLevel, flowSchema string, delta int) {
|
||||
apiserverCurrentExecutingSeats.WithLabelValues(priorityLevel, flowSchema).Add(float64(delta))
|
||||
apiserverRequestConcurrencyInUse.WithLabelValues(priorityLevel, flowSchema).Add(float64(delta))
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue