Home | History | Annotate | Download | only in uvm
History log of /src/sys/uvm/uvm_meter.c
RevisionDateAuthorComments
 1.80  14-Jun-2020  ad Remove PG_ZERO. It worked brilliantly on x86 machines from the mid-90s but
having spent an age experimenting with it over the last 6 months on various
machines and with different use cases it's always either break-even or a
slight net loss for me.
 1.79  11-Jun-2020  ad Counter tweaks:

- Don't need to count anonpages+filepages any more; clean+unknown+dirty for
each kind of page can be summed to get the totals.

- Track the number of free pages with a counter so that it's one less thing
for the allocator to do, which opens up further options there.

- Remove cpu_count_sync_one(). It has no users and doesn't save a whole lot.
For the cheap option, give cpu_count_sync() a boolean parameter indicating
that a cached value is okay, and rate limit the updates for cached values
to hz.
 1.78  11-Jun-2020  ad uvm_availmem(): give it a boolean argument to specify whether a recent
cached value will do, or if the very latest total must be fetched. It can
be called thousands of times a second and fetching the totals impacts not
only the calling LWP but other CPUs doing unrelated activity in the VM
system.
 1.77  23-May-2020  ad Move proc_lock into the data segment. It was dynamically allocated because
at the time we had mutex_obj_alloc() but not __cacheline_aligned.
 1.76  22-Mar-2020  ad Process concurrent page faults on individual uvm_objects / vm_amaps in
parallel, where the relevant pages are already in-core. Proposed on
tech-kern.

Temporarily disabled on MP architectures with __HAVE_UNLOCKED_PMAP until
adjustments are made to their pmaps.
 1.75  19-Mar-2020  ad sysctl_vm_uvmexp2(): some counters were needlessly truncated.
 1.74  15-Jan-2020  ad Merge from yamt-pagecache (after much testing):

- Reduce unnecessary page scan in putpages esp. when an object has a ton of
pages cached but only a few of them are dirty.

- Reduce the number of pmap operations by tracking page dirtiness more
precisely in uvm layer.
 1.73  31-Dec-2019  ad branches: 1.73.2;
Rename uvm_free() -> uvm_availmem().
 1.72  21-Dec-2019  ad Counter tweaks:

"zeroaborts" + "free" don't need to be per-CPU counters, and "bucketmiss"
wasn't used. Remove those and cluster by usage.
 1.71  21-Dec-2019  ad uvmexp.free -> uvm_free()
 1.70  16-Dec-2019  ad - Extend the per-CPU counters matt@ did to include all of the hot counters
in UVM, excluding uvmexp.free, which needs special treatment and will be
done with a separate commit. Cuts system time for a build by 20-25% on
a 48 CPU machine w/DIAGNOSTIC.

- Avoid 64-bit integer divide on every fault (for rnd_add_uint32).
 1.69  07-Jan-2019  jdolecek add sysctl to easily set ubc_direct

PR kern/53124
 1.68  03-Sep-2018  riastradh Rename min/max -> uimin/uimax for better honesty.

These functions are defined on unsigned int. The generic name
min/max should not silently truncate to 32 bits on 64-bit systems.
This is purely a name change -- no functional change intended.

HOWEVER! Some subsystems have

#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))

even though our standard name for that is MIN/MAX. Although these
may invite multiple evaluation bugs, these do _not_ cause integer
truncation.

