On Fri, Jan 2, 2009 at 5:55 PM, Shyam Burkule <[email protected]> wrote:
> Hi All,
>
> In Understanding The Linux Kernel, 3rd edition I read that
> *scheduler_tick()* is invoked once every tick to perform some operations
Yes, it is still valid and happens. Looking into /proc/sched_debug:
CFS is confirmed.
Next:
Looking into kernel/timer.c:update_process_times():
/*
* Called from the timer interrupt handler to charge one tick to the current
* process. user_tick is 1 if the tick is user time, 0 for system.
*/
void update_process_times(int user_tick)
{
scheduler_tick();
>From above we know that timer tick triggered the function, and
scheduler_tick() is called.
Then using ftrace to analyse dynamically:
<idle>-0 [000] 4154504419.814143: scheduler_tick
<-update_process_times
gedit-26702 [001] 4154504419.814146: scheduler_tick
<-update_process_times
<idle>-0 [000] 4154504419.815139: scheduler_tick
<-update_process_times
gedit-26702 [001] 4154504419.815142: scheduler_tick
<-update_process_times
So yes, it is still called in the context of my gedit application.
> related to scheduling. I am confused here, how costly it would be to call
> the function after every tick? Does it really happened? If not, then how
> indication of process time slice exhausted(if any) comes to know??
>
>
In the past, preemption is triggered by the timer. But nowadays,
preemption is voluntary.
http://lwn.net/Articles/95334/
So why is it that we can still see timer based scheduling API like
scheduler_tick() called from timer interrupt?
I am confused too.
--
Regards,
Peter Teoh
--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to [email protected]
Please read the FAQ at http://kernelnewbies.org/FAQ