Subject: Re: [PATCH 3/4] t/perf/p7519-fsmonitor.sh: warm cache on first git status

From: Taylor Blau <[email-masked]>
Date: Sun, 18 Oct 2020 00:22:44 -0400

On Sat, Oct 17, 2020 at 09:04:35PM +0000, Nipunn Koorapati via GitGitGadget wrote:
> From: Nipunn Koorapati <[email-masked]>
>
> The first git status would be inflated due to warming of
> filesystem cache. This makes the results comparable.
>
> Before
> Test                                                             this tree
> --------------------------------------------------------------------------------
> 7519.2: status (fsmonitor=.git/hooks/fsmonitor-watchman)         2.52(1.59+1.56)
> 7519.3: status -uno (fsmonitor=.git/hooks/fsmonitor-watchman)    0.18(0.12+0.06)
> 7519.4: status -uall (fsmonitor=.git/hooks/fsmonitor-watchman)   1.36(0.73+0.62)
> 7519.7: status (fsmonitor=)                                      0.69(0.52+0.90)
> 7519.8: status -uno (fsmonitor=)                                 0.37(0.28+0.81)
> 7519.9: status -uall (fsmonitor=)                                1.53(0.93+1.32)
>
> After
> Test                                                             this tree
> --------------------------------------------------------------------------------
> 7519.2: status (fsmonitor=.git/hooks/fsmonitor-watchman)         0.39(0.33+0.06)
> 7519.3: status -uno (fsmonitor=.git/hooks/fsmonitor-watchman)    0.17(0.13+0.05)
> 7519.4: status -uall (fsmonitor=.git/hooks/fsmonitor-watchman)   1.34(0.77+0.56)
> 7519.7: status (fsmonitor=)                                      0.70(0.53+0.90)
> 7519.8: status -uno (fsmonitor=)                                 0.37(0.32+0.78)
> 7519.9: status -uall (fsmonitor=)                                1.55(1.01+1.25)

Note that you can directly compare results with the perf suite's "run"
script by passing two revisions in addition to the test that you want to
run and have the results aggregated side-by-side.

In your case, you'd want something like (within the t/perf directory):

  $ ./run HEAD . p7519-*.sh

where this patch is the uncommitted state (alternatively you could
compare the two revisions directly in the case that you have already
committed).

> diff --git a/t/perf/p7519-fsmonitor.sh b/t/perf/p7519-fsmonitor.sh
> index def7ecdbc7..9313d4a51d 100755
> --- a/t/perf/p7519-fsmonitor.sh
> +++ b/t/perf/p7519-fsmonitor.sh
> @@ -114,7 +114,8 @@ test_expect_success "setup for fsmonitor" '
>  	fi &&
>
>  	git config core.fsmonitor "$INTEGRATION_SCRIPT" &&
> -	git update-index --fsmonitor
> +	git update-index --fsmonitor &&
> +	git status  # Warm caches

Seems reasonable, and the comment is much appreciated :-).

Thanks,
Taylor