All of lore.kernel.org
 help / color / mirror / Atom feed
* why "need_resched" per process?
@ 2006-09-25  9:43 Daniel Rodrick
  2006-09-25 12:11 ` Rik van Riel
  0 siblings, 1 reply; 2+ messages in thread
From: Daniel Rodrick @ 2006-09-25  9:43 UTC (permalink / raw)
  To: Linux Newbie, kernelnewbies

Hi,

I was determining a reason for the need_resched flag to be per process
rather than being a global variable. I read that the sole reason is
for performance.

I could not understand how would having it (need_resched) per process
result in a better performance? Having it as a global variable in the
kernel address space would be just a matter of getting the value at a
known address.

On the other hand, having a per process copy sure results in
unecessary memory occupancy.

Thanks,

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

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: why "need_resched" per process?
  2006-09-25  9:43 why "need_resched" per process? Daniel Rodrick
@ 2006-09-25 12:11 ` Rik van Riel
  0 siblings, 0 replies; 2+ messages in thread
From: Rik van Riel @ 2006-09-25 12:11 UTC (permalink / raw)
  To: Daniel Rodrick; +Cc: Linux Newbie, kernelnewbies

Daniel Rodrick wrote:
> Hi,
> 
> I was determining a reason for the need_resched flag to be per process
> rather than being a global variable. I read that the sole reason is
> for performance.
> 
> I could not understand how would having it (need_resched) per process
> result in a better performance? Having it as a global variable in the
> kernel address space would be just a matter of getting the value at a
> known address.
> 
> On the other hand, having a per process copy sure results in
> unecessary memory occupancy.

1) not every CPU needs to reschedule simultaneously, think
    about an 8-cpu core SMP system where one of the current
    tasks needs to reschedule

2) the cacheline with the current task_struct pointer in
    it is probably in the CPU's L2 cache, since it is used
    very frequently - a global variable would probably not
    be in the CPU cache

3) the thread struct (IIRC need_resched lives there, please
    correct me if I misremember) is the first few bytes of a
    task's kernel thread, so it doesn't really take any extra
    memory

-- 
"You don't have to be crazy to do this... but it helps." -- Bob Ross
-
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2006-09-25 12:11 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-09-25  9:43 why "need_resched" per process? Daniel Rodrick
2006-09-25 12:11 ` Rik van Riel

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.