FMOD Low Level in UE4 profiling and optimization

Hi,

We’re using FMOD’s low level API in our UE4 project. We’re about to ship our title on Playstation VR soon. We’re currently running into some issues with our frame rates and we need to profile various elements of our game. Unreal allows us to profile the three major threads i.e Game, Draw, and GPU. How do FMOD and FMOD low level fit into Unreal’s threading system? I’m guessing FMOD runs its own standalone threads on PlayStation if I am not mistaken. For some reason, our Draw thread in Unreal is taking a massive hit although our in game draw calls are very low and I’m starting to wonder if it’s being affected by FMOD in any way. I used Razor CPU (a profiling tool provided by Sony) and saw multiple FMOD threads running there. Any help on profiling FMOD low level’s performance along with Unreal for PS4 would be greatly appreciated. Thank you. We are using a source version UE4 4.15.1

Hi Karan

FMOD does not use Unreal’s threading system.

Basically, our threading model divides the system into three categories:

  • FMOD Studio Update thread
  • FMOD mixer thread
  • Game threads

(We create a couple of other threads for streaming and asynchronous loading but I wouldn’t expect those to show up much in profiling.)

From our point of view Unreal’s threads are the “game” threads; calls to the high level studio API via our UE4 integration and any calls to our APIs made from your code will originate on these threads. We generally do very little processing on game threads and we don’t offer any way to directly record or measure time spent in our APIs on the game threads. To measure how much of your time is spent in FMOD calls you would need to use a sampling profiler.

The bulk of FMOD’s processing is done on the studio update thread and the low level mixer thread. We offer the FMOD::System::getCPUUsage and FMOD::Studio::System::getCPUUsage APIs to retrieve performance information. You should also be able to get a better understanding of FMOD’s HW thread utilisation using a profiler.

If you have profile data for your game and are concerned about the load from FMOD you can email support and we can assist with analysis and troubleshooting.

Cheers
Derek

Thanks for your answer, Derek. When you say, “You should also be able to get a better understanding of FMOD’s HW thread utilisation using a profiler.” would using a profiler like Razor CPU be fine. I have profile data for my game and will shoot an email to FMOD support. Thanks again.