尝试找到同时运行 10 个 32 位 DOS 应用程序的“最佳”方法。
长话短说:我有一个旧的 2003 32 位 Dos 应用程序(公司不再营业),它对我的工作流程至关重要。它处理文本文件,并且占用大量 CPU。我将大型文本文件分成 10 个部分,然后在不同的计算机上同时运行它们,最后将结果连接起来,从而加快处理速度。这在处理大型文件时节省了大量时间。我正在尝试找出升级此过程的最佳方法。
现在我有 10 台运行 Windows 10 的虚拟机。(刚从 XP 升级)运行良好 - 许可费用不是太高。我只是想知道是否有更便宜/更好的方法?我必须获得 10 个桌面操作系统的许可并保持最新状态,这似乎很疯狂。
我查看了 NANO 服务器,但它不运行任何 32 位应用程序。也许我可以在需要时在 Azure 中启动 10 台虚拟机?我猜我每天最多只让这 10 台虚拟机运行 1 小时 CPU 进程。只是在寻找想法。这些虚拟机的唯一要求是在需要时运行 32 位进程,运行我编写的服务来协调一切,并在域中并可以访问域的文件共享。谢谢。
答案1
具有一个操作系统实例和多个 DOS 进程的单个快速机器或虚拟机在许多方面可能比 10 台虚拟机更好。
我建议您考虑在一个系统或虚拟机上运行所有内容,并使用单个操作系统实例。如果您可以获得具有足够 vCPU/核心/任何东西或您需要的等效功能的虚拟机,那么您无需运行所有这些虚拟机即可获得您所说的性能。Windows 可以同时执行多任务并运行多个 DOS 应用程序,将负载分散到多个核心上。没问题。
考虑一下你有哪些可用的真实硬件
您只是偶尔运行这些 DOS 程序,对吧?然后它就停止了?我不知道您周围有什么样的计算机,但如今 8-16+ 核系统并不罕见。我家里有一台 8 核服务器!类似的东西可能可以代替一个或多个 Azure VM 进行管理。我不确定您希望获得什么样的性能。单个 Skylake 处理器也可以非常出色。
进程隔离
如果您需要更多隔离(如您在评论中提到的),以便您的 dos 应用程序的多个副本不会互相干扰,您可以使用如下讨论的 chroot/sandbox:
或者使用 Windows Server 容器:
https://msdn.microsoft.com/en-us/virtualization/windowscontainers/about/about_overview
也许 Windows 还有其他类似的选项。
别忘了 Linux 可以做一切
如果您对 Linux 没问题,那么您可以使用 在 Linux 上运行 dos dosemu
。进程隔离似乎不是什么大问题。只需告诉dosemu
每个实例使用不同的目录即可。