0

Trying to find the 'best' way to run 10 simultaneous 32 bit dos application programs.

Long story short: I have an old 2003 32 bit Dos application (company no longer in business) that is crucial to my work flow. It processes text files and is heavily CPU intensive. I speed up processing of large text files by breaking them into 10 pieces and running them all on separate computers simultaneously then concatenating the results at the end. This saves incredible time on large files. I am trying to figure out the best way to upgrade this process.

Right now I have 10 Virtual machines running windows 10. (just upgraded from XP) Works fine - licensing was not too expensive. I was just wondering if there was a cheaper/better way? It just seems crazy that I have to have 10 desktop operating systems licensed and up to date.

I looked at NANO server but it doesn't run any 32 bit applications. Perhaps I can spin up 10 VMs in Azure when I need them? I would guess I only these 10 VMs for at most 1 hour CPU process/day. Just looking for ideas. The only requirement for these VMs is to run the 32 bit process when needed, run a service I wrote to coordinate everything and be on the domain and have access to the domain's fileshare. Thanks.

2
  • Why can't you have one VM run all 10 processes at once (windows does multitask) and give the virtual machine more or faster vCPUs/cores? If Azure is the limitation, why not use your own hypervisor or a real computer? Does it have to be on Azure? What's the problem here? Why can't you do some of these things? Sep 24, 2016 at 21:17
  • Good Ideas thanks- I would have to install 10 copies and change a lot of scripts but it might be possible. This dos program doesn't have a lot of options- it runs the input.txt file in it's own directory. I'll see if I can get that to work. I am not hooked on Azure at all. I just want an easier way to manage 10 VMs and get the load off my host. This seems to me to be a perfect use for an azure "Cloud Service" Or "Batch" application. I just can't find anything that can wrap an old 32 bit dos application.
    – marcd
    Sep 25, 2016 at 0:30

1 Answer 1

1

A single fast machine or VM with one OS instance and multiple DOS processes is likely better than 10 virtual machines in a number of ways.

I suggest you considering running everything on one system or VM, with a single OS instance. If you can get a VM with enough vCPUs/cores/whatever or the equivalent power that you need, you'd get the performance you're talking about without running all those VMs. Windows can multitask and run multiple DOS applications at once, spreading the load over multiple cores. Not a problem.

Consider what real hardware you have available

You only run this DOS stuff sometimes right? Then it stops? I don't know what kind of computers you have around, but 8-16+ core systems are not uncommon these days. I have an 8 core server at home! Something like that could may manage instead of one or many Azure VMs. I'm not sure what kind of performance you're hoping for. A single Skylake processor can really kick butt too.

Process isolation

If you require more isolation (like you mention in the comments) so that multiple copies of your dos app don't interfere with each other, you may be able to use a chroot/sandbox like discussed here:

Is there a windows equivalent to chroot?

Or use Windows Server Containers:

https://msdn.microsoft.com/en-us/virtualization/windowscontainers/about/about_overview

Perhaps there are other similar options for Windows.

Don't forget Linux does everything

If you are ok with Linux, you can run dos on Linux with dosemu. Process isolation appears not to be much of a problem. Just tell dosemu to use a different directory for each instance.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .