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).
这对你有用吗?
我开始学习 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).
这对你有用吗?