Skip to content

Commit dca5b0d

Browse files
committed
refactor(cpuidle): move cgroupMgr into cpuIdleTracing struct
Converge per-instance state from package-level variable into struct field, per rule 5 global variable scope contraction.
1 parent 8fcf5cb commit dca5b0d

1 file changed

Lines changed: 12 additions & 15 deletions

File tree

core/autotracing/cpuidle.go

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright 2025 The HuaTuo Authors
1+
// Copyright 2025, 2026 The HuaTuo Authors
22
//
33
// Licensed under the Apache License, Version 2.0 (the "License");
44
// you may not use this file except in compliance with the License.
@@ -40,26 +40,23 @@ func init() {
4040
tracing.RegisterEventTracing("cpuidle", newCPUIdle)
4141
}
4242

43-
var cgroupMgr cgroups.Cgroup
44-
4543
func newCPUIdle() (*tracing.EventTracingAttr, error) {
44+
// NewManager only returns nil alongside an error (default branch); v1/v2 never return nil on success
4645
cgroup, err := cgroups.NewManager()
4746
if err != nil {
4847
return nil, err
4948
}
50-
if cgroup == nil {
51-
return nil, fmt.Errorf("cgroup manager is nil")
52-
}
53-
cgroupMgr = cgroup
5449

5550
return &tracing.EventTracingAttr{
56-
TracingData: &cpuIdleTracing{},
51+
TracingData: &cpuIdleTracing{cgroupMgr: cgroup},
5752
Interval: 20,
5853
Flag: tracing.FlagTracing,
5954
}, nil
6055
}
6156

62-
type cpuIdleTracing struct{}
57+
type cpuIdleTracing struct {
58+
cgroupMgr cgroups.Cgroup
59+
}
6360

6461
type cpuStats struct {
6562
user int64
@@ -122,14 +119,14 @@ func updateContainersCPUIdle(f *matcher.ContainerMatcher) error {
122119
return nil
123120
}
124121

125-
func detectCPUIdleContainer(threshold *cpuIdleThreshold) (*containerCPUInfo, error) {
122+
func (c *cpuIdleTracing) detectCPUIdleContainer(threshold *cpuIdleThreshold) (*containerCPUInfo, error) {
126123
for id, container := range containersCPUIdle {
127124
if !container.alive {
128125
delete(containersCPUIdle, id)
129126
} else {
130127
container.alive = false
131128

132-
if err := updateContainerCpuUsage(container); err != nil {
129+
if err := c.updateContainerCpuUsage(container); err != nil {
133130
log.Debugf("cpuidle update container [%s]: %v", container.path, err)
134131
continue
135132
}
@@ -161,8 +158,8 @@ func containerCpuUsageDelta(cpu1, cpu2 *cpuStats) cpuStats {
161158
}
162159
}
163160

164-
func updateContainerCpuUsage(container *containerCPUInfo) error {
165-
cpuQuotaPeriod, err := cgroupMgr.CpuQuotaAndPeriod(container.path)
161+
func (c *cpuIdleTracing) updateContainerCpuUsage(container *containerCPUInfo) error {
162+
cpuQuotaPeriod, err := c.cgroupMgr.CpuQuotaAndPeriod(container.path)
166163
if err != nil {
167164
return err
168165
}
@@ -178,7 +175,7 @@ func updateContainerCpuUsage(container *containerCPUInfo) error {
178175
return fmt.Errorf("cpu too small")
179176
}
180177

181-
usage, err := cgroupMgr.CpuUsage(container.path)
178+
usage, err := c.cgroupMgr.CpuUsage(container.path)
182179
if err != nil {
183180
return err
184181
}
@@ -330,7 +327,7 @@ func (c *cpuIdleTracing) Start(ctx context.Context) error {
330327
return err
331328
}
332329

333-
container, err := detectCPUIdleContainer(threshold)
330+
container, err := c.detectCPUIdleContainer(threshold)
334331
if err != nil {
335332
continue
336333
}

0 commit comments

Comments
 (0)