Cantabile Development Blog

Follow the development of music software Cantabile

Articles | Full Index | RSS Feed


Bring in the Elephants

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.

images/Elephant.png

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

Share This

Leave A Comment

All comments will be reviewed for spam before being displayed.