Skip to content

uucore: share a fluent resource between threads - dd perf + 45%#11220

Open
oech3 wants to merge 1 commit intouutils:mainfrom
oech3:sort-exec-malloc
Open

uucore: share a fluent resource between threads - dd perf + 45%#11220
oech3 wants to merge 1 commit intouutils:mainfrom
oech3:sort-exec-malloc

Conversation

@oech3
Copy link
Contributor

@oech3 oech3 commented Mar 6, 2026

Closes #11236

  • Save RAM usage of multi-thread utils
  • improve malloc performance

@codspeed-hq
Copy link

codspeed-hq bot commented Mar 6, 2026

Merging this PR will degrade performance by 3.25%

⚠️ Different runtime environments detected

Some benchmarks with significant performance changes were compared across different runtime environments,
which may affect the accuracy of the results.

Open the report in CodSpeed to investigate

⚡ 16 improved benchmarks
❌ 1 regressed benchmark
✅ 281 untouched benchmarks
⏩ 48 skipped benchmarks1

⚠️ Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Mode Benchmark BASE HEAD Efficiency
Memory dd_copy_with_skip 103.2 KB 18.4 KB ×5.6
Memory dd_copy_default 99.5 KB 14.7 KB ×6.8
Memory dd_copy_64k_blocks 162.9 KB 78.1 KB ×2.1
Memory dd_copy_separate_blocks 178.3 KB 137.2 KB +29.95%
Memory dd_copy_partial 102.9 KB 18.1 KB ×5.7
Memory dd_copy_4k_blocks 102.9 KB 18.1 KB ×5.7
Memory dd_copy_with_seek 103.2 KB 18.4 KB ×5.6
Memory dd_copy_1m_blocks 1.1 MB 1 MB +8.17%
Memory dd_copy_8k_blocks 106.9 KB 22.1 KB ×4.8
Simulation dd_copy_with_skip 2.1 ms 2 ms +6.92%
Simulation dd_copy_1m_blocks 1.4 ms 1.2 ms +11.38%
Simulation dd_copy_4k_blocks 1.2 ms 1.1 ms +12.5%
Simulation dd_copy_8k_blocks 913.8 µs 771.7 µs +18.4%
Simulation dd_copy_64k_blocks 501.6 µs 365.2 µs +37.35%
Simulation dd_copy_with_seek 2.2 ms 2 ms +7.05%
Simulation dd_copy_partial 455.8 µs 315.7 µs +44.36%
Simulation du_max_depth_balanced_tree[(6, 4, 10)] 24.9 ms 25.7 ms -3.25%

Comparing oech3:sort-exec-malloc (a5b65bf) with main (53200b3)

Open in CodSpeed

Footnotes

  1. 48 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

@oech3 oech3 closed this Mar 6, 2026
@oech3 oech3 deleted the sort-exec-malloc branch March 6, 2026 17:45
@oech3 oech3 changed the title sort: reduce malloc expand Mar 7, 2026
@oech3 oech3 restored the sort-exec-malloc branch March 7, 2026 13:51
@oech3 oech3 deleted the sort-exec-malloc branch March 7, 2026 14:03
@oech3 oech3 restored the sort-exec-malloc branch March 8, 2026 14:34
@oech3 oech3 deleted the sort-exec-malloc branch March 8, 2026 14:45
@oech3 oech3 changed the title expand share fluent Mar 9, 2026
@oech3 oech3 restored the sort-exec-malloc branch March 9, 2026 06:56
@oech3 oech3 reopened this Mar 9, 2026
@oech3 oech3 force-pushed the sort-exec-malloc branch from 166148a to 1d2e6cc Compare March 9, 2026 06:56
@sylvestre sylvestre changed the title share fluent share fluent resources between threads Mar 9, 2026
@oech3 oech3 force-pushed the sort-exec-malloc branch 2 times, most recently from a3d65d4 to 9c4c16b Compare March 9, 2026 08:09
@oech3

This comment was marked as outdated.

@oech3 oech3 changed the title share fluent resources between threads uucore: share a fluent resource between threads Mar 9, 2026
@github-actions
Copy link

github-actions bot commented Mar 9, 2026

GNU testsuite comparison:

