Michael Hess 1046854 Posted April 1, 2009 at 04:29 AM Posted April 1, 2009 at 04:29 AM For those of you that still use FS9 (I'm sure there are still some of you out there ), you may have noticed that it only uses one processor. Now, this will slow your FPS and computer considerably. To check whether FS9 is using both your processors, or only one, Ctrl-Alt-Del and bring up the Task Manager. Click on the "Performance" tab If FS9 is only using one processor, the left box will probably be maxed out, or very close top the top. To fix this: Click on the "Processes" tab Find fs9.exe Right-click and select "Set Affinity" Uncheck one of the boxes Right-click and select "Set Affinity" again Re-select the box that is unchecked Now FS9 should be using both processors! I wish you many FPSs! -Cheers! Michael Hess ZMP Webmaster Link to comment Share on other sites More sharing options...
Garry Morris 920567 Posted April 1, 2009 at 12:20 PM Posted April 1, 2009 at 12:20 PM Does this actually work or does it just have the appearance of working? If a program isn't actually designed to run on multiple processors/cores, isn't designed to open multiple threads across processors and track their state, I don't see how checking and unchecking affinity boxes will actually result in suddenly causing it to do so. http://www.execjetva.com Link to comment Share on other sites More sharing options...
Luke Kolin Posted April 1, 2009 at 02:39 PM Posted April 1, 2009 at 02:39 PM If a program isn't actually designed to run on multiple processors/cores, isn't designed to open multiple threads across processors and track their state, I don't see how checking and unchecking affinity boxes will actually result in suddenly causing it to do so. Quoted for truth. There are certain basic laws of the NT kernel scheduler that you simply cannot get around. Cheers! Luke ... I spawn hundreds of children a day. They are daemons because they are easier to kill. The first four remain stubbornly alive despite my (and their) best efforts. ... Normal in my household makes you a member of a visible minority. Link to comment Share on other sites More sharing options...
Michael Hess 1046854 Posted April 1, 2009 at 09:43 PM Author Posted April 1, 2009 at 09:43 PM This actually does work, you can see proof by looking in the "Performance" tab. If done correctly, you will see that the first processor has considerably less load when running FS9. NOTE: I realize the bad timing of this; It is NOT an April Fool's joke -Cheers! Michael Hess ZMP Webmaster Link to comment Share on other sites More sharing options...
Luke Kolin Posted April 1, 2009 at 10:06 PM Posted April 1, 2009 at 10:06 PM This actually does work, you can see proof by looking in the "Performance" tab. If done correctly, you will see that the first processor has considerably less load when running FS9. All that's changed is that you've moved a thread or two onto a different CPU (which the NT scheduler can do anyways). You haven't changed the aggregate CPU usage, and you're not going to get any increased performance. On a dual-core box, you're still not going to get above 50% utilization for the process. If it makes you feel better, go right ahead, but there are certain basic truths about OS schedulers that you simply cannot get around. Cheers! Luke ... I spawn hundreds of children a day. They are daemons because they are easier to kill. The first four remain stubbornly alive despite my (and their) best efforts. ... Normal in my household makes you a member of a visible minority. Link to comment Share on other sites More sharing options...
Michael Hess 1046854 Posted April 1, 2009 at 10:12 PM Author Posted April 1, 2009 at 10:12 PM Well I certainly have. Before I used this fix, my left CPU was maxed out almost continuously when running FS9. The right CPU had a very low load. After the fix, both CPU's are at about 50% usage when running FS9. I also get increased framerates, and am able to fly the PSS 757 in a snowstorm while running Active Sky. Could just be a coincidence... -Cheers! Michael Hess ZMP Webmaster Link to comment Share on other sites More sharing options...
Ryan Whitford 995253 Posted April 1, 2009 at 10:13 PM Posted April 1, 2009 at 10:13 PM haha funny to mention I experimented with this a while ago, THanks for the advice!! http://www.allegiantva.org Join if you have skill! Windows 7 Ultimate (64) Intel i7 2600k 4.2 Ghz Gskill Ripjaws 8GB 1600 750 WD Nvidia 560 Ti 1GB Link to comment Share on other sites More sharing options...
Erhan Atesoglu 1050499 Posted April 1, 2009 at 10:16 PM Posted April 1, 2009 at 10:16 PM Any advantage you're going to see is a result of the Windows scheduler as Luke said. setting the affinity only restricts things, it doesn't untap any hidden computing power. http://www.pond64.net Link to comment Share on other sites More sharing options...
Michael Hess 1046854 Posted April 1, 2009 at 10:18 PM Author Posted April 1, 2009 at 10:18 PM But by doing this, it will allow FS9 to use both processors, instead of being restricted to one. Of course it's not going to ADD any extra CPU or anything, but it will allow FS9 to run faster, because it has more processing power available to it. -Cheers! Michael Hess ZMP Webmaster Link to comment Share on other sites More sharing options...
Luke Kolin Posted April 1, 2009 at 10:24 PM Posted April 1, 2009 at 10:24 PM But by doing this, it will allow FS9 to use both processors, instead of being restricted to one. Of course it's not going to ADD any extra CPU or anything, but it will allow FS9 to run faster, because it has more processing power available to it. You don't understand - you're not getting any additional processing power. The scheduler on any modern OS (NT, Linux) limits threads to running on a single core at a time. FS has several threads running, but there's one thread that takes up the vast majority of execution time, and my guess is that other threads block waiting on some critical sections in said thread. Switching the affinity around may change which threads execute on which CPU, but it doesn't change the basic inability of the software to take advantage of all the CPU power. Look at the process list in Task manager - you should see FS9.exe take up 50% on a dual-core system, or 25% on a quad-core. If you're truly gaining processing power, make that number go to 100. Then I'll be impressed. Cheers! Luke ... I spawn hundreds of children a day. They are daemons because they are easier to kill. The first four remain stubbornly alive despite my (and their) best efforts. ... Normal in my household makes you a member of a visible minority. Link to comment Share on other sites More sharing options...
Michael Hess 1046854 Posted April 1, 2009 at 10:34 PM Author Posted April 1, 2009 at 10:34 PM But what this does is OVERRIDE that scheduler, and allows FS9 to run on both cores. -Cheers! Michael Hess ZMP Webmaster Link to comment Share on other sites More sharing options...
Luke Kolin Posted April 1, 2009 at 10:35 PM Posted April 1, 2009 at 10:35 PM But what this does is OVERRIDE that scheduler, and allows FS9 to run on both cores. It always could. Again, make FS9.exe stay above 50% utilization on a dual-core box, and get back to me. Cheers! Luke ... I spawn hundreds of children a day. They are daemons because they are easier to kill. The first four remain stubbornly alive despite my (and their) best efforts. ... Normal in my household makes you a member of a visible minority. Link to comment Share on other sites More sharing options...
Erhan Atesoglu 1050499 Posted April 2, 2009 at 01:20 AM Posted April 2, 2009 at 01:20 AM Easy way to look at it... processes are your main application, threads are individual processes within your application that do not nead the additional overhead a full process requires. Thus when a program needs to split off it can instantly do it inside of a thread, instead of asking the operating system to create an entirely new process which can take time especially if your low on memory. However bit by bit they were moving certain threads such as the autogen over to the other processors. This does require you to create a new process on the other processor, and at that time the FS code sets the affinity of the new process to something that isn't the current processor. This gets even complicated with the fact that these definitions aren't entirely consistant between Unix and Windows OS. And Intel Hyper Threadign just adds to the mess. Although from a C++ standpoint they are very similar. http://www.pond64.net Link to comment Share on other sites More sharing options...
Luke Kolin Posted April 2, 2009 at 01:26 AM Posted April 2, 2009 at 01:26 AM Easy way to look at it... processes are your main application, threads are individual processes within your application that do not nead the additional overhead a full process requires. Thus when a program needs to split off it can instantly do it inside of a thread, instead of asking the operating system to create an entirely new process which can take time especially if your low on memory. Unless you're talking about green threads, both threads and processes are created by the OS. However bit by bit they were moving certain threads such as the autogen over to the other processors. This does require you to create a new process on the other processor, and at that time the FS code sets the affinity of the new process to something that isn't the current processor. No. If you want to run things on a different core, you spawn a separate thread. You don't need to create a separate process unless you're dealing with an old (<2.4) Linux kernel or some other ancient OS. There are plenty of multi-core pieces of software (FSX is a great example) that are still a single process. Cheers! Luke ... I spawn hundreds of children a day. They are daemons because they are easier to kill. The first four remain stubbornly alive despite my (and their) best efforts. ... Normal in my household makes you a member of a visible minority. Link to comment Share on other sites More sharing options...
Erhan Atesoglu 1050499 Posted April 2, 2009 at 06:20 PM Posted April 2, 2009 at 06:20 PM Luke: nope I'm pretty sure I said C++... so obviously I'm implying a POSIX implemantation of threads and processes. Not Java or particular Windows for that matter so I'm not quite sure what you mean by green threads. And for Windows you would actually trigger an event to a process/thread that's already running/stopped. Windows you never really create a process to begin with, you just join the main process, with your own stack and heap. A windows program by definition is always a threaded application. So anything that is thread-safe will automatically run on a seperate processor. Anything that isn't thread safe will always have to be restricted to same processor. So bottom line the advantage FS9 gets from running on multiple-cores are a result of the heavy use of the Windows API. And there is an advantage... there just isn't any advantage in setting the affinity yourself. Let windows decide. http://www.pond64.net Link to comment Share on other sites More sharing options...
Recommended Posts