diff --git a/pkg/process/cache.go b/pkg/process/cache.go index 38a16f6c347..2dfd9df7b21 100644 --- a/pkg/process/cache.go +++ b/pkg/process/cache.go @@ -121,8 +121,9 @@ func (pc *Cache) refInc(p *ProcessInternal) { atomic.AddUint32(&p.refcnt, 1) } -func (pc *Cache) Purge() { +func (pc *Cache) purge() { pc.stopChan <- true + processCacheTotal.Set(0) } func NewCache( @@ -159,12 +160,17 @@ func (pc *Cache) get(processID string) (*ProcessInternal, error) { // clone or execve events func (pc *Cache) add(process *ProcessInternal) bool { evicted := pc.cache.Add(process.process.ExecId, process) + if !evicted { + processCacheTotal.Inc() + } return evicted } func (pc *Cache) remove(process *tetragon.Process) bool { present := pc.cache.Remove(process.ExecId) - if !present { + if present { + processCacheTotal.Dec() + } else { errormetrics.ErrorTotalInc(errormetrics.ProcessCacheMissOnRemove) } return present diff --git a/pkg/process/metrics.go b/pkg/process/metrics.go index 61425a8c4f8..d557c27792f 100644 --- a/pkg/process/metrics.go +++ b/pkg/process/metrics.go @@ -8,7 +8,7 @@ import ( "github.com/prometheus/client_golang/prometheus" ) -var ProcessCacheTotal = prometheus.NewGauge(prometheus.GaugeOpts{ +var processCacheTotal = prometheus.NewGauge(prometheus.GaugeOpts{ Namespace: consts.MetricsNamespace, Name: "process_cache_size", Help: "The size of the process cache", @@ -46,6 +46,6 @@ func NewCacheCollector() prometheus.Collector { } func InitMetrics(registry *prometheus.Registry) { - registry.MustRegister(ProcessCacheTotal) + registry.MustRegister(processCacheTotal) registry.MustRegister(NewCacheCollector()) } diff --git a/pkg/process/process.go b/pkg/process/process.go index 190000ec36b..4d558811b43 100644 --- a/pkg/process/process.go +++ b/pkg/process/process.go @@ -87,9 +87,8 @@ func InitCache(w watcher.K8sResourceWatcher, size int) error { } func FreeCache() { - procCache.Purge() + procCache.purge() procCache = nil - ProcessCacheTotal.Set(0) } // GetProcessCopy() duplicates tetragon.Process and returns it @@ -478,7 +477,6 @@ func AddExecEvent(event *tetragonAPI.MsgExecveEventUnix) *ProcessInternal { } procCache.add(proc) - ProcessCacheTotal.Inc() return proc } @@ -502,7 +500,6 @@ func AddCloneEvent(event *tetragonAPI.MsgCloneEvent) error { parent.RefInc() procCache.add(proc) - ProcessCacheTotal.Inc() return nil }