diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-26 16:38:00 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-26 16:38:00 -0400 |
| commit | 97d5c458cfa039d857301e1ca7d5af3beb37131d (patch) | |
| tree | b460cd850d0537eb71806ba30358840377b27688 /static/v10/man5/lnode.5 | |
| parent | b89dc2331a50c63f8b33272a5c4c61ab98abdaa3 (diff) | |
build: Better Build System
Diffstat (limited to 'static/v10/man5/lnode.5')
| -rw-r--r-- | static/v10/man5/lnode.5 | 166 |
1 files changed, 0 insertions, 166 deletions
diff --git a/static/v10/man5/lnode.5 b/static/v10/man5/lnode.5 deleted file mode 100644 index ea07da47..00000000 --- a/static/v10/man5/lnode.5 +++ /dev/null @@ -1,166 +0,0 @@ -.TH LNODE 5 SHARE -.SH NAME -lnode \- kernel user shares structure -.SH SYNOPSIS -.B "#include <sys/lnode.h>" -.SH DESCRIPTION -The kernel -.I lnode -structure is used to maintain per-user shares while a user has processes running. -.I Lnodes -are installed by -.IR login (8) -via the -.IR limits (2) -system call when a new user logs into the system. -.I Dead -lnodes are removed by -.IR sharer (8) -when the last process for a user exits. -The layout as given in the include file is: -.PP -.nf -.ift .ta 1.1i 1.9i -.ifn .ta 24n 35n -/* - * Structure for active shares - */ - -typedef short uid_t; - -.ift .ta .3i 1.1i 1.9i -.ifn .ta 2n +10n +13n -struct lnode -{ - uid_t l_uid; /* real uid for owner of this node */ - u_short l_flags; /* (see below) */ - u_short l_shares; /* allocated shares */ - uid_t l_group; /* uid for this node's scheduling group */ - float l_usage; /* decaying accumulated costs */ - float l_charge; /* long term accumulated costs */ -}; - -/* - * Meaning of bits in l_flags - */ - -.ift .ta .6i 1.8i 2.4i -.ifn .ta +8n +11n +6n -#define \s-1ACTIVELNODE\s0 001 /* this lnode is on active list */ -#define \s-1LASTREF\s0 002 /* set for L_DEADLIM if last reference to this lnode */ -#define \s-1DEADGROUP\s0 004 /* group account is dead */ -#define \s-1CHNGDLIMITS\s0 020 /* this lnode's limits have changed */ -#define \s-1NOTSHARED\s0 040 /* this lnode does not get a share of the m/c */ -.DT -.fi -.PP -.I Lnodes -are grouped together in a tree. -At any level in the tree, -the share of resources allocated to an individual lnode is that -proportion of the group's resources -represented by the ratio of the lnode's shares -to the total shares of all the lnodes in the group. -The -.I l_group -field represents the -.I uid -of the group leader's lnode. -The top of the tree is represented by -.IR root 's -lnode, which is initialised at system boot time. -.PP -The -.SM LASTREF -bit in -.I l_flags -is set for the -.SM L_DEADLIM -request to the -.IR limits (2) -system call if the last process referencing the -.I lnode -has exited. -The -.SM DEADGROUP -bit is set if this -.I lnode -was the last one referencing it's group. -Dead groups are collected via the -.SM L_DEADGROUP -request to the -.IR limits (2) -system call. -.PP -The -.I l_charge -field is the long term accumulated charge for consumption of resources. -For group leaders, it represents the charge for the whole group. -The -.I l_usage -field is a number representing recent usage of resources, -and is used by the scheduler to determine current share of resources. -.SS kern_lnode -Each user's -.I lnode -is embedded in a larger structure to hold temporary values for use -by the scheduler, known as a -.IR kern_lnode . -The layout as given in the include file is: -.PP -.nf -.ift .ta 1.9i -.ifn .ta 28n -/* - * Kernel user share structure - */ - -typedef struct kern_lnode * KL_p; - -.ift .ta .3i 1.1i 1.9i -.ifn .ta 2n +13n +13n -struct kern_lnode -{ - KL_p kl_next; /* next in active list */ - KL_p kl_prev; /* prev in active list */ - KL_p kl_parent; /* group parent */ - KL_p kl_gnext; /* next in parent's group */ - KL_p kl_ghead; /* start of this group */ - struct lnode kl; /* user parameters (as above) */ - float kl_gshares; /* total shares for this group */ - float kl_eshare; /* effective share for this group */ - float kl_norms; /* share**2 for this lnode */ - float kl_usage; /* kl.l_usage / kl_norms */ - float kl_rate; /* active process rate for this lnode */ - float kl_temp; /* temporary for scheduler */ - float kl_spare; /* <spare> */ - u_long kl_cost; /* cost accumulating in current period */ - u_long kl_muse; /* memory pages used */ - u_short kl_refcount; /* processes attached to this lnode */ - u_short kl_children; /* lnodes attached to this lnode */ -}; -.DT -.fi -.PP -Every process has a pointer to its owner's -.I kern_lnode -called -.I p_lnode. -Every time a process incurs a clock tick, -the value -.I p_lnode\->kl_usage -multipied by -.I p_lnode\->kl_rate -is added to its scheduling priority in -.IR p_sharepri . -.I p_sharepri -is decayed by the clock by an amount depending on the process's -.I p_nice -value \(em the ``nicer'' the process, the slower the decay. -This value is copied into the low-level scheduler's priority in -.I p_pri -whenever the process is run in user space. -.SH "SEE ALSO" -limits(2), -share(5), -sharer(8). |
