Jump to content

You're browsing the 2004-2023 VATSIM Forums archive. All content is preserved in a read-only fashion.
For the latest forum posts, please visit https://forum.vatsim.net.

Need to find something? Use the Google search below.

Dual-Core Users


Michael Hess 1046854
 Share

Recommended Posts

Michael Hess 1046854
Posted
Posted

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

Garry Morris 920567
Posted
Posted

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.

Link to comment
Share on other sites

Luke Kolin
Posted
Posted
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

Michael Hess 1046854
Posted
Posted

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

Luke Kolin
Posted
Posted
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

Michael Hess 1046854
Posted
Posted

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

Ryan Whitford 995253
Posted
Posted

haha funny to mention I experimented with this a while ago, THanks for the advice!!

http://www.allegiantva.org Join if you have skill!

wideloadwhitford.png

allegiantvabanner.png

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

Erhan Atesoglu 1050499
Posted
Posted

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.

Link to comment
Share on other sites

Michael Hess 1046854
Posted
Posted

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

Luke Kolin
Posted
Posted
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

Michael Hess 1046854
Posted
Posted

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

Luke Kolin
Posted
Posted
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

Erhan Atesoglu 1050499
Posted
Posted

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.

Link to comment
Share on other sites

Luke Kolin
Posted
Posted
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

Erhan Atesoglu 1050499
Posted
Posted

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.

Link to comment
Share on other sites

 Share