1
0
mirror of https://github.com/newnius/YAO-scheduler.git synced 2025-06-06 22:01:55 +00:00
This commit is contained in:
Newnius 2020-06-11 11:36:52 +08:00
parent a1102e61db
commit 5f8766cd62
3 changed files with 26 additions and 3 deletions

View File

@ -102,6 +102,11 @@ GPU is occupied by which job(s)
?action=pool_disable_batch
```
**UpdateBatchInterval**
```
?action=pool_set_batch_interval&interval=30
```
**PoolDump**
```
?action=debug_pool_dump

View File

@ -312,6 +312,14 @@ func serverAPI(w http.ResponseWriter, r *http.Request) {
w.Write(js)
break
case "pool_set_batch_interval":
log.Debug("pool_set_batch_interval")
interval := str2int(r.URL.Query().Get("interval"), 1)
js, _ := json.Marshal(InstanceOfResourcePool().SetBatchInterval(interval))
w.Header().Set("Content-Type", "application/json")
w.Write(js)
break
case "debug_pool_dump":
log.Debug("debug_pool_dump")
js, _ := json.Marshal(InstanceOfResourcePool().DebugDump())

View File

@ -66,6 +66,7 @@ type ResourcePool struct {
batchJobs map[string]Job
batchMu sync.Mutex
batchAllocations map[string][]NodeStatus
batchInterval int
}
func (pool *ResourcePool) init(conf Configuration) {
@ -91,6 +92,7 @@ func (pool *ResourcePool) init(conf Configuration) {
pool.enableBatch = false
pool.batchAllocations = map[string][]NodeStatus{}
pool.batchJobs = map[string]Job{}
pool.batchInterval = 15
/* init pools */
pool.poolsCount = 300
@ -128,7 +130,7 @@ func (pool *ResourcePool) init(conf Configuration) {
go func() {
/* batch allocation */
for {
time.Sleep(time.Second * 15)
time.Sleep(time.Second * time.Duration(pool.batchInterval))
if !pool.enableBatch {
continue
}
@ -916,7 +918,7 @@ func (pool *ResourcePool) doAcquireResource(job Job) []NodeStatus {
//log.Info(tasks, factor)
allocation := InstanceOfAllocator().allocate(nodesT, tasks)
log.Info(allocation)
//log.Info(allocation)
if allocation.Flags["valid"] {
for range job.Tasks { //append would cause uncertain order
@ -943,7 +945,6 @@ func (pool *ResourcePool) doAcquireResource(job Job) []NodeStatus {
res.ClientHost = node.ClientHost
res.NumCPU = task.NumberCPU
res.MemTotal = task.Memory
/* bug */
res.Status = available[0:task.NumberGPU]
available = available[task.NumberGPU:]
@ -1033,6 +1034,15 @@ func (pool *ResourcePool) DisableBatch() bool {
return true
}
func (pool *ResourcePool) SetBatchInterval(interval int) bool {
if interval < 1 {
interval = 1
}
pool.batchInterval = interval
log.Info("batchInterval is updated to ", interval)
return true
}
func (pool *ResourcePool) SetShareRatio(ratio float64) bool {
pool.enableShareRatio = ratio
log.Info("enableShareRatio is updated to ", ratio)