Skip navigation

WARNING: The information and techniques you are about to see require above average knowledge of Windows operating system and hardware to function properly. It is provided as an example of additional techniques to increase legacy software (FSX) performance. Although no software or hardware damage can come as a result of these techniques, your FSX performance can be totally hosed with an incorrect implementation.

Much has been written about core affinity and thread priority in the FSX community. At best, this information has been incomplete/misunderstood. At worst, it has been flat out wrong. These are not “tweaks”, they are carefully designed elements of the Windows operating system kernel. Under most circumstances, they are not designed to be manually manipulated.

Based on our RW work in application migrations and system upgrades, we designed and  have been using a command line batch file to launch our FSX environment for several months. This command file sets several parameters to optimise affinity and priority.

cd ..\controls copy nojoystickdefstandard.xml standard.xml /y

cd C:\FlightSim\NaturalPoint\TrackIR5

start /affinity 0x01 trackir5.exe /min

cd C:\FlightSim\SPAD

start /affinity 0x01 spad.exe /min

cd C:\FSX\modules

start /affinity 0x01 linda.exe

cd ..

start /high /affinity 0x0e /max fsx.exe %*

cd c:\opusfsx

start /affinity 0x01 fsxserver.exe

We are doing 3 things with these commands:

  1. Ensuring that there are no joystick button assignments in FSX config
  2. Setting all the FSX auxilary apps to run only on processor core 1 at normal thread priority
  3. Setting FSX.exe to run on processors 2-4 at “high” thread priority

You will read many things from FSX users who have experimented with these settings, most of which is incorrect. For example:

“I have to run TrackIR at high priority with OpusFSX to get smooth movement” Not true, if you have TrackIR scan speed set to the minimum in Opus and have made sure you do not have head movement conflicts with other simconnect apps such as AccuFeel. In fact, if TrackIR is the only app set to high priority, you can get degraded FSX performance.

“When I set FSX (only) affinity, I get degraded FSX performance.” A very likely scenario. The key to using core affinity is to separate FSX from it’s auxilary applications. If you do not also assign (non-conflicting) affinity to the other apps, you may have just constrained FSX even more than normal.

“When I set FSX (only) to high priority, my add-ons don’t work properly and/or I get degraded FSX performance.” Another highly likely scenario if affinity is not used in conjunction with thread priority. A common issue with this config is joystick software not working correctly. If joystick software is running at normal priority on the same processor core as FSX and FSX is set to “high” priority, the joystick software will not get it’s “turn” to be processed until FSX takes a break.

If you would like to experiment with affinity and priority, we would recommend you purchase FSXAssist from SkyPilot Software. The software provides a GUI to change these settings in a human friendly way. Jim Allen, the author of FSXAssist, truly understands affinity/priority and how to make them work with FSX environment. I purchased FSXAssist and was very impressed with the software and with Jim’s support. He has done several updates based on customer feedback and the product is better than ever. Reading Jim’s help page about FSXAssist is an education by itself.

(Full disclaimer: We are no longer using FSXAssist but for reasons beyond the capability of the software. No issues period with SkyPilot or FSXAssist. More on why later.)

FSXAssistHelpFSXAssist configuration screen

We will be updating our system software list soon. Also, as we noted, as the project’s physical construction winds down, posts about the software engineering will increase.

ADDENDUM: We asked Jim Allen of SkyPilot software for permission to mention him and to review our post. He graciously assented and had some further observations about a couple of our points.

In reference to problems with joystick/input devices while FSX is running at high priority, Jim finds:

“Regarding joysticks and input devices in general – keep in mind that USB device polling is an OS / driver function primarily.  As a result the OS priority of the associated input device software has a small (if any) affect on its responsiveness.  

… if you run FSX with say a REALTIME priority it should in theory poll the input device at a faster rate.  We have found that Windows 8 device dropouts were less of and issue when running FSX in REALTIME mode.  At the same time, if you unplug your stick for a few seconds and then rengage, FSX WILL NOT sense it while the device will still appear to be connected in the Windows 8 Control Panel.

This could be because FSX is written for an older D3D API (DirectX 9) as opposed to the default Windows 8 D3D API which is D3D 11.

It is also a possibility that FSX (since it was published before USB 3.0) is looking for USB 2.0 type reconnect signal that the USB 3.0 interface does not provide.  At any rate FSX is not receiving the appropriate reconnect signal from the USB port when running on Windows 8.”

With regard to high-end Intel processor systems and FSX, we had read several places where affinity/priority mods did not have as a great a positive effect on FSX when compared to doing the mods on a lower spec’d computer system. Jim’s research and experience do not agree with this assertion. He writes:

“…we have found that the users that are most happy with FSXAssist are those with HIGH END systems running HyperThreading.  The reason is that when running FSX at the highest priority with all cores (real or virtual) except for the first, FSX has the breathing room to offload work (worker threads) and gives it more overall CPU cycles which in turn boost overall performance. Of course this assumes that a good GPU solution is in place as it is a requirement for optimal CPU / GPU synchronization.”

%d bloggers like this: