Re: [PATCH v6 00/11] nd/pack-objects-pack-struct updates

2018-03-23 Thread Jeff King
On Fri, Mar 23, 2018 at 04:01:50PM +, Ramsay Jones wrote: > Not that it matters, but I assume this was something like: > > $ time (echo HEAD | git cat-file --batch-check="%(objectsize:disk)") > > ... and I suspect it was on the linux.git repo, yes? Yes to both. > If I do this on my bigge

Re: [PATCH v6 00/11] nd/pack-objects-pack-struct updates

2018-03-23 Thread Ramsay Jones
On 23/03/18 05:50, Jeff King wrote: > On Thu, Mar 22, 2018 at 10:46:09PM -0400, Jeff King wrote: [snip] > I was curious whether my hand-waving there was true. It turns out that > it is: the radix sort has stayed about the same speed but the comparison > sort has gotten even slower. Here are best-

Re: [PATCH v6 00/11] nd/pack-objects-pack-struct updates

2018-03-23 Thread Ramsay Jones
On 23/03/18 02:46, Jeff King wrote: > On Fri, Mar 23, 2018 at 01:28:12AM +, Ramsay Jones wrote: > >>> Of the used heap after your patches: >>> >>> - ~40% of that is from packlist_alloc() >>> - ~17% goes to "struct object" >>> - ~10% for the object.c hash table to store all the "struct obj

Re: [PATCH v6 00/11] nd/pack-objects-pack-struct updates

2018-03-23 Thread Duy Nguyen
On Fri, Mar 23, 2018 at 3:46 AM, Jeff King wrote: > On Fri, Mar 23, 2018 at 01:28:12AM +, Ramsay Jones wrote: > >> > Of the used heap after your patches: >> > >> > - ~40% of that is from packlist_alloc() >> > - ~17% goes to "struct object" >> > - ~10% for the object.c hash table to store al

Re: [PATCH v6 00/11] nd/pack-objects-pack-struct updates

2018-03-22 Thread Jeff King
On Thu, Mar 22, 2018 at 10:46:09PM -0400, Jeff King wrote: > > which begs the question, how much slower would it be if we > > replaced the radix-sort with an in-place sort (e.g. heapsort). > > > > I hacked up the patch below, just for fun. I don't have any > > large repos (or enough disk space) t

Re: [PATCH v6 00/11] nd/pack-objects-pack-struct updates

2018-03-22 Thread Jeff King
On Fri, Mar 23, 2018 at 01:28:12AM +, Ramsay Jones wrote: > > Of the used heap after your patches: > > > > - ~40% of that is from packlist_alloc() > > - ~17% goes to "struct object" > > - ~10% for the object.c hash table to store all the "struct object" > > - ~7% goes to the delta cache >

Re: [PATCH v6 00/11] nd/pack-objects-pack-struct updates

2018-03-22 Thread Ramsay Jones
On 22/03/18 09:32, Jeff King wrote: > On Wed, Mar 21, 2018 at 04:59:19PM +0100, Duy Nguyen wrote: > >>> I hate to be a wet blanket, but am I the only one who is wondering >>> whether the tradeoffs is worth it? 8% memory reduction doesn't seem >>> mind-bogglingly good, >> >> AEvar measured RSS. I

Re: [PATCH v6 00/11] nd/pack-objects-pack-struct updates

2018-03-22 Thread Duy Nguyen
On Thu, Mar 22, 2018 at 12:52 PM, Jeff King wrote: > On Thu, Mar 22, 2018 at 11:57:27AM +0100, Duy Nguyen wrote: > >> On Thu, Mar 22, 2018 at 10:32 AM, Jeff King wrote: >> > That would still mean you could get into a broken state for serving >> > fetches, but you could at least get out of it by r

Re: [PATCH v6 00/11] nd/pack-objects-pack-struct updates

