xref: /csrg-svn/sys/vax/include/vmparam.h (revision 9119)
1*9119Ssam /*	vmparam.h	4.1	82/11/09	*/
2*9119Ssam 
3*9119Ssam /*
4*9119Ssam  * Machine dependent constants for VAX
5*9119Ssam  */
6*9119Ssam /*
7*9119Ssam  * USRTEXT is the start of the user text/data space, while USRSTACK
8*9119Ssam  * is the top (end) of the user stack.  LOWPAGES and HIGHPAGES are
9*9119Ssam  * the number of pages from the beginning of the P0 region to the
10*9119Ssam  * beginning of the text and from the beginning of the P1 region to the
11*9119Ssam  * beginning of the stack respectively.
12*9119Ssam  */
13*9119Ssam 					/* number of ptes per page */
14*9119Ssam #define	USRTEXT		0
15*9119Ssam #define	USRSTACK	(0x80000000-UPAGES*NBPG)
16*9119Ssam 					/* Start of user stack */
17*9119Ssam #define	P1PAGES		0x200000	/* number of pages in P1 region */
18*9119Ssam #define	LOWPAGES	0
19*9119Ssam #define	HIGHPAGES	UPAGES
20*9119Ssam 
21*9119Ssam /*
22*9119Ssam  * Virtual memory related constants
23*9119Ssam  */
24*9119Ssam #define	SLOP	32
25*9119Ssam #define	MAXTSIZ		(6*2048-SLOP)		/* max text size (clicks) */
26*9119Ssam #ifndef MAXDSIZ
27*9119Ssam #define	MAXDSIZ		(12*1024-32-SLOP)	/* max data size (clicks) */
28*9119Ssam #endif
29*9119Ssam #define	MAXSSIZ		(12*1024-32-SLOP)	/* max stack size (clicks) */
30*9119Ssam 
31*9119Ssam /*
32*9119Ssam  * Sizes of the system and user portions of the system page table.
33*9119Ssam  */
34*9119Ssam /* SYSPTSIZE IS SILLY; IT SHOULD BE COMPUTED AT BOOT TIME */
35*9119Ssam #define	SYSPTSIZE	(12*NPTEPG)
36*9119Ssam #define	USRPTSIZE 	(8*NPTEPG)
37*9119Ssam 
38*9119Ssam /*
39*9119Ssam  * The size of the clock loop.
40*9119Ssam  */
41*9119Ssam #define	LOOPPAGES	(maxfree - firstfree)
42*9119Ssam 
43*9119Ssam /*
44*9119Ssam  * The time for a process to be blocked before being very swappable.
45*9119Ssam  * This is a number of seconds which the system takes as being a non-trivial
46*9119Ssam  * amount of real time.  You probably shouldn't change this;
47*9119Ssam  * it is used in subtle ways (fractions and multiples of it are, that is, like
48*9119Ssam  * half of a ``long time'', almost a long time, etc.)
49*9119Ssam  * It is related to human patience and other factors which don't really
50*9119Ssam  * change over time.
51*9119Ssam  */
52*9119Ssam #define	MAXSLP 		20
53*9119Ssam 
54*9119Ssam /*
55*9119Ssam  * A swapped in process is given a small amount of core without being bothered
56*9119Ssam  * by the page replacement algorithm.  Basically this says that if you are
57*9119Ssam  * swapped in you deserve some resources.  We protect the last SAFERSS
58*9119Ssam  * pages against paging and will just swap you out rather than paging you.
59*9119Ssam  * Note that each process has at least UPAGES+CLSIZE pages which are not
60*9119Ssam  * paged anyways (this is currently 8+2=10 pages or 5k bytes), so this
61*9119Ssam  * number just means a swapped in process is given around 25k bytes.
62*9119Ssam  * Just for fun: current memory prices are 4600$ a megabyte on VAX (4/22/81),
63*9119Ssam  * so we loan each swapped in process memory worth 100$, or just admit
64*9119Ssam  * that we don't consider it worthwhile and swap it out to disk which costs
65*9119Ssam  * $30/mb or about $0.75.
66*9119Ssam  */
67*9119Ssam #define	SAFERSS		32		/* nominal ``small'' resident set size
68*9119Ssam 					   protected against replacement */
69*9119Ssam 
70*9119Ssam /*
71*9119Ssam  * DISKRPM is used to estimate the number of paging i/o operations
72*9119Ssam  * which one can expect from a single disk controller.
73*9119Ssam  */
74*9119Ssam #define	DISKRPM		60
75*9119Ssam 
76*9119Ssam /*
77*9119Ssam  * Klustering constants.  Klustering is the gathering
78*9119Ssam  * of pages together for pagein/pageout, while clustering
79*9119Ssam  * is the treatment of hardware page size as though it were
80*9119Ssam  * larger than it really is.
81*9119Ssam  *
82*9119Ssam  * KLMAX gives maximum cluster size in CLSIZE page (cluster-page)
83*9119Ssam  * units.  Note that KLMAX*CLSIZE must be <= DMMIN in dmap.h.
84*9119Ssam  */
85*9119Ssam 
86*9119Ssam #define	KLMAX	(32/CLSIZE)
87*9119Ssam #define	KLSEQL	(16/CLSIZE)		/* in klust if vadvise(VA_SEQL) */
88*9119Ssam #define	KLIN	(8/CLSIZE)		/* default data/stack in klust */
89*9119Ssam #define	KLTXT	(4/CLSIZE)		/* default text in klust */
90*9119Ssam #define	KLOUT	(32/CLSIZE)
91*9119Ssam 
92*9119Ssam /*
93*9119Ssam  * KLSDIST is the advance or retard of the fifo reclaim for sequential
94*9119Ssam  * processes data space.
95*9119Ssam  */
96*9119Ssam #define	KLSDIST	3		/* klusters advance/retard for seq. fifo */
97