common: setting cgroup resources correctly

fix some cgroups related integration tests.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
This commit is contained in:
Giuseppe Scrivano
2020-04-20 17:13:59 +02:00
parent bd71135852
commit 4e09c5ebb4

View File

@ -47,6 +47,12 @@ func FillOutSpecGen(s *specgen.SpecGenerator, c *ContainerCLIOpts, args []string
if err != nil { if err != nil {
return err return err
} }
if s.ResourceLimits == nil {
s.ResourceLimits = &specs.LinuxResources{}
}
if s.ResourceLimits.Memory == nil {
s.ResourceLimits.Memory = &specs.LinuxMemory{}
}
if m := c.Memory; len(m) > 0 { if m := c.Memory; len(m) > 0 {
ml, err := units.RAMInBytes(m) ml, err := units.RAMInBytes(m)
if err != nil { if err != nil {
@ -81,6 +87,9 @@ func FillOutSpecGen(s *specgen.SpecGenerator, c *ContainerCLIOpts, args []string
} }
s.ResourceLimits.Memory.Kernel = &mk s.ResourceLimits.Memory.Kernel = &mk
} }
if s.ResourceLimits.BlockIO == nil {
s.ResourceLimits.BlockIO = &specs.LinuxBlockIO{}
}
if b := c.BlkIOWeight; len(b) > 0 { if b := c.BlkIOWeight; len(b) > 0 {
u, err := strconv.ParseUint(b, 10, 16) u, err := strconv.ParseUint(b, 10, 16)
if err != nil { if err != nil {
@ -313,14 +322,16 @@ func FillOutSpecGen(s *specgen.SpecGenerator, c *ContainerCLIOpts, args []string
s.StopSignal = &stopSignal s.StopSignal = &stopSignal
} }
} }
swappiness := uint64(c.MemorySwappiness)
if s.ResourceLimits == nil { if s.ResourceLimits == nil {
s.ResourceLimits = &specs.LinuxResources{} s.ResourceLimits = &specs.LinuxResources{}
} }
if s.ResourceLimits.Memory == nil { if s.ResourceLimits.Memory == nil {
s.ResourceLimits.Memory = &specs.LinuxMemory{} s.ResourceLimits.Memory = &specs.LinuxMemory{}
} }
if c.MemorySwappiness >= 0 {
swappiness := uint64(c.MemorySwappiness)
s.ResourceLimits.Memory.Swappiness = &swappiness s.ResourceLimits.Memory.Swappiness = &swappiness
}
if s.LogConfiguration == nil { if s.LogConfiguration == nil {
s.LogConfiguration = &specgen.LogConfig{} s.LogConfiguration = &specgen.LogConfig{}
@ -332,7 +343,9 @@ func FillOutSpecGen(s *specgen.SpecGenerator, c *ContainerCLIOpts, args []string
if s.ResourceLimits.Pids == nil { if s.ResourceLimits.Pids == nil {
s.ResourceLimits.Pids = &specs.LinuxPids{} s.ResourceLimits.Pids = &specs.LinuxPids{}
} }
if c.PIDsLimit > 0 {
s.ResourceLimits.Pids.Limit = c.PIDsLimit s.ResourceLimits.Pids.Limit = c.PIDsLimit
}
if c.CGroups == "disabled" && c.PIDsLimit > 0 { if c.CGroups == "disabled" && c.PIDsLimit > 0 {
s.ResourceLimits.Pids.Limit = -1 s.ResourceLimits.Pids.Limit = -1
} }
@ -507,18 +520,28 @@ func FillOutSpecGen(s *specgen.SpecGenerator, c *ContainerCLIOpts, args []string
if s.ResourceLimits.CPU == nil { if s.ResourceLimits.CPU == nil {
s.ResourceLimits.CPU = &specs.LinuxCPU{} s.ResourceLimits.CPU = &specs.LinuxCPU{}
} }
if c.CPUShares > 0 {
s.ResourceLimits.CPU.Shares = &c.CPUShares s.ResourceLimits.CPU.Shares = &c.CPUShares
}
if c.CPUPeriod > 0 {
s.ResourceLimits.CPU.Period = &c.CPUPeriod s.ResourceLimits.CPU.Period = &c.CPUPeriod
}
// TODO research these if c.CPUSetCPUs != "" {
//s.ResourceLimits.CPU.Cpus = c.CPUS s.ResourceLimits.CPU.Cpus = c.CPUSetCPUs
//s.ResourceLimits.CPU.Cpus = c.CPUSetCPUs }
if c.CPUSetMems != "" {
//s.ResourceLimits.CPU. = c.CPUSetCPUs
s.ResourceLimits.CPU.Mems = c.CPUSetMems s.ResourceLimits.CPU.Mems = c.CPUSetMems
}
if c.CPUQuota > 0 {
s.ResourceLimits.CPU.Quota = &c.CPUQuota s.ResourceLimits.CPU.Quota = &c.CPUQuota
}
if c.CPURTPeriod > 0 {
s.ResourceLimits.CPU.RealtimePeriod = &c.CPURTPeriod s.ResourceLimits.CPU.RealtimePeriod = &c.CPURTPeriod
}
if c.CPURTRuntime > 0 {
s.ResourceLimits.CPU.RealtimeRuntime = &c.CPURTRuntime s.ResourceLimits.CPU.RealtimeRuntime = &c.CPURTRuntime
}
s.OOMScoreAdj = &c.OOMScoreAdj s.OOMScoreAdj = &c.OOMScoreAdj
s.RestartPolicy = c.Restart s.RestartPolicy = c.Restart
s.Remove = c.Rm s.Remove = c.Rm