This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc 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 1/2] Consolidate heap in memalign when alignment is large.


On 7 November 2013 20:50, OndÅej BÃlka <neleai@seznam.cz> wrote:
> Hi,
>
> I looked how deduplicate malloc code. Funcions valloc/pvalloc should be
> implemented by calling memalign, only difference is that they call heap
> consolidation.
>
> If consolidation is useful then memalign would benefit when user passes
> page size alignments. Otherwise we should delete consolidation from
> valloc.
>
> Which alternative is better?

I would vote for removing the consolidation call. I don't have any
benchmarks for judging what is better and I suspect with this type of
thing you would need a real app with does a significant amount of page
aligned allocations which may not even exist. But pvalloc and valloc
are much less frequently called than memalign/posix_memalign so I
would assume the latter is the better tested code.

And overall I think it is better to err on the side of simplicity,
especially as this code has no clear rationale documented.

>         * malloc/malloc.c (__libc_memalign): Call heap consolidation
>         when alignment is multiple of page size.
>
> diff --git a/malloc/malloc.c b/malloc/malloc.c
> index 897c43a..29a5488 100644
> --- a/malloc/malloc.c
> +++ b/malloc/malloc.c
> @@ -3005,6 +3005,9 @@ __libc_memalign(size_t alignment, size_t bytes)
>    mstate ar_ptr;
>    void *p;
>
> +  if(__malloc_initialized < 0)
> +    ptmalloc_init();
> +

This bit is fine.

-- 
Will Newton
Toolchain Working Group, Linaro


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