From: Linus Torvalds <torvalds@linux-foundation.org>
To: Harvey Harrison <harvey.harrison@gmail.com>
Cc: Johannes Schindelin <Johannes.Schindelin@gmx.de>,
Daniel Berlin <dberlin@dberlin.org>,
David Miller <davem@davemloft.net>,
ismail@pardus.org.tr, gcc@gcc.gnu.org,
Git Mailing List <git@vger.kernel.org>,
Junio C Hamano <gitster@pobox.com>
Subject: Re: [PATCH] gc --aggressive: make it really aggressive
Date: Thu, 6 Dec 2007 08:19:24 -0800 (PST) [thread overview]
Message-ID: <alpine.LFD.0.9999.0712060803430.13796@woody.linux-foundation.org> (raw)
In-Reply-To: <1196955059.13633.3.camel@brick>
On Thu, 6 Dec 2007, Harvey Harrison wrote:
>
> 7:41:25elapsed 86%CPU
Heh. And this is why you want to do it exactly *once*, and then just
export the end result for others ;)
> -r--r--r-- 1 hharrison hharrison 324094684 2007-12-06 07:26 pack-1d46ca030c3d6d6b95ad316deb922be06b167a3d.pack
But yeah, especially if you allow longer delta chains, the end result can
be much smaller (and what makes the one-time repack more expensive is the
window size, not the delta chain - you could make the delta chains longer
with no cost overhead at packing time)
HOWEVER.
The longer delta chains do make it potentially much more expensive to then
use old history. So there's a trade-off. And quite frankly, a delta depth
of 250 is likely going to cause overflows in the delta cache (which is
only 256 entries in size *and* it's a hash, so it's going to start having
hash conflicts long before hitting the 250 depth limit).
So when I said "--depth=250 --window=250", I chose those numbers more as
an example of extremely aggressive packing, and I'm not at all sure that
the end result is necessarily wonderfully usable. It's going to save disk
space (and network bandwidth - the delta's will be re-used for the network
protocol too!), but there are definitely downsides too, and using long
delta chains may simply not be worth it in practice.
(And some of it might just want to have git tuning, ie if people think
that long deltas are worth it, we could easily just expand on the delta
hash, at the cost of some more memory used!)
That said, the good news is that working with *new* history will not be
affected negatively, and if you want to be _really_ sneaky, there are ways
to say "create a pack that contains the history up to a version one year
ago, and be very aggressive about those old versions that we still want to
have around, but do a separate pack for newer stuff using less aggressive
parameters"
So this is something that can be tweaked, although we don't really have
any really nice interfaces for stuff like that (ie the git delta cache
size is hardcoded in the sources and cannot be set in the config file, and
the "pack old history more aggressively" involves some manual scripting
and knowing how "git pack-objects" works rather than any nice simple
command line switch).
So the thing to take away from this is:
- git is certainly flexible as hell
- .. but to get the full power you may need to tweak things
- .. happily you really only need to have one person to do the tweaking,
and the tweaked end results will be available to others that do not
need to know/care.
And whether the difference between 320MB and 500MB is worth any really
involved tweaking (considering the potential downsides), I really don't
know. Only testing will tell.
Linus
next prev parent reply other threads:[~2007-12-06 16:20 UTC|newest]
Thread overview: 90+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <4aca3dc20712051108s216d3331t8061ef45b9aa324a@mail.gmail.com>
2007-12-06 2:28 ` Git and GCC David Miller
2007-12-06 2:41 ` Daniel Berlin
2007-12-06 2:52 ` David Miller
2007-12-06 3:47 ` Daniel Berlin
2007-12-06 4:20 ` David Miller
2007-12-06 4:28 ` Harvey Harrison
2007-12-06 4:32 ` Daniel Berlin
2007-12-06 4:48 ` David Miller
2007-12-06 5:11 ` Daniel Berlin
2007-12-06 5:15 ` Harvey Harrison
2007-12-06 5:17 ` Daniel Berlin
2007-12-06 6:47 ` Jon Smirl
2007-12-06 7:15 ` Jeff King
2007-12-06 14:18 ` Nicolas Pitre
2007-12-06 17:39 ` Jeff King
2007-12-06 18:02 ` Nicolas Pitre
2007-12-07 6:50 ` Jeff King
2007-12-07 7:27 ` Jeff King
2007-12-06 18:35 ` Linus Torvalds
2007-12-06 18:55 ` Jon Smirl
2007-12-06 19:08 ` Nicolas Pitre
2007-12-06 21:39 ` Jon Smirl
2007-12-06 22:08 ` Nicolas Pitre
2007-12-06 22:11 ` Jon Smirl
2007-12-06 22:22 ` Jon Smirl
2007-12-06 22:30 ` Nicolas Pitre
2007-12-06 22:44 ` Jon Smirl
2007-12-07 7:31 ` Jeff King
2007-12-08 0:47 ` Harvey Harrison
2007-12-10 9:54 ` Gabriel Paubert
2007-12-10 15:35 ` Nicolas Pitre
2007-12-07 3:31 ` David Miller
2007-12-07 6:38 ` Jeff King
2007-12-07 7:10 ` Jon Smirl
2007-12-07 12:53 ` David Miller
2007-12-07 17:23 ` Linus Torvalds
2007-12-07 20:26 ` Giovanni Bajo
2007-12-07 22:14 ` Jakub Narebski
2007-12-07 23:04 ` Luke Lu
2007-12-07 23:14 ` Giovanni Bajo
2007-12-07 23:33 ` Daniel Berlin
2007-12-08 12:00 ` Johannes Schindelin
2007-12-08 1:55 ` David Miller
2007-12-10 9:57 ` David Miller
2007-12-06 6:09 ` Linus Torvalds
2007-12-06 7:49 ` Harvey Harrison
2007-12-06 8:11 ` David Brown
2007-12-06 14:01 ` Nicolas Pitre
2007-12-06 12:03 ` [PATCH] gc --aggressive: make it really aggressive Johannes Schindelin
2007-12-06 13:42 ` Theodore Tso
2007-12-06 14:15 ` Nicolas Pitre
2007-12-06 14:22 ` Pierre Habouzit
2007-12-06 15:55 ` Johannes Schindelin
2007-12-06 17:05 ` David Kastrup
2007-12-06 15:30 ` Harvey Harrison
2007-12-06 15:56 ` Johannes Schindelin
2007-12-06 16:19 ` Linus Torvalds [this message]
2009-03-18 16:01 ` Johannes Schindelin
2009-03-18 16:27 ` Teemu Likonen
2009-03-18 18:02 ` Nicolas Pitre
2007-12-06 18:04 ` Git and GCC Daniel Berlin
2007-12-06 18:29 ` Linus Torvalds
2007-12-07 2:42 ` Harvey Harrison
2007-12-07 3:01 ` Linus Torvalds
2007-12-07 4:06 ` Jon Smirl
2007-12-07 4:21 ` Nicolas Pitre
2007-12-07 5:21 ` Linus Torvalds
2007-12-07 7:08 ` Jon Smirl
2007-12-07 19:36 ` Nicolas Pitre
2007-12-06 18:24 ` NightStrike
2007-12-06 18:45 ` Linus Torvalds
2007-12-07 5:36 ` NightStrike
2007-12-06 19:12 ` Jon Loeliger
2007-12-06 19:39 ` Linus Torvalds
2007-12-07 0:29 ` Jakub Narebski
2007-12-06 20:04 ` Junio C Hamano
2007-12-06 21:02 ` Junio C Hamano
2007-12-06 22:26 ` David Kastrup
2007-12-06 22:38 ` [OT] " Randy Dunlap
2007-12-06 4:25 ` Harvey Harrison
2007-12-06 4:54 ` Linus Torvalds
2007-12-06 5:04 ` Harvey Harrison
2007-12-06 11:57 ` Johannes Schindelin
2007-12-06 12:04 ` Ismail Dönmez
[not found] ` <2007-12-05-21-23-14+trackit+sam@rfc1149.net>
[not found] ` <1196891451.10408.54.camel@brick>
[not found] ` <jeeje0ogvk.fsf@sykes.suse.de>
[not found] ` <1196897840.10408.57.camel@brick>
[not found] ` <38a0d8450712130640p1b5d74d6nfa124ad0b0110d64@mail.gmail.com>
[not found] ` <1197572755.898.15.camel@brick>
2007-12-17 22:15 ` "Argument list too long" in git remote update (Was: Git and GCC) Geert Bosch
2007-12-17 22:59 ` Johannes Schindelin
2007-12-17 23:01 ` Linus Torvalds
2007-12-18 1:34 ` Derek Fawcus
2007-12-18 1:52 ` Shawn O. Pearce
2007-12-06 19:07 [PATCH] gc --aggressive: make it really aggressive J.C. Pizarro
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.LFD.0.9999.0712060803430.13796@woody.linux-foundation.org \
--to=torvalds@linux-foundation.org \
--cc=Johannes.Schindelin@gmx.de \
--cc=davem@davemloft.net \
--cc=dberlin@dberlin.org \
--cc=gcc@gcc.gnu.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=harvey.harrison@gmail.com \
--cc=ismail@pardus.org.tr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).