github.com/metacubex/gvisor@v0.0.0-20240320004321-933faba989ec/pkg/sentry/platform/systrap/systrap_profiling.go (about) 1 // Copyright 2023 The gVisor Authors. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 //go:build systrap_profiling 16 // +build systrap_profiling 17 18 package systrap 19 20 import ( 21 "github.com/metacubex/gvisor/pkg/metric" 22 ) 23 24 // SystrapProfiling is a builder that produces conditionally compiled metrics. 25 // Metrics made from this are compiled and active at runtime when the 26 // "systrap_profiling" go-tag is specified at compilation. 27 var SystrapProfiling = metric.RealMetricBuilder{} 28 29 //go:nosplit 30 func updateDebugMetrics(stubBoundLat, sentryBoundLat cpuTicks) { 31 if stubBoundLat == 0 { 32 } else if stubBoundLat < 2000 { 33 stubLatWithin1kUS.Increment() 34 } else if stubBoundLat < 10000 { 35 stubLatWithin5kUS.Increment() 36 } else if stubBoundLat < 20000 { 37 stubLatWithin10kUS.Increment() 38 } else if stubBoundLat < 40000 { 39 stubLatWithin20kUS.Increment() 40 } else if stubBoundLat < 80000 { 41 stubLatWithin40kUS.Increment() 42 } else { 43 stubLatGreater40kUS.Increment() 44 } 45 46 if sentryBoundLat == 0 { 47 } else if sentryBoundLat < 2000 { 48 sentryLatWithin1kUS.Increment() 49 } else if sentryBoundLat < 10000 { 50 sentryLatWithin5kUS.Increment() 51 } else if sentryBoundLat < 20000 { 52 sentryLatWithin10kUS.Increment() 53 } else if sentryBoundLat < 40000 { 54 sentryLatWithin20kUS.Increment() 55 } else if sentryBoundLat < 80000 { 56 sentryLatWithin40kUS.Increment() 57 } else { 58 sentryLatGreater40kUS.Increment() 59 } 60 }