GNU test failed: tests/basenc/base64. tests/basenc/base64 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/basenc/basenc. tests/basenc/basenc is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/chcon/chcon. tests/chcon/chcon is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/chmod/no-x. tests/chmod/no-x is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/chmod/thru-dangling. tests/chmod/thru-dangling is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/chown/preserve-root. tests/chown/preserve-root is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/chroot/chroot-fail. tests/chroot/chroot-fail is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/cksum/cksum-base64. tests/cksum/cksum-base64 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/cp/abuse. tests/cp/abuse is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/cp/backup-is-src. tests/cp/backup-is-src is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/cp/cp-a-selinux. tests/cp/cp-a-selinux is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/cp/cp-mv-enotsup-xattr. tests/cp/cp-mv-enotsup-xattr is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/cp/debug. tests/cp/debug is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/cp/fail-perm. tests/cp/fail-perm is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/cp/into-self. tests/cp/into-self is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/cp/link-deref. tests/cp/link-deref is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/cp/same-file. tests/cp/same-file is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/cp/symlink-slash. tests/cp/symlink-slash is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/cp/thru-dangling. tests/cp/thru-dangling is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/csplit/csplit. tests/csplit/csplit is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/cut/cut. tests/cut/cut is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/date/date. tests/date/date is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/dd/misc. tests/dd/misc is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/dd/nocache_fail. tests/dd/nocache_fail is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/dd/reblock. tests/dd/reblock is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/dd/skip-seek. tests/dd/skip-seek is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/dd/skip-seek-past-dev. tests/dd/skip-seek-past-dev is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/dd/skip-seek-past-file. tests/dd/skip-seek-past-file is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/dd/stats. tests/dd/stats is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/dd/unblock. tests/dd/unblock is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/df/df-output. tests/df/df-output is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/df/over-mount-device. tests/df/over-mount-device is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/df/total-unprocessed. tests/df/total-unprocessed is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/df/total-verify. tests/df/total-verify is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/du/files0-from. tests/du/files0-from is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/du/files0-from-dir. tests/du/files0-from-dir is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/du/inacc-dest. tests/du/inacc-dest is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/du/inodes. tests/du/inodes is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/du/long-sloop. tests/du/long-sloop is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/du/no-x. tests/du/no-x is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/du/threshold. tests/du/threshold is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/env/env. tests/env/env is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/env/env-S. tests/env/env-S is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/expand/expand. tests/expand/expand is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/expr/expr. tests/expr/expr is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/factor/factor. tests/factor/factor is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/fmt/base. tests/fmt/base is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/groups/groups-dash. tests/groups/groups-dash is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/head/head-write-error. tests/head/head-write-error is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/id/zero. tests/id/zero is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/basic-1. tests/install/basic-1 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/install-C. tests/install/install-C is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/install-C-root. tests/install/install-C-root is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/install-C-selinux. tests/install/install-C-selinux is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/join/join. tests/join/join is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/ln/hard-backup. tests/ln/hard-backup is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/ln/hard-to-sym. tests/ln/hard-to-sym is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/ln/sf-1. tests/ln/sf-1 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/ls/dangle. tests/ls/dangle is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/ls/dired. tests/ls/dired is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/ls/infloop. tests/ls/infloop is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/ls/ls-misc. tests/ls/ls-misc is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/ls/quote-align. tests/ls/quote-align is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/ls/stat-failed. tests/ls/stat-failed is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/ls/symlink-slash. tests/ls/symlink-slash is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/ls/time-style-diag. tests/ls/time-style-diag is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/ls/zero-option. tests/ls/zero-option is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/misc/basename. tests/misc/basename is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/misc/comm. tests/misc/comm is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/misc/dircolors. tests/misc/dircolors is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/misc/dirname. tests/misc/dirname is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/misc/io-errors. tests/misc/io-errors is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/misc/sync. tests/misc/sync is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/misc/time-style. tests/misc/time-style is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/misc/tsort. tests/misc/tsort is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/misc/yes. tests/misc/yes is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mkdir/p-v. tests/mkdir/p-v is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mktemp/mktemp. tests/mktemp/mktemp is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/backup-dir. tests/mv/backup-dir is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/backup-is-src. tests/mv/backup-is-src is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/diag. tests/mv/diag is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/dir2dir. tests/mv/dir2dir is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/dup-source. tests/mv/dup-source is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/force. tests/mv/force is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/hard-4. tests/mv/hard-4 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/i-1. tests/mv/i-1 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/i-2. tests/mv/i-2 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/i-3. tests/mv/i-3 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/i-4. tests/mv/i-4 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/into-self. tests/mv/into-self is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/into-self-2. tests/mv/into-self-2 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/into-self-3. tests/mv/into-self-3 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/mv-n. tests/mv/mv-n is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/mv-special-1. tests/mv/mv-special-1 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/part-fail. tests/mv/part-fail is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/part-symlink. tests/mv/part-symlink is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/perm-1. tests/mv/perm-1 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/symlink-onto-hardlink. tests/mv/symlink-onto-hardlink is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/symlink-onto-hardlink-to-self. tests/mv/symlink-onto-hardlink-to-self is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/trailing-slash. tests/mv/trailing-slash is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/od/od. tests/od/od is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/paste/paste. tests/paste/paste is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/printf/printf-cov. tests/printf/printf-cov is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/ptx/ptx. tests/ptx/ptx is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/readlink/readlink-posix. tests/readlink/readlink-posix is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rm/cycle. tests/rm/cycle is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rm/d-1. tests/rm/d-1 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rm/d-2. tests/rm/d-2 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rm/d-3. tests/rm/d-3 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rm/dir-no-w. tests/rm/dir-no-w is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rm/dir-nonrecur. tests/rm/dir-nonrecur is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rm/empty-name. tests/rm/empty-name is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rm/fail-eacces. tests/rm/fail-eacces is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rm/inaccessible. tests/rm/inaccessible is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rm/r-1. tests/rm/r-1 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rm/r-2. tests/rm/r-2 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rm/r-4. tests/rm/r-4 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rm/rm1. tests/rm/rm1 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rm/v-slash. tests/rm/v-slash is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rmdir/symlink-errors. tests/rmdir/symlink-errors is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/seq/seq. tests/seq/seq is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/shred/shred-passes. tests/shred/shred-passes is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/shred/shred-remove. tests/shred/shred-remove is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/shred/shred-size. tests/shred/shred-size is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/sort/sort. tests/sort/sort is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/sort/sort-debug-keys. tests/sort/sort-debug-keys is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/sort/sort-debug-warn. tests/sort/sort-debug-warn is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/sort/sort-files0-from. tests/sort/sort-files0-from is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/sort/sort-merge. tests/sort/sort-merge is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/split/additional-suffix. tests/split/additional-suffix is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/split/l-chunk. tests/split/l-chunk is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/split/suffix-length. tests/split/suffix-length is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/stat/stat-printf. tests/stat/stat-printf is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/stty/stty. tests/stty/stty is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/stty/stty-pairs. tests/stty/stty-pairs is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/tac/tac-continue. tests/tac/tac-continue is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/tail/F-headers. tests/tail/F-headers is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/tail/F-vs-missing. tests/tail/F-vs-missing is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/tail/F-vs-rename. tests/tail/F-vs-rename is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/tail/assert. tests/tail/assert is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/tail/follow-stdin. tests/tail/follow-stdin is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/tail/inotify-hash-abuse. tests/tail/inotify-hash-abuse is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/tail/retry. tests/tail/retry is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/tail/tail. tests/tail/tail is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/test/test. tests/test/test is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/test/test-diag. tests/test/test-diag is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/touch/fail-diag. tests/touch/fail-diag is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/touch/not-owner. tests/touch/not-owner is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/tr/tr. tests/tr/tr is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/tr/tr-case-class. tests/tr/tr-case-class is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/truncate/truncate-fail-diag. tests/truncate/truncate-fail-diag is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/unexpand/unexpand. tests/unexpand/unexpand is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/uniq/uniq. tests/uniq/uniq is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/wc/wc-files0. tests/wc/wc-files0 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/wc/wc-files0-from. tests/wc/wc-files0-from is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/wc/wc-proc. tests/wc/wc-proc is passing on 'main'. Maybe you have to rebase?
Skip an intermittent issue tests/date/resolution (fails in this run but passes in the 'main' branch)
Skip an intermittent issue tests/misc/usage_vs_getopt (fails in this run but passes in the 'main' branch)
Skip an intermittent issue tests/tail/symlink (fails in this run but passes in the 'main' branch)
Skip an intermittent issue tests/timeout/timeout (fails in this run but passes in the 'main' branch)
Skip an intermittent issue tests/tty/tty-eof (fails in this run but passes in the 'main' branch)
Skipping an intermittent issue tests/date/date-locale-hour (passes in this run but fails in the 'main' branch)
Note: The gnu test tests/cp/sparse-2 is now being skipped but was previously passing.
Note: The gnu test tests/cp/sparse-extents is now being skipped but was previously passing.
Note: The gnu test tests/cp/sparse-extents-2 is now being skipped but was previously passing.
Note: The gnu test tests/cp/sparse-perf is now being skipped but was previously passing.
Note: The gnu test tests/du/2g is now being skipped but was previously passing.
Note: The gnu test tests/printf/printf-surprise is now being skipped but was previously passing.
Note: The gnu test tests/seq/seq-epipe is now being skipped but was previously passing.
Note: The gnu test tests/tail/inotify-dir-recreate is now being skipped but was previously passing.
Note: The gnu test tests/tail/inotify-only-regular is now being skipped but was previously passing.
Note: The gnu test tests/tail/pipe-f is now being skipped but was previously passing.

