> > On 3/9/2020 11:05 AM, Peter Zijlstra wrote: > >>> In the new proposal, KVM user is treated the same as other host > >>> events with event constraint. The scheduler is free to choose > >>> whether or not to assign a counter for it. > >> That's what it does, I understand that. I'm saying that that is > >> creating artificial contention. > >> > >> > >> Why is this needed anyway? Can't we force the guest to flush and then > >> move it over to a new counter? > > > > Current perf scheduling is pure software behavior. KVM only traps the MSR > access. It’s impossible for KVM to impact the guest’s scheduling with current > implementation. > > To address the concern regarding to 'artificial contention', we have two > proposals. > Could you please take a look, and share your thoughts? > > Proposal 1: > Reject the guest request, if host has to use the counter which occupied by > guest. At the meantime, host prints a warning. > I still think the contention should rarely happen in practical. > Personally, I prefer this proposal. > > > Proposal 2: > Add HW advisor for the scheduler in guest. > Starts from Architectural Perfmon Version 4, IA32_PERF_GLOBAL_INUSE MSR > is introduced. It provides an “InUse” bit for each programmable > performance counter and fixed counter in the processor. > > In perf, the scheduler will read the MSR and mask the “in used” > counters. I think we can use X86_FEATURE_HYPERVISOR to limit the check > in guest. For non-virtualization usage and host, nothing changed for > scheduler. > > But there is still a problem for this proposal. Host may request a > counter later, which has been used by guest. > We can only do multiplexing or grab the counter just like proposal 1. Hi Peter, What is your opinion? Thanks, Luwei Kang