Subject: Re: [PATCH v2] Bump core.deltaBaseCacheLimit to 128MiB

From: Junio C Hamano <[email-masked]>
Date: Wed, 19 Mar 2014 14:09:43 -0700

David Kastrup <[email-masked]> writes:

> The default of 16MiB causes serious thrashing for large delta chains
> combined with large files.
>
> Signed-off-by: David Kastrup <[email-masked]>
> ---

Is that a good argument?  Wouldn't the default of 128MiB burden
smaller machines with bloated processes?

> Forgot the signoff.  For the rationale of this patch and the 128MiB
> choice, see the original patch.

"See the original patch", especially written after three-dash lines
without a reference, will not help future readers of "git log" who
later bisects to find that this change hurt their usage and want to
see why it was done unconditionally (as opposed to encouraging those
who benefit from this change to configure their Git to use larger
value for them, without hurting others).

While I can personally afford 128MiB, I do *not* think 16MiB was
chosen more scientifically than the choice of 128MiB this change
proposes to make, and my gut feeling is that this would not have too
big a negative impact to anybody, I would prefer to have a reason
better than gut feeling before accepting a default change.

Thanks.

> Documentation/config.txt | 2 +-
>  environment.c            | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/config.txt b/Documentation/config.txt
> index 73c8973..1b6950a 100644
> --- a/Documentation/config.txt
> +++ b/Documentation/config.txt
> @@ -484,7 +484,7 @@ core.deltaBaseCacheLimit::
>  	to avoid unpacking and decompressing frequently used base
>  	objects multiple times.
>  +
> -Default is 16 MiB on all platforms.  This should be reasonable
> +Default is 128 MiB on all platforms.  This should be reasonable
>  for all users/operating systems, except on the largest projects.
>  You probably do not need to adjust this value.
>  +
> diff --git a/environment.c b/environment.c
> index c3c8606..73ed670 100644
> --- a/environment.c
> +++ b/environment.c
> @@ -37,7 +37,7 @@ int core_compression_seen;
>  int fsync_object_files;
>  size_t packed_git_window_size = DEFAULT_PACKED_GIT_WINDOW_SIZE;
>  size_t packed_git_limit = DEFAULT_PACKED_GIT_LIMIT;
> -size_t delta_base_cache_limit = 16 * 1024 * 1024;
> +size_t delta_base_cache_limit = 128 * 1024 * 1024;
>  unsigned long big_file_threshold = 512 * 1024 * 1024;
>  const char *pager_program;
>  int pager_use_color = 1;