In an old thread, now deleted, Blizzard outlined the best active system. He thought it took a 12-core Xeon processor with one CPU core dedicated to each of eight audio channels and the remaining four cores dedicated to a real-time OS. Based on my experience programming high performance computers I thought his proposed configuration was absurd and said so. However, at the time, I didn’t have any numbers to support my contention so I let it slide.
I recently studied CPU affinity, in detail, and gathered some numbers. The software is a foobar DSP plugin that resamples stereo PCM to 512Fs. I timed three configurations on two different CPUs. The CPUs are a 3.0 GHz Q9650 and a 4.0 GHz I7-6700K. The configurations are:
A. Any available core chosen by the OS.
B. One dedicated core per channel.
C. Either of 2-cores selected by function.
Configuration A yielded CPU utilizations of 35% and 12% for the Core2 and I7, respectively.
Configuration B yielded CPU utilizations of 37% and 14%.
Configuration C yielded CPU utilizations of 30% and 8%.
It does not surprise me that configuration B is the slowest because a dedicated core per channel keeps the scheduler from making the best use of the available system resources. Configuration A suffers because with only two channels it’s hard to utilize more than two cores at once. Configuration C performs best because it has the smallest, per-thread, working set. Unfortunately, working set is not part of an audiophile’s vocabulary or understanding. Without understanding, audiophiles are doomed to make bad choices.
I recently studied CPU affinity, in detail, and gathered some numbers. The software is a foobar DSP plugin that resamples stereo PCM to 512Fs. I timed three configurations on two different CPUs. The CPUs are a 3.0 GHz Q9650 and a 4.0 GHz I7-6700K. The configurations are:
A. Any available core chosen by the OS.
B. One dedicated core per channel.
C. Either of 2-cores selected by function.
Configuration A yielded CPU utilizations of 35% and 12% for the Core2 and I7, respectively.
Configuration B yielded CPU utilizations of 37% and 14%.
Configuration C yielded CPU utilizations of 30% and 8%.
It does not surprise me that configuration B is the slowest because a dedicated core per channel keeps the scheduler from making the best use of the available system resources. Configuration A suffers because with only two channels it’s hard to utilize more than two cores at once. Configuration C performs best because it has the smallest, per-thread, working set. Unfortunately, working set is not part of an audiophile’s vocabulary or understanding. Without understanding, audiophiles are doomed to make bad choices.