Tweaking FSX.CFG

There are 2 primary influences on a smooth presentation of sceneries:
1. How much you want the program writes on screen
2. How capable the machine is in getting data from the hard disk and put it into the rendering machine.

The purpose of tweaking fsx.cfg is to minimize influences that have a negative impact on the frame rate. Nothing more, nothing less!

The file fsx.cfg is located in:
Windows XP:
C:Documents and SettingsYourNameApplication DataMicrosoftFSX
or when you are using
Windows 7/8:

Before making any changes, backup your original file and read this article first.
Tweak 1: Jobscheduler
(for all single- dual- and multi core machines)

AffinityMask=0 //for single core machines
AffinityMask=3   //for dual core machines
AffinityMask=7   //for triple core machines
AffinityMask=15 //for multi core machines
Select one of the lines which is appropriate for your machine.

Tweak 2a: Settings – Display – Graphics

Remind that all sliders are limiters and NOT to be a predefined setting!

Global Texture Resolution: has little to no impact on frame rate;
Lens flare has little impact on frame rate (box Checked);
Light bloom is a killer for frame rate, so unchecked the box;
Advanced Animations has a high impact on frame rate; Advanced animations controls the drawing of people, animals, etc.
Some aircrafts (PMDG-Aerosoft) require Advanced Animations to be checked, otherwise the fuselage is not drawn properly;
Filtering & Anti Aliasing: AA smooths fagged lines; filtering improves crispness of textures; recommended AA check-box= unchecked;
Filtering = trilinear; use windows control panel to set the graphic card;

Tweak 2b: Settings – Display – Scenery
Scenery objects controls the number of trees and buildings in a cell (1 cell= 1 km x 1 km); The guys from ACES tell us that 50 x 1 km square cell/ frame is max number of trees per cell= 4500: setting slider to max= 250000 trees; recommended 1000 trees and 800 buildings…which makes the following statement for the fsx.cfg file:
Set slider in mid position and check;
Terrain and water:
Level of detail radius is the size of the circle that the Sim fills with detail: a smaller circle results in less calculation; recommended setting is medium to small;
Mesh Complexity is the world underneath;
Mesh resolution is the size of the triangles that are drawn; recommended settings is medium;
Texture resolution: the smaller the value, the finer the level of variation; add/change to fsx.cfg the following:
n=30 ./, 40 for single and dual core and n=70./.90 for quad core processor machines
This value equals the target frame rate for calculating how much texture data to load into the graphic card each frame;
Set the maximum value just under the fps as required in the game; FPS=30 than TBM=25; the minimum value is 10;

Some other handsome tweaks that disable screen notification:

Add also to fsx.cfg:
//@FSX SP1 value =4000000
//@FSX 1st Release value =1000000

The BUFFERPOOL value reserves the amount of memory for generating landscape mesh; setting this argument too high, than is the memory not functional; setting this value too low than the disk is taking over this function (page filing) with as a consequence a stuttering frame rate;

And now a difficult one… read twice to understand:
Fiber Frame Time Fraction
(for single processor machines only!)
This argument is placed in the [MAIN] section of fsx.cfg;


Tasks that the processor executes, are called threads;
Threads are given priority by the operating system;
Fibers are using time slots and are generated by FSX to figure out detail;
When the Fiber Time Slots are too narrow to complete the task, you end up with blurries in the terrain;
FFTF defines the maximum amount of time per frame that the fiber tasks will be run on the primary thread; The sim times how long it takes to run the simulation and then renders it to the graphics card. This time multiplied by the FFTF value, gives the total time dedicated to the fiber.

If the value is too high, than the fibers get pre-empted by other subsequent threads and thus is unable to do the work and therefore is missing frames;
If the value is too low,than the fiber has too less time to do the work before the next thread takes over.

Reduce FFTF value to 0,2 or 0,1 and check the result; view out of the window, look at stability of the frame rate; when the value is too high you get fluctuation of frame rate, when the value is too low you see a ton of blurries…

search in your fsx.cfg the following statement and change if applicable.

Default value is 6. Recommended value is 4. Max. 7

Automated Tweaking and Tuning Tool for FSX

This resource is no longer available

highmemfixWith this link you get a tweaking tool for FSX SP2 en FSX Acceleration.

