[Bug 216759] [kern] Memory speed with small blocks (1K) up to 35 times slower than host system (under QEMU emulation, but not only)

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Tue Mar 21 19:04:41 UTC 2017


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=216759

--- Comment #17 from andrew at azar-a.net ---
(In reply to deJong from comment #16)
It doesn't seem like the patchset is applied at all.

> kern.timecounter.choice: TSC-low(-100) i8254(0) ACPI-fast(900) HPET(950) dummy(-1000000)

It should add kvmclock to that list which is obviously not there.

Forcing TSC-low on KVM VM when the host trusts it more than HPET and ACPI-PM is
foolproof imo.

It's obvious that the choice for this has been designed a long time ago and has
been programmed this way because back then TSC really sucked and any hypervisor
except for programmed by VMWare loophole is penalised (don't know though which
because xen requires more workarounds in the kernel and I don't really know how
bhyve runs it)..

So obviously this part of code should be reworked
if ((!smp_tsc && !tsc_is_invariant) || vm_guest)
        return (-100);

X86_FEATURE_CONSTANT_TSC is not checked at all (this is from linux, but still
BSD does not check that in any case in its TSC code (or I might be misreading
the magic tsc_is_invariant variable)). And most of all the vm_guest check
should go away. It's a terrible hack nowadays as this bug shows.

I did not try this yet but maybe something like this will help

if ((!smp_tsc && !tsc_is_invariant) || (vm_guest && vm_guest != VM_GUEST_KVM))
        return (-100);

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-virtualization mailing list