Logic Pro/Express: Tips for balancing multi-core performance
Logic Pro and Logic Express 8 or later can use all cores on 2, 4, and 8 core Macs. Keep these tips in mind as you work with Logic to balance performance on a multi-core system.
About core activity
Logic breaks tasks down into threads that can be assigned to a single core for execution. It's not possible to split a single thread across multiple cores, although a single core may run multiple threads at the same time. This is one reason that you may sometimes see uneven load distributions across the available cores on your computer. If one thread is very processor-intensive, the core running that thread may show much more activity than the cores running less demanding tasks. This is the main reason that you may get "Core Audio Overload" warning messages even though some of the cores on your system may not show significant activity.
To monitor Logic as it uses the cores on your system, double-click the CPU meter in the Transport area.
A window displays a meter for each core.
The same concept applies to channel strips as well. Each channel strip—and all plug-ins it contains—is processed by one core. If you are using many processor-intensive plug-ins on a single channel strip, the core running it may show heavier activity. This is especially true if you are working at high sample rates (88.2 kHz or higher).
Redistributing core loads
If you find that a single core has much higher activity, use these strategies to redistribute the load.
In the example below, there is a single Software Instrument channel strip with plug-ins routed directly to Output 1-2. The channel strip for Output 1-2 has a large number of plug-ins.
In this example there is activity on two cores: the left core is handling the Software Instrument while the next core processes the Output 1-2 channel strip. You can use routing capabilities in Logic to distribute the load to more cores without changing the sound, as in the next image.
The resulting signal chain is Inst 1 > Aux 1 > Aux 2 > Out 1-2, as shown in this table:
|Inst 1||Bus 1|
|Aux 1||Bus 1||Bus 2|
|Aux 2||Bus 2||Out 1-2|
Also, the first four plug-ins have moved from Output 1-2 to Aux 1 and the remaining four plug-ins to Aux 2.
After adjusting the volumes to the respective channel strips appropriately, the result sounds identical, but now the load is distributed among four cores instead of two. You can use this concept to redistribute plug-ins from Audio channel strips, Software Instruments, Auxes, and Outputs (as in this example).
In the image above, there is still a very heavy load on a single core, even though it's using the routing described above. Notice the Inst 1 channel strip is selected. When a Software Instrument track is selected in the Arrange window, Logic enters "Live Input Mode". In this mode, Logic turns on every plug-in in the channel strip's signal path so the channel strip can be played live from a MIDI controller. All of this must be handled by a single thread and therefore just one core. It's a good idea to keep a track that uses an Audio channel strip selected in the Arrange window, unless you're actively playing or recording to a Software Instrument.