Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 11 Dec 2003 17:38:30 +1000 (EST)
From:      Andy Farkas <andyf@speednet.com.au>
To:        Jeff Roberson <jroberson@chesapeake.net>
Cc:        current@freebsd.org
Subject:   Re: ULE and current.
Message-ID:  <20031211172144.O15896@hewey.af.speednet.com.au>
In-Reply-To: <20031210230206.R4201-100000@mail.chesapeake.net>
References:  <20031210230206.R4201-100000@mail.chesapeake.net>

next in thread | previous in thread | raw e-mail | index | archive | help
Jeff Roberson wrote:

> Andy Farkas wrote:
>
> > The scheduling of nice processes seems to be broken:
>
> This is actually a problem in the load balancer.  It's not taking nice
> into consideration when attempting to balance the load.
>
> > team2# nice -7 sh -c "while :; do echo -n;done" &
> > team2# nice -7 sh -c "while :; do echo -n;done" &
> > team2# sleep 120; top -S
> >
> >   PID USERNAME   PRI NICE   SIZE    RES STATE  C   TIME   WCPU    CPU COMMAND
> >   675 root       133   -7  1576K   952K CPU1   1   1:52 75.78% 75.78% sh
> >   676 root       133   -7  1576K   952K RUN    1   1:39 73.44% 73.44% sh
> >    12 root       -16    0     0K    12K RUN    0  18:46 55.47% 55.47% idle: cpu0
> >    11 root       -16    0     0K    12K RUN    1   7:00  0.00%  0.00% idle: cpu1

Just to make it clear, I was expecting the above to be something like:

 sh on CPU0 using 100% cpu,
 sh on CPU1 using 100% cpu,
 idle: cpu0 to be 0%, and
 idle: cpu1 to be 0%.

> >
> > Adding a third nice process eliminates the idle time, but cpu% is still bad:
> >
> > team2# nice -7 sh -c "while :; do echo -n;done" &
> > team2# sleep 120; top -S
> >
> >   PID USERNAME   PRI NICE   SIZE    RES STATE  C   TIME   WCPU    CPU COMMAND
> >   705 root       133   -7  1576K   952K CPU0   0   1:53 100.78% 100.78% sh
> >   675 root       133   -7  1576K   952K RUN    1  12:12 51.56% 51.56% sh
> >   676 root       133   -7  1576K   952K RUN    1  11:30 49.22% 49.22% sh
> >   729 root        76    0  2148K  1184K CPU1   1   0:00  0.78%  0.78% top
> >    12 root       -16    0     0K    12K RUN    0  24:00  0.00%  0.00% idle: cpu0
> >    11 root       -16    0     0K    12K RUN    1   7:00  0.00%  0.00% idle: cpu1

And at this point I would expect something like:

 sh #0 using 66.3%,
 sh #1 using 66.3%,
 sh #2 using 66.3%,
 idle: cpu0 to be 0%,
 idle: cpu1 to be 0%.

> I agree that 100.78% is wrong.  Also, the long term balancer should be
> kicking one sh process off of the doubly loaded cpu every so often.  I'll
> look into this, thanks.

Could it be that the scheduler/balancer is confused by different idle
processes?  Why does 'systat -p' show 3 idle procs?? :

                    /0   /10  /20  /30  /40  /50  /60  /70  /80  /90  /100
root     idle: cpu0 XXXXXXXXXXXXXXXX
root     idle: cpu1 XXXXXXXXXXXXXXXX
             <idle> XXXXXXXXXXXXXXXX


So, where *I* get confused is that top(1) thinks that the system can be up
to 200% idle, whereas systat(1) thinks there are 3 threads each consuming
a third of 100% idleness... who is right?

>
> Cheers,
> Jeff
>

--

 :{ andyf@speednet.com.au

        Andy Farkas
    System Administrator
   Speednet Communications
 http://www.speednet.com.au/




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20031211172144.O15896>