在Linux内核中,为什么不为每个CPU而不是每个线程记录TIF_NEED_RESCHED标志?

时间:2012-04-18 03:25:39

标签: linux-kernel

在linux内核2.6.11中,TIF_NEED_RESCHED标志记录在每个任务的thread_info结构中。

我搜索了内核并发现它只能由CPU上的当前线程自行设置。那么为什么不将TIF_NEED_RESCHED放在每个CPU结构中而不是每个thread_info中呢?

如果此标志仅用于显示此cpu上的当前线程需要schedule(),那么我想也许可以为每个CPU而不是每个线程记录它?

感谢〜

1 个答案:

答案 0 :(得分:1)

我没有写,所以我不知道我认为是不是原因。

thread_info在内核中非常容易访问。在这种情况下,它相当于每CPU数据 它用于指示需要重新调度,并且仅保留在定时器中断和实际重新调度之间。很明显,运行过程不会在两者之间发生变化,而thread_info上的设置数据相当于设置per-cpu。

如果您担心内存消耗,那么每个进程一位是一个非常小的担忧。考虑到标志带或不带有32位,它甚至更小。