On Fri, Jul 01, 2022 at 02:16:26PM -0400, Jeff King wrote: > On Tue, Jun 28, 2022 at 02:30:20PM -0400, Taylor Blau wrote: > > > Even though this comment was written in a good spirit, it is updated > > infrequently enough that is serves to confuse rather than to encourage > > contributors to update the appropriate values when the modify the > > definition of object_entry. > > > > For that reason, eliminate the confusion by removing the comment > > altogether. > > I agree the actual numbers aren't helping anybody. We _could_ leave a > comment that says "we store a lot of these in memory; be careful of > where and how you add new fields to avoid increasing the struct size". > And then people can run "pahole" before and after their changes. > > But then that is also true of other structs (like "struct object"), and > we do not bother there. So it probably is fine not to annotate this > specifically. We have such a comment at the very type of the block comment above `struct object_entry`'s definition: "The size of struct nearly determines pack-object's memory consumption. This struct is packed tight for that reason. When you add or reorder something in this struct, think a bit about this". thanks to Duy back in 3b13a5f263 (pack-objects: reorder members to shrink struct object_entry, 2018-04-14). > Speaking of which, I suspect quite a lot of memory could be saved if > "pack-objects --revs" freed the object structs it allocates during its > traversal. Unless we're generating bitmaps, I don't think they get used > again after the initial packing list is generated. At peak you'd > still be storing all of the object_entry structs alongside the objects > as you finish the traversal, but it wouldn't overlap with any memory > used for the delta search, and of course we'd be at that peak for a much > smaller time. > > Not a blocker for your patch obviously, but maybe a fun experiment in an > adjacent area. Possibly even an ambitious #leftoverbits opportunity. :) Challenge accepted! ;-) Thanks, Taylor