Articles | Full Index | RSS Feed
Today while doing more performance and reliability testing on Cantabile's multi-processor support I noticed something strange.
With one particular session, although load was definitely getting spread across two CPU cores, I was getting a constant trickle of audio drop outs. Switching back to 1.2 and running the same session showed more load but less drop outs.
After spending a couple of hours debugging, measuring various performance metrics and profile tuning I still had no idea what was going on and decided I needed a more stable environment for testing. Since I found myself constantly trying to setup sessions with various amounts of load, I came up with the idea of a "load" plugin.
Elephant (obviously named for its heavy CPU usage) is a simple plugin that does two things. Firstly, it burns a configurable amount of CPU time and secondly, it generates a sine wave test tone so that audio drop outs can be easily detected.

Using Elephant I found the problem I was chasing nearly straight away. Turns out the ASIO driver that came with by notebook crackles when CPU load is around 50% - but is fine above and below. In the unstable environment of different plugins and constantly varying load, this was never apparent. The session I was testing with under 1.2 load hovered around 80-90% but in 2.0 about 50% causing the drop outs I was hearing.
I've got no explanation as to why this particular ASIO driver has this problem, but I don't really care. It occurs in every other host that I've tried and is obviously not a problem with Cantabile.
In the mean time I've got a neat little plugin that makes testing this sort of stuff so much easier. I can even load a couple of Elephants on different racks and adjust CPU usage in real time and cross reference it with what I'm seeing in Task Manager.
Posted on May 31, 2007