Message ID | 20200508203643.85477-1-jmattson@google.com (mailing list archive) |
---|---|
Headers | show |
Series | Pin the hrtimer used for VMX-preemption timer emulation | expand |
On 08/05/20 22:36, Jim Mattson wrote: > > It might be possible to improve that pass rate even more by increasing > the scaling factor in the virtual IA32_VMX_MISC[4:0], but you'd have > to be even more of a stickler than I to go to that extreme. > > By the way, what is the point of migrating the hrtimers for the APIC > and the PIT, since they aren't even pinned to begin with? Unless housekeeping CPUs for timers are configured, the timer will run on the CPU it is started on, even without pinning; see get_nohz_timer_target. Paolo
On Fri, May 8, 2020 at 1:36 PM Jim Mattson <jmattson@google.com> wrote: > > I'm still not entirely convinced that the Linux hrtimer can be used to > accurately emulate the VMX-preemption timer... It can't, for several reasons: 1) The conversion between wall-clock time and TSC frequency, based on tsc_khz, isn't precise enough. 2) The base clock for the hrtimer, CLOCK_MONOTONIC, can be slewed, whereas the TSC cannot. 3) The VMX-preemption timer is suspended during MWAIT; the hrtimer is not. Is there any reason that VMX-preemption timer emulation shouldn't just be a second client of the hv_timer, along with lapic timer emulation?
On 19/06/20 20:49, Jim Mattson wrote: > On Fri, May 8, 2020 at 1:36 PM Jim Mattson <jmattson@google.com> wrote: >> >> I'm still not entirely convinced that the Linux hrtimer can be used to >> accurately emulate the VMX-preemption timer... > > It can't, for several reasons: > > 1) The conversion between wall-clock time and TSC frequency, based on > tsc_khz, isn't precise enough. > 2) The base clock for the hrtimer, CLOCK_MONOTONIC, can be slewed, > whereas the TSC cannot. > 3) The VMX-preemption timer is suspended during MWAIT; the hrtimer is not. > > Is there any reason that VMX-preemption timer emulation shouldn't just > be a second client of the hv_timer, along with lapic timer emulation? I don't think so, you'd just need logic to multiplex it. Paolo