cmd_fs_top: Add a column for counters since mount
Some checks failed
build / bcachefs-tools-msrv (push) Has been cancelled
.deb build orchestrator / source-only (push) Has been cancelled
.deb build orchestrator / obs (push) Has been cancelled
.deb build orchestrator / buildd (map[name:debian version:forky], map[build-arch:amd64 host-arch:amd64 machine-arch:amd64 runs-on:ubuntu-24.04]) (push) Has been cancelled
.deb build orchestrator / buildd (map[name:debian version:forky], map[build-arch:amd64 host-arch:ppc64el machine-arch:amd64 runs-on:ubuntu-24.04]) (push) Has been cancelled
.deb build orchestrator / buildd (map[name:debian version:forky], map[build-arch:arm64 host-arch:arm64 machine-arch:arm64 runs-on:ubuntu-24.04-arm]) (push) Has been cancelled
.deb build orchestrator / buildd (map[name:debian version:trixie], map[build-arch:amd64 host-arch:amd64 machine-arch:amd64 runs-on:ubuntu-24.04]) (push) Has been cancelled
.deb build orchestrator / buildd (map[name:debian version:trixie], map[build-arch:amd64 host-arch:ppc64el machine-arch:amd64 runs-on:ubuntu-24.04]) (push) Has been cancelled
.deb build orchestrator / buildd (map[name:debian version:trixie], map[build-arch:arm64 host-arch:arm64 machine-arch:arm64 runs-on:ubuntu-24.04-arm]) (push) Has been cancelled
.deb build orchestrator / buildd (map[name:debian version:unstable], map[build-arch:amd64 host-arch:amd64 machine-arch:amd64 runs-on:ubuntu-24.04]) (push) Has been cancelled
.deb build orchestrator / buildd (map[name:debian version:unstable], map[build-arch:amd64 host-arch:ppc64el machine-arch:amd64 runs-on:ubuntu-24.04]) (push) Has been cancelled
.deb build orchestrator / buildd (map[name:debian version:unstable], map[build-arch:arm64 host-arch:arm64 machine-arch:arm64 runs-on:ubuntu-24.04-arm]) (push) Has been cancelled
.deb build orchestrator / buildd (map[name:ubuntu version:plucky], map[build-arch:amd64 host-arch:amd64 machine-arch:amd64 runs-on:ubuntu-24.04]) (push) Has been cancelled
.deb build orchestrator / buildd (map[name:ubuntu version:plucky], map[build-arch:arm64 host-arch:arm64 machine-arch:arm64 runs-on:ubuntu-24.04-arm]) (push) Has been cancelled
.deb build orchestrator / buildd (map[name:ubuntu version:questing], map[build-arch:amd64 host-arch:amd64 machine-arch:amd64 runs-on:ubuntu-24.04]) (push) Has been cancelled
.deb build orchestrator / buildd (map[name:ubuntu version:questing], map[build-arch:arm64 host-arch:arm64 machine-arch:arm64 runs-on:ubuntu-24.04-arm]) (push) Has been cancelled
.deb build orchestrator / reprotest (push) Has been cancelled
.deb build orchestrator / publish (push) Has been cancelled
Nix Flake actions / nix-matrix (push) Has been cancelled
Nix Flake actions / ${{ matrix.name }} (${{ matrix.system }}) (push) Has been cancelled

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
Kent Overstreet 2025-10-17 16:49:34 -04:00
parent 36de1e40a2
commit 65f334e47a

View File

@ -16,12 +16,13 @@ static const u8 counters_to_stable_map[] = {
#undef x #undef x
}; };
static struct bch_ioctl_query_counters *read_counters(struct bchfs_handle fs) static struct bch_ioctl_query_counters *read_counters(struct bchfs_handle fs, unsigned flags)
{ {
struct bch_ioctl_query_counters *ret = struct bch_ioctl_query_counters *ret =
kzalloc(sizeof(*ret) + sizeof(ret->d[0]) * BCH_COUNTER_NR, GFP_KERNEL); kzalloc(sizeof(*ret) + sizeof(ret->d[0]) * BCH_COUNTER_NR, GFP_KERNEL);
ret->nr = BCH_COUNTER_NR; ret->nr = BCH_COUNTER_NR;
ret->flags = flags;
xioctl(fs.ioctl_fd, BCH_IOCTL_QUERY_COUNTERS, ret); xioctl(fs.ioctl_fd, BCH_IOCTL_QUERY_COUNTERS, ret);
return ret; return ret;
@ -31,19 +32,20 @@ static void fs_top(const char *path, bool human_readable)
{ {
struct bchfs_handle fs = bcache_fs_open(path); struct bchfs_handle fs = bcache_fs_open(path);
struct bch_ioctl_query_counters *start = read_counters(fs); struct bch_ioctl_query_counters *mount = read_counters(fs, BCH_IOCTL_QUERY_COUNTERS_MOUNT);
struct bch_ioctl_query_counters *curr = read_counters(fs); struct bch_ioctl_query_counters *start = read_counters(fs, 0);
struct bch_ioctl_query_counters *curr = read_counters(fs, 0);
struct bch_ioctl_query_counters *prev = NULL; struct bch_ioctl_query_counters *prev = NULL;
while (true) { while (true) {
sleep(1); sleep(1);
kfree(prev); kfree(prev);
prev = curr; prev = curr;
curr = read_counters(fs); curr = read_counters(fs, 0);
printf("\033[2J"); printf("\033[2J");
printf("\033[H"); printf("\033[H");
printf("%-40s %8s %12s\n", "", "2s", "total"); printf("%-40s %8s %12s %12s\n", "", "2s", "total", "mount");
for (unsigned i = 0; i < BCH_COUNTER_NR; i++) { for (unsigned i = 0; i < BCH_COUNTER_NR; i++) {
unsigned stable = counters_to_stable_map[i]; unsigned stable = counters_to_stable_map[i];
@ -56,12 +58,13 @@ static void fs_top(const char *path, bool human_readable)
? curr->d[stable] - start->d[stable] ? curr->d[stable] - start->d[stable]
: 0; : 0;
if (!v2) u64 v3 = curr->d[stable] - mount->d[stable];
if (!v3)
continue; continue;
printf("%-40s %8llu %12llu\n", printf("%-40s %8llu %12llu %12llu\n",
bch2_counter_names[i], bch2_counter_names[i],
v1, v2); v1, v2, v3);
} }
/* XXX: include btree cache size, key cache size, total ram size */ /* XXX: include btree cache size, key cache size, total ram size */