Object deduplication interferes with delta islands performance improvements
We are trying to improve clone performance by using delta islands whenever we repack/gc a repository. The way things are, we never repack/gc a pool repository (as used by object deduplication). That means that packfiles that migrate to the object pool miss out on the delta island improvements.
While I think we may never want to run actual git gc
, we should consider some way of (safely!) repacking pool repositories so that we get a nice delta island structure inside them.
To make this very concrete: if we turn on object dedup for gitlab-org/gitlab-ce the way it works now, then there will be zero impact on that repo from enabling the delta islands feature flag.
2019-06-13 proposed solution:
- repack the pool during FetchIntoObjectPool
- ensure that we create bitmaps in the pool
- ensure that we create delta islands around the correct refs (currently,
refs/remotes/origin/heads
andrefs/remotes/origin/tags
)
Edited by Jacob Vosmaer