forked from AnalogJ/scrutiny
-
Notifications
You must be signed in to change notification settings - Fork 3
Closed
Labels
backendBackend/Go relatedBackend/Go relatedcollectorCollector componentCollector componentdockerDocker/container relatedDocker/container relatedenhancementNew feature or requestNew feature or requestpriority:mediumMedium priorityMedium priorityupstream-prUpstream PR to mergeUpstream PR to merge
Milestone
Description
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
- PR: chore: use Linux container CPU quota AnalogJ/scrutiny#585
- Issue: [BUG] Scrutiny should be cgroup aware AnalogJ/scrutiny#584
- Complexity: Small (add dependency + 4 imports)
- Priority: Medium
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 relatedBackend/Go relatedcollectorCollector componentCollector componentdockerDocker/container relatedDocker/container relatedenhancementNew feature or requestNew feature or requestpriority:mediumMedium priorityMedium priorityupstream-prUpstream PR to mergeUpstream PR to merge