ULE and current.
Jeff Roberson
jroberson at chesapeake.net
Thu Dec 11 01:13:19 PST 2003
On Thu, 11 Dec 2003, Andy Farkas wrote:
> 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%.
Yes, I agree, I'm confused about why this is happening myself. I'll look
into it soon.
>
> > >
> > > 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%.
This is actually very difficult to get exactly right. Since all processes
want to run all the time, you have to force alternating pairs to share the
second cpu. Otherwise they wont run for an even amount of time.
>
> > 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?? :
>
The vm has an idle thread that zeros pages. This is the third thread.
> /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?
Both, they just display different statistics. ;-)
>
> >
> > Cheers,
> > Jeff
> >
>
> --
>
> :{ andyf at speednet.com.au
>
> Andy Farkas
> System Administrator
> Speednet Communications
> http://www.speednet.com.au/
>
>
More information about the freebsd-current
mailing list