From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: Jeff King <peff@peff.net>
Cc: "Junio C Hamano" <gitster@pobox.com>, "Eric Wong" <e@80x24.org>,
git@vger.kernel.org, "SZEDER Gábor" <szeder.dev@gmail.com>
Subject: Re: [PATCH v3] repack: enable bitmaps by default on bare repos
Date: Sat, 04 May 2019 08:52:01 +0200 [thread overview]
Message-ID: <87a7g2iuem.fsf@evledraar.gmail.com> (raw)
In-Reply-To: <20190504013713.GC17551@sigill.intra.peff.net>
On Sat, May 04 2019, Jeff King wrote:
> On Thu, Apr 25, 2019 at 04:16:46PM +0900, Junio C Hamano wrote:
>
>> I was revisiting the recent "What's cooking" report, and I am not
>> sure what the current status of the topic is.
>>
>> I do not get a feel that the current bitmap implementation has been
>> widely used in repositories that have vastly different access
>> patterns---it probably has been tried only by those who can afford
>> the engineering cost to see if the implementation happens to work
>> well for their workload and some may have chosen to adopt it while
>> others didn't. So it may be very well tuned for the former people
>> but once we merge this topic down, we'll hear from others with quite
>> different workload, which may lead to us tuning the code to bit
>> better to their workload while not hurting other existing users,
>> hopefully.
>>
>> Or not.
>
> Note that Ævar's case was somebody running bitmaps locally and trying to
> push, which I think is generally not a good match for bitmaps (even when
> they work, they cost more to generate than what you save if you're only
> pushing once).
Right. It was *not* caused by this "enable bitmaps by default on bare
repos" patch (which I wasn't even running with), but *is* indicative of
a pretty big edge case with enabling bitmaps that *will* happen for some
on such bare repos if we ship the patch.
> The goal of Eric's patch was that by kicking in for bare repos, we'd
> mostly be hitting servers that are serving up fetches. So if by
> "workload" you mean that we some people might use bare repos for other
> cases, yeah, there's a potential for confusion or regression there.
As noted I suspect that's a really rare use-case in practice, and in
reply to Junio's <xmqq1s1qy2ox.fsf@gitster-ct.c.googlers.com> upthread I
think it's fine to just try this. Maybe we'll finally get such use-cases
out of the woodworks by turning it on by default.
As an aside this is the Nth time I notice how crappy that "Enumerating
objects" progress bar is. We do a *lot* of things there, including this
bitmap calculation.
But just splitting it up might result in either no progress (all
individually below 2 seconds), or a lot of noise as you have 20 things
that each take 2 seconds. I wonder if someone's looked at supporting:
Enumerating Objects (X%) => Calculating bitmaps (Y%)
Where X% is the total progres, and %Y is the sub-progress. I eyeballed
doing this once by "chaining" the progress structs, but there's probably
a less crappy way...
> If you mean that bitmaps might not work for some workloads even when
> we're serving a lot of fetches, I won't say that's _not_ true, but my
> experience is that they are generally a net win. Both for the smaller
> repositories we see on github.com, but also for big, busy ones that our
> on-premises customers use.
>
> Actually, there is one curiosity with Eric's patch that I haven't
> tested. As I've mentioned before, we store "forks" as single
> repositories pointing to a single shared alternates repository. Since
> the bitmap code only handles one .bitmap per invocation, you really
> want just one big one in the shared repo. If "git repack" in the forks
> started generating one, that would be surprising and annoying.
>
> In practice this is a pretty extreme corner case. And a lot would
> depend on how you're using "repack" in the fork (e.g., a partial
> repack would know that it can't generate bitmaps anyway). I'm pretty
> sure it would not even impact our setup at all, but I can probably
> come up with a devils advocate one where it would.
>
>> I am somewhat tempted to make things more exciting by merging it to
>> 'next' soonish, but I guess Ævar and you are not quite ready for
>> that excitement yet, judging from the following (which looks quite
>> sensible suggestions)?
>
> It's OK with me for this to go to 'next'. Note that the other two
> patches from me could actually graduate separately. One is a
> straight-out test fix, and the other should always be a win (and does
> nothing if you're not already generating bitmaps).
>
> By the way, there were some timing puzzles mentioned in that second
> commit. I re-ran them today and everything was what I'd expect. So I
> wonder if I just screwed up the timings before. I can re-write that
> commit message if it hasn't made it to 'next' yet.
>
> -Peff
next prev parent reply other threads:[~2019-05-04 6:52 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-14 4:31 [PATCH 0/3] some prune optimizations Jeff King
2019-02-14 4:35 ` [PATCH 1/3] prune: lazily perform reachability traversal Jeff King
2019-02-14 10:54 ` Eric Sunshine
2019-02-14 11:07 ` Jeff King
2019-02-14 4:37 ` [PATCH 2/3] prune: use bitmaps for " Jeff King
2019-03-09 2:49 ` bitmaps by default? [was: prune: use bitmaps for reachability traversal] Eric Wong
2019-03-10 23:39 ` Jeff King
2019-03-12 3:13 ` [PATCH] repack: enable bitmaps by default on bare repos Eric Wong
2019-03-12 9:07 ` Ævar Arnfjörð Bjarmason
2019-03-12 10:49 ` Jeff King
2019-03-12 12:05 ` Jeff King
2019-03-13 1:51 ` Eric Wong
2019-03-13 14:54 ` Jeff King
2019-03-14 9:12 ` [PATCH v3] " Eric Wong
2019-03-14 16:02 ` Jeff King
2019-03-15 6:21 ` [PATCH 0/2] enable bitmap hash-cache by default Jeff King
2019-03-15 6:22 ` [PATCH 1/2] t5310: correctly remove bitmaps for jgit test Jeff King
2019-03-15 13:25 ` SZEDER Gábor
2019-03-15 18:36 ` Jeff King
2019-03-15 6:25 ` [PATCH 2/2] pack-objects: default to writing bitmap hash-cache Jeff King
2019-04-09 15:10 ` [PATCH v3] repack: enable bitmaps by default on bare repos Ævar Arnfjörð Bjarmason
2019-04-10 22:57 ` Jeff King
2019-04-25 7:16 ` Junio C Hamano
2019-05-04 1:37 ` Jeff King
2019-05-04 6:52 ` Ævar Arnfjörð Bjarmason [this message]
2019-05-04 13:23 ` SZEDER Gábor
2019-05-08 20:17 ` Ævar Arnfjörð Bjarmason
2019-05-09 4:24 ` Junio C Hamano
2019-05-07 7:45 ` Jeff King
2019-05-07 8:12 ` Ævar Arnfjörð Bjarmason
2019-05-08 7:11 ` Jeff King
2019-05-08 14:20 ` Derrick Stolee
2019-05-08 16:13 ` Ævar Arnfjörð Bjarmason
2019-05-08 22:25 ` Jeff King
2019-05-23 11:30 ` Jeff King
2019-05-23 12:53 ` Derrick Stolee
2019-05-24 7:24 ` Jeff King
2019-05-24 10:33 ` Derrick Stolee
2019-05-23 19:26 ` Ævar Arnfjörð Bjarmason
2019-05-24 7:27 ` Jeff King
2019-05-24 7:55 ` Ævar Arnfjörð Bjarmason
2019-05-24 8:26 ` Jeff King
2019-05-24 9:01 ` Ævar Arnfjörð Bjarmason
2019-05-24 9:29 ` SZEDER Gábor
2019-05-24 11:17 ` Ævar Arnfjörð Bjarmason
2019-05-24 11:41 ` SZEDER Gábor
2019-05-24 11:58 ` Ævar Arnfjörð Bjarmason
2019-05-24 12:34 ` SZEDER Gábor
2019-05-24 13:41 ` Ævar Arnfjörð Bjarmason
2019-05-24 11:31 ` [PATCH] pack-bitmap: look for an uninteresting bitmap Derrick Stolee
2019-04-15 15:00 ` [PATCH 2/3] prune: use bitmaps for reachability traversal Derrick Stolee
2019-04-18 19:49 ` Jeff King
2019-04-18 20:08 ` [PATCH] t5304: add a test for pruning with bitmaps Jeff King
2019-04-20 1:01 ` Derrick Stolee
2019-04-20 3:24 ` Jeff King
2019-04-20 21:01 ` Derrick Stolee
2019-02-14 4:38 ` [PATCH 3/3] prune: check SEEN flag for reachability Jeff King
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=87a7g2iuem.fsf@evledraar.gmail.com \
--to=avarab@gmail.com \
--cc=e@80x24.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=peff@peff.net \
--cc=szeder.dev@gmail.com \
/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).