uutils / uutils/coreutils

`dd`: `status=progress` can slow if `ibs`, `obs`, or `bs` are large

Open
#3,094 2 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

U - dd wontfix
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.