summaryrefslogtreecommitdiff
path: root/static/unix-v10/man5/share.5
diff options
context:
space:
mode:
Diffstat (limited to 'static/unix-v10/man5/share.5')
-rw-r--r--static/unix-v10/man5/share.5309
1 files changed, 309 insertions, 0 deletions
diff --git a/static/unix-v10/man5/share.5 b/static/unix-v10/man5/share.5
new file mode 100644
index 00000000..8b70bcd8
--- /dev/null
+++ b/static/unix-v10/man5/share.5
@@ -0,0 +1,309 @@
+.TH SHARE 5 SHARE
+.SH NAME
+Share \- Share Scheduling on Unix
+.SH SYNOPSIS
+Scheduling for a share of the machine
+.SH DESCRIPTION
+.I Share
+is a term covering those elements of the Unix kernel
+that affect the priority of a user's job.
+The basic scheduler in Unix schedules processes on a short term
+.I per-process
+basis.
+The
+.I "share scheduler"
+takes account of the history of a user's
+usage of the resources of the machine, and introduces a
+.I per-user
+long term scheduler.
+To do this, several variables are available to the scheduler in a per-user data
+structure known as an
+.I lnode.
+These record the intended share of the machine that the user should get,
+the recent history of resources consumed (``usage''),
+and the number of active (running) processes belonging to the user.
+Together, these affect the priority of each of the processes
+so that consumption of resources is adjusted toward the intended share.
+.P
+A user's
+.I usage
+is calculated by accumulating the charges incurred by use of resources,
+and decaying the result over time.
+The share scheduler affects the low-level scheduling of a user's processes
+by adding the user's
+.I usage
+divided by the allocated share,
+and multiplied by the active process count,
+to the priority of a process
+every time that process incurs a clock tick.
+Since the larger its priority,
+the less often a process is scheduled,
+processes belonging to users with high
+.IR usage ,
+low share, or many active processes
+will get a smaller share of resources.
+Note that at any one time, a user can use all of the resources available
+provided there is no competition from others.
+.SS "SCHEDULING GROUPS"
+.I lnodes
+are organised into a tree.
+For any particular sub-tree,
+the sub-tree's share of resources
+is divided up between the
+lnodes
+according to their relative shares.
+Sub-trees are also known as groups.
+The root
+.I lnode
+of the group is the group owner,
+and the leaf
+.I lnodes
+are its users.
+The total shares issued to the group include both those issued to the owner,
+as well as those issued to the users.
+Both owner and users are known as group members.
+The share of the group's resources
+allocated to any particular member of the group
+is in the proportion
+of the member's shares divided by the group's shares.
+.P
+The most interesting group is the one at the top of the tree,
+whose owner is ``root'',
+and its group members are the primary scheduling groups.
+\&``root''
+gets 100% of the available resources,
+which is split as above between the primary scheduling groups.
+.P
+Not all group owners represent real users,
+and in these cases there is no need to allocate them a share of resources.
+Such lnodes are indicated by the \s-1NOTSHARED\s0 flag,
+which causes the scheduler to ignore their shares when allocating
+their group's resources among its members.
+However,
+the long term
+.I charge
+of a group owner
+always includes all the charges levied on any member of its group.
+.P
+For reasons of system management,
+\&``root'' is always allocated 100% of the resources whenever it needs them.
+However, since all real users run on their own lnodes,
+the \s-1NOTSHARED\s0 flag is turned on for ``root'',
+and thus the primary scheduling groups
+have 100% of the available resources to share between themselves.
+However, for instrumentation purposes,
+``root''s
+.I charge
+only represents its own consumption of resources,
+but the total consumption of resources is accumulated in the
+.I kl_temp
+field of
+\&``root''s
+.I kern_lnode
+(see
+.IR lnode (5)
+for details of a
+.IR kern_lnode .)
+.SS CHARGES
+Charges making up the accumulating usage figure
+are levied by default as follows:-
+.RS
+.PD 0
+.TP "\w'system servicesXX'u"
+cpu
+100%
+.TP
+disk i/o
+0%
+.TP
+terminal i/o
+0%
+.TP
+system services
+0%
+.TP
+memory
+0%
+.PD
+.RE
+.P
+Memory charges are levied every scheduler cycle,
+but note that
+.I root
+is never charged for the memory it uses.
+These charges can be varied at different times of the day to reflect
+their popularity by using the command
+.IR charge (1).
+.P
+Usage is decayed at an exponential rate intended to ensure that
+all users of the machine get an equal chance to compete for resources
+over a particular time period.
+The default decay results in a
+.I half-life
+of 2 minutes.
+Use
+.IR charges (1)
+to find out the current decay rate and resource charges.
+.SS NICE
+The
+.IR nice (2)
+system call has a slightly different effect under Share.
+The
+.I nice
+parameter for a process now affects the rate at which its priority decays
+to a higher priority over time.
+.I Nicing
+a process will make it run slower,
+by reducing its effective share of the resources,
+but it may not run slower than another user's processes
+if that user has an even lower effective share of the resources.
+However, processes with a
+.I nice
+priority of 19 are guaranteed only to run when no other processes need the CPU.
+.I Niced
+processes are charged less for CPU time than normal processes,
+priority 19 processes are charged almost nothing for CPU time.
+.SS MANAGEMENT
+There are three flags that control the operation of the share scheduler.
+.TP "\w'LIMSHAREXX'u"
+.SM NOSHARE
+This turns off the scheduler.
+Since this will leave the parameters in a ``frozen'' state,
+it should probably only be done at system boot time.
+This flag is on by default when the system is booted,
+so the command
+.IR charge (1)
+must be run to activate the scheduler.
+Note that the program
+.IR login (8)
+won't attach users to their own
+.I lnodes
+while this flag is on,
+instead each user will remain attached to
+.IR root 's
+lnode.
+[Value 01]
+.TP
+.SM ADJGROUPS
+This flags turns on global group effective share adjustment.
+If any group is found to be getting less than
+.SM MINGSHARE
+times its allocated share,
+then the costs incurred by its members are reduced proportionately.
+[Value 02]
+.TP
+.SM LIMSHARE
+This flag deals with an
+``edge effect''
+that occurs when users first log in.
+It may be that their
+.I usage
+field has decayed to the point where they might temporarily be allocated
+nearly 100% of the machine.
+This flag limits any one user's share of the resources to no more than
+MAXUSHARE times their intended share.
+Of course, this still may be nearly 100%, if no other users are logged in,
+or the other users have very small shares.
+[Value 04]
+.P
+The
+.IR charge (1)
+command is used to manipulate these flags, and the charging parameters above.
+There are also other parameters which may be changed with
+.IR charge :-
+.TP "\w'MAXNORMUSAGEXX'u"
+.BI DecayRate
+The decay rate for users'
+.IR "active process rates" .
+This parameter is calculated by counting the active proceses
+per user every clock scan,
+and is decayed every clock scan.
+The usual value for this should result in a
+.I half-life
+for the rate of about 10 seconds.
+.TP
+.BI DecayUsage
+The decay rate for users' usages.
+This may be altered to produce a
+.I half-life
+for usage ranging from a few seconds to many days.
+.TP
+.BI Delta
+The run frequency of the share scheduler in seconds.
+The default value of 4 is fine.
+.TP
+.BI MAXGROUPS
+This sets the maximum group nesting (depth of scheduling tree) allowed,
+not including ``root''s group.
+.TP
+.BI MAXPRI
+Absolute upper bound for a process's priority.
+.TP
+.BI MAXUPRI
+Upper bound for normal processes' priorities.
+.I Idle
+processes run with priorities in the range
+\s-1MAXUPRI\s0 < \fIpri\fP < \s-1MAXPRI\s0.
+.TP
+.BI MAXUSAGE
+Upper bound for ``reasonable'' usages.
+Users with usages larger than this are grouped together and given
+process priorities
+which prevent them from interfering with ``normal'' users.
+The usage
+(multiplied by the
+.IR "active process rate" )
+is added to a running process's priority
+every time it incurs a clock tick,
+so the upper bound should be small enough not to overrun the value
+.SM MAXUPRI
+in too short a time interval
+.TP
+.BI MAXUSERS
+Sets the maximum number of users and groups that can be active.
+Note that this cannot exceed the maximum configured in the kernel.
+.TP
+.BI PriDecay
+This is the decay rate for maximally niced processes.
+A reasonable minimum value for the
+.I half-life
+is about 100 seconds,
+but see the comment for
+.SM MAXUSAGE
+above.
+.TP
+.BI PriDecayBase
+The base for calculating the decay rate
+for process priorities with normal \fInice\fP.
+This should be set low enough so that the priorities of processes
+for users with low share don't decay too quickly.
+A reasonable minimum value for the
+.I half-life
+is about 2 seconds.
+.SH FILES
+.PD 0
+.TP "\w'/usr/include/sys/charges.hXX'u"
+.IR /usr/include/sys/share.h
+Definition of scheduler parameters.
+.TP
+.IR /usr/include/sys/charges.h
+Default scheduler parameters.
+.PD
+.SH "SEE ALSO"
+charge(1),
+pl(1),
+rates(1),
+shstats(1),
+ustats(1),
+lnode(5),
+shares(5),
+login(8),
+sharer(8).
+.SH REFERENCES
+"Scheduling for a Share of the Machine", J Larmouth, SP&E, Vol 5 1975 pp 29-49
+.br
+"Scheduling for Immediate Turnaround", J Larmouth, SP&E, Vol 8 1978 pp 559-578
+.br
+"A Fair Share Scheduler", J Kay & P Lauder, TM 11275-870319-01
+.br
+"Share Scheduler Administration", P Lauder