[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
CVS: cvs.openbsd.org: src
- To: source-changes_(_at_)_cvs_(_dot_)_openbsd_(_dot_)_org
- Subject: CVS: cvs.openbsd.org: src
- From: Artur Grabowski <art_(_at_)_cvs_(_dot_)_openbsd_(_dot_)_org>
- Date: Fri, 25 May 2007 09:55:27 -0600 (MDT)
Module name: src
Changes by: art_(_at_)_cvs_(_dot_)_openbsd_(_dot_)_org 2007/05/25 09:55:27
sys/arch/i386/i386: apicvec.s ipifuncs.c lapic.c lock_machdep.c
machdep.c pmap.c vm_machdep.c
sys/arch/i386/include: atomic.h i82489var.h intr.h pmap.h
Replace the overdesigned and overcomplicated tlb shootdown code with
very simple and dumb fast tlb IPI handlers that have in the order of
the same amount of instructions as the old code had function calls.
All TLB shootdowns are reorganized so that we always shoot the,
without looking at PG_U and when we're shooting a range (primarily in
pmap_remove), we shoot the range when there are 32 or less pages in
it, otherwise we just nuke the whole TLB (this might need tweaking if
someone is interested in micro-optimization). The IPIs are not handled
through the normal interrupt vectoring code, they are not blockable
and they only shoot one page or a range of pages or the whole tlb.
This gives a 15% reduction in system time on my dual-core laptop
during a kernel compile and an 18% reduction in real time on a quad
machine doing bulk ports build.
Tested by many, in snaps for a week, no slowdowns reported (although not
everyone is seeing such huge wins).
Visit your host, monkey.org