• ベストアンサー

IOの帯域制御が難しいのはなぜですか?

IOの帯域制御(アプリケーションAに帯域の80%を使用させ、Bに20%を使用させる、等)が難しいと聞いたのですが、なぜでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.1

難しいというか、いろいろ考えないといけないことがあるのはそうです。 例えば、最低帯域補償をしようと思うと、単純なFIFOではなくて、優先度の高いパケットは他のパケットを追い越して優先して出すなどの処理が必要です。 優先度つきのキューは、単純なキューの何倍も大変な処理をする必要があります。 ここらへんの処理をアービトレーションなんかといいますが、効率のいい処理方法を考えるのは、なかなか大変です。 >Aに帯域の80%を使用させ、Bに20%を使用させる これも、言うのは簡単なんですが、なかなか難しいです。 A、Bが要求する帯域が常に一定であるならまだいいんですが、例えば、Bは普段はほとんど通信しないけど、たまに大量の通信要求をまとめて出す、なんて場合だと、QoSを狙った割合になるように行うのは、難しいです。アービタはアプリがどんなタイミングでどれくらいの通信要求をしてくるのか、を知りませんから。(それを予測してQoSに活かすなんて技術も考えられてはいますが)

その他の回答 (1)

  • invalid
  • ベストアンサー率61% (67/109)
回答No.2

物理IO(サーバ~周辺装置間)では、どのアプリケーションがこのIOを要求しているのか区別がつかないからではないでしょうか? ネットワークの帯域制御では、サービス(httpとか)、アドレスといった情報が転送データに入っており帯域制御をしやすいですが、 物理IOレベルでの転送データ上には、要求元アプリケーションを識別する情報を含んでいないためアプリケーションを指定した 帯域制御は難しいと思われます。 またバッファ等の遅延書き込みによる非同期アクセスもありえるため物理IOを制御するのは難しいのでしょうね。 但し、アプリケーションがOSにIOを要求する論理IOレベルでは、 要求アプリケーションを判断できるため、帯域制御を可能とした製品は存在しますよ。(例えばHP社のPRM製品とか)