有谁知道计算机集群如何用于日常应用程序,例如视频游戏?
我想构建一个计算机集群,它可以在集群上运行不是专门为计算机集群设计的应用程序,并且仍然可以看到性能提升。一种用途是用于视频游戏,但我也想利用增加的计算能力来运行大型虚拟机网络。
有谁知道计算机集群如何用于日常应用程序,例如视频游戏?
我想构建一个计算机集群,它可以在集群上运行不是专门为计算机集群设计的应用程序,并且仍然可以看到性能提升。一种用途是用于视频游戏,但我也想利用增加的计算能力来运行大型虚拟机网络。
这无济于事,尤其是在视频游戏的情况下。您必须围绕集群进行构建;集群在您周围不起作用。
无论如何,视频游戏在输入和响应方面需要低于 50 毫秒的响应时间,而网络传播只会破坏您可能看到的任何性能提升。另一方面,视频处理从集群中受益匪浅,因为该任务本质上是面向并行化的。它不需要用户输入,输出仅根据批处理来衡量。
如果你有一个为单核编写的程序,在四核处理器上运行它对你没有帮助(除了一个核可以专门用于该程序)。例如,我在这台机器上的多个内核上编译 Visual Studio,但链接是在一个内核上完成的(而且速度非常慢)。为了充分利用多核,我必须要么运行可以使用多核的东西,要么运行几个单独的程序。
集群就是这样,而且更是如此。机器之间的所有通信都是显式的,必须进行编程。您可以使用集群做一些事情(参见 Google 的 map-reduce 算法),但它们确实需要特殊的编程和工作。
典型的集群用于专门化机器(例如,一个可能是数据库服务器,一个可能是 Web 服务器),或者同时运行大量程序。
您将无法轻松地在集群上运行视频游戏,除非它已经设计为在多台机器上运行。我没有听说过这样的游戏。创建虚拟服务器场可能会有一些运气,但我怀疑让它完美运行会很容易。如果您对此感兴趣,亚马逊的 EC2 服务就是一个例子。他们提供按小时“出租”的虚拟机。在幕后,我假设他们有一个巨大的集群来提供所有这些虚拟机。
不幸的是,除非您考虑到一些非常聪明的操作系统/软件设计——简单地通过集群将程序连接在一起并希望获得更高的性能是不可能的——尤其是对于视频游戏来说更是如此。为了通过在集群中运行事物来提高性能,您必须对其进行编程,否则会有一个很好的变化,您会看到性能下降而不是提高。