Skip to content

Commit f591414

Browse files
author
zhangye
committed
Merge branch 'debug' into 'master'
fix a bug: not use complex scheduler See merge request !63
2 parents 6f76de8 + 878edf5 commit f591414

File tree

6 files changed

+14
-17
lines changed

6 files changed

+14
-17
lines changed

VERSION

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.7.19
1+
0.7.20

cluster/calcium/cluster.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"gitlab.ricebook.net/platform/core/network"
55
"gitlab.ricebook.net/platform/core/network/calico"
66
"gitlab.ricebook.net/platform/core/scheduler"
7-
"gitlab.ricebook.net/platform/core/scheduler/simple"
7+
"gitlab.ricebook.net/platform/core/scheduler/complex"
88
"gitlab.ricebook.net/platform/core/source"
99
"gitlab.ricebook.net/platform/core/source/gitlab"
1010
"gitlab.ricebook.net/platform/core/store"
@@ -32,9 +32,10 @@ func New(config types.Config) (*calcium, error) {
3232
return nil, err
3333
}
3434

35-
// TODO 这里必须要用到scheduler, 要用丫的RandomNode方法
36-
// 所以先给个simple吧
37-
scheduler := simplescheduler.New()
35+
scheduler, err := complexscheduler.New(config)
36+
if err != nil {
37+
return nil, err
38+
}
3839
titanium := calico.New()
3940
source := gitlab.New(config)
4041

cluster/calcium/create_container.go

+4-6
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,7 @@ import (
2323
// Use specs and options to create
2424
// TODO what about networks?
2525
func (c *calcium) CreateContainer(specs types.Specs, opts *types.DeployOptions) (chan *types.CreateContainerMessage, error) {
26-
log.Debugf("Deploy container with specs %v, deploy options %v", specs, opts)
2726
pod, _ := c.store.GetPod(opts.Podname)
28-
log.Debugf("Deplay scheduler: %s", pod.Scheduler)
2927
if pod.Scheduler == "CPU" {
3028
return c.createContainerWithScheduler(specs, opts)
3129
} else {
@@ -302,15 +300,16 @@ func (c *calcium) getCPUAndMem(podname, nodename string, quota float64) (map[str
302300
// Later if any error occurs, these nodes can be restored.
303301
func (c *calcium) prepareNodes(podname, nodename string, quota float64, num int) (map[string][]types.CPUMap, error) {
304302
result := make(map[string][]types.CPUMap)
305-
303+
log.Debugf("Input parameters podname: %s, nodename: %s, quota: %f, num: %d", podname, nodename, quota, num)
306304
cpuandmem, nodes, err := c.getCPUAndMem(podname, nodename, quota)
307305
if err != nil {
308306
return result, err
309307
}
310308
cpumap := makeCPUMap(cpuandmem) // 做这个转换,免得改太多
311309
// use podname as lock key to prevent scheduling on the same node at one time
310+
log.Debugf("Cpumap: %v", cpumap)
312311
result, changed, err := c.scheduler.SelectNodes(cpumap, quota, num) // 这个接口统一使用float64了
313-
log.Debugf("result: %v, changed: %v", result, changed)
312+
log.Debugf("Result: %v, Changed: %v", result, changed)
314313
if err != nil {
315314
return result, err
316315
}
@@ -321,7 +320,6 @@ func (c *calcium) prepareNodes(podname, nodename string, quota float64, num int)
321320
// cpus changeded
322321
// update data to etcd
323322
// `SelectNodes` reduces count in cpumap
324-
log.WithFields(log.Fields{"changed": changed}).Debugln("Changed nodes are:")
325323
for _, node := range nodes {
326324
r, ok := changed[node.Name]
327325
// 不在changed里说明没有变化
@@ -479,7 +477,7 @@ func (c *calcium) doCreateContainerWithScheduler(nodename string, cpumap []types
479477
// no need to update this to etcd (save 1 time write on etcd)
480478
func (c *calcium) releaseQuota(node *types.Node, quota types.CPUMap) {
481479
if quota.Total() == 0 {
482-
log.Debug("cpu quota is zero: %v", quota)
480+
log.Debug("cpu quota is zero: %f", quota)
483481
return
484482
}
485483
c.store.UpdateNodeCPU(node.Podname, node.Name, quota, "+")

scheduler/complex/cpu.go

-1
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,6 @@ func averagePlan(cpu float64, nodes map[string]types.CPUMap, need, maxShareCore,
232232

233233
// 决定分配方案
234234
allocplan := allocPlan(nodeinfo, need)
235-
236235
for node, ncon := range allocplan {
237236
if ncon > 0 {
238237
nodename = nodeinfo[node].Node

scheduler/complex/potassium.go

-5
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"fmt"
55
"path/filepath"
66

7-
log "github.com/Sirupsen/logrus"
87
"github.com/coreos/etcd/client"
98
"gitlab.ricebook.net/platform/core/lock"
109
"gitlab.ricebook.net/platform/core/lock/etcdlock"
@@ -58,9 +57,6 @@ func (m *potassium) RandomNode(nodes map[string]types.CPUMap) (string, error) {
5857
func (m *potassium) SelectNodes(nodes map[string]types.CPUMap, quota float64, num int) (map[string][]types.CPUMap, map[string]types.CPUMap, error) {
5958
m.Lock()
6059
defer m.Unlock()
61-
log.Debugf("[SelectNodes] nodes: %v", nodes)
62-
log.Debugf("[SelectNodes] quota: %f", quota)
63-
6460
result := make(map[string][]types.CPUMap)
6561
changed := make(map[string]types.CPUMap)
6662

@@ -72,7 +68,6 @@ func (m *potassium) SelectNodes(nodes map[string]types.CPUMap, quota float64, nu
7268
// suppose each core has 10 coreShare
7369
// TODO: change it to be control by parameters
7470
result = averagePlan(quota, nodes, num, -1, 10)
75-
log.Debugf("[SelectNodes] averagePlan: %v", result)
7671
if result == nil {
7772
return nil, nil, fmt.Errorf("Not enough resource")
7873
}

scheduler/complex/potassium_test.go

+4
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ func TestSelectNodes(t *testing.T) {
4848
},
4949
}
5050

51+
debug, changed, _ := k.SelectNodes(nodes, 0.5, 1)
52+
fmt.Printf("algorithm debug res: %v", debug)
53+
fmt.Printf("algorithm debug changed: %v", changed)
54+
5155
_, _, err = k.SelectNodes(nodes, 2, 3)
5256
assert.Error(t, err)
5357
assert.Contains(t, err.Error(), "Not enough")

0 commit comments

Comments
 (0)