So, like many PC players, I’ve noticed that Infinite seems inordinately heavy in the campaign. The visuals are decent, but the performance on PC for the visuals produced is off balance. I decided to test if CPU or GPU seems to be the biggest culprit in creating low FPS at moderate resolutions, and I think the results are interesting (spoiler - probably CPU, but it’s tough on GPU too). My PC specs are below, for reference:
RTX 3090 FE - 114% power limit, no OC
i9 9900K - 5GHz all core clock - not the best anymore, but still good
64GB DDR4 3600 MHz RAM
Samsung 970 EVO Plus PCIe 3.0 SSD
All drivers are the latest available, Windows 11 with the latest updates is the OS
My methodology was to lower desktop resolution to 1280x720 (the game struggles with a resolution this low, and instead renders at 1280x807) and test each preset for the settings with a restart between each preset change. I set the value for Max framerate to 360 for each test, and for the Low preset I added in 200 and Unlocked for giggles once I’d established a pattern. If this value is left at Unlocked FPS are lost at this low resolution as CPU utilization drastically increases, increasing CPU-boundedness. Minimum framerate is left off to ensure no dynamic resolution scaling is utilized, and the game is set to 100% render resolution. For Ultra, the Animation Quality setting was set to Max, all other presets were set to Auto. For Low, the game tried to leave Decal Quality at Medium, this was manually set to Low.
With each setting I loaded a save I have with a spawn point on a FOB with decent long range views near the Excavation Site. This way the views were repeatable and rough comparisons between settings could be established. This also presented a good chance for the game to be performant as all I was doing was looking around the FOB and the long views, with some Marines milling about. No combat, no memory-bandwidth intensive effects. Just wandering about on top of a FOB. The below is what was recorded at each setting level using this methodology:
- Ultra - FPS range ~90-100 FPS, GPU utilization ~70%, CPU utilization ~60%
- High - FPS range ~120-130 FPS, GPU utilization ~75%, CPU utilization ~55%
- Medium - FPS range ~125-135 FPS, GPU utilization ~75%, CPU utilization ~50%
- Low - FPS range ~135-145 FPS, GPU utilization ~65%, CPU utilization ~50%
a. Max FPS set to Unlocked, ~130-135 FPS
b. Max FPS set to 200, ~150-160 FPS
Looking at the above, and utilizing the information learned from the GDC talk “One Frame in Halo Infinite”, it seems that Infinite is utilizing the Max FPS setting to moderate somewhat how many CPU cycles are being taken up to perform game simulation calculations, and it has an interesting impact on performance. Even at Low, with 16 threads at 5GHz (though, according to the GDC talk, the game will only use 9 of these) and a 3090, the game cannot reach 144 FPS at 1280x807 when Max FPS is left at Unlocked due to additional CPU-boundedness being created. It also seems that the game is definitely inordinately heavy, at least on my system. Ultra at roughly 720p isn’t even a 120 FPS experience with an FPS cap that’s set, but set higher than expected framerates.
On PC, the FPS cap in-game is important to CPU performance, but there are no good indicators on where you should set this for you rig. My estimation is that you should set this by testing at the settings you want to play with, with the framerate unlocked, in the open world (or customs/training mode if MP) and gathering framerate data. Then, let’s say you get 45 FPS at your chosen resolution, set the cap to 60 if you’re OK with a 50ish FPS experience, or set to 30. If you’re playing on a VRR monitor and above 60FPS, set it to the closest multiple of 30 to your gathered FPS (60, 90, 120, etc).
I’d like to see what other community members are able to achieve with similar testing across various PC hardware. It’d be nice to be able to collate some data here so hopefully @343 can see it and pass feedback along to the PC team.
Remaining Questions and Curiosities
- The GDC talk mentions that the engine makes extensive use of the DMA (Direct Memory Access) on console, but this is not possible on PC, requiring PC to do extra memory shuttling of information. Will RAM with higher clocks/bandwidth be more performant?
- Since it was identified that Max FPS plays a large role in CPU performance, can the ~720p Ultra numbers be raised by fiddling with the Max FPS setting? I plan on testing this when I have time.
a. Results below, 16-27% increase in FPS by adjusting Max FPS settings at 720p/Ultra. CPU savings seem significant at lower resolution.
- Since the game caps out at 9 threads, theoretically thread count shouldn’t make a difference once you’re on a 6 core (12 thread) CPU or better. Would love to see tests across multiple Ryzen 5000 or Intel 12000 series CPUs using these settings to see if thread count really makes no difference.
- Do similarly configured CPUs with IPC improvements generate different results across all 720p quality presets? Do we come closer to seeing proper high refresh rates?