On Mon, 16 Apr 2018 14:32:40 +1000 Nicholas Piggin <npig...@gmail.com> wrote:
> When running a SMP radix guest, KVM can get into page fault / tlbie > storms -- hundreds of thousands to the same address from different > threads -- due to partition scoped page faults invalidating the > page table entry if it was found to be already set up by a racing > CPU. > > What can happen is that guest threads can hit page faults for the > same addresses, this can happen when KSM or THP takes out a commonly > used page. gRA zero (the interrupt vectors and important kernel text) > was a common one. Multiple CPUs will page fault and contend on the > same lock, when one CPU sets up the page table and releases the lock, > the next will find the new entry and invalidate it before installing > its own, which causes other page faults which invalidate that entry, > etc. > > The solution to this is to avoid invalidating the entry or flushing > TLBs in case of a race. The pte may still need bits updated, but > those are to add R/C or relax access restrictions so no flush is > required. > > This solves the page fault / tlbie storms. Oh, I didn't notice "KVM: PPC: Book3S HV: Radix page fault handler optimizations" does much the same thing as this one and it's been merged upstream now. That also adds a partition scoped PWC flush that I'll add to powerpc/mm, so I'll rebase this series. Thanks, Nick