skin...@britvault.co.uk wrote:
>On 2013-12-19 Thu 13:43 PM |, Craig R. Skinner wrote:
>> Enhance rc.d/rc.subr with lowered/raised daemon running priority.
>> 
>
>Comments/testing observations/?

This is not the purpose nor responsibility off the rc.d scripts.

/Alexander

>
>ksh syntax used (which works with /bin/sh & bin/ksh being the same
>binary), but dinnae ken if that's "wrong"... for rc* stuff.
>
>
>> Use renice as simple nice didn't always work on daemons started in
>the
>> background. Niceness level sanity checked, defaulting to 10.
>> 
>> Index: rc.subr
>> ===================================================================
>> RCS file: /cvs/src/etc/rc.d/rc.subr,v
>> retrieving revision 1.70
>> diff -u -u -p -r1.70 rc.subr
>> --- rc.subr  11 Jul 2013 09:34:33 -0000      1.70
>> +++ rc.subr  19 Dec 2013 13:17:45 -0000
>> @@ -104,6 +104,25 @@ rc_wait() {
>>      return 1
>>  }
>>  
>> +rc_reprioritise()
>> +{
>> +    [[ ${rc_renice} != 'YES' ]] &&
>> +    {
>> +            for _renice_level in $(jot 40 20 -20)
>> +            do
>> +                    [[ ${rc_renice} == ${_renice_level} ]] &&
>> +                    {
>> +                            _scheduling_priority=${rc_renice}
>> +                            break
>> +                    }
>> +            done
>> +    }
>> +
>> +    [[ -z ${_scheduling_priority} ]] && _scheduling_priority='10'
>> +
>> +    renice -n ${_scheduling_priority} -p $(pgrep -f "^${pexp}")
>> +}
>> +
>>  rc_cmd() {
>>      local _bg _n
>>  
>> @@ -136,6 +155,17 @@ rc_cmd() {
>>              fi
>>              [ -z "${INRC}" ] && rc_do rc_check && exit 0
>>              echo $_n "${INRC:+ }${_name}"
>> +
>> +            [[ ${rc_renice} == 'NO' ]] && unset rc_renice
>> +            [[ -n ${rc_renice} ]] &&
>> +            {
>> +                    printf "%d" ${rc_renice} > /dev/null 2>&1 &&
>> +                    {
>> +                            rc_renice=$(printf "%d" ${rc_renice})
>> +                            [[ ${rc_renice} -eq 0 ]] && unset rc_renice
>> +                    }
>> +            }
>> +
>>              while true; do  # no real loop, only needed to break
>>                      if type rc_pre >/dev/null; then
>>                              rc_do rc_pre || break
>> @@ -148,6 +178,7 @@ rc_cmd() {
>>                              rc_do rc_wait start || break
>>                      fi
>>                      rc_do rc_write_runfile
>> +                    [[ -n ${rc_renice} ]] && rc_do rc_reprioritise
>>                      rc_exit ok
>>              done
>>              # handle failure
>> 

Reply via email to