Jump to content
Sign in to follow this  
Boeing100

P3D V4 - Can't get rid of microstuttering

Recommended Posts

If you reduce settings with AM, then it can introduce blurries as workers loading scenery cant do all their work. I manage this in v3 and v4. So I keep my HT on, and using AM 253, that first core is not taxed by thread core. It works best for me

To OP, at first runs, I had micro stutters. I'm on 4k and GPU is under full load, I set frame limiter and have better results. Then I find that buildings shadows casuing perf. hit - turned off. Last try was use of external FPS limiter - I used NI and 35FPS lock. I can't say that I'm fully stutters free, but it mostly solves all stuttering for me. That external FPS limiter was little surprising. When I set 35FPS in P3D, core 0 goes 100% mostly all day long, with external limit of 35FPS core 0 load is around 70-80% with same scenario. In all cases I have VSync on with triple buffering.

At least worth to try. My P3D profile is absolutely default except that frame limiter and AFx16 which I have set as default for all 3D apps.

Share this post


Link to post
1 hour ago, Jiri Kocman said:

If you reduce settings with AM, then it can introduce blurries as workers loading scenery cant do all their work. I manage this in v3 and v4. So I keep my HT on, and using AM 253, that first core is not taxed by thread core. It works best for me

To OP, at first runs, I had micro stutters. I'm on 4k and GPU is under full load, I set frame limiter and have better results. Then I find that buildings shadows casuing perf. hit - turned off. Last try was use of external FPS limiter - I used NI and 35FPS lock. I can't say that I'm fully stutters free, but it mostly solves all stuttering for me. That external FPS limiter was little surprising. When I set 35FPS in P3D, core 0 goes 100% mostly all day long, with external limit of 35FPS core 0 load is around 70-80% with same scenario. In all cases I have VSync on with triple buffering.

At least worth to try. My P3D profile is absolutely default except that frame limiter and AFx16 which I have set as default for all 3D apps.

thanks, which external FPS limiter do you use out of curiosity?

Share this post


Link to post
7 minutes ago, Boeing100 said:

thanks, which external FPS limiter do you use out of curiosity?

As I mentioned above, I use NI to set frame limit to 35FPS.

I do not see difference in smoothnes when internal frame limiter is in use, but CPU core 0 usage is lower when flying over areas where my rig can achieve more FPS without limit, which I can uderstand as there is less demand than HW is capable, but I do not know why I do not see same behavior with internal FPS lock.

There is some prove at 2:57 you can see cores load and then NI profile, around 6:15 you can see my P3D settings.

 

Share this post


Link to post

Stutters here with FPS locked at 30 and or VSYNC on.  Smoothe with No VSYNC / Unlimited.

 

Cheers

bs

  • Upvote 1

AMD RYZEN 9 5900X 12 CORE CPU - ZOTAC RTX 3060Ti GPU - NZXT H510i ELITE CASE - EVO M.2 970 500GB DRIVE - 32GB XTREEM 4000 MEM - XPG GOLD 80+ 650 WATT PS - NZXT 280 HYBRID COOLER

Share this post


Link to post
7 hours ago, Boeing100 said:

thanks AnkH

I've just launched a flight and am in climb out phase just now. What i'm noticing is a huge improvement in FPS/stuttering, however now I seem to be getting a case of blurries. My LOD radius is set to highest, and didn't get any blurries prior to setting the affinity mask. Is this a know issue and is there another tweak I need to put in place to reduce it?

http://www.prepar3d.com/forum/viewtopic.php?f=6315&t=124932

 

Postby Beau Hollis » Mon Jun 05, 2017 12:22 pm

