On Tue, Mar 18, 2014 at 12:50:50AM -0400, Jeff King wrote: > On Sun, Mar 16, 2014 at 08:35:04PM +0700, Nguyễn Thái Ngọc Duy wrote: > > > As explained in the previous commit, current aggressive settings > > --depth=250 --window=250 could slow down repository access > > significantly. Notice that people usually work on recent history only, > > we could keep recent history more loosely packed, so that repo access > > is fast most of the time while the pack file remains small. > > One thing I have not seen is real-world timings showing the slowdown > based on --depth. Did I miss them, or are we just making assumptions > based on one old case from 2009 (that, AFAIK does not have real numbers, > just speculation)? Has anyone measured the effect of bumping the delta > cache size (and its hash implementation)? Just as a very quick, rough data point, here are before-and-after timings for the patch below doing "git rev-list --objects --all" on my linux.git, which is a mix of "--aggressive" and normal packing (I didn't do a "repack -f", but it's partially what I've downloaded from k.org and what I've repacked in various experiments over the past few months). [before] real 0m28.824s user 0m28.620s sys 0m0.232s [after] real 0m21.694s user 0m21.544s sys 0m0.172s The numbers below are completely pulled out of a hat, so we can perhaps do even better. But I think it shows that there is room for improvement in the delta base cache. --- 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; diff --git a/sha1_file.c b/sha1_file.c index b37c6f6..a9ab8e3 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -1944,7 +1944,7 @@ static void *unpack_compressed_entry(struct packed_git *p, return buffer; } -#define MAX_DELTA_CACHE (256) +#define MAX_DELTA_CACHE (1024) static size_t delta_base_cached; -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html