This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [patch v4 06/24] btrace: increase buffer size
- From: Jan Kratochvil <jan dot kratochvil at redhat dot com>
- To: Markus Metzger <markus dot t dot metzger at intel dot com>
- Cc: gdb-patches at sourceware dot org
- Date: Sun, 18 Aug 2013 21:06:02 +0200
- Subject: Re: [patch v4 06/24] btrace: increase buffer size
- References: <1372842874-28951-1-git-send-email-markus dot t dot metzger at intel dot com> <1372842874-28951-7-git-send-email-markus dot t dot metzger at intel dot com>
On Wed, 03 Jul 2013 11:14:16 +0200, Markus Metzger wrote:
> Try to allocate as much buffer as we can for each thread with a maximum
> of 4MB.
>
> 2013-07-03 Markus Metzger <markus.t.metzger@intel.com>
>
> * common/linux-btrace.c (linux_enable_btrace): Increase buffer.
Increase buffer size or Enlarge buffer.
>
>
> ---
> gdb/common/linux-btrace.c | 25 +++++++++++++++----------
> 1 files changed, 15 insertions(+), 10 deletions(-)
>
> diff --git a/gdb/common/linux-btrace.c b/gdb/common/linux-btrace.c
> index b874c84..4880f41 100644
> --- a/gdb/common/linux-btrace.c
> +++ b/gdb/common/linux-btrace.c
> @@ -420,7 +420,7 @@ struct btrace_target_info *
> linux_enable_btrace (ptid_t ptid)
> {
> struct btrace_target_info *tinfo;
> - int pid;
> + int pid, pg;
>
> tinfo = xzalloc (sizeof (*tinfo));
> tinfo->ptid = ptid;
> @@ -448,17 +448,22 @@ linux_enable_btrace (ptid_t ptid)
> if (tinfo->file < 0)
> goto err;
>
> - /* We hard-code the trace buffer size.
> - At some later time, we should make this configurable. */
> - tinfo->size = 1;
> - tinfo->buffer = mmap (NULL, perf_event_mmap_size (tinfo),
> - PROT_READ, MAP_SHARED, tinfo->file, 0);
> - if (tinfo->buffer == MAP_FAILED)
> - goto err_file;
> + /* We try to allocate as much buffer as we can get.
> + We could allow the user to specify the size of the buffer, but then
> + we'd leave this search for the maximum buffer size to him. */
> + for (pg = 10; pg >= 0; --pg)
> + {
> + /* The number of pages we request needs to be a power of two. */
> + tinfo->size = 1 << pg;
> + tinfo->buffer = mmap (NULL, perf_event_mmap_size (tinfo),
> + PROT_READ, MAP_SHARED, tinfo->file, 0);
> + if (tinfo->buffer == MAP_FAILED)
> + continue;
>
> - return tinfo;
> + return tinfo;
> + }
>
> - err_file:
> + /* We were not able to allocate any buffer. */
> close (tinfo->file);
>
> err:
> --
> 1.7.1