Replace malloc with alloc in hot paths for improved performance. Signed-off-by: Santosh Jodh <santosh.jodh@citrix.com> diff -r e2722b24dc09 -r 4952090d35e0 tools/libxc/xc_linux_osdep.c --- a/tools/libxc/xc_linux_osdep.c Thu Jan 26 17:43:31 2012 +0000 +++ b/tools/libxc/xc_linux_osdep.c Mon Jan 30 11:02:32 2012 -0800 @@ -242,7 +242,7 @@ static void *linux_privcmd_map_foreign_b * IOCTL_PRIVCMD_MMAPBATCH_V2 is not supported - fall back to * IOCTL_PRIVCMD_MMAPBATCH. */ - xen_pfn_t *pfn = malloc(num * sizeof(*pfn)); + xen_pfn_t *pfn = alloca(num * sizeof(*pfn)); if ( pfn ) { @@ -288,8 +288,6 @@ static void *linux_privcmd_map_foreign_b break; } - free(pfn); - if ( rc == -ENOENT && i == num ) rc = 0; else if ( rc ) @@ -524,7 +522,7 @@ static void *linux_gnttab_grant_map(xc_g if (flags & XC_GRANT_MAP_SINGLE_DOMAIN) domids_stride = 0; - map = malloc(sizeof(*map) + + map = alloca(sizeof(*map) + (count - 1) * sizeof(struct ioctl_gntdev_map_grant_ref)); if ( map == NULL ) return NULL; @@ -598,7 +596,6 @@ static void *linux_gnttab_grant_map(xc_g } out: - free(map); return addr; }
Ian Campbell
2012-Feb-01 16:14 UTC
Re: [PATCH] perf: Replace malloc with alloca in hot path
On Mon, 2012-01-30 at 19:07 +0000, Santosh Jodh wrote:> Replace malloc with alloc in hot paths for improved performance.This is a hot path in something like a userspace PV backend which is frequently mapping guest domain pages, or something like that?> Signed-off-by: Santosh Jodh <santosh.jodh@citrix.com>Acked-by: Ian Campbell <ian.campbell@citrix.com>> > diff -r e2722b24dc09 -r 4952090d35e0 tools/libxc/xc_linux_osdep.c > --- a/tools/libxc/xc_linux_osdep.c Thu Jan 26 17:43:31 2012 +0000 > +++ b/tools/libxc/xc_linux_osdep.c Mon Jan 30 11:02:32 2012 -0800 > @@ -242,7 +242,7 @@ static void *linux_privcmd_map_foreign_b > * IOCTL_PRIVCMD_MMAPBATCH_V2 is not supported - fall back to > * IOCTL_PRIVCMD_MMAPBATCH. > */ > - xen_pfn_t *pfn = malloc(num * sizeof(*pfn)); > + xen_pfn_t *pfn = alloca(num * sizeof(*pfn)); > > if ( pfn ) > { > @@ -288,8 +288,6 @@ static void *linux_privcmd_map_foreign_b > break; > } > > - free(pfn); > - > if ( rc == -ENOENT && i == num ) > rc = 0; > else if ( rc ) > @@ -524,7 +522,7 @@ static void *linux_gnttab_grant_map(xc_g > if (flags & XC_GRANT_MAP_SINGLE_DOMAIN) > domids_stride = 0; > > - map = malloc(sizeof(*map) + > + map = alloca(sizeof(*map) + > (count - 1) * sizeof(struct ioctl_gntdev_map_grant_ref)); > if ( map == NULL ) > return NULL; > @@ -598,7 +596,6 @@ static void *linux_gnttab_grant_map(xc_g > } > > out: > - free(map); > > return addr; > }
Santosh Jodh
2012-Feb-01 16:19 UTC
Re: [PATCH] perf: Replace malloc with alloca in hot path
Yes - that is correct. This is used in the IO path for user mode block backend. Thanks, Santosh -----Original Message----- From: Ian Campbell Sent: Wednesday, February 01, 2012 8:15 AM To: Santosh Jodh Cc: xen-devel@lists.xensource.com Subject: Re: [PATCH] perf: Replace malloc with alloca in hot path On Mon, 2012-01-30 at 19:07 +0000, Santosh Jodh wrote:> Replace malloc with alloc in hot paths for improved performance.This is a hot path in something like a userspace PV backend which is frequently mapping guest domain pages, or something like that?> Signed-off-by: Santosh Jodh <santosh.jodh@citrix.com>Acked-by: Ian Campbell <ian.campbell@citrix.com>> > diff -r e2722b24dc09 -r 4952090d35e0 tools/libxc/xc_linux_osdep.c > --- a/tools/libxc/xc_linux_osdep.c Thu Jan 26 17:43:31 2012 +0000 > +++ b/tools/libxc/xc_linux_osdep.c Mon Jan 30 11:02:32 2012 -0800 > @@ -242,7 +242,7 @@ static void *linux_privcmd_map_foreign_b > * IOCTL_PRIVCMD_MMAPBATCH_V2 is not supported - fall back to > * IOCTL_PRIVCMD_MMAPBATCH. > */ > - xen_pfn_t *pfn = malloc(num * sizeof(*pfn)); > + xen_pfn_t *pfn = alloca(num * sizeof(*pfn)); > > if ( pfn ) > { > @@ -288,8 +288,6 @@ static void *linux_privcmd_map_foreign_b > break; > } > > - free(pfn); > - > if ( rc == -ENOENT && i == num ) > rc = 0; > else if ( rc ) > @@ -524,7 +522,7 @@ static void *linux_gnttab_grant_map(xc_g > if (flags & XC_GRANT_MAP_SINGLE_DOMAIN) > domids_stride = 0; > > - map = malloc(sizeof(*map) + > + map = alloca(sizeof(*map) + > (count - 1) * sizeof(struct ioctl_gntdev_map_grant_ref)); > if ( map == NULL ) > return NULL; > @@ -598,7 +596,6 @@ static void *linux_gnttab_grant_map(xc_g > } > > out: > - free(map); > > return addr; > }
Ian Jackson
2012-Feb-07 18:46 UTC
Re: [PATCH] perf: Replace malloc with alloca in hot path
Ian Campbell writes ("Re: [Xen-devel] [PATCH] perf: Replace malloc with alloca in hot path"):> On Mon, 2012-01-30 at 19:07 +0000, Santosh Jodh wrote: > > Replace malloc with alloc in hot paths for improved performance. > > This is a hot path in something like a userspace PV backend which is > frequently mapping guest domain pages, or something like that? > > > Signed-off-by: Santosh Jodh <santosh.jodh@citrix.com> > > Acked-by: Ian Campbell <ian.campbell@citrix.com>Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>