HomeFreeBSD

Reduce the cost of TLB invalidation on x86 by using per-CPU completion flags

Description

Reduce the cost of TLB invalidation on x86 by using per-CPU completion flags

Reduce contention during TLB invalidation operations by using a per-CPU
completion flag, rather than a single atomically-updated variable.

On a Westmere system (2 sockets x 4 cores x 1 threads), dtrace measurements
show that smp_tlb_shootdown is about 50% faster with this patch; observations
with VTune show that the percentage of time spent in invlrng_single_page on an
interrupt (actually doing invalidation, rather than synchronization) increases
from 31% with the old mechanism to 71% with the new one. (Running a basic file
server workload.)

Submitted by: Anton Rang <rang at acm.org>
Reviewed by: cem (earlier version), kib
Sponsored by: Dell EMC Isilon
Differential Revision: https://reviews.freebsd.org/D8041

Details

Provenance
cemAuthored on
Reviewer
cem
Differential Revision
D8041: Reduce the cost of TLB invalidation on x86 by using per-CPU completion flags.
Parents
rS306515: Revert commit
Branches
Unknown
Tags
Unknown