diff options
author | Mark Johnston <markj@FreeBSD.org> | 2019-07-08 19:46:20 +0000 |
---|---|---|
committer | Mark Johnston <markj@FreeBSD.org> | 2019-07-08 19:46:20 +0000 |
commit | eeacb3b02ff5e7dd916c852c69cf2839c0d33627 (patch) | |
tree | e482e7f7b0ba782bac82424cbd9c7fb5b41fc9f6 /share/man/man9/vm_page_hold.9 | |
parent | e64f3dee49fac728bc39e2e39e5fbe9e07e4efcb (diff) |
Merge the vm_page hold and wire mechanisms.
The hold_count and wire_count fields of struct vm_page are separate
reference counters with similar semantics. The remaining essential
differences are that holds are not counted as a reference with respect
to LRU, and holds have an implicit free-on-last unhold semantic whereas
vm_page_unwire() callers must explicitly determine whether to free the
page once the last reference to the page is released.
This change removes the KPIs which directly manipulate hold_count.
Functions such as vm_fault_quick_hold_pages() now return wired pages
instead. Since r328977 the overhead of maintaining LRU for wired pages
is lower, and in many cases vm_fault_quick_hold_pages() callers would
swap holds for wirings on the returned pages anyway, so with this change
we remove a number of page lock acquisitions.
No functional change is intended. __FreeBSD_version is bumped.
Reviewed by: alc, kib
Discussed with: jeff
Discussed with: jhb, np (cxgbe)
Tested by: pho (previous version)
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D19247
Notes
Notes:
svn path=/head/; revision=349846
Diffstat (limited to 'share/man/man9/vm_page_hold.9')
-rw-r--r-- | share/man/man9/vm_page_hold.9 | 75 |
1 files changed, 0 insertions, 75 deletions
diff --git a/share/man/man9/vm_page_hold.9 b/share/man/man9/vm_page_hold.9 deleted file mode 100644 index 971d6c2d5da2..000000000000 --- a/share/man/man9/vm_page_hold.9 +++ /dev/null @@ -1,75 +0,0 @@ -.\" -.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice(s), this list of conditions and the following disclaimer as -.\" the first lines of this file unmodified other than the possible -.\" addition of one or more copyright notices. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice(s), this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY -.\" EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -.\" DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY -.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -.\" (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -.\" SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -.\" CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -.\" DAMAGE. -.\" -.\" $FreeBSD$ -.\" -.Dd July 13, 2001 -.Dt VM_PAGE_HOLD 9 -.Os -.Sh NAME -.Nm vm_page_hold , -.Nm vm_page_unhold -.Nd "update a page's hold count" -.Sh SYNOPSIS -.In sys/param.h -.In vm/vm.h -.In vm/vm_page.h -.Ft void -.Fn vm_page_hold "vm_page_t m" -.Ft void -.Fn vm_page_unhold "vm_page_t m" -.Sh DESCRIPTION -The -.Fn vm_page_hold -function increases the hold count on a page. -This prevents the page daemon from freeing the page. -.Pp -.Fn vm_page_hold -should only be used for very temporary wiring of a page, -as that page will not be considered for paging or -reallocation for as long as its hold count is greater -than zero. -Also note that while wired pages are removed from whatever -queue they are on, -.Fn vm_page_hold -does not affect the location of the page. -If it is on a queue prior to the call, it will still -be there afterward. -.Pp -If the page needs to be held for a long period of time, -.Xr vm_page_wire 9 -should be used. -.Pp -.Fn vm_page_unhold -function reduces the hold count on a page. -If the hold count is zero it is possible that the page will be freed by the -page daemon. -.Sh SEE ALSO -.Xr vm_page_unwire 9 , -.Xr vm_page_wire 9 -.Sh AUTHORS -This manual page was written by -.An Chad David Aq Mt davidc@acns.ab.ca . |