@oech3
Copy link
Contributor Author

oech3 commented Mar 9, 2026

Not too easy

@oech3 oech3 closed this Mar 9, 2026
@oech3 oech3 deleted the sort-exec-malloc branch March 9, 2026 09:03
@oech3 oech3 restored the sort-exec-malloc branch March 9, 2026 09:26
@oech3 oech3 reopened this Mar 9, 2026
@oech3 oech3 force-pushed the sort-exec-malloc branch from 9c4c16b to 1215c95 Compare March 9, 2026 09:36
@github-actions
Copy link

github-actions bot commented Mar 9, 2026

GNU testsuite comparison:

GNU test failed: tests/basenc/base64. tests/basenc/base64 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/basenc/basenc. tests/basenc/basenc is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/chcon/chcon. tests/chcon/chcon is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/chmod/no-x. tests/chmod/no-x is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/chmod/thru-dangling. tests/chmod/thru-dangling is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/chown/preserve-root. tests/chown/preserve-root is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/chroot/chroot-fail. tests/chroot/chroot-fail is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/cksum/cksum-base64. tests/cksum/cksum-base64 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/cp/abuse. tests/cp/abuse is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/cp/backup-is-src. tests/cp/backup-is-src is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/cp/cp-a-selinux. tests/cp/cp-a-selinux is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/cp/cp-mv-enotsup-xattr. tests/cp/cp-mv-enotsup-xattr is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/cp/debug. tests/cp/debug is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/cp/fail-perm. tests/cp/fail-perm is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/cp/into-self. tests/cp/into-self is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/cp/link-deref. tests/cp/link-deref is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/cp/same-file. tests/cp/same-file is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/cp/symlink-slash. tests/cp/symlink-slash is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/cp/thru-dangling. tests/cp/thru-dangling is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/csplit/csplit. tests/csplit/csplit is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/cut/cut. tests/cut/cut is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/date/date. tests/date/date is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/dd/misc. tests/dd/misc is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/dd/nocache_fail. tests/dd/nocache_fail is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/dd/reblock. tests/dd/reblock is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/dd/skip-seek. tests/dd/skip-seek is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/dd/skip-seek-past-dev. tests/dd/skip-seek-past-dev is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/dd/skip-seek-past-file. tests/dd/skip-seek-past-file is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/dd/stats. tests/dd/stats is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/dd/unblock. tests/dd/unblock is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/df/df-output. tests/df/df-output is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/df/over-mount-device. tests/df/over-mount-device is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/df/total-unprocessed. tests/df/total-unprocessed is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/df/total-verify. tests/df/total-verify is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/du/files0-from. tests/du/files0-from is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/du/files0-from-dir. tests/du/files0-from-dir is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/du/inacc-dest. tests/du/inacc-dest is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/du/inodes. tests/du/inodes is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/du/long-sloop. tests/du/long-sloop is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/du/no-x. tests/du/no-x is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/du/threshold. tests/du/threshold is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/env/env. tests/env/env is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/env/env-S. tests/env/env-S is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/expand/expand. tests/expand/expand is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/expr/expr. tests/expr/expr is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/factor/factor. tests/factor/factor is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/fmt/base. tests/fmt/base is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/groups/groups-dash. tests/groups/groups-dash is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/head/head-write-error. tests/head/head-write-error is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/id/zero. tests/id/zero is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/basic-1. tests/install/basic-1 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/install-C. tests/install/install-C is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/install-C-root. tests/install/install-C-root is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/install-C-selinux. tests/install/install-C-selinux is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/join/join. tests/join/join is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/ln/hard-backup. tests/ln/hard-backup is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/ln/hard-to-sym. tests/ln/hard-to-sym is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/ln/sf-1. tests/ln/sf-1 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/ls/dangle. tests/ls/dangle is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/ls/dired. tests/ls/dired is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/ls/infloop. tests/ls/infloop is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/ls/ls-misc. tests/ls/ls-misc is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/ls/quote-align. tests/ls/quote-align is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/ls/stat-failed. tests/ls/stat-failed is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/ls/symlink-slash. tests/ls/symlink-slash is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/ls/time-style-diag. tests/ls/time-style-diag is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/ls/zero-option. tests/ls/zero-option is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/misc/basename. tests/misc/basename is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/misc/comm. tests/misc/comm is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/misc/dircolors. tests/misc/dircolors is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/misc/dirname. tests/misc/dirname is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/misc/io-errors. tests/misc/io-errors is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/misc/sync. tests/misc/sync is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/misc/time-style. tests/misc/time-style is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/misc/tsort. tests/misc/tsort is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/misc/yes. tests/misc/yes is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mkdir/p-v. tests/mkdir/p-v is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mktemp/mktemp. tests/mktemp/mktemp is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/backup-dir. tests/mv/backup-dir is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/backup-is-src. tests/mv/backup-is-src is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/diag. tests/mv/diag is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/dir2dir. tests/mv/dir2dir is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/dup-source. tests/mv/dup-source is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/force. tests/mv/force is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/hard-4. tests/mv/hard-4 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/i-1. tests/mv/i-1 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/i-2. tests/mv/i-2 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/i-3. tests/mv/i-3 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/i-4. tests/mv/i-4 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/into-self. tests/mv/into-self is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/into-self-2. tests/mv/into-self-2 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/into-self-3. tests/mv/into-self-3 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/mv-n. tests/mv/mv-n is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/mv-special-1. tests/mv/mv-special-1 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/part-fail. tests/mv/part-fail is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/part-symlink. tests/mv/part-symlink is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/perm-1. tests/mv/perm-1 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/symlink-onto-hardlink. tests/mv/symlink-onto-hardlink is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/symlink-onto-hardlink-to-self. tests/mv/symlink-onto-hardlink-to-self is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mv/trailing-slash. tests/mv/trailing-slash is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/od/od. tests/od/od is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/paste/paste. tests/paste/paste is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/printf/printf-cov. tests/printf/printf-cov is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/ptx/ptx. tests/ptx/ptx is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/readlink/readlink-posix. tests/readlink/readlink-posix is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rm/cycle. tests/rm/cycle is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rm/d-1. tests/rm/d-1 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rm/d-2. tests/rm/d-2 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rm/d-3. tests/rm/d-3 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rm/dir-no-w. tests/rm/dir-no-w is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rm/dir-nonrecur. tests/rm/dir-nonrecur is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rm/empty-name. tests/rm/empty-name is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rm/fail-eacces. tests/rm/fail-eacces is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rm/inaccessible. tests/rm/inaccessible is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rm/r-1. tests/rm/r-1 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rm/r-2. tests/rm/r-2 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rm/r-4. tests/rm/r-4 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rm/rm1. tests/rm/rm1 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rm/v-slash. tests/rm/v-slash is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/rmdir/symlink-errors. tests/rmdir/symlink-errors is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/seq/seq. tests/seq/seq is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/shred/shred-passes. tests/shred/shred-passes is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/shred/shred-remove. tests/shred/shred-remove is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/shred/shred-size. tests/shred/shred-size is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/sort/sort. tests/sort/sort is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/sort/sort-debug-keys. tests/sort/sort-debug-keys is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/sort/sort-debug-warn. tests/sort/sort-debug-warn is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/sort/sort-files0-from. tests/sort/sort-files0-from is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/sort/sort-merge. tests/sort/sort-merge is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/split/additional-suffix. tests/split/additional-suffix is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/split/l-chunk. tests/split/l-chunk is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/split/suffix-length. tests/split/suffix-length is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/stat/stat-printf. tests/stat/stat-printf is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/stty/stty. tests/stty/stty is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/stty/stty-pairs. tests/stty/stty-pairs is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/tac/tac-continue. tests/tac/tac-continue is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/tail/F-headers. tests/tail/F-headers is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/tail/F-vs-missing. tests/tail/F-vs-missing is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/tail/F-vs-rename. tests/tail/F-vs-rename is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/tail/assert. tests/tail/assert is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/tail/follow-stdin. tests/tail/follow-stdin is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/tail/inotify-hash-abuse. tests/tail/inotify-hash-abuse is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/tail/retry. tests/tail/retry is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/tail/tail. tests/tail/tail is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/test/test. tests/test/test is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/test/test-diag. tests/test/test-diag is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/touch/fail-diag. tests/touch/fail-diag is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/touch/not-owner. tests/touch/not-owner is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/tr/tr. tests/tr/tr is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/tr/tr-case-class. tests/tr/tr-case-class is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/truncate/truncate-fail-diag. tests/truncate/truncate-fail-diag is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/unexpand/unexpand. tests/unexpand/unexpand is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/uniq/uniq. tests/uniq/uniq is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/wc/wc-files0. tests/wc/wc-files0 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/wc/wc-files0-from. tests/wc/wc-files0-from is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/wc/wc-proc. tests/wc/wc-proc is passing on 'main'. Maybe you have to rebase?
Skip an intermittent issue tests/misc/usage_vs_getopt (fails in this run but passes in the 'main' branch)
Skip an intermittent issue tests/tail/symlink (fails in this run but passes in the 'main' branch)
Skip an intermittent issue tests/timeout/timeout (fails in this run but passes in the 'main' branch)
Skipping an intermittent issue tests/date/date-locale-hour (passes in this run but fails in the 'main' branch)
Skipping an intermittent issue tests/pr/bounded-memory (passes in this run but fails in the 'main' branch)
Note: The gnu test tests/cp/sparse-2 is now being skipped but was previously passing.
Note: The gnu test tests/cp/sparse-extents is now being skipped but was previously passing.
Note: The gnu test tests/cp/sparse-extents-2 is now being skipped but was previously passing.
Note: The gnu test tests/cp/sparse-perf is now being skipped but was previously passing.
Note: The gnu test tests/du/2g is now being skipped but was previously passing.
Note: The gnu test tests/printf/printf-surprise is now being skipped but was previously passing.
Note: The gnu test tests/seq/seq-epipe is now being skipped but was previously passing.
Note: The gnu test tests/tail/inotify-dir-recreate is now being skipped but was previously passing.
Note: The gnu test tests/tail/inotify-only-regular is now being skipped but was previously passing.
Note: The gnu test tests/tail/pipe-f is now being skipped but was previously passing.
Congrats! The gnu test tests/csplit/csplit-heap is now passing!
Congrats! The gnu test tests/rm/many-dir-entries-vs-OOM is now passing!

