Thread (20 messages) 20 messages, 5 authors, 2019-06-04

Re: git archive generates tar with malformed pax extended attribute

From: René Scharfe <hidden>
Date: 2019-06-02 16:59:38

Am 30.05.19 um 13:55 schrieb Jeff King:
On Wed, May 29, 2019 at 07:54:44PM +0200, René Scharfe wrote:
quoted
Am 29.05.19 um 03:17 schrieb Jeff King:
quoted
But here the problem is in the tree, not the blob. So we're not finding
suspect blobs, but rather re-checking each tree. And no matter what we
do (whether it's visiting the object again, or creating a set or mapping
with the object names) is going to be linear there. And a repository
with a symlink in the root tree is going to revisit or put in our
mapping every single root tree.
That's true, potentially it needs remember and/or reprocess all trees,
meaning this check may double the run time of fsck in the worst case.
Example from the wild: The kernel repo currently has 36 symlinks and
6+ million objects are checked in total, and the symlink check processes
18943 trees_with_symlinks entries there.
That sounds about right. It's basically every version of every tree that
has a symlink. Did it make a noticeable difference in timing? Indexing
the whole kernel history is already a horribly slow process. :)
Right, I didn't notice a difference -- no patience for watching that
thing to the end.  But here are some numbers for v2.21.0 vs. master with
the patch:

Benchmark #1: git fsck
  Time (mean ± σ):     307.775 s ±  9.054 s    [User: 307.173 s, System: 0.448 s]
  Range (min … max):   294.052 s … 322.931 s    10 runs

Benchmark #2: ~/src/git/git fsck
  Time (mean ± σ):     319.754 s ±  2.255 s    [User: 318.927 s, System: 0.671 s]
  Range (min … max):   316.376 s … 323.747 s    10 runs

Summary
  'git fsck' ran
    1.04 ± 0.03 times faster than '~/src/git/git fsck'

Seeing only a single CPU core being stressed for that long is a bit sad
to see.  Checking individual objects should be relatively easy to
parallelize, shouldn't it?

René
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help