1/*-
2 * SPDX-License-Identifier: (BSD-4-Clause AND MIT-CMU)
3 *
4 * Copyright (c) 1991 Regents of the University of California.
5 * All rights reserved.
6 * Copyright (c) 1994 John S. Dyson
7 * All rights reserved.
8 * Copyright (c) 1994 David Greenman
9 * All rights reserved.
10 * Copyright (c) 2005 Yahoo! Technologies Norway AS
11 * All rights reserved.
12 *
13 * This code is derived from software contributed to Berkeley by
14 * The Mach Operating System project at Carnegie-Mellon University.
15 *
16 * Redistribution and use in source and binary forms, with or without
17 * modification, are permitted provided that the following conditions
18 * are met:
19 * 1. Redistributions of source code must retain the above copyright
20 *    notice, this list of conditions and the following disclaimer.
21 * 2. Redistributions in binary form must reproduce the above copyright
22 *    notice, this list of conditions and the following disclaimer in the
23 *    documentation and/or other materials provided with the distribution.
24 * 3. All advertising materials mentioning features or use of this software
25 *    must display the following acknowledgement:
26 *	This product includes software developed by the University of
27 *	California, Berkeley and its contributors.
28 * 4. Neither the name of the University nor the names of its contributors
29 *    may be used to endorse or promote products derived from this software
30 *    without specific prior written permission.
31 *
32 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
33 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
34 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
35 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
36 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
37 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
38 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
39 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
40 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
41 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
42 * SUCH DAMAGE.
43 *
44 *	from: @(#)vm_pageout.c	7.4 (Berkeley) 5/7/91
45 *
46 *
47 * Copyright (c) 1987, 1990 Carnegie-Mellon University.
48 * All rights reserved.
49 *
50 * Authors: Avadis Tevanian, Jr., Michael Wayne Young
51 *
52 * Permission to use, copy, modify and distribute this software and
53 * its documentation is hereby granted, provided that both the copyright
54 * notice and this permission notice appear in all copies of the
55 * software, derivative works or modified versions, and any portions
56 * thereof, and that both notices appear in supporting documentation.
57 *
58 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
59 * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
60 * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
61 *
62 * Carnegie Mellon requests users of this software to return to
63 *
64 *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
65 *  School of Computer Science
66 *  Carnegie Mellon University
67 *  Pittsburgh PA 15213-3890
68 *
69 * any improvements or extensions that they make and grant Carnegie the
70 * rights to redistribute these changes.
71 */
72
73/*
74 *	The proverbial page-out daemon.
75 */
76
77#include <sys/cdefs.h>
78__FBSDID("$FreeBSD$");
79
80#include "opt_vm.h"
81
82#include <sys/param.h>
83#include <sys/systm.h>
84#include <sys/kernel.h>
85#include <sys/blockcount.h>
86#include <sys/eventhandler.h>
87#include <sys/lock.h>
88#include <sys/mutex.h>
89#include <sys/proc.h>
90#include <sys/kthread.h>
91#include <sys/ktr.h>
92#include <sys/mount.h>
93#include <sys/racct.h>
94#include <sys/resourcevar.h>
95#include <sys/sched.h>
96#include <sys/sdt.h>
97#include <sys/signalvar.h>
98#include <sys/smp.h>
99#include <sys/time.h>
100#include <sys/vnode.h>
101#include <sys/vmmeter.h>
102#include <sys/rwlock.h>
103#include <sys/sx.h>
104#include <sys/sysctl.h>
105
106#include <vm/vm.h>
107#include <vm/vm_param.h>
108#include <vm/vm_object.h>
109#include <vm/vm_page.h>
110#include <vm/vm_map.h>
111#include <vm/vm_pageout.h>
112#include <vm/vm_pager.h>
113#include <vm/vm_phys.h>
114#include <vm/vm_pagequeue.h>
115#include <vm/swap_pager.h>
116#include <vm/vm_extern.h>
117#include <vm/uma.h>
118
119/*
120 * System initialization
121 */
122
123/* the kernel process "vm_pageout"*/
124static void vm_pageout(void);
125static void vm_pageout_init(void);
126static int vm_pageout_clean(vm_page_t m, int *numpagedout);
127static int vm_pageout_cluster(vm_page_t m);
128static void vm_pageout_mightbe_oom(struct vm_domain *vmd, int page_shortage,
129    int starting_page_shortage);
130
131SYSINIT(pagedaemon_init, SI_SUB_KTHREAD_PAGE, SI_ORDER_FIRST, vm_pageout_init,
132    NULL);
133
134struct proc *pageproc;
135
136static struct kproc_desc page_kp = {
137	"pagedaemon",
138	vm_pageout,
139	&pageproc
140};
141SYSINIT(pagedaemon, SI_SUB_KTHREAD_PAGE, SI_ORDER_SECOND, kproc_start,
142    &page_kp);
143
144SDT_PROVIDER_DEFINE(vm);
145SDT_PROBE_DEFINE(vm, , , vm__lowmem_scan);
146
147/* Pagedaemon activity rates, in subdivisions of one second. */
148#define	VM_LAUNDER_RATE		10
149#define	VM_INACT_SCAN_RATE	10
150
151static int vm_pageout_oom_seq = 12;
152
153static int vm_pageout_update_period;
154static int disable_swap_pageouts;
155static int lowmem_period = 10;
156static int swapdev_enabled;
157
158static int vm_panic_on_oom = 0;
159
160SYSCTL_INT(_vm, OID_AUTO, panic_on_oom,
161	CTLFLAG_RWTUN, &vm_panic_on_oom, 0,
162	"Panic on the given number of out-of-memory errors instead of killing the largest process");
163
164SYSCTL_INT(_vm, OID_AUTO, pageout_update_period,
165	CTLFLAG_RWTUN, &vm_pageout_update_period, 0,
166	"Maximum active LRU update period");
167
168static int pageout_cpus_per_thread = 16;
169SYSCTL_INT(_vm, OID_AUTO, pageout_cpus_per_thread, CTLFLAG_RDTUN,
170    &pageout_cpus_per_thread, 0,
171    "Number of CPUs per pagedaemon worker thread");
172
173SYSCTL_INT(_vm, OID_AUTO, lowmem_period, CTLFLAG_RWTUN, &lowmem_period, 0,
174	"Low memory callback period");
175
176SYSCTL_INT(_vm, OID_AUTO, disable_swapspace_pageouts,
177	CTLFLAG_RWTUN, &disable_swap_pageouts, 0, "Disallow swapout of dirty pages");
178
179static int pageout_lock_miss;
180SYSCTL_INT(_vm, OID_AUTO, pageout_lock_miss,
181	CTLFLAG_RD, &pageout_lock_miss, 0, "vget() lock misses during pageout");
182
183SYSCTL_INT(_vm, OID_AUTO, pageout_oom_seq,
184	CTLFLAG_RWTUN, &vm_pageout_oom_seq, 0,
185	"back-to-back calls to oom detector to start OOM");
186
187static int act_scan_laundry_weight = 3;
188SYSCTL_INT(_vm, OID_AUTO, act_scan_laundry_weight, CTLFLAG_RWTUN,
189    &act_scan_laundry_weight, 0,
190    "weight given to clean vs. dirty pages in active queue scans");
191
192static u_int vm_background_launder_rate = 4096;
193SYSCTL_UINT(_vm, OID_AUTO, background_launder_rate, CTLFLAG_RWTUN,
194    &vm_background_launder_rate, 0,
195    "background laundering rate, in kilobytes per second");
196
197static u_int vm_background_launder_max = 20 * 1024;
198SYSCTL_UINT(_vm, OID_AUTO, background_launder_max, CTLFLAG_RWTUN,
199    &vm_background_launder_max, 0, "background laundering cap, in kilobytes");
200
201int vm_pageout_page_count = 32;
202
203u_long vm_page_max_user_wired;
204SYSCTL_ULONG(_vm, OID_AUTO, max_user_wired, CTLFLAG_RW,
205    &vm_page_max_user_wired, 0,
206    "system-wide limit to user-wired page count");
207
208static u_int isqrt(u_int num);
209static int vm_pageout_launder(struct vm_domain *vmd, int launder,
210    bool in_shortfall);
211static void vm_pageout_laundry_worker(void *arg);
212
213struct scan_state {
214	struct vm_batchqueue bq;
215	struct vm_pagequeue *pq;
216	vm_page_t	marker;
217	int		maxscan;
218	int		scanned;
219};
220
221static void
222vm_pageout_init_scan(struct scan_state *ss, struct vm_pagequeue *pq,
223    vm_page_t marker, vm_page_t after, int maxscan)
224{
225
226	vm_pagequeue_assert_locked(pq);
227	KASSERT((marker->a.flags & PGA_ENQUEUED) == 0,
228	    ("marker %p already enqueued", marker));
229
230	if (after == NULL)
231		TAILQ_INSERT_HEAD(&pq->pq_pl, marker, plinks.q);
232	else
233		TAILQ_INSERT_AFTER(&pq->pq_pl, after, marker, plinks.q);
234	vm_page_aflag_set(marker, PGA_ENQUEUED);
235
236	vm_batchqueue_init(&ss->bq);
237	ss->pq = pq;
238	ss->marker = marker;
239	ss->maxscan = maxscan;
240	ss->scanned = 0;
241	vm_pagequeue_unlock(pq);
242}
243
244static void
245vm_pageout_end_scan(struct scan_state *ss)
246{
247	struct vm_pagequeue *pq;
248
249	pq = ss->pq;
250	vm_pagequeue_assert_locked(pq);
251	KASSERT((ss->marker->a.flags & PGA_ENQUEUED) != 0,
252	    ("marker %p not enqueued", ss->marker));
253
254	TAILQ_REMOVE(&pq->pq_pl, ss->marker, plinks.q);
255	vm_page_aflag_clear(ss->marker, PGA_ENQUEUED);
256	pq->pq_pdpages += ss->scanned;
257}
258
259/*
260 * Add a small number of queued pages to a batch queue for later processing
261 * without the corresponding queue lock held.  The caller must have enqueued a
262 * marker page at the desired start point for the scan.  Pages will be
263 * physically dequeued if the caller so requests.  Otherwise, the returned
264 * batch may contain marker pages, and it is up to the caller to handle them.
265 *
266 * When processing the batch queue, vm_pageout_defer() must be used to
267 * determine whether the page has been logically dequeued since the batch was
268 * collected.
269 */
270static __always_inline void
271vm_pageout_collect_batch(struct scan_state *ss, const bool dequeue)
272{
273	struct vm_pagequeue *pq;
274	vm_page_t m, marker, n;
275
276	marker = ss->marker;
277	pq = ss->pq;
278
279	KASSERT((marker->a.flags & PGA_ENQUEUED) != 0,
280	    ("marker %p not enqueued", ss->marker));
281
282	vm_pagequeue_lock(pq);
283	for (m = TAILQ_NEXT(marker, plinks.q); m != NULL &&
284	    ss->scanned < ss->maxscan && ss->bq.bq_cnt < VM_BATCHQUEUE_SIZE;
285	    m = n, ss->scanned++) {
286		n = TAILQ_NEXT(m, plinks.q);
287		if ((m->flags & PG_MARKER) == 0) {
288			KASSERT((m->a.flags & PGA_ENQUEUED) != 0,
289			    ("page %p not enqueued", m));
290			KASSERT((m->flags & PG_FICTITIOUS) == 0,
291			    ("Fictitious page %p cannot be in page queue", m));
292			KASSERT((m->oflags & VPO_UNMANAGED) == 0,
293			    ("Unmanaged page %p cannot be in page queue", m));
294		} else if (dequeue)
295			continue;
296
297		(void)vm_batchqueue_insert(&ss->bq, m);
298		if (dequeue) {
299			TAILQ_REMOVE(&pq->pq_pl, m, plinks.q);
300			vm_page_aflag_clear(m, PGA_ENQUEUED);
301		}
302	}
303	TAILQ_REMOVE(&pq->pq_pl, marker, plinks.q);
304	if (__predict_true(m != NULL))
305		TAILQ_INSERT_BEFORE(m, marker, plinks.q);
306	else
307		TAILQ_INSERT_TAIL(&pq->pq_pl, marker, plinks.q);
308	if (dequeue)
309		vm_pagequeue_cnt_add(pq, -ss->bq.bq_cnt);
310	vm_pagequeue_unlock(pq);
311}
312
313/*
314 * Return the next page to be scanned, or NULL if the scan is complete.
315 */
316static __always_inline vm_page_t
317vm_pageout_next(struct scan_state *ss, const bool dequeue)
318{
319
320	if (ss->bq.bq_cnt == 0)
321		vm_pageout_collect_batch(ss, dequeue);
322	return (vm_batchqueue_pop(&ss->bq));
323}
324
325/*
326 * Determine whether processing of a page should be deferred and ensure that any
327 * outstanding queue operations are processed.
328 */
329static __always_inline bool
330vm_pageout_defer(vm_page_t m, const uint8_t queue, const bool enqueued)
331{
332	vm_page_astate_t as;
333
334	as = vm_page_astate_load(m);
335	if (__predict_false(as.queue != queue ||
336	    ((as.flags & PGA_ENQUEUED) != 0) != enqueued))
337		return (true);
338	if ((as.flags & PGA_QUEUE_OP_MASK) != 0) {
339		vm_page_pqbatch_submit(m, queue);
340		return (true);
341	}
342	return (false);
343}
344
345/*
346 * Scan for pages at adjacent offsets within the given page's object that are
347 * eligible for laundering, form a cluster of these pages and the given page,
348 * and launder that cluster.
349 */
350static int
351vm_pageout_cluster(vm_page_t m)
352{
353	vm_object_t object;
354	vm_page_t mc[2 * vm_pageout_page_count], p, pb, ps;
355	vm_pindex_t pindex;
356	int ib, is, page_base, pageout_count;
357
358	object = m->object;
359	VM_OBJECT_ASSERT_WLOCKED(object);
360	pindex = m->pindex;
361
362	vm_page_assert_xbusied(m);
363
364	mc[vm_pageout_page_count] = pb = ps = m;
365	pageout_count = 1;
366	page_base = vm_pageout_page_count;
367	ib = 1;
368	is = 1;
369
370	/*
371	 * We can cluster only if the page is not clean, busy, or held, and
372	 * the page is in the laundry queue.
373	 *
374	 * During heavy mmap/modification loads the pageout
375	 * daemon can really fragment the underlying file
376	 * due to flushing pages out of order and not trying to
377	 * align the clusters (which leaves sporadic out-of-order
378	 * holes).  To solve this problem we do the reverse scan
379	 * first and attempt to align our cluster, then do a
380	 * forward scan if room remains.
381	 */
382more:
383	while (ib != 0 && pageout_count < vm_pageout_page_count) {
384		if (ib > pindex) {
385			ib = 0;
386			break;
387		}
388		if ((p = vm_page_prev(pb)) == NULL ||
389		    vm_page_tryxbusy(p) == 0) {
390			ib = 0;
391			break;
392		}
393		if (vm_page_wired(p)) {
394			ib = 0;
395			vm_page_xunbusy(p);
396			break;
397		}
398		vm_page_test_dirty(p);
399		if (p->dirty == 0) {
400			ib = 0;
401			vm_page_xunbusy(p);
402			break;
403		}
404		if (!vm_page_in_laundry(p) || !vm_page_try_remove_write(p)) {
405			vm_page_xunbusy(p);
406			ib = 0;
407			break;
408		}
409		mc[--page_base] = pb = p;
410		++pageout_count;
411		++ib;
412
413		/*
414		 * We are at an alignment boundary.  Stop here, and switch
415		 * directions.  Do not clear ib.
416		 */
417		if ((pindex - (ib - 1)) % vm_pageout_page_count == 0)
418			break;
419	}
420	while (pageout_count < vm_pageout_page_count &&
421	    pindex + is < object->size) {
422		if ((p = vm_page_next(ps)) == NULL ||
423		    vm_page_tryxbusy(p) == 0)
424			break;
425		if (vm_page_wired(p)) {
426			vm_page_xunbusy(p);
427			break;
428		}
429		vm_page_test_dirty(p);
430		if (p->dirty == 0) {
431			vm_page_xunbusy(p);
432			break;
433		}
434		if (!vm_page_in_laundry(p) || !vm_page_try_remove_write(p)) {
435			vm_page_xunbusy(p);
436			break;
437		}
438		mc[page_base + pageout_count] = ps = p;
439		++pageout_count;
440		++is;
441	}
442
443	/*
444	 * If we exhausted our forward scan, continue with the reverse scan
445	 * when possible, even past an alignment boundary.  This catches
446	 * boundary conditions.
447	 */
448	if (ib != 0 && pageout_count < vm_pageout_page_count)
449		goto more;
450
451	return (vm_pageout_flush(&mc[page_base], pageout_count,
452	    VM_PAGER_PUT_NOREUSE, 0, NULL, NULL));
453}
454
455/*
456 * vm_pageout_flush() - launder the given pages
457 *
458 *	The given pages are laundered.  Note that we setup for the start of
459 *	I/O ( i.e. busy the page ), mark it read-only, and bump the object
460 *	reference count all in here rather then in the parent.  If we want
461 *	the parent to do more sophisticated things we may have to change
462 *	the ordering.
463 *
464 *	Returned runlen is the count of pages between mreq and first
465 *	page after mreq with status VM_PAGER_AGAIN.
466 *	*eio is set to TRUE if pager returned VM_PAGER_ERROR or VM_PAGER_FAIL
467 *	for any page in runlen set.
468 */
469int
470vm_pageout_flush(vm_page_t *mc, int count, int flags, int mreq, int *prunlen,
471    boolean_t *eio)
472{
473	vm_object_t object = mc[0]->object;
474	int pageout_status[count];
475	int numpagedout = 0;
476	int i, runlen;
477
478	VM_OBJECT_ASSERT_WLOCKED(object);
479
480	/*
481	 * Initiate I/O.  Mark the pages shared busy and verify that they're
482	 * valid and read-only.
483	 *
484	 * We do not have to fixup the clean/dirty bits here... we can
485	 * allow the pager to do it after the I/O completes.
486	 *
487	 * NOTE! mc[i]->dirty may be partial or fragmented due to an
488	 * edge case with file fragments.
489	 */
490	for (i = 0; i < count; i++) {
491		KASSERT(vm_page_all_valid(mc[i]),
492		    ("vm_pageout_flush: partially invalid page %p index %d/%d",
493			mc[i], i, count));
494		KASSERT((mc[i]->a.flags & PGA_WRITEABLE) == 0,
495		    ("vm_pageout_flush: writeable page %p", mc[i]));
496		vm_page_busy_downgrade(mc[i]);
497	}
498	vm_object_pip_add(object, count);
499
500	vm_pager_put_pages(object, mc, count, flags, pageout_status);
501
502	runlen = count - mreq;
503	if (eio != NULL)
504		*eio = FALSE;
505	for (i = 0; i < count; i++) {
506		vm_page_t mt = mc[i];
507
508		KASSERT(pageout_status[i] == VM_PAGER_PEND ||
509		    !pmap_page_is_write_mapped(mt),
510		    ("vm_pageout_flush: page %p is not write protected", mt));
511		switch (pageout_status[i]) {
512		case VM_PAGER_OK:
513			/*
514			 * The page may have moved since laundering started, in
515			 * which case it should be left alone.
516			 */
517			if (vm_page_in_laundry(mt))
518				vm_page_deactivate_noreuse(mt);
519			/* FALLTHROUGH */
520		case VM_PAGER_PEND:
521			numpagedout++;
522			break;
523		case VM_PAGER_BAD:
524			/*
525			 * The page is outside the object's range.  We pretend
526			 * that the page out worked and clean the page, so the
527			 * changes will be lost if the page is reclaimed by
528			 * the page daemon.
529			 */
530			vm_page_undirty(mt);
531			if (vm_page_in_laundry(mt))
532				vm_page_deactivate_noreuse(mt);
533			break;
534		case VM_PAGER_ERROR:
535		case VM_PAGER_FAIL:
536			/*
537			 * If the page couldn't be paged out to swap because the
538			 * pager wasn't able to find space, place the page in
539			 * the PQ_UNSWAPPABLE holding queue.  This is an
540			 * optimization that prevents the page daemon from
541			 * wasting CPU cycles on pages that cannot be reclaimed
542			 * becase no swap device is configured.
543			 *
544			 * Otherwise, reactivate the page so that it doesn't
545			 * clog the laundry and inactive queues.  (We will try
546			 * paging it out again later.)
547			 */
548			if ((object->flags & OBJ_SWAP) != 0 &&
549			    pageout_status[i] == VM_PAGER_FAIL) {
550				vm_page_unswappable(mt);
551				numpagedout++;
552			} else
553				vm_page_activate(mt);
554			if (eio != NULL && i >= mreq && i - mreq < runlen)
555				*eio = TRUE;
556			break;
557		case VM_PAGER_AGAIN:
558			if (i >= mreq && i - mreq < runlen)
559				runlen = i - mreq;
560			break;
561		}
562
563		/*
564		 * If the operation is still going, leave the page busy to
565		 * block all other accesses. Also, leave the paging in
566		 * progress indicator set so that we don't attempt an object
567		 * collapse.
568		 */
569		if (pageout_status[i] != VM_PAGER_PEND) {
570			vm_object_pip_wakeup(object);
571			vm_page_sunbusy(mt);
572		}
573	}
574	if (prunlen != NULL)
575		*prunlen = runlen;
576	return (numpagedout);
577}
578
579static void
580vm_pageout_swapon(void *arg __unused, struct swdevt *sp __unused)
581{
582
583	atomic_store_rel_int(&swapdev_enabled, 1);
584}
585
586static void
587vm_pageout_swapoff(void *arg __unused, struct swdevt *sp __unused)
588{
589
590	if (swap_pager_nswapdev() == 1)
591		atomic_store_rel_int(&swapdev_enabled, 0);
592}
593
594/*
595 * Attempt to acquire all of the necessary locks to launder a page and
596 * then call through the clustering layer to PUTPAGES.  Wait a short
597 * time for a vnode lock.
598 *
599 * Requires the page and object lock on entry, releases both before return.
600 * Returns 0 on success and an errno otherwise.
601 */
602static int
603vm_pageout_clean(vm_page_t m, int *numpagedout)
604{
605	struct vnode *vp;
606	struct mount *mp;
607	vm_object_t object;
608	vm_pindex_t pindex;
609	int error, lockmode;
610
611	object = m->object;
612	VM_OBJECT_ASSERT_WLOCKED(object);
613	error = 0;
614	vp = NULL;
615	mp = NULL;
616
617	/*
618	 * The object is already known NOT to be dead.   It
619	 * is possible for the vget() to block the whole
620	 * pageout daemon, but the new low-memory handling
621	 * code should prevent it.
622	 *
623	 * We can't wait forever for the vnode lock, we might
624	 * deadlock due to a vn_read() getting stuck in
625	 * vm_wait while holding this vnode.  We skip the
626	 * vnode if we can't get it in a reasonable amount
627	 * of time.
628	 */
629	if (object->type == OBJT_VNODE) {
630		vm_page_xunbusy(m);
631		vp = object->handle;
632		if (vp->v_type == VREG &&
633		    vn_start_write(vp, &mp, V_NOWAIT) != 0) {
634			mp = NULL;
635			error = EDEADLK;
636			goto unlock_all;
637		}
638		KASSERT(mp != NULL,
639		    ("vp %p with NULL v_mount", vp));
640		vm_object_reference_locked(object);
641		pindex = m->pindex;
642		VM_OBJECT_WUNLOCK(object);
643		lockmode = MNT_SHARED_WRITES(vp->v_mount) ?
644		    LK_SHARED : LK_EXCLUSIVE;
645		if (vget(vp, lockmode | LK_TIMELOCK)) {
646			vp = NULL;
647			error = EDEADLK;
648			goto unlock_mp;
649		}
650		VM_OBJECT_WLOCK(object);
651
652		/*
653		 * Ensure that the object and vnode were not disassociated
654		 * while locks were dropped.
655		 */
656		if (vp->v_object != object) {
657			error = ENOENT;
658			goto unlock_all;
659		}
660
661		/*
662		 * While the object was unlocked, the page may have been:
663		 * (1) moved to a different queue,
664		 * (2) reallocated to a different object,
665		 * (3) reallocated to a different offset, or
666		 * (4) cleaned.
667		 */
668		if (!vm_page_in_laundry(m) || m->object != object ||
669		    m->pindex != pindex || m->dirty == 0) {
670			error = ENXIO;
671			goto unlock_all;
672		}
673
674		/*
675		 * The page may have been busied while the object lock was
676		 * released.
677		 */
678		if (vm_page_tryxbusy(m) == 0) {
679			error = EBUSY;
680			goto unlock_all;
681		}
682	}
683
684	/*
685	 * Remove all writeable mappings, failing if the page is wired.
686	 */
687	if (!vm_page_try_remove_write(m)) {
688		vm_page_xunbusy(m);
689		error = EBUSY;
690		goto unlock_all;
691	}
692
693	/*
694	 * If a page is dirty, then it is either being washed
695	 * (but not yet cleaned) or it is still in the
696	 * laundry.  If it is still in the laundry, then we
697	 * start the cleaning operation.
698	 */
699	if ((*numpagedout = vm_pageout_cluster(m)) == 0)
700		error = EIO;
701
702unlock_all:
703	VM_OBJECT_WUNLOCK(object);
704
705unlock_mp:
706	if (mp != NULL) {
707		if (vp != NULL)
708			vput(vp);
709		vm_object_deallocate(object);
710		vn_finished_write(mp);
711	}
712
713	return (error);
714}
715
716/*
717 * Attempt to launder the specified number of pages.
718 *
719 * Returns the number of pages successfully laundered.
720 */
721static int
722vm_pageout_launder(struct vm_domain *vmd, int launder, bool in_shortfall)
723{
724	struct scan_state ss;
725	struct vm_pagequeue *pq;
726	vm_object_t object;
727	vm_page_t m, marker;
728	vm_page_astate_t new, old;
729	int act_delta, error, numpagedout, queue, refs, starting_target;
730	int vnodes_skipped;
731	bool pageout_ok;
732
733	object = NULL;
734	starting_target = launder;
735	vnodes_skipped = 0;
736
737	/*
738	 * Scan the laundry queues for pages eligible to be laundered.  We stop
739	 * once the target number of dirty pages have been laundered, or once
740	 * we've reached the end of the queue.  A single iteration of this loop
741	 * may cause more than one page to be laundered because of clustering.
742	 *
743	 * As an optimization, we avoid laundering from PQ_UNSWAPPABLE when no
744	 * swap devices are configured.
745	 */
746	if (atomic_load_acq_int(&swapdev_enabled))
747		queue = PQ_UNSWAPPABLE;
748	else
749		queue = PQ_LAUNDRY;
750
751scan:
752	marker = &vmd->vmd_markers[queue];
753	pq = &vmd->vmd_pagequeues[queue];
754	vm_pagequeue_lock(pq);
755	vm_pageout_init_scan(&ss, pq, marker, NULL, pq->pq_cnt);
756	while (launder > 0 && (m = vm_pageout_next(&ss, false)) != NULL) {
757		if (__predict_false((m->flags & PG_MARKER) != 0))
758			continue;
759
760		/*
761		 * Don't touch a page that was removed from the queue after the
762		 * page queue lock was released.  Otherwise, ensure that any
763		 * pending queue operations, such as dequeues for wired pages,
764		 * are handled.
765		 */
766		if (vm_pageout_defer(m, queue, true))
767			continue;
768
769		/*
770		 * Lock the page's object.
771		 */
772		if (object == NULL || object != m->object) {
773			if (object != NULL)
774				VM_OBJECT_WUNLOCK(object);
775			object = atomic_load_ptr(&m->object);
776			if (__predict_false(object == NULL))
777				/* The page is being freed by another thread. */
778				continue;
779
780			/* Depends on type-stability. */
781			VM_OBJECT_WLOCK(object);
782			if (__predict_false(m->object != object)) {
783				VM_OBJECT_WUNLOCK(object);
784				object = NULL;
785				continue;
786			}
787		}
788
789		if (vm_page_tryxbusy(m) == 0)
790			continue;
791
792		/*
793		 * Check for wirings now that we hold the object lock and have
794		 * exclusively busied the page.  If the page is mapped, it may
795		 * still be wired by pmap lookups.  The call to
796		 * vm_page_try_remove_all() below atomically checks for such
797		 * wirings and removes mappings.  If the page is unmapped, the
798		 * wire count is guaranteed not to increase after this check.
799		 */
800		if (__predict_false(vm_page_wired(m)))
801			goto skip_page;
802
803		/*
804		 * Invalid pages can be easily freed.  They cannot be
805		 * mapped; vm_page_free() asserts this.
806		 */
807		if (vm_page_none_valid(m))
808			goto free_page;
809
810		refs = object->ref_count != 0 ? pmap_ts_referenced(m) : 0;
811
812		for (old = vm_page_astate_load(m);;) {
813			/*
814			 * Check to see if the page has been removed from the
815			 * queue since the first such check.  Leave it alone if
816			 * so, discarding any references collected by
817			 * pmap_ts_referenced().
818			 */
819			if (__predict_false(_vm_page_queue(old) == PQ_NONE))
820				goto skip_page;
821
822			new = old;
823			act_delta = refs;
824			if ((old.flags & PGA_REFERENCED) != 0) {
825				new.flags &= ~PGA_REFERENCED;
826				act_delta++;
827			}
828			if (act_delta == 0) {
829				;
830			} else if (object->ref_count != 0) {
831				/*
832				 * Increase the activation count if the page was
833				 * referenced while in the laundry queue.  This
834				 * makes it less likely that the page will be
835				 * returned prematurely to the laundry queue.
836				 */
837				new.act_count += ACT_ADVANCE +
838				    act_delta;
839				if (new.act_count > ACT_MAX)
840					new.act_count = ACT_MAX;
841
842				new.flags &= ~PGA_QUEUE_OP_MASK;
843				new.flags |= PGA_REQUEUE;
844				new.queue = PQ_ACTIVE;
845				if (!vm_page_pqstate_commit(m, &old, new))
846					continue;
847
848				/*
849				 * If this was a background laundering, count
850				 * activated pages towards our target.  The
851				 * purpose of background laundering is to ensure
852				 * that pages are eventually cycled through the
853				 * laundry queue, and an activation is a valid
854				 * way out.
855				 */
856				if (!in_shortfall)
857					launder--;
858				VM_CNT_INC(v_reactivated);
859				goto skip_page;
860			} else if ((object->flags & OBJ_DEAD) == 0) {
861				new.flags |= PGA_REQUEUE;
862				if (!vm_page_pqstate_commit(m, &old, new))
863					continue;
864				goto skip_page;
865			}
866			break;
867		}
868
869		/*
870		 * If the page appears to be clean at the machine-independent
871		 * layer, then remove all of its mappings from the pmap in
872		 * anticipation of freeing it.  If, however, any of the page's
873		 * mappings allow write access, then the page may still be
874		 * modified until the last of those mappings are removed.
875		 */
876		if (object->ref_count != 0) {
877			vm_page_test_dirty(m);
878			if (m->dirty == 0 && !vm_page_try_remove_all(m))
879				goto skip_page;
880		}
881
882		/*
883		 * Clean pages are freed, and dirty pages are paged out unless
884		 * they belong to a dead object.  Requeueing dirty pages from
885		 * dead objects is pointless, as they are being paged out and
886		 * freed by the thread that destroyed the object.
887		 */
888		if (m->dirty == 0) {
889free_page:
890			/*
891			 * Now we are guaranteed that no other threads are
892			 * manipulating the page, check for a last-second
893			 * reference.
894			 */
895			if (vm_pageout_defer(m, queue, true))
896				goto skip_page;
897			vm_page_free(m);
898			VM_CNT_INC(v_dfree);
899		} else if ((object->flags & OBJ_DEAD) == 0) {
900			if ((object->flags & OBJ_SWAP) == 0 &&
901			    object->type != OBJT_DEFAULT)
902				pageout_ok = true;
903			else if (disable_swap_pageouts)
904				pageout_ok = false;
905			else
906				pageout_ok = true;
907			if (!pageout_ok) {
908				vm_page_launder(m);
909				goto skip_page;
910			}
911
912			/*
913			 * Form a cluster with adjacent, dirty pages from the
914			 * same object, and page out that entire cluster.
915			 *
916			 * The adjacent, dirty pages must also be in the
917			 * laundry.  However, their mappings are not checked
918			 * for new references.  Consequently, a recently
919			 * referenced page may be paged out.  However, that
920			 * page will not be prematurely reclaimed.  After page
921			 * out, the page will be placed in the inactive queue,
922			 * where any new references will be detected and the
923			 * page reactivated.
924			 */
925			error = vm_pageout_clean(m, &numpagedout);
926			if (error == 0) {
927				launder -= numpagedout;
928				ss.scanned += numpagedout;
929			} else if (error == EDEADLK) {
930				pageout_lock_miss++;
931				vnodes_skipped++;
932			}
933			object = NULL;
934		} else {
935skip_page:
936			vm_page_xunbusy(m);
937		}
938	}
939	if (object != NULL) {
940		VM_OBJECT_WUNLOCK(object);
941		object = NULL;
942	}
943	vm_pagequeue_lock(pq);
944	vm_pageout_end_scan(&ss);
945	vm_pagequeue_unlock(pq);
946
947	if (launder > 0 && queue == PQ_UNSWAPPABLE) {
948		queue = PQ_LAUNDRY;
949		goto scan;
950	}
951
952	/*
953	 * Wakeup the sync daemon if we skipped a vnode in a writeable object
954	 * and we didn't launder enough pages.
955	 */
956	if (vnodes_skipped > 0 && launder > 0)
957		(void)speedup_syncer();
958
959	return (starting_target - launder);
960}
961
962/*
963 * Compute the integer square root.
964 */
965static u_int
966isqrt(u_int num)
967{
968	u_int bit, root, tmp;
969
970	bit = num != 0 ? (1u << ((fls(num) - 1) & ~1)) : 0;
971	root = 0;
972	while (bit != 0) {
973		tmp = root + bit;
974		root >>= 1;
975		if (num >= tmp) {
976			num -= tmp;
977			root += bit;
978		}
979		bit >>= 2;
980	}
981	return (root);
982}
983
984/*
985 * Perform the work of the laundry thread: periodically wake up and determine
986 * whether any pages need to be laundered.  If so, determine the number of pages
987 * that need to be laundered, and launder them.
988 */
989static void
990vm_pageout_laundry_worker(void *arg)
991{
992	struct vm_domain *vmd;
993	struct vm_pagequeue *pq;
994	uint64_t nclean, ndirty, nfreed;
995	int domain, last_target, launder, shortfall, shortfall_cycle, target;
996	bool in_shortfall;
997
998	domain = (uintptr_t)arg;
999	vmd = VM_DOMAIN(domain);
1000	pq = &vmd->vmd_pagequeues[PQ_LAUNDRY];
1001	KASSERT(vmd->vmd_segs != 0, ("domain without segments"));
1002
1003	shortfall = 0;
1004	in_shortfall = false;
1005	shortfall_cycle = 0;
1006	last_target = target = 0;
1007	nfreed = 0;
1008
1009	/*
1010	 * Calls to these handlers are serialized by the swap syscall lock.
1011	 */
1012	(void)EVENTHANDLER_REGISTER(swapon, vm_pageout_swapon, vmd,
1013	    EVENTHANDLER_PRI_ANY);
1014	(void)EVENTHANDLER_REGISTER(swapoff, vm_pageout_swapoff, vmd,
1015	    EVENTHANDLER_PRI_ANY);
1016
1017	/*
1018	 * The pageout laundry worker is never done, so loop forever.
1019	 */
1020	for (;;) {
1021		KASSERT(target >= 0, ("negative target %d", target));
1022		KASSERT(shortfall_cycle >= 0,
1023		    ("negative cycle %d", shortfall_cycle));
1024		launder = 0;
1025
1026		/*
1027		 * First determine whether we need to launder pages to meet a
1028		 * shortage of free pages.
1029		 */
1030		if (shortfall > 0) {
1031			in_shortfall = true;
1032			shortfall_cycle = VM_LAUNDER_RATE / VM_INACT_SCAN_RATE;
1033			target = shortfall;
1034		} else if (!in_shortfall)
1035			goto trybackground;
1036		else if (shortfall_cycle == 0 || vm_laundry_target(vmd) <= 0) {
1037			/*
1038			 * We recently entered shortfall and began laundering
1039			 * pages.  If we have completed that laundering run
1040			 * (and we are no longer in shortfall) or we have met
1041			 * our laundry target through other activity, then we
1042			 * can stop laundering pages.
1043			 */
1044			in_shortfall = false;
1045			target = 0;
1046			goto trybackground;
1047		}
1048		launder = target / shortfall_cycle--;
1049		goto dolaundry;
1050
1051		/*
1052		 * There's no immediate need to launder any pages; see if we
1053		 * meet the conditions to perform background laundering:
1054		 *
1055		 * 1. The ratio of dirty to clean inactive pages exceeds the
1056		 *    background laundering threshold, or
1057		 * 2. we haven't yet reached the target of the current
1058		 *    background laundering run.
1059		 *
1060		 * The background laundering threshold is not a constant.
1061		 * Instead, it is a slowly growing function of the number of
1062		 * clean pages freed by the page daemon since the last
1063		 * background laundering.  Thus, as the ratio of dirty to
1064		 * clean inactive pages grows, the amount of memory pressure
1065		 * required to trigger laundering decreases.  We ensure
1066		 * that the threshold is non-zero after an inactive queue
1067		 * scan, even if that scan failed to free a single clean page.
1068		 */
1069trybackground:
1070		nclean = vmd->vmd_free_count +
1071		    vmd->vmd_pagequeues[PQ_INACTIVE].pq_cnt;
1072		ndirty = vmd->vmd_pagequeues[PQ_LAUNDRY].pq_cnt;
1073		if (target == 0 && ndirty * isqrt(howmany(nfreed + 1,
1074		    vmd->vmd_free_target - vmd->vmd_free_min)) >= nclean) {
1075			target = vmd->vmd_background_launder_target;
1076		}
1077
1078		/*
1079		 * We have a non-zero background laundering target.  If we've
1080		 * laundered up to our maximum without observing a page daemon
1081		 * request, just stop.  This is a safety belt that ensures we
1082		 * don't launder an excessive amount if memory pressure is low
1083		 * and the ratio of dirty to clean pages is large.  Otherwise,
1084		 * proceed at the background laundering rate.
1085		 */
1086		if (target > 0) {
1087			if (nfreed > 0) {
1088				nfreed = 0;
1089				last_target = target;
1090			} else if (last_target - target >=
1091			    vm_background_launder_max * PAGE_SIZE / 1024) {
1092				target = 0;
1093			}
1094			launder = vm_background_launder_rate * PAGE_SIZE / 1024;
1095			launder /= VM_LAUNDER_RATE;
1096			if (launder > target)
1097				launder = target;
1098		}
1099
1100dolaundry:
1101		if (launder > 0) {
1102			/*
1103			 * Because of I/O clustering, the number of laundered
1104			 * pages could exceed "target" by the maximum size of
1105			 * a cluster minus one.
1106			 */
1107			target -= min(vm_pageout_launder(vmd, launder,
1108			    in_shortfall), target);
1109			pause("laundp", hz / VM_LAUNDER_RATE);
1110		}
1111
1112		/*
1113		 * If we're not currently laundering pages and the page daemon
1114		 * hasn't posted a new request, sleep until the page daemon
1115		 * kicks us.
1116		 */
1117		vm_pagequeue_lock(pq);
1118		if (target == 0 && vmd->vmd_laundry_request == VM_LAUNDRY_IDLE)
1119			(void)mtx_sleep(&vmd->vmd_laundry_request,
1120			    vm_pagequeue_lockptr(pq), PVM, "launds", 0);
1121
1122		/*
1123		 * If the pagedaemon has indicated that it's in shortfall, start
1124		 * a shortfall laundering unless we're already in the middle of
1125		 * one.  This may preempt a background laundering.
1126		 */
1127		if (vmd->vmd_laundry_request == VM_LAUNDRY_SHORTFALL &&
1128		    (!in_shortfall || shortfall_cycle == 0)) {
1129			shortfall = vm_laundry_target(vmd) +
1130			    vmd->vmd_pageout_deficit;
1131			target = 0;
1132		} else
1133			shortfall = 0;
1134
1135		if (target == 0)
1136			vmd->vmd_laundry_request = VM_LAUNDRY_IDLE;
1137		nfreed += vmd->vmd_clean_pages_freed;
1138		vmd->vmd_clean_pages_freed = 0;
1139		vm_pagequeue_unlock(pq);
1140	}
1141}
1142
1143/*
1144 * Compute the number of pages we want to try to move from the
1145 * active queue to either the inactive or laundry queue.
1146 *
1147 * When scanning active pages during a shortage, we make clean pages
1148 * count more heavily towards the page shortage than dirty pages.
1149 * This is because dirty pages must be laundered before they can be
1150 * reused and thus have less utility when attempting to quickly
1151 * alleviate a free page shortage.  However, this weighting also
1152 * causes the scan to deactivate dirty pages more aggressively,
1153 * improving the effectiveness of clustering.
1154 */
1155static int
1156vm_pageout_active_target(struct vm_domain *vmd)
1157{
1158	int shortage;
1159
1160	shortage = vmd->vmd_inactive_target + vm_paging_target(vmd) -
1161	    (vmd->vmd_pagequeues[PQ_INACTIVE].pq_cnt +
1162	    vmd->vmd_pagequeues[PQ_LAUNDRY].pq_cnt / act_scan_laundry_weight);
1163	shortage *= act_scan_laundry_weight;
1164	return (shortage);
1165}
1166
1167/*
1168 * Scan the active queue.  If there is no shortage of inactive pages, scan a
1169 * small portion of the queue in order to maintain quasi-LRU.
1170 */
1171static void
1172vm_pageout_scan_active(struct vm_domain *vmd, int page_shortage)
1173{
1174	struct scan_state ss;
1175	vm_object_t object;
1176	vm_page_t m, marker;
1177	struct vm_pagequeue *pq;
1178	vm_page_astate_t old, new;
1179	long min_scan;
1180	int act_delta, max_scan, ps_delta, refs, scan_tick;
1181	uint8_t nqueue;
1182
1183	marker = &vmd->vmd_markers[PQ_ACTIVE];
1184	pq = &vmd->vmd_pagequeues[PQ_ACTIVE];
1185	vm_pagequeue_lock(pq);
1186
1187	/*
1188	 * If we're just idle polling attempt to visit every
1189	 * active page within 'update_period' seconds.
1190	 */
1191	scan_tick = ticks;
1192	if (vm_pageout_update_period != 0) {
1193		min_scan = pq->pq_cnt;
1194		min_scan *= scan_tick - vmd->vmd_last_active_scan;
1195		min_scan /= hz * vm_pageout_update_period;
1196	} else
1197		min_scan = 0;
1198	if (min_scan > 0 || (page_shortage > 0 && pq->pq_cnt > 0))
1199		vmd->vmd_last_active_scan = scan_tick;
1200
1201	/*
1202	 * Scan the active queue for pages that can be deactivated.  Update
1203	 * the per-page activity counter and use it to identify deactivation
1204	 * candidates.  Held pages may be deactivated.
1205	 *
1206	 * To avoid requeuing each page that remains in the active queue, we
1207	 * implement the CLOCK algorithm.  To keep the implementation of the
1208	 * enqueue operation consistent for all page queues, we use two hands,
1209	 * represented by marker pages. Scans begin at the first hand, which
1210	 * precedes the second hand in the queue.  When the two hands meet,
1211	 * they are moved back to the head and tail of the queue, respectively,
1212	 * and scanning resumes.
1213	 */
1214	max_scan = page_shortage > 0 ? pq->pq_cnt : min_scan;
1215act_scan:
1216	vm_pageout_init_scan(&ss, pq, marker, &vmd->vmd_clock[0], max_scan);
1217	while ((m = vm_pageout_next(&ss, false)) != NULL) {
1218		if (__predict_false(m == &vmd->vmd_clock[1])) {
1219			vm_pagequeue_lock(pq);
1220			TAILQ_REMOVE(&pq->pq_pl, &vmd->vmd_clock[0], plinks.q);
1221			TAILQ_REMOVE(&pq->pq_pl, &vmd->vmd_clock[1], plinks.q);
1222			TAILQ_INSERT_HEAD(&pq->pq_pl, &vmd->vmd_clock[0],
1223			    plinks.q);
1224			TAILQ_INSERT_TAIL(&pq->pq_pl, &vmd->vmd_clock[1],
1225			    plinks.q);
1226			max_scan -= ss.scanned;
1227			vm_pageout_end_scan(&ss);
1228			goto act_scan;
1229		}
1230		if (__predict_false((m->flags & PG_MARKER) != 0))
1231			continue;
1232
1233		/*
1234		 * Don't touch a page that was removed from the queue after the
1235		 * page queue lock was released.  Otherwise, ensure that any
1236		 * pending queue operations, such as dequeues for wired pages,
1237		 * are handled.
1238		 */
1239		if (vm_pageout_defer(m, PQ_ACTIVE, true))
1240			continue;
1241
1242		/*
1243		 * A page's object pointer may be set to NULL before
1244		 * the object lock is acquired.
1245		 */
1246		object = atomic_load_ptr(&m->object);
1247		if (__predict_false(object == NULL))
1248			/*
1249			 * The page has been removed from its object.
1250			 */
1251			continue;
1252
1253		/* Deferred free of swap space. */
1254		if ((m->a.flags & PGA_SWAP_FREE) != 0 &&
1255		    VM_OBJECT_TRYWLOCK(object)) {
1256			if (m->object == object)
1257				vm_pager_page_unswapped(m);
1258			VM_OBJECT_WUNLOCK(object);
1259		}
1260
1261		/*
1262		 * Check to see "how much" the page has been used.
1263		 *
1264		 * Test PGA_REFERENCED after calling pmap_ts_referenced() so
1265		 * that a reference from a concurrently destroyed mapping is
1266		 * observed here and now.
1267		 *
1268		 * Perform an unsynchronized object ref count check.  While
1269		 * the page lock ensures that the page is not reallocated to
1270		 * another object, in particular, one with unmanaged mappings
1271		 * that cannot support pmap_ts_referenced(), two races are,
1272		 * nonetheless, possible:
1273		 * 1) The count was transitioning to zero, but we saw a non-
1274		 *    zero value.  pmap_ts_referenced() will return zero
1275		 *    because the page is not mapped.
1276		 * 2) The count was transitioning to one, but we saw zero.
1277		 *    This race delays the detection of a new reference.  At
1278		 *    worst, we will deactivate and reactivate the page.
1279		 */
1280		refs = object->ref_count != 0 ? pmap_ts_referenced(m) : 0;
1281
1282		old = vm_page_astate_load(m);
1283		do {
1284			/*
1285			 * Check to see if the page has been removed from the
1286			 * queue since the first such check.  Leave it alone if
1287			 * so, discarding any references collected by
1288			 * pmap_ts_referenced().
1289			 */
1290			if (__predict_false(_vm_page_queue(old) == PQ_NONE)) {
1291				ps_delta = 0;
1292				break;
1293			}
1294
1295			/*
1296			 * Advance or decay the act_count based on recent usage.
1297			 */
1298			new = old;
1299			act_delta = refs;
1300			if ((old.flags & PGA_REFERENCED) != 0) {
1301				new.flags &= ~PGA_REFERENCED;
1302				act_delta++;
1303			}
1304			if (act_delta != 0) {
1305				new.act_count += ACT_ADVANCE + act_delta;
1306				if (new.act_count > ACT_MAX)
1307					new.act_count = ACT_MAX;
1308			} else {
1309				new.act_count -= min(new.act_count,
1310				    ACT_DECLINE);
1311			}
1312
1313			if (new.act_count > 0) {
1314				/*
1315				 * Adjust the activation count and keep the page
1316				 * in the active queue.  The count might be left
1317				 * unchanged if it is saturated.  The page may
1318				 * have been moved to a different queue since we
1319				 * started the scan, in which case we move it
1320				 * back.
1321				 */
1322				ps_delta = 0;
1323				if (old.queue != PQ_ACTIVE) {
1324					new.flags &= ~PGA_QUEUE_OP_MASK;
1325					new.flags |= PGA_REQUEUE;
1326					new.queue = PQ_ACTIVE;
1327				}
1328			} else {
1329				/*
1330				 * When not short for inactive pages, let dirty
1331				 * pages go through the inactive queue before
1332				 * moving to the laundry queue.  This gives them
1333				 * some extra time to be reactivated,
1334				 * potentially avoiding an expensive pageout.
1335				 * However, during a page shortage, the inactive
1336				 * queue is necessarily small, and so dirty
1337				 * pages would only spend a trivial amount of
1338				 * time in the inactive queue.  Therefore, we
1339				 * might as well place them directly in the
1340				 * laundry queue to reduce queuing overhead.
1341				 *
1342				 * Calling vm_page_test_dirty() here would
1343				 * require acquisition of the object's write
1344				 * lock.  However, during a page shortage,
1345				 * directing dirty pages into the laundry queue
1346				 * is only an optimization and not a
1347				 * requirement.  Therefore, we simply rely on
1348				 * the opportunistic updates to the page's dirty
1349				 * field by the pmap.
1350				 */
1351				if (page_shortage <= 0) {
1352					nqueue = PQ_INACTIVE;
1353					ps_delta = 0;
1354				} else if (m->dirty == 0) {
1355					nqueue = PQ_INACTIVE;
1356					ps_delta = act_scan_laundry_weight;
1357				} else {
1358					nqueue = PQ_LAUNDRY;
1359					ps_delta = 1;
1360				}
1361
1362				new.flags &= ~PGA_QUEUE_OP_MASK;
1363				new.flags |= PGA_REQUEUE;
1364				new.queue = nqueue;
1365			}
1366		} while (!vm_page_pqstate_commit(m, &old, new));
1367
1368		page_shortage -= ps_delta;
1369	}
1370	vm_pagequeue_lock(pq);
1371	TAILQ_REMOVE(&pq->pq_pl, &vmd->vmd_clock[0], plinks.q);
1372	TAILQ_INSERT_AFTER(&pq->pq_pl, marker, &vmd->vmd_clock[0], plinks.q);
1373	vm_pageout_end_scan(&ss);
1374	vm_pagequeue_unlock(pq);
1375}
1376
1377static int
1378vm_pageout_reinsert_inactive_page(struct vm_pagequeue *pq, vm_page_t marker,
1379    vm_page_t m)
1380{
1381	vm_page_astate_t as;
1382
1383	vm_pagequeue_assert_locked(pq);
1384
1385	as = vm_page_astate_load(m);
1386	if (as.queue != PQ_INACTIVE || (as.flags & PGA_ENQUEUED) != 0)
1387		return (0);
1388	vm_page_aflag_set(m, PGA_ENQUEUED);
1389	TAILQ_INSERT_BEFORE(marker, m, plinks.q);
1390	return (1);
1391}
1392
1393/*
1394 * Re-add stuck pages to the inactive queue.  We will examine them again
1395 * during the next scan.  If the queue state of a page has changed since
1396 * it was physically removed from the page queue in
1397 * vm_pageout_collect_batch(), don't do anything with that page.
1398 */
1399static void
1400vm_pageout_reinsert_inactive(struct scan_state *ss, struct vm_batchqueue *bq,
1401    vm_page_t m)
1402{
1403	struct vm_pagequeue *pq;
1404	vm_page_t marker;
1405	int delta;
1406
1407	delta = 0;
1408	marker = ss->marker;
1409	pq = ss->pq;
1410
1411	if (m != NULL) {
1412		if (vm_batchqueue_insert(bq, m))
1413			return;
1414		vm_pagequeue_lock(pq);
1415		delta += vm_pageout_reinsert_inactive_page(pq, marker, m);
1416	} else
1417		vm_pagequeue_lock(pq);
1418	while ((m = vm_batchqueue_pop(bq)) != NULL)
1419		delta += vm_pageout_reinsert_inactive_page(pq, marker, m);
1420	vm_pagequeue_cnt_add(pq, delta);
1421	vm_pagequeue_unlock(pq);
1422	vm_batchqueue_init(bq);
1423}
1424
1425static void
1426vm_pageout_scan_inactive(struct vm_domain *vmd, int page_shortage)
1427{
1428	struct timeval start, end;
1429	struct scan_state ss;
1430	struct vm_batchqueue rq;
1431	struct vm_page marker_page;
1432	vm_page_t m, marker;
1433	struct vm_pagequeue *pq;
1434	vm_object_t object;
1435	vm_page_astate_t old, new;
1436	int act_delta, addl_page_shortage, starting_page_shortage, refs;
1437
1438	object = NULL;
1439	vm_batchqueue_init(&rq);
1440	getmicrouptime(&start);
1441
1442	/*
1443	 * The addl_page_shortage is an estimate of the number of temporarily
1444	 * stuck pages in the inactive queue.  In other words, the
1445	 * number of pages from the inactive count that should be
1446	 * discounted in setting the target for the active queue scan.
1447	 */
1448	addl_page_shortage = 0;
1449
1450	/*
1451	 * Start scanning the inactive queue for pages that we can free.  The
1452	 * scan will stop when we reach the target or we have scanned the
1453	 * entire queue.  (Note that m->a.act_count is not used to make
1454	 * decisions for the inactive queue, only for the active queue.)
1455	 */
1456	starting_page_shortage = page_shortage;
1457	marker = &marker_page;
1458	vm_page_init_marker(marker, PQ_INACTIVE, 0);
1459	pq = &vmd->vmd_pagequeues[PQ_INACTIVE];
1460	vm_pagequeue_lock(pq);
1461	vm_pageout_init_scan(&ss, pq, marker, NULL, pq->pq_cnt);
1462	while (page_shortage > 0 && (m = vm_pageout_next(&ss, true)) != NULL) {
1463		KASSERT((m->flags & PG_MARKER) == 0,
1464		    ("marker page %p was dequeued", m));
1465
1466		/*
1467		 * Don't touch a page that was removed from the queue after the
1468		 * page queue lock was released.  Otherwise, ensure that any
1469		 * pending queue operations, such as dequeues for wired pages,
1470		 * are handled.
1471		 */
1472		if (vm_pageout_defer(m, PQ_INACTIVE, false))
1473			continue;
1474
1475		/*
1476		 * Lock the page's object.
1477		 */
1478		if (object == NULL || object != m->object) {
1479			if (object != NULL)
1480				VM_OBJECT_WUNLOCK(object);
1481			object = atomic_load_ptr(&m->object);
1482			if (__predict_false(object == NULL))
1483				/* The page is being freed by another thread. */
1484				continue;
1485
1486			/* Depends on type-stability. */
1487			VM_OBJECT_WLOCK(object);
1488			if (__predict_false(m->object != object)) {
1489				VM_OBJECT_WUNLOCK(object);
1490				object = NULL;
1491				goto reinsert;
1492			}
1493		}
1494
1495		if (vm_page_tryxbusy(m) == 0) {
1496			/*
1497			 * Don't mess with busy pages.  Leave them at
1498			 * the front of the queue.  Most likely, they
1499			 * are being paged out and will leave the
1500			 * queue shortly after the scan finishes.  So,
1501			 * they ought to be discounted from the
1502			 * inactive count.
1503			 */
1504			addl_page_shortage++;
1505			goto reinsert;
1506		}
1507
1508		/* Deferred free of swap space. */
1509		if ((m->a.flags & PGA_SWAP_FREE) != 0)
1510			vm_pager_page_unswapped(m);
1511
1512		/*
1513		 * Check for wirings now that we hold the object lock and have
1514		 * exclusively busied the page.  If the page is mapped, it may
1515		 * still be wired by pmap lookups.  The call to
1516		 * vm_page_try_remove_all() below atomically checks for such
1517		 * wirings and removes mappings.  If the page is unmapped, the
1518		 * wire count is guaranteed not to increase after this check.
1519		 */
1520		if (__predict_false(vm_page_wired(m)))
1521			goto skip_page;
1522
1523		/*
1524		 * Invalid pages can be easily freed. They cannot be
1525		 * mapped, vm_page_free() asserts this.
1526		 */
1527		if (vm_page_none_valid(m))
1528			goto free_page;
1529
1530		refs = object->ref_count != 0 ? pmap_ts_referenced(m) : 0;
1531
1532		for (old = vm_page_astate_load(m);;) {
1533			/*
1534			 * Check to see if the page has been removed from the
1535			 * queue since the first such check.  Leave it alone if
1536			 * so, discarding any references collected by
1537			 * pmap_ts_referenced().
1538			 */
1539			if (__predict_false(_vm_page_queue(old) == PQ_NONE))
1540				goto skip_page;
1541
1542			new = old;
1543			act_delta = refs;
1544			if ((old.flags & PGA_REFERENCED) != 0) {
1545				new.flags &= ~PGA_REFERENCED;
1546				act_delta++;
1547			}
1548			if (act_delta == 0) {
1549				;
1550			} else if (object->ref_count != 0) {
1551				/*
1552				 * Increase the activation count if the
1553				 * page was referenced while in the
1554				 * inactive queue.  This makes it less
1555				 * likely that the page will be returned
1556				 * prematurely to the inactive queue.
1557				 */
1558				new.act_count += ACT_ADVANCE +
1559				    act_delta;
1560				if (new.act_count > ACT_MAX)
1561					new.act_count = ACT_MAX;
1562
1563				new.flags &= ~PGA_QUEUE_OP_MASK;
1564				new.flags |= PGA_REQUEUE;
1565				new.queue = PQ_ACTIVE;
1566				if (!vm_page_pqstate_commit(m, &old, new))
1567					continue;
1568
1569				VM_CNT_INC(v_reactivated);
1570				goto skip_page;
1571			} else if ((object->flags & OBJ_DEAD) == 0) {
1572				new.queue = PQ_INACTIVE;
1573				new.flags |= PGA_REQUEUE;
1574				if (!vm_page_pqstate_commit(m, &old, new))
1575					continue;
1576				goto skip_page;
1577			}
1578			break;
1579		}
1580
1581		/*
1582		 * If the page appears to be clean at the machine-independent
1583		 * layer, then remove all of its mappings from the pmap in
1584		 * anticipation of freeing it.  If, however, any of the page's
1585		 * mappings allow write access, then the page may still be
1586		 * modified until the last of those mappings are removed.
1587		 */
1588		if (object->ref_count != 0) {
1589			vm_page_test_dirty(m);
1590			if (m->dirty == 0 && !vm_page_try_remove_all(m))
1591				goto skip_page;
1592		}
1593
1594		/*
1595		 * Clean pages can be freed, but dirty pages must be sent back
1596		 * to the laundry, unless they belong to a dead object.
1597		 * Requeueing dirty pages from dead objects is pointless, as
1598		 * they are being paged out and freed by the thread that
1599		 * destroyed the object.
1600		 */
1601		if (m->dirty == 0) {
1602free_page:
1603			/*
1604			 * Now we are guaranteed that no other threads are
1605			 * manipulating the page, check for a last-second
1606			 * reference that would save it from doom.
1607			 */
1608			if (vm_pageout_defer(m, PQ_INACTIVE, false))
1609				goto skip_page;
1610
1611			/*
1612			 * Because we dequeued the page and have already checked
1613			 * for pending dequeue and enqueue requests, we can
1614			 * safely disassociate the page from the inactive queue
1615			 * without holding the queue lock.
1616			 */
1617			m->a.queue = PQ_NONE;
1618			vm_page_free(m);
1619			page_shortage--;
1620			continue;
1621		}
1622		if ((object->flags & OBJ_DEAD) == 0)
1623			vm_page_launder(m);
1624skip_page:
1625		vm_page_xunbusy(m);
1626		continue;
1627reinsert:
1628		vm_pageout_reinsert_inactive(&ss, &rq, m);
1629	}
1630	if (object != NULL)
1631		VM_OBJECT_WUNLOCK(object);
1632	vm_pageout_reinsert_inactive(&ss, &rq, NULL);
1633	vm_pageout_reinsert_inactive(&ss, &ss.bq, NULL);
1634	vm_pagequeue_lock(pq);
1635	vm_pageout_end_scan(&ss);
1636	vm_pagequeue_unlock(pq);
1637
1638	/*
1639	 * Record the remaining shortage and the progress and rate it was made.
1640	 */
1641	atomic_add_int(&vmd->vmd_addl_shortage, addl_page_shortage);
1642	getmicrouptime(&end);
1643	timevalsub(&end, &start);
1644	atomic_add_int(&vmd->vmd_inactive_us,
1645	    end.tv_sec * 1000000 + end.tv_usec);
1646	atomic_add_int(&vmd->vmd_inactive_freed,
1647	    starting_page_shortage - page_shortage);
1648}
1649
1650/*
1651 * Dispatch a number of inactive threads according to load and collect the
1652 * results to present a coherent view of paging activity on this domain.
1653 */
1654static int
1655vm_pageout_inactive_dispatch(struct vm_domain *vmd, int shortage)
1656{
1657	u_int freed, pps, slop, threads, us;
1658
1659	vmd->vmd_inactive_shortage = shortage;
1660	slop = 0;
1661
1662	/*
1663	 * If we have more work than we can do in a quarter of our interval, we
1664	 * fire off multiple threads to process it.
1665	 */
1666	threads = vmd->vmd_inactive_threads;
1667	if (threads > 1 && vmd->vmd_inactive_pps != 0 &&
1668	    shortage > vmd->vmd_inactive_pps / VM_INACT_SCAN_RATE / 4) {
1669		vmd->vmd_inactive_shortage /= threads;
1670		slop = shortage % threads;
1671		vm_domain_pageout_lock(vmd);
1672		blockcount_acquire(&vmd->vmd_inactive_starting, threads - 1);
1673		blockcount_acquire(&vmd->vmd_inactive_running, threads - 1);
1674		wakeup(&vmd->vmd_inactive_shortage);
1675		vm_domain_pageout_unlock(vmd);
1676	}
1677
1678	/* Run the local thread scan. */
1679	vm_pageout_scan_inactive(vmd, vmd->vmd_inactive_shortage + slop);
1680
1681	/*
1682	 * Block until helper threads report results and then accumulate
1683	 * totals.
1684	 */
1685	blockcount_wait(&vmd->vmd_inactive_running, NULL, "vmpoid", PVM);
1686	freed = atomic_readandclear_int(&vmd->vmd_inactive_freed);
1687	VM_CNT_ADD(v_dfree, freed);
1688
1689	/*
1690	 * Calculate the per-thread paging rate with an exponential decay of
1691	 * prior results.  Careful to avoid integer rounding errors with large
1692	 * us values.
1693	 */
1694	us = max(atomic_readandclear_int(&vmd->vmd_inactive_us), 1);
1695	if (us > 1000000)
1696		/* Keep rounding to tenths */
1697		pps = (freed * 10) / ((us * 10) / 1000000);
1698	else
1699		pps = (1000000 / us) * freed;
1700	vmd->vmd_inactive_pps = (vmd->vmd_inactive_pps / 2) + (pps / 2);
1701
1702	return (shortage - freed);
1703}
1704
1705/*
1706 * Attempt to reclaim the requested number of pages from the inactive queue.
1707 * Returns true if the shortage was addressed.
1708 */
1709static int
1710vm_pageout_inactive(struct vm_domain *vmd, int shortage, int *addl_shortage)
1711{
1712	struct vm_pagequeue *pq;
1713	u_int addl_page_shortage, deficit, page_shortage;
1714	u_int starting_page_shortage;
1715
1716	/*
1717	 * vmd_pageout_deficit counts the number of pages requested in
1718	 * allocations that failed because of a free page shortage.  We assume
1719	 * that the allocations will be reattempted and thus include the deficit
1720	 * in our scan target.
1721	 */
1722	deficit = atomic_readandclear_int(&vmd->vmd_pageout_deficit);
1723	starting_page_shortage = shortage + deficit;
1724
1725	/*
1726	 * Run the inactive scan on as many threads as is necessary.
1727	 */
1728	page_shortage = vm_pageout_inactive_dispatch(vmd, starting_page_shortage);
1729	addl_page_shortage = atomic_readandclear_int(&vmd->vmd_addl_shortage);
1730
1731	/*
1732	 * Wake up the laundry thread so that it can perform any needed
1733	 * laundering.  If we didn't meet our target, we're in shortfall and
1734	 * need to launder more aggressively.  If PQ_LAUNDRY is empty and no
1735	 * swap devices are configured, the laundry thread has no work to do, so
1736	 * don't bother waking it up.
1737	 *
1738	 * The laundry thread uses the number of inactive queue scans elapsed
1739	 * since the last laundering to determine whether to launder again, so
1740	 * keep count.
1741	 */
1742	if (starting_page_shortage > 0) {
1743		pq = &vmd->vmd_pagequeues[PQ_LAUNDRY];
1744		vm_pagequeue_lock(pq);
1745		if (vmd->vmd_laundry_request == VM_LAUNDRY_IDLE &&
1746		    (pq->pq_cnt > 0 || atomic_load_acq_int(&swapdev_enabled))) {
1747			if (page_shortage > 0) {
1748				vmd->vmd_laundry_request = VM_LAUNDRY_SHORTFALL;
1749				VM_CNT_INC(v_pdshortfalls);
1750			} else if (vmd->vmd_laundry_request !=
1751			    VM_LAUNDRY_SHORTFALL)
1752				vmd->vmd_laundry_request =
1753				    VM_LAUNDRY_BACKGROUND;
1754			wakeup(&vmd->vmd_laundry_request);
1755		}
1756		vmd->vmd_clean_pages_freed +=
1757		    starting_page_shortage - page_shortage;
1758		vm_pagequeue_unlock(pq);
1759	}
1760
1761	/*
1762	 * Wakeup the swapout daemon if we didn't free the targeted number of
1763	 * pages.
1764	 */
1765	if (page_shortage > 0)
1766		vm_swapout_run();
1767
1768	/*
1769	 * If the inactive queue scan fails repeatedly to meet its
1770	 * target, kill the largest process.
1771	 */
1772	vm_pageout_mightbe_oom(vmd, page_shortage, starting_page_shortage);
1773
1774	/*
1775	 * Reclaim pages by swapping out idle processes, if configured to do so.
1776	 */
1777	vm_swapout_run_idle();
1778
1779	/*
1780	 * See the description of addl_page_shortage above.
1781	 */
1782	*addl_shortage = addl_page_shortage + deficit;
1783
1784	return (page_shortage <= 0);
1785}
1786
1787static int vm_pageout_oom_vote;
1788
1789/*
1790 * The pagedaemon threads randlomly select one to perform the
1791 * OOM.  Trying to kill processes before all pagedaemons
1792 * failed to reach free target is premature.
1793 */
1794static void
1795vm_pageout_mightbe_oom(struct vm_domain *vmd, int page_shortage,
1796    int starting_page_shortage)
1797{
1798	int old_vote;
1799
1800	if (starting_page_shortage <= 0 || starting_page_shortage !=
1801	    page_shortage)
1802		vmd->vmd_oom_seq = 0;
1803	else
1804		vmd->vmd_oom_seq++;
1805	if (vmd->vmd_oom_seq < vm_pageout_oom_seq) {
1806		if (vmd->vmd_oom) {
1807			vmd->vmd_oom = FALSE;
1808			atomic_subtract_int(&vm_pageout_oom_vote, 1);
1809		}
1810		return;
1811	}
1812
1813	/*
1814	 * Do not follow the call sequence until OOM condition is
1815	 * cleared.
1816	 */
1817	vmd->vmd_oom_seq = 0;
1818
1819	if (vmd->vmd_oom)
1820		return;
1821
1822	vmd->vmd_oom = TRUE;
1823	old_vote = atomic_fetchadd_int(&vm_pageout_oom_vote, 1);
1824	if (old_vote != vm_ndomains - 1)
1825		return;
1826
1827	/*
1828	 * The current pagedaemon thread is the last in the quorum to
1829	 * start OOM.  Initiate the selection and signaling of the
1830	 * victim.
1831	 */
1832	vm_pageout_oom(VM_OOM_MEM);
1833
1834	/*
1835	 * After one round of OOM terror, recall our vote.  On the
1836	 * next pass, current pagedaemon would vote again if the low
1837	 * memory condition is still there, due to vmd_oom being
1838	 * false.
1839	 */
1840	vmd->vmd_oom = FALSE;
1841	atomic_subtract_int(&vm_pageout_oom_vote, 1);
1842}
1843
1844/*
1845 * The OOM killer is the page daemon's action of last resort when
1846 * memory allocation requests have been stalled for a prolonged period
1847 * of time because it cannot reclaim memory.  This function computes
1848 * the approximate number of physical pages that could be reclaimed if
1849 * the specified address space is destroyed.
1850 *
1851 * Private, anonymous memory owned by the address space is the
1852 * principal resource that we expect to recover after an OOM kill.
1853 * Since the physical pages mapped by the address space's COW entries
1854 * are typically shared pages, they are unlikely to be released and so
1855 * they are not counted.
1856 *
1857 * To get to the point where the page daemon runs the OOM killer, its
1858 * efforts to write-back vnode-backed pages may have stalled.  This
1859 * could be caused by a memory allocation deadlock in the write path
1860 * that might be resolved by an OOM kill.  Therefore, physical pages
1861 * belonging to vnode-backed objects are counted, because they might
1862 * be freed without being written out first if the address space holds
1863 * the last reference to an unlinked vnode.
1864 *
1865 * Similarly, physical pages belonging to OBJT_PHYS objects are
1866 * counted because the address space might hold the last reference to
1867 * the object.
1868 */
1869static long
1870vm_pageout_oom_pagecount(struct vmspace *vmspace)
1871{
1872	vm_map_t map;
1873	vm_map_entry_t entry;
1874	vm_object_t obj;
1875	long res;
1876
1877	map = &vmspace->vm_map;
1878	KASSERT(!map->system_map, ("system map"));
1879	sx_assert(&map->lock, SA_LOCKED);
1880	res = 0;
1881	VM_MAP_ENTRY_FOREACH(entry, map) {
1882		if ((entry->eflags & MAP_ENTRY_IS_SUB_MAP) != 0)
1883			continue;
1884		obj = entry->object.vm_object;
1885		if (obj == NULL)
1886			continue;
1887		if ((entry->eflags & MAP_ENTRY_NEEDS_COPY) != 0 &&
1888		    obj->ref_count != 1)
1889			continue;
1890		if (obj->type == OBJT_DEFAULT || obj->type == OBJT_PHYS ||
1891		    obj->type == OBJT_VNODE || (obj->flags & OBJ_SWAP) != 0)
1892			res += obj->resident_page_count;
1893	}
1894	return (res);
1895}
1896
1897static int vm_oom_ratelim_last;
1898static int vm_oom_pf_secs = 10;
1899SYSCTL_INT(_vm, OID_AUTO, oom_pf_secs, CTLFLAG_RWTUN, &vm_oom_pf_secs, 0,
1900    "");
1901static struct mtx vm_oom_ratelim_mtx;
1902
1903void
1904vm_pageout_oom(int shortage)
1905{
1906	struct proc *p, *bigproc;
1907	vm_offset_t size, bigsize;
1908	struct thread *td;
1909	struct vmspace *vm;
1910	int now;
1911	bool breakout;
1912
1913	/*
1914	 * For OOM requests originating from vm_fault(), there is a high
1915	 * chance that a single large process faults simultaneously in
1916	 * several threads.  Also, on an active system running many
1917	 * processes of middle-size, like buildworld, all of them
1918	 * could fault almost simultaneously as well.
1919	 *
1920	 * To avoid killing too many processes, rate-limit OOMs
1921	 * initiated by vm_fault() time-outs on the waits for free
1922	 * pages.
1923	 */
1924	mtx_lock(&vm_oom_ratelim_mtx);
1925	now = ticks;
1926	if (shortage == VM_OOM_MEM_PF &&
1927	    (u_int)(now - vm_oom_ratelim_last) < hz * vm_oom_pf_secs) {
1928		mtx_unlock(&vm_oom_ratelim_mtx);
1929		return;
1930	}
1931	vm_oom_ratelim_last = now;
1932	mtx_unlock(&vm_oom_ratelim_mtx);
1933
1934	/*
1935	 * We keep the process bigproc locked once we find it to keep anyone
1936	 * from messing with it; however, there is a possibility of
1937	 * deadlock if process B is bigproc and one of its child processes
1938	 * attempts to propagate a signal to B while we are waiting for A's
1939	 * lock while walking this list.  To avoid this, we don't block on
1940	 * the process lock but just skip a process if it is already locked.
1941	 */
1942	bigproc = NULL;
1943	bigsize = 0;
1944	sx_slock(&allproc_lock);
1945	FOREACH_PROC_IN_SYSTEM(p) {
1946		PROC_LOCK(p);
1947
1948		/*
1949		 * If this is a system, protected or killed process, skip it.
1950		 */
1951		if (p->p_state != PRS_NORMAL || (p->p_flag & (P_INEXEC |
1952		    P_PROTECTED | P_SYSTEM | P_WEXIT)) != 0 ||
1953		    p->p_pid == 1 || P_KILLED(p) ||
1954		    (p->p_pid < 48 && swap_pager_avail != 0)) {
1955			PROC_UNLOCK(p);
1956			continue;
1957		}
1958		/*
1959		 * If the process is in a non-running type state,
1960		 * don't touch it.  Check all the threads individually.
1961		 */
1962		breakout = false;
1963		FOREACH_THREAD_IN_PROC(p, td) {
1964			thread_lock(td);
1965			if (!TD_ON_RUNQ(td) &&
1966			    !TD_IS_RUNNING(td) &&
1967			    !TD_IS_SLEEPING(td) &&
1968			    !TD_IS_SUSPENDED(td) &&
1969			    !TD_IS_SWAPPED(td)) {
1970				thread_unlock(td);
1971				breakout = true;
1972				break;
1973			}
1974			thread_unlock(td);
1975		}
1976		if (breakout) {
1977			PROC_UNLOCK(p);
1978			continue;
1979		}
1980		/*
1981		 * get the process size
1982		 */
1983		vm = vmspace_acquire_ref(p);
1984		if (vm == NULL) {
1985			PROC_UNLOCK(p);
1986			continue;
1987		}
1988		_PHOLD_LITE(p);
1989		PROC_UNLOCK(p);
1990		sx_sunlock(&allproc_lock);
1991		if (!vm_map_trylock_read(&vm->vm_map)) {
1992			vmspace_free(vm);
1993			sx_slock(&allproc_lock);
1994			PRELE(p);
1995			continue;
1996		}
1997		size = vmspace_swap_count(vm);
1998		if (shortage == VM_OOM_MEM || shortage == VM_OOM_MEM_PF)
1999			size += vm_pageout_oom_pagecount(vm);
2000		vm_map_unlock_read(&vm->vm_map);
2001		vmspace_free(vm);
2002		sx_slock(&allproc_lock);
2003
2004		/*
2005		 * If this process is bigger than the biggest one,
2006		 * remember it.
2007		 */
2008		if (size > bigsize) {
2009			if (bigproc != NULL)
2010				PRELE(bigproc);
2011			bigproc = p;
2012			bigsize = size;
2013		} else {
2014			PRELE(p);
2015		}
2016	}
2017	sx_sunlock(&allproc_lock);
2018	if (bigproc != NULL) {
2019		if (vm_panic_on_oom != 0 && --vm_panic_on_oom == 0)
2020			panic("out of swap space");
2021		PROC_LOCK(bigproc);
2022		killproc(bigproc, "out of swap space");
2023		sched_nice(bigproc, PRIO_MIN);
2024		_PRELE(bigproc);
2025		PROC_UNLOCK(bigproc);
2026	}
2027}
2028
2029/*
2030 * Signal a free page shortage to subsystems that have registered an event
2031 * handler.  Reclaim memory from UMA in the event of a severe shortage.
2032 * Return true if the free page count should be re-evaluated.
2033 */
2034static bool
2035vm_pageout_lowmem(void)
2036{
2037	static int lowmem_ticks = 0;
2038	int last;
2039	bool ret;
2040
2041	ret = false;
2042
2043	last = atomic_load_int(&lowmem_ticks);
2044	while ((u_int)(ticks - last) / hz >= lowmem_period) {
2045		if (atomic_fcmpset_int(&lowmem_ticks, &last, ticks) == 0)
2046			continue;
2047
2048		/*
2049		 * Decrease registered cache sizes.
2050		 */
2051		SDT_PROBE0(vm, , , vm__lowmem_scan);
2052		EVENTHANDLER_INVOKE(vm_lowmem, VM_LOW_PAGES);
2053
2054		/*
2055		 * We do this explicitly after the caches have been
2056		 * drained above.
2057		 */
2058		uma_reclaim(UMA_RECLAIM_TRIM);
2059		ret = true;
2060		break;
2061	}
2062
2063	/*
2064	 * Kick off an asynchronous reclaim of cached memory if one of the
2065	 * page daemons is failing to keep up with demand.  Use the "severe"
2066	 * threshold instead of "min" to ensure that we do not blow away the
2067	 * caches if a subset of the NUMA domains are depleted by kernel memory
2068	 * allocations; the domainset iterators automatically skip domains
2069	 * below the "min" threshold on the first pass.
2070	 *
2071	 * UMA reclaim worker has its own rate-limiting mechanism, so don't
2072	 * worry about kicking it too often.
2073	 */
2074	if (vm_page_count_severe())
2075		uma_reclaim_wakeup();
2076
2077	return (ret);
2078}
2079
2080static void
2081vm_pageout_worker(void *arg)
2082{
2083	struct vm_domain *vmd;
2084	u_int ofree;
2085	int addl_shortage, domain, shortage;
2086	bool target_met;
2087
2088	domain = (uintptr_t)arg;
2089	vmd = VM_DOMAIN(domain);
2090	shortage = 0;
2091	target_met = true;
2092
2093	/*
2094	 * XXXKIB It could be useful to bind pageout daemon threads to
2095	 * the cores belonging to the domain, from which vm_page_array
2096	 * is allocated.
2097	 */
2098
2099	KASSERT(vmd->vmd_segs != 0, ("domain without segments"));
2100	vmd->vmd_last_active_scan = ticks;
2101
2102	/*
2103	 * The pageout daemon worker is never done, so loop forever.
2104	 */
2105	while (TRUE) {
2106		vm_domain_pageout_lock(vmd);
2107
2108		/*
2109		 * We need to clear wanted before we check the limits.  This
2110		 * prevents races with wakers who will check wanted after they
2111		 * reach the limit.
2112		 */
2113		atomic_store_int(&vmd->vmd_pageout_wanted, 0);
2114
2115		/*
2116		 * Might the page daemon need to run again?
2117		 */
2118		if (vm_paging_needed(vmd, vmd->vmd_free_count)) {
2119			/*
2120			 * Yes.  If the scan failed to produce enough free
2121			 * pages, sleep uninterruptibly for some time in the
2122			 * hope that the laundry thread will clean some pages.
2123			 */
2124			vm_domain_pageout_unlock(vmd);
2125			if (!target_met)
2126				pause("pwait", hz / VM_INACT_SCAN_RATE);
2127		} else {
2128			/*
2129			 * No, sleep until the next wakeup or until pages
2130			 * need to have their reference stats updated.
2131			 */
2132			if (mtx_sleep(&vmd->vmd_pageout_wanted,
2133			    vm_domain_pageout_lockptr(vmd), PDROP | PVM,
2134			    "psleep", hz / VM_INACT_SCAN_RATE) == 0)
2135				VM_CNT_INC(v_pdwakeups);
2136		}
2137
2138		/* Prevent spurious wakeups by ensuring that wanted is set. */
2139		atomic_store_int(&vmd->vmd_pageout_wanted, 1);
2140
2141		/*
2142		 * Use the controller to calculate how many pages to free in
2143		 * this interval, and scan the inactive queue.  If the lowmem
2144		 * handlers appear to have freed up some pages, subtract the
2145		 * difference from the inactive queue scan target.
2146		 */
2147		shortage = pidctrl_daemon(&vmd->vmd_pid, vmd->vmd_free_count);
2148		if (shortage > 0) {
2149			ofree = vmd->vmd_free_count;
2150			if (vm_pageout_lowmem() && vmd->vmd_free_count > ofree)
2151				shortage -= min(vmd->vmd_free_count - ofree,
2152				    (u_int)shortage);
2153			target_met = vm_pageout_inactive(vmd, shortage,
2154			    &addl_shortage);
2155		} else
2156			addl_shortage = 0;
2157
2158		/*
2159		 * Scan the active queue.  A positive value for shortage
2160		 * indicates that we must aggressively deactivate pages to avoid
2161		 * a shortfall.
2162		 */
2163		shortage = vm_pageout_active_target(vmd) + addl_shortage;
2164		vm_pageout_scan_active(vmd, shortage);
2165	}
2166}
2167
2168/*
2169 * vm_pageout_helper runs additional pageout daemons in times of high paging
2170 * activity.
2171 */
2172static void
2173vm_pageout_helper(void *arg)
2174{
2175	struct vm_domain *vmd;
2176	int domain;
2177
2178	domain = (uintptr_t)arg;
2179	vmd = VM_DOMAIN(domain);
2180
2181	vm_domain_pageout_lock(vmd);
2182	for (;;) {
2183		msleep(&vmd->vmd_inactive_shortage,
2184		    vm_domain_pageout_lockptr(vmd), PVM, "psleep", 0);
2185		blockcount_release(&vmd->vmd_inactive_starting, 1);
2186
2187		vm_domain_pageout_unlock(vmd);
2188		vm_pageout_scan_inactive(vmd, vmd->vmd_inactive_shortage);
2189		vm_domain_pageout_lock(vmd);
2190
2191		/*
2192		 * Release the running count while the pageout lock is held to
2193		 * prevent wakeup races.
2194		 */
2195		blockcount_release(&vmd->vmd_inactive_running, 1);
2196	}
2197}
2198
2199static int
2200get_pageout_threads_per_domain(const struct vm_domain *vmd)
2201{
2202	unsigned total_pageout_threads, eligible_cpus, domain_cpus;
2203
2204	if (VM_DOMAIN_EMPTY(vmd->vmd_domain))
2205		return (0);
2206
2207	/*
2208	 * Semi-arbitrarily constrain pagedaemon threads to less than half the
2209	 * total number of CPUs in the system as an upper limit.
2210	 */
2211	if (pageout_cpus_per_thread < 2)
2212		pageout_cpus_per_thread = 2;
2213	else if (pageout_cpus_per_thread > mp_ncpus)
2214		pageout_cpus_per_thread = mp_ncpus;
2215
2216	total_pageout_threads = howmany(mp_ncpus, pageout_cpus_per_thread);
2217	domain_cpus = CPU_COUNT(&cpuset_domain[vmd->vmd_domain]);
2218
2219	/* Pagedaemons are not run in empty domains. */
2220	eligible_cpus = mp_ncpus;
2221	for (unsigned i = 0; i < vm_ndomains; i++)
2222		if (VM_DOMAIN_EMPTY(i))
2223			eligible_cpus -= CPU_COUNT(&cpuset_domain[i]);
2224
2225	/*
2226	 * Assign a portion of the total pageout threads to this domain
2227	 * corresponding to the fraction of pagedaemon-eligible CPUs in the
2228	 * domain.  In asymmetric NUMA systems, domains with more CPUs may be
2229	 * allocated more threads than domains with fewer CPUs.
2230	 */
2231	return (howmany(total_pageout_threads * domain_cpus, eligible_cpus));
2232}
2233
2234/*
2235 * Initialize basic pageout daemon settings.  See the comment above the
2236 * definition of vm_domain for some explanation of how these thresholds are
2237 * used.
2238 */
2239static void
2240vm_pageout_init_domain(int domain)
2241{
2242	struct vm_domain *vmd;
2243	struct sysctl_oid *oid;
2244
2245	vmd = VM_DOMAIN(domain);
2246	vmd->vmd_interrupt_free_min = 2;
2247
2248	/*
2249	 * v_free_reserved needs to include enough for the largest
2250	 * swap pager structures plus enough for any pv_entry structs
2251	 * when paging.
2252	 */
2253	vmd->vmd_pageout_free_min = 2 * MAXBSIZE / PAGE_SIZE +
2254	    vmd->vmd_interrupt_free_min;
2255	vmd->vmd_free_reserved = vm_pageout_page_count +
2256	    vmd->vmd_pageout_free_min + vmd->vmd_page_count / 768;
2257	vmd->vmd_free_min = vmd->vmd_page_count / 200;
2258	vmd->vmd_free_severe = vmd->vmd_free_min / 2;
2259	vmd->vmd_free_target = 4 * vmd->vmd_free_min + vmd->vmd_free_reserved;
2260	vmd->vmd_free_min += vmd->vmd_free_reserved;
2261	vmd->vmd_free_severe += vmd->vmd_free_reserved;
2262	vmd->vmd_inactive_target = (3 * vmd->vmd_free_target) / 2;
2263	if (vmd->vmd_inactive_target > vmd->vmd_free_count / 3)
2264		vmd->vmd_inactive_target = vmd->vmd_free_count / 3;
2265
2266	/*
2267	 * Set the default wakeup threshold to be 10% below the paging
2268	 * target.  This keeps the steady state out of shortfall.
2269	 */
2270	vmd->vmd_pageout_wakeup_thresh = (vmd->vmd_free_target / 10) * 9;
2271
2272	/*
2273	 * Target amount of memory to move out of the laundry queue during a
2274	 * background laundering.  This is proportional to the amount of system
2275	 * memory.
2276	 */
2277	vmd->vmd_background_launder_target = (vmd->vmd_free_target -
2278	    vmd->vmd_free_min) / 10;
2279
2280	/* Initialize the pageout daemon pid controller. */
2281	pidctrl_init(&vmd->vmd_pid, hz / VM_INACT_SCAN_RATE,
2282	    vmd->vmd_free_target, PIDCTRL_BOUND,
2283	    PIDCTRL_KPD, PIDCTRL_KID, PIDCTRL_KDD);
2284	oid = SYSCTL_ADD_NODE(NULL, SYSCTL_CHILDREN(vmd->vmd_oid), OID_AUTO,
2285	    "pidctrl", CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "");
2286	pidctrl_init_sysctl(&vmd->vmd_pid, SYSCTL_CHILDREN(oid));
2287
2288	vmd->vmd_inactive_threads = get_pageout_threads_per_domain(vmd);
2289}
2290
2291static void
2292vm_pageout_init(void)
2293{
2294	u_long freecount;
2295	int i;
2296
2297	/*
2298	 * Initialize some paging parameters.
2299	 */
2300	if (vm_cnt.v_page_count < 2000)
2301		vm_pageout_page_count = 8;
2302
2303	freecount = 0;
2304	for (i = 0; i < vm_ndomains; i++) {
2305		struct vm_domain *vmd;
2306
2307		vm_pageout_init_domain(i);
2308		vmd = VM_DOMAIN(i);
2309		vm_cnt.v_free_reserved += vmd->vmd_free_reserved;
2310		vm_cnt.v_free_target += vmd->vmd_free_target;
2311		vm_cnt.v_free_min += vmd->vmd_free_min;
2312		vm_cnt.v_inactive_target += vmd->vmd_inactive_target;
2313		vm_cnt.v_pageout_free_min += vmd->vmd_pageout_free_min;
2314		vm_cnt.v_interrupt_free_min += vmd->vmd_interrupt_free_min;
2315		vm_cnt.v_free_severe += vmd->vmd_free_severe;
2316		freecount += vmd->vmd_free_count;
2317	}
2318
2319	/*
2320	 * Set interval in seconds for active scan.  We want to visit each
2321	 * page at least once every ten minutes.  This is to prevent worst
2322	 * case paging behaviors with stale active LRU.
2323	 */
2324	if (vm_pageout_update_period == 0)
2325		vm_pageout_update_period = 600;
2326
2327	/*
2328	 * Set the maximum number of user-wired virtual pages.  Historically the
2329	 * main source of such pages was mlock(2) and mlockall(2).  Hypervisors
2330	 * may also request user-wired memory.
2331	 */
2332	if (vm_page_max_user_wired == 0)
2333		vm_page_max_user_wired = 4 * freecount / 5;
2334}
2335
2336/*
2337 *     vm_pageout is the high level pageout daemon.
2338 */
2339static void
2340vm_pageout(void)
2341{
2342	struct proc *p;
2343	struct thread *td;
2344	int error, first, i, j, pageout_threads;
2345
2346	p = curproc;
2347	td = curthread;
2348
2349	mtx_init(&vm_oom_ratelim_mtx, "vmoomr", NULL, MTX_DEF);
2350	swap_pager_swap_init();
2351	for (first = -1, i = 0; i < vm_ndomains; i++) {
2352		if (VM_DOMAIN_EMPTY(i)) {
2353			if (bootverbose)
2354				printf("domain %d empty; skipping pageout\n",
2355				    i);
2356			continue;
2357		}
2358		if (first == -1)
2359			first = i;
2360		else {
2361			error = kthread_add(vm_pageout_worker,
2362			    (void *)(uintptr_t)i, p, NULL, 0, 0, "dom%d", i);
2363			if (error != 0)
2364				panic("starting pageout for domain %d: %d\n",
2365				    i, error);
2366		}
2367		pageout_threads = VM_DOMAIN(i)->vmd_inactive_threads;
2368		for (j = 0; j < pageout_threads - 1; j++) {
2369			error = kthread_add(vm_pageout_helper,
2370			    (void *)(uintptr_t)i, p, NULL, 0, 0,
2371			    "dom%d helper%d", i, j);
2372			if (error != 0)
2373				panic("starting pageout helper %d for domain "
2374				    "%d: %d\n", j, i, error);
2375		}
2376		error = kthread_add(vm_pageout_laundry_worker,
2377		    (void *)(uintptr_t)i, p, NULL, 0, 0, "laundry: dom%d", i);
2378		if (error != 0)
2379			panic("starting laundry for domain %d: %d", i, error);
2380	}
2381	error = kthread_add(uma_reclaim_worker, NULL, p, NULL, 0, 0, "uma");
2382	if (error != 0)
2383		panic("starting uma_reclaim helper, error %d\n", error);
2384
2385	snprintf(td->td_name, sizeof(td->td_name), "dom%d", first);
2386	vm_pageout_worker((void *)(uintptr_t)first);
2387}
2388
2389/*
2390 * Perform an advisory wakeup of the page daemon.
2391 */
2392void
2393pagedaemon_wakeup(int domain)
2394{
2395	struct vm_domain *vmd;
2396
2397	vmd = VM_DOMAIN(domain);
2398	vm_domain_pageout_assert_unlocked(vmd);
2399	if (curproc == pageproc)
2400		return;
2401
2402	if (atomic_fetchadd_int(&vmd->vmd_pageout_wanted, 1) == 0) {
2403		vm_domain_pageout_lock(vmd);
2404		atomic_store_int(&vmd->vmd_pageout_wanted, 1);
2405		wakeup(&vmd->vmd_pageout_wanted);
2406		vm_domain_pageout_unlock(vmd);
2407	}
2408}
2409