From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
To: David Turner <dturner@twopensource.com>
Cc: git@vger.kernel.org, pclouds@gmail.com,
Ramsay Jones <ramsay@ramsayjones.plus.com>
Subject: Re: [PATCH v5 03/15] index-helper: new daemon for caching index and related stuff
Date: Wed, 20 Apr 2016 14:17:06 +0200 (CEST) [thread overview]
Message-ID: <alpine.DEB.2.20.1604201349590.2826@virtualbox> (raw)
In-Reply-To: <1461108489-29376-4-git-send-email-dturner@twopensource.com>
Hi Dave,
(apologies in advance if I may bring up anything that has been discussed
in earlier iterations; I simply was too busy with the rebase--helper
project to even look.)
On Tue, 19 Apr 2016, David Turner wrote:
> Shared memory is done by storing files in a per-repository temporary
> directory. This is more portable than shm (which requires
> posix-realtime and has various quirks on OS X). It might even work on
> Windows, although this has not been tested. The shared memory file's
> name folows the template "shm-<object>-<SHA1>" where <SHA1> is the
s/folows/follows/
And: now that it is no longer shared memory, should we not do away with
the "shm-" prefix?
> trailing SHA-1 of the index file. <object> is "index" for cached index
> files (and might later be "name-hash" for name-hash cache). If such
> shared memory exists, it contains the same index content as on
> disk. The content is already validated by the daemon and git won't
> validate it again (except comparing the trailing SHA-1s).
Excellent. I was worrying about the penalty of validating.
> We keep this daemon's logic as thin as possible. The "brain" stays in
> git. So the daemon can read and validate stuff, but that's all it's
> allowed to do. It does not add/create new information. It doesn't even
> accept direct updates from git.
I like this design. For now. Later, I really think we should add the
ability to update the index via the index-helper. I am thinking about a
method similar to watchman where a separate process (that may use the
inotify syscall on Linux, or tap into the NTFS journal on Windows) tells
the index-helper specifically which paths to look at, so that nobody ever
has to look at any files that were not modified at all.
> + if (*new_mmap == MAP_FAILED) {
> + *new_mmap = NULL;
> + goto done;
Shouldn't we provide some sort of error message here?
> + }
> + madvise(new_mmap, size, MADV_WILLNEED);
I guess I'll need to add support for that to compat/win32mmap.c (most
likely using PrefetchVirtualMemory() when available, i.e. Windows >= 8, see
https://msdn.microsoft.com/en-us/library/windows/desktop/hh780543.aspx :-))
Likewise, I think it will be easy to use bidirectional named pipes on
Windows to accommodate for the lack of Unix domain sockets...
Ciao,
Dscho
next prev parent reply other threads:[~2016-04-20 12:17 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-19 23:27 [PATCH v5 00/15] index-helper/watchman David Turner
2016-04-19 23:27 ` [PATCH v5 01/15] read-cache.c: fix constness of verify_hdr() David Turner
2016-04-19 23:27 ` [PATCH v5 02/15] read-cache: allow to keep mmap'd memory after reading David Turner
2016-04-20 9:01 ` Johannes Schindelin
2016-04-20 19:41 ` David Turner
2016-04-20 9:26 ` Duy Nguyen
2016-04-20 19:43 ` David Turner
2016-04-19 23:27 ` [PATCH v5 03/15] index-helper: new daemon for caching index and related stuff David Turner
2016-04-20 12:17 ` Johannes Schindelin [this message]
2016-04-20 12:31 ` Duy Nguyen
2016-04-20 19:38 ` David Turner
2016-04-19 23:27 ` [PATCH v5 04/15] index-helper: add --strict David Turner
2016-04-19 23:27 ` [PATCH v5 05/15] daemonize(): set a flag before exiting the main process David Turner
2016-04-19 23:28 ` [PATCH v5 06/15] index-helper: add --detach David Turner
2016-04-19 23:50 ` Duy Nguyen
2016-04-20 1:04 ` David Turner
2016-04-20 9:33 ` Duy Nguyen
2016-04-25 20:53 ` David Turner
2016-04-19 23:28 ` [PATCH v5 07/15] read-cache: add watchman 'WAMA' extension David Turner
2016-04-19 23:28 ` [PATCH v5 08/15] Add watchman support to reduce index refresh cost David Turner
2016-04-19 23:28 ` [PATCH v5 09/15] index-helper: use watchman to avoid refreshing index with lstat() David Turner
2016-04-20 0:15 ` Duy Nguyen
2016-04-20 1:01 ` David Turner
2016-04-20 9:36 ` Duy Nguyen
2016-04-19 23:28 ` [PATCH v5 10/15] update-index: enable/disable watchman support David Turner
2016-04-19 23:45 ` Duy Nguyen
2016-04-20 19:50 ` David Turner
2016-04-19 23:28 ` [PATCH v5 11/15] unpack-trees: preserve index extensions David Turner
2016-04-19 23:28 ` [PATCH v5 12/15] index-helper: kill mode David Turner
2016-04-19 23:28 ` [PATCH v5 13/15] index-helper: don't run if already running David Turner
2016-04-19 23:28 ` [PATCH v5 14/15] index-helper: autorun mode David Turner
2016-04-19 23:28 ` [PATCH v5 15/15] index-helper: optionally automatically run David Turner
2016-04-20 9:59 ` [PATCH 16/15] Add tracing to measure where most of the time is spent Nguyễn Thái Ngọc Duy
2016-04-20 12:28 ` Johannes Schindelin
2016-04-20 12:36 ` Duy Nguyen
-- strict thread matches above, loose matches on Subject: below --
2016-04-20 0:31 [PATCH v5 03/15] index-helper: new daemon for caching index and related stuff Duy Nguyen
2016-04-20 0:44 ` David Turner
2016-04-20 12:19 ` Johannes Schindelin
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=alpine.DEB.2.20.1604201349590.2826@virtualbox \
--to=johannes.schindelin@gmx.de \
--cc=dturner@twopensource.com \
--cc=git@vger.kernel.org \
--cc=pclouds@gmail.com \
--cc=ramsay@ramsayjones.plus.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).