To avoid `fixing' these cases, I first changed the name in libkern,
and then compile-tested every file where min/max occurred in order to
confirm that it failed -- and thus confirm that nothing shadowed
min/max -- before changing it.

I have left a handful of bootloaders that are too annoying to
compile-test, and some dead code:

cobalt ews4800mips hp300 hppa ia64 luna68k vax
acorn32/if_ie.c (not included in any kernels)
macppc/if_gm.c (superseded by gem(4))

It should be easy to fix the fallout once identified -- this way of
doing things fails safe, and the goal here, after all, is to _avoid_
silent integer truncations, not introduce them.

Maybe one day we can reintroduce min/max as type-generic things that
never silently truncate. But we should avoid doing that for a while,
so that existing code has a chance to be detected by the compiler for
conversion to uimin/uimax without changing the semantics until we can
properly audit it all. (Who knows, maybe in some cases integer
truncation is actually intended!)
 1.67  02-Dec-2017  mrg branches: 1.67.2; 1.67.4;
add two new members to uvmexp_sysctl{}: bootpages and poolpages.
bootpages is set to the pages allocated via uvm_pageboot_alloc().
poolpages is calculated from the list of pools nr_pages members.

this brings us closer to having a valid total of pages known by
the system, vs actual pages originally managed.

XXX: poolpages needs some handling for PR_RECURSIVE pools still.
 1.66  02-Jul-2017  joerg Export the guard size of the main thread via vm.guard_size. Add a
complementary writable sysctl for the initial guard size of threads
created via pthread_create. Let the existing attribut accessors do the
right thing. Raise the default guard size for threads to 64KB.
 1.65  01-Dec-2014  msaitoh branches: 1.65.10;
Sort in uvmexp_sysctl's order for readability. No functional change.
 1.64  01-Dec-2014  msaitoh Fix a bug that "vmstat -s" print uvmexp.ncolors incorrectly.
 1.63  26-Feb-2014  martin branches: 1.63.4; 1.63.6;
Fix copy & pasto
 1.62  26-Feb-2014  matt Add vm.min_address and vm.max_address which return VM_MIN_ADDRESS and
VM_MAXUSER_ADDRESS.
 1.61  25-Feb-2014  pooka Ensure that the top level sysctl nodes (kern, vfs, net, ...) exist before
the sysctl link sets are processed, and remove redundancy.

Shaves >13kB off of an amd64 GENERIC, not to mention >1k duplicate
lines of code.
 1.60  02-Jun-2012  dsl branches: 1.60.2; 1.60.4;
Add some pre-processor magic to verify that the type of the data item
passed to sysctl_createv() actually matches the declared type for
the item itself.
In the places where the caller specifies a function and a structure
address (typically the 'softc') an explicit (void *) cast is now needed.
Fixes bugs in sys/dev/acpi/asus_acpi.c sys/dev/bluetooth/bcsp.c
sys/kern/vfs_bio.c sys/miscfs/syncfs/sync_subr.c and setting
AcpiGbl_EnableAmlDebugObject.
(mostly passing the address of a uint64_t when typed as CTLTYPE_INT).
I've test built quite a few kernels, but there may be some unfixed MD
fallout. Most likely passing &char[] to char *.
Also add CTLFLAG_UNSIGNED for unsiged decimals - not set yet.
 1.59  27-Jan-2012  para extending vmem(9) to be able to allocated resources for it's own needs.
simplifying uvm_map handling (no special kernel entries anymore no relocking)
make malloc(9) a thin wrapper around kmem(9)
(with private interface for interrupt safety reasons)

releng@ acknowledged
 1.58  30-Dec-2011  christos prevent kernel from writing more than userland passed.
 1.57  13-Nov-2011  christos branches: 1.57.4;
if you are going to dereference a variable, check the variable itself, not
it cousin.
 1.56  02-Feb-2011  chuck branches: 1.56.4;
udpate license clauses on my code to match the new-style BSD licenses.
based on second diff that rmind@ sent me.

no functional change with this commit.
 1.55  20-Dec-2010  matt branches: 1.55.2; 1.55.4;
Move counting of faults, traps, intrs, soft[intr]s, syscalls, and nswtch
from uvmexp to per-cpu cpu_data and move them to 64bits. Remove unneeded
includes of <uvm/uvm_extern.h> and/or <uvm/uvm.h>.
 1.54  16-Nov-2010  enami Nowadays, comparing priority against PZERO doesn't make any sense.
Instead, see if a process waits uninterruptibly like ps does,
so that the second column (`b') of default vmstat output prints
some useful value (-t is still broken though).
 1.53  06-Nov-2010  uebayasi Include uvm/uvm.h because this is part of UVM.
 1.52  16-Apr-2010  rmind - Merge sched_pstats() and uvm_meter()/uvm_loadav(). Avoids double loop
