On Tue, 21 Aug 2007, Luca Tettamanti wrote:
Avi Kivity ha scritto:
Luca Tettamanti wrote:
At 1000Hz:
QEMU
hpet 5.5%
dynticks 11.7%
KVM
hpet 3.4%
dynticks 7.3%
No surprises here, you can see the additional 1k syscalls per second.
This is very surprising to me. The 6.2% difference for the qemu case
translates to 62ms per second, or 62us per tick at 1000Hz. That's more
than a hundred simple syscalls on modern processors. We shouldn't have to
issue a hundred syscalls per guest clock tick.
[..snip preulde..]
I've also tried APC which was suggested by malc[1] and:
- readings are far more stable
- the gap between dynticks and non-dynticks seems not significant
[..dont snip the obvious fact and snip the numbers..]
Luca
[1] copy_to_user inside spinlock is a big no-no ;)
[..notice a projectile targeting at you and rush to see the code..]
Mixed feelings about this... But in principle the code ofcourse is
dangerous, thank you kindly for pointing this out.
I see two ways out of this:
a. moving the lock/unlock inside the loop with unlock preceding
sometimes sleep deprived copy_to_user
b. fill temporaries and after the loop is done copy it in one go
Too late, too hot, i wouldn't mind beying on a receiving side of
a good advice.
--
vale