Re: sched_yield() version 2.4.24

From: Richard B. Johnson
Date: Tue Mar 30 2004 - 12:12:51 EST


On Tue, 30 Mar 2004, Chris Friesen wrote:

> Richard B. Johnson wrote:
> > Anybody know why a task that does:
> >
> > for(;;)
> > sched_yield();
> >
> > Shows 100% CPU utiliization when there are other tasks that
> > are actually getting the CPU?
>
> What do the other tasks show for cpu in top?
>

Well in excess of 100% on a single-CPU system.

12:02pm up 1 day, 53 min, 4 users, load average: 2.54, 1.25, 0.90
34 processes: 31 sleeping, 3 running, 0 zombie, 0 stopped
CPU states: 65.8% user, 134.6% system, 0.0% nice, 0.0% idle
Mem: 322352K av, 101772K used, 220580K free, 0K shrd, 9836K buff
Swap: 1044208K av, 1044208K used, 0K free 20240K cached

PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND
7144 root 19 0 5564 5564 1444 R 0 82.5 1.7 2:27 client
7143 root 15 0 980 976 428 S 0 59.9 0.3 1:57 server
7142 root 18 0 1464 1464 1444 R 0 56.0 0.4 1:39 client
7163 root 11 0 568 564 432 R 0 1.9 0.1 0:00 top
[SNIPPED...sleeping tasks]

Here, one of the 'client' tasks is yielding its CPU time when it
is waiting on a semaphore from the first one.

> Maybe it's an artifact of the timer-based process sampling for cpu
> utilization, and it just happens to be running when the timer interrupt
> fires, so it keeps getting billed?
>
> Chris
>

I think somebody forgot to put something into the 'current' structure
when sys_sched_yield() gets called.

Cheers,
Dick Johnson
Penguin : Linux version 2.4.24 on an i686 machine (797.90 BogoMips).
Note 96.31% of all statistics are fiction.


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/