[PATCH v6 5/7] read-cache: load cache extensions on a worker thread

2018-09-26 Thread Ben Peart
performance data: Test w/100,000 files reduced the time by 0.53% Test w/1,000,000 files reduced the time by 27.78% Signed-off-by: Ben Peart --- read-cache.c | 97 +++- 1 file changed, 81 insertions(+), 16 deletions(-) diff --git a/read

[PATCH v6 4/7] config: add new index.threads config setting

2018-09-26 Thread Ben Peart
will set the maximum number of threads to use. For testing purposes, this setting can be overwritten by setting the GIT_TEST_INDEX_THREADS= environment variable to a value greater than 0. Signed-off-by: Ben Peart --- Documentation/config.txt | 7 +++ config.c | 18

[PATCH v6 2/7] read-cache: clean up casting and byte decoding

2018-09-26 Thread Ben Peart
This patch does a clean up pass to minimize the casting required to work with the memory mapped index (mmap). It also makes the decoding of network byte order more consistent by using get_be32() where possible. Signed-off-by: Ben Peart --- read-cache.c | 23 +++ 1 file

[PATCH v6 1/7] read-cache.c: optimize reading index format v4

2018-09-26 Thread Ben Peart
From: Nguyễn Thái Ngọc Duy Index format v4 requires some more computation to assemble a path based on a previous one. The current code is not very efficient because - it doubles memory copy, we assemble the final path in a temporary first before putting it back to a cache_entry -

[PATCH v6 3/7] eoie: add End of Index Entry (EOIE) extension

2018-09-26 Thread Ben Peart
(but not their contents). E.g. if we have "TREE" extension that is N-bytes long, "REUC" extension that is M-bytes long, followed by "EOIE", then the hash would be: SHA-1("TREE" + + "REUC" + ) Signed-off-by: Ben Peart --- Documentation/t

[PATCH v6 0/7] speed up index load through parallelization

2018-09-26 Thread Ben Peart
tensions is probably worth looking into as a quick examination shows that the bulk of the time for both of them is spent in xcalloc(). ### Patches Ben Peart (6): read-cache: clean up casting and byte decoding eoie: add End of Index Entry (EOIE) extension config: add new index.threads config settin

Re: [PATCH 1/1] read-cache: update index format default to v4

2018-09-25 Thread Ben Peart
On 9/25/2018 2:01 PM, Stefan Beller wrote: On Tue, Sep 25, 2018 at 7:30 AM Derrick Stolee wrote: On 9/25/2018 3:06 AM, Patrick Steinhardt wrote: On Mon, Sep 24, 2018 at 11:32:23PM +0200, SZEDER Gábor wrote: On Mon, Sep 24, 2018 at 02:15:30PM -0700, Derrick Stolee via GitGitGadget wrote:

Re: Git Test Coverage Report (Tuesday, Sept 25)

2018-09-25 Thread Ben Peart
On 9/25/2018 2:42 PM, Derrick Stolee wrote: In an effort to ensure new code is reasonably covered by the test suite, we now have contrib/coverage-diff.sh to combine the gcov output from 'make coverage-test ; make coverage-report' with the output from 'git diff A B' to discover _new_ lines

Re: Re*: [PATCH v3 0/5] Cleanup pass on special test setups

2018-09-25 Thread Ben Peart
On 9/20/2018 2:43 PM, Junio C Hamano wrote: Ben Peart writes: This round has one code change based on feedback. Other changes are just rewording commit messages. Thanks. I think the only remaining issue is what to do with the interaction between extra/additional error message that comes

[PATCH v3 5/5] preload-index: update GIT_FORCE_PRELOAD_TEST support

2018-09-18 Thread Ben Peart
. Signed-off-by: Ben Peart --- preload-index.c | 2 +- t/README| 3 +++ t/t7519-status-fsmonitor.sh | 4 ++-- t/test-lib.sh | 1 + 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/preload-index.c b/preload-index.c index 0a4e2933bb

[PATCH v3 3/5] fsmonitor: update GIT_TEST_FSMONITOR support

2018-09-18 Thread Ben Peart
. Signed-off-by: Ben Peart --- config.c| 2 +- t/README| 4 t/t1700-split-index.sh | 2 +- t/t7519-status-fsmonitor.sh | 2 +- t/test-lib.sh | 20 5 files changed, 27 insertions(+), 3 deletions(-) diff --git

[PATCH v3 4/5] read-cache: update TEST_GIT_INDEX_VERSION support

2018-09-18 Thread Ben Peart
. Signed-off-by: Ben Peart --- Makefile | 6 +++--- t/README | 4 t/test-lib.sh | 14 -- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 5a969f5830..9e84ef02f7 100644 --- a/Makefile +++ b/Makefile @@ -400,7 +400,7 @@ all

[PATCH v3 2/5] preload-index: use git_env_bool() not getenv() for customization

2018-09-18 Thread Ben Peart
GIT_FORCE_PRELOAD_TEST is only checked for presence by using getenv(). Use git_env_bool() instead so that GIT_FORCE_PRELOAD_TEST=false can work as expected. Signed-off-by: Ben Peart --- preload-index.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/preload-index.c b

[PATCH v3 0/5] Cleanup pass on special test setups

