Skip to content

Commit b5464ca

Browse files
authored
Merge pull request #122 from sp-yduck/fix/overcommit-plugin
calculate overcommit ratio with only running qemu
2 parents cfb7245 + 57a5d23 commit b5464ca

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

cloud/scheduler/plugins/overcommit/cpu_overcommit.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ func (pl *CPUOvercommit) Name() string {
2323
}
2424

2525
// filter by cpu overcommit ratio
26-
func (pl *CPUOvercommit) Filter(ctx context.Context, _ *framework.CycleState, config api.VirtualMachineCreateOptions, nodeInfo *framework.NodeInfo) *framework.Status {
26+
func (pl *CPUOvercommit) Filter(ctx context.Context, state *framework.CycleState, config api.VirtualMachineCreateOptions, nodeInfo *framework.NodeInfo) *framework.Status {
2727
cpu := sumCPUs(nodeInfo.QEMUs())
2828
maxCPU := nodeInfo.Node().MaxCpu
2929
sockets := config.Sockets
@@ -34,15 +34,19 @@ func (pl *CPUOvercommit) Filter(ctx context.Context, _ *framework.CycleState, co
3434
if ratio > defaultCPUOvercommitRatio {
3535
status := framework.NewStatus()
3636
status.SetCode(1)
37+
state.SetMessage(pl.Name(), "exceed cpu overcommit ratio")
3738
return status
3839
}
3940
return &framework.Status{}
4041
}
4142

43+
// sum cpus of all 'running' qemu
4244
func sumCPUs(qemus []*api.VirtualMachine) int {
4345
var result int
4446
for _, q := range qemus {
45-
result += q.Cpus
47+
if q.Status == api.ProcessStatusRunning {
48+
result += q.Cpus
49+
}
4650
}
4751
return result
4852
}

cloud/scheduler/plugins/overcommit/memory_overcommit.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,22 +23,26 @@ func (pl *MemoryOvercommit) Name() string {
2323
}
2424

2525
// filter by memory overcommit ratio
26-
func (pl *MemoryOvercommit) Filter(ctx context.Context, _ *framework.CycleState, config api.VirtualMachineCreateOptions, nodeInfo *framework.NodeInfo) *framework.Status {
26+
func (pl *MemoryOvercommit) Filter(ctx context.Context, state *framework.CycleState, config api.VirtualMachineCreateOptions, nodeInfo *framework.NodeInfo) *framework.Status {
2727
mem := sumMems(nodeInfo.QEMUs())
2828
maxMem := nodeInfo.Node().MaxMem
2929
ratio := float32(mem+1024*1024*config.Memory) / float32(maxMem)
3030
if ratio >= defaultMemoryOvercommitRatio {
3131
status := framework.NewStatus()
3232
status.SetCode(1)
33+
state.SetMessage(pl.Name(), "exceed memory overcommit ratio")
3334
return status
3435
}
3536
return &framework.Status{}
3637
}
3738

39+
// sum maxmem of all 'running' qemu
3840
func sumMems(qemus []*api.VirtualMachine) int {
3941
var result int
4042
for _, q := range qemus {
41-
result += q.MaxMem
43+
if q.Status == api.ProcessStatusRunning {
44+
result += q.MaxMem
45+
}
4246
}
4347
return result
4448
}

0 commit comments

Comments
 (0)