@matheusbsbs / matheus-bagliano / commits / 5749b0b2f9
Fork 0

don't let the delta cache grow unbounded in 'git repack'

I have 4GB of RAM on my system which should, in theory, be quite enough to repack a 600 MB repository. However the unbounded delta cache size always pushes it into swap, at which point everything virtually comes to a halt. So unbounded caches are never a good idea. A default of 256MB should be a good compromize between memory usage and speed where medium sized repositories are still likely to fit in the cache with a reasonable memory usage, and larger repositories are going to take quite some time to repack already anyway. While at it, clarify the associated config variable documentation entries a bit. Signed-off-by: Nicolas Pitre <nico@cam.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Nicolas Pitre committed Aug 5, 2009 at 16:55 UTC 5749b0b2f935dc418c98ba8e7c52c3291451bc4a
2 files changed +12 -4
Documentation/config.txt
+11 -3
@@ -1218,12 +1218,20 @@ pack.compression::
1218
1219 pack.deltaCacheSize::
1220 The maximum memory in bytes used for caching deltas in
1221 - linkgit:git-pack-objects[1].
1222 - A value of 0 means no limit. Defaults to 0.
1221 + linkgit:git-pack-objects[1] before writing them out to a pack.
1222 + This cache is used to speed up the writing object phase by not
1223 + having to recompute the final delta result once the best match
1224 + for all objects is found. Repacking large repositories on machines
1225 + which are tight with memory might be badly impacted by this though,
1226 + especially if this cache pushes the system into swapping.
1227 + A value of 0 means no limit. The smallest size of 1 byte may be
1228 + used to virtually disable this cache. Defaults to 256 MiB.
1229
1230 pack.deltaCacheLimit::
1231 The maximum size of a delta, that is cached in
1226 - linkgit:git-pack-objects[1]. Defaults to 1000.
1232 + linkgit:git-pack-objects[1]. This cache is used to speed up the
1233 + writing object phase by not having to recompute the final delta
1234 + result once the best match for all objects is found. Defaults to 1000.
1235
1236 pack.threads::
1237 Specifies the number of threads to spawn when searching for best
builtin-pack-objects.c
+1 -1
@@ -86,7 +86,7 @@ static int pack_compression_level = Z_DEFAULT_COMPRESSION;
86 static int pack_compression_seen;
87
88 static unsigned long delta_cache_size = 0;
89 -static unsigned long max_delta_cache_size = 0;
89 +static unsigned long max_delta_cache_size = 256 * 1024 * 1024;
90 static unsigned long cache_max_small_delta_size = 1000;
91
92 static unsigned long window_memory_limit = 0;