[23] パフォーマンスの問題
(Part of the CORBA FAQ, Copyright (C) 1996)
[23.1] CORBAアプリケーションはパフォーマンスをよくするためにチューニングすることはできますか?
[Recently created (10/1996).
Click here to go to the next FAQ in the "chain" of recent changes]
CORBAアプリケーションのパフォーマンスをよくするためにチューニングするには幾つかの方法があります。
- 憶えておかなければならないのは、分散化するのは、分散化する理由がある時のみにすることです。分散化のための分散は意味のないことです。分散化が目的を達成しないならば、避けるべきです。過度の分散を避けることにより、良いパフォーマンスを得られるでしょう。アプリケーションオブジェクトモデルに分散を導入する時は、注意しなければなりません。
- IDLインタフェースは、チューニングして、ネットワークの陰にひそんだ存在を少なくすることができます。リモートオペレーションを起動することは、ネットワークをまたがったデータの転送を必要とします。ネットワークの性能は典型的には十分なバンド幅を確保することにより最適化できます。一旦、必要とされるバンド幅が達成されれば、生のネットワークの性能はそれ以上上がらないでしょう。IDLインタフェースをチューニングする一つの鍵は、発生するネットワーク転送の数を減らすことです。100バイトを返すオペレーション呼び出しは、5ミリ秒要するかもしれません。200バイトだと6ミリ秒かそこらでしょう。100バイトを返すオペレーションを2回呼ぶと、10ミリ秒になるのです。IDLインタフェースをチューニングする一つの鍵は、複数のgetオペレーションをつくるのではなく、一つの適切なデータの組合せを返すgetオペレーションに組み合わせてしまうことです。
- リモートオペレーションの結果をキャッシュして持っておくことは、同じリモートオペレーションを1回以上呼ぶ際のオーバーヘッドを避けることができます。多くのアプリケーションは、通常の使用中の時よりも、立ち上げ時にリモートオペレーションを実行できます。何故なら、ユーザは、通常の使用中の時よりも、立ち上げ時の方が快く待ってくれることが多いからです。
- 多くの性能に関する問題は、逐次処理の問題とブロッキング条件に関係しています。例えば、複数のクライアントが1個のサーバにリモートオペレーションを投げるとしましょう。一つのクライアントのリクエストが長時間サーバをブロックすると、全てのクライアントが待たねばならないのです。複数の分散オペレーションは、一つのサーバプロセスで逐次処理されるべきではありません。そのかわり、マルチサーバプロセスかマルチサーバスレッドを使うべきでしょう。
Back to the top of section [23]
[23.2] 実装が異なるとCORBAの性能はそんなに違ったりするのですか?
[Recently created (10/1996).
Click here to go to the next FAQ in the "chain" of recent changes]
実装が異なるとCORBAの性能は大きく異なります。ネットワークの性能が達成できる最大限の性能特性を決定するため、よい実装であればはまさしく同じような性能となるでしょう。ネットワークの陰にひそんだ要因が分散オペレーション機能の性能要因の重要な部分を占めるのです。
Back to the top of section [23]
[23.3] どんな種類のパフォーマンスに興味を持てばいいのですか?
[Recently created (10/1996).
Click here to go to the next FAQ in the "chain" of recent changes]
多くの異なる重要な性能特性が存在します。コネクションやオブジェクトが増えると、性能はそれに比例して悪化します。一つのクライアントと一つのサーバ間の生のスループットも重要ですが、それだけが唯一の特性でもないし、それが最も重要な特性というわけでもないのです。CORBAの実装上の多くの特性が考慮されなければなりません。いつものことですが、実際のアプリケーションの要求によって、これらの異なった特性のどれが重要かが変わってくるのです。多くのCORBAの実装は高速性を実現しているので、生のクライアント、サーバ間のスループットはボトルネックではないことが多いのです。オペレーションの回数のような要因が個々のリモートオペレーションの起動を遅くしないかどうかが重要でもあるのです。いくつかの重要な性能要因を以下に列挙します。
- 結合されているクライアントアプリケーションのスケーラビリティ
- CORBAサーバ内のオブジェクトのスケーラビリティ
- 一つのクライアントと一つのサーバ間の生のスループット
- サーバプロセスの起動に要する時間
- CORBAオブジェクトの起動に要する時間
- 異なるIDLの型をストリーム化する時間
- 最初のリモートオペレーションや_narrow呼出し、_is_a呼出しなどに要するコネクションのための時間
- CORBAオブジェクトによって消費される最低限のメモリ
- 分散オブジェクトの複雑なネットワークによって消費されるファイル識別子の数
Back to the top of section [23]
E-mail us
[ CORBA FAQ
| 目次; 詳細目次; アルファベット順
| Subject index
| About the authors
| (C)
| TM
| Wingnest.com ]
Revised Oct 5, 1996 Translated 0ct 27, 1996