2018-03-22 Thread Jeff King
On Thu, Mar 22, 2018 at 11:57:27AM +0100, Duy Nguyen wrote: > On Thu, Mar 22, 2018 at 10:32 AM, Jeff King wrote: > > That would still mean you could get into a broken state for serving > > fetches, but you could at least get out of it by running "git repack". > > I was puzzled by this "broken st

Re: [PATCH v6 00/11] nd/pack-objects-pack-struct updates

2018-03-22 Thread Duy Nguyen
On Thu, Mar 22, 2018 at 10:32 AM, Jeff King wrote: > That would still mean you could get into a broken state for serving > fetches, but you could at least get out of it by running "git repack". I was puzzled by this "broken state" statement. But you were right! I focused on the repack case and fo

Re: [PATCH v6 00/11] nd/pack-objects-pack-struct updates

2018-03-22 Thread Jeff King
On Thu, Mar 22, 2018 at 09:23:42AM +0100, Duy Nguyen wrote: > > I wish you were right about the rarity, but it's unfortunately something > > I have seen multiple times in the wild (and why I spent time optimizing > > the many-packs case for pack-objects). Unfortunately I don't know how > > often i

Re: [PATCH v6 00/11] nd/pack-objects-pack-struct updates

2018-03-22 Thread Jeff King
On Thu, Mar 22, 2018 at 05:32:12AM -0400, Jeff King wrote: > So 27% of the total heap goes away if you switch to a separate rev-list. > Though it's mostly just going to a different process, it does help peak > because that process would have exited by the time we get to the > revindex bits. > > I

Re: [PATCH v6 00/11] nd/pack-objects-pack-struct updates

2018-03-22 Thread Jeff King
On Wed, Mar 21, 2018 at 04:59:19PM +0100, Duy Nguyen wrote: > > I hate to be a wet blanket, but am I the only one who is wondering > > whether the tradeoffs is worth it? 8% memory reduction doesn't seem > > mind-bogglingly good, > > AEvar measured RSS. If we count objects[] array alone, the savin

Re: [PATCH v6 00/11] nd/pack-objects-pack-struct updates

2018-03-22 Thread Duy Nguyen
On Thu, Mar 22, 2018 at 9:07 AM, Jeff King wrote: > On Wed, Mar 21, 2018 at 05:31:14PM +0100, Ævar Arnfjörð Bjarmason wrote: > >> > [...]Yes, having that many packs is insane, but that's going to be >> > small consolation to somebody whose automated maintenance program now >> > craps out at 16k pa

Re: [PATCH v6 00/11] nd/pack-objects-pack-struct updates

2018-03-22 Thread Jeff King
On Wed, Mar 21, 2018 at 05:31:14PM +0100, Ævar Arnfjörð Bjarmason wrote: > > [...]Yes, having that many packs is insane, but that's going to be > > small consolation to somebody whose automated maintenance program now > > craps out at 16k packs, when it previously would have just worked to > > fix

Re: [PATCH v6 00/11] nd/pack-objects-pack-struct updates

2018-03-21 Thread Junio C Hamano
Duy Nguyen writes: > And we could even do something like this to make custom builds > easier. Some more gluing is needed so you can set this from config.mak > but you get the idea. This removes all limits set by this > series. Yes, we _could_, but it would mean we would have many variants of the

Re: [PATCH v6 00/11] nd/pack-objects-pack-struct updates

2018-03-21 Thread Duy Nguyen
On Wed, Mar 21, 2018 at 5:53 PM, Junio C Hamano wrote: > Ævar Arnfjörð Bjarmason writes: > >> That's going to be super rare (and probably nonexisting) edge case, but >> (untested) I wonder if something like this on top would alleviate your >> concerns, i.e. instead of dying we just take the first

Re: [PATCH v6 00/11] nd/pack-objects-pack-struct updates

