freebsd-skq/sys/arm
Alan Cox 51321f7c31 Significantly reduce the cost, i.e., run time, of calls to madvise(...,
MADV_DONTNEED) and madvise(..., MADV_FREE).  Specifically, introduce a new
pmap function, pmap_advise(), that operates on a range of virtual addresses
within the specified pmap, allowing for a more efficient implementation of
MADV_DONTNEED and MADV_FREE.  Previously, the implementation of
MADV_DONTNEED and MADV_FREE relied on per-page pmap operations, such as
pmap_clear_reference().  Intuitively, the problem with this implementation
is that the pmap-level locks are acquired and released and the page table
traversed repeatedly, once for each resident page in the range
that was specified to madvise(2).  A more subtle flaw with the previous
implementation is that pmap_clear_reference() would clear the reference bit
on all mappings to the specified page, not just the mapping in the range
specified to madvise(2).

Since our malloc(3) makes heavy use of madvise(2), this change can have a
measureable impact.  For example, the system time for completing a parallel
"buildworld" on a 6-core amd64 machine was reduced by about 1.5% to 2.0%.

Note: This change only contains pmap_advise() implementations for a subset
of our supported architectures.  I will commit implementations for the
remaining architectures after further testing.  For now, a stub function is
sufficient because of the advisory nature of pmap_advise().

Discussed with: jeff, jhb, kib
Tested by:      pho (i386), marcel (ia64)
Sponsored by:   EMC / Isilon Storage Division
2013-08-29 15:49:05 +00:00
..
allwinner Bring initial support for Allwinner A20 SoC (Cubieboard2). 2013-08-07 11:07:56 +00:00
arm Significantly reduce the cost, i.e., run time, of calls to madvise(..., 2013-08-29 15:49:05 +00:00
at91 Replace kernel virtual address space allocation with vmem. This provides 2013-08-07 06:21:20 +00:00
broadcom/bcm2835 Move the Raspberry Pi low level options out of the kernel config and into 2013-07-15 07:01:30 +00:00
conf Update the root device to be correct for use with crochet. 2013-08-26 10:27:15 +00:00
econa Eliminate a redundant #include: machine/pmap.h is already included 2013-03-01 19:02:41 +00:00
freescale/imx Rename imx_machdep.c to imx51_machdep.c, because it contains hardware 2013-08-13 21:12:28 +00:00
include Introduce superpages support for ARMv6/v7. 2013-08-26 17:12:30 +00:00
lpc MFcalloutng: 2013-02-28 13:46:03 +00:00
mv Replace kernel virtual address space allocation with vmem. This provides 2013-08-07 06:21:20 +00:00
s3c2xx0 Use the correct address when calling kva_free() 2013-08-10 00:53:22 +00:00
sa11x0 Fix low-level uart drivers that set their fifo sizes in the softc too late. 2013-04-01 00:44:20 +00:00
samsung/exynos Increase the max KVA available for general consumption on the Exynos 5. 2013-08-18 18:08:12 +00:00
tegra
ti Add support for uarts other than the serial console in TI OMAP SoCs. 2013-08-21 14:33:02 +00:00
versatile - Fix IMAPx registers values calculation 2013-06-29 23:51:17 +00:00
xilinx Bring copyright changes with the agreement of Thomas Skibo. 2013-04-28 07:00:36 +00:00
xscale Replace kernel virtual address space allocation with vmem. This provides 2013-08-07 06:21:20 +00:00