2018-09-18 Thread Ben Peart
_INDEX_VERSION +fi + # Add libc MALLOC and MALLOC_PERTURB test # only if we are not executing the test with valgrind if expr " $GIT_TEST_OPTS " : ".* --valgrind " >/dev/null || ### Patches Ben Peart (5): t/README: correct spelling of "uncommon" preload-inde

[PATCH v3 1/5] t/README: correct spelling of "uncommon"

2018-09-18 Thread Ben Peart
Correct a spelling error in the documentation for GIT_TEST_OE_DELTA_SIZE. Signed-off-by: Ben Peart --- t/README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/t/README b/t/README index 9028b47d92..56a417439c 100644 --- a/t/README +++ b/t/README @@ -315,7 +315,7 @@ packs

Re: [PATCH v5 3/5] read-cache: load cache entries on worker threads

2018-09-17 Thread Ben Peart
On 9/15/2018 7:09 AM, Duy Nguyen wrote: On Sat, Sep 15, 2018 at 01:07:46PM +0200, Duy Nguyen wrote: 12:50:00.084237 read-cache.c:1721 start loading index 12:50:00.119941 read-cache.c:1943 performance: 0.034778758 s: loaded all extensions (1667075 bytes) 12:50:00.185352

Re: [PATCH v5 3/5] read-cache: load cache entries on worker threads

2018-09-17 Thread Ben Peart
On 9/15/2018 6:31 AM, Duy Nguyen wrote: On Wed, Sep 12, 2018 at 6:18 PM Ben Peart wrote: This patch helps address the CPU cost of loading the index by creating multiple threads to divide the work of loading and converting the cache entries across all available CPU cores. It accomplishes

Re: [PATCH v5 2/5] read-cache: load cache extensions on a worker thread

2018-09-17 Thread Ben Peart
On 9/15/2018 6:24 AM, Duy Nguyen wrote: On Sat, Sep 15, 2018 at 12:22 PM Duy Nguyen wrote: @@ -1944,6 +1993,26 @@ int do_read_index(struct index_state *istate, const char *path, int must_exist) istate->cache = xcalloc(istate->cache_alloc, sizeof(*istate->cache));

Re: [PATCH v5 2/5] read-cache: load cache extensions on a worker thread

2018-09-17 Thread Ben Peart
On 9/15/2018 6:22 AM, Duy Nguyen wrote: +index.threads:: + Specifies the number of threads to spawn when loading the index. + This is meant to reduce index load time on multiprocessor machines. + Specifying 0 or 'true' will cause Git to auto-detect the number of +

Re: [PATCH v5 1/5] eoie: add End of Index Entry (EOIE) extension

