Temps are fine. Again, my PC doesn't have bottlenecking issues with anything else I've tried. I've never had CPU usage reach 100% despite running some other performance-hungry games.
After another night of testing, I've noticed that the GPU usage only tanks when the game is getting a time overflow message. When running a mission at 60 FPS, the usage usually hovers around 12-17%, sometimes a bit higher when there's a lot of smoke and explosions.
Here's the log from the latest unplayable mission, a QMB mission over Summer Slovakia. I spawned the maximum amount of planes (16 flights of 4 = 64 planes) in the mission, started on the ground and was welcomed with a nice 2 FPS and Time Overflow messages everywhere. The performance deteriorates significantly the more planes I have in a mission...with half the amount of planes, the game suddenly runs at 60 FPS (until you get up to 4x speed) on any map. Seems like the game simply isn't able to process many planes.
The log:
[2019-08-10 06:04:40.992] dT: -476 Loading mission QuickQMBPro/BAT_Slovakia_summer/BAT_Slovakia_summerRedScramble00.mis...
[2019-08-10 06:04:41.060] dT: 0 Y=1940 / M=8 / H= 7 , Temperature - 0m = 13.0 .
[2019-08-10 06:04:41.060] dT: 0 Loading map.ini defined airfields:
[2019-08-10 06:04:41.060] dT: 0 Detected Vertex Shaders 3.0.
[2019-08-10 06:04:41.061] dT: 0 *** Detected Shaders 4.0. NVidia 8XXX+ series!!!
[2019-08-10 06:04:41.061] dT: 0 Vertex texture units: 32
[2019-08-10 06:04:41.061] dT: 0
[2019-08-10 06:04:41.310] dT: 0 WARNING: ObjectVACache_Clear()
[2019-08-10 06:04:41.310] dT: 0 WARNING: * Buf0 : Obj: 4, Vert 48, Ind 156
[2019-08-10 06:04:41.312] dT: 0 WARNING: * Buf1 : Obj: 203, Vert 28570, Ind 64287
[2019-08-10 06:04:41.315] dT: 0 WARNING: * Buf2 : Obj: 39, Vert 12014, Ind 19716
[2019-08-10 06:04:46.528] dT: 0 PBuffer: suitable formats: 12
[2019-08-10 06:04:46.528] dT: 0
[2019-08-10 06:04:46.534] dT: 0 Created a 256x256 RenderTexture with BPP(8, 8, 8, 8)
[2019-08-10 06:04:46.534] dT: 0 Depth = 24, stencil = 8
[2019-08-10 06:04:46.561] dT: 0 PBuffer: suitable formats: 12
[2019-08-10 06:04:46.561] dT: 0
[2019-08-10 06:04:46.566] dT: 0 Created a 512x512 RenderTexture with BPP(8, 8, 8, 8)
[2019-08-10 06:04:46.566] dT: 0 Depth = 24, stencil = 8
[2019-08-10 06:04:55.964] dT: 0 Loading vertex/fragment programs: *706031240*
[2019-08-10 06:04:55.964] dT: 0 *** Loading: [vpFogFar2Tex2D]
[2019-08-10 06:04:55.965] dT: 0 *** Loading: [vpFog2Tex2DBlend]
[2019-08-10 06:04:55.965] dT: 0 *** Loading: [vpFogFar4Tex2D]
[2019-08-10 06:04:55.966] dT: 0 *** Loading: [vpFogFar8Tex2D]
[2019-08-10 06:04:55.966] dT: 0 *** Loading: [vpFogNoTex]
[2019-08-10 06:04:55.966] dT: 0 *** Loading: [vpFog4Tex2D]
[2019-08-10 06:04:55.967] dT: 0 *** Loading: [vpFog4Tex2D_UV2]
[2019-08-10 06:04:55.967] dT: 0 *** Loading: [vp4Tex2D]
[2019-08-10 06:04:55.967] dT: 0 *** Loading: [vp6Tex2D]
[2019-08-10 06:04:55.968] dT: 0 *** Loading: [vpTexUVTex2D]
[2019-08-10 06:04:55.968] dT: 0 *** Loading: [vpWaterGrid_NV]
[2019-08-10 06:04:55.968] dT: 0 *** Loading: [vpWaterSunLight_NV]
[2019-08-10 06:04:55.968] dT: 0 *** Loading: [vpWaterSunLight_ATI]
[2019-08-10 06:04:55.969] dT: 0 *** Loading: [vpWaterSunLight_FP]
[2019-08-10 06:04:55.970] dT: 0 *** Loading: [vpTreeSprite]
[2019-08-10 06:04:55.970] dT: 0 *** Loading: [vpTreeTrunk]
[2019-08-10 06:04:55.971] dT: 0 *** Loading: [vpVAObjectsN]
[2019-08-10 06:04:55.971] dT: 0 *** Loading: [vpVAObjectsL0]
[2019-08-10 06:04:55.972] dT: 0 *** Loading: [vpSprites]
[2019-08-10 06:04:55.972] dT: 0 *** Loading: [vpSimpleGL]
[2019-08-10 06:04:55.972] dT: 0 *** Loading: [fpWaterSunLightFast] -> NV3X Optimized!
[2019-08-10 06:04:55.973] dT: 0 *** Loading: [fpWaterSunLight] -> NV3X Optimized!
[2019-08-10 06:04:55.973] dT: 0 *** Loading: [fpWaterSunLightBest] -> NV3X Optimized!
[2019-08-10 06:04:55.974] dT: 0 *** Loading: [fpCoastBump] -> NV3X Optimized!
[2019-08-10 06:04:55.974] dT: 0 *** Loading: [fpCoastFoam] -> NV3X Optimized!
[2019-08-10 06:04:55.975] dT: 0 *** Loading: [fpCoastFoamFast] -> NV3X Optimized!
[2019-08-10 06:04:55.976] dT: 0 *** Loading: [fpCoastFoamFarFogTex] -> NV3X Optimized!
[2019-08-10 06:04:55.976] dT: 0 *** Loading: [fpCausticSimple] -> NV3X Optimized!
[2019-08-10 06:04:55.977] dT: 0 *** Loading: [fpCaustic] -> NV3X Optimized!
[2019-08-10 06:04:55.977] dT: 0 *** Loading: [fpSprites] -> NV3X Optimized!
[2019-08-10 06:04:55.977] dT: 0 *** Loading: [fpObjectsL0] -> NV3X Optimized!
[2019-08-10 06:04:55.978] dT: 0 *** Loading: [fpObjectsL0_2L] -> NV3X Optimized!
[2019-08-10 06:04:55.978] dT: 0 *** Loading: [fpSimpleGL]
[2019-08-10 06:04:55.978] dT: 0 *** Loading: [fpNearLandFog] -> NV3X Optimized!
[2019-08-10 06:04:55.978] dT: 0 *** Loading: [fpFarLandFog] -> NV3X Optimized!
[2019-08-10 06:04:55.979] dT: 0 *** Loading: [fpRiverCoastAA]
[2019-08-10 06:04:55.979] dT: 0 *** Loading: [vpWaterDM_GPU] -> NV4X Optimized!
[2019-08-10 06:04:55.980] dT: 0 *** Loading: [vpWaterDM_GPU8800] -> NV5X Optimized!
[2019-08-10 06:04:55.981] dT: 0 *** Loading: [fpCoastFoam8800] -> NV5X Optimized!
[2019-08-10 06:04:55.982] dT: 0 *** Loading: [fpCoastFoamFarFogTex8800] -> NV5X Optimized!
[2019-08-10 06:04:55.983] dT: 0 *** Loading: [fpCoastBump8800] -> NV5X Optimized!
[2019-08-10 06:04:55.984] dT: 0 *** Loading: [vpWaterDM_CPU]
[2019-08-10 06:04:55.984] dT: 0 *** Loading: [fpWaterNearDM] -> NV4X Optimized!
[2019-08-10 06:04:55.985] dT: 0 *** Loading: [fpWaterMiddleDM] -> NV4X Optimized!
[2019-08-10 06:04:55.986] dT: 0 *** Loading: [fpWaterFarDM] -> NV4X Optimized!
[2019-08-10 06:04:55.986] dT: 0 *** Loading: [fpWaterDM_CPU] -> NV3X Optimized!
[2019-08-10 06:04:55.987] dT: 0 *** Loading: [fpWaterDM_CPULo] -> NV3X Optimized!
[2019-08-10 06:04:55.988] dT: 0 *** Loading: [fpWaterNearDM8800] -> NV5X Optimized!
[2019-08-10 06:04:55.989] dT: 0 *** Loading: [fpWaterMiddleDM8800] -> NV5X Optimized!
[2019-08-10 06:04:55.990] dT: 0 *** Loading: [fpWaterFarDM8800] -> NV5X Optimized!
[2019-08-10 06:04:55.990] dT: 0 *** Loading: [fpWaterLFogDM8800] -> NV5X Optimized!
[2019-08-10 06:04:55.990] dT: 0 *** Loading: [fpWaterLFogDM]
[2019-08-10 06:04:55.991] dT: 0 *** Loading: [fpIceWater] -> NV3X Optimized!
[2019-08-10 06:04:55.991] dT: 0 *** Loading: [fpNearNoBlend] -> NV3X Optimized!
[2019-08-10 06:04:55.991] dT: 0 *** Loading: [fpNearNoBlendNoise] -> NV3X Optimized!
[2019-08-10 06:04:55.991] dT: 0 *** Loading: [fpNearBlend] -> NV3X Optimized!
[2019-08-10 06:04:55.992] dT: 0 *** Loading: [fpNearBlendNoise] -> NV3X Optimized!
[2019-08-10 06:04:55.992] dT: 0 *** Loading: [fpFarBlend] -> NV3X Optimized!
[2019-08-10 06:04:55.992] dT: 0 *** Loading: [fpForestPlane] -> NV3X Optimized!
[2019-08-10 06:04:55.993] dT: 0 *** Loading: [fpForestPlaneNoise] -> NV3X Optimized!
[2019-08-10 06:04:55.993] dT: 0 *** Loading: [fpForestPlaneEdges] -> NV3X Optimized!
[2019-08-10 06:04:55.993] dT: 0 *** Loading: [fpForestPlaneEdgesNoise] -> NV3X Optimized!
[2019-08-10 06:04:56.508] dT: 0 Load bridges
[2019-08-10 06:04:56.578] dT: 0 Load static objects
[2019-08-10 06:04:57.623] dT: 0 ##### House without collision (3do/Tree/Tree2.sim)
[2019-08-10 06:04:58.184] dT: 0 ##### House without collision (3do/Buildings/Furniture/10x1_5_White/mono.sim)
[2019-08-10 06:04:59.590] dT: 0 ##### House without collision (3do/Buildings/46/MGTrench/live.sim)
[2019-08-10 06:05:00.344] dT: 0 ##### House without collision (3do/Trains/PRVZb_B/body.sim)
[2019-08-10 06:05:02.657] dT: 0 INTERNAL ERROR: Str2FloatClamp() - Clamped 5 -> 2 (delta = -3) to Range 0..2
[2019-08-10 06:05:02.680] dT: 0 INTERNAL ERROR: Str2FloatClamp() - Clamped 2e+006 -> 1e+006 (delta = -1e+006) to Range 0..1e+006
[2019-08-10 06:05:02.942] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'GearL4_D0'
[2019-08-10 06:05:02.942] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'GearL5_D0'
[2019-08-10 06:05:02.942] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'GearL6_D0'
[2019-08-10 06:05:02.942] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'GearR4_D0'
[2019-08-10 06:05:02.942] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'GearR5_D0'
[2019-08-10 06:05:02.942] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'GearR6_D0'
[2019-08-10 06:05:02.956] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'GearL4_D0'
[2019-08-10 06:05:02.957] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'GearL5_D0'
[2019-08-10 06:05:02.957] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'GearL6_D0'
[2019-08-10 06:05:02.957] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'GearR4_D0'
[2019-08-10 06:05:02.957] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'GearR5_D0'
[2019-08-10 06:05:02.957] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'GearR6_D0'
[2019-08-10 06:05:02.968] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'GearL4_D0'
[2019-08-10 06:05:02.968] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'GearL5_D0'
[2019-08-10 06:05:02.969] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'GearL6_D0'
[2019-08-10 06:05:02.969] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'GearR4_D0'
[2019-08-10 06:05:02.969] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'GearR5_D0'
[2019-08-10 06:05:02.969] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'GearR6_D0'
[2019-08-10 06:05:02.986] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'GearL4_D0'
[2019-08-10 06:05:02.987] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'GearL5_D0'
[2019-08-10 06:05:02.987] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'GearL6_D0'
[2019-08-10 06:05:02.987] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'GearR4_D0'
[2019-08-10 06:05:02.987] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'GearR5_D0'
[2019-08-10 06:05:02.987] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'GearR6_D0'
[2019-08-10 06:05:08.324] dT: 0 1>mp_dotrange FRIENDLY DOT 12.000001 COLOR 3.0000002 RANGE 5.0 TYPE 3.0000002 ID 0.25 NAME 0.25 ALTICON 3.0000002 ALTSYMBOL + ALTCOLOR 17
[2019-08-10 06:05:08.327] dT: 0 1>mp_dotrange FOE DOT 12.000001 COLOR 3.0000002 RANGE 5.0 TYPE 3.0000002 ID 0.25 NAME 0.25 ALTICON 3.0000002 ALTSYMBOL - ALTCOLOR 0
[2019-08-10 06:05:08.341] dT: 0 Mission: QuickQMBPro/BAT_Slovakia_summer/BAT_Slovakia_summerRedScramble00.mis is Playing
[2019-08-10 06:05:08.976] dT: 0 Time overflow (0): speed 0.9448819
[2019-08-10 06:05:08.984] dT: 1 INTERNAL ERROR: HierMesh: Can't find chunk 'OilRad_D0'
[2019-08-10 06:05:08.986] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'GearC1_D0'
[2019-08-10 06:05:08.986] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'OilRad_D0'
[2019-08-10 06:05:08.987] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'GearC1_D0'
[2019-08-10 06:05:08.987] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'OilRad_D0'
[2019-08-10 06:05:08.987] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'HMask1_D0'
[2019-08-10 06:05:08.987] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'GearC1_D0'
[2019-08-10 06:05:08.987] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'OilRad_D0'
[2019-08-10 06:05:08.988] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'GearC1_D0'
[2019-08-10 06:05:09.009] dT: 1 INTERNAL ERROR: HierMesh: Can't find chunk 'HMask1_D0'
[2019-08-10 06:05:09.014] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'Flap03_D0'
[2019-08-10 06:05:09.014] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'Flap04_D0'
[2019-08-10 06:05:09.027] dT: 1 INTERNAL ERROR: HierMesh: Can't find chunk 'HMask1_D0'
[2019-08-10 06:05:09.053] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'Flap03_D0'
[2019-08-10 06:05:09.053] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'Flap04_D0'
[2019-08-10 06:05:09.073] dT: 1 INTERNAL ERROR: HierMesh: Can't find chunk 'Flap03_D0'
[2019-08-10 06:05:09.073] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'Flap04_D0'
[2019-08-10 06:05:09.087] dT: 1 INTERNAL ERROR: HierMesh: Can't find chunk 'Flap03_D0'
[2019-08-10 06:05:09.087] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'Flap04_D0'
[2019-08-10 06:05:09.477] dT: 25 INTERNAL ERROR: HierMesh: Can't find chunk 'Flap03_D0'
[2019-08-10 06:05:09.477] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'Flap04_D0'
[2019-08-10 06:05:09.685] dT: 14 INTERNAL ERROR: HierMesh: Can't find chunk 'HMask1_D0'
[2019-08-10 06:05:10.580] dT: 30 INTERNAL ERROR: HierMesh: Can't find chunk 'Flap03_D0'
[2019-08-10 06:05:10.580] dT: 0 INTERNAL ERROR: HierMesh: Can't find chunk 'Flap04_D0'
[2019-08-10 06:06:00.491] dT: 1816 Time overflow (1890): speed 0.877193
[2019-08-10 06:06:00.650] dT: 20 Time overflow (1910): speed 0.9433962
[2019-08-10 06:06:00.806] dT: 20 Time overflow (1930): speed 0.96153843
[2019-08-10 06:06:00.959] dT: 20 Time overflow (1950): speed 0.98039216
[2019-08-10 06:06:01.421] dT: 60 Time overflow (2010): speed 0.93167704
[2019-08-10 06:06:01.590] dT: 20 Time overflow (2030): speed 0.88757396
[2019-08-10 06:06:01.765] dT: 20 Time overflow (2050): speed 0.85714287
[2019-08-10 06:06:01.933] dT: 20 Time overflow (2070): speed 0.89285713
[2019-08-10 06:06:02.095] dT: 20 Time overflow (2090): speed 0.9259259
[2019-08-10 06:06:02.258] dT: 20 Time overflow (2110): speed 0.9202454
[2019-08-10 06:06:02.411] dT: 20 Time overflow (2130): speed 0.97402596
[2019-08-10 06:06:02.567] dT: 20 Time overflow (2150): speed 0.9677419
[2019-08-10 06:06:02.881] dT: 41 Time overflow (2191): speed 0.90909094
[2019-08-10 06:06:03.035] dT: 20 Time overflow (2211): speed 0.97402596
[Aug 10, 2019 6:06:11 AM] -------------- END log session -------------
I've also recently heard about the Garbage Collection system in IL-2, though I couldn't find an explanation as to what it does. What is gc.cmd? I don't have anything with that name in my root IL-2 folder, and trying to run "gc" as a console command doesn't work...could that be part of the issue?