Jump to content

Low FPS greatly improved by setting core affinity, but under very particular circumstances.


Recommended Posts

So I had this interesting experience.

I have an i5-12400F, and in general 12th/13th gen intel CPUs eat ONI for breakfast, easily maintaining 60 fps until quite late in the game. I play ONI in Ubuntu Linux.

One day I noticed ONI was only running at 15-30 fps even when starting a brand new game. After some sleuthing I figured out this was because I had changed the power profile from "Performance" to "Power saver", either deliberately then having forgot, or some accidental "Cat walked over the keyboard" hotkey. Okay, fair enough, Power Saver is meant to reduce performance.

But knowing that ONI is essentially a single-threaded game that loves CPU cache hits (basically memory bandwidth constrained), I decided to see what would happen if I set core affinity to a single core, and bam, back up to a steady 60fps even under "Power saver", and I could pretty much toggle the fps by setting core affinity to a single or multiple cores.

An example command which does this:

sudo taskset -pc 2 `pidof OxygenNotIncluded`

Though it can also be set through System Monitor or I do believe in Windows through Task Manager.

However even on "Power Saving" sometimes ONI would run at a steady 60 fps without core affinity being set, and I'm guessing this is sometimes the OS does the "smart" thing and figures that this process likes being on one core, and sometimes it does the "dumb" thing and swaps it rapidly between cores to spread heat. (It's worth noting that the i5-12400F only has performance cores, it has no efficiency cores, on some CPUs the OS might decide to run a process on an efficiency core but that's not applicable in this case)

Anyway I'm making this post partly for SEO: in case someone else in the future has mysteriously low FPS but it would also be interesting to see if anyone else experiences an improvement in FPS by setting core affinity.

Link to comment
Share on other sites

For anyone who wants to try something similar on Windows, you can go in to the Task Manager, find Oxygen Not Included in Details, right click and click "Set Affinity."

I believe there is multithreading on ONI, but it is mostly on one thread.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

Please be aware that the content of this thread may be outdated and no longer applicable.

×
  • Create New...