Message ID | YHVECXHfZ1bidTJH@coredump.intra.peff.net (mailing list archive) |
---|---|
Headers | show |
Series | low-hanging performance fruit with promisor packs | expand |
On Tue, Apr 13, 2021 at 03:12:54AM -0400, Jeff King wrote: > On Mon, Apr 12, 2021 at 07:47:41PM -0400, Jeff King wrote: > > > The patch below drops the peak heap to 165MB. Still quite a bit more, > > but I think it's a combination of delta-base cache (96MB) plus extra > > structs for all the non-commit objects whose flags we marked. > > I think we can do even better than that, after looking into the "do we > really need to parse the objects?" comment I left (spoiler: the answer > is no, we do not need to, at least for that caller). > > Here are some cleaned-up patches that I think improve the situation > quite a bit. > Anyway, here are the patches. > > [1/3]: is_promisor_object(): free tree buffer after parsing > [2/3]: lookup_unknown_object(): take a repository argument > [3/3]: revision: avoid parsing with --exclude-promisor-objects I tried these patches together with your first in this thread [1], and then could finally 'gc' my 'blob:none' chromium clone in: elapsed: 3:23.64 max RSS: 3206552k Thanks. [1] https://public-inbox.org/git/YG4hfge2y%2FAmcklZ@coredump.intra.peff.net/
> Here are some cleaned-up patches that I think improve the situation > quite a bit. This is just the low-hanging fruit from this part of the > discussion; I'm sure there's more to do to make using partial clones > pleasant. In particular: [snip] Thanks, Peff. These patches look good to me.
Jeff King <peff@peff.net> writes: > > I didn't explore any of those here, and I don't plan to look into them > anytime soon. I'm just documenting my findings for later. > > Anyway, here are the patches. > > [1/3]: is_promisor_object(): free tree buffer after parsing > [2/3]: lookup_unknown_object(): take a repository argument > [3/3]: revision: avoid parsing with --exclude-promisor-objects > > builtin/fsck.c | 2 +- > builtin/pack-objects.c | 2 +- > http-push.c | 2 +- > object.c | 7 +++---- > object.h | 2 +- > packfile.c | 1 + > refs.c | 2 +- > revision.c | 2 +- > t/helper/test-example-decorate.c | 6 +++--- > t/perf/p5600-partial-clone.sh | 12 ++++++++++++ > upload-pack.c | 2 +- > walker.c | 2 +- > 12 files changed, 27 insertions(+), 15 deletions(-) > > -Peff I took look on this series and tested as well, together with the fix for the "unpacking and deleting" promisor objects situation. It looks good to me.