如何在SimPy 3中实现工作窃取?

时间:2018-01-21 01:44:55

标签: simpy

我想在多处理器系统中实现类似于窃取工作或任务迁移的东西。详情如下。

我正在模拟具有多个工作节点(资源,每个具有多个容量的资源)的调度系统,以及随机到达并由调度程序在特定工作节点排队的任务(进程)。这很好。

但是,我希望在工作节点具有备用容量时触发事件,以便它从具有最长等待队列的工作者窃取前端任务。

我可以实现上述功能。问题是等待我们正在窃取工作的工作队列的所有任务都会收到事件通知。我只想通知队列前面的任务(或队列前面只有N个任务)。

银行违规行为的例子是我想要实施的最接近的例子。然而,它(1)所有客户在被通知事件被触发时离开队列,以及(2)当事件被触发时,客户离开系统;在我的例子中,我想让任务等待另一个工作者(虽然它不会等待,因为该工作者的队列是空的)。

老问题:这可以在SimPy中完成吗?

新问题:如何在SimPy中执行此操作? 1)我如何拥有多个进程,等待资源,监听事件,但只通知第一个进程? 2)如何将流程迁移到其他资源?

1 个答案:

答案 0 :(得分:1)

是的,这可以通过SimPy完成。