Subject: Re: [PATCH v4 03/16] index-helper: new daemon for caching index and related stuff

From: Junio C Hamano <[email-masked]>
Date: Thu, 14 Apr 2016 09:56:51 -0700

David Turner <[email-masked]> writes:

> $GIT_DIR/index-helper.path is a symlink to the socket for the daemon
> process. The daemon reads from the socket and executes commands.

We generally avoid using symbolic links inside $GIT_DIR (we used to
represent the current branch by a symbolic link HEAD pointing at the
underlying ref, but switched to the textual symref long time ago,
and we did the ".git pointing at the real repository location" to
support submodules also in a similar way).

I wonder if we can change this to a file that records the location
of the socket without bending over backwards too much?

> Named pipes were considered for portability reasons, but then commands
> that need replies from the daemon would have open their own pipes,
> since a named pipe should only have one reader.  Unix domain sockets
> don't have this problem.
>
> On webkit.git with index format v2, duplicating 8 times to 1.4m
> entries and 200MB in size:
>
> (vanilla)      0.986986364 s: read_index_from .git/index
> (index-helper) 0.267850279 s: read_index_from .git/index
>
> Interestingly with index v4, we get less out of index-helper. It makes
> sense as v4 requires more processing after loading the index:
>
> (vanilla)      0.722496666 s: read_index_from .git/index
> (index-helper) 0.302741500 s: read_index_from .git/index
>
> (these benchmarks are from an earlier version of this patch, but should
> still be valid).

Just something to keep in mind; we'd need to see updated numbers
when the series matures.