http://bccd.net/でダウンロードできる BCCD (Bootable Cluster CD) を使用してクラスターとしてセットアップした 24 台のコンピューターで、分散クラスター化アルゴリズム (MPI で実装) を実験しています。
ノード数と入力データのサイズを変えてアルゴリズムを数回実行する実験を実行するためのバッチ プログラムを作成しました。
アルゴリズムの実行ごとに MPI 通信で使用されるデータ量を知りたいので、前述のパラメーターを変更したときにデータ量がどのように変化するかを確認できます。そして、バッチプログラムを使用してこれらすべてを自動的に実行したいと考えています。
tcpdump を使用するように誰かに言われましたが、この方法にはいくつかの問題がありました。
まず、アルゴリズムを実行するたびにバッチ プログラム (呼び出しを行うコマンド システムを使用して C++ で記述) で tcpdump を呼び出す方法がわかりません。これは、tcpdump をアプリケーションと並行して実行する別の端末が必要になるためです。また、ネットワークがスイッチを使用しているため、別のコンピューターで tcpdump を実行できません。したがって、マスターノードで実行する必要があります。
次に、実験中に tcpdump でトラフィックを確認しましたが、MPI が使用するポートを特定できませんでした。多くのポートを使用しているようです。パッケージをフィルタリングするためにそれを知りたかったのです。
3 番目に、パッケージ全体をキャプチャし、tcpdump を使用してファイルに保存しようとしましたが、数秒でファイルは 3.5 MB になりました。しかし、私の実験全体には2日かかります。したがって、このアプローチに従うと、最終的なログ ファイルは巨大になります。
理想的なアプローチは、パッケージのヘッダーにあるサイズ フィールドだけを取得し、これを合計して、送信されたデータの総量を取得することです。そうすれば、ログファイルは、パッケージ全体をキャプチャする場合よりもはるかに小さくなります。しかし、私はそれを行う方法がわかりません。
もう 1 つの制限は、コンピューターのディスクにアクセスできないことです。そのため、RAM と 4GB の USB フラッシュ ドライブしかありません。そのため、巨大なログファイルを持つことはできません。
http://www.open-mpi.org/faq/?category=perftoolsで言及されているような MPI トレース ツールまたはプロファイリング ツールの使用を既に考えています。これまで、Sun Performance Analyzer のみをテストしました。問題は、これらのツールを BCCD にインストールするのは困難であり、おそらく不可能でさえあると思います。それに加えて、このツールを使用すると、オーバーヘッドが増えるため、実験の終了に時間がかかります。しかし、誰かが BCCD に精通していて、それらのツールのいずれかを使用するのが良い選択だと思う場合は、お知らせください。
誰かが解決策を持っていることを願っています。