Wish I found this article a long time ago, as the article mirrors some of my personal observations. e.g.

Quote:Packet jitter is most frequently caused by software. In many systems the time at which each packet is scheduled for transmission is computed in software. If that software is late in doing its job, the packet timing will change. This software that does the packet scheduling is almost always interrupt driven. The exact time this interrupt routine is called can be affected by other software on the computer, in particular process and thread priorities. The kernel scheduling protocol also has a significant affect.

Is the reason why I decided to use a RT kernel.

And I learnt something new - cache misses:

Quote:Special instructions that do a lot with just one instruction can also significantly decrease cache misses. But not all processors support all the different types of these instructions, so few programs really make use of these.
...
One interesting aspect of this is compiler optimizations can significantly increase the cache misses.

So the trick is to enable all features of the CPU (e.g. SSE3, and so on), but without compiler optimisations (-O2). The first part is really hard to do since I am not the author of any of the software players, but at least I can manage with the second. I'd see if I can incorprate this into the next release of Snakeoil.