filecoin官方调度

filecoin官方调度不适合拿来直接使用。

以下是本人自己的一些学习经验

翻译一下这三步。

一,遍历每个任务。对每个任务,选出能够运行它的worker(worker的资源足够),所有符合的worker放在一个数组中。然后对这个数据排序(排序的方式按照资源多少)

二,再次遍历每个任务。选取一步骤的数组中的第一个worker。将任务分配到该worker中

三,第三步重新就是将新的 内容(任务和worker的对应关系) 放到结构体里。




第一步:启用每一个闭包对每个任务选择一组可以跑这个任务的woker数组。等到这些闭包完全执行结束后。acceptableWindows[sqi][...]这个二维数组存放的信息。sqi代表任务的下标(比如第一个任务,第二个任务),[...]代表能够接受这个任务的worker列表,而且是排序好的。比如说acceptableWindows[1]这个切片有两个worker可以满足任务1的要求,第一个资源有百分之五十,第二个资源有百分之三十,自然是第一个排到最前面。



第二步比较简单,就是把每个任务对应的acceptableWindows[sqi]切片取出第一个。然后进行基本判断。看是否满足要求。如果第一个worker满足要求,该任务就直接选择这个worker了。

for _, wnd :=range acceptableWindows[task.indexHeap]   task.indexHeap 也就是sqi

windows[selectedWindow].todo =append(windows[selectedWindow].todo, task) 

将任务装进woker队列中。

看一下对应关系。

windows :=make([]schedWindow, windowsLen)

windows是暂时定义的一个worker列表。 windowsLen就是所有worker列表的长度

windowsLen :=len(sh.openWindows)  openWindows是scheduler结构体中的worker列表

selectedWindow 图片贴出来代码上。是选出的该worker下标。

有点绕

直接说结论。第二步骤把任务装进临时建立的一个worker列表中。这个临时建立的worker列表windows,下标对应着sh.openWindows下标。

第二步结束后。每一个任务,就能选到对应的worker(临时的列表)

其他情况:有些任务在选择过程中,所有worker都没办法满足,只能说留在循环队列里。能重新分配的任务。就把它从任务队列里删掉。

if len(rmQueue) >0 {for i :=len(rmQueue) -1; i >=0; i-- {sh.schedQueue.Remove(rmQueue[i])}}


第三步:


第三步有两个小步骤:

首先将遍历一下临时列表windows

如果windows后面的任务列表为空。跳过

for wnd, window :=range windows {

if len(window.todo) ==0 {

// Nothing scheduled here, keep the window open

      continue

  }

然后将有内容的wndow 存进openwindow里边。

select {

case sh.openWindows[wnd].done <- &window:

default:

log.Error("expected sh.openWindows[wnd].done to be buffered")

}

第二步。从新写一遍sh.openWindows  

for wnd, window :=range sh.openWindows {

if _, scheduled := scheduledWindows[wnd]; scheduled {

// keep unscheduled windows open

      continue

  }

newOpenWindows =append(newOpenWindows, window)

}

sh.openWindows = newOpenWindows


第三步结束后。又是一个全新的sh.openWindows  调度结束。


官方写得很复杂。原因在于各种下标的对应关系。且不实用。

如果我们对某个机型跑多少任务的,怎么跑法比较熟悉。比如说一台机器。跑几个进程,cg怎么绑定资源。就可以根据经验加任务。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容