In article <1993Aug11.131404.487@sadtler.com> rick@sadtler.com (Rick Morris) writes:
> In article <1993Aug4.124440.9555@sadtler.com> I wrote:
>> Question:  If all other processes are running with a nice
>> value of 0, does it make a difference if the background
>> process runs at a nice value of 4 or 19?
After reading through Rick's summary of responses, it seems that a lot of
people don't know the real answer to this question, so I thought I'd
post the details in an effort to avoid the spread of misinformation.
What I'm saying here is true for SunOS 4.1.x, or (I think) any BSD-based
system.
The nice value of a process is used in a formula for calculating process
priority.  The process priority is used by the scheduler to determine when
a process will run.  You can see the priority in the output of ps -l.
Nice values, as you know, range from -20 to 19.  Priorities range from 0 to
127, 0 being the highest.
The formula is something like
        p_usrpri = (p_cpu / 4) + PUSER + (2 * p_nice);
        if (p_flag | SFAVORED)
                p_userpri -= 20;
        if (p_rss >= maxrss && freemem < desfree)
                p_userpri += 8;
        if (p_userpri < 1)
                p_userpri = 1;
        else if (p_userpri > 127)
                p_userpri = 127;
p_cpu is incremented each tick that the process has executed, so the longer
it has been around, the lower the priority.
PUSER is 50, the base priority for a user process.
p_nice is the nice value.  You can see that there's no such thing as
"Processes with a nice of 19 never execute unless nothing else is running."
They simply get a lower priority, but may still get scheduled.
I'm not sure who sets the SFAVORED flag.  I know that if a process is
killed with SIGKILL or SIGTERM, and if p_nice is greater than zero, the
nice is reduced to zero.  This is different from SFAVORED, as far as I
know.
If a process has hit maximum resident set size and the system is low on
memory, it gets a lower priority.
Then, make sure that the priority is between 1 and 127, and we're off and
running.
Hope that helps clear up the confusion...  Note that there may be small
errors.  Most of this is from memory.
-- Mark Sirota, System and Network Manager Greenwich Associates, Greenwich Connecticut mark@greenwich.com, (203) 625-5060
This archive was generated by hypermail 2.1.2 : Fri Sep 28 2001 - 23:08:06 CDT