職場でアプリケーションの 1 つをストレス テストするためにマイクロ コンピュータ クラスタを構築しようとしています。予算に多少余裕があるので、コストを抑えてコンピューティング能力を高めたいと思っています。並列コンピューティングという概念もまだよくわかっていませんし、これまで行った調査もほとんどありません。やりたいことは次のとおりです。
- n台のマシンのクラスターを持つ
- これらのマシンにコマンドを送信して実行させます(できれば、マシン間で作業を分散させるのが望ましいですが、順番に送信しなければならない場合でも問題ありません)。そして、完了したら報告してもらいます。
- できればNode.jsを使いますが、PythonやRubyなどの他のスクリプト言語でも問題ありません。
コードをデバイスに送る方法はわかりませんが、デバイスが並列に実行されている場合、マシンから次のようなコードが送信されると予想されます。
cluster.runTest(0, 1000)
ここではcluster.runTest
次のようになります:
runTest = function(start, num) {
for(var i=start; i<num; i++) { //split up which devices runs which commands, hopefully
sendRequestToServer()
}
}
ただし、メンバー間で権限委譲ができない場合は、次のようになります。
for(var i=0; i<10; i++) { //10 devices
chips[i].runCommand(i*100, (i+1)*100) //run a certain chunk of commands
}
..で十分でしょう。
Piは安価ですが、これらのコマンドを適切な時間内に実行するために必要なパワーはないようです。一方で、パラレルラ十分なようですが、少し高価です。wandboard、cubox、beaglebone など、他にもたくさんの製品を検討しました。
この仕組みについての私の考えが間違っていたらお詫びします。実際にどのように機能するか、遠慮なく教えてください。また、ここで意見に関する質問が許可されるかどうかもわかりませんが、できるだけ客観性を保つように努めています。