through all LWPs and duplicate locking overhead.

- Move sched_pstats() from soft-interrupt context to process 0 main loop.
Avoids blocking effect on real-time threads. Mostly fixes PR/38792.

Note: it might be worth to move the loop above PRI_PGDAEMON. Also,
sched_pstats() might be cleaned-up slightly.
 1.51  11-Apr-2010  mrg now that CTLTYPE_BOOL actually works, use it to export vm_page_zero_enable
as vm.idlezero in a way that actually works on big endian systems.
 1.50  21-Oct-2009  rmind branches: 1.50.2; 1.50.4;
Remove uarea swap-out functionality:

- Addresses the issue described in PR/38828.
- Some simplification in threading and sleepq subsystems.
- Eliminates pmap_collect() and, as a side note, allows pmap optimisations.
- Eliminates XS_CTL_DATA_ONSTACK in scsipi code.
- Avoids few scans on LWP list and thus potentially long holds of proc_lock.
- Cuts ~1.5k lines of code. Reduces amd64 kernel size by ~4k.
- Removes __SWAP_BROKEN cases.

Tested on x86, mips, acorn32 (thanks <mpumford>) and partly tested on
acorn26 (thanks to <bjh21>).

Discussed on <tech-kern>, reviewed by <ad>.
 1.49  04-Jun-2008  ad branches: 1.49.8; 1.49.14; 1.49.16; 1.49.18;
- vm_page: put listq, pageq into a union alongside a LIST_ENTRY, so we can
use both types of list.

- Make page coloring and idle zero state per-CPU.

- Maintain per-CPU page freelists. When freeing, put pages onto the local
CPU's lists and the global lists. When allocating, prefer to take pages
from the local CPU. If none are available take from the global list as
done now. Proposed on tech-kern@.
 1.48  24-Apr-2008  ad branches: 1.48.2; 1.48.4;
Network protocol interrupts can now block on locks, so merge the globals
proclist_mutex and proclist_lock into a single adaptive mutex (proc_lock).
Implications:

- Inspecting process state requires thread context, so signals can no longer
be sent from a hardware interrupt handler. Signal activity must be
deferred to a soft interrupt or kthread.

- As the proc state locking is simplified, it's now safe to take exit()
and wait() out from under kernel_lock.

- The system spends less time at IPL_SCHED, and there is less lock activity.
 1.47  26-Feb-2007  yamt branches: 1.47.38; 1.47.40;
implement priority inheritance.
 1.46  17-Feb-2007  pavel Change the process/lwp flags seen by userland via sysctl back to the
P_*/L_* naming convention, and rename the in-kernel flags to avoid
conflict. (P_ -> PK_, L_ -> LW_ ). Add back the (now unused) LSDEAD
constant.

Restores source compatibility with pre-newlock2 tools like ps or top.

Reviewed by Andrew Doran.
 1.45  15-Feb-2007  ad branches: 1.45.2;
Fix load average calculation:

- Don't consider kernel threads when calculating the load average. Their
priorities are no longer adjusted by the scheduler, and their level of
activity is dependent upon running user processes.
- Change the (l->l_priority > PZERO) check in uvm_meter() to (l->l_flag &
L_SINTR). I think this check was originally intended to weed out
processes sleeping interruptably.
 1.44  09-Feb-2007  ad Merge newlock2 to head.
 1.43  01-Nov-2006  yamt branches: 1.43.2; 1.43.4;
remove some __unused from function parameters.
 1.42  12-Oct-2006  dogcow even more __unused.
 1.41  15-Sep-2006  yamt branches: 1.41.2;
