Simpy - 访问多个资源

Simpy - accessing multiple resources

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

提前致谢!

最简单的解决方案是像这样使用 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).

这对你有用吗?