What's mystifying about the G3258 is the stuttering. Even when it manages some decent average FPS scores, it's the dips that kill it in SOME games (not all), and it's quite odd. You have to wonder if it's a misconfiguration issue, or something that couldn't be sorted out with higher uncore clocks or memory clockspeed. Or killing some background tasks maybe?
I'm convinced it's an NT scheduler issue. With a powerful enough GPU, the G3258 runs at 100% CPU running the game, not having any free resources to deal with OS background tasks. Which, if they are not allowed to run for a certain quantum (I believe 3 seconds), the NT scheduler basically does some sort of priority inversion, and allows the background tasks that have been waiting too long, the ability to run, over current foreground tasks. Thus, the foreground tasks stall, and the game stutters.
The i3 allows those tasks to run in the background, on free core resources, and thus doesn't have the stuttering problem.
Edit: This could be tested, if that delay-until-priority-inversion for background tasks is a tunable. Then you could see if adjusting it to some higher number, like 10-20sec, would smooth out the game more and reduce stuttering.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms685100(v=vs.85).aspx
This doesn't mention the delayed priority inversion stuff, strangely enough. I know that I've read it somewhere though.
http://windowsitpro.com/systems-management/inside-windows-nt-scheduler-part-1
" I'll wrap up with a discussion of some advanced features of the scheduler, including priority boosting and starvation prevention."
That's what I was referring to, the "priority boosting and starvation prevention".
Starvation Prevention
Left alone, the FindReadyThread and ReadyThread might prevent low-priority threads from getting a chance to execute. For example, a priority 4 thread running on a system with continuously running priority 8 threads would be starved for CPU time. However, NT provides a mechanism that gives low-priority threads a shot at the CPU. The NT Balance Set Manager is a system thread that wakes up every second or so to perform memory tuning. As a secondary responsibility, Balance Set Manager executes the ScanReadyQueues algorithm, which implements NT's anti-CPU starvation policy.
ScanReadyQueues scans the Dispatcher Ready List, working down the list from priority 31. It looks for threads that haven't executed in more than 3 seconds. When it finds one, ScanReadyQueues gives the thread a special anti-starvation boost, doubles its quantum, and calls ReadyThread with the thread as a parameter. The anti-starvation boost differs from other boosts: Instead of applying a relative priority increment, the anti-starvation boost slams the thread's priority to the top of the dynamic range. (On pre-Service Pack 2--SP2--systems, the anti-starvation boost was to priority 14; post-SP2 systems boost to priority 15). When a thread that receives an anti-starvation boost finishes its extended quantum (or the thread blocks), its priority returns to the pre-starvation boost level and its quantum returns to its usual length.
Edit: Running the G3258 with a lower-end GPU, such that the game is GPU-bound,or setting a frame limiter, so the CPU doesn't have to run 100% flat-out for the game, seems to help, right? Those things would be consistent with my theory here.