Re: [PATCH 7/7] x86,idle: do not leave mm in idle state

From: Andy Lutomirski
Date: Fri Jun 22 2018 - 11:37:21 EST


On Wed, Jun 20, 2018 at 12:57 PM Rik van Riel <riel@xxxxxxxxxxx> 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.