Messages in this thread | | | Date | Fri, 26 Sep 2008 17:05:26 -0700 | From | Mike Travis <> | Subject | Re: [PATCH v6] Unified trace buffer |
| |
Steven Rostedt wrote: > On Fri, 26 Sep 2008, Mike Travis wrote: > >> Peter Zijlstra wrote: >>> On Fri, 2008-09-26 at 14:05 -0400, Steven Rostedt wrote: >>>> +struct ring_buffer { >>>> + unsigned long size; >>>> + unsigned pages; >>>> + unsigned flags; >>>> + int cpus; >>>> + atomic_t record_disabled; >>>> + >>>> + struct mutex mutex; >>>> + >>>> + /* FIXME: this should be online CPUS */ >>>> + struct ring_buffer_per_cpu *buffers[NR_CPUS]; >>> actually nr_possible makes sense, and you might consider always >>> allocating buffers (and keeping them for offlined cpus) to avoid massive >>> allocations/frees cpu-hotplug events. >>> >>> Mike Travis has been going over the kernel removing constructs like >>> this, and replacing them with dynamically allocated arrays of >>> nr_possible. >>> >>>> +}; >> The other thing to consider is using a percpu variable. > > This structure is allocated on request. > > -- Steve
Ahh, then it would need the yet to be added cpu_alloc() from Christoph.
Your best bet then is to allocate based on nr_cpu_ids.
Cheers, Mike
| |