merge yamt-pdpolicy branch.
- separate page replacement policy from the rest of kernel
- implement an alternative replacement policy
 1.40  07-Jun-2006  kardel branches: 1.40.6;
merge FreeBSD timecounters from branch simonb-timecounters
- struct timeval time is gone
time.tv_sec -> time_second
- struct timeval mono_time is gone
mono_time.tv_sec -> time_uptime
- access to time via
{get,}{micro,nano,bin}time()
get* versions are fast but less precise
- support NTP nanokernel implementation (NTP API 4)
- further reading:
Timecounter Paper: http://phk.freebsd.dk/pubs/timecounter.pdf
NTP Nanokernel: http://www.eecis.udel.edu/~mills/ntp/html/kern.html
 1.39  21-Dec-2005  yamt branches: 1.39.4; 1.39.6; 1.39.8; 1.39.14;
whitespace in SYSCTL_DESCR.
 1.38  21-Dec-2005  yamt make length of inactive queue tunable by sysctl. (vm.inactivepct)
 1.37  11-Dec-2005  christos merge ktrace-lwp.
 1.36  09-Nov-2005  simonb Whitespace nit.
 1.35  27-Jun-2005  thorpej branches: 1.35.2;
Use ANSI function decls.
 1.34  15-May-2005  yamt remove anon related statistics which are no longer used.
 1.33  10-Oct-2004  yamt expose vm_page_zero_enable as vm.idlezero sysctl.
XXX assuming boolean_t == int.
 1.32  25-May-2004  atatat Sysctl descriptions under vm subtree
 1.31  24-Mar-2004  atatat branches: 1.31.2;
Tango on sysctl_createv() and flags. The flags have all been renamed,
and sysctl_createv() now uses more arguments.
 1.30  24-Mar-2004  junyoung - Nuke __P().
- Drop trailing spaces.
 1.29  11-Jan-2004  yamt sysctl_vm_updateminmax: fix swapped filemin and execmin.
the problem reported by Vesbula on current-users@.
 1.28  07-Dec-2003  tsutsui Allow sysctl(8) to update vm.{anon,exec,file}{min,max}.

XXX needs sysctl(9) man page to confirm this change..
 1.27  04-Dec-2003  atatat Dynamic sysctl.

Gone are the old kern_sysctl(), cpu_sysctl(), hw_sysctl(),
vfs_sysctl(), etc, routines, along with sysctl_int() et al. Now all
nodes are registered with the tree, and nodes can be added (or
removed) easily, and I/O to and from the tree is handled generically.

Since the nodes are registered with the tree, the mapping from name to
number (and back again) can now be discovered, instead of having to be
hard coded. Adding new nodes to the tree is likewise much simpler --
the new infrastructure handles almost all the work for simple types,
and just about anything else can be done with a small helper function.

All existing nodes are where they were before (numerically speaking),
so all existing consumers of sysctl information should notice no
difference.

PS - I'm sorry, but there's a distinct lack of documentation at the
moment. I'm working on sysctl(3/8/9) right now, and I promise to
watch out for buses.
 1.26  29-Jun-2003  fvdl branches: 1.26.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
 1.25  28-Jun-2003  darrenr Pass lwp pointers throughtout the kernel, as required, so that the lwpid can
be inserted into ktrace records. The general change has been to replace
"struct proc *" with "struct lwp *" in various function prototypes, pass
the lwp through and use l_proc to get the process pointer when needed.

Bump the kernel rev up to 1.6V
 1.24  18-Jan-2003  thorpej Merge the nathanw_sa branch.
 1.23  09-Dec-2001  chs add {anon,file,exec}max as a upper bound on the amount of memory that
will be allocated for the respective usage types when there is contention
for memory.

replace "vnode" and "vtext" with "file" and "exec" in uvmexp field names
and sysctl names.
 1.22  10-Nov-2001  lukem add RCSIDs, and in some cases, slightly cleanup #include order
 1.21  14-Jul-2001  matt branches: 1.21.4;
