2009-06-25 14 views
11

多くのリモートWMI呼び出しを行うコードを継承しました。繰り返し実行を中断してコールスタックを見ると、ほとんど常にManagementScope.Connect()コールになります。各WQLクエリで新しい接続が作成されているようです。.NETでWMIのパフォーマンスを向上させるにはどうすればよいですか?

限定された試行錯誤にもかかわらず、私はまだWMI呼び出しのパフォーマンスを向上させるには大きな成果を見いだせませんでした。

以前の結果をキャッシュし、接続を再利用し、恐ろしい "select *"を回避しようとしました。これらは、私が望む性能向上を私に与えていない。私はWMIのパフォーマンスに対する環境の影響を理解することに興味がありますが、コードはおそらく私のコントロールの範囲を超えたさまざまな環境で実行する必要があります。

もしあれば、.NETでのパフォーマンス指向のWMIアクセスのやり方は何ですか?

+0

同じマシンまたは複数のマシンを複数コールしていますか?後者の場合は、マルチスレッドと考えていますか? – serialhobbyist

+0

今のところそれは同じマシンです。コードは自動化されたリモートインストールのためのものです。コードはまず、依存関係が既にインストールされているかどうかを判断し、OSに問い合わせます(プロセッサアーキテクチャ、システムディレクトリ、プログラムファイルディレクトリ、OSバージョンなどを判断します)。これを実行してインストールを構成し、WMIを使用してインストールを起動して監視します。これらをキューに入れ、並列に実行できるようにする機能要求がありました(たとえば、一度に5つ)。良い提案。 – devgeezer

+0

ああ〜私はvbscriptで非常に似たようなことをしてきました。私のものは厄介で痛いものでした。お大事に。 – serialhobbyist

答えて

6
専門知識の

なく、私のエリアが、これは、いくつかの助けになるかもしれません:

WMI: Improving your WMI application performance in fan-out scenario

「このブログでは、私は複数を実行するためにWMIを使用してリモートマシンに接続する約3つの異なる方法をお話しますWMI操作、およびそれらのパフォーマンスの違い」を参照してください。

+0

優れたコンテンツをありがとう。私の元の投稿は、リンクされたブログ記事が示すように、「接続の再利用」を試みたことを示しました。私は他のいくつかの実験を行い、皆の利益のために書き上げる予定の大幅な改善を得ました。 .NETオブジェクトには、後で操作を再接続させるようなプロパティがあると思われます。私はこれらをすぐに書くつもりです。 DCOM WMIアクセスに適用されるものは、おそらく.NETクラスにも当てはまると考えられます。ありがとう! – devgeezer

+2

@Devgeezer .NETでどのように改善しましたか?あなたはラッパーを書いていましたか? – JSC

+0

@Devgeezerはい私はあなたのWMIの改善にも興味があります... – LamonteCristo

関連する問題