This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch v4 06/24] btrace: increase buffer size


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]