Windows Registry Editor Version 5.00...
Using dx12 results in insane spiking and even worse lag.The game was made during a time with 6 core processors were a luxury, so I can't imagine the game benefiting from something beyond 4-6 cores.
You could try running it in DX12 mode or playing around with "RenderDevice.RenderAheadLimit" value in the console.
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\System\GameConfigStore]
"GameDVR_DXGIHonorFSEWindowsCompatible"=dword:00000001
"GameDVR_FSEBehavior"=dword:00000002
"GameDVR_FSEBehaviorMode"=dword:00000002
"GameDVR_HonorUserFSEBehaviorMode"=dword:00000001
BF1 (not to be confused w/ simply 'Battelfield') came out in late 2016, early 2017, and, has done fine scaling for up through at least up to 10 cores/20 threads, as two years ago it was the 7900X giving the best/highest min/average BF1 frame rates in multiplayer games.
However, there have likely been 20 game updates, and, 20 Nvidia drive patches, and, 100 WIndows updates since it's release, any one of which if glitched can botch things up quickly.
I'd first check that my CPU is actually hitting/sustaining at least 4.7 GHz across all cores under load, and that there are no indications of throttling after 30-60 minutes....