Allocate every instance of program to different core

kyledoestheastro

Reputable
Feb 23, 2015
2
0
4,510
Not sure if this is possible since I cannot find any good info searching online, but if anyone has any suggestions they would be greatly appreciated.

We're are running windows 7 64bit. I'm using a program called Camworks and my company just upgraded to the new 2015 version. What the program does is help us program where our CNC machine's tools are going (CAD/CAM software that's integrated into solidworks). With 2014 every time we generated a toolpath it would make 1 core do that tool. if we did 2 at the same time, one toolpath would use one core, the other would use another, and so on. you could even open the task manager and watch it happen. With 2015 it seems to be multi threading (not sure if that's the correct term)and spreading the load across all cores. This is great for the computers we have that have 32+ cores because before it would max out at 10 toolpaths. This is not-so-great on other computers with 4 cores where we used to generate 2 tools at a time and that would max out 2 cores and leave 2 cores for us to be able to use other software/ do other things inside camworks while waiting. Now generating 1 tool puts 4 cores at %70 and 2 tools will get them all at %100 making the computer lock up until it's done.

So, Every time we generate a tool a process called MS.exe shows up in the process manager. One instance of it for each tool generating. Now I can manually right click and set affinity for each one. but the tools only take 1-2 minutes and we have about 30 tools to do on every job so this method isn't very efficient. Is there a way for me to (or software that can) make it so each time MS.exe opens it goes to its own core or even make it go to whatever core has the least load on it at that moment? OR could I make it so that no matter what MS.exe only ever uses the same 2 cores no matter how many instances there are?
 
Solution
Windows 7 is generally pretty good at managing available resources. What I would suggest you do rather than assigning the process to specific cores, is to lower the priority of the process such that Windows will manage other things (like user input) before continuing to process the job.

This page shows you how to lower the priority of a process. Test that manually on your MS.exe processes to see if it (temporarily) resolves your issue. But the SECOND part on the page shows you how to launch a program with a pre-defined priority: http://www.sevenforums.com/tutorials/83361-priority-level-set-applications-processes.html

Can you adjust your shortcuts, or scripts, or however the MS.exe process is called, to include a lower priority...
Windows 7 is generally pretty good at managing available resources. What I would suggest you do rather than assigning the process to specific cores, is to lower the priority of the process such that Windows will manage other things (like user input) before continuing to process the job.

This page shows you how to lower the priority of a process. Test that manually on your MS.exe processes to see if it (temporarily) resolves your issue. But the SECOND part on the page shows you how to launch a program with a pre-defined priority: http://www.sevenforums.com/tutorials/83361-priority-level-set-applications-processes.html

Can you adjust your shortcuts, or scripts, or however the MS.exe process is called, to include a lower priority level?

If not, I'm guessing the MS.exe process is spawned by another process (which runs the program). In that case I'm not actually sure whether lowering the priority of the process responsible for the Camworks Program, will in turn lower the priority of any new processes it spawns... that would need some testing.

If you can achieve it, lowering the priority is a better solution as it allows Windows to maximize your available CPU resources, but ensures that system remains usable.
 
Solution

kyledoestheastro

Reputable
Feb 23, 2015
2
0
4,510



I was able to find MS.exe in the program files of SolidWorks. I followed that guide and set the pre-defined priority and it seems to be working pretty good. You just saved me so much frustration, thank you!