2

我开始学习 SimPy DES 框架。我想实现一个模拟,其中请求在不同时间到达服务器。有不同类型的请求,每个请求都会以特定的内存/cpu 负载加载服务器。因此,例如,可能存在通常使用 10% 的 CPU 和 100MB 内存的请求,而其他请求可能需要 15% 的 CPU 和 150MB 的 RAM(这些只是示例数字)。服务器有自己的特点和一定的内存量。如果请求到达服务器并且它没有准备好所需数量的资源,则该请求应该等待。我知道如何处理单个资源的情况——例如,我可以使用容量为 100 且初始数量为 100 的容器类来实现 CPU 负载,对于内存类似。然而,

提前致谢!

4

1 回答 1

3

最简单的解决方案是使用这样的AllOf条件事件:

cpu_req = cpu.get(15)  # Request 15% CPU capactiy
mem_req = mem.get(10)  # Request 10 memories
yield cpu_req & mem_req  # Wait until we have cpu time and memory
yield env.timeout(10)  # Use resources for 10 time units

这将导致您的进程等到两个请求事件都被触发。但是,如果 CPU 在 t=5 时可用,而内存在 t=20 时可用,则 CPU 将一直被阻塞(从 5-20 + 您实际使用 CPU 的时间)。

这对你有用吗?

于 2016-05-22T12:16:21.150 回答