github matthart1983/diskwatch v0.7.2

one hour ago

Hot Files

  • On Linux, Hot Files no longer takes nearly every inotify watch on the
    machine. Watching $HOME recursively took 523,541 of this host's 547,398
    and about 0.5 GB, which starves editors and sync tools of watches. It now
    takes at most a quarter of fs.inotify.max_user_watches, and no more than
    65,536 directories, shallowest first across all roots, keeping an eighth
    for directories made after startup. The tab says when a root isn't
    watched all the way down, and --diag shows the limit. The same default
    run now holds 57,344 watches and 38 MB.
  • Opens and reads no longer count as activity, including diskwatch's own.
    On Linux a quiet tree of 110 directories showed 110 events from
    diskwatch's own walk, and ls -R added 222 more. Both now show none. A
    write's last event is labelled "modify" instead of "other".
  • The PROCESS column names a process that holds the file open even when it's
    doing no IO, dimmed, as the docs describe. It was blank on every row,
    because processes doing no IO were left out of the lookup.
  • diskwatch no longer lists itself as the busiest process.
  • Directories it can't read inside a root, such as rootless podman storage
    under $HOME or the root-only parts of /var/log, show as a note beside
    the roots, not a red ERROR:. Nothing failed: they're skipped.
  • Only the files on screen have their history copied on each frame, not
    every file tracked. With 4,096 busy files, the most it tracks, that
    copying took up to 7.5% of a core.

Terminal

  • Stopping diskwatch with SIGTERM, SIGINT, SIGHUP or SIGQUIT, or a crash, no
    longer leaves your shell in raw mode on the alternate screen, which needed
    reset to fix. If diskwatch is stuck waiting on something, such as a slow
    smartctl, it puts the terminal back and exits a second after the signal.
  • Ctrl-C quits. It did nothing before, because raw mode delivers it as a key.
  • The full view no longer crashes in a small terminal. It crashed below 5
    rows, or narrower than its header's clock. Below 40×12 it now says the
    terminal is too small. Lite and Dense draw at any size.
  • Wide characters no longer break rows. Dense drew
    日本語のファイル名テスト.log as 日 log, and in the Hot tab a CJK
    or emoji filename pushed the columns after it right, clipping AGE and
    KIND. Padding and truncation now count terminal columns.
  • Without a terminal, diskwatch says it needs one and points at --diag,
    instead of failing with "No such device or address (os error 6)". It exits
    with status 2.

SMART and Insights

  • SMART polls no longer wake a sleeping hard disk. Every poll, five minutes
    apart by default, spun up an ATA or SCSI disk that had spun down. smartctl
    now runs with -n standby: a disk in standby is skipped, keeps its last
    reading, and the SMART tab says "standby". Not yet tried on a spinning
    disk; reports welcome.
  • Insights says "All systems nominal" only when SMART was read for every
    disk. Without root it wasn't, and the card said nominal next to a HEALTH
    tile reading "unknown". It now says no problems were found but SMART
    wasn't read, and why. Lite's capacity row says "capacity ok" instead of
    "all nominal", which is all that row checks.
  • "Dominating disk IO" counts physical disks only, and needs at least two.
    It named zram0, which is swap, and on a one-disk host it named the only
    disk.

Static Linux builds

  • The static builds no longer grow without limit while files change fast.
    Under 80,000 writes a second across 20,000 files, 0.7.1 reached 912 MB and
    was still growing a minute after the writes stopped. The same run now
    peaks between 37 and 61 MB and falls back to about 20 MB. They use
    mimalloc now; the glibc, macOS and Windows builds keep their system
    allocator.

Homebrew tap users

  • Releases no longer update the old matthart1983/tap formula, which stays
    at 0.7.1. diskwatch has been in Homebrew core since 0.5.x. If you
    installed from the tap, switch with
    brew uninstall matthart1983/tap/diskwatch && brew install diskwatch.

Docs

  • The README says how to run diskwatch under sudo without losing your install
    or your $HOME, and that on macOS and Windows a mount that stops answering
    can still stall it.

Don't miss a new diskwatch release

NewReleases is sending notifications on new releases.