fsmonitor: add a performance test
authorBen Peart <benpeart@microsoft.com>
Fri, 22 Sep 2017 16:35:48 +0000 (12:35 -0400)
committerJunio C Hamano <gitster@pobox.com>
Sun, 1 Oct 2017 08:23:05 +0000 (17:23 +0900)
commit14527b30022190c6e7e8cd7f7dbef4195ebeedc2
treeccc0578b8d6139da7caa33bfe10a72cf763e07f6
parentdef4376711f607914bfb784f8de21867062fa284
fsmonitor: add a performance test

Add a test utility (test-drop-caches) that flushes all changes to disk
then drops file system cache on Windows, Linux, and OSX.

Add a perf test (p7519-fsmonitor.sh) for fsmonitor.

By default, the performance test will utilize the Watchman file system
monitor if it is installed.  If Watchman is not installed, it will use a
dummy integration script that does not report any new or modified files.
The dummy script has very little overhead which provides optimistic results.

The performance test will also use the untracked cache feature if it is
available as fsmonitor uses it to speed up scanning for untracked files.

There are 4 environment variables that can be used to alter the default
behavior of the performance test:

GIT_PERF_7519_UNTRACKED_CACHE: used to configure core.untrackedCache
GIT_PERF_7519_SPLIT_INDEX: used to configure core.splitIndex
GIT_PERF_7519_FSMONITOR: used to configure core.fsmonitor
GIT_PERF_7519_DROP_CACHE: if set, the OS caches are dropped between tests

The big win for using fsmonitor is the elimination of the need to scan the
working directory looking for changed and untracked files. If the file
information is all cached in RAM, the benefits are reduced.

Signed-off-by: Ben Peart <benpeart@microsoft.com>
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Makefile
t/helper/.gitignore
t/helper/test-drop-caches.c [new file with mode: 0644]
t/perf/p7519-fsmonitor.sh [new file with mode: 0755]