On Fri, 2018-06-22 at 08:36 -0700, Andy Lutomirski wrote: > On Wed, Jun 20, 2018 at 12:57 PM Rik van Riel <r...@surriel.com> > wrote: > > > > Do not call leave_mm when going into a cstate. Now that mprotect > > and > > madvise no longer send IPIs for TLB shootdowns to idle CPUs, there > > is > > no real reason to disable lazy TLB mode in idle states. > > > > This seems to help performance on Broadwell systems. Haswell > > performance > > numbers are inconclusive. > > I'm skeptical. The code you're removing is more about power > consumption than about performance. If a task migrates from one cpu > to another, runs for awhile, and exits, we don't want to IPI the old > CPU if the old CPU is deeply asleep. The logic you're removing is a > bit awkwardly written, but the intent is to only do the leave_mm() in > deep sleep. We should arguably change the condition to check the > expected sleep duration instead of the microarchitectural properties > of the target state, though.
That is fair. A quick hack could be to just remove the tlb flush from C3 state (which gets called a lot), but keep it for C6 state and deeper (which get called more when a CPU is really idle). -- All Rights Reversed.
signature.asc
Description: This is a digitally signed message part