2018-09-17 Thread Ben Peart
On 9/15/2018 6:02 AM, Duy Nguyen wrote: default: if (*ext < 'A' || 'Z' < *ext) return error("index uses %.4s extension, which we do not understand", @@ -1889,6 +1893,11 @@ static size_t estimate_cache_size(size_t ondisk_size, unsigned int

Re: [PATCH] read-cache.c: fix a sparse warning

2018-09-17 Thread Ben Peart
On 9/16/2018 3:17 AM, Eric Sunshine wrote: On Fri, Sep 14, 2018 at 7:29 PM Ramsay Jones wrote: At one time, the POSIX standard required the type used to represent a thread handle (pthread_t) be an arithmetic type. This is no longer the case, probably because different platforms used to

[PATCH v2 4/5] read-cache: update TEST_GIT_INDEX_VERSION support

2018-09-14 Thread Ben Peart
. Signed-off-by: Ben Peart --- Makefile | 6 +++--- t/README | 4 t/test-lib.sh | 5 +++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 5a969f5830..9e84ef02f7 100644 --- a/Makefile +++ b/Makefile @@ -400,7 +400,7 @@ all:: # (defaults

[PATCH v2 3/5] fsmonitor: update GIT_TEST_FSMONITOR support

2018-09-14 Thread Ben Peart
. Signed-off-by: Ben Peart --- config.c| 2 +- t/README| 4 t/t1700-split-index.sh | 2 +- t/t7519-status-fsmonitor.sh | 2 +- t/test-lib.sh | 20 5 files changed, 27 insertions(+), 3 deletions(-) diff --git

[PATCH v2 5/5] preload-index: update GIT_FORCE_PRELOAD_TEST support

2018-09-14 Thread Ben Peart
. Signed-off-by: Ben Peart --- preload-index.c | 2 +- t/README| 3 +++ t/t7519-status-fsmonitor.sh | 4 ++-- t/test-lib.sh | 1 + 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/preload-index.c b/preload-index.c index 0a4e2933bb

[PATCH v2 0/5] Cleanup pass on special test setups

2018-09-14 Thread Ben Peart
_PRELOAD_TEST variable has been renamed to GIT_TEST_PRELOAD_INDEX" - exit 1 - fi -fi +check_var_migration GIT_FSMONITOR_TEST GIT_TEST_FSMONITOR +check_var_migration TEST_GIT_INDEX_VERSION GIT_TEST_INDEX_VERSION +check_var_migration GIT_FORCE_PRELOAD_TEST GIT_TEST_PRELOAD_INDEX

[PATCH v2 1/5] correct typo/spelling error in t/README

2018-09-14 Thread Ben Peart
Correct a spelling error in the documentation for GIT_TEST_OE_DELTA_SIZE Signed-off-by: Ben Peart --- t/README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/t/README b/t/README index 9028b47d92..56a417439c 100644 --- a/t/README +++ b/t/README @@ -315,7 +315,7 @@ packs

[PATCH v2 2/5] preload-index: teach GIT_FORCE_PRELOAD_TEST to take a boolean

2018-09-14 Thread Ben Peart
Teach GIT_FORCE_PRELOAD_TEST to take a boolean to turn on or off this test feature instead of simply testing for existance. Signed-off-by: Ben Peart --- preload-index.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/preload-index.c b/preload-index.c index 71cd2437a3

Re: [PATCH v1 2/4] fsmonitor: update GIT_TEST_FSMONITOR support

2018-09-14 Thread Ben Peart
On 9/14/2018 1:15 PM, Junio C Hamano wrote: Ben Peart writes: diff --git a/config.c b/config.c index 3461993f0a..3555c63f28 100644 --- a/config.c +++ b/config.c @@ -2278,7 +2278,7 @@ int git_config_get_max_percent_split_change(void) int git_config_get_fsmonitor(void

[PATCH v1 2/4] fsmonitor: update GIT_TEST_FSMONITOR support

2018-09-14 Thread Ben Peart
. If the new variable is also set, just give a warning so they can eventually remove the old variable. Signed-off-by: Ben Peart --- config.c| 2 +- t/README| 4 t/t1700-split-index.sh | 2 +- t/t7519-status-fsmonitor.sh | 2 +- t/test-lib.sh

[PATCH v1 1/4] correct typo/spelling error in t/README

2018-09-14 Thread Ben Peart
Correct a spelling error in the documentation for GIT_TEST_OE_DELTA_SIZE Signed-off-by: Ben Peart --- t/README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/t/README b/t/README index 9028b47d92..56a417439c 100644 --- a/t/README +++ b/t/README @@ -315,7 +315,7 @@ packs

[PATCH v1 3/4] read-cache: update TEST_GIT_INDEX_VERSION support

2018-09-14 Thread Ben Peart
. If the new variable is also set, just give a warning so they can eventually remove the old variable. Signed-off-by: Ben Peart --- Makefile | 6 +++--- t/README | 4 t/test-lib.sh | 15 +-- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/Makefile b

[PATCH v1 4/4] preload-index: update GIT_FORCE_PRELOAD_TEST support

2018-09-14 Thread Ben Peart
. If the new variable is also set, just give a warning so they can eventually remove the old variable. Signed-off-by: Ben Peart --- preload-index.c | 3 ++- t/README| 3 +++ t/t7519-status-fsmonitor.sh | 4 ++-- t/test-lib.sh | 11 +++ 4

[PATCH v1 0/4] Cleanup pass on special test setups

2018-09-14 Thread Ben Peart
variable. If the new variable is also set, just give a warning so they can eventually remove the old variable. Base Ref: v2.19.0 Web-Diff: https://github.com/benpeart/git/commit/eff73d737e Checkout: git fetch https://github.com/benpeart/git git-test-cleanup-v1 && git checkout eff73d737e B

Re: [PATCH v1] read-cache: add GIT_TEST_INDEX_VERSION support

2018-09-14 Thread Ben Peart
On 9/13/2018 6:08 PM, Junio C Hamano wrote: Thomas Gummerer writes: Thanks, I do think this is a good idea. I do however share Ævar's concern in https://public-inbox.org/git/87h8itkz2h@evledraar.gmail.com/. I have TEST_GIT_INDEX_VERSION=4 set in my config.mak since quite a long time,

Re: [PATCH v1] fsmonitor: update GIT_TEST_FSMONITOR support

2018-09-14 Thread Ben Peart
On 9/13/2018 2:54 PM, Ævar Arnfjörð Bjarmason wrote: On Thu, Sep 13 2018, Ben Peart wrote: diff --git a/config.c b/config.c index 3461993f0a..3555c63f28 100644 --- a/config.c +++ b/config.c @@ -2278,7 +2278,7 @@ int git_config_get_max_percent_split_change(void) int

[PATCH v2] read-cache: update TEST_GIT_INDEX_VERSION support

2018-09-13 Thread Ben Peart
Rename TEST_GIT_INDEX_VERSION to GIT_TEST_INDEX_VERSION for consistency with the other GIT_TEST_ special setups and properly document its use. Signed-off-by: Ben Peart --- Notes: Base Ref: v2.19.0 Web-Diff: https://github.com/benpeart/git/commit/e26ccb9004 Checkout: git fetch https

[PATCH v1] preload-index: update GIT_FORCE_PRELOAD_TEST support

2018-09-13 Thread Ben Peart
Rename GIT_FORCE_PRELOAD_TEST to GIT_TEST_PRELOAD for consistency with the other GIT_TEST_ special setups and properly document its use. Signed-off-by: Ben Peart --- Notes: Base Ref: v2.19.0 Web-Diff: https://github.com/benpeart/git/commit/dcd201b920 Checkout: git fetch https

[PATCH v1] fsmonitor: update GIT_TEST_FSMONITOR support

2018-09-13 Thread Ben Peart
Rename GIT_FSMONITOR_TEST to GIT_TEST_FSMONITOR for consistency with the other GIT_TEST_ special setups and properly document its use. Signed-off-by: Ben Peart --- Notes: Base Ref: v2.19.0 Web-Diff: https://github.com/benpeart/git/commit/311484a684 Checkout: git fetch https

Re: [PATCH v1] read-cache: add GIT_TEST_INDEX_VERSION support

2018-09-13 Thread Ben Peart
On 9/12/2018 6:31 PM, Thomas Gummerer wrote: On 09/12, Ben Peart wrote: Teach get_index_format_default() to support running the test suite with specific index versions. In particular, this enables the test suite to be run using index version 4 which is not the default so gets less testing

[PATCH v1] read-cache: add GIT_TEST_INDEX_VERSION support

2018-09-12 Thread Ben Peart
Teach get_index_format_default() to support running the test suite with specific index versions. In particular, this enables the test suite to be run using index version 4 which is not the default so gets less testing. Signed-off-by: Ben Peart --- Notes: Base Ref: v2.19.0 Web-Diff

Re: [PATCH 0/1] contrib: Add script to show uncovered "new" lines

2018-09-12 Thread Ben Peart
On 9/12/2018 12:45 PM, Derrick Stolee via GitGitGadget wrote: We have coverage targets in our Makefile for using gcov to display line coverage based on our test suite. The way I like to do it is to run: make coverage-test make coverage-report Very nice, I was unaware of the coverage test

[PATCH v5 1/5] eoie: add End of Index Entry (EOIE) extension

2018-09-12 Thread Ben Peart
(but not their contents). E.g. if we have "TREE" extension that is N-bytes long, "REUC" extension that is M-bytes long, followed by "EOIE", then the hash would be: SHA-1("TREE" + + "REUC" + ) Signed-off-by: Ben Peart --- Documentation/t

[PATCH v5 4/5] read-cache.c: optimize reading index format v4

2018-09-12 Thread Ben Peart
ng v2 only takes 4.226 seconds, while v4 takes 5.711 seconds, 35% more time. The patch reduces read time on v4 to 4.319 seconds. Signed-off-by: Nguyễn Thái Ngọc Duy Signed-off-by: Ben Peart --- read-cache.c | 132 ++- 1 file changed, 67 inserti

[PATCH v5 5/5] read-cache: clean up casting and byte decoding

2018-09-12 Thread Ben Peart
This patch does a clean up pass to minimize the casting required to work with the memory mapped index (mmap). It also makes the decoding of network byte order more consistent by using get_be32() where possible. Signed-off-by: Ben Peart --- read-cache.c | 49

[PATCH v5 3/5] read-cache: load cache entries on worker threads

2018-09-12 Thread Ben Peart
+0.06) -24.1% Signed-off-by: Ben Peart --- read-cache.c | 242 +-- t/README | 3 + 2 files changed, 217 insertions(+), 28 deletions(-) diff --git a/read-cache.c b/read-cache.c index b203eebb44..880f627b4c 100644 --- a/read-cache.c +++ b/read

[PATCH v5 2/5] read-cache: load cache extensions on a worker thread

2018-09-12 Thread Ben Peart
Extensions -- read_cache/discard_cache 1000 times 202.95(0.01+0.07) 154.14(0.03+0.06) -24.1% Signed-off-by: Ben Peart --- Documentation/config.txt | 6 +++ config.c | 18 config.h

[PATCH v5 0/5] read-cache: speed up index load through parallelization

2018-09-12 Thread Ben Peart
ap + src_offset, 8); src_offset += 8; src_offset += extsize; } the_hash_algo->final_fn(hash, ); - if (hashcmp(hash, (unsigned char *)index)) + if (hashcmp(hash, (const unsigned char *)index)) return 0; /* Valida

Re: [PATCH v4 0/5] read-cache: speed up index load through parallelization

2018-09-12 Thread Ben Peart
On 9/11/2018 7:26 PM, Ben Peart wrote: This version of the patch merges in Duy's work to speed up index v4 decoding. I had to massage it a bit to get it to work with the multi-threading but its still largely his code. It helps a little (3%-4%) when the cache entry thread(s) take the longest

[PATCH v4 2/5] read-cache: load cache extensions on a worker thread

2018-09-11 Thread Ben Peart
Extensions -- read_cache/discard_cache 1000 times 202.95(0.01+0.07) 154.14(0.03+0.06) -24.1% Signed-off-by: Ben Peart --- Documentation/config.txt | 6 +++ config.c | 18 config.h

[PATCH v4 1/5] eoie: add End of Index Entry (EOIE) extension

2018-09-11 Thread Ben Peart
(but not their contents). E.g. if we have "TREE" extension that is N-bytes long, "REUC" extension that is M-bytes long, followed by "EOIE", then the hash would be: SHA-1("TREE" + + "REUC" + ) Signed-off-by: Ben Peart --- Documentation/t

[PATCH v4 0/5] read-cache: speed up index load through parallelization

2018-09-11 Thread Ben Peart
://github.com/benpeart/git read-index-multithread-v4 && git checkout 9d31d5fb20 ### Patches Ben Peart (4): eoie: add End of Index Entry (EOIE) extension read-cache: load cache extensions on a worker thread read-cache: speed up index load through parallelization read-cache: clean up casting

[PATCH v4 5/5] read-cache: clean up casting and byte decoding

2018-09-11 Thread Ben Peart
This patch does a clean up pass to minimize the casting required to work with the memory mapped index (mmap). It also makes the decoding of network byte order more consistent by using get_be32() where possible. Signed-off-by: Ben Peart --- read-cache.c | 49

[PATCH v4 4/5] read-cache.c: optimize reading index format v4

2018-09-11 Thread Ben Peart
ng v2 only takes 4.226 seconds, while v4 takes 5.711 seconds, 35% more time. The patch reduces read time on v4 to 4.319 seconds. Signed-off-by: Nguyễn Thái Ngọc Duy Signed-off-by: Ben Peart --- read-cache.c | 136 +++ 1 file changed, 71 inserti

[PATCH v4 3/5] read-cache: speed up index load through parallelization

2018-09-11 Thread Ben Peart
+0.06) -24.1% Signed-off-by: Ben Peart --- read-cache.c | 240 +-- 1 file changed, 212 insertions(+), 28 deletions(-) diff --git a/read-cache.c b/read-cache.c index 9b97c29f5b..c01d34a71d 100644 --- a/read-cache.c +++ b/read-cache.c @@ -1942,20

Re: [PATCH v1] git-mv: allow submodules and fsmonitor to work together

2018-09-10 Thread Ben Peart
On 9/10/2018 1:07 PM, Stefan Beller wrote: On Mon, Sep 10, 2018 at 9:29 AM Ben Peart wrote: It was reported that GIT_FSMONITOR_TEST=$PWD/t7519/fsmonitor-all ./t7411-submodule-config.sh breaks as the fsmonitor data is out of sync with the state of the .gitmodules file. Update

[PATCH v1] git-mv: allow submodules and fsmonitor to work together

2018-09-10 Thread Ben Peart
. Reported-by: Ævar Arnfjörð Bjarmason Helped-by: Stefan Beller Signed-off-by: Ben Peart --- Notes: Base Ref: v2.19.0-rc2 Web-Diff: https://github.com/benpeart/git/commit/ed30e1a885 Checkout: git fetch https://github.com/benpeart/git fsmonitor-t7411-v1 && git checkout ed

Re: [PATCH] git-mv: allow submodules and fsmonitor to work together

2018-09-10 Thread Ben Peart
. Reported-by: Ævar Arnfjörð Bjarmason Inspired-by: Ben Peart Signed-off-by: Stefan Beller --- I am not quite sure if this is the correct approach and handling of the fsmonitor API, but it unbreaks the test. Just naively adding mark_fsmonitor_invalid doesn't work, as then ... Adding it before

Re: [PATCH v3 3/4] read-cache: load cache extensions on a worker thread

2018-09-08 Thread Ben Peart
On 9/7/2018 5:10 PM, Junio C Hamano wrote: Ben Peart writes: +struct load_index_extensions +{ +#ifndef NO_PTHREADS + pthread_t pthread; +#endif + struct index_state *istate; + void *mmap; + size_t mmap_size; + unsigned long src_offset; If the file format

Re: [PATCH v3 2/4] eoie: add End of Index Entry (EOIE) extension

2018-09-08 Thread Ben Peart
On 9/8/2018 2:29 AM, Martin Ågren wrote: On Fri, 7 Sep 2018 at 22:24, Ben Peart wrote: Ben Peart writes: - 160-bit SHA-1 over the extension types and their sizes (but not their contents). E.g. if we have "TREE" extension that is N-bytes long, "REUC" extension

Re: [PATCH v3 2/4] eoie: add End of Index Entry (EOIE) extension

2018-09-07 Thread Ben Peart
On 9/7/2018 1:55 PM, Junio C Hamano wrote: Ben Peart writes: The extension consists of: - 32-bit offset to the end of the index entries - 160-bit SHA-1 over the extension types and their sizes (but not their contents). E.g. if we have "TREE" extension that is N-bytes l

Re: [PATCH v3 0/4] read-cache: speed up index load through parallelization

2018-09-07 Thread Ben Peart
On 9/7/2018 1:21 PM, Junio C Hamano wrote: Ben Peart writes: On further investigation with the previous patch, I noticed that my test repos didn't contain the cache tree extension in their index. After doing a commit to ensure they existed, I realized that in some instances, the time

Re: [PATCH v3 4/4] read-cache: speed up index load through parallelization

2018-09-07 Thread Ben Peart
On 9/7/2018 12:16 AM, Torsten Bögershausen wrote: diff --git a/read-cache.c b/read-cache.c index fcc776aaf0..8537a55750 100644 --- a/read-cache.c +++ b/read-cache.c @@ -1941,20 +1941,212 @@ static void *load_index_extensions(void *_data) return NULL; } +/* + * A helper

[PATCH v3 4/4] read-cache: speed up index load through parallelization

2018-09-06 Thread Ben Peart
(0.04+0.04) -32.7% p0002-read-cache.sh w/1,000,000 files BaselineThread entries --- 217.60(0.03+0.04) 199.00(0.00+0.10) -8.6% Signed-off-by: Ben Peart --- read-cache.c | 242 +-- t/README

[PATCH v3 2/4] eoie: add End of Index Entry (EOIE) extension

2018-09-06 Thread Ben Peart
(but not their contents). E.g. if we have "TREE" extension that is N-bytes long, "REUC" extension that is M-bytes long, followed by "EOIE", then the hash would be: SHA-1("TREE" + + "REUC" + ) Signed-off-by: Ben Peart --- Documentation/t

[PATCH v3 3/4] read-cache: load cache extensions on a worker thread

2018-09-06 Thread Ben Peart
) 217.60(0.03+0.04) -26.3% Signed-off-by: Ben Peart --- Documentation/config.txt | 6 +++ config.c | 18 config.h | 1 + read-cache.c | 94 4 files changed, 102 insertions(+), 17 deletions(-) diff --git

[PATCH v3 1/4] read-cache: optimize expand_name_field() to speed up V4 index parsing.

2018-09-06 Thread Ben Peart
expand_name_field() - 306.44(0.04+0.07) 295.42(0.01+0.07) -3.6% Suggested by: Nguyễn Thái Ngọc Duy Signed-off-by: Ben Peart --- read-cache.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/read-cache.c b/read-cache.c index

[PATCH v3 0/4] read-cache: speed up index load through parallelization

2018-09-06 Thread Ben Peart
checkout 325ec69299 ### Patches Ben Peart (4): read-cache: optimize expand_name_field() to speed up V4 index parsing. eoie: add End of Index Entry (EOIE) extension read-cache: load cache extensions on a worker thread read-cache: speed up index load through parallelization Documentation/co

RE: sb/submodule-move-nested breaks t7411 under GIT_FSMONITOR_TEST

2018-09-06 Thread Ben Peart
> -Original Message- > From: Stefan Beller > Sent: Thursday, September 6, 2018 12:57 PM > To: Ævar Arnfjörð Bjarmason > Cc: Junio C Hamano ; git ; Ben > Peart > Subject: Re: sb/submodule-move-nested breaks t7411 under > GIT_FSMONITOR_TEST > > > > W

Re: [PATCH 2/4] t5310: test delta reuse with bitmaps

2018-09-01 Thread Ben Peart
On 9/1/2018 4:29 PM, Ævar Arnfjörð Bjarmason wrote: B.t.w. for Ben or anyone else who knows about the fsmonitor part of this: I've long been running the whole test suite with `GIT_FSMONITOR_TEST=$PWD/t7519/fsmonitor-all prove ...` (also along with GIT_TEST_SPLIT_INDEX=) after all the main

Re: [PATCH v2 2/3] read-cache: load cache extensions on worker thread

2018-08-29 Thread Ben Peart
On 8/29/2018 1:12 PM, Junio C Hamano wrote: Ben Peart writes: This is possible because the current extensions don't access the cache entries in the index_state structure so are OK that they don't all exist yet. The CACHE_EXT_TREE, CACHE_EXT_RESOLVE_UNDO, and CACHE_EXT_UNTRACKED extensions

Re: [PATCH v2 1/3] read-cache: speed up index load through parallelization

2018-08-29 Thread Ben Peart
On 8/29/2018 1:14 PM, Junio C Hamano wrote: Ben Peart writes: diff --git a/Documentation/config.txt b/Documentation/config.txt index 1c42364988..79f8296d9c 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -2391,6 +2391,12 @@ imap:: The configuration variables

[PATCH v2 0/3] read-cache: speed up index load through parallelization

2018-08-29 Thread Ben Peart
p->mmap_size = mmap_size; + p->start_offset = src_offset; + + if (pthread_create(>pthread, NULL, load_index_extensions_thread, p)) + die("unable to create load_index_extensions_thread"); + + for (i = 0; i < nr_threads + 1; i++) {

[PATCH v2 1/3] read-cache: speed up index load through parallelization

2018-08-29 Thread Ben Peart
HEAD~3HEAD~2 -- read_cache/discard_cache 1000 times 202.06(0.06+0.09) 155.72(0.03+0.06) -22.9% Signed-off-by: Ben Peart --- Documentation/config.txt | 6 + config.c | 14 +++ config.h

[PATCH v2 3/3] read-cache: micro-optimize expand_name_field() to speed up V4 index parsing.

2018-08-29 Thread Ben Peart
files TestHEAD~3HEAD -- read_cache/discard_cache 1000 times 201.77(0.03+0.07) 149.68(0.04+0.07) -25.8% Suggested by: Nguyễn Thái Ngọc Duy Signed-off-by: Ben Peart --- read

[PATCH v2 2/3] read-cache: load cache extensions on worker thread

2018-08-29 Thread Ben Peart
% Signed-off-by: Ben Peart --- read-cache.c | 60 +--- 1 file changed, 48 insertions(+), 12 deletions(-) diff --git a/read-cache.c b/read-cache.c index c30346388a..f768004617 100644 --- a/read-cache.c +++ b/read-cache.c @@ -1959,16 +1959,13 @@ struct

Re: [PATCH] read-cache.c: optimize reading index format v4

2018-08-28 Thread Ben Peart
On 8/28/2018 3:25 PM, Duy Nguyen wrote: On Mon, Aug 27, 2018 at 9:36 PM Junio C Hamano wrote: PS. I notice that v4 does not pad to align entries at 4 byte boundary like v2/v3. This could cause a slight slow down on x86 and segfault on some other platforms. Care to elaborate? Long time

Re: [PATCH v1] read-cache: speed up index load through parallelization

2018-08-28 Thread Ben Peart
On 8/24/2018 2:40 PM, Duy Nguyen wrote: On Thu, Aug 23, 2018 at 7:33 PM Stefan Beller wrote: +core.fastIndex:: + Enable parallel index loading ++ +This can speed up operations like 'git diff' and 'git status' especially +when the index is very large. When enabled, Git will do the

Re: [PATCH v1] read-cache: speed up index load through parallelization

2018-08-24 Thread Ben Peart
On 8/24/2018 3:00 PM, Duy Nguyen wrote: On Fri, Aug 24, 2018 at 8:40 PM Ben Peart wrote: On 8/24/2018 2:20 PM, Duy Nguyen wrote: On Fri, Aug 24, 2018 at 5:37 PM Duy Nguyen wrote: On Thu, Aug 23, 2018 at 10:36 PM Ben Peart wrote: Nice to see this done without a new index extension

Re: [PATCH v1] read-cache: speed up index load through parallelization

2018-08-24 Thread Ben Peart
On 8/24/2018 2:20 PM, Duy Nguyen wrote: On Fri, Aug 24, 2018 at 5:37 PM Duy Nguyen wrote: On Thu, Aug 23, 2018 at 10:36 PM Ben Peart wrote: Nice to see this done without a new index extension that records offsets, so that we can load existing index files in parallel. Yes, I prefer

Re: [PATCH v1] read-cache: speed up index load through parallelization

2018-08-24 Thread Ben Peart
On 8/24/2018 11:57 AM, Duy Nguyen wrote: On Fri, Aug 24, 2018 at 05:37:20PM +0200, Duy Nguyen wrote: Since we're cutting corners to speed things up, could you try something like this? I notice that reading v4 is significantly slower than v2 and apparently strlen() (at least from glibc) is

Re: [PATCH v1] read-cache: speed up index load through parallelization

2018-08-23 Thread Ben Peart
On 8/23/2018 2:06 PM, Junio C Hamano wrote: Ben Peart writes: This patch helps address the CPU cost of loading the index by creating multiple threads to divide the work of loading and converting the cache entries across all available CPU cores. Nice. +int git_config_get_fast_index(void

Re: [PATCH v1] read-cache: speed up index load through parallelization

2018-08-23 Thread Ben Peart
On 8/23/2018 1:31 PM, Stefan Beller wrote: On Thu, Aug 23, 2018 at 8:45 AM Ben Peart wrote: This patch helps address the CPU cost of loading the index by creating multiple threads to divide the work of loading and converting the cache entries across all available CPU cores

[PATCH v1] read-cache: speed up index load through parallelization

2018-08-23 Thread Ben Peart
entries FALSE TRUESavings %Savings 0.59898098 0.4513169 0.14766408 24.65% Signed-off-by: Ben Peart --- Notes: Base Ref: master Web-Diff: https://github.com/benpeart/git/commit/67a700419b Checkout: git fetch https://github.com/benpeart/git read-index-multithread-v1

Re: [PATCH v3] checkout: optimize "git checkout -b "

2018-08-20 Thread Ben Peart
On 8/18/2018 9:44 PM, Elijah Newren wrote: On Fri, Aug 17, 2018 at 5:41 AM Ben Peart wrote: On 8/16/2018 2:37 PM, Duy Nguyen wrote: On Thu, Aug 16, 2018 at 8:27 PM Ben Peart wrote: From: Ben Peart Skip merging the commit, updating the index and working directory if and only if we

Re: [PATCH v5 3/7] unpack-trees: optimize walking same trees with cache-tree

2018-08-20 Thread Ben Peart
On 8/18/2018 10:41 AM, Nguyễn Thái Ngọc Duy wrote: In order to merge one or many trees with the index, unpack-trees code walks multiple trees in parallel with the index and performs n-way merge. If we find out at start of a directory that all trees are the same (by comparing OID) and

Re: [PATCH v3] checkout: optimize "git checkout -b "

2018-08-17 Thread Ben Peart
On 8/16/2018 2:37 PM, Duy Nguyen wrote: On Thu, Aug 16, 2018 at 8:27 PM Ben Peart wrote: From: Ben Peart Skip merging the commit, updating the index and working directory if and only if we are creating a new branch via "git checkout -b ." Any other checkout options will still

[PATCH v3] checkout: optimize "git checkout -b "

2018-08-16 Thread Ben Peart
From: Ben Peart Skip merging the commit, updating the index and working directory if and only if we are creating a new branch via "git checkout -b ." Any other checkout options will still go through the former code path. If sparse_checkout is on, require the user to ma

Re: [PATCH v2] checkout: optimize "git checkout -b "

2018-08-15 Thread Ben Peart
On 8/6/2018 10:25 AM, Ben Peart wrote: On 8/3/2018 11:58 AM, Duy Nguyen wrote: On Thu, Aug 02, 2018 at 02:02:00PM -0400, Ben Peart wrote: But if you still want to push it further, this is something I have in mind. It probably has bugs, but at least preliminary test shows me

Re: [PATCH v4 0/5] Speed up unpack_trees()

2018-08-14 Thread Ben Peart
On 8/12/2018 4:15 AM, Nguyễn Thái Ngọc Duy wrote: v4 has a bunch of changes - 1/5 is a new one to show indented tracing. This way it's less misleading to read nested time measurements - 3/5 now has the switch/restore cache_bottom logic. Junio suggested a check instead in his final

Re: [PATCH v4 2/5] unpack-trees: add performance tracing

2018-08-13 Thread Ben Peart
On 8/13/2018 3:36 PM, Stefan Beller wrote: On Mon, Aug 13, 2018 at 12:25 PM Jeff King wrote: I can buy the argument that it's nice to have some form of profiling that works everywhere, even if it's lowest-common-denominator. I just wonder if we could be investing effort into tooling around

Re: [PATCH v4 3/5] unpack-trees: optimize walking same trees with cache-tree

2018-08-13 Thread Ben Peart
On 8/12/2018 4:15 AM, Nguyễn Thái Ngọc Duy wrote: In order to merge one or many trees with the index, unpack-trees code walks multiple trees in parallel with the index and performs n-way merge. If we find out at start of a directory that all trees are the same (by comparing OID) and

Re: [PATCH v4 2/5] unpack-trees: add performance tracing

2018-08-13 Thread Ben Peart
On 8/12/2018 4:15 AM, Nguyễn Thái Ngọc Duy wrote: We're going to optimize unpack_trees() a bit in the following patches. Let's add some tracing to measure how long it takes before and after. This is the baseline ("git checkout -" on webkit.git, 275k files on worktree) performance:

Re: [PATCH v4 1/5] trace.h: support nested performance tracing

2018-08-13 Thread Ben Peart
On 8/12/2018 4:15 AM, Nguyễn Thái Ngọc Duy wrote: Performance measurements are listed right now as a flat list, which is fine when we measure big blocks. But when we start adding more and more measurements, some of them could be just part of a bigger measurement and a flat list gives a wrong

Re: [PATCH v4 5/5] unpack-trees: reuse (still valid) cache-tree from src_index

2018-08-13 Thread Ben Peart
On 8/13/2018 12:25 PM, Duy Nguyen wrote: On Mon, Aug 13, 2018 at 6:05 PM Ben Peart wrote: I was part way through writing a patch that would copy the valid parts of the cache-tree from the source index to the dest index Yeah sorry about that. I make bad judgements all the time

Re: [PATCH v4 5/5] unpack-trees: reuse (still valid) cache-tree from src_index

2018-08-13 Thread Ben Peart
On 8/13/2018 11:48 AM, Elijah Newren wrote: On Sun, Aug 12, 2018 at 1:16 AM Nguyễn Thái Ngọc Duy wrote: We do n-way merge by walking the source index and n trees at the same time and add merge results to a new temporary index called o->result. The merge result for any given path could be

Re: [PATCH v2 0/4] Speed up unpack_trees()

2018-08-09 Thread Ben Peart
On 8/8/2018 4:53 PM, Ben Peart wrote: On 8/1/2018 12:38 PM, Duy Nguyen wrote: On Tue, Jul 31, 2018 at 01:31:31PM -0400, Ben Peart wrote: On 7/31/2018 12:50 PM, Ben Peart wrote: On 7/31/2018 11:31 AM, Duy Nguyen wrote: In the performance game of whack-a-mole, that call to repair

Re: [PATCH v2 0/4] Speed up unpack_trees()

2018-08-08 Thread Ben Peart
On 8/1/2018 12:38 PM, Duy Nguyen wrote: On Tue, Jul 31, 2018 at 01:31:31PM -0400, Ben Peart wrote: On 7/31/2018 12:50 PM, Ben Peart wrote: On 7/31/2018 11:31 AM, Duy Nguyen wrote: In the performance game of whack-a-mole, that call to repair cache-tree is now looking quite expensive

Re: [PATCH v3 0/4] Speed up unpack_trees()

2018-08-08 Thread Ben Peart
On 8/6/2018 2:59 PM, Junio C Hamano wrote: Duy Nguyen writes: We require the unpacked entry from all input trees to be a tree objects (the dirmask thing), so if one tree has 't' as a file, Ah, OK, this is still part of that "all the trees match cache tree so we walk the index instead"

Re: [PATCH v2] checkout: optimize "git checkout -b "

2018-08-06 Thread Ben Peart
On 8/3/2018 11:58 AM, Duy Nguyen wrote: On Thu, Aug 02, 2018 at 02:02:00PM -0400, Ben Peart wrote: But if you still want to push it further, this is something I have in mind. It probably has bugs, but at least preliminary test shows me that it could skip 99% work inside unpack_trees

Re: [PATCH v1 01/25] structured-logging: design document

2018-08-03 Thread Ben Peart
On 7/13/2018 12:55 PM, g...@jeffhostetler.com wrote: From: Jeff Hostetler Signed-off-by: Jeff Hostetler --- Documentation/technical/structured-logging.txt | 816 + 1 file changed, 816 insertions(+) create mode 100644

<    1   2   3   4   5   6   7   >