mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 03:41:45 +00:00
Merge pull request #88980 from tedyu/evict-delay-sorting
Delay sorting of evictUnits slice in kuberuntime_gc
This commit is contained in:
commit
96e13de777
@ -125,6 +125,9 @@ func (cgc *containerGC) enforceMaxContainersPerEvictUnit(evictUnits containersBy
|
|||||||
func (cgc *containerGC) removeOldestN(containers []containerGCInfo, toRemove int) []containerGCInfo {
|
func (cgc *containerGC) removeOldestN(containers []containerGCInfo, toRemove int) []containerGCInfo {
|
||||||
// Remove from oldest to newest (last to first).
|
// Remove from oldest to newest (last to first).
|
||||||
numToKeep := len(containers) - toRemove
|
numToKeep := len(containers) - toRemove
|
||||||
|
if numToKeep > 0 {
|
||||||
|
sort.Sort(byCreated(containers))
|
||||||
|
}
|
||||||
for i := len(containers) - 1; i >= numToKeep; i-- {
|
for i := len(containers) - 1; i >= numToKeep; i-- {
|
||||||
if containers[i].unknown {
|
if containers[i].unknown {
|
||||||
// Containers in known state could be running, we should try
|
// Containers in known state could be running, we should try
|
||||||
@ -151,8 +154,11 @@ func (cgc *containerGC) removeOldestN(containers []containerGCInfo, toRemove int
|
|||||||
// removeOldestNSandboxes removes the oldest inactive toRemove sandboxes and
|
// removeOldestNSandboxes removes the oldest inactive toRemove sandboxes and
|
||||||
// returns the resulting slice.
|
// returns the resulting slice.
|
||||||
func (cgc *containerGC) removeOldestNSandboxes(sandboxes []sandboxGCInfo, toRemove int) {
|
func (cgc *containerGC) removeOldestNSandboxes(sandboxes []sandboxGCInfo, toRemove int) {
|
||||||
// Remove from oldest to newest (last to first).
|
|
||||||
numToKeep := len(sandboxes) - toRemove
|
numToKeep := len(sandboxes) - toRemove
|
||||||
|
if numToKeep > 0 {
|
||||||
|
sort.Sort(sandboxByCreated(sandboxes))
|
||||||
|
}
|
||||||
|
// Remove from oldest to newest (last to first).
|
||||||
for i := len(sandboxes) - 1; i >= numToKeep; i-- {
|
for i := len(sandboxes) - 1; i >= numToKeep; i-- {
|
||||||
if !sandboxes[i].active {
|
if !sandboxes[i].active {
|
||||||
cgc.removeSandbox(sandboxes[i].id)
|
cgc.removeSandbox(sandboxes[i].id)
|
||||||
@ -210,11 +216,6 @@ func (cgc *containerGC) evictableContainers(minAge time.Duration) (containersByE
|
|||||||
evictUnits[key] = append(evictUnits[key], containerInfo)
|
evictUnits[key] = append(evictUnits[key], containerInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sort the containers by age.
|
|
||||||
for uid := range evictUnits {
|
|
||||||
sort.Sort(byCreated(evictUnits[uid]))
|
|
||||||
}
|
|
||||||
|
|
||||||
return evictUnits, nil
|
return evictUnits, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -309,11 +310,6 @@ func (cgc *containerGC) evictSandboxes(evictTerminatedPods bool) error {
|
|||||||
sandboxesByPod[podUID] = append(sandboxesByPod[podUID], sandboxInfo)
|
sandboxesByPod[podUID] = append(sandboxesByPod[podUID], sandboxInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sort the sandboxes by age.
|
|
||||||
for uid := range sandboxesByPod {
|
|
||||||
sort.Sort(sandboxByCreated(sandboxesByPod[uid]))
|
|
||||||
}
|
|
||||||
|
|
||||||
for podUID, sandboxes := range sandboxesByPod {
|
for podUID, sandboxes := range sandboxesByPod {
|
||||||
if cgc.podStateProvider.IsPodDeleted(podUID) || (cgc.podStateProvider.IsPodTerminated(podUID) && evictTerminatedPods) {
|
if cgc.podStateProvider.IsPodDeleted(podUID) || (cgc.podStateProvider.IsPodTerminated(podUID) && evictTerminatedPods) {
|
||||||
// Remove all evictable sandboxes if the pod has been removed.
|
// Remove all evictable sandboxes if the pod has been removed.
|
||||||
|
Loading…
Reference in New Issue
Block a user