1) If they are all the same speed, more is always better. Prepar3D can and will use all cores.
2) The speed of the primary core will be the determining factor FPS assuming your settings have you CPU-bound. For raw FPS, less cores at a higher clock will yield better results. On the other hand, more cores will improve the speed at which new terrain textures, and autogen data load in. Maxing out the new draw distance and terrain resolutions setting will request several times more data than v3 was able to. When paging performance isn't fast enough to keep up with flying speed, you will get blurry textures, models popping in, and reduced autogen draw distances.
3) We create a job queue per core (including HT cores). Background jobs do tasks like generating textures and loading terrain data.
4) More is always better. You'll need to check with each add-on provider for guidance on memory/GPU usage.
5) This really depends. Generally speaking it's simulation and rendering work. Cranking up traffic and using a heavy VC models with lots of draw calls will increase your work load quite a bit for example.
6) Not sure of the exact order here but the heaviest hitters are Dynamic Reflections, Shadows, Dynamic Lighting, Ultra Water (3D waves) and anti-aliasing.
7) This determines how many scenery model placements draw. Rather than using a percentage like autogen does, scenery models are tagged by the scenery dev as to which scenery complexity level they should draw in. For this reason, this setting can be very dependent on how add-ons are built. If an add-on really wants you to see every model, they may flag them all to show up on the lowest setting.
8) These setting are heavy hitters because they require rendering many additional 3D views which are sampled for creating shadows and reflections. 
9) This is happening because the textures haven't loaded in yet. We have a ticket to look into improving this. You might be able to improve this by tweaking some texture entries in the Prepar3D.cfg. I believe there is a bandwidth multiplier used to determine the number of textures per frame that can be streamed to the card. Increasing this might speed up texture loads at the cost of potential stutters on frames where large amounts of texture data are streamed.

  • Upvote 1

Floyd Stolle

www.stollco.com

Share this post


Link to post
Guest

In addition to what Beau has provided (Beau is the lead graphics developer and probably has the most experience with ESP code base so his comments are extremely valuable).  Item #6 in Beau's list is golden.

 On my 8/16 core PC (5960X and 6900K) and specific to P3D V4, keeping HT enabled and using all cores (physical and logical) except core 0/1 seems to work reasonably well especially if you have other processing that might be happening on Core 0/1 (i.e. TrackIR, nVidia video recording, SODE, UTLive, etc.).  

[JOBSCHEDULER]
AffinityMask=65532

FYI, I know there is some discrepancy to this information, but how I reference a CPU (same as how they are referenced in TaskMgr) ... 

5960X is ONE Physical CPU

5960X contains 16 logical processors when HT enabled

5960X contains 8 logical processors when HT disabled

