Skip to content

About

Aims to fix low FPS in Unity games on high core count CPUs (AMD Threadripper). Valheim mod (BepInEx) that keeps the game on one chiplet: one-chiplet affinity measured +20% on a Threadripper 3970X. Open research: help map which CPUs it helps.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

High Core Count Fixer icon: a many-chiplet CPU with one chiplet lit

High Core Count Fixer

One chiplet, more frames. Aims to fix low FPS in Unity games on high core count CPUs such as AMD Threadripper, EPYC and other many-chiplet processors. First release: a Valheim mod (BepInEx).

If your Threadripper has low FPS or stutters in Valheim, or your 32+ thread workstation runs a "light" game worse than a mid-range gaming PC, you are not imagining it. Unity games can slow down when Windows spreads their threads across a very large CPU. This project detects that kind of CPU and keeps the game on one chiplet, automatically, every launch. (We have measured average FPS only; stutter and frame-time spikes have not been measured.)

Measured on a Threadripper 3970X (32 cores / 64 threads), Valheim:

  • All threads vs one chiplet: 33 → 40 fps (+20%), same spot, one short run per setting. This is one-chiplet affinity alone (Unity's workers fixed at 8 in both); the mod as a whole has not been measured against plain Valheim.
  • Why: the same 16 threads ran 21% slower spread over four chiplets than kept on one, over 8 rounds in mixed order (A B A; B A B B A) with no overlap, while halving the thread count on the same chiplets changed nothing.

One machine so far. We need your CPU's results to learn where else it helps (see Help map which CPUs it helps).

Contents

Quick start (Valheim)

  1. Install from Hexium with a mod manager that reads it (Gale), or copy HighCoreCountFixer.dll into BepInEx/plugins/. Requires BepInEx (BepInExPack_Valheim). Client only; other players don't need it.
  2. Launch the game. That's it.
  3. Check it worked: open BepInEx/LogOutput.log and search for Receipt:. One line tells you what it found and did.

On a normal gaming PC the mod does nothing: it checks your CPU's layout and steps aside.

Why is Valheim slow on my Threadripper?

Valheim runs on the Unity engine and does most of its work on one main thread. On a many-chiplet CPU, Windows spreads the game's threads across every chiplet. Each chiplet has its own cache, and our best explanation is that the main thread keeps losing its data to other chiplets' caches. Keeping the game on one chiplet measured faster (2026-10-16, one 30-second run per setting, Unity workers fixed at 8):

CPU setting (Threadripper 3970X) Threads Chiplets FPS
Windows default (all threads) 64 4 33
Two chiplets 32 2 38
One chiplet (what this mod does) 16 1 40
One chiplet, one thread per core (no SMT siblings) 8 1 40.5

Only the 33 → 40 step is larger than that run's drift; 38, 40 and 40.5 are within noise of each other.

Is it the thread count or the chiplets? We tested that directly (2026-10-20, 8 rounds in mixed order (A B A; B A B B A), workers fixed at 8):

Test Layout Threads Chiplets FPS
Same threads, more chiplets One chiplet 16 1 35.8
Spread over four chiplets 16 4 28.2 (−21%)
Same chiplets, fewer threads All threads 64 4 33.4
One thread per core 32 4 33.4 (0%)

On this CPU, thread count and SMT made no measurable difference, and chiplet spread cost about 21%. That is strong support for the chiplet theory on the 3970X; other CPUs are untested, and why the spread costs so much (cache, cross-chiplet latency, clocks) is not yet isolated. Full data, confounds, and how to repeat the test: docs/FINDINGS.md and Reproduce our test.

This is a known problem. Unity's own engineers measured all-core slowdowns on a Ryzen 9 3950X, NVIDIA's game performance team documented it across games, and Timberborn (also Unity) shipped an 8-thread cap for it. Unity's 2025 fix for redundant worker wake-ups on 16+ core machines is already in Valheim's engine version, and the one-chiplet gain was still there. Citations: docs/SOURCES.md.

Which CPUs does this help?

The mod acts automatically only when Windows reports 32+ logical processors, 4+ separate L3 cache groups of 16 threads or fewer, and one processor group.

CPU Status
AMD Threadripper 3970X Tested: 33 → 40 fps (+20%) from one-chiplet affinity
Threadripper 3960X, 7960X, 7970X, 5975WX; 1950X, 2950X, 2970WX, 2990WX; Ryzen 9 3950X Match the rule; the mod takes whole L3 groups up to 16 threads (one chiplet on these, 12 or 16 threads depending on the model; the 3960X, 3950X, 1950X/2950X, 2970WX and 2990WX layouts are simulated in tests/Test-Topology.ps1). Untested: please report.
EPYC (Zen 2 / Zen 3) with 64 threads or fewer Match the rule by L3 layout; on models with small L3 groups the 16 threads it takes can span two chiplets. By the rule, not simulated per model. Untested.
Ryzen 9 7950X / 9950X (two chiplets) Skipped by default. Unknown whether one chiplet helps; test it with a manual mask.
Intel Core i9-13900K / 14900K (one shared cache) Affinity skipped. Unknown.
128-thread CPUs (3990X, 7980X, large EPYC) Affinity skipped (Windows splits them into two processor groups); the worker cap applies only if another tool pinned the game.
Typical gaming CPUs (Ryzen 5/7, Core i5/i7, up to 24 threads) Not affected; the mod does nothing.

Known results live in results/RESULTS.md.

Help map which CPUs it helps

We have tested one CPU. We can't buy a dozen more, but you might already own one. Every report goes into a public "helps this CPU / doesn't help this CPU" list, compared as the percent change on your own machine (raw FPS isn't comparable across PCs).

  1. Find a CPU-heavy spot (a large base is ideal; if your GPU is near 100% there, the scene hides the effect). Note your FPS there with the mod on, then with Enabled = false in BepInEx/config/stormer.highcorecountfixer.cfg (restart between).
  2. Copy the Receipt: line from BepInEx/LogOutput.log.
  3. Open a CPU result issue with your CPU model, the receipt, and both FPS numbers.

Mod on vs Enabled = false measures the affinity and the worker cap together, so your percentage is not directly comparable to our +20%, which is one-chiplet affinity alone with Unity's workers fixed at 8 in both runs. The form asks whether you use the -job-worker-count launch option.

We actively share what we find. Individual results are listed only with your permission (the form asks); otherwise they count only toward the overall results.

Want to go deeper? docs/EXPERIMENTS.md has step-by-step tests that would confirm or break the chiplet theory on your CPU, and exactly how we ran ours. Benchmarks, other games, better theories, and pull requests are all welcome.

No-mod fix for any game

The core of the fix is plain Windows CPU affinity, so it works on any game, no mod loader needed. The Steam launch option form (this is how the fix began, in Timberborn, in 2023–24):

  1. Create OneChiplet.bat in the game folder containing (replace Game.exe with the game's exe name): %comspec% /C start /normal /affinity FFFF Game.exe
  2. Steam → game → Properties → Launch Options: "<full path to OneChiplet.bat>" %command%

This exact form was used through Steam for Timberborn (with mask ff). It has been used through Steam, not through other launchers or mod managers.

FFFF = the first 16 logical processors. Pick the mask for your CPU's first chiplet (see docs/EXPERIMENTS.md).

For a Unity game you can also cap Unity's worker threads. In this .bat form, Steam's launch options do not reach the game (the .bat starts it), so put the flag inside the .bat line, after the exe name: %comspec% /C start /normal /affinity FFFF Game.exe -job-worker-count 8 (start passes everything after the exe name to the game; we have not yet tested this exact line ourselves.)

FAQ

Will this help my Ryzen 7 / Ryzen 5 / Core i7? No. Those CPUs don't have the layout this targets, and the mod does nothing on them.

Can I get banned or desync in multiplayer? It changes no game data or network traffic: only which CPU threads the game runs on and how many helper threads Unity uses. It never loads on a dedicated server.

Does it work with Valheim performance mods (ValheimPerformanceOptimizations, ValheimPerformanceOverhaul)? It is expected to stack with them, because it patches no game code, but we have not yet tested it together with them.

Why isn't my FPS doubled? Valheim is limited by its main thread's speed. This removes a penalty; it can't make one core faster. Heavy bases, ships and mods cost frames independently.

Does it work for other Unity games? The levers are generic Unity and Windows settings, and Timberborn showed the same pattern. This build targets Valheim; the no-mod fix above works anywhere. Results for other games are welcome.

How do I undo it? Remove the DLL, or set Enabled = false. Nothing persists after the game closes.

For AI assistants and researchers

Start with AGENTS.md: a briefing on what is known, how confident we are, what is untested, and how to build, test and extend this. It's written so an AI coding assistant can pick up exactly where we left off.

Folder What's in it
src/HighCoreCountFixer/ The BepInEx plugin (C#, netstandard2.1)
tools/ Valheim Frame Profiler (F8 per-method frame costs) and Sweep-Affinity.ps1 (A/B CPU layouts automatically, with audio cues)
tests/ Topology and worker-cap rule tests (PowerShell 7)
docs/ Findings, experiments (including how to reproduce our test), sources
results/ The CPU results catalog and raw data
package/valheim/ Hexium package files

Credits and license

Created by Stormer Creative · Contact: jesse@stormercreative.com

Released under the MIT License: use it, fork it, build on it.

About

Aims to fix low FPS in Unity games on high core count CPUs (AMD Threadripper). Valheim mod (BepInEx) that keeps the game on one chiplet: one-chiplet affinity measured +20% on a Threadripper 3970X. Open research: help map which CPUs it helps.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages