Re: [RFC, PATCH] kernel/rcu: add kfree_rcu
From: Manfred Spraul
Date: Sun Jan 04 2009 - 07:22:18 EST
Lai Jiangshan wrote:
I have not posted it. -:)
Could you post it?
Paul: What would break if we stop processing rcu entries in (cpu) order?
The head->func(head) in rcu_do_batch() is probably a nightmare for the
branch target predictor.
What about:
- shrinking struct rcu_head to just a pointer (let's start with the goodie)
- Adding a register_rcu_callback() function.
It allocates the per-cpu storage for the rcu grace period lists.
Seperate lists for each registered callback - thus no need to copy the
callback target into each rcu_head structure.
It returns a pointer/handle to these lists.
- call_rcu gets that handle instead of the plain function pointer.
- rcu_do_batch enumerates all registered callbacks. Thus first all
callback_struct->func(head) calls for the first registered callback,
then the calls for the 2nd callback, etc.
Better for the icache, better for the branch predictor.
Paul: Do you have a test case that is suitable for benchmarking rcu?
Any workloads were rcu appears significantly in oprofile?
And: Do you know how many rcu entries are typically alive? How much
memory is used for the function pointers?
--
Manfred
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/