Skip to content
This repository has been archived by the owner on May 12, 2021. It is now read-only.

Commit

Permalink
Merge pull request #2251 from devimc/topic/k8s/fixWrongNumberCPUs
Browse files Browse the repository at this point in the history
k8s: fix wrong number cpus after killing a container
  • Loading branch information
amshinde authored Nov 26, 2019
2 parents cc35064 + b7731e9 commit d054556
Showing 1 changed file with 33 additions and 11 deletions.
44 changes: 33 additions & 11 deletions virtcontainers/sandbox.go
Original file line number Diff line number Diff line change
Expand Up @@ -1174,12 +1174,6 @@ func (s *Sandbox) CreateContainer(contConfig ContainerConfig) (VCContainer, erro
}
}()

// Sandbox is reponsable to update VM resources needed by Containers
err = s.updateResources()
if err != nil {
return nil, err
}

err = c.create()
if err != nil {
return nil, err
Expand All @@ -1190,6 +1184,14 @@ func (s *Sandbox) CreateContainer(contConfig ContainerConfig) (VCContainer, erro
return nil, err
}

// Sandbox is reponsable to update VM resources needed by Containers
// Update resources after having added containers to the sandbox, since
// container status is requiered to know if more resources should be added.
err = s.updateResources()
if err != nil {
return nil, err
}

// Store it.
err = c.storeContainer()
if err != nil {
Expand Down Expand Up @@ -1226,7 +1228,13 @@ func (s *Sandbox) StartContainer(containerID string) (VCContainer, error) {
}

s.Logger().Info("Container is started")
//Fixme Container delete from sandbox, need to update resources

// Update sandbox resources in case a stopped container
// is started
err = s.updateResources()
if err != nil {
return nil, err
}

return c, nil
}
Expand Down Expand Up @@ -1484,10 +1492,6 @@ func (s *Sandbox) createContainers() error {
span, _ := s.trace("createContainers")
defer span.Finish()

if err := s.updateResources(); err != nil {
return err
}

for _, contConfig := range s.config.Containers {

c, err := newContainer(s, &contConfig)
Expand All @@ -1503,6 +1507,12 @@ func (s *Sandbox) createContainers() error {
}
}

// Update resources after having added containers to the sandbox, since
// container status is requiered to know if more resources should be added.
if err := s.updateResources(); err != nil {
return err
}

if err := s.cgroupsUpdate(); err != nil {
return err
}
Expand Down Expand Up @@ -1961,6 +1971,12 @@ func (s *Sandbox) updateResources() error {
func (s *Sandbox) calculateSandboxMemory() int64 {
memorySandbox := int64(0)
for _, c := range s.config.Containers {
// Do not hot add again non-running containers resources
if cont, ok := s.containers[c.ID]; ok && cont.state.State == types.StateStopped {
s.Logger().WithField("container-id", c.ID).Debug("Do not taking into account memory resources of not running containers")
continue
}

if m := c.Resources.Memory; m != nil && m.Limit != nil {
memorySandbox += *m.Limit
}
Expand All @@ -1972,6 +1988,12 @@ func (s *Sandbox) calculateSandboxCPUs() uint32 {
mCPU := uint32(0)

for _, c := range s.config.Containers {
// Do not hot add again non-running containers resources
if cont, ok := s.containers[c.ID]; ok && cont.state.State == types.StateStopped {
s.Logger().WithField("container-id", c.ID).Debug("Do not taking into account CPU resources of not running containers")
continue
}

if cpu := c.Resources.CPU; cpu != nil {
if cpu.Period != nil && cpu.Quota != nil {
mCPU += utils.CalculateMilliCPUs(*cpu.Quota, *cpu.Period)
Expand Down

0 comments on commit d054556

Please sign in to comment.