Hot Files
- On Linux, Hot Files no longer takes nearly every inotify watch on the
machine. Watching$HOMErecursively 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 offs.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--diagshows 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, andls -Radded 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$HOMEor the root-only parts of/var/log, show as a note beside
the roots, not a redERROR:. 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
resetto 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
日本語のファイル名テスト.logas日 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/tapformula, 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.