swap.c 2.35 KB
Newer Older
1 2 3
/*
 *  linux/mm/swap.c
 *
Linus Torvalds's avatar
Linus Torvalds committed
4
 *  Copyright (C) 1991, 1992, 1993, 1994  Linus Torvalds
5 6 7
 */

/*
8 9 10
 * This file contains the default values for the opereation of the
 * Linux VM subsystem. Finetuning documentation can be found in
 * linux/Documentation/sysctl/vm.txt.
11
 * Started 18.12.91
Linus Torvalds's avatar
Linus Torvalds committed
12
 * Swap aging added 23.2.95, Stephen Tweedie.
13
 * Buffermem limits added 12.3.98, Rik van Riel.
14 15 16 17 18 19
 */

#include <linux/mm.h>
#include <linux/sched.h>
#include <linux/head.h>
#include <linux/kernel.h>
Linus Torvalds's avatar
Linus Torvalds committed
20
#include <linux/kernel_stat.h>
21 22 23
#include <linux/errno.h>
#include <linux/string.h>
#include <linux/stat.h>
Linus Torvalds's avatar
Linus Torvalds committed
24
#include <linux/swap.h>
Linus Torvalds's avatar
Linus Torvalds committed
25
#include <linux/fs.h>
Linus Torvalds's avatar
Linus Torvalds committed
26
#include <linux/swapctl.h>
Linus Torvalds's avatar
Linus Torvalds committed
27
#include <linux/pagemap.h>
Linus Torvalds's avatar
Linus Torvalds committed
28
#include <linux/init.h>
29

Linus Torvalds's avatar
Linus Torvalds committed
30
#include <asm/dma.h>
31
#include <asm/system.h> /* for cli()/sti() */
Linus Torvalds's avatar
Linus Torvalds committed
32
#include <asm/uaccess.h> /* for copy_to/from_user */
33
#include <asm/bitops.h>
Linus Torvalds's avatar
Linus Torvalds committed
34
#include <asm/pgtable.h>
35

Linus Torvalds's avatar
Linus Torvalds committed
36 37
/*
 * We identify three levels of free memory.  We never let free mem
38 39 40
 * fall below the freepages.min except for atomic allocations.  We
 * start background swapping if we fall below freepages.high free
 * pages, and we begin intensive swapping below freepages.low.
Linus Torvalds's avatar
Linus Torvalds committed
41
 *
42 43
 * These values are there to keep GCC from complaining. Actual
 * initialization is done in mm/page_alloc.c or arch/sparc(64)/mm/init.c.
Linus Torvalds's avatar
Linus Torvalds committed
44
 */
45 46
freepages_t freepages = {
	48,	/* freepages.min */
Linus Torvalds's avatar
Linus Torvalds committed
47 48
	96,	/* freepages.low */
	144	/* freepages.high */
49
};
Linus Torvalds's avatar
Linus Torvalds committed
50

Linus Torvalds's avatar
Linus Torvalds committed
51 52
/* We track the number of pages currently being asynchronously swapped
   out, so that we don't try to swap TOO many pages out at once */
Linus Torvalds's avatar
Linus Torvalds committed
53
atomic_t nr_async_pages = ATOMIC_INIT(0);
Linus Torvalds's avatar
Linus Torvalds committed
54

Linus Torvalds's avatar
Linus Torvalds committed
55 56
/*
 * Constants for the page aging mechanism: the maximum age (actually,
Linus Torvalds's avatar
Linus Torvalds committed
57
 * the maximum "youthfulness"); the quanta by which pages rejuvenate
Linus Torvalds's avatar
Linus Torvalds committed
58 59 60 61 62 63
 * and age; and the initial age for new pages. 
 */

swap_control_t swap_control = {
	20, 3, 1, 3,		/* Page aging */
	32, 4,			/* Aging cluster */
Linus Torvalds's avatar
Linus Torvalds committed
64
	8192, 8192,		/* Pageout and bufferout weights */
Linus Torvalds's avatar
Linus Torvalds committed
65 66
};

Linus Torvalds's avatar
Linus Torvalds committed
67 68
swapstat_t swapstats = {0};

69
buffer_mem_t buffer_mem = {
Linus Torvalds's avatar
Linus Torvalds committed
70 71 72
	3,	/* minimum percent buffer */
	10,	/* borrow percent buffer */
	30	/* maximum percent buffer */
73
};
Linus Torvalds's avatar
Linus Torvalds committed
74

Linus Torvalds's avatar
Linus Torvalds committed
75 76 77 78 79
buffer_mem_t page_cache = {
	10,	/* minimum percent page cache */
	30,	/* borrow percent page cache */
	75	/* maximum */
};
Linus Torvalds's avatar
Linus Torvalds committed
80 81 82 83 84 85

pager_daemon_t pager_daemon = {
	512,	/* base number for calculating the number of tries */
	SWAP_CLUSTER_MAX,	/* minimum number of tries */
	SWAP_CLUSTER_MAX,	/* do swap I/O in clusters of this size */
};