[prev in list] [next in list] [prev in thread] [next in thread]
List: linux-newbie
Subject: Re: why "need_resched" per process?
From: Rik van Riel <riel () surriel ! com>
Date: 2006-09-25 12:11:17
Message-ID: 4517C765.3040907 () surriel ! com
[Download RAW message or body]
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
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic