mirror of
https://github.com/newnius/YAO-scheduler.git
synced 2025-12-16 00:26:43 +00:00
update
This commit is contained in:
@@ -112,12 +112,14 @@ func (scheduler *SchedulerPriority) Schedule(job Job) {
|
||||
}
|
||||
|
||||
func (scheduler *SchedulerPriority) AcquireResource(job Job, task Task, nodes []NodeStatus) NodeStatus {
|
||||
poolID := rand.Intn(pool.poolsCount)
|
||||
pool.poolsMu[poolID].Lock()
|
||||
defer pool.poolsMu[poolID].Unlock()
|
||||
segID := rand.Intn(pool.poolsCount)
|
||||
seg := &pool.pools[segID]
|
||||
if seg.Nodes == nil {
|
||||
seg = seg.Next
|
||||
}
|
||||
|
||||
res := NodeStatus{}
|
||||
for id, node := range pool.pools[poolID] {
|
||||
for id, node := range seg.Nodes {
|
||||
var available []GPUStatus
|
||||
for _, status := range node.Status {
|
||||
if status.MemoryTotal-status.MemoryAllocated >= task.MemoryGPU {
|
||||
@@ -146,11 +148,15 @@ func (scheduler *SchedulerPriority) AcquireResource(job Job, task Task, nodes []
|
||||
}
|
||||
|
||||
func (scheduler *SchedulerPriority) ReleaseResource(job Job, agent NodeStatus) {
|
||||
poolID := rand.Intn(pool.poolsCount)
|
||||
pool.poolsMu[poolID].Lock()
|
||||
defer pool.poolsMu[poolID].Unlock()
|
||||
segID := pool.getNodePool(agent.ClientID)
|
||||
seg := &pool.pools[segID]
|
||||
if seg.Nodes == nil {
|
||||
seg = seg.Next
|
||||
}
|
||||
seg.Lock.Lock()
|
||||
defer seg.Lock.Unlock()
|
||||
|
||||
node := pool.pools[poolID][agent.ClientID]
|
||||
node := seg.Nodes[agent.ClientID]
|
||||
for _, gpu := range agent.Status {
|
||||
for j := range node.Status {
|
||||
if gpu.UUID == node.Status[j].UUID {
|
||||
@@ -235,9 +241,10 @@ func (scheduler *SchedulerPriority) Summary() MsgSummary {
|
||||
FreeGPU := 0
|
||||
UsingGPU := 0
|
||||
|
||||
for i := 0; i < pool.poolsCount; i++ {
|
||||
pool.poolsMu[i].Lock()
|
||||
for _, node := range pool.pools[i] {
|
||||
start := pool.pools[0].Next
|
||||
for cur := start; ; {
|
||||
cur.Lock.Lock()
|
||||
for _, node := range cur.Nodes {
|
||||
for j := range node.Status {
|
||||
if node.Status[j].MemoryAllocated == 0 {
|
||||
FreeGPU++
|
||||
@@ -246,7 +253,11 @@ func (scheduler *SchedulerPriority) Summary() MsgSummary {
|
||||
}
|
||||
}
|
||||
}
|
||||
pool.poolsMu[i].Unlock()
|
||||
cur.Lock.Unlock()
|
||||
cur = cur.Next
|
||||
if cur == start {
|
||||
break
|
||||
}
|
||||
}
|
||||
summary.FreeGPU = FreeGPU
|
||||
summary.UsingGPU = UsingGPU
|
||||
|
||||
Reference in New Issue
Block a user