On Thu, 25 Sep 2008, Masami Hiramatsu wrote:
Hi Steven,
Steven Rostedt wrote:This version has been cleaned up a bit. I've been running it asThank you for your great work.
a back end to ftrace, and it has been handling pretty well.
It seems good to me(especially, encapsulating events :)).
Thanks!
I have one request of enhancement.
+static struct ring_buffer_per_cpu *[...]
+ring_buffer_allocate_cpu_buffer(struct ring_buffer *buffer, int cpu)
+{
+ cpu_buffer->pages = kzalloc_node(ALIGN(sizeof(void *) * pages,Here, you are using a slab object for page managing array,
+ cache_line_size()), GFP_KERNEL,
+ cpu_to_node(cpu));
the largest object size is 128KB(x86-64), so it can contain
16K pages = 64MB.
As I had improved relayfs, in some rare case(on 64bit arch),
we'd like to use larger buffer than 64MB.
http://sourceware.org/ml/systemtap/2008-q2/msg00103.html
So, I think similar hack can be applicable.
Would it be acceptable for the next version?
I would like to avoid using vmalloc as much as possible, but I do see the limitation here. Here's my compromise.
Instead of using vmalloc if the page array is greater than one page, how about using vmalloc if the page array is greater than KMALLOC_MAX_SIZE?
This would let us keep the vmap area free unless we have no choice.
-- Steve