对设计时未考虑到这一点的应用程序进行分布式处理

对设计时未考虑到这一点的应用程序进行分布式处理

我们在工作时使用的应用程序只是对一些数据文件进行大量迭代处理,以执行一些模拟。这是由不支持多处理器的“旧” Win32 应用程序完成的,因此新计算机和工作站大多处于闲置状态,运行此应用程序。

但是,由于它是由典型的 Windows Install Shield 安装程序安装的,我似乎无法安装和运行该应用程序的多个副本。

可以在处理之前手动拆分工作,从而将工作分布到多台机器上,但我们仍然无法利用多核 CPU。处理后可以将结果重新组合在一起,以进行完整的模拟。

有没有一种产品可以让我“划分”一个安装(或 4 个安装),以便我可以利用多核 CPU?我曾考虑过使用 MS Softgrid,但我认为这仍然依赖于远程服务器来完成繁重的工作(如果我错了,请纠正我)。

此外,有没有办法将工作量分散到一台机器上?这样输入就可以分成 50 个块,分发到 50 台机器上进行处理?

所有这些都不需要真正改变初始应用程序吗?

在理想的世界中,我会获得能够利用 DesktopGrid(BOINC)的应用程序,但是与大多数“关键任务企业应用程序”一样,有需求,但没有钱。

提前谢谢您(如果这不适合 serverfault,我们深感抱歉)。

答案1

长话短说,如果该过程不支持多处理器或分布式计算,那么您就无法自己做到这一点。

您可以使用简单的虚拟化(Virtual PC,VMWare 的桌面产品)在同一硬件上“并排”运行多个副本,但这不是“多处理器感知”或“分布式”计算,而是几个完全独立的进程在不同的工作队列上工作。从您的帖子中很难看出这一点,但我认为这很可能就是您想要做的一切。

答案2

您可能会在 Stack Overflow 上获得更好的帮助——基本上您要做的就是安装软件的副本,并编写一个“前端”来承担工作量,将其分解成片段并将其提供给程序的隔离的“后端”副本(自动化您描述的手动划分)。

实际实施(单独的安装和前端)取决于软件的编写方式。此外,如果您完成的工作需要重新集成(您需要将 4 个块合并为一个),则自定义前端也需要足够智能才能做到这一点……

答案3

你说你不能安装多个软件,但你可以跑步多个软件副本?我认为,您不需要执行前者就可以执行后者。如果软件中的某些内容阻止运行多个副本,您可能能够使用资源编辑器破解 EXE 以消除或绕过该限制。

相关内容