Skip to content
A minimal, fast alternative to 'du -sh'
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
ci Update .gitattributes Nov 1, 2018
src Minor updates Nov 25, 2018
.gitignore
.travis.yml Update token again Nov 2, 2018
Cargo.lock Update dependencies Nov 25, 2018
Cargo.toml remove unnecessary lib metadata Dec 7, 2018
LICENSE-APACHE
LICENSE-MIT
README.md Add install instructions for NixOS. Apr 14, 2019

README.md

diskus

Build Status

A minimal, fast alternative to du -sh.

diskus is a very simple program that computes the total size of the current directory. It is a parallelized version of du -sh. On my 8-core laptop, it is about ten times faster than du with a cold disk cache and more than three times faster with a warm disk cache.

> diskus
14.56 GB (14556806983 bytes)

Benchmark

The following benchmarks have been performed with hyperfine on a moderately large folder (15GB, 100k directories, 400k files). Smaller folders are not really of any interest since all programs would finish in a reasonable time that would not interrupt your workflow.

In addition to du and diskus, we also add tin-summer (sn) and dust in our comparison. Both are also written in Rust and provide much more features than diskus (check them out!). The optimal number of threads for sn (-j option) was determined via hyperfine --parameter-scan.

Cold disk cache

sudo -v
hyperfine --prepare 'sync; echo 3 | sudo tee /proc/sys/vm/drop_caches' \
    'diskus' 'sn p -d0 -j8' 'du -sb' 'dust -d0'

(the sudo/sync/drop_caches commands are a way to clear the filesystem caches between benchmarking runs)

Command Mean [s] Min…Max [s]
diskus 1.649 ± 0.009 1.640…1.663
sn p -d0 -j8 9.701 ± 0.067 9.598…9.828
du -sb 16.039 ± 0.069 15.918…16.152
dust -d0 19.769 ± 0.285 19.564…20.561

Warm disk cache

On a warm disk cache, the differences are smaller:

hyperfine --warmup 5 'diskus' 'sn p -d0 -j8' 'du -sb' 'dust -d0'
Command Mean [s] Min…Max [s]
diskus 0.314 ± 0.007 0.303…0.329
sn p -d0 -j8 0.622 ± 0.008 0.611…0.634
du -sb 1.130 ± 0.013 1.116…1.161
dust -d0 3.593 ± 0.057 3.544…3.743

Installation

On Debian-based systems

wget "https://github.com/sharkdp/diskus/releases/download/v0.5.0/diskus_0.5.0_amd64.deb"
sudo dpkg -i diskus_0.5.0_amd64.deb

On Arch-based systems

pacman -Syu diskus

Or download diskus-bin from the AUR.

On Void-based systems

xbps-install diskus

On Haiku

pkgman install diskus

On NixOS

nix-env -iA nixos.diskus

Or add it to environment.systemPackages in your configuration.nix.

On other systems

Check out the release page for binary builds.

Via cargo

If you have Rust 1.29 or higher, you can install diskus from source via cargo:

cargo install diskus

License

Licensed under either of

at your option.

You can’t perform that action at this time.