* [PATCH v2 1/2] t4205: compare huge output without diff
2026-09-25 16:35 ` [PATCH v2 0/2] ci: use cmp and align job-count selection Tamir Duberstein
@ 2026-09-25 16:35 ` Tamir Duberstein
2026-09-28 6:36 ` Patrick Steinhardt
2026-09-25 16:35 ` [PATCH v2 2/2] ci: align job counts across CI providers Tamir Duberstein
2026-09-30 14:20 ` [PATCH v3 0/2] ci: use cmp and align job-count selection Tamir Duberstein
2 siblings, 1 reply; 25+ messages in thread
From: Tamir Duberstein @ 2026-09-25 16:35 UTC (permalink / raw)
To: git; +Cc: Patrick Steinhardt, Junio C Hamano, Jeff King, Tamir Duberstein
The huge-commit test compares output containing a line larger than 2 GiB.
For two identical files containing 2,147,483,649 "1" bytes followed by
"0\n", GNU diffutils 3.8 on Linux arm64 gives these measurements:
Command Mean +/- stddev Maximum RSS (KiB)
diff -u expect actual 5.276 +/- 0.572 s 4199924
cmp expect actual 0.506 +/- 0.099 s 1264
The test needs only an equality check. Use test_cmp_bin, which runs cmp,
to compare the output byte for byte with less time and memory.
Assisted-by: LLM
Signed-off-by: Tamir Duberstein <tamird@gmail.com>
---
t/t4205-log-pretty-formats.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/t/t4205-log-pretty-formats.sh b/t/t4205-log-pretty-formats.sh
index 4be5c51489..01b97c8888 100755
--- a/t/t4205-log-pretty-formats.sh
+++ b/t/t4205-log-pretty-formats.sh
@@ -1189,7 +1189,7 @@ test_expect_success EXPENSIVE,SIZE_T_IS_64BIT 'set up huge commit' '
test_expect_success EXPENSIVE,SIZE_T_IS_64BIT 'log --pretty with huge commit message' '
git log -1 --format="%B%<(1)%x30" $huge_commit >actual &&
echo 0 >>expect &&
- test_cmp expect actual
+ test_cmp_bin expect actual
'
test_expect_success EXPENSIVE,SIZE_T_IS_64BIT 'log --pretty with huge commit message does not cause allocation failure' '
--
2.56.0.rc2.815.g5b995412e4.frankengit
^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: [PATCH v2 1/2] t4205: compare huge output without diff
2026-09-25 16:35 ` [PATCH v2 1/2] t4205: compare huge output without diff Tamir Duberstein
@ 2026-09-28 6:36 ` Patrick Steinhardt
0 siblings, 0 replies; 25+ messages in thread
From: Patrick Steinhardt @ 2026-09-28 6:36 UTC (permalink / raw)
To: Tamir Duberstein; +Cc: git, Junio C Hamano, Jeff King
On Fri, Sep 25, 2026 at 12:35:38PM -0400, Tamir Duberstein wrote:
> The huge-commit test compares output containing a line larger than 2 GiB.
> For two identical files containing 2,147,483,649 "1" bytes followed by
> "0\n", GNU diffutils 3.8 on Linux arm64 gives these measurements:
>
> Command Mean +/- stddev Maximum RSS (KiB)
> diff -u expect actual 5.276 +/- 0.572 s 4199924
> cmp expect actual 0.506 +/- 0.099 s 1264
>
> The test needs only an equality check. Use test_cmp_bin, which runs cmp,
> to compare the output byte for byte with less time and memory.
Yup, this is much more compelling as an argument now :)
> diff --git a/t/t4205-log-pretty-formats.sh b/t/t4205-log-pretty-formats.sh
> index 4be5c51489..01b97c8888 100755
> --- a/t/t4205-log-pretty-formats.sh
> +++ b/t/t4205-log-pretty-formats.sh
> @@ -1189,7 +1189,7 @@ test_expect_success EXPENSIVE,SIZE_T_IS_64BIT 'set up huge commit' '
> test_expect_success EXPENSIVE,SIZE_T_IS_64BIT 'log --pretty with huge commit message' '
> git log -1 --format="%B%<(1)%x30" $huge_commit >actual &&
> echo 0 >>expect &&
> - test_cmp expect actual
> + test_cmp_bin expect actual
> '
And the patch looks obviously good to me.
Patrick
^ permalink raw reply [flat|nested] 25+ messages in thread
* [PATCH v2 2/2] ci: align job counts across CI providers
2026-09-25 16:35 ` [PATCH v2 0/2] ci: use cmp and align job-count selection Tamir Duberstein
2026-09-25 16:35 ` [PATCH v2 1/2] t4205: compare huge output without diff Tamir Duberstein
@ 2026-09-25 16:35 ` Tamir Duberstein
2026-09-28 6:36 ` Patrick Steinhardt
2026-09-30 14:20 ` [PATCH v3 0/2] ci: use cmp and align job-count selection Tamir Duberstein
2 siblings, 1 reply; 25+ messages in thread
From: Tamir Duberstein @ 2026-09-25 16:35 UTC (permalink / raw)
To: git; +Cc: Patrick Steinhardt, Junio C Hamano, Jeff King, Tamir Duberstein
GitHub Actions sets JOBS to ten regardless of runner size, while
GitLab CI uses the detected CPU count. Use the CPU count for Make and
prove on both providers, selecting JOBS after the operating system
is identified.
Use nproc on Linux and NUMBER_OF_PROCESSORS on Windows. On macOS, use
sysctl to avoid requiring nproc before the dependency installer has run;
GitHub macOS images need not provide GNU coreutils.
Assisted-by: LLM
Signed-off-by: Tamir Duberstein <tamird@gmail.com>
---
ci/lib.sh | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/ci/lib.sh b/ci/lib.sh
index c6ccbf8c17..db593cc62c 100755
--- a/ci/lib.sh
+++ b/ci/lib.sh
@@ -227,7 +227,6 @@ then
cache_dir="$HOME/none"
GIT_TEST_OPTS="--github-workflow-markup"
- JOBS=10
distro=$(echo "$CI_JOB_IMAGE" | tr : -)
elif test true = "$GITLAB_CI"
@@ -250,7 +249,6 @@ then
case "$OS,$CI_JOB_IMAGE" in
Windows_NT,*)
CI_OS_NAME=windows
- JOBS=$NUMBER_OF_PROCESSORS
;;
*,macos-*)
# GitLab CI has Python installed via multiple package managers,
@@ -260,11 +258,9 @@ then
export PATH="$(brew --prefix)/bin:$PATH"
CI_OS_NAME=osx
- JOBS=$(nproc)
;;
*,almalinux:*|*,alpine:*|*,debian:*|*,fedora:*|*,ubuntu:*|*,i386/ubuntu:*)
CI_OS_NAME=linux
- JOBS=$(nproc)
;;
*)
echo "Could not identify OS image" >&2
@@ -291,6 +287,18 @@ else
exit 1
fi
+case "$CI_OS_NAME" in
+windows|windows_nt)
+ JOBS=$NUMBER_OF_PROCESSORS
+ ;;
+osx)
+ JOBS=$(sysctl -n hw.logicalcpu)
+ ;;
+*)
+ JOBS=$(nproc)
+ ;;
+esac
+
MAKEFLAGS="$MAKEFLAGS --jobs=$JOBS"
GIT_PROVE_OPTS="--timer --jobs $JOBS"
--
2.56.0.rc2.815.g5b995412e4.frankengit
^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: [PATCH v2 2/2] ci: align job counts across CI providers
2026-09-25 16:35 ` [PATCH v2 2/2] ci: align job counts across CI providers Tamir Duberstein
@ 2026-09-28 6:36 ` Patrick Steinhardt
2026-09-28 10:16 ` Tamir Duberstein
0 siblings, 1 reply; 25+ messages in thread
From: Patrick Steinhardt @ 2026-09-28 6:36 UTC (permalink / raw)
To: Tamir Duberstein; +Cc: git, Junio C Hamano, Jeff King
On Fri, Sep 25, 2026 at 12:35:39PM -0400, Tamir Duberstein wrote:
> GitHub Actions sets JOBS to ten regardless of runner size, while
> GitLab CI uses the detected CPU count. Use the CPU count for Make and
> prove on both providers, selecting JOBS after the operating system
> is identified.
Again, it should be noted here what the effect of this is. In other
words, does GitHub slow down as a result? You already showed numbers
during the discussion on v1 of this series, and these numbers should
probably be included in this message, too.
> Use nproc on Linux and NUMBER_OF_PROCESSORS on Windows. On macOS, use
> sysctl to avoid requiring nproc before the dependency installer has run;
> GitHub macOS images need not provide GNU coreutils.
Huh... "need not" feels somewhat weird as phrasing. I guess it's rather
"does not", and consequently we have to adapt? I think instead of
describing what you do, I'd directly pinpoint what matters:
Note that we continue to use the same logic to detect the number of
processors on both Linux and Windows. But on macOS, we cannot continue
to use nproc(1) because the image used by GitHub does not provide that
tool. Use sysctl instead, which is available on both GitLab and
GitHub.
Thanks!
Patrick
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH v2 2/2] ci: align job counts across CI providers
2026-09-28 6:36 ` Patrick Steinhardt
@ 2026-09-28 10:16 ` Tamir Duberstein
2026-09-28 11:14 ` Patrick Steinhardt
0 siblings, 1 reply; 25+ messages in thread
From: Tamir Duberstein @ 2026-09-28 10:16 UTC (permalink / raw)
To: Patrick Steinhardt; +Cc: git, Junio C Hamano, Jeff King
On Mon, Sep 28, 2026 at 2:36 AM Patrick Steinhardt <ps@pks.im> wrote:
>
> On Fri, Sep 25, 2026 at 12:35:39PM -0400, Tamir Duberstein wrote:
> > GitHub Actions sets JOBS to ten regardless of runner size, while
> > GitLab CI uses the detected CPU count. Use the CPU count for Make and
> > prove on both providers, selecting JOBS after the operating system
> > is identified.
>
> Again, it should be noted here what the effect of this is. In other
> words, does GitHub slow down as a result? You already showed numbers
> during the discussion on v1 of this series, and these numbers should
> probably be included in this message, too.
Agreed, but in this case there was no reliable performance change
across 10 runs; I could include that.
>
> > Use nproc on Linux and NUMBER_OF_PROCESSORS on Windows. On macOS, use
> > sysctl to avoid requiring nproc before the dependency installer has run;
> > GitHub macOS images need not provide GNU coreutils.
>
> Huh... "need not" feels somewhat weird as phrasing. I guess it's rather
> "does not", and consequently we have to adapt? I think instead of
> describing what you do, I'd directly pinpoint what matters:
>
> Note that we continue to use the same logic to detect the number of
> processors on both Linux and Windows. But on macOS, we cannot continue
> to use nproc(1) because the image used by GitHub does not provide that
> tool. Use sysctl instead, which is available on both GitLab and
> GitHub
Agreed.
.
>
> Thanks!
>
> Patrick
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH v2 2/2] ci: align job counts across CI providers
2026-09-28 10:16 ` Tamir Duberstein
@ 2026-09-28 11:14 ` Patrick Steinhardt
0 siblings, 0 replies; 25+ messages in thread
From: Patrick Steinhardt @ 2026-09-28 11:14 UTC (permalink / raw)
To: Tamir Duberstein; +Cc: git, Junio C Hamano, Jeff King
On Mon, Sep 28, 2026 at 06:16:33AM -0400, Tamir Duberstein wrote:
> On Mon, Sep 28, 2026 at 2:36 AM Patrick Steinhardt <ps@pks.im> wrote:
> >
> > On Fri, Sep 25, 2026 at 12:35:39PM -0400, Tamir Duberstein wrote:
> > > GitHub Actions sets JOBS to ten regardless of runner size, while
> > > GitLab CI uses the detected CPU count. Use the CPU count for Make and
> > > prove on both providers, selecting JOBS after the operating system
> > > is identified.
> >
> > Again, it should be noted here what the effect of this is. In other
> > words, does GitHub slow down as a result? You already showed numbers
> > during the discussion on v1 of this series, and these numbers should
> > probably be included in this message, too.
>
> Agreed, but in this case there was no reliable performance change
> across 10 runs; I could include that.
I think it should be included, as it's the one thing that people will be
wondering about when they see this change.
Patrick
^ permalink raw reply [flat|nested] 25+ messages in thread
* [PATCH v3 0/2] ci: use cmp and align job-count selection
2026-09-25 16:35 ` [PATCH v2 0/2] ci: use cmp and align job-count selection Tamir Duberstein
2026-09-25 16:35 ` [PATCH v2 1/2] t4205: compare huge output without diff Tamir Duberstein
2026-09-25 16:35 ` [PATCH v2 2/2] ci: align job counts across CI providers Tamir Duberstein
@ 2026-09-30 14:20 ` Tamir Duberstein
2026-09-30 14:20 ` [PATCH v3 1/2] t4205: compare huge output without diff Tamir Duberstein
` (2 more replies)
2 siblings, 3 replies; 25+ messages in thread
From: Tamir Duberstein @ 2026-09-30 14:20 UTC (permalink / raw)
To: git; +Cc: Patrick Steinhardt, Junio C Hamano, Jeff King, Tamir Duberstein
The first patch uses cmp for the huge commit-message output comparison.
On this input, GNU diffutils 3.8 on Linux arm64 takes 5.276 seconds with
4,199,924 KiB peak RSS for diff, versus 0.506 seconds and 1,264 KiB for
cmp. Patch 1 includes the fixture and measurement details.
The second patch uses twice the detected CPU count for Make and prove
on both GitHub Actions and GitLab CI. This replaces GitHub's fixed ten
jobs and doubles GitLab's job count. The GitHub measurements in patch 2
favor 2*N over N, with mixed results against ten jobs. GitLab runtime and
resource use have not been measured.
Signed-off-by: Tamir Duberstein <tamird@gmail.com>
---
The table in patch 2 uses attempts 1-5 of each linked run. Its rows
aggregate ten Linux jobs, three macOS jobs, and a Windows build plus ten
test shards. Failed steps are excluded. Each job has five samples,
except one CPU-count Windows shard and one 2x-CPU Linux job with four.
Five further attempts per policy for osx-clang on three-CPU macOS
runners gave these successful build/test-step medians (minutes:seconds):
Jobs 3 6 10
Median 48:10 36:44 38:05.5
Passed 5 5 4
Cancelled 0 0 1
Six jobs had lower times than three in each block. The ten-job
cancellation followed six hours in the build/test step; its cause is
unknown. It is excluded from the successful-duration median above.
These are attempts 6-10 of the runs linked in patch 2, separate from its
earlier full CI matrix measurements. Neither experiment measured peak
memory or disk use.
Changes in v3:
- Use twice the CPU count on both providers, instead of adopting
GitLab's existing one-job-per-CPU policy.
- Include CI timings and their tradeoffs in patch 2's commit message,
and explain the use of sysctl directly.
- Patch 1 is unchanged.
- Link to v2: https://patch.msgid.link/20260925-ci-large-test-resources-v2-0-f632cf319756@gmail.com
Changes in v2:
- Replace the unavailable CI failure reference with comparison runtime
and peak RSS measurements.
- Drop the file removal; following tests overwrite expect and actual.
- Share job-count selection between GitHub Actions and GitLab CI.
- Use native CPU-count queries on macOS and Windows.
- Link to v1: https://patch.msgid.link/20260923-ci-large-test-resources-v1-0-c28416d59475@gmail.com
---
Tamir Duberstein (2):
t4205: compare huge output without diff
ci: use twice the CPU count on both providers
ci/lib.sh | 17 +++++++++++++----
t/t4205-log-pretty-formats.sh | 2 +-
2 files changed, 14 insertions(+), 5 deletions(-)
---
Range-diff versus v2:
1: 5cf348a75c = 1: 4a15b8f17d t4205: compare huge output without diff
2: 3b9bd2c495 ! 2: d444411070 ci: align job counts across CI providers
@@ Metadata
Author: Tamir Duberstein <tamird@gmail.com>
## Commit message ##
- ci: align job counts across CI providers
+ ci: use twice the CPU count on both providers
GitHub Actions sets JOBS to ten regardless of runner size, while
- GitLab CI uses the detected CPU count. Use the CPU count for Make and
- prove on both providers, selecting JOBS after the operating system
- is identified.
+ GitLab CI uses the detected CPU count. Use twice the CPU count for
+ Make and prove on both providers, doubling GitLab's job count.
- Use nproc on Linux and NUMBER_OF_PROCESSORS on Windows. On macOS, use
- sysctl to avoid requiring nproc before the dependency installer has run;
- GitHub macOS images need not provide GNU coreutils.
+ Five GitHub Actions attempts per policy, with the long tests enabled,
+ gave these sums of per-job median successful build/test-step times
+ (minutes; four or five samples per job) [1-3]:
+
+ Fixed 10 CPU count 2x CPU count
+ Linux Make 278.9 273.9 259.9
+ macOS Make 94.5 119.1 99.8
+ Windows Make 102.2 103.8 100.8
+
+ Workflow overhead is excluded; Windows runner images varied.
+
+ Use twice the CPU count to scale concurrency with runner size while
+ avoiding the larger macOS slowdown observed with one job per CPU.
+ Compared with ten jobs, this trades a lower Linux total for a higher
+ macOS total.
+
+ Keep GitLab's Linux and Windows CPU queries. On macOS, use the native
+ sysctl command on both providers so CPU detection does not depend on
+ GNU coreutils.
+
+ Link: https://github.com/tamird/git/actions/runs/36070869894/attempts/1 [1]
+ Link: https://github.com/tamird/git/actions/runs/36070867524/attempts/1 [2]
+ Link: https://github.com/tamird/git/actions/runs/36070867647/attempts/1 [3]
Assisted-by: LLM
Signed-off-by: Tamir Duberstein <tamird@gmail.com>
@@ ci/lib.sh: else
+ JOBS=$(nproc)
+ ;;
+esac
++JOBS=$((2 * JOBS))
+
MAKEFLAGS="$MAKEFLAGS --jobs=$JOBS"
GIT_PROVE_OPTS="--timer --jobs $JOBS"
---
base-commit: 3bc0341126508f78f5869cbfc0005e987efdf0c7
change-id: 20260923-ci-large-test-resources-349cdc95f7f8
^ permalink raw reply [flat|nested] 25+ messages in thread* [PATCH v3 1/2] t4205: compare huge output without diff
2026-09-30 14:20 ` [PATCH v3 0/2] ci: use cmp and align job-count selection Tamir Duberstein
@ 2026-09-30 14:20 ` Tamir Duberstein
2026-09-30 14:20 ` [PATCH v3 2/2] ci: use twice the CPU count on both providers Tamir Duberstein
2026-09-30 14:45 ` [PATCH v3 0/2] ci: use cmp and align job-count selection Patrick Steinhardt
2 siblings, 0 replies; 25+ messages in thread
From: Tamir Duberstein @ 2026-09-30 14:20 UTC (permalink / raw)
To: git; +Cc: Patrick Steinhardt, Junio C Hamano, Jeff King, Tamir Duberstein
The huge-commit test compares output containing a line larger than 2 GiB.
For two identical files containing 2,147,483,649 "1" bytes followed by
"0\n", GNU diffutils 3.8 on Linux arm64 gives these measurements:
Command Mean +/- stddev Maximum RSS (KiB)
diff -u expect actual 5.276 +/- 0.572 s 4199924
cmp expect actual 0.506 +/- 0.099 s 1264
The test needs only an equality check. Use test_cmp_bin, which runs cmp,
to compare the output byte for byte with less time and memory.
Assisted-by: LLM
Signed-off-by: Tamir Duberstein <tamird@gmail.com>
---
t/t4205-log-pretty-formats.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/t/t4205-log-pretty-formats.sh b/t/t4205-log-pretty-formats.sh
index 4be5c51489..01b97c8888 100755
--- a/t/t4205-log-pretty-formats.sh
+++ b/t/t4205-log-pretty-formats.sh
@@ -1189,7 +1189,7 @@ test_expect_success EXPENSIVE,SIZE_T_IS_64BIT 'set up huge commit' '
test_expect_success EXPENSIVE,SIZE_T_IS_64BIT 'log --pretty with huge commit message' '
git log -1 --format="%B%<(1)%x30" $huge_commit >actual &&
echo 0 >>expect &&
- test_cmp expect actual
+ test_cmp_bin expect actual
'
test_expect_success EXPENSIVE,SIZE_T_IS_64BIT 'log --pretty with huge commit message does not cause allocation failure' '
--
2.56.0.rc2.851.g50a151a6e9.frankengit
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v3 2/2] ci: use twice the CPU count on both providers
2026-09-30 14:20 ` [PATCH v3 0/2] ci: use cmp and align job-count selection Tamir Duberstein
2026-09-30 14:20 ` [PATCH v3 1/2] t4205: compare huge output without diff Tamir Duberstein
@ 2026-09-30 14:20 ` Tamir Duberstein
2026-09-30 14:45 ` Patrick Steinhardt
2026-09-30 14:45 ` [PATCH v3 0/2] ci: use cmp and align job-count selection Patrick Steinhardt
2 siblings, 1 reply; 25+ messages in thread
From: Tamir Duberstein @ 2026-09-30 14:20 UTC (permalink / raw)
To: git; +Cc: Patrick Steinhardt, Junio C Hamano, Jeff King, Tamir Duberstein
GitHub Actions sets JOBS to ten regardless of runner size, while
GitLab CI uses the detected CPU count. Use twice the CPU count for
Make and prove on both providers, doubling GitLab's job count.
Five GitHub Actions attempts per policy, with the long tests enabled,
gave these sums of per-job median successful build/test-step times
(minutes; four or five samples per job) [1-3]:
Fixed 10 CPU count 2x CPU count
Linux Make 278.9 273.9 259.9
macOS Make 94.5 119.1 99.8
Windows Make 102.2 103.8 100.8
Workflow overhead is excluded; Windows runner images varied.
Use twice the CPU count to scale concurrency with runner size while
avoiding the larger macOS slowdown observed with one job per CPU.
Compared with ten jobs, this trades a lower Linux total for a higher
macOS total.
Keep GitLab's Linux and Windows CPU queries. On macOS, use the native
sysctl command on both providers so CPU detection does not depend on
GNU coreutils.
Link: https://github.com/tamird/git/actions/runs/36070869894/attempts/1 [1]
Link: https://github.com/tamird/git/actions/runs/36070867524/attempts/1 [2]
Link: https://github.com/tamird/git/actions/runs/36070867647/attempts/1 [3]
Assisted-by: LLM
Signed-off-by: Tamir Duberstein <tamird@gmail.com>
---
ci/lib.sh | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/ci/lib.sh b/ci/lib.sh
index c6ccbf8c17..f0b7f35850 100755
--- a/ci/lib.sh
+++ b/ci/lib.sh
@@ -227,7 +227,6 @@ then
cache_dir="$HOME/none"
GIT_TEST_OPTS="--github-workflow-markup"
- JOBS=10
distro=$(echo "$CI_JOB_IMAGE" | tr : -)
elif test true = "$GITLAB_CI"
@@ -250,7 +249,6 @@ then
case "$OS,$CI_JOB_IMAGE" in
Windows_NT,*)
CI_OS_NAME=windows
- JOBS=$NUMBER_OF_PROCESSORS
;;
*,macos-*)
# GitLab CI has Python installed via multiple package managers,
@@ -260,11 +258,9 @@ then
export PATH="$(brew --prefix)/bin:$PATH"
CI_OS_NAME=osx
- JOBS=$(nproc)
;;
*,almalinux:*|*,alpine:*|*,debian:*|*,fedora:*|*,ubuntu:*|*,i386/ubuntu:*)
CI_OS_NAME=linux
- JOBS=$(nproc)
;;
*)
echo "Could not identify OS image" >&2
@@ -291,6 +287,19 @@ else
exit 1
fi
+case "$CI_OS_NAME" in
+windows|windows_nt)
+ JOBS=$NUMBER_OF_PROCESSORS
+ ;;
+osx)
+ JOBS=$(sysctl -n hw.logicalcpu)
+ ;;
+*)
+ JOBS=$(nproc)
+ ;;
+esac
+JOBS=$((2 * JOBS))
+
MAKEFLAGS="$MAKEFLAGS --jobs=$JOBS"
GIT_PROVE_OPTS="--timer --jobs $JOBS"
--
2.56.0.rc2.851.g50a151a6e9.frankengit
^ permalink raw reply related [flat|nested] 25+ messages in thread* Re: [PATCH v3 2/2] ci: use twice the CPU count on both providers
2026-09-30 14:20 ` [PATCH v3 2/2] ci: use twice the CPU count on both providers Tamir Duberstein
@ 2026-09-30 14:45 ` Patrick Steinhardt
0 siblings, 0 replies; 25+ messages in thread
From: Patrick Steinhardt @ 2026-09-30 14:45 UTC (permalink / raw)
To: Tamir Duberstein; +Cc: git, Junio C Hamano, Jeff King
On Wed, Sep 30, 2026 at 10:20:35AM -0400, Tamir Duberstein wrote:
> GitHub Actions sets JOBS to ten regardless of runner size, while
> GitLab CI uses the detected CPU count. Use twice the CPU count for
> Make and prove on both providers, doubling GitLab's job count.
>
> Five GitHub Actions attempts per policy, with the long tests enabled,
> gave these sums of per-job median successful build/test-step times
> (minutes; four or five samples per job) [1-3]:
>
> Fixed 10 CPU count 2x CPU count
> Linux Make 278.9 273.9 259.9
> macOS Make 94.5 119.1 99.8
> Windows Make 102.2 103.8 100.8
>
> Workflow overhead is excluded; Windows runner images varied.
>
> Use twice the CPU count to scale concurrency with runner size while
> avoiding the larger macOS slowdown observed with one job per CPU.
> Compared with ten jobs, this trades a lower Linux total for a higher
> macOS total.
Right. We could of course special-case macOS. But I don't feel like it
makes sense to squeeze every single second out of a job that's already
the fastest anyway.
Patrick
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH v3 0/2] ci: use cmp and align job-count selection
2026-09-30 14:20 ` [PATCH v3 0/2] ci: use cmp and align job-count selection Tamir Duberstein
2026-09-30 14:20 ` [PATCH v3 1/2] t4205: compare huge output without diff Tamir Duberstein
2026-09-30 14:20 ` [PATCH v3 2/2] ci: use twice the CPU count on both providers Tamir Duberstein
@ 2026-09-30 14:45 ` Patrick Steinhardt
2026-09-30 14:58 ` Tamir Duberstein
2 siblings, 1 reply; 25+ messages in thread
From: Patrick Steinhardt @ 2026-09-30 14:45 UTC (permalink / raw)
To: Tamir Duberstein; +Cc: git, Junio C Hamano, Jeff King
On Wed, Sep 30, 2026 at 10:20:33AM -0400, Tamir Duberstein wrote:
> Changes in v3:
> - Use twice the CPU count on both providers, instead of adopting
> GitLab's existing one-job-per-CPU policy.
> - Include CI timings and their tradeoffs in patch 2's commit message,
> and explain the use of sysctl directly.
> - Patch 1 is unchanged.
> - Link to v2: https://patch.msgid.link/20260925-ci-large-test-resources-v2-0-f632cf319756@gmail.com
Thanks, I'm happy with this version.
Patrick
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH v3 0/2] ci: use cmp and align job-count selection
2026-09-30 14:45 ` [PATCH v3 0/2] ci: use cmp and align job-count selection Patrick Steinhardt
@ 2026-09-30 14:58 ` Tamir Duberstein
2026-09-30 18:04 ` Junio C Hamano
0 siblings, 1 reply; 25+ messages in thread
From: Tamir Duberstein @ 2026-09-30 14:58 UTC (permalink / raw)
To: Patrick Steinhardt; +Cc: git, Junio C Hamano, Jeff King
On Wed, Sep 30, 2026 at 10:45 AM Patrick Steinhardt <ps@pks.im> wrote:
>
> On Wed, Sep 30, 2026 at 10:20:33AM -0400, Tamir Duberstein wrote:
> > Changes in v3:
> > - Use twice the CPU count on both providers, instead of adopting
> > GitLab's existing one-job-per-CPU policy.
> > - Include CI timings and their tradeoffs in patch 2's commit message,
> > and explain the use of sysctl directly.
> > - Patch 1 is unchanged.
> > - Link to v2: https://patch.msgid.link/20260925-ci-large-test-resources-v2-0-f632cf319756@gmail.com
>
> Thanks, I'm happy with this version.
>
> Patrick
Thanks for the reviews!
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH v3 0/2] ci: use cmp and align job-count selection
2026-09-30 14:58 ` Tamir Duberstein
@ 2026-09-30 18:04 ` Junio C Hamano
0 siblings, 0 replies; 25+ messages in thread
From: Junio C Hamano @ 2026-09-30 18:04 UTC (permalink / raw)
To: Tamir Duberstein; +Cc: Patrick Steinhardt, git, Jeff King
Tamir Duberstein <tamird@gmail.com> writes:
> On Wed, Sep 30, 2026 at 10:45 AM Patrick Steinhardt <ps@pks.im> wrote:
>>
>> On Wed, Sep 30, 2026 at 10:20:33AM -0400, Tamir Duberstein wrote:
>> > Changes in v3:
>> > - Use twice the CPU count on both providers, instead of adopting
>> > GitLab's existing one-job-per-CPU policy.
>> > - Include CI timings and their tradeoffs in patch 2's commit message,
>> > and explain the use of sysctl directly.
>> > - Patch 1 is unchanged.
>> > - Link to v2: https://patch.msgid.link/20260925-ci-large-test-resources-v2-0-f632cf319756@gmail.com
>>
>> Thanks, I'm happy with this version.
>>
>> Patrick
>
> Thanks for the reviews!
Thanks for writing and reviewing these patches, both of you.
Let me mark it for 'next'.
^ permalink raw reply [flat|nested] 25+ messages in thread