52aaf86f52
This PR adds support for the raw_exec driver on systems with only cgroups v2. The raw exec driver is able to use cgroups to manage processes. This happens only on Linux, when exec_driver is enabled, and the no_cgroups option is not set. The driver uses the freezer controller to freeze processes of a task, issue a sigkill, then unfreeze. Previously the implementation assumed cgroups v1, and now it also supports cgroups v2. There is a bit of refactoring in this PR, but the fundamental design remains the same. Closes #12351 #12348
26 lines
549 B
Go
26 lines
549 B
Go
package resources
|
|
|
|
import (
|
|
"github.com/hashicorp/nomad/client/stats"
|
|
)
|
|
|
|
// PIDs holds all of a task's pids and their cpu percentage calculators
|
|
type PIDs map[int]*PID
|
|
|
|
// PID holds one task's pid and it's cpu percentage calculator
|
|
type PID struct {
|
|
PID int
|
|
StatsTotalCPU *stats.CpuStats
|
|
StatsUserCPU *stats.CpuStats
|
|
StatsSysCPU *stats.CpuStats
|
|
}
|
|
|
|
func NewPID(pid int) *PID {
|
|
return &PID{
|
|
PID: pid,
|
|
StatsTotalCPU: stats.NewCpuStats(),
|
|
StatsUserCPU: stats.NewCpuStats(),
|
|
StatsSysCPU: stats.NewCpuStats(),
|
|
}
|
|
}
|