From: Patrick Steinhardt <ps@pks.im>
To: Jeff King <peff@peff.net>
Cc: git@vger.kernel.org, Junio C Hamano <gitster@pobox.com>,
Johannes Schindelin <Johannes.Schindelin@gmx.de>
Subject: Re: [PATCH 3/9] t4141: fix inefficient use of dd(1)
Date: Fri, 3 Jul 2026 07:42:00 +0200 [thread overview]
Message-ID: <akdLqNHW3pGThQat@pks.im> (raw)
In-Reply-To: <20260702211614.GB2051171@coredump.intra.peff.net>
On Thu, Jul 02, 2026 at 05:16:14PM -0400, Jeff King wrote:
> On Thu, Jul 02, 2026 at 02:00:56PM +0200, Patrick Steinhardt wrote:
>
> > This test setup is extremely expensive, as `test_copy_bytes` is
> > implemented via `dd ibs=1 count="$1"`, which copies data one byte at a
> > time. So as we write 1GB of data, we end up doing 1 billion reads and
> > writes. This naturally takes a while: it takes 6 minutes on my system,
> > and around 40 minutes in some CI jobs!
> >
> > We can do much better though, as genzeros already knows to handle an
> > optional limit of how much data it is supposed to write, which allows us
> > to remove the call to `test_copy_bytes`. Furthermore, it has already
> > been optimized to generate the data fast.
>
> Seems like a good fix for this case, where we can skip the extra process
> entirely.
>
> It feels like test_copy_bytes should be able to do much better in
> general. The obvious thing to reach for is "head -c", but the function
> was originally added because that wasn't portable. The "-c" option is
> not in POSIX, though the original comment claims IRIX was the problem,
> so I wonder if "head -c" is de facto portable these days.
An alternative could be to implement a simple helper as part of our
test-tool. But I doubt it's really worth it: almost all callers only
want to copy a small number of bytes. The only exception seems to be
t0021, where we copy up to 65kB. But that whole test suite still only
takes ~3 seconds, so optimizing that feels like wasted time to me.
Patrick
next prev parent reply other threads:[~2026-07-03 5:42 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-02 12:00 [PATCH 0/9] t: fixes and improvements for GIT_TEST_LONG Patrick Steinhardt
2026-07-02 12:00 ` [PATCH 1/9] README: add GitLab CI badge to make it more discoverable Patrick Steinhardt
2026-07-02 12:00 ` [PATCH 2/9] t0021: skip EXPENSIVE test that is broken without SIZE_T_IS_32BIT Patrick Steinhardt
2026-07-02 12:00 ` [PATCH 3/9] t4141: fix inefficient use of dd(1) Patrick Steinhardt
2026-07-02 17:49 ` SZEDER Gábor
2026-07-03 5:42 ` Patrick Steinhardt
2026-07-02 21:16 ` Jeff King
2026-07-03 5:42 ` Patrick Steinhardt [this message]
2026-07-03 7:00 ` Jeff King
2026-07-02 12:00 ` [PATCH 4/9] t5608: reduce maximum disk usage Patrick Steinhardt
2026-07-02 12:00 ` [PATCH 5/9] t7508: skip EXPENSIVE test that is broken without SIZE_T_IS_32BIT Patrick Steinhardt
2026-07-02 21:22 ` Jeff King
2026-07-02 22:18 ` Jeff King
2026-07-02 12:00 ` [PATCH 6/9] t7900: clean up large EXPENSIVE repository Patrick Steinhardt
2026-07-02 21:30 ` Jeff King
2026-07-03 5:42 ` Patrick Steinhardt
2026-07-03 7:00 ` Jeff King
2026-07-02 12:01 ` [PATCH 7/9] t: use `test_bool_env` to parse GIT_TEST_LONG Patrick Steinhardt
2026-07-02 12:01 ` [PATCH 8/9] gitlab-ci: disable RAM disk on macOS jobs Patrick Steinhardt
2026-07-02 12:01 ` [PATCH 9/9] gitlab-ci: enable "GIT_TEST_LONG" Patrick Steinhardt
2026-07-03 9:24 ` [PATCH v2 0/9] t: fixes and improvements for GIT_TEST_LONG Patrick Steinhardt
2026-07-03 9:24 ` [PATCH v2 1/9] README: add GitLab CI badge to make it more discoverable Patrick Steinhardt
2026-07-03 9:24 ` [PATCH v2 2/9] t0021: skip EXPENSIVE test that is broken without SIZE_T_IS_32BIT Patrick Steinhardt
2026-07-03 17:36 ` Junio C Hamano
2026-07-06 6:23 ` Patrick Steinhardt
2026-07-03 9:24 ` [PATCH v2 3/9] t4141: fix inefficient use of dd(1) Patrick Steinhardt
2026-07-03 9:24 ` [PATCH v2 4/9] t5608: reduce maximum disk usage Patrick Steinhardt
2026-07-03 9:24 ` [PATCH v2 5/9] t7508: skip EXPENSIVE test that is broken without SIZE_T_IS_32BIT Patrick Steinhardt
2026-07-03 17:38 ` Junio C Hamano
2026-07-03 9:24 ` [PATCH v2 6/9] t7900: clean up large EXPENSIVE repository Patrick Steinhardt
2026-07-03 9:24 ` [PATCH v2 7/9] t: use `test_bool_env` to parse GIT_TEST_LONG Patrick Steinhardt
2026-07-03 9:24 ` [PATCH v2 8/9] gitlab-ci: disable RAM disk on macOS jobs Patrick Steinhardt
2026-07-03 9:24 ` [PATCH v2 9/9] gitlab-ci: enable "GIT_TEST_LONG" Patrick Steinhardt
2026-07-06 6:23 ` [PATCH v3 0/9] t: fixes and improvements for GIT_TEST_LONG Patrick Steinhardt
2026-07-06 6:23 ` [PATCH v3 1/9] README: add GitLab CI badge to make it more discoverable Patrick Steinhardt
2026-07-06 6:23 ` [PATCH v3 2/9] t0021: skip EXPENSIVE test that is broken without SIZE_T_IS_64BIT Patrick Steinhardt
2026-07-06 6:23 ` [PATCH v3 3/9] t4141: fix inefficient use of dd(1) Patrick Steinhardt
2026-07-06 6:23 ` [PATCH v3 4/9] t5608: reduce maximum disk usage Patrick Steinhardt
2026-07-06 6:24 ` [PATCH v3 5/9] t7508: skip EXPENSIVE test that is broken without SIZE_T_IS_64BIT Patrick Steinhardt
2026-07-06 6:24 ` [PATCH v3 6/9] t7900: clean up large EXPENSIVE repository Patrick Steinhardt
2026-07-06 6:24 ` [PATCH v3 7/9] t: use `test_bool_env` to parse GIT_TEST_LONG Patrick Steinhardt
2026-07-06 6:24 ` [PATCH v3 8/9] gitlab-ci: disable RAM disk on macOS jobs Patrick Steinhardt
2026-07-06 6:24 ` [PATCH v3 9/9] gitlab-ci: enable "GIT_TEST_LONG" Patrick Steinhardt
2026-07-06 20:29 ` [PATCH v3 0/9] t: fixes and improvements for GIT_TEST_LONG Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=akdLqNHW3pGThQat@pks.im \
--to=ps@pks.im \
--cc=Johannes.Schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox