Metal calls hanging/stuck if app is started quickly after login

Our app uses Metal for image processing. We have found that if our app (and its possible intensive image processing) is started quickly after user is logged in, then calls to Metal may be hanging/stuck for a good while.

Example: it can take 1-2 minutes for something that usually takes 3-5 seconds! Metal threads are just hanging in a memmove...

In Activity Monitor we see a lot of things are happening right after log-in. But why Metal calls are blocking for so long is unknown to us...

The workaround is to wait a minute before we start our app and start intensive image processing using Metal. But hard to explain this workaround to end-users...

It doesn't happen on all computers but fairly easy to reproduce on some computers.

We are using macOS 15.3.1. M1/M3 Max.

Any good ideas for how to proceed with this problem and possible reach out to Apple engineers?

Thanks! :)

Answered by DTS Engineer in 824869022

We recommend:

Analyzing the performance of your Metal app

and

Monitoring your Metal app’s graphics performance

At a minimum you'll want profile your app in Instruments with one of the Metal-specific Templates. The Game Performance template may also be useful even if your app is not a game.

Clarification: the problem is reproducible on three M1 Max-based computers. But not one M3 Max-based computer. Not sure that is enough to conclude anything...

We recommend:

Analyzing the performance of your Metal app

and

Monitoring your Metal app’s graphics performance

At a minimum you'll want profile your app in Instruments with one of the Metal-specific Templates. The Game Performance template may also be useful even if your app is not a game.

Metal calls hanging/stuck if app is started quickly after login
 
 
Q