ps: Add OOM and OOMADJ fields

top has had the OOMs and OOMa fields since 2011. Ten years its
probably time that ps had these fields added too.

ps output options have oom and oomadj for OOM Score and OOM Adjustment
respectively.

References:
 procps-ng/procps#198
 commit 367fd902da
 https://www.freelists.org/post/procps/PATCH-12-Add-missed-oom-support-to-libproc
This commit is contained in:
Craig Small 2021-03-05 17:22:29 +11:00
parent add01998e4
commit 9ddbc82000
5 changed files with 28 additions and 1 deletions

1
NEWS
View File

@ -2,6 +2,7 @@ procps-ng-NEXT
---------------
* Rename pwait to pidwait
* library: renamed to libproc-2 and reset to 0:0:0
* ps: Add OOM and OOMADJ fields issue #198
procps-ng-3.3.17
---------------

View File

@ -116,6 +116,8 @@ makEXT(NS_NET)
makEXT(NS_PID)
makEXT(NS_USER)
makEXT(NS_UTS)
makEXT(OOM_ADJ)
makEXT(OOM_SCORE)
makEXT(PRIORITY)
makEXT(PRIORITY_RT)
makEXT(PROCESSOR)

View File

@ -103,6 +103,8 @@ makREL(NS_NET)
makREL(NS_PID)
makREL(NS_USER)
makREL(NS_UTS)
makREL(OOM_ADJ)
makREL(OOM_SCORE)
makREL(PRIORITY)
makREL(PRIORITY_RT)
makREL(PROCESSOR)

View File

@ -704,6 +704,15 @@ setREL2(NICE,SCHED_CLASS)
return snprintf(outbuf, COLWID, "%d", rSv(NICE, s_int, pp));
}
static int pr_oom_adj(char *restrict const outbuf, const proc_t *restrict const pp){
setREL1(OOM_ADJ)
return snprintf(outbuf, COLWID, "%d", rSv(OOM_ADJ, s_int, pp));
}
static int pr_oom(char *restrict const outbuf, const proc_t *restrict const pp){
setREL1(OOM_SCORE)
return snprintf(outbuf, COLWID, "%d", rSv(OOM_SCORE, s_int, pp));
}
// HP-UX "cls": RT RR RR2 ???? HPUX FIFO KERN
// Solaris "class": SYS TS FX IA RT FSS (FIFO is RR w/ Inf quant)
// FIFO+RR share RT; FIFO has Inf quant
@ -1634,6 +1643,8 @@ static const format_struct format_array[] = { /*
{"numa", "NUMA", pr_numa, PIDS_PROCESSOR_NODE, 4, XXX, AN|RIGHT},
{"nvcsw", "VCSW", pr_nop, PIDS_noop, 5, XXX, AN|RIGHT},
{"nwchan", "WCHAN", pr_nop, PIDS_noop, 6, XXX, TO|RIGHT},
{"oom", "OOM", pr_oom, PIDS_OOM_SCORE, 4, XXX, TO|RIGHT},
{"oomadj", "OOMADJ", pr_oom_adj, PIDS_OOM_ADJ, 5, XXX, TO|RIGHT},
{"opri", "PRI", pr_opri, PIDS_PRIORITY, 3, SUN, TO|RIGHT},
{"osz", "SZ", pr_nop, PIDS_noop, 2, SUN, PO|RIGHT},
{"oublk", "OUBLK", pr_nop, PIDS_noop, 5, BSD, AN|RIGHT}, /*oublock*/

13
ps/ps.1
View File

@ -4,7 +4,7 @@
.\" Quick hack conversion by Albert Cahalan, 1998.
.\" Licensed under version 2 of the Gnu General Public License.
.\"
.TH PS "1" "2020-06-04" "procps-ng" "User Commands"
.TH PS "1" "2021-03-05" "procps-ng" "User Commands"
.\"
.\" To render this page:
.\" groff -t -b -man -X -P-resolution -P100 -Tps ps.1 &
@ -1421,6 +1421,17 @@ address of the kernel function where the process is sleeping (use
if you want the kernel function name).
T}
oom OOM T{
Out of Memory Score. The value, ranging from 0 to +1000, used to select
task(s) to kill when memory is exhausted.
T}
oomadj OOMADJ T{
Out of Memory Adjustment Factor. The value is added to the current out of
memory score which is then used to determine which task to kill when memory
is exhausted.
T}
ouid OWNER T{
displays the Unix user identifier of the owner of the session of a process,
if systemd support has been included.