Hi, Currently, the task_t structure of the idle task is always allocated on CPU0, hence on node 0: while booting, for each CPU, CPU 0 calls fork_idle(), hence copy_process(), hence dup_task_struct(), hence alloc_task_struct(), hence kmem_cache_alloc(), which picks up memory from the allocation cache of the current CPU, i.e. on node 0.
This is a bad idea: every write needs be written back to node 0 at some time, so that node 0 can get a small bit busy especially when other nodes are idle. A solution would be to add to copy_process(), dup_task_struct(), alloc_task_struct() and kmem_cache_alloc() the node number on which allocation should be performed. This might also be useful if performing node load balancing at fork(): one could then allocate task_t directly on the new node. It might also be useful when allocating data for another node. Regards, Samuel - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