Add support for kern.maxphys, vm.maxslp, vm.uspace (the later two for ps).
 1.20  02-Jun-2001  chs branches: 1.20.2;
replace vm_map{,_entry}_t with struct vm_map{,_entry} *.
 1.19  25-May-2001  chs remove trailing whitespace.
 1.18  29-Apr-2001  thorpej Implement page coloring, using a round-robin bucket selection
algorithm (Solaris calls this "Bin Hopping").

This implementation currently relies on MD code to define a
constant defining the number of buckets. This will change
reasonably soon (MD code will be able to dynamically size
the bucket array).
 1.17  09-Mar-2001  chs add UBC memory-usage balancing. we track the number of pages in use for
each of the basic types (anonymous data, executable image, cached files)
and prevent the pagedaemon from reusing a given page if that would reduce
the count of that type of page below a sysctl-setable minimum threshold.
the thresholds are controlled via three new sysctl tunables:
vm.anonmin, vm.vnodemin, and vm.vtextmin. these tunables are the
percentages of pageable memory reserved for each usage, and we do not allow
the sum of the minimums to be more than 95% so that there's always some
memory that can be reused.
 1.16  30-Nov-2000  simonb branches: 1.16.2;
Move uvm_pgcnt_vnode and uvm_pgcnt_anon into uvmexp (as vnodepages and
anonpages), and add vtextpages which is currently unused but will be
used to trace the number of pages used by vtext vnodes.
 1.15  29-Nov-2000  simonb Add a vm.uvmexp2 sysctl that uses a ABI-safe 'struct uvmexp_sysctl'.
 1.14  24-Nov-2000  chs use queue.h macros and other misc cleanup.
 1.13  27-Jun-2000  mrg remove include of <vm/vm.h>
 1.12  26-May-2000  thorpej Introduce a new process state distinct from SRUN called SONPROC
which indicates that the process is actually running on a
processor. Test against SONPROC as appropriate rather than
combinations of SRUN and curproc. Update all context switch code
to properly set SONPROC when the process becomes the current
process on the CPU.
 1.11  11-Feb-2000  thorpej Add some very simple code to auto-size the kmem_map. We take the
amount of physical memory, divide it by 4, and then allow machine
dependent code to place upper and lower bounds on the size. Export
the computed value to userspace via the new "vm.nkmempages" sysctl.

NKMEMCLUSTERS is now deprecated and will generate an error if you
attempt to use it. The new option, should you choose to use it,
is called NKMEMPAGES, and two new options NKMEMPAGES_MIN and
NKMEMPAGES_MAX allow the user to configure the bounds in the kernel
config file.
 1.10  25-Jul-1999  thorpej branches: 1.10.2;
Turn the proclist lock into a read/write spinlock. Update proclist locking
calls to reflect this. Also, block statclock rather than softclock during
in the proclist locking functions, to address a problem reported on
current-users by Sean Doran.
 1.9  22-Jul-1999  thorpej Garbage collect thread_sleep()/thread_wakeup() left over from the old
Mach VM code. Also nuke iprintf(), which was no longer used anywhere.

Add proclist locking where appropriate.
 1.8  25-Mar-1999  mrg branches: 1.8.4;
remove now >1 year old pre-release message.
 1.7  09-Aug-1998  perry bzero->memset, bcopy->memcpy, bcmp->memcmp
 1.6  09-Mar-1998  mrg KNF.
 1.5  08-Feb-1998  mrg fill out vmtotals: t_free, t_vm, t_avm, t_rm and t_arm. leaves shared of same, and t_pw.
 1.4  07-Feb-1998  mrg KNF.
 1.3  07-Feb-1998  mrg restore rcsids
 1.2  06-Feb-1998  thorpej RCS ID police.
 1.1  05-Feb-1998  mrg branches: 1.1.1;
Initial revision
 1.1.1.1  05-Feb-1998  mrg initial import of the new virtual memory system, UVM, into -current.

