diff options
| author | Junio C Hamano <gitster@pobox.com> | 2020-08-31 15:49:48 -0700 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2020-08-31 15:49:48 -0700 |
| commit | 53015c9dd40e0a5afc14aeeb6e6def25f10fff4d (patch) | |
| tree | f3c01bfad2ae5b61e4c316c54a48ef831aea05dd /builtin | |
| parent | e17723842b4fd42215ebf9c7ee5ab0bdfbe5a402 (diff) | |
| parent | fbff95b67f7e7bfc8799c2d6d16263cfeb61bc6f (diff) | |
| download | git-53015c9dd40e0a5afc14aeeb6e6def25f10fff4d.tar.xz | |
Merge branch 'jk/index-pack-w-more-threads'
Long ago, we decided to use 3 threads by default when running the
index-pack task in parallel, which has been adjusted a bit upwards.
* jk/index-pack-w-more-threads:
index-pack: adjust default threading cap
p5302: count up to online-cpus for thread tests
p5302: disable thread-count parameter tests by default
Diffstat (limited to 'builtin')
| -rw-r--r-- | builtin/index-pack.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/builtin/index-pack.c b/builtin/index-pack.c index f865666db9..9721bf1ffe 100644 --- a/builtin/index-pack.c +++ b/builtin/index-pack.c @@ -1798,9 +1798,22 @@ int cmd_index_pack(int argc, const char **argv, const char *prefix) if (HAVE_THREADS && !nr_threads) { nr_threads = online_cpus(); - /* An experiment showed that more threads does not mean faster */ - if (nr_threads > 3) - nr_threads = 3; + /* + * Experiments show that going above 20 threads doesn't help, + * no matter how many cores you have. Below that, we tend to + * max at half the number of online_cpus(), presumably because + * half of those are hyperthreads rather than full cores. We'll + * never reduce the level below "3", though, to match a + * historical value that nobody complained about. + */ + if (nr_threads < 4) + ; /* too few cores to consider capping */ + else if (nr_threads < 6) + nr_threads = 3; /* historic cap */ + else if (nr_threads < 40) + nr_threads /= 2; + else + nr_threads = 20; /* hard cap */ } curr_pack = open_pack_file(pack_name); |
