threads / discuss / 36670

Re: worlds slowest git repo- what to do?

Subject: Re: worlds slowest git repo- what to do?

## tl;dr

5 messages between May 15, 2014 and May 17, 2014.

replies: 4people: 4as markdown or json

Philip Oakley· May 15, 2014, 19:06 UTC · lore
From: "John Fisher" <fishook2033-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Show 23 quoted lines
>I assert based on one piece of evidence ( a post from a facebook dev) 
>that I now have the worlds biggest and slowest git
> repository, and I am not a happy guy. I used to have the worlds 
> biggest CVS repository, but CVS can't handle multi-G
> sized files. So I moved the repo to git, because we are using that for 
> our new projects.
>
> goal:
> keep 150 G of files (mostly binary) from tiny sized to over 8G in a 
> version-control system.
>
> problem:
> git is absurdly slow, think hours, on fast hardware.
>
> question:
> any suggestions beyond these-
> http://git-annex.branchable.com/
> https://github.com/jedbrown/git-fat
> https://github.com/schacon/git-media
> http://code.google.com/p/boar/
> subversion
>
> ?

At the moment some of the developers are looking to speed up some of the code on very large repos, though I think they are looking at code repos, rather than large file repos. They were looking for large repos to test some of the code upon ;-)

I've copied the Git list should they want to make any suggestions.
Show 5 quoted lines
>
>
> Thanks.
>
> -- 
Philip 
-- 
You received this message because you are subscribed to the Google Groups "Git for human beings" group.
To unsubscribe from this group and stop receiving emails from it, send an email to git-users+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit https://groups.google.com/d/optout.
Sam Vilain· May 15, 2014, 19:48 UTC · re: Philip Oakley · lore

Re: [git-users] worlds slowest git repo- what to do?

On 05/15/2014 12:06 PM, Philip Oakley wrote:
Show 23 quoted lines
> From: "John Fisher" <fishook2033@gmail.com>
>> I assert based on one piece of evidence ( a post from a facebook dev)
>> that I now have the worlds biggest and slowest git
>> repository, and I am not a happy guy. I used to have the worlds
>> biggest CVS repository, but CVS can't handle multi-G
>> sized files. So I moved the repo to git, because we are using that
>> for our new projects.
>>
>> goal:
>> keep 150 G of files (mostly binary) from tiny sized to over 8G in a
>> version-control system.
>>
>> problem:
>> git is absurdly slow, think hours, on fast hardware.
>>
>> question:
>> any suggestions beyond these-
>> http://git-annex.branchable.com/
>> https://github.com/jedbrown/git-fat
>> https://github.com/schacon/git-media
>> http://code.google.com/p/boar/
>> subversion
>>

You could shard. Break the problem up into smaller repositories, eg via submodules. Try ~128 shards and I'd expect that 129 small clones should complete faster than a single 150G clone, as well as being resumable etc.

The first challenge will be figuring out what to shard on, and how to lay out the repository. You could have all of the large files in their own directory, and then the main repository just has symlinks into the sharded area. In that case, I would recommend sharding by date of the introduced blob, so that there's a good chance you won't need to clone everything forever; as shards with not many files for the current version could in theory be retired. Or, if the directory structure already suits it, you could "directly" use submodules.

The second challenge will be writing the filter-branch script for this :-)

Good luck, Sam

Duy Nguyen· May 16, 2014, 10:13 UTC · re: Philip Oakley · lore

Re: [git-users] worlds slowest git repo- what to do?

On Fri, May 16, 2014 at 2:06 AM, Philip Oakley <philipoakley@iee.org> wrote:
Show 12 quoted lines
> From: "John Fisher" <fishook2033@gmail.com>
>>
>> I assert based on one piece of evidence ( a post from a facebook dev) that
>> I now have the worlds biggest and slowest git
>> repository, and I am not a happy guy. I used to have the worlds biggest
>> CVS repository, but CVS can't handle multi-G
>> sized files. So I moved the repo to git, because we are using that for our
>> new projects.
>>
>> goal:
>> keep 150 G of files (mostly binary) from tiny sized to over 8G in a
>> version-control system.

I think your best bet so far is git-annex (or maybe bup) for dealing with huge files. I plan on resurrecting Junio's split-blob series to make core git handle huge files better, but there's no eta on that. The problem here is about file size, not the number of files, or history depth, right?

>> problem:
>> git is absurdly slow, think hours, on fast hardware.

Probably known issues. But some elaboration would be nice (e.g. what operation is slow, how slow, some more detail characteristics of the repo..) in case new problems pop up.

-- 
Duy
John Fisher· May 16, 2014, 21:22 UTC · lore
On 05/16/2014 03:13 AM, Duy Nguyen wrote:
Show 13 quoted lines
> On Fri, May 16, 2014 at 2:06 AM, Philip Oakley <philipoakley-7KbaBNvhQFM@public.gmane.org> wrote:
>> From: "John Fisher" <fishook2033-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>>> I assert based on one piece of evidence ( a post from a facebook dev) that
>>> I now have the worlds biggest and slowest git
>>> repository, and I am not a happy guy. I used to have the worlds biggest
>>> CVS repository, but CVS can't handle multi-G
>>> sized files. So I moved the repo to git, because we are using that for our
>>> new projects.
>>>
>>> goal:
>>> keep 150 G of files (mostly binary) from tiny sized to over 8G in a
>>> version-control system.
> I think your best bet so far is git-annex 
good, I am  looking at that
Show 5 quoted lines
> (or maybe bup) for dealing
> with huge files. I plan on resurrecting Junio's split-blob series to
> make core git handle huge files better, but there's no eta on that.
> The problem here is about file size, not the number of files, or
> history depth, right?

When things here calm down, I could easily test the repo without the giant files, leaving 99% of files in the repo. There is hardly any history depth because these are releases, version controlled by directory name. As has been suggested I could be forced to abandon the version-control, even to the point of just using rsync. But I've been doing this with CVS for 10 years now and I hate to change or in any way move away fron KISS. Moving it to Git may not have been one of my better ideas...

> Probably known issues. But some elaboration would be nice (e.g. what operation is slow, how slow, some more detail
> characteristics of the repo..) in case new problems pop up. 

so far I have done add, commit, status, clone - commit and status are slow; add seems to depend on the files involved, clone seems to run at network speed. I can provide metrics later, see above. email me offline with what you want.

John
-- 
You received this message because you are subscribed to the Google Groups "Git for human beings" group.
To unsubscribe from this group and stop receiving emails from it, send an email to git-users+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit https://groups.google.com/d/optout.
Duy Nguyen· May 17, 2014, 01:49 UTC · re: John Fisher · lore

Re: [git-users] worlds slowest git repo- what to do?

On Sat, May 17, 2014 at 4:22 AM, John Fisher <fishook2033@gmail.com> wrote:
Show 6 quoted lines
>> Probably known issues. But some elaboration would be nice (e.g. what operation is slow, how slow, some more detail
>> characteristics of the repo..) in case new problems pop up.
>
> so far I have done add, commit, status, clone - commit and status are slow; add seems to depend on the files involved,
> clone seems to run at network speed.
> I can provide metrics later, see above. email me offline with what you want.

OK "commit -a" should be just as slow as "add", but as-is commit and status should be fast unless there are lots of files (how many in your worktree?) or we hit something that makes us look into (large) file content anyway.

-- 
Duy

← back to recent threads