UVM was written by chuck cranor <chuck@maria.wustl.edu>, with some
minor portions derived from the old Mach code. i provided some help
getting swap and paging working, and other bug fixes/ideas. chuck
silvers <chuq@chuq.com> also provided some other fixes.

this is the UVM kernel code portion.


this will be KNF'd shortly. :-)
 1.8.4.1  02-Aug-1999  thorpej Update from trunk.
 1.10.2.3  12-Mar-2001  bouyer Sync with HEAD.
 1.10.2.2  08-Dec-2000  bouyer Sync with HEAD.
 1.10.2.1  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
 1.16.2.7  12-Jul-2002  nathanw No longer need to pull in lwp.h; proc.h pulls it in for us.
 1.16.2.6  08-Jan-2002  nathanw Catch up to -current.
 1.16.2.5  14-Nov-2001  nathanw Catch up to -current.
 1.16.2.4  24-Aug-2001  nathanw Catch up with -current.
 1.16.2.3  21-Jun-2001  nathanw Catch up to -current.
 1.16.2.2  09-Apr-2001  nathanw Catch up with -current.
 1.16.2.1  05-Mar-2001  nathanw Initial commit of scheduler activations and lightweight process support.
 1.20.2.2  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.20.2.1  03-Aug-2001  lukem update to -current
 1.21.4.1  12-Nov-2001  thorpej Sync the thorpej-mips-cache branch with -current.
 1.26.2.6  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.26.2.5  19-Oct-2004  skrll Sync with HEAD
 1.26.2.4  21-Sep-2004  skrll Fix the sync with head I botched.
 1.26.2.3  18-Sep-2004  skrll Sync with HEAD.
 1.26.2.2  03-Aug-2004  skrll Sync with HEAD
 1.26.2.1  02-Jul-2003  darrenr Apply the aborted ktrace-lwp changes to a specific branch. This is just for
