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/