Hmm, on Linux, have you ever tried LTTng? It basically creates a recording of your system activity which you can then view using tools like LTTv or an Eclipse plugin. Using that, you might be able to get a better understanding of what actually happens. You can see stuff like interrupts, syscalls and more. Maybe some high-prio process/task comes in, maybe there is some other driver doing something funky, etc.
I personally don't have a non-virtual Linux system which I can run it on and I also don't have stuff setup for SDL and or OpenGL on my development machines, so I can't really try to reproduce it at the moment.
About CPU parking, I don't really know honestly. All I know is that it has been known to cause hickups in games etc, so I disabled it early on and haven't looked back since. LTTng _might_ show you if cpu parking is related.
Just tried out LTTng and it dumped 60MB of data (which babeltrace spits out to my stdout) for only 10 second of gameplay. Wow. May install Eclipse to try and interpret the trace data. Tried plugging it all into an IDE when I set it up with visual studio, but trace data there didn't seem to help. The most valuable trace information so far is what I've posted in some other posts where I've screens that show how long each frame takes using c++11 chrono. I can't imagine system calls and other processes really interfering with the code, given that it happens the same way across multiple systems at the same times. I tried recording it to post a video, but it seems my computer can't handle that. Will try fraps or something in Windows and see if I can record with that.