@oech3 oech3 force-pushed the sort-exec-malloc branch 2 times, most recently from 05d100c to 182f69a Compare March 9, 2026 12:09
@github-actions
Copy link

github-actions bot commented Mar 9, 2026

GNU testsuite comparison:

Skipping an intermittent issue tests/pr/bounded-memory (passes in this run but fails in the 'main' branch)
Congrats! The gnu test tests/csplit/csplit-heap is now passing!
Congrats! The gnu test tests/rm/many-dir-entries-vs-OOM is now passing!

@oech3 oech3 force-pushed the sort-exec-malloc branch from 182f69a to 232a6c3 Compare March 9, 2026 12:35
@github-actions
Copy link

github-actions bot commented Mar 9, 2026

GNU testsuite comparison:

Skipping an intermittent issue tests/date/date-locale-hour (passes in this run but fails in the 'main' branch)
Skipping an intermittent issue tests/pr/bounded-memory (passes in this run but fails in the 'main' branch)
Note: The gnu test tests/tail/tail-n0f is now being skipped but was previously passing.
Congrats! The gnu test tests/rm/many-dir-entries-vs-OOM is now passing!

@oech3 oech3 changed the title uucore: share a fluent resource between threads uucore: share a fluent resource between threads - dd perf + 45% Mar 9, 2026
@oech3 oech3 marked this pull request as ready for review March 9, 2026 12:57
@oech3 oech3 force-pushed the sort-exec-malloc branch from 232a6c3 to a5b65bf Compare March 9, 2026 14:48
@github-actions
Copy link

github-actions bot commented Mar 9, 2026

GNU testsuite comparison:

Skip an intermittent issue tests/cut/bounded-memory (fails in this run but passes in the 'main' branch)
Skipping an intermittent issue tests/date/resolution (passes in this run but fails in the 'main' branch)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

uucore: Share FluentResource between threads (inparticular for dd performance)

1 participant