macOS: Audio Workgroup threads not running on P-Cores

We have noticed that in our application that creates worker threads for audio processing, these threads (time-constrained priority) in some cases do not run on the P-Cores (on Apple Silicon Macs).

It was my understanding that once we use audio workgroups, the scheduler will always schedule our threads on the P-Cores.

This works okay as long as the CoreAudio buffer size used is 256 samples or less (@ 48K). But if the buffer size is 512 or above, the threads are run on E-Cores (checked using System Trace).

Is this expected behavior?

Can I find any documentation for this (short of analyzing the scheduler source in kernel)?

Thanks. Devendra.

Replies

From my experience this seems to be expected. The scheduler will only let your threads run on p-cores if the load is high enough. So as long as you don't have any audible drop-outs you should be fine.