1

私は自分のマシンで Java プログラムを開発しています。テストしたいときは、まず自分のマシンで小さなテスト ケースを試してから、実際のデータでこのプログラムを実行したいと考えています。小さなテストでは、Linux カーネルの 1 つのファイルを調べ、「実際の」テストではカーネル全体を調べます...

しかし、複数の「実際の」テストを同時に(異なるバージョンのカーネルで)実行したいので、同一のテストマシンを5台用意しました(Linux Fedoraを実行)。これら 5 台のマシンをデータとプログラムの両方で同期するにはどうすればよいですか (プログラムのインストールに時々 yum を使用しています)。

いつでもまったく同じ環境にいることを確認するにはどうすればよいですか?

現在、私は主にscpを使用しており、コードはsvnにあります...

4

2 に答える 2

2

VMware などの仮想化テクノロジーを使用して、1 つのインスタンスを複数のインスタンスに複製することをお勧めします。これには、テスト後に常に同じ開始点に戻ることができるだけでなく、物理的なボックスよりも多くのシナリオを実行できるという利点があります。

于 2009-05-08T15:08:04.387 に答える
0

ベンチマーク ツールに新しいバージョンのプログラムとテストデータをhttpまたはその他の一般的なプロトコルでフェッチさせることができます。http を使用したくない場合は、ネットワーク化されたファイルシステムの使用を検討できます ( NFSGlusterFSはいくつかの例です)。

私の見方では、単一の「マスター」サーバーでスクリプトを開始すると、5 つの bash プロセスが生成されます。それぞれがリモートの「スレーブ」サーバーにログインし、ベンチマーク ツールを実行します。ベンチマークツールは、新しいプログラムとデータをいくつかの(おそらく「マスター」)サーバーからフェッチして実行し、時間/メモリなどを測定してそれらの値を標準出力に返すため、sshはそれをマスターに返しますサーバーとそれはbashプロセスです。次に、bash セッションの出力をファイルにリダイレクトします。

testmaster.sh -> 5*(testnode.sh -> ssh
-> fetch_and_benchmark -> output -> (ssh) -> testnode.sh -> file)

testmaster.sh は、すべてのファイルがすでに存在するかどうかを毎秒確認し、結果を読み取って比較する必要があります。すべてが悪いように聞こえるかもしれませんが、私を信じてください。すべてを手動で行うのではなく、スクリプトを比較的簡単に作成できる方がよいでしょう。

すべてのボックスで同じ環境を使用していることの確認について... テスト ノードに誰も近づけず、何もしないでください。

仮想化は、テスト結果を予測できない方法で変更する可能性があるため、お勧めしません。仮想化されたマシンは、純粋なマシンほど高速になることはできず、単純に「20% 遅い」というわけではありません。はるかに遅いものもあれば、それほど遅くないものもあります。よろしければ仮想化やスナップショットを使ってくださいとのことですが、カーネルが異なる複数のノードでテストを行っているとおっしゃっていたので、真剣に考えているのではないでしょうか。

あ、もう一つ。Linux には面白い方法でメモリを解放する方法があります (誰かがそれを必要とするまで「解放しない」ようなものです)。キャッシュされるものもあります。確かに、テスト セッションごとにテスト マシンを再起動する必要があります。

于 2009-05-08T20:40:28.677 に答える