On Thu, May 3, 2018 at 7:21 PM, Stefan Beller <sbeller@xxxxxxxxxx> wrote: > On Thu, May 3, 2018 at 9:35 AM, Duy Nguyen <pclouds@xxxxxxxxx> wrote: >> On Mon, Apr 30, 2018 at 5:31 PM, Jameson Miller <jamill@xxxxxxxxxxxxx> wrote: >>> This patch series improves the performance of loading indexes by >>> reducing the number of malloc() calls. Loading the index from disk is >>> partly dominated by the time in malloc(), which is called for each >>> index entry. This patch series reduces the number of times malloc() is >>> called as part of loading the index, and instead allocates a block of >>> memory upfront that is large enough to hold all of the cache entries, >>> and chunks this memory itself. This change builds on [1]. >> >> I have only looked at the mem-pool related patches to see if >> mem-pool.c is good enough to replace alloc.c. To me, it's a "yes" >> after we optimize mem_pool_alloc() a bit (not that performance really >> matters in alloc.c case, but that may be because it's already >> blazingly fast that we never noticed about it). > > alloc.c was not just about speed, but mostly about dense packing? > 855419f764a (Add specialized object allocator, 2006-06-19) I know. I vaguely remembered Linus made that change but did not really look it up :) That reference should be included when/if you switch from alloc.c to mem-pool.c. > To me it is also a clear yes when it comes to combining these > two memory pools. I also did not notice that jm/mem-pool already landed in master. Have you tried measure (both memory usage and allocation speed) of it and alloc.c? Just take some big repo as an example and do count-objects -v to see how many blobs/trees/commits it has, then allocate the same amount with both alloc.c and mem-pool.c and measure both speed/mem. I'm pretty sure you're right that mem-pool.c is a clear yes. I was just being more conservative because we do (slightly) change allocator's behavior when we make the switch. But it's also very likely that any performance difference will be insignificant. I'm asking this because if mem-pool.c is a clear winner, you can start to update you series to use it now and kill alloc.c in the process. PS. Is Jeff back yet? I'm sure Junio is listening and all but I'm afraid he's too busy being a maintainer so Jeff's opinion in this area is really valuable. He has all the fun and weird use cases to play with at github. -- Duy