2018-03-21 Thread Junio C Hamano
Ævar Arnfjörð Bjarmason writes: > That's going to be super rare (and probably nonexisting) edge case, but > (untested) I wonder if something like this on top would alleviate your > concerns, i.e. instead of dying we just take the first N packs up to our > limit: > > diff --git a/builtin/pack-

Re: [PATCH v6 00/11] nd/pack-objects-pack-struct updates

2018-03-21 Thread Duy Nguyen
On Wed, Mar 21, 2018 at 04:59:19PM +0100, Duy Nguyen wrote: > About the 16k limit (and some other limits as well), I'm making these > patches with the assumption that large scale deployment probably will > go with custom builds anyway. Adjusting the limits back should be > quite easy while we can s

Re: [PATCH v6 00/11] nd/pack-objects-pack-struct updates

2018-03-21 Thread Ævar Arnfjörð Bjarmason
On Wed, Mar 21 2018, Jeff King wrote: > On Sun, Mar 18, 2018 at 03:25:15PM +0100, Nguyễn Thái Ngọc Duy wrote: > >> v6 fixes the one optimization that I just couldn't get right, fixes >> two off-by-one error messages and a couple commit message update >> (biggest change is in 11/11 to record some

Re: [PATCH v6 00/11] nd/pack-objects-pack-struct updates

2018-03-21 Thread Duy Nguyen
On Wed, Mar 21, 2018 at 5:17 PM, Ævar Arnfjörð Bjarmason wrote: >>> I think ultimately to work on low-memory machines we'll need a >>> fundamentally different approach that scales with the objects since the >>> last pack, and not with the complete history. >> >> Absolutely. Which is covered in a s

Re: [PATCH v6 00/11] nd/pack-objects-pack-struct updates

2018-03-21 Thread Ævar Arnfjörð Bjarmason
On Wed, Mar 21 2018, Duy Nguyen wrote: > On Wed, Mar 21, 2018 at 9:24 AM, Jeff King wrote: >> On Sun, Mar 18, 2018 at 03:25:15PM +0100, Nguyễn Thái Ngọc Duy wrote: >> >>> v6 fixes the one optimization that I just couldn't get right, fixes >>> two off-by-one error messages and a couple commit mes

Re: [PATCH v6 00/11] nd/pack-objects-pack-struct updates

2018-03-21 Thread Duy Nguyen
On Wed, Mar 21, 2018 at 9:24 AM, Jeff King wrote: > On Sun, Mar 18, 2018 at 03:25:15PM +0100, Nguyễn Thái Ngọc Duy wrote: > >> v6 fixes the one optimization that I just couldn't get right, fixes >> two off-by-one error messages and a couple commit message update >> (biggest change is in 11/11 to r

Re: [PATCH v6 00/11] nd/pack-objects-pack-struct updates

2018-03-21 Thread Jeff King
On Sun, Mar 18, 2018 at 03:25:15PM +0100, Nguyễn Thái Ngọc Duy wrote: > v6 fixes the one optimization that I just couldn't get right, fixes > two off-by-one error messages and a couple commit message update > (biggest change is in 11/11 to record some numbers from AEvar) I was traveling during so

Re: [PATCH v6 00/11] nd/pack-objects-pack-struct updates

2018-03-18 Thread Ævar Arnfjörð Bjarmason
On Sun, Mar 18 2018, Nguyễn Thái Ngọc Duy jotted: > v6 fixes the one optimization that I just couldn't get right, fixes > two off-by-one error messages and a couple commit message update > (biggest change is in 11/11 to record some numbers from AEvar) Thanks, aside from the minor typo I just not

[PATCH v6 00/11] nd/pack-objects-pack-struct updates

2018-03-18 Thread Nguyễn Thái Ngọc Duy
v6 fixes the one optimization that I just couldn't get right, fixes two off-by-one error messages and a couple commit message update (biggest change is in 11/11 to record some numbers from AEvar) diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c index fb2aba80bf..4406af640f 100644 --- a