iMac Stuttering FPS

I’ve been running D3 perfectly well under Catalina on an external SSD for months. Recently I moved my boot drive back to the internal Fusion disk, and now my frame rate is in the 18-23 FPS range. I’m mystified as to why.

The iMac is a 21.5" Retina 2017 model with the 3.6Ghz Core i7, 16GB RAM, 1TB Fusion Drive. I’ve turned off FileVault (which I thought might be causing the issue); I’ve both repaired and reinstalled D3 from the BattleNet app this morning after undoing FV last night. I’ve literally reinstalled the OS within the last three weeks, and that’s rock solid.

I’ve got all the graphic bells-and-whistles turned on, running at full resolution (naturally) because everything was running at more-than-adequate FPS from the SSD. Am I missing something? Why would switching to a different storage system cause D3 to slow down so radically? Surely the game caches information in RAM to avoid these sorts of issues.

Hey there!

It does cache some information in the RAM, but if you’re having problems with the Fusion drive, keep in mind that a Fusion drive is only 5400 RPM most of the time. You can wind up with performance issues. That said, correlation doesn’t necessarily imply causation. Does it go away if you reinstall back to the SSD?

The issues you’re having are APFS related. Catalina forces APFS even on platter based fusion drives. That is going to drastically reduce performance in games, especially Blizzard’s games, which use CASC as their own filesystem.

You see, APFS has enumeration issues with files that are frequently patched or modified. Instead of storing those in the manner HFS+ used to, APFS creates brand new extents nodes every time you modify a file. Since CASC makes literally thousands of modifications every patch cycle, it forces APFS to enumerate every last change to each of the data files for the game.

And to add salt to that wound, CASC itself suffers from fragmentation issues due to the way it patches those data files. It doesn’t actually overwrite the old data. It appends new data to the end of the last data file and then writes the location(s) of those new additions to index files to keep track of them. The old data? It’s “invalidated”, meaning the index files containing the old data locations are modified to denote invalid locations while the newly created index file additions are the “current” valid file descriptors.

When you combine CASC fragmentation with APFS enumeration, you get abysmal performance. It even eventually brings down super fast NVMe drives, at which point you have to reinstall both the game and the OS as well, as OS changes are subject to the same enumeration issues from patching. Your SSD was simply propping up APFS. Once you went back to the fusion drive, your performance tanked. Get back to using the SSD ASAP. APFS sucks on anything but fast SSD and NVMe drives.

3 Likes