threads / discuss / 52092

is commitGraph useful on the server side?

Subject: is commitGraph useful on the server side?

## tl;dr

5 messages between Oct 22, 2019 and Oct 22, 2019.

replies: 4people: 3as markdown or json

Konstantin Ryabitsev· Oct 22, 2019, 16:51 UTC · lore
Hi, all:

I've read the docs on commitGraph and it's not 100% clear to me if turning it on and generating commit graphs would be useful on the server-side. I know it's going to be enabled by default and automatically generated whenever "git gc" runs, so I'm trying to figure out if it'll be useful for git-daemon operations.

Thanks in advance for your help.

Best, -K

Derrick Stolee· Oct 22, 2019, 19:44 UTC · re: Konstantin Ryabitsev · lore

Re: is commitGraph useful on the server side?

On 10/22/2019 12:51 PM, Konstantin Ryabitsev wrote:
Show 5 quoted lines
> Hi, all:
> 
> I've read the docs on commitGraph and it's not 100% clear to me if turning it on and generating commit graphs would be useful on the server-side. I know it's going to be enabled by default and automatically generated whenever "git gc" runs, so I'm trying to figure out if it'll be useful for git-daemon operations.
> 
> Thanks in advance for your help.
I've CC'd Taylor Blau for more information here.

I'm biased, but I think the commit-graph is generally really good to have in almost all cases. I actually do not know of a good reason to _not_ have it.

If you are managing reachability bitmaps, then most of the server-side stuff will use the bitmaps instead. However, creating those bitmaps will be slightly faster with the commit-graph.

If you don't use bitmaps, then the commit-graph will help fetch negotiation and many other commit-walk experiences.

If you have a lot of machinery around your server maintenance, then you can schedule commit-graph updates more frequently than bitmap computations, and you would get benefit by parsing commits faster in the zone "above" the bitmaps.

Thanks, -Stolee

Jeff King· Oct 22, 2019, 20:06 UTC · re: Derrick Stolee · lore

Re: is commitGraph useful on the server side?

On Tue, Oct 22, 2019 at 03:44:28PM -0400, Derrick Stolee wrote:
> I'm biased, but I think the commit-graph is generally really good to have
> in almost all cases. I actually do not know of a good reason to _not_ have
> it.

A lot depends on how much you do on the server. If you're serving a web interface that runs things like `rev-list`, or `for-each-ref --contains`, etc, then you should see a big improvement.

If you're _just_ serving fetches with `upload-pack`, you might see some small improvement during fetch negotiation. But I suspect it would be dwarfed by the cost of actually generating packs. Likewise, the traversal there will be dominated by accessing trees (and if that is expensive, then you ought to be using reachability bitmaps).

But I agree that there's no reason _not_ to use them.
-Peff
Konstantin Ryabitsev· Oct 22, 2019, 20:39 UTC · re: Jeff King · lore

Re: is commitGraph useful on the server side?

On Tue, Oct 22, 2019 at 04:06:16PM -0400, Jeff King wrote:
Show 8 quoted lines
>> I'm biased, but I think the commit-graph is generally really good to 
>> have
>> in almost all cases. I actually do not know of a good reason to _not_ have
>> it.
>
>A lot depends on how much you do on the server. If you're serving a web
>interface that runs things like `rev-list`, or `for-each-ref
>--contains`, etc, then you should see a big improvement.

Ah, good to know, so something like cgit would see an improvement if there are commit graphs generated for the repos it serves.

Show 5 quoted lines
>If you're _just_ serving fetches with `upload-pack`, you might see some
>small improvement during fetch negotiation. But I suspect it would be
>dwarfed by the cost of actually generating packs. Likewise, the
>traversal there will be dominated by accessing trees (and if that is
>expensive, then you ought to be using reachability bitmaps).
We do generate bitmaps on a routine basis.

OK, I think I'm convinced that enabling commitgraph and generating them regularly is going to be a net win.

Thanks, everyone.
-K
Jeff King· Oct 22, 2019, 20:07 UTC · re: Derrick Stolee · lore

Re: is commitGraph useful on the server side?

[resending, looks like we lost Konstantin from the cc]
On Tue, Oct 22, 2019 at 03:44:28PM -0400, Derrick Stolee wrote:
> I'm biased, but I think the commit-graph is generally really good to have
> in almost all cases. I actually do not know of a good reason to _not_ have
> it.

A lot depends on how much you do on the server. If you're serving a web interface that runs things like `rev-list`, or `for-each-ref --contains`, etc, then you should see a big improvement.

If you're _just_ serving fetches with `upload-pack`, you might see some small improvement during fetch negotiation. But I suspect it would be dwarfed by the cost of actually generating packs. Likewise, the traversal there will be dominated by accessing trees (and if that is expensive, then you ought to be using reachability bitmaps).

But I agree that there's no reason _not_ to use them.
-Peff

← back to recent threads