Forum Discussion

Re: Troubleshooting advice for 2042 issues

Simple tip. May be usefull for you too. I have enabled manually the Resizeable BAR for Battlefield 2042 using NVIDIA Profile Inspector. This gave me over 4% FPS increase and no more stuttering.

I am on NVIDIA 496.84 HF driver. Gear: RTX 3090 & 10900KF.

To do that, find the following flags and set values accordingly:

0x000F00BA : 0x00000001

0x000F00BB : 0x00000001

0x000F00FF : 0x0000000040000000

Of course, your rig has to support the reBAR (enabled in motherboard's BIOS, proper GPU vBIOS with this feature).

16 Replies

  • To prove the above. The same map, same atmospheric conditions (sunny).

  • Hi,

    Another part of performance improvement tips. My CPU is i9-10900KF 10C/20T.

    We all know that BF2042 is heavy CPU dependent. This may and will influence DLSS functionality - higher the upscaling is = the higher load on CPU is required, but unfortunatelly there is no space for additional workload... Therefore some of us does not see FPS improvements with DLSS enabled. I have noticed, that playing DLSS=balanced or DLSS=performance my GPU utilization is around 70-80% and CPU utilization is around 30-35%. Something is not right.

    Root cause:

    By default game is distributing CPU load per physical core count. So in my case I will have only 10 working threads, loaded up to 70%. The remaining 10 threads does nothing.

    Fix:

    Work needs to be distributed on all available threads. This cannot be achieved from the in-game's console. The only way to influence on that setting is through the User.cfg file (which does not exist by default). However settings that influence the CPU workload distribution are slightly different than it was in former Battlefields:

    Create User.cfg in game's installation folder with the following content:

    Thread.ProcessorCount <core count here>
    Thread.MaxProcessorCount <thread count here>
    Thread.MinFreeProcessorCount 0
    Thread.JobThreadPriority 0

    And now very important note: Thread.MaxProcessorCount cannot consume all available threads. If I set 20 game will crash on startup. Same for 19 and 18. The 17 is the max value I can use. In case of different processors you need to find the maximum possible value for your CPU.

    It seems that this variable is not an exact thread count consumed by the game. For my processor, since Thread.MaxProcessorCount 14 load is distributed on ALL 20 threads. What does change from Thread.MaxProcessorCount 14-to-17 is the % of the max load possible for threads to consume.

    Finally, my User.cfg looks like below:

    Thread.ProcessorCount 10
    Thread.MaxProcessorCount 17
    Thread.MinFreeProcessorCount 0
    Thread.JobThreadPriority 0

    And thanks to this I increased GPU load with DLSS, which means higher FPS in the situation when GPU was not maxed out earlier.

    Here are some comparison screenshots.

    Default settings, DLSS=Quality@3440x1440:

    User.cfg settings, DLSS=Quality@3440x1440:

    Default settings, DLSS=Performance@3440x1440:

    User.cfg settings, DLSS=Performance@3440x1440:

    In game's console Thread.* option changes does not take effect in runtime. You need to steer the variables from the User.cfg and start the game to see the difference! And don't get confused by seeing Thread.MaxProcessorCount 8 in game's console. It's the default value, which gets internally overwritten by the core count auto-detection made by game on startup. Unfortunately this auto-detection does not take hyper-threading into account...

    Cheers!

    UPDATE #1 :

    Game's CPU core count auto detection works fine. Use "Render.DrawScreenInfo true" in game's console to see details. Core count is a total amount of the Threads. Good! No need to use Thread.ProcessorCount.

    The "Job Threads" visible on that debug screen are an exact number of threads defined by Thread.MaxProcessorCount in User.cfg. By default it is 8 threads.

  • Thanks @7empePL 


    I have problems with my Ryzen 3800x with 8 cores and 16 threads. 

    After using a user.cfg the game runs better and not only 9 cores were used now all. 
    Cpu usage in avarage raised from 61% to 85% in total
    Stuttering is still existing but less often.

    With the 3800x i used this config file:

    Thread.ProcessorCount 8
    Thread.MaxProcessorCount 16
    Thread.MinFreeProcessorCount 0
    Thread.JobThreadPriority 0

  • @graulesYou're welcome. Also, you can use in-game's "Render.DrawScreenInfo true" to see the job threads being used. By default it is 8 on the CPUs with 8+ threads.

    Also, what I just found is that game's auto detection of the core count works fine, so we don't have to use Thread.ProcessorCount at all.

    Thread.MaxProcessorCount <value> maps to a number of the job threads.

  • tril0dge's avatar
    tril0dge
    Rising Novice
    4 years ago

    I just tested around a bit because the game is maxing out my i7 9700k quite heavily and it tested this with the following setup: 

    Thread.ProcessorCount 8
    Thread.MaxProcessorCount 6
    Thread.MinFreeProcessorCount 0
    Thread.JobThreadPriority 0

    Interesting enough that caused the FPS to be better and way more stable and the CPU wasn't maxing out either ...was around 92-96% usage which made a huge difference. But how can it be, that the game runs better on less threads :D 

  • 7empePL's avatar
    7empePL
    4 years ago
    @tril0dge The i7-9700k is 8c/8t and MaxProcessCount refers to job threads. BF2042 has not only computation threads, but there is main thread, at least one audio thread etc. So finding the best number of the game's computation threads and avoid context switching between software threads sharing the same CPU core is crucial for maxing out the FPS.
  • tril0dge's avatar
    tril0dge
    Rising Novice
    4 years ago
    @7empePL makes sense. Thx for the insights, didn't know that. What i knew was the CPU doesn't have hyperthreading. I'll test around a bit more the upcoming days with this. If this also helps while i stream with OBS this will be epic.
  • @7empePL very good tests!
    I have been posting a lot about what happens to me on my system running Core i9-7980XE 18C/18TH (HT OFF) and RTX 3090 OC all on water, all overclocked. Of course i tested all the tweaks and stock/oc, i also tried to increase core count tweaking it with project lasso and didn't work, just the bitsum highes performance allowed a better usage of the cpu. What i want to tell you is that no matter the tweaks, you can increase max fps and average but stuttering will not go away. So i decided to turn of Ray Traced Ambient Oclussion and now i not only have great FPS but smooth gameplay for days. Today after BF2042 #Update 2 game is even better. Of course i'm not pleased that having such a hardware i can't run it with RT AO = ON but the game looks great either way, this doesn't mean it don't need to be fix it but from all i've tested this is the thing that works best. For some reason i suspect that BF engine uses CPU for RTX also, at least a part is being processed, or it has some serious issues at high resolutions, i'm running 3840x1600, but it also does it at 3440x1600 and saw many people at 1080p with the same problem.

    All the Best, Sergio!
  • 7empePL's avatar
    7empePL
    4 years ago
    @andressergiox Thanks. I feel you! I use 10900kf at 5.0 GHz all-cores. The 3090 running at 2100 MHz @1V (overclocked and undervolted). The 32GB RAM OCed to 4533 MHz at CL16. The CPU, GPU and RAM is custom water-cooled with 2x360 rads. And hitting the performance wall? Playing at 3440x1440 200Hz in “breakthrough” without RTAO and disabled DLSS gives me 100-130 FPS. With DLSS set to Quality it is slightly better, around 110-145 FPS. Higher downscale does not bring more FPS though. Game feel smooth, no stuttering, but got RTAO disabled since launch because it does not give any noticeable visual improvement versus HBAO but eats 30-40 FPS. In BF2042 with 128 players and massive destruction there is a lot going on on the CPU. No surprise that enabling DLSS can give even worse performance. I believe that next patches will address game’s optimization further and we will see some 30-40 FPS more. However this game won’t ever break 240 FPS @ 1080p 😉
  • @7empePL Thanks for your reply, yes my Core i9-7980XE is at 5GHz ALL Core on DDC with massive 420 rad on one loop and the RTX 3090@ 2145Core / 22404 Mem on another loop, also as i'm on X299 i tweaked the quad channel to pump above 100GB/s on Read/Write/Copy and 50ns latency that it's a great achievement for this platform. So far, and as i already told you i gain on max fps and average but the stutter won't go away till i disable RTAO, then it hits nice FPS but i'm running 3840x1600. I will post the screens today showing the thread count (used your file) and it shows 17 Job Threads now instead of 8. I want to measure it good so i can post a before and after. In my case DLSS = Quality works pretty good, i tried all already.

    Let's hope the keep fixing it!

    All the Best, Sergio!
  • Hi, i tried out your setup on my i7 9700k but it doesnt really change anything at all. All Cores are still maxed out and the game feels like glue.
    With my rtx 2080 (at 25-40% max. laod) i cant achieve more than 27-40 fps with heavy drops with 1440p resolution.
    No matter if on Low or Ultra settings. 

    Dont know why your i7 9700k is working better with this userconfig. than mine.
    Tried 5, 6  and 7 on maxprocessorcount.

    (I see the changes ingame with Drawscreeninfo)

  • @7empePL I've got a Ryzen 7 3700x. I've created/edited a user.cfg file in the root game folder, In the game I see (under render.drawscreeninfo) cpu cores 16 (my cpu is 8) and job threads: 8. Have I done something wrong? ty
  • 7empePL's avatar
    7empePL
    4 years ago
    @Bluecracy_yt Game counts total number of cpu threads as cores. That’s fine. Job threads means how many cpu threads can be utilized. Default is 8. You can play with Thread.MaxProcessorCount in User.cfg to find the sweet spot for your device. Lack of in game benchmark makes benchmarking a horrible process…
  • I have a i7 6700k(4 cores 8 threads) with 16GB ram and GTX1070

    This fix only gives very little boost in GPU utilization but not a lot of GPU

    I had tried 

    Thread.ProcessorCount 4
    Thread.MaxProcessorCount 6, 7, 8

    In game Render.DrawScreenInfo does shows job threads properly with 6,7,8 but task manager still shows all 8 threads being nearly 100% loaded.

    GPU utilization increased from 30-40% to 40-50%, but FPS still float at around ~50fps (G-Sync works in full screen only, not borderless, and this make it looks "smoother").

    Maybe it only help on new CPU with more than 8 threads available

About Battlefield 2042 Technical Issues & Bugs

Having issues with Battlefield 2042? Join here to report bugs, and find help with, crashes, connectivity and more.13,622 PostsLatest Activity: 2 hours ago