2016-05-21 18 views
0

私はSimPy DESフレームワークを学び始めています。要求がサーバに異なるタイミングで到着するシミュレーションを実装したいと思います。さまざまな種類のリクエストがあり、それぞれが特定のメモリ/ CPU負荷でサーバをロードします。たとえば、通常CPUの10%とmemの100MBを使用する要求があり、他の要求はCPUの15%とRAMの150MBが必要になる場合があります(これは単なる例です)。サーバーには独自の特性とメモリがあります。要求がサーバーに到着し、必要な量のリソースが準備されていない場合、この要求は待機する必要があります。私は単一のリソースの大文字小文字を処理する方法を知っています。たとえば、メモリの場合と同様に、100の容量と100の初期量のContainerクラスを使用してCPU負荷を実装できます。しかし、どのように私の要求がCPUとメモリの両方が利用可能になるのを待つべき状況を実装するのですか?Simpy - 複数のリソースにアクセスする

ありがとうございます!

答えて

1

最も簡単な解決策は、次のように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を実際に使用している時間)ブロックされます。

これはあなたのために働くかもしれませんか?

+0

ありがとう、それは魅力のように動作します! –

+0

@StefanScherfke 2つのリソースが要求されるケースをモデル化することもできます。最初のインスタンスが最初に到着し、2番目のリソースを待たずに作業を開始しますか? –

+0

@AllenWang私はまったく同じシナリオのコードを作成しようとしています。あなたは解決策を見つけましたか? –

関連する問題