コンピュータクラスターをビデオゲームなどの日常のアプリケーションに使用する方法を知っている人はいますか?
コンピュータークラスター用に特別に設計されていないアプリケーションをクラスター上で実行できるコンピュータークラスターを構築したいのですが、それでもパフォーマンスが向上します。用途の1つはビデオゲームですが、仮想化されたマシンの大規模なネットワークを実行するために、増加した計算能力を利用したいと思います。
コンピュータクラスターをビデオゲームなどの日常のアプリケーションに使用する方法を知っている人はいますか?
コンピュータークラスター用に特別に設計されていないアプリケーションをクラスター上で実行できるコンピュータークラスターを構築したいのですが、それでもパフォーマンスが向上します。用途の1つはビデオゲームですが、仮想化されたマシンの大規模なネットワークを実行するために、増加した計算能力を利用したいと思います。
特にビデオゲームの場合、それは役に立ちません。クラスタを中心に構築する必要があります。クラスタはあなたの周りでは機能しません。
いずれにせよ、ビデオゲームは入力と応答に50ミリ秒未満の応答時間を必要とし、ネットワークの伝播はあなたが見るかもしれないパフォーマンスの向上を破壊するだけです。一方、ビデオ処理は、タスクが本質的に並列化に向けられているため、クラスターから大きなメリットを得ることができます。ユーザー入力は不要で、出力はバッチプロセスの観点からのみ測定されます。
シングルコア用に作成されたプログラムがある場合、それを4コアプロセッサで実行しても役に立ちません(ただし、1つのコアをそのプログラム専用にすることができます)。たとえば、このマシンの複数のコアでVisual Studioをコンパイルしていますが、リンクは1つのコアで実行されます(そして、煩わしいほど遅いです)。複数のコアを利用するには、複数のコアを使用できるものを実行するか、いくつかの個別のプログラムを実行する必要があります。
クラスターはそのようなものですが、それ以上のものです。マシン間のすべての通信は明示的であり、プログラムする必要があります。クラスターで実行できることはありますが(Googleのmap-reduceアルゴリズムを参照)、特別なプログラミングと作業が必要です。
一般的なクラスターは、マシンを特殊化するため(たとえば、データベースサーバーとWebサーバーの場合)、または多数のプログラムを同時に実行するために使用されます。
複数のマシンで動作するように設計されていない限り、クラスターでビデオゲームを簡単に実行することはできません。私はそのようなゲームについて聞いたことがありません。仮想サーバーファームを作成するのは運がいいかもしれませんが、完全に機能させるのは簡単ではないでしょう。これに興味がある場合、1つの例はAmazonのEC2サービスです。それらは、時間単位で「レンタル」する仮想マシンを提供します。舞台裏では、これらすべての仮想マシンに供給している巨大なクラスターがあると思います。
残念ながら、かなり巧妙なオペレーティングシステム/ソフトウェアの設計を念頭に置いていない限り(クラスターを介してプログラムを接続し、パフォーマンスを向上させたいと思っているだけでは、特にビデオゲームでは機能しない可能性があります)。クラスタで実行することでパフォーマンスを向上させるには、そのためにプログラムする必要があります。そうしないと、パフォーマンスが向上するのではなく、低下するという良い変化が見られます。