5960X is referenced as 8C/16T when HT enabled ... 8C (cores) 16T (threads) capable of operating 16 execution threads at the same time (Asynchronous) ... in the programming world Synchronous means you execute one operation at a time and wait for the results before doing another operation (it's a little counter intuitive) ... Asynchronous means you don't wait for the operation to complete before doing something else.

I think the best way to reference a CPU and it's cores is to follow Intel's guide

7700K 4C/8T HT enabled

7700K 4C/4T HT disabled

3960X 6C/12T HT enabled

3960X 6C/6C HT disabled

6900K 8C/16T HT enabled

6900K 8C/8T HT disabled

5960X 8C/16T HT enabled

5960X 8C/8T HT disabled

Affinity Mask Calculator

I haven't tested AffinityMask settings on my 7700K yet.  But I highly encourage anyone using P3D V4 to experiment with AM settings.  The goal should be to balance out your CPU and GPU ... pegging either one or both at 100% is going to cause stutters.  The Lower you operate your monitor Refresh rate, the less stutters you'll have as you don't need to sustain higher FPS.

Also be aware that location and speed of travel will (and should) cause your CPUs to work very hard and you should see their work loads go up considerably ... 500 KTS flights (at 2000 ft) will produce drastically different CPU loads than 100 KTS flights.

In addition, as you increase Autogen draw distance and/or density AND you have Shadows for either or both enabled, you're increasing you GPU load considerably due to the additional shadows that must be rendered for the increase in Autogen.

For night time flying with Dynamic Lights enabled at airport in a complex aircraft like PMDG 747/777 that has DL lights, turn off Building, SimObject, Terrain shadows, keep AG at normal/medium (including draw distance), turn AA to either 2XSSAA or 2XMSAA (pending GPU loads and resolution).

There are many handy utilities to see your GPU loads that will display while flying (EVGA Precision X) and CPU loads (taskmgr is built into your OS).

The only thing I can assure you that with current hardware, MAX everything with a bunch of add-ons is only going to lead to FPS frustration and lots of stutters.

Cheers, Rob.

Share this post


Link to post
17 hours ago, Boeing100 said:

Good morning PurdueKev

Many thanks for this, I tried and can confirm the stuttering is nearly completely gone now!

I've set affinitymask to 85, turned off vSync in P3d and NCP with FPS set to unlimited ( I also have a G SYNC monitor). My FPS is now more stable between 35-40fps, even using heavy 3rd party add-ons likes the PMDG 747 at EHAM.

However I do have a follow up question if you don't mind. My total CPU utilization in task manager is around 48%, but looking at the individual cores, cores 1, 5 and 7 barely have any load while core 0 is near 100% and cores 4 and 6 around 90%. So it seems to mean the majority of the CPU load is being taken up by 3 out of the 8 cores. Would you know if this is normal behavior? Does it have to do with HP? I've never disabled hyperthreading so assumed it must still be on (no specific menu I can select in my BIOS)

Many thanks

That is great!

I am not an expert on how CPU threading works - my knowledge is just from reading posts by some of the smart folks around here like Rob - but that sounds about right.  My understanding is that there is likely going to to be one main thread maxed out, and 2 or 3 others running at a lower utilization.  Cores 0, 2, 4, and 6 are your physical cores, and 1, 3, 5 and 7 are the virtual ones you get from hyperthreading.  This is all very hardware specific, but since we both have 6700k CPU's I thought perhaps you would be helped as I was.

AM=85 is the exact same setting I had for v3 on this same computer, so at least for me it works much better to have P3D only running on the physical cores, and let Windows manage the other add-ons.

When I say "much better" for me it is not just a matter of degrees - with AM=85 there is essentially zero stuttering and almost DCS-type smoothness, whereas without it I would see stutters every second or two especially when panning with Trackir.  As Rob said, this is probably something with the specific add-ons I am running that P3D just works best only on the physical cores.  I don't turn HT off because I don't have a flight-sim-dedicated rig, and I want the extra multi-threaded performance for other stuff.

Note I am OC'd at 4.5 Hz - I don't know if you are as well.

I definitely do not max all my settings - my 980 Ti is not strong enough for that (can you believe we are saying that?).  But I don't feel I have to make undesirable compromises in the settings in V4 like I did in v3.  And v4 is definitely WAY smoother.

I would say if you are happy with the performance now, leave everything alone and go fly!

EDIT:  I just noticed you also talk about seeing blurries - I increased TextureMaxLoad to 30 and have FFTF at 0.10, just like I did in V3.  That fixes blurries and slow texture loading for me.  Essentially my only config tweaks are the same ones I had in v3 - Affinity Mask, TextureMaxLoad and FFTF. I could probably be fine without FFTF but I like the extra frames I get with it.  The Help documentation supplied by Lockheed Martin describes where those entries go, as does Rob's excellent P3D guide (much of which still applies).

  • Upvote 2

- Kevin

Windows 10 / i9-10900k / Zotac RTX-3080 Trinity OC (12GB) / MSI MEG Z490 ACE mobo / Corsair H150i RGB PRO XT liquid cooler / 32GB Corsair Vengeance LPX 3333MHz C16 DDR4 RAM / Dell Alienware AW3418DW WQHD 3440x1440 GSync / Samsung 970 EVO Plus M.2 2TB (OS) & 860 EVO 4TB SDD / WD Caviar Black 4TB HDD  / EVGA Supernova 850 G5 PSU / Be Quiet Dark Base Pro 900 rev 2 case / Virpil Warbird base with ThrustMaster Warthog HOTAS grip / MFG Crosswind rudder pedals / Virtual-Fly TQ6+ throttle quadrant / Winwing Orion HOTAS F-18 Throttle / Virpil TCS+ collective base with Hawk-60 grip / Saitek Trim Wheel / Saitek Radio and Switch Panels / Winwing Combat Ready Panel / Tobii 5

Share this post


Link to post
On 14.6.2017 at 0:49 AM, Rob Ainscough said:

keeping HT enabled and using all cores (physical and logical) except core 0/1 seems to work reasonably well

Hi Rob,

did you mean to set AM to stay away off core 0 the first logical process only eg. AM 254 on an i7 6700k? Or out off core 0 and thread 1, (2 logical processes), AM 252?


Regards, Perry

Share this post


Link to post

Also was having severe problems with micro-stutterings. Fps were going from 50 to 20 in a matter of seconds. Using AfMask 85 helped a bit. Frustrating that we still have to resort to these kind of tweaks in 2017. Just shows that the platform is still pretty much the same as FS9/FSX...


PC1: AMD Ryzen 7800X3D | Zotac RTX 4090 Trinity | Asus TUF X670E-Plus | G.SKILL Trident Z5 NEO 32GB DDR5 PC 6000 CL30 | 4TB NVMe  | Noctua NH-D15 | Asus TUF 1000W Gold | be quiet! Pure Base 500DX | Noctua NH-D15S | LG OLED CX 48"

PC2: AMD Ryzen 7700X | PowerColor Radeon RX 6800 XT Red Dragon | MSI MPG B650I EDGE  ITX | G.SKILL Flare Expo X5 32GB DDR5 PC 6000 CL32 | 2TB NVMe  | Cooler Master Hyper | Lian Li 750W SFX Gold | Lian Li TU150 | SAMSUNG Odyssey G9 49"

GoFlight GF-PRO NG 737 Yoke System - Thrustmaster HOTAS Warthog - Honeycomb Bravo Throttle - MFG Crosswind Rudder Pedals - TrackIR - Stream Deck XL + Stream Deck Plus
 

Share this post


Link to post

Don't try to tell P3D or the OS what to do.  Best practice these days is to forget the Affinity_Mask and bufferpools thing and let the OS / APP work as designed.  I am a tweak hound but have modded only the most simple of settings for V4.  Works out-of-the-box as they say.

 

Cheers

bs


AMD RYZEN 9 5900X 12 CORE CPU - ZOTAC RTX 3060Ti GPU - NZXT H510i ELITE CASE - EVO M.2 970 500GB DRIVE - 32GB XTREEM 4000 MEM - XPG GOLD 80+ 650 WATT PS - NZXT 280 HYBRID COOLER

Share this post


Link to post

P3D "without an Affinity Mask" is impossible.

 

No AM means AM=0 to P3D, and AM=0 means all Logical Processors will be utilised - on four cores that's binary 1111 = decimal 15.

But wait - If Hyperthreading is enabled then that means binary 11111111 = 255 decimal.

Except we still *only have four processors* so if we use binary 01010101 to maintain that one core per sim process since there are two LPs per core. I use the nomenclature of spacing each pair with a comma so we can see at a glance we mean HT is enabled 01,01,01,01 = 85 which is a less confusing way of denoting what the AM means.

 

Remember what the P3D manual states: P3D is designed to move work off of cores if it can find enough - and with four it's found enough cores to split its work across those four cores and it claims the rendering stage is leanest - more cores won't gain any more rendering performance - notice the maxed out first LP?

Turn on HT and if we allow it to congregate that work onto more HT LPs of the same physical core we lose the very performance we could be gaining from such clever programming.

 

Best thing to do to maintain best rendering performance is keep any addon exe app activity away from the first two processors used by the sim, other LPs are running background tasks that can take many seconds to complete. We can increase background throughput by using more cores or LPs than four HT enabled 11,11,01,01 = 245 increases the loading intensity of the last two cores but leaves the first two cores running just one sim process - they make up the rendering stage.

When we have CPU containing a great many cores we still might not want the sim to break into more than four or six parts and so we will start to use AMs rather more knowledgably by then

  • Upvote 1

Steve Waite: Engineer at codelegend.com

Share this post


Link to post

Terribly sorry but I'm a little confused with this topic...

I don't have an Affinity Mask in my config. Should I add one? And what should I add? (I have a Core i7 6700HQ)


Best regards,
--Anders Bermann--
____________________
Scandinavian VA

Pilot-ID: SAS2471

Share this post


Link to post

Try it both ways.

 

Regards

bs


AMD RYZEN 9 5900X 12 CORE CPU - ZOTAC RTX 3060Ti GPU - NZXT H510i ELITE CASE - EVO M.2 970 500GB DRIVE - 32GB XTREEM 4000 MEM - XPG GOLD 80+ 650 WATT PS - NZXT 280 HYBRID COOLER

Share this post


Link to post

Some systems have no addon exe apps, some have many, these make a bigger difference than adding AMs to P3D. But first we must get the AffinityMask (AM) right for P3D and then worry about the addon exe apps.

 

Hyperthreading (HT) OFF use no AM:

1111 - with no AM P3D makes use of each core so with four cores is the same as using AM 15.

1100 - with a bat file or app start addons on third and fourth cores only

if we have active addon exe apps during the flight start them with a bat file, if we don't want to make a bat or start with an app use AM=14=1110, instead the sim will only use three cores but the first core will be free and attract the activity created by the addons and the setup works well - just not the best. In the binary representations the cores are from Right to Left, numbered zero to three. 

 

Hyperthreading (HT) ON use an AM:

01,01,01,01 = AM = 85. When the sim is running well, the jobsheduler will move other work off of the first logical processor (LP, the '1' on the right) to other LPs. We want to start our addon exe apps in the same way on the third and fourth cores using LPs 5 and 7 10,10,00,00, the sixth and eighth LPs.

With HT enabled we can sometimes improve the performance of the background loading data with more LPs enabled 11,11,01,01 = 245 this puts more work onto the third and fourth cores leaving the first and second running the rendering and other duties a core to themselves so they can continue to keep flowing well. With more than four LPs enabled we may see a small decrease in outright rendering performance because there's a little more to do and they consume more CPU resources, but they do more work.

 

Again as with out HT Off and AM=14=1110 setup we can forget addon exe apps and use AM=116=01,11,01,00, we see that mentioned around often. Reason is as with HT Off it leaves the first core free (core zero on the right = ',00') for addon exe apps, but with HT enabled performs better where the second and third jobs share the third core (core 2 = ',11').

 

Remember overclockers that HT enabled and doubling up processes onto both LPs of the same core is sharing the same core doing more work and so will increase the heat.

 

  • Upvote 1

Steve Waite: Engineer at codelegend.com

Share this post


Link to post
On 6/16/2017 at 7:20 PM, bean_sprout said:

Don't try to tell P3D or the OS what to do.  Best practice these days is to forget the Affinity_Mask and bufferpools thing and let the OS / APP work as designed.  I am a tweak hound but have modded only the most simple of settings for V4.  Works out-of-the-box as they say.

 

Cheers

bs

Respectfully, that may certainly be true for your specific hardware set-up or combination of add-ons, but I have set up controlled testing on my system (overclocked 6700k, with Trackir, Active Sky and Spad.Next running) with and without various AM settings and there is very stark difference.  The behavior is in-line with what Steve described.  With AM=85, there is zero stuttering; without it (default), there are very pronounced stutters every second or two.

The Affinity Mask setting is an LM-supported advanced option in the config file that is described in their Help documentation.

 

  • Upvote 1

- Kevin

Windows 10 / i9-10900k / Zotac RTX-3080 Trinity OC (12GB) / MSI MEG Z490 ACE mobo / Corsair H150i RGB PRO XT liquid cooler / 32GB Corsair Vengeance LPX 3333MHz C16 DDR4 RAM / Dell Alienware AW3418DW WQHD 3440x1440 GSync / Samsung 970 EVO Plus M.2 2TB (OS) & 860 EVO 4TB SDD / WD Caviar Black 4TB HDD  / EVGA Supernova 850 G5 PSU / Be Quiet Dark Base Pro 900 rev 2 case / Virpil Warbird base with ThrustMaster Warthog HOTAS grip / MFG Crosswind rudder pedals / Virtual-Fly TQ6+ throttle quadrant / Winwing Orion HOTAS F-18 Throttle / Virpil TCS+ collective base with Hawk-60 grip / Saitek Trim Wheel / Saitek Radio and Switch Panels / Winwing Combat Ready Panel / Tobii 5

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  
  • Tom Allensworth,
    Founder of AVSIM Online


  • Flight Simulation's Premier Resource!

    AVSIM is a free service to the flight simulation community. AVSIM is staffed completely by volunteers and all funds donated to AVSIM go directly back to supporting the community. Your donation here helps to pay our bandwidth costs, emergency funding, and other general costs that crop up from time to time. Thank you for your support!

    Click here for more information and to see all donations year to date.
×
×
  • Create New...