others to review, I'm concerned that patch fuziness may have resulted in some
errant code being generated but I'll look at that later by comparing the diff
from the base to the branch with the file I attempt to apply to it. This will,
at the very least, put the changes in a better context for others to review
them and attempt to tinker with removing passing of 'struct lwp' through
the kernel.
 1.31.2.1  28-May-2004  tron Pull up revision 1.32 (requested by atatat in ticket #389):
Sysctl descriptions under vm subtree
 1.35.2.4  03-Sep-2007  yamt sync with head.
 1.35.2.3  26-Feb-2007  yamt sync with head.
 1.35.2.2  30-Dec-2006  yamt sync with head.
 1.35.2.1  21-Jun-2006  yamt sync with head.
 1.39.14.1  19-Jun-2006  chap Sync with head.
 1.39.8.2  26-Jun-2006  yamt sync with head.
 1.39.8.1  05-Mar-2006  yamt separate page replacement policy from the rest of kernel.
 1.39.6.1  04-Feb-2006  simonb Adapt for timecounters: mostly use get*time() and use "time_second"
instead of "time.tv_sec".
 1.39.4.1  09-Sep-2006  rpaulo sync with head
 1.40.6.3  29-Dec-2006  ad Checkpoint work in progress.
 1.40.6.2  18-Nov-2006  ad Sync with head.
 1.40.6.1  11-Sep-2006  ad - Allocate and free turnstiles where needed.
- Split proclist_mutex and alllwp_mutex out of the proclist_lock,
and use in interrupt context.
- Fix an MP race in enterpgrp()/setsid().
- Acquire proclist_lock and p_crmutex in some obvious places.
 1.41.2.2  10-Dec-2006  yamt sync with head.
 1.41.2.1  22-Oct-2006  yamt sync with head
 1.43.4.1  29-Oct-2007  wrstuden Catch up with 4.0 RC3
 1.43.2.2  19-Nov-2011  bouyer Pull up following revision(s) (requested by christos in ticket #1436):
sys/uvm/uvm_meter.c: revision 1.57 via patch
if you are going to dereference a variable, check the variable itself, not
it cousin.
 1.43.2.1  12-Oct-2007  riz branches: 1.43.2.1.4;
Pull up following revision(s) (requested by ad in ticket #929):
sys/uvm/uvm_meter.c: revision 1.45 (via patch)
Fix load average calculation:
- Don't consider kernel threads when calculating the load average. Their
priorities are no longer adjusted by the scheduler, and their level of
activity is dependent upon running user processes.
- Change the (l->l_priority > PZERO) check in uvm_meter() to (l->l_flag &
L_SINTR). I think this check was originally intended to weed out
processes sleeping interruptably.
 1.43.2.1.4.1  19-Nov-2011  bouyer Pull up following revision(s) (requested by christos in ticket #1436):
sys/uvm/uvm_meter.c: revision 1.57 via patch
if you are going to dereference a variable, check the variable itself, not
it cousin.
 1.45.2.1  27-Feb-2007  yamt - sync with head.
- move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
 1.47.40.2  17-Jun-2008  yamt sync with head.
 1.47.40.1  18-May-2008  yamt sync with head.
 1.47.38.2  05-Jun-2008  mjf Sync with HEAD.

Also fix build.
 1.47.38.1  02-Jun-2008  mjf Sync with HEAD.
 1.48.4.1  23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.48.2.3  11-Aug-2010  yamt sync with head.
 1.48.2.2  11-Mar-2010  yamt sync with head
 1.48.2.1  04-May-2009  yamt sync with head.
 1.49.18.1  18-Nov-2011  sborrill Pull up the following revisions(s) (requested by christos in ticket #1691):
sys/uvm/uvm_meter.c: revision 1.57

Dereference correct variable and thus stop a sysctl crash.
 1.49.16.4  12-Apr-2012  matt Separate object-less anon pages out of the active list if there is no swap
device. Make uvm_reclaimable and uvm.*estimatable understand colors and
kmem allocations.
 1.49.16.3  09-Feb-2012  matt Major changes to uvm.
Support multiple collections (groups) of free pages and run the page
reclaimation algorithm on each group independently.
 1.49.16.2  03-Jun-2011  matt Restore $NetBSD$
 1.49.16.1  03-Jun-2011  matt Rework page free lists to be sorted by color first rather than free_list.
Kept per color PGFL_* counter in each page free list.
Minor cleanups.
 1.49.14.1  18-Nov-2011  sborrill Pull up the following revisions(s) (requested by christos in ticket #1691):
sys/uvm/uvm_meter.c: revision 1.57

Dereference correct variable and thus stop a sysctl crash.
 1.49.8.1  18-Nov-2011  sborrill Pull up the following revisions(s) (requested by christos in ticket #1691):
sys/uvm/uvm_meter.c: revision 1.57

Dereference correct variable and thus stop a sysctl crash.
 1.50.4.2  05-Mar-2011  rmind sync with head
 1.50.4.1  30-May-2010  rmind sync with head
 1.50.2.3  09-Nov-2010  uebayasi Sync with HEAD.
 1.50.2.2  30-Apr-2010  uebayasi Sync with HEAD.
 1.50.2.1  28-Apr-2010  uebayasi Adjustment for uvm/uvm_page.h. More to follow later.
 1.55.4.1  08-Feb-2011  bouyer Sync with HEAD
 1.55.2.1  06-Jun-2011  jruoho Sync with HEAD.
 1.56.4.11  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.56.4.10  30-Oct-2012  yamt sync with head
 1.56.4.9  17-Apr-2012  yamt sync with head
 1.56.4.8  05-Feb-2012  yamt turn vm.loanread sysctl to a threshold.
 1.56.4.7  11-Jan-2012  yamt create a sysctl knob to turn on/off loaned read.
 1.56.4.6  26-Dec-2011  yamt - use O->A loan to serve read(2). based on a patch from Chuck Silvers
- associated O->A loan fixes.
 1.56.4.5  20-Nov-2011  yamt - fix page loaning XXX make O->A loaning further
- add some statistics
 1.56.4.4  14-Nov-2011  yamt might dirty -> possibly dirty
suggested by wiz@
 1.56.4.3  13-Nov-2011  yamt a patch supposed to unbreak abi from christos@
PR/45598
 1.56.4.2  12-Nov-2011  yamt redo the page clean/dirty/unknown accounting separately for file and
anonymous pages
 1.56.4.1  11-Nov-2011  yamt - track the number of clean/dirty/unknown pages in the system.
- g/c PG_MARKER
 1.57.4.1  18-Feb-2012  mrg merge to -current.
 1.60.4.1  18-May-2014  rmind sync with head
 1.60.2.2  03-Dec-2017  jdolecek update from HEAD
 1.60.2.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.63.6.2  28-Aug-2017  skrll Sync with HEAD
 1.63.6.1  06-Apr-2015  skrll Sync with HEAD
 1.63.4.1  17-Dec-2014  martin Pull up following revision(s) (requested by msaitoh in ticket #329):
sys/uvm/uvm_meter.c: revision 1.64
sys/uvm/uvm_meter.c: revision 1.65
Fix a bug that "vmstat -s" prints uvmexp.ncolors incorrectly.
Sort in uvmexp_sysctl's order for readability. No functional change.
 1.65.10.1  31-Aug-2017  bouyer Pull up following revision(s) (requested by joerg in ticket #234):
sys/arch/amd64/include/vmparam.h: revision 1.43
sys/kern/exec_subr.c: revision 1.79
lib/libpthread/pthread_int.h: revision 1.94
sys/arch/mips/include/vmparam.h: revision 1.58
sys/arch/mips/include/vmparam.h: revision 1.59
lib/libpthread/TODO: revision 1.19
sys/arch/powerpc/include/vmparam.h: revision 1.20
sys/arch/riscv/include/vmparam.h: revision 1.2
sys/arch/riscv/include/vmparam.h: revision 1.3
sys/arch/i386/include/vmparam.h: revision 1.85
tests/lib/libpthread/t_join.c: revision 1.9
sys/uvm/uvm_meter.c: revision 1.66
sys/uvm/uvm_param.h: revision 1.36
sys/kern/exec_subr.c: revision 1.80
sys/uvm/uvm_param.h: revision 1.37
sys/kern/exec_subr.c: revision 1.81
sys/kern/exec_subr.c: revision 1.82
lib/libpthread/pthread_attr_getguardsize.3: revision 1.4
lib/libpthread/pthread.c: revision 1.148
lib/libpthread/pthread_attr.c: revision 1.17
sys/arch/amd64/include/vmparam.h: revision 1.42
Always include a 1MB guard area beyond the end of stack. While ASLR will
normally create a guard area as well, this provides a deterministic area
for all binaries.
Mitigates the rest of CVE-2017-1000374 and CVE-2017-1000375 from
Qualys.
Revert for the moment, creates problems on i386.
Recommit exec_subr.c revision 1.79:
Always include a 1MB guard area beyond the end of stack. While ASLR will
normally create a guard area as well, this provides a deterministic area
for all binaries.
Mitigates the rest of CVE-2017-1000374 and CVE-2017-1000375 from
Qualys.
Additionally, change VM_DEFAULT_ADDRESS_TOPDOWN to include
user_stack_guard_size in the size reservation.
Update VM_DEFAULT_ADDRESS32_TOPDOWN to include guard area.
Export the guard size of the main thread via vm.guard_size. Add a
complementary writable sysctl for the initial guard size of threads
created via pthread_create. Let the existing attribut accessors do the
right thing. Raise the default guard size for threads to 64KB.
 1.67.4.2  08-Apr-2020  martin Merge changes from current as of 20200406
 1.67.4.1  10-Jun-2019  christos Sync with HEAD
 1.67.2.2  18-Jan-2019  pgoyette Synch with HEAD
 1.67.2.1  06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.73.2.1  17-Jan-2020  ad Sync with head.

RSS XML Feed