On Tue, Sep 04, 2018 at 04:58:53AM +0200, Thomas de Grivel wrote:
> 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
You would do what the man page instructs you to do in login.conf:
mydaemon1:\
:priority=10:\
:tc=daemon:
mydaemon2:\
:priority=5:\
:tc=daemon:
etc.
Where mydaemon1 and mydaemon2 each matches an rc.d script name under /etc/rc.d/
> the default nice priority of 10 is rather a good idea.
I disagree.
> Le lun. 3 sept. 2018 à 23:10, Antoine Jacoutot <[email protected]> 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 <[email protected]>
> > > 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/
>
--
Antoine