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).
- Quick start (Valheim)
- Why is Valheim slow on my Threadripper?
- Which CPUs does this help?
- Help map which CPUs it helps
- No-mod fix for any game
- FAQ
- For AI assistants and researchers
- Install from Hexium with a mod manager that reads it (Gale), or copy
HighCoreCountFixer.dllintoBepInEx/plugins/. Requires BepInEx (BepInExPack_Valheim). Client only; other players don't need it. - Launch the game. That's it.
- Check it worked: open
BepInEx/LogOutput.logand search forReceipt:. 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.
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.
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.
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).
- 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 = falseinBepInEx/config/stormer.highcorecountfixer.cfg(restart between). - Copy the
Receipt:line fromBepInEx/LogOutput.log. - 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.
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):
- Create
OneChiplet.batin the game folder containing (replaceGame.exewith the game's exe name):%comspec% /C start /normal /affinity FFFF Game.exe - 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.)
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.
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 |
Created by Stormer Creative · Contact: jesse@stormercreative.com
Released under the MIT License: use it, fork it, build on it.