Skip to content

Port: Linux container CPU quota awareness (upstream #585) #112

@Starosdev

Description

@Starosdev

Summary

Port improvement from upstream AnalogJ/scrutiny PR AnalogJ#585 to make Go respect Linux container CPU quotas.

Problem

Go is not cgroup-aware by default. It sets GOMAXPROCS to the number of available CPU threads on the host, regardless of container CPU limits. This causes:

  • High CPU throttling
  • Degraded application performance in containers with CPU limits

Solution

Use go.uber.org/automaxprocs to automatically set GOMAXPROCS based on the container's CPU quota.

Changes Required

File: go.mod

require (
    // ... existing requires
    go.uber.org/automaxprocs v1.5.3
)

File: collector/cmd/collector-metrics/collector-metrics.go

import (
    // ... existing imports
    _ "go.uber.org/automaxprocs"
)

File: collector/cmd/collector-selftest/collector-selftest.go

import (
    // ... existing imports
    _ "go.uber.org/automaxprocs"
)

File: webapp/backend/cmd/scrutiny/scrutiny.go

import (
    // ... existing imports
    _ "go.uber.org/automaxprocs"
)

File: webapp/backend/pkg/models/testdata/helper.go

import (
    // ... existing imports
    _ "go.uber.org/automaxprocs"
)

Upstream Reference

Acceptance Criteria

  • Add automaxprocs dependency
  • Add blank import to all main entry points
  • Test in container with CPU limits
  • Verify GOMAXPROCS is set correctly

Metadata

Metadata

Assignees

Labels

backendBackend/Go relatedcollectorCollector componentdockerDocker/container relatedenhancementNew feature or requestpriority:mediumMedium priorityupstream-prUpstream PR to merge

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions