MCPcopy Create free account
hub / github.com/cortexproject/cortex / NewResourceBasedLimiter

Function NewResourceBasedLimiter

pkg/util/limiter/resource_based_limiter.go:24–50  ·  view source on GitHub ↗
(resourceMonitor resource.IMonitor, limits map[resource.Type]float64, registerer prometheus.Registerer, component string)

Source from the content-addressed store, hash-verified

22}
23
24func NewResourceBasedLimiter(resourceMonitor resource.IMonitor, limits map[resource.Type]float64, registerer prometheus.Registerer, component string) (*ResourceBasedLimiter, error) {
25 for resType, limit := range limits {
26 switch resType {
27 case resource.CPU, resource.Heap:
28 promauto.With(registerer).NewGauge(prometheus.GaugeOpts{
29 Name: "cortex_resource_based_limiter_limit",
30 Help: "Limit set for the resource utilization.",
31 ConstLabels: map[string]string{"component": component, "resource": string(resType)},
32 }).Set(limit)
33 default:
34 return nil, fmt.Errorf("unsupported resource type: [%s]", resType)
35 }
36 }
37
38 return &ResourceBasedLimiter{
39 resourceMonitor: resourceMonitor,
40 limits: limits,
41 limitBreachedCount: promauto.With(registerer).NewCounterVec(
42 prometheus.CounterOpts{
43 Name: "cortex_resource_based_limiter_throttled_total",
44 Help: "The total number of times resource based limiter throttled.",
45 ConstLabels: map[string]string{"component": component},
46 },
47 []string{"resource"},
48 ),
49 }, nil
50}
51
52func (l *ResourceBasedLimiter) AcceptNewRequest() error {
53 for resType, limit := range l.limits {

Callers 3

NewFunction · 0.92

Calls 1

SetMethod · 0.65