`dd`: `status=progress` can slow if `ibs`, `obs`, or `bs` are large
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 24.1k
- Forks
- 2k
- Avg merge
- 1d 5h
- Merged PRs (30d)
- 365
Description
When running coreutil's dd status=progress with ibs, obs, or bs set to a large amount (>=1G), updating progress takes (potentially much) longer than a second. GNU's dd status=progress consistently updates every second for me (Fedora 34 x86_64).
The time it takes coreutil's dd to update the progress correlates with how large ibs/obs/bs is. Personally,
./target/release/dd status=progress bs=3G < /dev/zero > /dev/null
takes around 3-3.5 seconds for the progress bar to update, but setting
./target/release/dd status=progress bs=20G < /dev/zero > /dev/null
takes 10-15 seconds before a progress bar even shows up, at which point the progress bar continues updating at that interval.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at the dd command entry point and reproduce the delay with the supplied status=progress commands using large bs values. Trace how progress timing depends on ibs, obs, or bs, then verify that progress updates occur about once per second with the demonstrated commands.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- cli, performance
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100