From: Jeff King <peff@peff.net>
To: git@vger.kernel.org
Cc: "Vicent Martí" <vicent@github.com>
Subject: [PATCH v3 0/21] pack bitmaps
Date: Thu, 14 Nov 2013 07:41:58 -0500 [thread overview]
Message-ID: <20131114124157.GA23784@sigill.intra.peff.net> (raw)
Here's another iteration of the pack bitmaps series. Compared to v2, it
changes:
- misc style/typo fixes
- portability fixes from Ramsay and Torsten
- count-objects garbage-reporting patch from Duy
- disable bitmaps when is_repository_shallow(); this also covers the
case where the client is shallow, since we feed pack-objects a
--shallow-file in that case. This used to done by checking
!internal_rev_list, but that doesn't apply after cdab485.
- ewah sources now properly use git-compat-util.h and do not include
system headers
- the ewah code uses ewah_malloc, ewah_realloc, and so forth to let the
project use a particular allocator (and we want to use xmalloc and
friends). And we defined those in pack-bitmap.h, but of course that
had no effect on the ewah/*.c files that did not include
pack-bitmap.h. Since we are hacking up and git-ifying libewok
anyway, we can just set the hardcoded fallback to xmalloc instead of
malloc.
- the ewah code used gcc's __builtin_ctzll, but did not provide a
suitable fallback. We now provide a fallback in C.
- The bitmap reading code only handles a single bitmapped pack (since
they must be fully closed, there is not much point in having
multiple). It used to silently ignore extra bitmap indices it found,
but will now warn that they are being ignored.
- The name-hash cache is now optional, controlled by
pack.writeBitmapHashCache.
- The test script will now do basic interoperability testing with jgit
(if you have jgit in your $PATH).
- There are now perf tests. Spoiler alert: bitmaps make clones faster.
See patch 20 for details. We can also measure the speedup from the
hash cache (see patch 21).
Not addressed:
- I did not include the NEEDS_ALIGNED_ACCESS patch. I note that we do
not even have a Makefile knob for this, and the code in read-cache.c
has probably never actually been used. Are there real systems that
have a problem? The read-cache code was in support of the index v4
experiment, which did away with the 8-byte padding. So it could be
that we simply don't see it, because everything is currently
aligned.
- On a related note, we do some cast-buffer-to-struct magic on the
mmap'd file. I note that the regular packfile reader also does this.
How careful do we want to be?
- We still assume that reusing a slice from the front of the pack will
never miss delta bases. This is the case currently for packs
generated by both git and JGit, but it would be nice to mark the
property in the bitmap index. Adding a new flag would break JGit
compatibility, though. We can either make it an option, or assume
it's good enough for now and worry about it in v2.
[01/21]: sha1write: make buffer const-correct
[02/21]: revindex: Export new APIs
[03/21]: pack-objects: Refactor the packing list
[04/21]: pack-objects: factor out name_hash
[05/21]: revision: allow setting custom limiter function
[06/21]: sha1_file: export `git_open_noatime`
[07/21]: compat: add endianness helpers
[08/21]: ewah: compressed bitmap implementation
[09/21]: documentation: add documentation for the bitmap format
[10/21]: pack-bitmap: add support for bitmap indexes
[11/21]: pack-objects: use bitmaps when packing objects
[12/21]: rev-list: add bitmap mode to speed up object lists
[13/21]: pack-objects: implement bitmap writing
[14/21]: repack: stop using magic number for ARRAY_SIZE(exts)
[15/21]: repack: turn exts array into array-of-struct
[16/21]: repack: handle optional files created by pack-objects
[17/21]: repack: consider bitmaps when performing repacks
[18/21]: count-objects: recognize .bitmap in garbage-checking
[19/21]: t: add basic bitmap functionality tests
[20/21]: t/perf: add tests for pack bitmaps
[21/21]: pack-bitmap: implement optional name_hash cache
-Peff
next reply other threads:[~2013-11-14 12:42 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-14 12:41 Jeff King [this message]
2013-11-14 12:42 ` [PATCH v3 01/21] sha1write: make buffer const-correct Jeff King
2013-11-14 12:42 ` [PATCH v3 02/21] revindex: Export new APIs Jeff King
2013-11-14 12:42 ` [PATCH v3 03/21] pack-objects: Refactor the packing list Jeff King
2013-11-14 12:43 ` [PATCH v3 04/21] pack-objects: factor out name_hash Jeff King
2013-11-14 12:43 ` [PATCH v3 05/21] revision: allow setting custom limiter function Jeff King
2013-11-14 12:43 ` [PATCH v3 06/21] sha1_file: export `git_open_noatime` Jeff King
2013-11-14 12:43 ` [PATCH v3 07/21] compat: add endianness helpers Jeff King
2013-11-14 12:43 ` [PATCH v3 08/21] ewah: compressed bitmap implementation Jeff King
2013-11-14 12:44 ` [PATCH v3 09/21] documentation: add documentation for the bitmap format Jeff King
2013-11-14 12:44 ` [PATCH v3 10/21] pack-bitmap: add support for bitmap indexes Jeff King
2013-11-24 21:36 ` Thomas Rast
2013-11-25 15:04 ` [PATCH] Document khash Thomas Rast
2013-11-28 10:35 ` Jeff King
2013-11-27 9:08 ` [PATCH v3 10/21] pack-bitmap: add support for bitmap indexes Karsten Blees
2013-11-28 10:38 ` Jeff King
2013-12-03 14:40 ` Karsten Blees
2013-12-03 18:21 ` Jeff King
2013-12-07 20:52 ` Karsten Blees
2013-11-29 21:21 ` Thomas Rast
2013-12-02 16:12 ` Jeff King
2013-12-02 20:36 ` Junio C Hamano
2013-12-02 20:47 ` Jeff King
2013-12-02 21:43 ` Junio C Hamano
2013-11-14 12:45 ` [PATCH v3 11/21] pack-objects: use bitmaps when packing objects Jeff King
2013-12-07 15:47 ` Thomas Rast
2013-12-21 13:15 ` Jeff King
2013-11-14 12:45 ` [PATCH v3 12/21] rev-list: add bitmap mode to speed up object lists Jeff King
2013-12-07 16:05 ` Thomas Rast
2013-11-14 12:45 ` [PATCH v3 13/21] pack-objects: implement bitmap writing Jeff King
2013-12-07 16:32 ` Thomas Rast
2013-12-21 13:17 ` Jeff King
2013-11-14 12:45 ` [PATCH v3 14/21] repack: stop using magic number for ARRAY_SIZE(exts) Jeff King
2013-12-07 16:34 ` Thomas Rast
2013-11-14 12:46 ` [PATCH v3 15/21] repack: turn exts array into array-of-struct Jeff King
2013-12-07 16:34 ` Thomas Rast
2013-11-14 12:46 ` [PATCH v3 16/21] repack: handle optional files created by pack-objects Jeff King
2013-12-07 16:35 ` Thomas Rast
2013-11-14 12:46 ` [PATCH v3 17/21] repack: consider bitmaps when performing repacks Jeff King
2013-12-07 16:37 ` Thomas Rast
2013-11-14 12:46 ` [PATCH v3 18/21] count-objects: recognize .bitmap in garbage-checking Jeff King
2013-12-07 16:38 ` Thomas Rast
2013-11-14 12:46 ` [PATCH v3 19/21] t: add basic bitmap functionality tests Jeff King
2013-12-07 16:43 ` Thomas Rast
2013-12-21 13:22 ` Jeff King
2013-11-14 12:48 ` [PATCH v3 20/21] t/perf: add tests for pack bitmaps Jeff King
2013-12-07 16:51 ` Thomas Rast
2013-12-21 13:40 ` Jeff King
2013-11-14 12:48 ` [PATCH v3 21/21] pack-bitmap: implement optional name_hash cache Jeff King
2013-12-07 16:59 ` Thomas Rast
2013-11-14 19:19 ` [PATCH v3 0/21] pack bitmaps Ramsay Jones
2013-11-14 21:33 ` Jeff King
2013-11-14 23:09 ` Ramsay Jones
2013-11-18 21:16 ` Ramsay Jones
2013-11-16 10:28 ` Thomas Rast
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20131114124157.GA23784@sigill.intra.peff.net \
--to=peff@peff.net \
--cc=git@vger.kernel.org \
--cc=vicent@github.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).