Thanks, good to know.

But if I actually wanted per daemon priorities with settable
configuration in rc.conf.local how would I get that ? And I still feel
the default nice priority of 10 is rather a good idea.
Le lun. 3 sept. 2018 à 23:10, Antoine Jacoutot <ajacou...@openbsd.org> a écrit :
>
> On Mon, Sep 03, 2018 at 10:34:51PM +0200, Thomas de Grivel wrote:
> > Hello,
>
> Hi.
>
> > Following patch allows sysadmins to configure nice values for RC daemons.
> > Default nice value is set to 10 as I wish to prioritize interactive
> > applications over system daemons and I think most probably do too.
> > It is based on OpenBSD 6.3 but might apply easily to later releases.
> > Please let me know if it is of any interest to you.
>
> We already support that.
>
> Extract from rc.d(8):
>
>      daemon_class is a special read-only variable.  It is set to “daemon”
>      unless there is a login class configured in login.conf(5) with the same
>      name as the rc.d script itself, in which case it will be set to that
>      login class.  This allows setting many initial process properties, for
>      example environment variables, scheduling priority, and process limits
>      such as maximum memory use and number of files.
>
> Extract from login.conf(5):
>
>      priority           number                   Initial priority (nice)
>                                                  level.
>
> Cheers!
>
>
> > commit 1f4121df3ae31121d435571ffdbd93a20c1e8a07
> > Author: Thomas de Grivel <tho...@gmail.com>
> > Date:   Mon Sep 3 21:52:37 2018 +0200
> >
> >     Add a $daemon_nice parameter.
> >     If not overriden by the launched daemon the default nice value is 10.
> >     See nice(1) for more details.
> >
> > diff --git rc.d/rc.subr.orig rc.d/rc.subr
> > index 6c2f694..5f4fbe5 100644
> > --- rc.d/rc.subr.orig
> > +++ rc.d/rc.subr
> > @@ -49,6 +49,7 @@ _rc_write_runfile() {
> >   cat >${_RC_RUNFILE} <<EOF
> >  daemon_class=${daemon_class}
> >  daemon_flags=${daemon_flags}
> > +daemon_nice=${daemon_nice}
> >  daemon_rtable=${daemon_rtable}
> >  daemon_timeout=${daemon_timeout}
> >  daemon_user=${daemon_user}
> > @@ -170,7 +171,7 @@ _rc_parse_conf() {
> >  [ -n "${FUNCS_ONLY}" ] && return
> >
> >  rc_start() {
> > - ${rcexec} "${daemon} ${daemon_flags}"
> > + ${rcexec} "nice -n ${daemon_nice} ${daemon} ${daemon_flags}"
> >  }
> >
> >  rc_check() {
> > @@ -288,6 +289,7 @@ _RC_RUNFILE=${_RC_RUNDIR}/${_name}
> >  _rc_do _rc_parse_conf
> >
> >  eval _rcflags=\${${_name}_flags}
> > +eval _rcnice=\${${_name}_nice}
> >  eval _rcrtable=\${${_name}_rtable}
> >  eval _rcuser=\${${_name}_user}
> >  eval _rctimeout=\${${_name}_timeout}
> > @@ -295,6 +297,7 @@ eval _rctimeout=\${${_name}_timeout}
> >  # set default values; duplicated in rcctl(8)
> >  getcap -f /etc/login.conf ${_name} 1>/dev/null 2>&1 && 
> > daemon_class=${_name} ||
> >   daemon_class=daemon
> > +[ -z "${daemon_nice}" ] && daemon_nice=10
> >  [ -z "${daemon_rtable}" ] && daemon_rtable=0
> >  [ -z "${daemon_user}" ] && daemon_user=root
> >  [ -z "${daemon_timeout}" ] && daemon_timeout=30
> > @@ -304,6 +307,7 @@ getcap -f /etc/login.conf ${_name} 1>/dev/null
> > 2>&1 && daemon_class=${_name} ||
> >   unset _rcflags
> >
> >  [ -n "${_rcflags}" ] && daemon_flags=${_rcflags}
> > +[ -n "${_rcnice}" ] && daemon_nice=${_rcnice}
> >  [ -n "${_rcrtable}" ] && daemon_rtable=${_rcrtable}
> >  [ -n "${_rcuser}" ] && daemon_user=${_rcuser}
> >  [ -n "${_rctimeout}" ] && daemon_timeout=${_rctimeout}
> > @@ -315,7 +319,7 @@ if [ -n "${_RC_DEBUG}" ]; then
> >  fi
> >
> >  readonly daemon_class
> > -unset _rcflags _rcrtable _rcuser _rctimeout
> > +unset _rcflags _rcnice _rcrtable _rcuser _rctimeout
> >  pexp="${daemon}${daemon_flags:+ ${daemon_flags}}"
> >  rcexec="su -l -c ${daemon_class} -s /bin/sh ${daemon_user} -c"
> >  [ "${daemon_rtable}" -eq 0 ] ||
> >
> >
> > --
> >  Thomas de Grivel
> >
>
> --
> Antoine



-- 
 Thomas de Grivel
 http://b.lowh.net/billitch/

Reply via email to