nowfound

Life & fun · July 10, 2024

DA

Dut – a fast Linux disk usage calculator

"dut" is a disk usage calculator that I wrote a couple months ago in C. It is multi-threaded, making it one of the fastest such programs. It beats normal "du" in all cases, and beats all other similar programs when Linux's caches are warm (so, not on the first run). I wrote "dut" as a challenge to beat similar programs that I used a lot, namely pdu[1] and dust[2]. "dut" displays a tree of the biggest things under your current directory, and it also shows the size of hard-links under each directory as well. The hard-link tallying was inspired by ncdu[3], but I don't like how unintuitive the…

In plain words

Dut is a Linux disk usage calculator written in C that uses multithreading to analyze directory sizes faster than traditional tools like du. It displays a hierarchical tree of the largest files and folders while tracking hard-link sizes within each directory. Designed for system administrators and developers who need quick disk space analysis, dut is distributed as a single source file for easy installation and can be compiled with a single command.

written from the facts on this page · September 2026

From the sources

In the maker’s words, at launch

"dut" is a disk usage calculator that I wrote a couple months ago in C. It is multi-threaded, making it one of the fastest such programs. It beats normal "du" in all cases, and beats all other similar programs when Linux's caches are warm (so, not on the first run). I wrote "dut" as a challenge to beat similar programs that I used a lot, namely pdu[1] and dust[2]. "dut" displays a tree of the biggest things under your current directory, and it also shows the size of hard-links under each directory as well. The hard-link tallying was inspired by ncdu[3], but I don't like how unintuitive the readout is. Anyone have ideas for a better format? There's installation instructions in the README. dut is a single source file, so you only need to download it and copy-paste the compiler command, and then copy somewhere on your path like /usr/local/bin. I went through a few different approaches writing it, and you can see most of them in the git history. At the core of the program is a datastructure that holds the directories that still need to be traversed, and binary heaps to hold statted files and directories. I had started off using C++ std::queues with mutexes, but the performance was awful, so I took it as a learning opportunity and wrote all the datastructures from scratch. That was the hardest part of the program to get right. These are the other techniques I used to improve performance: * Using fstatat(2) with the parent directory's fd instead of lstat(2) with an absolute path. (10-15% performance increase) * Using statx(2) instead of fstatat. (perf showed fstatat running statx code in the kernel). (10% performance increase) * Using getdents(2) to get directory contents instead of opendir/readdir/closedir. (also around 10%) * Limiting inter-thread communication. I originally had fs-traversal results accumulated in a shared binary heap, but giving each thread a binary-heap and then merging them all at the end was faster. I couldn't find any information online about fstatat and statx being significantly faster than plain old stat, so maybe this info will help someone in the future. [1]: https://github.com/KSXGitHub/parallel-disk-usage [2]: https://github.com/bootandy/dust [3]: https://dev.yorhel.nl/doc/ncdu2, see "Shared Links"

More life & fun this month

the category →
  • TL

    Life & fun · 10d ago · louisabraham.github.io

  • Photosynthesis fires two of your iPhone

    Life & fun · 28d ago · photosynthesis.camera

  • SoloUno310

    Take control of hair pulling, nail biting & skin picking

    Life & fun · 28d ago · solouno.io

  • Scroll through all 43,252,003,274,489,856,000 reachable Rubik's Cube permutations.

    Life & fun · 26d ago · everycube.alen.is

  • The Interactive 3D Encyclopedia

    Life & fun · 21d ago · expeditione.fun

  • Hi HN, I built Eigendrum, a web tool that solves the 2D wave equation for arbitrary shapes so you can hear what they sound like as drums. How it works: * Solves -∇²u = λu using finite element analysis (Kφ = λMφ) on a triangle mesh. * Validated to <0.1% error against closed-form solutions for circles (Bessel zeros) and rectangles. * Sound model factors in strike location, Rayleigh damping, and mallet width. * Includes Kac drums I & II to demonstrate identical sound spectra from different geometries. * No frameworks, build steps, or dependencies. Repo and tests:…

    Life & fun · 26d ago · baselashraf81.github.io

Launched alongside, July 2024

the whole month →
  • Sugar detox app

    AI · 2024 · apps.apple.com

  • Mobbin 2.01,657

    Discover real-world design inspiration

    Work · 2024 · mobbin.com

  • folk 3.01,591

    The CRM for companies who care about people

    Dev tools · 2024 · folk.app

  • SuperGPT1,206

    Use ChatGPT on Google Sheets

    AI · 2024 · superjoin.ai

  • IC

    Many years ago, I made VJ softwares (to mix live visuals in clubs) for unexpected platforms like the Game Boy Advance, the Playstation 2 and the Raspberry Pi. This year, I’m back with a new web-app: Pikimov. Inspired by Photopea (a free Photoshop clone), I created this web-based motion design & video editor as an alternative to After Effects, to fill empty void. It's free, without signup, without cloud uploads (your files stay on your machine), and your projects are not used for AI models training.

    AI · 2024 · pikimov.com

  • Motiff1,150

    AI powered professional UI design tool

    AI · 2024 · motiff.com