The tool works as follows:
after filling the values of number of threads, speed of your CPU, type of graphics card and optimization preference, you will be asked to send the config file: fsx.cfg.
With Step 1 it will open the file, so skip this step! and continue with Step 2 and browse with the BROWSE button to:
Then press: Click here to begin.
A copy of the file is sent and analyzed.
After the analyzing you get a choice to upload a modified fsc.cfg. In this new file the tweaks are present.

results-fpsThese are the results for my personal fsx.cfg, which I downloaded and replaced with the generic one. (Rename the existing original fsx.cfg into fsx_old.cfg)


Under the hood…

HIGHMEMFIX (is not valid vor FSX-SE)
Enables the D3DXFX_LARGEADDRESSAWARE flag to be passed to all the Shader Compile functions in FSX (eg. D3DXCreateEffect, D3DXCreateEffectFromFile etc.) so that when FSX uses more than 2GB of memory, the D3DX Effects system ALSO is permitted to use this upper memory space. Without HIGHMEMFIX FSX will crash when switching views, alt-tabbing or simply textures will get corrupted after a long flight and if using resource hungry add-ons. This was a ‘BUG’ MS simply forgot to enable HIGHMEMFIX by default. ESP/Prepar3D has this enabled by DEFAULT.

Will ‘cap’ the amount of data that is sent per-frame to the Dynamic Vertex Buffers. Originally, FSX had this value set to 2MB, a big NO NO for Dynamic Index and Vertex buffers. When using Dynamic buffers the most efficient way to increase performance is to send ONLY the amount of data streamed to the card per single frame, usually this is 128-500 KB. The UsePools=0 option will also make performance better, because the Dynamic vertex buffers are bypassed, however, this creates a problem because of the way FSX is programmed (Lock/Unlock of Dynamic Vertex Buffers). Having UsePools=0 means that the CPU can stall the GPU with requests (they go directly into the card’s command buffer) and not the Index/Vertex buffers so FSX has no way to control the ‘flow’ of data. This two options behave differently depending on your hardware. For example, if you have a VERY fast card, then having Dynamic buffers (RejectThreshold) with a small value will yield the absolute best performance. In your card is not fast enough, then you are better off with UsePools=0. All newer cards (eg GTX400 series), MUST use RejectThreshold instead of UsePools=0. The performance improvement for this change is remarkable.

vSync FIX
FSX included two options to enable vSync, but they were deprecated, not used anymore. ‘real’ switches to enable vsync in FSX were discovered in April 2010 by a dedicated FSX user (that would be me). Enabling vSync eliminates ‘tearing’ but also reduces your FPS in half (to 30) due to the inability to keep 60 FPS constant. If 30 can not be kept, then FSX will fall to 20, then 15, 12 and so on.. that’s why it is SO important to lock your frames EXTERNALLY to either 30 or 20.. you have to use multiples of 60 for optimal results. You also have the option to disable vSync completely by unchecking the corresponding option when providing information about your configuration in the previous page.

[GRAPHICS] TextureMaxLoad
Affects the ‘throttling’ algorithm FSX uses when pumping textures per-frame. This value, defaults to 3, which is extremely LOW, current hardware is more than happy with this value set to 30, SPECIALLY when running frames UNLIMITED and locking your frames externally.

SWAP_WAIT_TIMEOUT For maximum benefit, this setting requires a HIGH TextureMaxLoad value, with a low SWAP_WAIT_TIMEOUT setting (such as 2) you are telling the terrain engine in FSX that in should only wait ’2′ frames, before looking for terrain tiles in Video Memory. The loading speed of terrain textures is affected by TextureMaxLoad

Unlimited frames / External Frame locking: It might sound ‘confusing’ to ask you to set FSX to unlimited frames and at the same time ask you to LIMIT them externally. The reason, is because FSX is ‘optimized’ to process terrain loading on your additional CPU’s but ONLY when frames are set to unlimited. Unfortunately, running frames to unlimited also stresses FSX unnecessarily, so to counter this you need a very simple app that limits your FPS so CPU/GPU usage within FSX is kept constant to reduce stuttering due to CPU spikes. The tool can be downloaded here you need WinRAR (a program similar to WinZip) in order to open the file. You’ll notice that FPS fluctuates a bit when using the FPS limiter, don’t worry this is completely normal, most of the time it will maintain FPS constant which is what you need.

AffinityMask is determined automatically based on your current hardware configuration so it uses only 3 cores (Main scheduler and two texture managers) leaving core 0 free for fibers which handle terrain loading.