[v2, 6/7] powerpc/64s/radix: Introduce local single page ceiling for TLB range flush
Michael Ellerman
patch-notifications at ellerman.id.au
Tue Nov 14 22:12:17 AEDT 2017
On Tue, 2017-11-07 at 07:53:08 UTC, Nicholas Piggin wrote:
> The single page flush ceiling is the cut-off point at which we switch
> from invalidating individual pages, to invalidating the entire process
> address space in response to a range flush.
>
> Introduce a local variant of this heuristic because local and global
> tlbie have significantly different properties:
> - Local tlbiel requires 128 instructions to invalidate a PID, global
> tlbie only 1 instruction.
> - Global tlbie instructions are expensive broadcast operations.
>
> The local ceiling has been made much higher, 2x the number of
> instructions required to invalidate the entire PID (i.e., 256 pages).
>
> Time to mprotect N pages of memory (after mmap, touch), local invalidate:
> N 32 34 64 128 256 512
> vanilla 7.4us 9.0us 14.6us 26.4us 50.2us 98.3us
> patched 7.4us 7.8us 13.8us 26.4us 51.9us 98.3us
>
> The behaviour of both is identical at N=32 and N=512. Between there,
> the vanilla kernel does a PID invalidate and the patched kernel does
> a va range invalidate.
>
> At N=128, these require the same number of tlbiel instructions, so
> the patched version can be sen to be cheaper when < 128, and more
> expensive when > 128. However this does not well capture the cost
> of invalidated TLB.
>
> The additional cost at 256 pages does not seem prohibitive. It may
> be the case that increasing the limit further would continue to be
> beneficial to avoid invalidating all of the process's TLB entries.
>
> Signed-off-by: Nicholas Piggin <npiggin at gmail.com>
Applied to powerpc next, thanks.
https://git.kernel.org/powerpc/c/f6f27951fdf84a6edca3ea14077268
cheers
More information about the Linuxppc-dev
mailing list