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>