|
|
1.1 root 1: .TH SHARE 5 SHARE
2: .SH NAME
3: Share \- Share Scheduling on Unix
4: .SH SYNOPSIS
5: Scheduling for a share of the machine
6: .SH DESCRIPTION
7: .I Share
8: is a term covering those elements of the Unix kernel
9: that affect the priority of a user's job.
10: The basic scheduler in Unix schedules processes on a short term
11: .I per-process
12: basis.
13: The
14: .I "share scheduler"
15: takes account of the history of a user's
16: usage of the resources of the machine, and introduces a
17: .I per-user
18: long term scheduler.
19: To do this, several variables are available to the scheduler in a per-user data
20: structure known as an
21: .I lnode.
22: These record the intended share of the machine that the user should get,
23: the recent history of resources consumed (``usage''),
24: and the number of active (running) processes belonging to the user.
25: Together, these affect the priority of each of the processes
26: so that consumption of resources is adjusted toward the intended share.
27: .P
28: A user's
29: .I usage
30: is calculated by accumulating the charges incurred by use of resources,
31: and decaying the result over time.
32: The share scheduler affects the low-level scheduling of a user's processes
33: by adding the user's
34: .I usage
35: divided by the allocated share,
36: and multiplied by the active process count,
37: to the priority of a process
38: every time that process incurs a clock tick.
39: Since the larger its priority,
40: the less often a process is scheduled,
41: processes belonging to users with high
42: .IR usage ,
43: low share, or many active processes
44: will get a smaller share of resources.
45: Note that at any one time, a user can use all of the resources available
46: provided there is no competition from others.
47: .SS "SCHEDULING GROUPS"
48: .I lnodes
49: are organised into a tree.
50: For any particular sub-tree,
51: the sub-tree's share of resources
52: is divided up between the
53: lnodes
54: according to their relative shares.
55: Sub-trees are also known as groups.
56: The root
57: .I lnode
58: of the group is the group owner,
59: and the leaf
60: .I lnodes
61: are its users.
62: The total shares issued to the group include both those issued to the owner,
63: as well as those issued to the users.
64: Both owner and users are known as group members.
65: The share of the group's resources
66: allocated to any particular member of the group
67: is in the proportion
68: of the member's shares divided by the group's shares.
69: .P
70: The most interesting group is the one at the top of the tree,
71: whose owner is ``root'',
72: and its group members are the primary scheduling groups.
73: \&``root''
74: gets 100% of the available resources,
75: which is split as above between the primary scheduling groups.
76: .P
77: Not all group owners represent real users,
78: and in these cases there is no need to allocate them a share of resources.
79: Such lnodes are indicated by the \s-1NOTSHARED\s0 flag,
80: which causes the scheduler to ignore their shares when allocating
81: their group's resources among its members.
82: However,
83: the long term
84: .I charge
85: of a group owner
86: always includes all the charges levied on any member of its group.
87: .P
88: For reasons of system management,
89: \&``root'' is always allocated 100% of the resources whenever it needs them.
90: However, since all real users run on their own lnodes,
91: the \s-1NOTSHARED\s0 flag is turned on for ``root'',
92: and thus the primary scheduling groups
93: have 100% of the available resources to share between themselves.
94: However, for instrumentation purposes,
95: ``root''s
96: .I charge
97: only represents its own consumption of resources,
98: but the total consumption of resources is accumulated in the
99: .I kl_temp
100: field of
101: \&``root''s
102: .I kern_lnode
103: (see
104: .IR lnode (5)
105: for details of a
106: .IR kern_lnode .)
107: .SS CHARGES
108: Charges making up the accumulating usage figure
109: are levied by default as follows:-
110: .RS
111: .PD 0
112: .TP "\w'system servicesXX'u"
113: cpu
114: 100%
115: .TP
116: disk i/o
117: 0%
118: .TP
119: terminal i/o
120: 0%
121: .TP
122: system services
123: 0%
124: .TP
125: memory
126: 0%
127: .PD
128: .RE
129: .P
130: Memory charges are levied every scheduler cycle,
131: but note that
132: .I root
133: is never charged for the memory it uses.
134: These charges can be varied at different times of the day to reflect
135: their popularity by using the command
136: .IR charge (1).
137: .P
138: Usage is decayed at an exponential rate intended to ensure that
139: all users of the machine get an equal chance to compete for resources
140: over a particular time period.
141: The default decay results in a
142: .I half-life
143: of 2 minutes.
144: Use
145: .IR charges (1)
146: to find out the current decay rate and resource charges.
147: .SS NICE
148: The
149: .IR nice (2)
150: system call has a slightly different effect under Share.
151: The
152: .I nice
153: parameter for a process now affects the rate at which its priority decays
154: to a higher priority over time.
155: .I Nicing
156: a process will make it run slower,
157: by reducing its effective share of the resources,
158: but it may not run slower than another user's processes
159: if that user has an even lower effective share of the resources.
160: However, processes with a
161: .I nice
162: priority of 19 are guaranteed only to run when no other processes need the CPU.
163: .I Niced
164: processes are charged less for CPU time than normal processes,
165: priority 19 processes are charged almost nothing for CPU time.
166: .SS MANAGEMENT
167: There are three flags that control the operation of the share scheduler.
168: .TP "\w'LIMSHAREXX'u"
169: .SM NOSHARE
170: This turns off the scheduler.
171: Since this will leave the parameters in a ``frozen'' state,
172: it should probably only be done at system boot time.
173: This flag is on by default when the system is booted,
174: so the command
175: .IR charge (1)
176: must be run to activate the scheduler.
177: Note that the program
178: .IR login (8)
179: won't attach users to their own
180: .I lnodes
181: while this flag is on,
182: instead each user will remain attached to
183: .IR root 's
184: lnode.
185: [Value 01]
186: .TP
187: .SM ADJGROUPS
188: This flags turns on global group effective share adjustment.
189: If any group is found to be getting less than
190: .SM MINGSHARE
191: times its allocated share,
192: then the costs incurred by its members are reduced proportionately.
193: [Value 02]
194: .TP
195: .SM LIMSHARE
196: This flag deals with an
197: ``edge effect''
198: that occurs when users first log in.
199: It may be that their
200: .I usage
201: field has decayed to the point where they might temporarily be allocated
202: nearly 100% of the machine.
203: This flag limits any one user's share of the resources to no more than
204: MAXUSHARE times their intended share.
205: Of course, this still may be nearly 100%, if no other users are logged in,
206: or the other users have very small shares.
207: [Value 04]
208: .P
209: The
210: .IR charge (1)
211: command is used to manipulate these flags, and the charging parameters above.
212: There are also other parameters which may be changed with
213: .IR charge :-
214: .TP "\w'MAXNORMUSAGEXX'u"
215: .BI DecayRate
216: The decay rate for users'
217: .IR "active process rates" .
218: This parameter is calculated by counting the active proceses
219: per user every clock scan,
220: and is decayed every clock scan.
221: The usual value for this should result in a
222: .I half-life
223: for the rate of about 10 seconds.
224: .TP
225: .BI DecayUsage
226: The decay rate for users' usages.
227: This may be altered to produce a
228: .I half-life
229: for usage ranging from a few seconds to many days.
230: .TP
231: .BI Delta
232: The run frequency of the share scheduler in seconds.
233: The default value of 4 is fine.
234: .TP
235: .BI MAXGROUPS
236: This sets the maximum group nesting (depth of scheduling tree) allowed,
237: not including ``root''s group.
238: .TP
239: .BI MAXPRI
240: Absolute upper bound for a process's priority.
241: .TP
242: .BI MAXUPRI
243: Upper bound for normal processes' priorities.
244: .I Idle
245: processes run with priorities in the range
246: \s-1MAXUPRI\s0 < \fIpri\fP < \s-1MAXPRI\s0.
247: .TP
248: .BI MAXUSAGE
249: Upper bound for ``reasonable'' usages.
250: Users with usages larger than this are grouped together and given
251: process priorities
252: which prevent them from interfering with ``normal'' users.
253: The usage
254: (multiplied by the
255: .IR "active process rate" )
256: is added to a running process's priority
257: every time it incurs a clock tick,
258: so the upper bound should be small enough not to overrun the value
259: .SM MAXUPRI
260: in too short a time interval
261: .TP
262: .BI MAXUSERS
263: Sets the maximum number of users and groups that can be active.
264: Note that this cannot exceed the maximum configured in the kernel.
265: .TP
266: .BI PriDecay
267: This is the decay rate for maximally niced processes.
268: A reasonable minimum value for the
269: .I half-life
270: is about 100 seconds,
271: but see the comment for
272: .SM MAXUSAGE
273: above.
274: .TP
275: .BI PriDecayBase
276: The base for calculating the decay rate
277: for process priorities with normal \fInice\fP.
278: This should be set low enough so that the priorities of processes
279: for users with low share don't decay too quickly.
280: A reasonable minimum value for the
281: .I half-life
282: is about 2 seconds.
283: .SH FILES
284: .PD 0
285: .TP "\w'/usr/include/sys/charges.hXX'u"
286: .IR /usr/include/sys/share.h
287: Definition of scheduler parameters.
288: .TP
289: .IR /usr/include/sys/charges.h
290: Default scheduler parameters.
291: .PD
292: .SH "SEE ALSO"
293: charge(1),
294: pl(1),
295: rates(1),
296: shstats(1),
297: ustats(1),
298: lnode(5),
299: shares(5),
300: login(8),
301: sharer(8).
302: .SH REFERENCES
303: "Scheduling for a Share of the Machine", J Larmouth, SP&E, Vol 5 1975 pp 29-49
304: .br
305: "Scheduling for Immediate Turnaround", J Larmouth, SP&E, Vol 8 1978 pp 559-578
306: .br
307: "A Fair Share Scheduler", J Kay & P Lauder, TM 11275-870319-01
308: .br
309: "Share Scheduler Administration", P Lauder
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.