diff --git a/packages/envd/main.go b/packages/envd/main.go index 8327a03c79..01aacf5745 100644 --- a/packages/envd/main.go +++ b/packages/envd/main.go @@ -56,6 +56,7 @@ var ( versionFlag bool commitFlag bool cgroupRoot string + noCgroups bool verbose bool ) @@ -95,6 +96,13 @@ func parseFlags() { "cgroup root directory", ) + flag.BoolVar( + &noCgroups, + "no-cgroups", + false, + "disable cgroup management; use a no-op cgroup manager instead", + ) + flag.BoolVar( &verbose, "verbose", @@ -236,6 +244,15 @@ func createCgroupManager() (m cgroups.Manager) { } }() + // Explicit opt-out: callers can tell envd to skip cgroup setup entirely. + // We return the no-op manager directly without touching /sys/fs/cgroup + // so we don't log spurious errors. + if noCgroups { + fmt.Fprintf(os.Stderr, "cgroups disabled via --no-cgroups; using no-op cgroup manager\n") + + return cgroups.NewNoopManager() + } + metrics, err := host.GetMetrics() if err != nil { fmt.Fprintf(os.Stderr, "failed to calculate host metrics: %v\n", err)