On the clock= question, I have some partial info, but it doesn't seem to mesh completely with everything that others have posted here.
The default in a vanilla 2.6 kernel is for Linux to try clock= options in the order cyclone, hpet, pmtmr, tsc, pit. The cyclone and hpet timers aren't present in a VM. The pmtmr is present, but I think Linux decides not to use it if you turn off ACPI support.
In SuSE SLES9, there is a patch that changes the preference order to put tsc in front of pmtmr. So the effect is that on SLES9 in a VM, you get clock=tsc by default, while in a vanilla 2.6 kernel in a VM you get clock=pmtmr by default.
Between 2.4 and 2.6, some complex code has been added to the routines that are used if clock=tsc. 2.4 didn't have the clock= option, but the code that is now under clock=tsc is what was used on all machines with TSCs. In my testing on SLES9, clock=tsc makes the clock run too fast in a VM. I'm going to have to read the Linux code much more carefully to find out why and whether we can do something to tame it.
The good news is that my SLES9 VM seems to keep time okay with clock=pmtmr. Using clock=pit should work too (though I haven't tried it yet), but that causes gettimeofday in the VM to be a lot more coarse-grained, so it seems preferable to use pmtmr if it works.
The thing that worries me here is that a previous poster (sindu) reported that using clock=tsc worked better than clock=pmtmr on Debian Sarge with its 2.6.8-1 kernel; however, later he said that clock=pit was still better. I can understand clock=pit being better than clock=tsc, but not why clock=pmtmr was worse than clock=tsc -- that doesn't reproduce for me. Maybe it's because SLES9 uses a 2.6.5-based kernel? Ugh.